From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../BrotliCustomDecompressLib.inf | 73 + .../BrotliDecUefiSupport.c | 31 + .../BrotliDecUefiSupport.h | 43 + .../BrotliCustomDecompressLib/BrotliDecompress.c | 316 + .../BrotliDecompressLib.uni | 16 + .../BrotliDecompressLibInternal.h | 48 + .../GuidedSectionExtraction.c | 191 + .../BrotliCustomDecompressLib/brotli/.editorconfig | 40 + .../brotli/.gitattributes | 1 + .../BrotliCustomDecompressLib/brotli/.gitignore | 18 + .../BrotliCustomDecompressLib/brotli/.gitmodules | 6 + .../BrotliCustomDecompressLib/brotli/.travis.yml | 229 + .../Library/BrotliCustomDecompressLib/brotli/BUILD | 144 + .../brotli/CMakeLists.txt | 407 + .../brotli/CONTRIBUTING.md | 27 + .../BrotliCustomDecompressLib/brotli/LICENSE | 19 + .../BrotliCustomDecompressLib/brotli/MANIFEST.in | 17 + .../BrotliCustomDecompressLib/brotli/Makefile | 55 + .../BrotliCustomDecompressLib/brotli/Makefile.am | 38 + .../BrotliCustomDecompressLib/brotli/README | 15 + .../BrotliCustomDecompressLib/brotli/README.md | 98 + .../BrotliCustomDecompressLib/brotli/WORKSPACE | 21 + .../BrotliCustomDecompressLib/brotli/bootstrap | 31 + .../brotli/c/common/constants.h | 184 + .../brotli/c/common/context.h | 261 + .../brotli/c/common/dictionary.bin | 432 + .../brotli/c/common/dictionary.c | 5914 ++++++++++ .../brotli/c/common/dictionary.h | 64 + .../brotli/c/common/platform.h | 567 + .../brotli/c/common/transform.c | 291 + .../brotli/c/common/transform.h | 85 + .../brotli/c/common/version.h | 26 + .../brotli/c/dec/bit_reader.c | 65 + .../brotli/c/dec/bit_reader.h | 356 + .../brotli/c/dec/decode.c | 2605 +++++ .../brotli/c/dec/huffman.c | 339 + .../brotli/c/dec/huffman.h | 128 + .../brotli/c/dec/prefix.h | 750 ++ .../BrotliCustomDecompressLib/brotli/c/dec/state.c | 157 + .../BrotliCustomDecompressLib/brotli/c/dec/state.h | 365 + .../brotli/c/enc/backward_references.c | 145 + .../brotli/c/enc/backward_references.h | 39 + .../brotli/c/enc/backward_references_hq.c | 843 ++ .../brotli/c/enc/backward_references_hq.h | 95 + .../brotli/c/enc/backward_references_inc.h | 163 + .../brotli/c/enc/bit_cost.c | 35 + .../brotli/c/enc/bit_cost.h | 63 + .../brotli/c/enc/bit_cost_inc.h | 127 + .../brotli/c/enc/block_encoder_inc.h | 34 + .../brotli/c/enc/block_splitter.c | 194 + .../brotli/c/enc/block_splitter.h | 51 + .../brotli/c/enc/block_splitter_inc.h | 440 + .../brotli/c/enc/brotli_bit_stream.c | 1329 +++ .../brotli/c/enc/brotli_bit_stream.h | 84 + .../brotli/c/enc/cluster.c | 56 + .../brotli/c/enc/cluster.h | 48 + .../brotli/c/enc/cluster_inc.h | 320 + .../brotli/c/enc/command.h | 190 + .../brotli/c/enc/compress_fragment.c | 790 ++ .../brotli/c/enc/compress_fragment.h | 61 + .../brotli/c/enc/compress_fragment_two_pass.c | 645 ++ .../brotli/c/enc/compress_fragment_two_pass.h | 54 + .../brotli/c/enc/dictionary_hash.c | 1846 ++++ .../brotli/c/enc/dictionary_hash.h | 25 + .../brotli/c/enc/encode.c | 1925 ++++ .../brotli/c/enc/encoder_dict.c | 33 + .../brotli/c/enc/encoder_dict.h | 43 + .../brotli/c/enc/entropy_encode.c | 501 + .../brotli/c/enc/entropy_encode.h | 122 + .../brotli/c/enc/entropy_encode_static.h | 539 + .../brotli/c/enc/fast_log.h | 147 + .../brotli/c/enc/find_match_length.h | 80 + .../BrotliCustomDecompressLib/brotli/c/enc/hash.h | 488 + .../brotli/c/enc/hash_composite_inc.h | 125 + .../brotli/c/enc/hash_forgetful_chain_inc.h | 293 + .../brotli/c/enc/hash_longest_match64_inc.h | 267 + .../brotli/c/enc/hash_longest_match_inc.h | 262 + .../brotli/c/enc/hash_longest_match_quickly_inc.h | 266 + .../brotli/c/enc/hash_rolling_inc.h | 212 + .../brotli/c/enc/hash_to_binary_tree_inc.h | 329 + .../brotli/c/enc/histogram.c | 100 + .../brotli/c/enc/histogram.h | 63 + .../brotli/c/enc/histogram_inc.h | 51 + .../brotli/c/enc/literal_cost.c | 175 + .../brotli/c/enc/literal_cost.h | 30 + .../brotli/c/enc/memory.c | 170 + .../brotli/c/enc/memory.h | 114 + .../brotli/c/enc/metablock.c | 663 ++ .../brotli/c/enc/metablock.h | 105 + .../brotli/c/enc/metablock_inc.h | 183 + .../brotli/c/enc/params.h | 46 + .../brotli/c/enc/prefix.h | 53 + .../brotli/c/enc/quality.h | 165 + .../brotli/c/enc/ringbuffer.h | 167 + .../brotli/c/enc/static_dict.c | 486 + .../brotli/c/enc/static_dict.h | 40 + .../brotli/c/enc/static_dict_lut.h | 5864 ++++++++++ .../brotli/c/enc/utf8_util.c | 85 + .../brotli/c/enc/utf8_util.h | 32 + .../brotli/c/enc/write_bits.h | 87 + .../brotli/c/fuzz/decode_fuzzer.c | 58 + .../brotli/c/fuzz/run_decode_fuzzer.c | 44 + .../brotli/c/fuzz/test_fuzzer.sh | 33 + .../brotli/c/include/brotli/decode.h | 344 + .../brotli/c/include/brotli/encode.h | 448 + .../brotli/c/include/brotli/port.h | 288 + .../brotli/c/include/brotli/types.h | 83 + .../brotli/c/tools/brotli.c | 1107 ++ .../brotli/c/tools/brotli.md | 107 + .../brotli/compiler_config_setting.bzl | 28 + .../BrotliCustomDecompressLib/brotli/configure | 8 + .../brotli/configure-cmake | 318 + .../BrotliCustomDecompressLib/brotli/configure.ac | 14 + .../brotli/csharp/injected_code.txt | 32 + .../brotli/csharp/org/brotli/dec/BitReader.cs | 271 + .../brotli/csharp/org/brotli/dec/BitReaderTest.cs | 33 + .../csharp/org/brotli/dec/BrotliInputStream.cs | 223 + .../org/brotli/dec/BrotliRuntimeException.cs | 22 + .../brotli/csharp/org/brotli/dec/Context.cs | 57 + .../brotli/csharp/org/brotli/dec/Decode.cs | 992 ++ .../brotli/csharp/org/brotli/dec/DecodeTest.cs | 171 + .../brotli/csharp/org/brotli/dec/Dictionary.cs | 97 + .../brotli/csharp/org/brotli/dec/DictionaryTest.cs | 36 + .../brotli/csharp/org/brotli/dec/Huffman.cs | 149 + .../csharp/org/brotli/dec/HuffmanTreeGroup.cs | 50 + .../brotli/csharp/org/brotli/dec/IntReader.cs | 36 + .../brotli/csharp/org/brotli/dec/Prefix.cs | 33 + .../brotli/csharp/org/brotli/dec/RunningState.cs | 37 + .../brotli/csharp/org/brotli/dec/State.cs | 171 + .../brotli/csharp/org/brotli/dec/SynthTest.cs | 2174 ++++ .../brotli/csharp/org/brotli/dec/Transform.cs | 154 + .../brotli/csharp/org/brotli/dec/TransformTest.cs | 74 + .../brotli/csharp/org/brotli/dec/Utils.cs | 59 + .../csharp/org/brotli/dec/WordTransformType.cs | 68 + .../brotli/csharp/sharpen.cfg | 18 + .../brotli/csharp/transpile.sh | 94 + .../docs/brotli-comparison-study-2015-09-22.pdf | Bin 0 -> 215208 bytes .../BrotliCustomDecompressLib/brotli/docs/brotli.1 | 132 + .../brotli/docs/decode.h.3 | 415 + .../brotli/docs/encode.h.3 | 586 + .../brotli/docs/types.h.3 | 117 + .../brotli/fetch-spec/shared-brotli-fetch-spec.txt | 116 + .../BrotliCustomDecompressLib/brotli/go/BUILD | 2 + .../BrotliCustomDecompressLib/brotli/go/WORKSPACE | 21 + .../brotli/go/cbrotli/BUILD | 26 + .../brotli/go/cbrotli/cbrotli_test.go | 367 + .../brotli/go/cbrotli/cgo.go | 13 + .../brotli/go/cbrotli/reader.go | 161 + .../brotli/go/cbrotli/writer.go | 159 + .../BrotliCustomDecompressLib/brotli/java/BUILD | 98 + .../brotli/java/WORKSPACE | 41 + .../brotli/java/org/brotli/dec/BUILD | 59 + .../brotli/java/org/brotli/dec/BitReader.java | 289 + .../brotli/java/org/brotli/dec/BitReaderTest.java | 54 + .../java/org/brotli/dec/BrotliInputStream.java | 160 + .../org/brotli/dec/BrotliRuntimeException.java | 21 + .../brotli/java/org/brotli/dec/Context.java | 58 + .../brotli/java/org/brotli/dec/Decode.java | 1251 +++ .../brotli/java/org/brotli/dec/DecodeTest.java | 160 + .../brotli/java/org/brotli/dec/Dictionary.java | 54 + .../brotli/java/org/brotli/dec/DictionaryData.java | 51 + .../brotli/java/org/brotli/dec/DictionaryTest.java | 38 + .../java/org/brotli/dec/EagerStreamTest.java | 386 + .../brotli/java/org/brotli/dec/Huffman.java | 137 + .../java/org/brotli/dec/SetDictionaryTest.java | 76 + .../brotli/java/org/brotli/dec/State.java | 89 + .../brotli/java/org/brotli/dec/SynthTest.java | 2940 +++++ .../brotli/java/org/brotli/dec/Transform.java | 236 + .../brotli/java/org/brotli/dec/TransformTest.java | 71 + .../brotli/java/org/brotli/dec/Utils.java | 102 + .../brotli/java/org/brotli/dec/build_defs.bzl | 34 + .../brotli/java/org/brotli/dec/pom.xml | 172 + .../brotli/java/org/brotli/dec/proguard.pgcfg | 6 + .../brotli/java/org/brotli/integration/BUILD | 73 + .../org/brotli/integration/BrotliJniTestBase.java | 13 + .../java/org/brotli/integration/BundleChecker.java | 112 + .../java/org/brotli/integration/BundleHelper.java | 113 + .../java/org/brotli/integration/fuzz_data.zip | Bin 0 -> 23854 bytes .../brotli/java/org/brotli/integration/pom.xml | 65 + .../java/org/brotli/integration/test_corpus.zip | Bin 0 -> 3587214 bytes .../java/org/brotli/integration/test_data.zip | Bin 0 -> 2859607 bytes .../brotli/java/org/brotli/pom.xml | 101 + .../brotli/java/org/brotli/wrapper/common/BUILD | 61 + .../org/brotli/wrapper/common/BrotliCommon.java | 130 + .../java/org/brotli/wrapper/common/CommonJNI.java | 16 + .../wrapper/common/SetRfcDictionaryTest.java | 74 + .../wrapper/common/SetZeroDictionaryTest.java | 48 + .../java/org/brotli/wrapper/common/common_jni.cc | 47 + .../brotli/java/org/brotli/wrapper/dec/BUILD | 84 + .../brotli/wrapper/dec/BrotliDecoderChannel.java | 69 + .../wrapper/dec/BrotliDecoderChannelTest.java | 84 + .../org/brotli/wrapper/dec/BrotliInputStream.java | 115 + .../brotli/wrapper/dec/BrotliInputStreamTest.java | 82 + .../java/org/brotli/wrapper/dec/Decoder.java | 177 + .../java/org/brotli/wrapper/dec/DecoderJNI.java | 121 + .../java/org/brotli/wrapper/dec/DecoderTest.java | 77 + .../org/brotli/wrapper/dec/EagerStreamTest.java | 75 + .../java/org/brotli/wrapper/dec/decoder_jni.cc | 202 + .../brotli/java/org/brotli/wrapper/enc/BUILD | 88 + .../brotli/wrapper/enc/BrotliEncoderChannel.java | 77 + .../wrapper/enc/BrotliEncoderChannelTest.java | 118 + .../org/brotli/wrapper/enc/BrotliOutputStream.java | 87 + .../brotli/wrapper/enc/BrotliOutputStreamTest.java | 118 + .../org/brotli/wrapper/enc/EmptyInputTest.java | 29 + .../java/org/brotli/wrapper/enc/Encoder.java | 205 + .../java/org/brotli/wrapper/enc/EncoderJNI.java | 118 + .../java/org/brotli/wrapper/enc/EncoderTest.java | 80 + .../java/org/brotli/wrapper/enc/encoder_jni.cc | 195 + .../BrotliCustomDecompressLib/brotli/js/BUILD | 43 + .../BrotliCustomDecompressLib/brotli/js/WORKSPACE | 12 + .../BrotliCustomDecompressLib/brotli/js/decode.js | 2029 ++++ .../brotli/js/decode.min.js | 2 + .../brotli/js/decode_test.js | 79 + .../brotli/js/polyfill.js | 65 + .../BrotliCustomDecompressLib/brotli/premake5.lua | 78 + .../brotli/python/Makefile | 57 + .../brotli/python/README.md | 54 + .../brotli/python/_brotli.cc | 753 ++ .../BrotliCustomDecompressLib/brotli/python/bro.py | 160 + .../brotli/python/brotli.py | 56 + .../brotli/python/tests/__init__.py | 0 .../brotli/python/tests/_test_utils.py | 112 + .../brotli/python/tests/bro_test.py | 102 + .../brotli/python/tests/compress_test.py | 41 + .../brotli/python/tests/compressor_test.py | 94 + .../brotli/python/tests/decompress_test.py | 42 + .../brotli/python/tests/decompressor_test.py | 59 + .../brotli/research/BUILD | 44 + .../brotli/research/BUILD.libdivsufsort | 55 + .../brotli/research/Makefile | 17 + .../brotli/research/README.md | 67 + .../brotli/research/WORKSPACE | 12 + .../brotli/research/brotli_decoder.c | 93 + .../brotli/research/brotlidump.py | 2362 ++++ .../brotli/research/deorummolae.cc | 302 + .../brotli/research/deorummolae.h | 26 + .../brotli/research/dictionary_generator.cc | 326 + .../brotli/research/draw_diff.cc | 117 + .../brotli/research/draw_histogram.cc | 197 + .../brotli/research/durchschlag.cc | 726 ++ .../brotli/research/durchschlag.h | 99 + .../brotli/research/esaxx/COPYING | 24 + .../brotli/research/esaxx/README | 34 + .../brotli/research/esaxx/cmdline.h | 704 ++ .../brotli/research/esaxx/enumSubstring.cpp | 140 + .../brotli/research/esaxx/esa.hxx | 125 + .../brotli/research/esaxx/sais.hxx | 364 + .../brotli/research/esaxx/waf | Bin 0 -> 88387 bytes .../brotli/research/esaxx/wscript | 23 + .../brotli/research/find_opt_references.cc | 267 + .../brotli/research/img/enwik9_brotli.png | Bin 0 -> 1981984 bytes .../brotli/research/img/enwik9_diff.png | Bin 0 -> 5096698 bytes .../brotli/research/img/enwik9_opt.png | Bin 0 -> 2025431 bytes .../brotli/research/libdivsufsort/.gitignore | 32 + .../brotli/research/libdivsufsort/CHANGELOG.md | 21 + .../brotli/research/libdivsufsort/CMakeLists.txt | 99 + .../CMakeModules/AppendCompilerFlags.cmake | 38 + .../CMakeModules/CheckFunctionKeywords.cmake | 15 + .../libdivsufsort/CMakeModules/CheckLFS.cmake | 109 + .../libdivsufsort/CMakeModules/ProjectCPack.cmake | 38 + .../CMakeModules/cmake_uninstall.cmake.in | 36 + .../brotli/research/libdivsufsort/LICENSE | 21 + .../brotli/research/libdivsufsort/README.md | 140 + .../brotli/research/libdivsufsort/VERSION.cmake | 23 + .../research/libdivsufsort/examples/CMakeLists.txt | 11 + .../brotli/research/libdivsufsort/examples/bwt.c | 220 + .../research/libdivsufsort/examples/mksary.c | 193 + .../research/libdivsufsort/examples/sasearch.c | 165 + .../research/libdivsufsort/examples/suftest.c | 164 + .../brotli/research/libdivsufsort/examples/unbwt.c | 207 + .../research/libdivsufsort/include/CMakeLists.txt | 162 + .../research/libdivsufsort/include/config.h.cmake | 81 + .../libdivsufsort/include/divsufsort.h.cmake | 180 + .../libdivsufsort/include/divsufsort_private.h | 207 + .../research/libdivsufsort/include/lfs.h.cmake | 56 + .../research/libdivsufsort/lib/CMakeLists.txt | 31 + .../brotli/research/libdivsufsort/lib/divsufsort.c | 398 + .../brotli/research/libdivsufsort/lib/sssort.c | 815 ++ .../brotli/research/libdivsufsort/lib/trsort.c | 586 + .../brotli/research/libdivsufsort/lib/utils.c | 381 + .../libdivsufsort/pkgconfig/CMakeLists.txt | 9 + .../libdivsufsort/pkgconfig/libdivsufsort.pc.cmake | 11 + .../brotli/research/read_dist.h | 50 + .../brotli/research/sieve.cc | 259 + .../brotli/research/sieve.h | 21 + .../brotli/scripts/.bintray.json | 19 + .../brotli/scripts/.configure-custom.sh | 1 + .../brotli/scripts/.travis.sh | 81 + .../brotli/scripts/appveyor.yml | 111 + .../brotli/scripts/dictionary/README.md | 3 + .../scripts/dictionary/step-01-download-rfc.py | 16 + .../scripts/dictionary/step-02-rfc-to-bin.py | 34 + .../scripts/dictionary/step-03-validate-bin.py | 38 + .../dictionary/step-04-generate-java-literals.py | 79 + .../brotli/scripts/fix-win-bazel-build.py | 36 + .../brotli/scripts/libbrotlicommon.pc.in | 11 + .../brotli/scripts/libbrotlidec.pc.in | 12 + .../brotli/scripts/libbrotlienc.pc.in | 12 + .../brotli/scripts/sources.lst | 99 + .../BrotliCustomDecompressLib/brotli/setup.cfg | 5 + .../BrotliCustomDecompressLib/brotli/setup.py | 288 + .../brotli/tests/Makefile | 17 + .../brotli/tests/compatibility_test.sh | 25 + .../brotli/tests/roundtrip_test.sh | 34 + .../brotli/tests/run-compatibility-test.cmake | 31 + .../brotli/tests/run-roundtrip-test.cmake | 36 + .../brotli/tests/testdata/10x10y | 1 + .../brotli/tests/testdata/10x10y.compressed | Bin 0 -> 12 bytes .../brotli/tests/testdata/64x | 1 + .../brotli/tests/testdata/64x.compressed | Bin 0 -> 10 bytes .../brotli/tests/testdata/alice29.txt | 3609 +++++++ .../brotli/tests/testdata/alice29.txt.compressed | Bin 0 -> 50096 bytes .../brotli/tests/testdata/asyoulik.txt | 4122 +++++++ .../brotli/tests/testdata/asyoulik.txt.compressed | Bin 0 -> 45687 bytes .../brotli/tests/testdata/backward65536 | Bin 0 -> 65792 bytes .../brotli/tests/testdata/backward65536.compressed | Bin 0 -> 19 bytes .../brotli/tests/testdata/bb.binast | Bin 0 -> 12356697 bytes .../brotli/tests/testdata/compressed_file | Bin 0 -> 50096 bytes .../tests/testdata/compressed_file.compressed | Bin 0 -> 50100 bytes .../brotli/tests/testdata/compressed_repeated | Bin 0 -> 144224 bytes .../tests/testdata/compressed_repeated.compressed | Bin 0 -> 50299 bytes .../brotli/tests/testdata/empty | 0 .../brotli/tests/testdata/empty.compressed | 1 + .../brotli/tests/testdata/empty.compressed.00 | 1 + .../brotli/tests/testdata/empty.compressed.01 | 1 + .../brotli/tests/testdata/empty.compressed.02 | 1 + .../brotli/tests/testdata/empty.compressed.03 | 1 + .../brotli/tests/testdata/empty.compressed.04 | 1 + .../brotli/tests/testdata/empty.compressed.05 | 1 + .../brotli/tests/testdata/empty.compressed.06 | 1 + .../brotli/tests/testdata/empty.compressed.07 | 1 + .../brotli/tests/testdata/empty.compressed.08 | 1 + .../brotli/tests/testdata/empty.compressed.09 | 1 + .../brotli/tests/testdata/empty.compressed.10 | 1 + .../brotli/tests/testdata/empty.compressed.11 | 1 + .../brotli/tests/testdata/empty.compressed.12 | 1 + .../brotli/tests/testdata/empty.compressed.13 | 1 + .../brotli/tests/testdata/empty.compressed.14 | 1 + .../brotli/tests/testdata/empty.compressed.15 | 1 + .../brotli/tests/testdata/empty.compressed.16 | Bin 0 -> 4 bytes .../brotli/tests/testdata/empty.compressed.17 | 1 + .../brotli/tests/testdata/empty.compressed.18 | Bin 0 -> 196610 bytes .../brotli/tests/testdata/lcet10.txt | 7519 +++++++++++++ .../brotli/tests/testdata/lcet10.txt.compressed | Bin 0 -> 124719 bytes .../brotli/tests/testdata/mapsdatazrh | Bin 0 -> 285886 bytes .../brotli/tests/testdata/mapsdatazrh.compressed | Bin 0 -> 161743 bytes .../brotli/tests/testdata/monkey | 1 + .../brotli/tests/testdata/monkey.compressed | Bin 0 -> 425 bytes .../brotli/tests/testdata/plrabn12.txt | 10699 +++++++++++++++++++ .../brotli/tests/testdata/plrabn12.txt.compressed | Bin 0 -> 174771 bytes .../brotli/tests/testdata/quickfox | 1 + .../brotli/tests/testdata/quickfox.compressed | 1 + .../brotli/tests/testdata/quickfox_repeated | 1 + .../tests/testdata/quickfox_repeated.compressed | 2 + .../brotli/tests/testdata/random_chunks | Bin 0 -> 2704 bytes .../brotli/tests/testdata/random_org_10k.bin | Bin 0 -> 10000 bytes .../tests/testdata/random_org_10k.bin.compressed | Bin 0 -> 10004 bytes .../brotli/tests/testdata/ukkonooa | 1 + .../brotli/tests/testdata/ukkonooa.compressed | Bin 0 -> 69 bytes .../brotli/tests/testdata/x | 1 + .../brotli/tests/testdata/x.compressed | Bin 0 -> 5 bytes .../brotli/tests/testdata/x.compressed.00 | Bin 0 -> 5 bytes .../brotli/tests/testdata/x.compressed.01 | Bin 0 -> 8 bytes .../brotli/tests/testdata/x.compressed.02 | Bin 0 -> 5 bytes .../brotli/tests/testdata/x.compressed.03 | Bin 0 -> 10 bytes .../brotli/tests/testdata/xyzzy | 1 + .../brotli/tests/testdata/xyzzy.compressed | 1 + .../brotli/tests/testdata/zeros | Bin 0 -> 262144 bytes .../brotli/tests/testdata/zeros.compressed | Bin 0 -> 13 bytes .../Library/BrotliCustomDecompressLib/stddef.h | 9 + .../Library/BrotliCustomDecompressLib/stdint.h | 9 + .../Library/BrotliCustomDecompressLib/stdlib.h | 9 + .../Library/BrotliCustomDecompressLib/string.h | 9 + 373 files changed, 97888 insertions(+) create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/platform.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/transform.c create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/transform.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/version.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/bit_reader.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/bit_reader.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/decode.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/huffman.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/huffman.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/prefix.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/state.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/dec/state.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references_hq.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references_hq.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/backward_references_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/bit_cost.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/bit_cost.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/bit_cost_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_encoder_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_splitter.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_splitter.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/block_splitter_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/brotli_bit_stream.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/brotli_bit_stream.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/cluster.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/cluster.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/cluster_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/command.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment_two_pass.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/compress_fragment_two_pass.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/dictionary_hash.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/dictionary_hash.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/encode.c create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/encoder_dict.c create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/encoder_dict.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/entropy_encode.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/entropy_encode.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/entropy_encode_static.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/fast_log.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/find_match_length.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_composite_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_forgetful_chain_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_longest_match64_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_longest_match_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_longest_match_quickly_inc.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_rolling_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/hash_to_binary_tree_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/histogram.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/histogram.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/histogram_inc.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/literal_cost.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/literal_cost.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/memory.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/memory.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/metablock.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/metablock.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/metablock_inc.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/params.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/prefix.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/quality.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/ringbuffer.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/static_dict.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/static_dict.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/static_dict_lut.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/utf8_util.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/utf8_util.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/enc/write_bits.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/fuzz/decode_fuzzer.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/fuzz/run_decode_fuzzer.c create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/fuzz/test_fuzzer.sh create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/decode.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/encode.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/port.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/include/brotli/types.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/tools/brotli.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/tools/brotli.md create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/compiler_config_setting.bzl create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/configure create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/configure-cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/configure.ac create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/injected_code.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BitReader.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BitReaderTest.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BrotliInputStream.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/BrotliRuntimeException.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Context.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Decode.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/DecodeTest.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Dictionary.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/DictionaryTest.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Huffman.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/HuffmanTreeGroup.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/IntReader.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Prefix.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/RunningState.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/State.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/SynthTest.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Transform.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/TransformTest.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/Utils.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/org/brotli/dec/WordTransformType.cs create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/sharpen.cfg create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/csharp/transpile.sh create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/brotli-comparison-study-2015-09-22.pdf create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/brotli.1 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/decode.h.3 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/encode.h.3 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/docs/types.h.3 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/fetch-spec/shared-brotli-fetch-spec.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/WORKSPACE create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/cbrotli_test.go create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/cgo.go create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/reader.go create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/go/cbrotli/writer.go create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/WORKSPACE create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BitReader.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BitReaderTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BrotliInputStream.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/BrotliRuntimeException.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Context.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Decode.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/DecodeTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Dictionary.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/DictionaryData.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/DictionaryTest.java create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/EagerStreamTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Huffman.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/SetDictionaryTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/State.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/SynthTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Transform.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/TransformTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/Utils.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/build_defs.bzl create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/pom.xml create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/dec/proguard.pgcfg create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BrotliJniTestBase.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BundleChecker.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/BundleHelper.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/fuzz_data.zip create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/pom.xml create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/test_corpus.zip create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/integration/test_data.zip create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/pom.xml create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/BrotliCommon.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/CommonJNI.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/SetRfcDictionaryTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/SetZeroDictionaryTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/common/common_jni.cc create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliDecoderChannel.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliDecoderChannelTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliInputStream.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/BrotliInputStreamTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/Decoder.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/DecoderJNI.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/DecoderTest.java create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/EagerStreamTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/dec/decoder_jni.cc create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliEncoderChannel.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliEncoderChannelTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliOutputStream.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/BrotliOutputStreamTest.java create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/EmptyInputTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/Encoder.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/EncoderJNI.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/EncoderTest.java create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/java/org/brotli/wrapper/enc/encoder_jni.cc create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/WORKSPACE create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/decode.js create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/decode.min.js create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/decode_test.js create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/js/polyfill.js create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/premake5.lua create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/Makefile create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/README.md create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/_brotli.cc create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/bro.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/brotli.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/__init__.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/_test_utils.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/bro_test.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/compress_test.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/compressor_test.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/decompress_test.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/python/tests/decompressor_test.py create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/BUILD create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/BUILD.libdivsufsort create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/Makefile create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/README.md create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/WORKSPACE create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/brotli_decoder.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/brotlidump.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/deorummolae.cc create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/deorummolae.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/dictionary_generator.cc create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/draw_diff.cc create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/draw_histogram.cc create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/durchschlag.cc create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/durchschlag.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/COPYING create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/README create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/cmdline.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/enumSubstring.cpp create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/esa.hxx create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/sais.hxx create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/waf create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/esaxx/wscript create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/find_opt_references.cc create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/img/enwik9_brotli.png create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/img/enwik9_diff.png create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/img/enwik9_opt.png create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/.gitignore create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CHANGELOG.md create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeLists.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/AppendCompilerFlags.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/CheckFunctionKeywords.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/CheckLFS.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/ProjectCPack.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/CMakeModules/cmake_uninstall.cmake.in create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/LICENSE create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/README.md create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/VERSION.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/CMakeLists.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/bwt.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/mksary.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/sasearch.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/suftest.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/examples/unbwt.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/CMakeLists.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/config.h.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/divsufsort.h.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/divsufsort_private.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/include/lfs.h.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/CMakeLists.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/divsufsort.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/sssort.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/trsort.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/lib/utils.c create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/pkgconfig/CMakeLists.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/libdivsufsort/pkgconfig/libdivsufsort.pc.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/read_dist.h create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/sieve.cc create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/research/sieve.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/.bintray.json create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/.configure-custom.sh create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/.travis.sh create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/appveyor.yml create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/README.md create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-01-download-rfc.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-02-rfc-to-bin.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-03-validate-bin.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/dictionary/step-04-generate-java-literals.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/fix-win-bazel-build.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/libbrotlicommon.pc.in create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/libbrotlidec.pc.in create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/libbrotlienc.pc.in create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/scripts/sources.lst create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/setup.cfg create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/setup.py create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/Makefile create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/compatibility_test.sh create mode 100755 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/roundtrip_test.sh create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/run-compatibility-test.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/run-roundtrip-test.cmake create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/10x10y create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/10x10y.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/64x create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/64x.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/alice29.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/alice29.txt.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/asyoulik.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/asyoulik.txt.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/backward65536 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/backward65536.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/bb.binast create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_file create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_file.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_repeated create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/compressed_repeated.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.00 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.01 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.02 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.03 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.04 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.05 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.06 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.07 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.08 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.09 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.10 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.11 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.12 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.13 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.14 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.15 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.16 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.17 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/empty.compressed.18 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/lcet10.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/lcet10.txt.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/mapsdatazrh create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/mapsdatazrh.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/monkey create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/monkey.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/plrabn12.txt create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/plrabn12.txt.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox_repeated create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/quickfox_repeated.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/random_chunks create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/random_org_10k.bin create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/random_org_10k.bin.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/ukkonooa create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/ukkonooa.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.00 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.01 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.02 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/x.compressed.03 create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/xyzzy create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/xyzzy.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/zeros create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/tests/testdata/zeros.compressed create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/stddef.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/stdint.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/stdlib.h create mode 100644 roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/string.h (limited to 'roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib') diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf new file mode 100644 index 000000000..525e92408 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliCustomDecompressLib.inf @@ -0,0 +1,73 @@ +## @file +# BrotliCustomDecompressLib produces BROTLI custom decompression algorithm. +# +# It is based on the Brotli v0.5.2. +# Brotli was released on the website https://github.com/google/brotli. +# +# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = BrotliDecompressLib + MODULE_UNI_FILE = BrotliDecompressLib.uni + FILE_GUID = 69EC7DB2-B0DD-493A-963A-C5F330131BAA + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = NULL + CONSTRUCTOR = BrotliDecompressLibConstructor + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + GuidedSectionExtraction.c + BrotliDecUefiSupport.c + BrotliDecUefiSupport.h + BrotliDecompress.c + BrotliDecompressLibInternal.h + # Wrapper header files start # + stddef.h + stdint.h + stdlib.h + string.h + # Wrapper header files end # + brotli/c/common/dictionary.c + brotli/c/common/transform.c + brotli/c/dec/bit_reader.c + brotli/c/dec/decode.c + brotli/c/dec/huffman.c + brotli/c/dec/state.c + brotli/c/include/brotli/decode.h + brotli/c/include/brotli/port.h + brotli/c/include/brotli/types.h + brotli/c/common/constants.h + brotli/c/common/context.h + brotli/c/common/dictionary.h + brotli/c/common/platform.h + brotli/c/common/transform.h + brotli/c/common/version.h + brotli/c/dec/bit_reader.h + brotli/c/dec/huffman.h + brotli/c/dec/state.h + brotli/c/dec/prefix.h + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[Guids] + gBrotliCustomDecompressGuid ## PRODUCES ## UNDEFINED # specifies BROTLI custom decompress algorithm. + +[LibraryClasses] + BaseLib + DebugLib + BaseMemoryLib + ExtractGuidedSectionLib diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c new file mode 100644 index 000000000..102146535 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.c @@ -0,0 +1,31 @@ +/** @file + Implements for functions declared in BrotliDecUefiSupport.h + + Copyright (c) 2020, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include + +/** + Dummy malloc function for compiler. +**/ +VOID * +BrDummyMalloc ( + IN size_t Size + ) +{ + ASSERT (FALSE); + return NULL; +} + +/** + Dummy free function for compiler. +**/ +VOID +BrDummyFree ( + IN VOID * Ptr + ) +{ + ASSERT (FALSE); +} diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h new file mode 100644 index 000000000..9f8434767 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecUefiSupport.h @@ -0,0 +1,43 @@ +/** @file + BROTLI UEFI header file for definitions + + Allows BROTLI code to build under UEFI (edk2) build environment + + Copyright (c) 2020, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __BROTLI_DECOMPRESS_UEFI_SUP_H__ +#define __BROTLI_DECOMPRESS_UEFI_SUP_H__ + +#include +#include +#include +#define memcpy CopyMem +#define memmove CopyMem +#define memset(dest,ch,count) SetMem(dest,(UINTN)(count),(UINT8)(ch)) +#define malloc BrDummyMalloc +#define free BrDummyFree + +typedef INT8 int8_t; +typedef INT16 int16_t; +typedef INT32 int32_t; +typedef INT64 int64_t; +typedef UINT8 uint8_t; +typedef UINT16 uint16_t; +typedef UINT32 uint32_t; +typedef UINT64 uint64_t; +typedef UINTN size_t; + +VOID * +BrDummyMalloc ( + IN size_t Size + ); + +VOID +BrDummyFree ( + IN VOID * Ptr + ); + +#endif diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c new file mode 100644 index 000000000..512518699 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompress.c @@ -0,0 +1,316 @@ +/** @file + Brotli Decompress interfaces + + Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ +#include + +/** + Dummy malloc function for compiler. +**/ +VOID * +BrDummyMalloc ( + IN size_t Size + ) +{ + ASSERT (FALSE); + return NULL; +} + +/** + Dummy free function for compiler. +**/ +VOID +BrDummyFree ( + IN VOID * Ptr + ) +{ + ASSERT (FALSE); +} + +/** + Allocation routine used by BROTLI decompression. + + @param Ptr Pointer to the BROTLI_BUFF instance. + @param Size The size in bytes to be allocated. + + @return The allocated pointer address, or NULL on failure +**/ +VOID * +BrAlloc ( + IN VOID * Ptr, + IN size_t Size + ) +{ + VOID *Addr; + BROTLI_BUFF *Private; + + Private = (BROTLI_BUFF *)Ptr; + + if (Private->BuffSize >= Size) { + Addr = Private->Buff; + Private->Buff = (VOID *) ((UINT8 *)Addr + Size); + Private->BuffSize -= Size; + return Addr; + } else { + ASSERT (FALSE); + return NULL; + } +} + +/** + Free routine used by BROTLI decompression. + + @param Ptr Pointer to the BROTLI_BUFF instance + @param Address The address to be freed +**/ +VOID +BrFree ( + IN VOID * Ptr, + IN VOID * Address + ) +{ + // + // We use the 'scratch buffer' for allocations, so there is no free + // operation required. The scratch buffer will be freed by the caller + // of the decompression code. + // +} + +/** + Decompresses a Brotli compressed source buffer. + + Extracts decompressed data to its original form. + If the compressed source data specified by Source is successfully decompressed + into Destination, then EFI_SUCCESS is returned. If the compressed source data + specified by Source is not in a valid compressed data format, + then EFI_INVALID_PARAMETER is returned. + + @param Source The source buffer containing the compressed data. + @param SourceSize The size of source buffer. + @param Destination The destination buffer to store the decompressed data. + @param DestSize The destination buffer size. + @param BuffInfo The pointer to the BROTLI_BUFF instance. + + @retval EFI_SUCCESS Decompression completed successfully, and + the uncompressed buffer is returned in Destination. + @retval EFI_INVALID_PARAMETER + The source buffer specified by Source is corrupted + (not in a valid compressed format). +**/ +EFI_STATUS +BrotliDecompress ( + IN CONST VOID* Source, + IN UINTN SourceSize, + IN OUT VOID* Destination, + IN OUT UINTN DestSize, + IN VOID * BuffInfo + ) +{ + UINT8 * Input; + UINT8 * Output; + const UINT8 * NextIn; + UINT8 * NextOut; + size_t TotalOut; + size_t AvailableIn; + size_t AvailableOut; + VOID * Temp; + BrotliDecoderResult Result; + BrotliDecoderState * BroState; + + TotalOut = 0; + AvailableOut = FILE_BUFFER_SIZE; + Result = BROTLI_DECODER_RESULT_ERROR; + BroState = BrotliDecoderCreateInstance(BrAlloc, BrFree, BuffInfo); + Temp = Destination; + + if (BroState == NULL) { + return EFI_INVALID_PARAMETER; + } + Input = (UINT8 *)BrAlloc(BuffInfo, FILE_BUFFER_SIZE); + Output = (UINT8 *)BrAlloc(BuffInfo, FILE_BUFFER_SIZE); + if ((Input==NULL) || (Output==NULL)) { + BrFree(BuffInfo, Input); + BrFree(BuffInfo, Output); + BrotliDecoderDestroyInstance(BroState); + return EFI_INVALID_PARAMETER; + } + NextOut = Output; + Result = BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT; + while (1) { + if (Result == BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT) { + if (SourceSize == 0) { + break; + } + if (SourceSize >= FILE_BUFFER_SIZE) { + AvailableIn = FILE_BUFFER_SIZE; + }else{ + AvailableIn = SourceSize; + } + CopyMem(Input, Source, AvailableIn); + Source = (VOID *)((UINT8 *)Source + AvailableIn); + SourceSize -= AvailableIn; + NextIn = Input; + } else if (Result == BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT) { + CopyMem(Temp, Output, FILE_BUFFER_SIZE); + AvailableOut = FILE_BUFFER_SIZE; + Temp = (VOID *)((UINT8 *)Temp +FILE_BUFFER_SIZE); + NextOut = Output; + } else { + break; /* Error or success. */ + } + Result = BrotliDecoderDecompressStream( + BroState, + &AvailableIn, + &NextIn, + &AvailableOut, + &NextOut, + &TotalOut + ); + } + if (NextOut != Output) { + CopyMem(Temp, Output, (size_t)(NextOut - Output)); + } + + DestSize = TotalOut; + + BrFree(BuffInfo, Input); + BrFree(BuffInfo, Output); + BrotliDecoderDestroyInstance(BroState); + return (Result == BROTLI_DECODER_RESULT_SUCCESS) ? EFI_SUCCESS : EFI_INVALID_PARAMETER; +} + +/** + Get the size of the uncompressed buffer by parsing EncodeData header. + + @param EncodedData Pointer to the compressed data. + @param StartOffset Start offset of the compressed data. + @param EndOffset End offset of the compressed data. + + @return The size of the uncompressed buffer. +**/ +UINT64 +BrGetDecodedSizeOfBuf( + IN UINT8 * EncodedData, + IN UINT8 StartOffset, + IN UINT8 EndOffset + ) +{ + UINT64 DecodedSize; + INTN Index; + + /* Parse header */ + DecodedSize = 0; + for (Index = EndOffset - 1; Index >= StartOffset; Index--) + DecodedSize = LShiftU64(DecodedSize, 8) + EncodedData[Index]; + + return DecodedSize; +} + +/** + Given a Brotli compressed source buffer, this function retrieves the size of + the uncompressed buffer and the size of the scratch buffer required + to decompress the compressed source buffer. + + Retrieves the size of the uncompressed buffer and the temporary scratch buffer + required to decompress the buffer specified by Source and SourceSize. + The size of the uncompressed buffer is returned in DestinationSize, + the size of the scratch buffer is returned in ScratchSize, and EFI_SUCCESS is returned. + This function does not have scratch buffer available to perform a thorough + checking of the validity of the source data. It just retrieves the "Original Size" + field from the BROTLI_SCRATCH_MAX beginning bytes of the source data and output it as DestinationSize. + And ScratchSize is specific to the decompression implementation. + + If SourceSize is less than BROTLI_SCRATCH_MAX, then ASSERT(). + + @param Source The source buffer containing the compressed data. + @param SourceSize The size, in bytes, of the source buffer. + @param DestinationSize A pointer to the size, in bytes, of the uncompressed buffer + that will be generated when the compressed buffer specified + by Source and SourceSize is decompressed. + @param ScratchSize A pointer to the size, in bytes, of the scratch buffer that + is required to decompress the compressed buffer specified + by Source and SourceSize. + + @retval EFI_SUCCESS The size of the uncompressed data was returned + in DestinationSize and the size of the scratch + buffer was returned in ScratchSize. +**/ +EFI_STATUS +EFIAPI +BrotliUefiDecompressGetInfo ( + IN CONST VOID * Source, + IN UINT32 SourceSize, + OUT UINT32 * DestinationSize, + OUT UINT32 * ScratchSize + ) +{ + UINT64 GetSize; + UINT8 MaxOffset; + + ASSERT(SourceSize >= BROTLI_SCRATCH_MAX); + + MaxOffset = BROTLI_DECODE_MAX; + GetSize = BrGetDecodedSizeOfBuf((UINT8 *)Source, MaxOffset - BROTLI_INFO_SIZE, MaxOffset); + *DestinationSize = (UINT32)GetSize; + MaxOffset = BROTLI_SCRATCH_MAX; + GetSize = BrGetDecodedSizeOfBuf((UINT8 *)Source, MaxOffset - BROTLI_INFO_SIZE, MaxOffset); + *ScratchSize = (UINT32)GetSize; + return EFI_SUCCESS; +} + +/** + Decompresses a Brotli compressed source buffer. + + Extracts decompressed data to its original form. + If the compressed source data specified by Source is successfully decompressed + into Destination, then RETURN_SUCCESS is returned. If the compressed source data + specified by Source is not in a valid compressed data format, + then RETURN_INVALID_PARAMETER is returned. + + @param Source The source buffer containing the compressed data. + @param SourceSize The size of source buffer. + @param Destination The destination buffer to store the decompressed data + @param Scratch A temporary scratch buffer that is used to perform the decompression. + This is an optional parameter that may be NULL if the + required scratch buffer size is 0. + + @retval EFI_SUCCESS Decompression completed successfully, and + the uncompressed buffer is returned in Destination. + @retval EFI_INVALID_PARAMETER + The source buffer specified by Source is corrupted + (not in a valid compressed format). +**/ +EFI_STATUS +EFIAPI +BrotliUefiDecompress ( + IN CONST VOID * Source, + IN UINTN SourceSize, + IN OUT VOID * Destination, + IN OUT VOID * Scratch + ) +{ + UINTN DestSize = 0; + EFI_STATUS Status; + BROTLI_BUFF BroBuff; + UINT64 GetSize; + UINT8 MaxOffset; + + MaxOffset = BROTLI_SCRATCH_MAX; + GetSize = BrGetDecodedSizeOfBuf((UINT8 *)Source, MaxOffset - BROTLI_INFO_SIZE, MaxOffset); + + BroBuff.Buff = Scratch; + BroBuff.BuffSize = (UINTN)GetSize; + + Status = BrotliDecompress( + (VOID *)((UINT8 *)Source + BROTLI_SCRATCH_MAX), + SourceSize - BROTLI_SCRATCH_MAX, + Destination, + DestSize, + (VOID *)(&BroBuff) + ); + + return Status; +} diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni new file mode 100644 index 000000000..22f9d9add --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLib.uni @@ -0,0 +1,16 @@ +// /** @file +// BrotliCustomDecompressLib produces BROTLI custom decompression algorithm. +// +// It is based on the Brotli v0.5.2. +// Brotli was released on the website https://github.com/google/brotli. +// +// Copyright (c) 2017, Intel Corporation. All rights reserved.
+// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "BrotliCustomDecompressLib produces BROTLI custom decompression algorithm" + +#string STR_MODULE_DESCRIPTION #language en-US "It is based on the Brotli v0.5.2. Brotli was released on the website https://github.com/google/brotli." diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h new file mode 100644 index 000000000..8f91829a0 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/BrotliDecompressLibInternal.h @@ -0,0 +1,48 @@ +/** @file + BROTLI UEFI header file + + Allows BROTLI code to build under UEFI (edk2) build environment + + Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef __BROTLI_DECOMPRESS_INTERNAL_H__ +#define __BROTLI_DECOMPRESS_INTERNAL_H__ + +#include +#include +#include +#include + +typedef struct +{ + VOID *Buff; + UINTN BuffSize; +} BROTLI_BUFF; + +#define FILE_BUFFER_SIZE 65536 +#define BROTLI_INFO_SIZE 8 +#define BROTLI_DECODE_MAX 8 +#define BROTLI_SCRATCH_MAX 16 + +EFI_STATUS +EFIAPI +BrotliUefiDecompressGetInfo ( + IN CONST VOID *Source, + IN UINT32 SourceSize, + OUT UINT32 *DestinationSize, + OUT UINT32 *ScratchSize + ); + +EFI_STATUS +EFIAPI +BrotliUefiDecompress ( + IN CONST VOID *Source, + IN UINTN SourceSize, + IN OUT VOID *Destination, + IN OUT VOID *Scratch + ); + +#endif diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c new file mode 100644 index 000000000..bb7665f82 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/GuidedSectionExtraction.c @@ -0,0 +1,191 @@ +/** @file + BROTLI Decompress GUIDed Section Extraction Library. + It wraps Brotli decompress interfaces to GUIDed Section Extraction interfaces + and registers them into GUIDed handler table. + + Copyright (c) 2017, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +/** + Examines a GUIDed section and returns the size of the decoded buffer and the + size of an scratch buffer required to actually decode the data in a GUIDed section. + + Examines a GUIDed section specified by InputSection. + If GUID for InputSection does not match the GUID that this handler supports, + then RETURN_UNSUPPORTED is returned. + If the required information can not be retrieved from InputSection, + then RETURN_INVALID_PARAMETER is returned. + If the GUID of InputSection does match the GUID that this handler supports, + then the size required to hold the decoded buffer is returned in OututBufferSize, + the size of an optional scratch buffer is returned in ScratchSize, and the Attributes field + from EFI_GUID_DEFINED_SECTION header of InputSection is returned in SectionAttribute. + + If InputSection is NULL, then ASSERT(). + If OutputBufferSize is NULL, then ASSERT(). + If ScratchBufferSize is NULL, then ASSERT(). + If SectionAttribute is NULL, then ASSERT(). + + + @param[in] InputSection A pointer to a GUIDed section of an FFS formatted file. + @param[out] OutputBufferSize A pointer to the size, in bytes, of an output buffer required + if the buffer specified by InputSection were decoded. + @param[out] ScratchBufferSize A pointer to the size, in bytes, required as scratch space + if the buffer specified by InputSection were decoded. + @param[out] SectionAttribute A pointer to the attributes of the GUIDed section. See the Attributes + field of EFI_GUID_DEFINED_SECTION in the PI Specification. + + @retval RETURN_SUCCESS The information about InputSection was returned. + @retval RETURN_UNSUPPORTED The section specified by InputSection does not match the GUID this handler supports. + @retval RETURN_INVALID_PARAMETER The information can not be retrieved from the section specified by InputSection. + +**/ +RETURN_STATUS +EFIAPI +BrotliGuidedSectionGetInfo ( + IN CONST VOID *InputSection, + OUT UINT32 *OutputBufferSize, + OUT UINT32 *ScratchBufferSize, + OUT UINT16 *SectionAttribute + ) +{ + ASSERT (InputSection != NULL); + ASSERT (OutputBufferSize != NULL); + ASSERT (ScratchBufferSize != NULL); + ASSERT (SectionAttribute != NULL); + + if (IS_SECTION2 (InputSection)) { + if (!CompareGuid ( + &gBrotliCustomDecompressGuid, + &(((EFI_GUID_DEFINED_SECTION2 *) InputSection)->SectionDefinitionGuid))) { + return RETURN_INVALID_PARAMETER; + } + + *SectionAttribute = ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->Attributes; + + return BrotliUefiDecompressGetInfo ( + (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset, + SECTION2_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset, + OutputBufferSize, + ScratchBufferSize + ); + } else { + if (!CompareGuid ( + &gBrotliCustomDecompressGuid, + &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) { + return RETURN_INVALID_PARAMETER; + } + + *SectionAttribute = ((EFI_GUID_DEFINED_SECTION *) InputSection)->Attributes; + + return BrotliUefiDecompressGetInfo ( + (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset, + SECTION_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset, + OutputBufferSize, + ScratchBufferSize + ); + } +} + +/** + Decompress a BROTLI compressed GUIDed section into a caller allocated output buffer. + + Decodes the GUIDed section specified by InputSection. + If GUID for InputSection does not match the GUID that this handler supports, then RETURN_UNSUPPORTED is returned. + If the data in InputSection can not be decoded, then RETURN_INVALID_PARAMETER is returned. + If the GUID of InputSection does match the GUID that this handler supports, then InputSection + is decoded into the buffer specified by OutputBuffer and the authentication status of this + decode operation is returned in AuthenticationStatus. If the decoded buffer is identical to the + data in InputSection, then OutputBuffer is set to point at the data in InputSection. Otherwise, + the decoded data will be placed in caller allocated buffer specified by OutputBuffer. + + If InputSection is NULL, then ASSERT(). + If OutputBuffer is NULL, then ASSERT(). + If ScratchBuffer is NULL and this decode operation requires a scratch buffer, then ASSERT(). + If AuthenticationStatus is NULL, then ASSERT(). + + @param[in] InputSection A pointer to a GUIDed section of an FFS formatted file. + @param[out] OutputBuffer A pointer to a buffer that contains the result of a decode operation. + @param[out] ScratchBuffer A caller allocated buffer that may be required by this function + as a scratch buffer to perform the decode operation. + @param[out] AuthenticationStatus + A pointer to the authentication status of the decoded output buffer. + See the definition of authentication status in the EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI + section of the PI Specification. EFI_AUTH_STATUS_PLATFORM_OVERRIDE must + never be set by this handler. + + @retval RETURN_SUCCESS The buffer specified by InputSection was decoded. + @retval RETURN_UNSUPPORTED The section specified by InputSection does not match the GUID this handler supports. + @retval RETURN_INVALID_PARAMETER The section specified by InputSection can not be decoded. + +**/ +RETURN_STATUS +EFIAPI +BrotliGuidedSectionExtraction ( + IN CONST VOID *InputSection, + OUT VOID **OutputBuffer, + OUT VOID *ScratchBuffer, OPTIONAL + OUT UINT32 *AuthenticationStatus + ) +{ + ASSERT (OutputBuffer != NULL); + ASSERT (InputSection != NULL); + + if (IS_SECTION2 (InputSection)) { + if (!CompareGuid ( + &gBrotliCustomDecompressGuid, + &(((EFI_GUID_DEFINED_SECTION2 *) InputSection)->SectionDefinitionGuid))) { + return RETURN_INVALID_PARAMETER; + } + // + // Authentication is set to Zero, which may be ignored. + // + *AuthenticationStatus = 0; + + return BrotliUefiDecompress ( + (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset, + SECTION2_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION2 *) InputSection)->DataOffset, + *OutputBuffer, + ScratchBuffer + ); + } else { + if (!CompareGuid ( + &gBrotliCustomDecompressGuid, + &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) { + return RETURN_INVALID_PARAMETER; + } + // + // Authentication is set to Zero, which may be ignored. + // + *AuthenticationStatus = 0; + + return BrotliUefiDecompress ( + (UINT8 *) InputSection + ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset, + SECTION_SIZE (InputSection) - ((EFI_GUID_DEFINED_SECTION *) InputSection)->DataOffset, + *OutputBuffer, + ScratchBuffer + ); + } +} + +/** + Register BrotliDecompress and BrotliDecompressGetInfo handlers with BrotliCustomerDecompressGuid. + + @retval EFI_SUCCESS Register successfully. + @retval EFI_OUT_OF_RESOURCES No enough memory to store this handler. +**/ +EFI_STATUS +EFIAPI +BrotliDecompressLibConstructor ( + VOID + ) +{ + return ExtractGuidedSectionRegisterHandlers ( + &gBrotliCustomDecompressGuid, + BrotliGuidedSectionGetInfo, + BrotliGuidedSectionExtraction + ); +} diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig new file mode 100644 index 000000000..17ed3c197 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.editorconfig @@ -0,0 +1,40 @@ +# http://editorconfig.org +# Consistent coding style across different editors. + +# Top-most file +root = true + +# Global styles: +# - indent 2 spaces +# - add final new line +# - trim trailing whitespace +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +# BUILD: +# - indent 4 spaces +[BUILD] +indent_size = 4 + +# Makefile: +# - indent 1 tab +[Makefile] +indent_size = tab +indent_style = tab + +# Markdown: +# - indent 4 spaces +# - trailing whitespace is significant +[*.md] +indent_size = 4 +trim_trailing_whitespace = false + +# Python +# - indent 4 spaces +[*.py] +indent_size = 4 diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes new file mode 100644 index 000000000..a1665dacc --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitattributes @@ -0,0 +1 @@ +tests/testdata/* binary diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore new file mode 100644 index 000000000..e3a69e62c --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitignore @@ -0,0 +1,18 @@ +# C +*.o +bin/ +buildfiles/ +**/obj/ +dist/ +**/bazel-* + +# Python +__pycache__/ +*.py[cod] +*.so +*.egg-info/ + +# Tests +*.txt.uncompressed +*.br +*.unbr diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules new file mode 100644 index 000000000..3ec8760a5 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.gitmodules @@ -0,0 +1,6 @@ +[submodule "research/esaxx"] + path = research/esaxx + url = https://github.com/hillbig/esaxx +[submodule "research/libdivsufsort"] + path = research/libdivsufsort + url = https://github.com/y-256/libdivsufsort.git diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml new file mode 100644 index 000000000..930bd6346 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/.travis.yml @@ -0,0 +1,229 @@ +language: c +sudo: false +branches: + only: + - master +matrix: + include: + ### + ## Linux builds using various versions of GCC. + ### + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=gcc-7 CXX_COMPILER=g++-7 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + - g++-7 + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.4 CXX_COMPILER=g++-4.4 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.4 + - g++-4.4 + + ### + ## Test that Autotools build works. + ### + - os: linux + env: BUILD_SYSTEM=autotools C_COMPILER=gcc-5 CXX_COMPILER=g++-5 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + - g++-5 + + ### + ## Test that fuzzer is compiling / working. + ### + - os: linux + env: BUILD_SYSTEM=fuzz C_COMPILER=clang-7 CXX_COMPILER=clang++-7 ASAN_OPTIONS=detect_leaks=0 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-xenial-7 + packages: + - clang-7 + + ### + ## clang on Linux + ### + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 + addons: + apt: + sources: + - llvm-toolchain-xenial-7 + - ubuntu-toolchain-r-test + packages: + - clang-7 + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=clang-3.5 CXX_COMPILER=clang++-3.5 + addons: + apt: + sources: + - llvm-toolchain-trusty-3.5 + - ubuntu-toolchain-r-test + packages: + - clang-3.5 + + ### + ## testing arm via qemu on Linux + ### + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=arm-linux-gnueabihf-gcc CXX_COMPILER=arm-linux-gnueabihf-g++ CFLAGS="-march=armv7-a -mfloat-abi=hard -mfpu=neon" + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - qemu + - gcc-arm-linux-gnueabihf + - libc6-dev-armhf-cross + + ### + ## PGI Community Edition on Linux + ### + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=pgcc CXX_COMPILER=pgc++ + + ### + ## Python 2.7 and 3.6 builds on Linux + ### + - os: linux + language: python + python: 2.7 + env: BUILD_SYSTEM=python C_COMPILER=gcc-5 CXX_COMPILER=g++-5 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + - g++-5 + - os: linux + language: python + python: 3.6 + env: BUILD_SYSTEM=python C_COMPILER=gcc-5 CXX_COMPILER=g++-5 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + - g++-5 + + ### + ## CMake on OS X + ## + ## These all work, but it seems unnecessary to actually build them + ## all since we already test all these versions of GCC on Linux. + ## We'll just test 4.4 and the most recent version. + ### + - os: osx + env: BUILD_SYSTEM=cmake C_COMPILER=gcc CXX_COMPILER=g++ + - os: osx + env: BUILD_SYSTEM=cmake C_COMPILER=gcc-4.9 CXX_COMPILER=g++-4.9 + - os: osx + env: BUILD_SYSTEM=cmake + + ### + ## Python 2.7 OS X build (using the system /usr/bin/python) + ### + - os: osx + env: BUILD_SYSTEM=python C_COMPILER=gcc CXX_COMPILER=g++ + + ### + ## Sanitizers + ### + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=address ASAN_OPTIONS=detect_leaks=0 + addons: + apt: + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-xenial-7 + packages: + - clang-7 + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=thread + addons: + apt: + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-xenial-7 + packages: + - clang-7 + - os: linux + env: BUILD_SYSTEM=cmake C_COMPILER=clang-7 CXX_COMPILER=clang++-7 SANITIZER=undefined CFLAGS="-fno-sanitize-recover=undefined,integer" + addons: + apt: + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-xenial-7 + packages: + - clang-7 + + - os: linux + env: BUILD_SYSTEM=maven + jdk: + # maven + jdk11 + javadoc == trouble + - openjdk10 + language: java + + - os: linux + sudo: required + language: java + jdk: oraclejdk9 + env: BUILD_SYSTEM=bazel + addons: + apt: + sources: + - sourceline: "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" + key_url: "https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg" + - ubuntu-toolchain-r-test + packages: + - bazel + + - os: osx + env: BUILD_SYSTEM=bazel + # Latest image with Java 1.8 (required to install Bazel). + osx_image: xcode9.3 + language: java + +before_install: +### +## If we use the matrix to set CC/CXX Travis, overwrites the values, +## so instead we use C/CXX_COMPILER, then copy the values to CC/CXX +## here (after Travis has set CC/CXX). +### +- if [ -n "${C_COMPILER}" ]; then export CC="${C_COMPILER}"; fi +- if [ -n "${CXX_COMPILER}" ]; then export CXX="${CXX_COMPILER}"; fi +- scripts/.travis.sh before_install +install: +- scripts/.travis.sh install +script: +- scripts/.travis.sh script +after_success: +- scripts/.travis.sh after_success + +before_deploy: +- scripts/.travis.sh before_deploy + +deploy: +- provider: bintray + file: "scripts/.bintray.json" + user: "eustas" + key: + secure: "Kbam/lTAdz72fZivbs6riJT+Y4PbuKP7r6t5PAWxJxAAykjwnYTRe3zF472g9HCE14KYMsdB+KSYSgg6TGJnqGC9gL9xhhGU9U/WmA+vbMWS/MSnMWpK9IRpp77pM2i2NKZD4v33JuEwKFCBJP3Vj6QQ5Qd1NKdobuXJyznhgnw=" + on: + condition: "${BUILD_SYSTEM} = bazel" + skip_cleanup: true diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD new file mode 100644 index 000000000..4c9b57ac9 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/BUILD @@ -0,0 +1,144 @@ +# Description: +# Brotli is a generic-purpose lossless compression algorithm. + +package( + default_visibility = ["//visibility:public"], +) + +licenses(["notice"]) # MIT + +exports_files(["LICENSE"]) + +config_setting( + name = "darwin", + values = {"cpu": "darwin"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "darwin_x86_64", + values = {"cpu": "darwin_x86_64"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "windows", + values = {"cpu": "x64_windows"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "windows_msvc", + values = {"cpu": "x64_windows_msvc"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "windows_msys", + values = {"cpu": "x64_windows_msys"}, + visibility = ["//visibility:public"], +) + +load(":compiler_config_setting.bzl", "create_msvc_config") + +create_msvc_config() + +STRICT_C_OPTIONS = select({ + ":msvc": [], + "//conditions:default": [ + "--pedantic-errors", + "-Wall", + "-Wconversion", + "-Werror", + "-Wextra", + "-Wlong-long", + "-Wmissing-declarations", + "-Wmissing-prototypes", + "-Wno-strict-aliasing", + "-Wshadow", + "-Wsign-compare", + ], +}) + +filegroup( + name = "public_headers", + srcs = glob(["c/include/brotli/*.h"]), +) + +filegroup( + name = "common_headers", + srcs = glob(["c/common/*.h"]), +) + +filegroup( + name = "common_sources", + srcs = glob(["c/common/*.c"]), +) + +filegroup( + name = "dec_headers", + srcs = glob(["c/dec/*.h"]), +) + +filegroup( + name = "dec_sources", + srcs = glob(["c/dec/*.c"]), +) + +filegroup( + name = "enc_headers", + srcs = glob(["c/enc/*.h"]), +) + +filegroup( + name = "enc_sources", + srcs = glob(["c/enc/*.c"]), +) + +cc_library( + name = "brotli_inc", + hdrs = [":public_headers"], + copts = STRICT_C_OPTIONS, + strip_include_prefix = "c/include", +) + +cc_library( + name = "brotlicommon", + srcs = [":common_sources"], + hdrs = [":common_headers"], + copts = STRICT_C_OPTIONS, + deps = [":brotli_inc"], +) + +cc_library( + name = "brotlidec", + srcs = [":dec_sources"], + hdrs = [":dec_headers"], + copts = STRICT_C_OPTIONS, + deps = [":brotlicommon"], +) + +cc_library( + name = "brotlienc", + srcs = [":enc_sources"], + hdrs = [":enc_headers"], + copts = STRICT_C_OPTIONS, + linkopts = ["-lm"], + deps = [":brotlicommon"], +) + +cc_binary( + name = "brotli", + srcs = ["c/tools/brotli.c"], + copts = STRICT_C_OPTIONS, + linkstatic = 1, + deps = [ + ":brotlidec", + ":brotlienc", + ], +) + +filegroup( + name = "dictionary", + srcs = ["c/common/dictionary.bin"], +) diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt new file mode 100644 index 000000000..a8ea87231 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CMakeLists.txt @@ -0,0 +1,407 @@ +# Ubuntu 12.04 LTS has CMake 2.8.7, and is an important target since +# several CI services, such as Travis and Drone, use it. Solaris 11 +# has 2.8.6, and it's not difficult to support if you already have to +# support 2.8.7. +cmake_minimum_required(VERSION 2.8.6) + +project(brotli C) + +include(CheckCSourceCompiles) +check_c_source_compiles( + "#if defined(__EMSCRIPTEN__) + int main() {return 0;} + #endif" + BROTLI_EMSCRIPTEN +) +if (BROTLI_EMSCRIPTEN) + message("-- Compiler is EMSCRIPTEN") +else() + message("-- Compiler is not EMSCRIPTEN") +endif() + +# If Brotli is being bundled in another project, we don't want to +# install anything. However, we want to let people override this, so +# we'll use the BROTLI_BUNDLED_MODE variable to let them do that; just +# set it to OFF in your project before you add_subdirectory(brotli). +get_directory_property(BROTLI_PARENT_DIRECTORY PARENT_DIRECTORY) +if(NOT DEFINED BROTLI_BUNDLED_MODE) + # Bundled mode hasn't been set one way or the other, set the default + # depending on whether or not we are the top-level project. + if(BROTLI_PARENT_DIRECTORY) + set(BROTLI_BUNDLED_MODE ON) + else() + set(BROTLI_BUNDLED_MODE OFF) + endif() +endif() +mark_as_advanced(BROTLI_BUNDLED_MODE) + +include(GNUInstallDirs) + +# Parse version information from common/version.h. Normally we would +# define these values here and write them out to configuration file(s) +# (i.e., config.h), but in this case we parse them from +# common/version.h to be less intrusive. +function(hex_to_dec HEXADECIMAL DECIMAL) + string(TOUPPER "${HEXADECIMAL}" _tail) + set(_decimal 0) + string(LENGTH "${_tail}" _tail_length) + while (_tail_length GREATER 0) + math(EXPR _decimal "${_decimal} * 16") + string(SUBSTRING "${_tail}" 0 1 _digit) + string(SUBSTRING "${_tail}" 1 -1 _tail) + if (_digit STREQUAL "A") + math(EXPR _decimal "${_decimal} + 10") + elseif (_digit STREQUAL "B") + math(EXPR _decimal "${_decimal} + 11") + elseif (_digit STREQUAL "C") + math(EXPR _decimal "${_decimal} + 12") + elseif (_digit STREQUAL "D") + math(EXPR _decimal "${_decimal} + 13") + elseif (_digit STREQUAL "E") + math(EXPR _decimal "${_decimal} + 14") + elseif (_digit STREQUAL "F") + math(EXPR _decimal "${_decimal} + 15") + else() + math(EXPR _decimal "${_decimal} + ${_digit}") + endif() + string(LENGTH "${_tail}" _tail_length) + endwhile() + set(${DECIMAL} ${_decimal} PARENT_SCOPE) +endfunction(hex_to_dec) + +# Version information +file(STRINGS "c/common/version.h" _brotli_version_line REGEX "^#define BROTLI_VERSION (0x[0-9a-fA-F]+)$") +string(REGEX REPLACE "^#define BROTLI_VERSION 0x([0-9a-fA-F]+)$" "\\1" _brotli_version_hex "${_brotli_version_line}") +hex_to_dec("${_brotli_version_hex}" _brotli_version) +math(EXPR BROTLI_VERSION_MAJOR "${_brotli_version} >> 24") +math(EXPR BROTLI_VERSION_MINOR "(${_brotli_version} >> 12) & 4095") +math(EXPR BROTLI_VERSION_PATCH "${_brotli_version} & 4095") +set(BROTLI_VERSION "${BROTLI_VERSION_MAJOR}.${BROTLI_VERSION_MINOR}.${BROTLI_VERSION_PATCH}") +mark_as_advanced(BROTLI_VERSION BROTLI_VERSION_MAJOR BROTLI_VERSION_MINOR BROTLI_VERSION_PATCH) + +# ABI Version information +file(STRINGS "c/common/version.h" _brotli_abi_info_line REGEX "^#define BROTLI_ABI_VERSION (0x[0-9a-fA-F]+)$") +string(REGEX REPLACE "^#define BROTLI_ABI_VERSION 0x([0-9a-fA-F]+)$" "\\1" _brotli_abi_info_hex "${_brotli_abi_info_line}") +hex_to_dec("${_brotli_abi_info_hex}" _brotli_abi_info) +math(EXPR BROTLI_ABI_CURRENT "${_brotli_abi_info} >> 24") +math(EXPR BROTLI_ABI_REVISION "(${_brotli_abi_info} >> 12) & 4095") +math(EXPR BROTLI_ABI_AGE "${_brotli_abi_info} & 4095") +math(EXPR BROTLI_ABI_COMPATIBILITY "${BROTLI_ABI_CURRENT} - ${BROTLI_ABI_AGE}") +mark_as_advanced(BROTLI_ABI_CURRENT BROTLI_ABI_REVISION BROTLI_ABI_AGE BROTLI_ABI_COMPATIBILITY) + +if (ENABLE_SANITIZER) + set(CMAKE_C_FLAGS " ${CMAKE_C_FLAGS} -fsanitize=${ENABLE_SANITIZER}") + set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${ENABLE_SANITIZER}") + + # By default, brotli depends on undefined behavior, but setting + # BROTLI_BUILD_PORTABLE should result in a build which does not. + if(ENABLE_SANITIZER STREQUAL "undefined") + add_definitions(-DBROTLI_BUILD_PORTABLE) + endif() +endif () + +include(CheckFunctionExists) +set(LIBM_LIBRARY) +CHECK_FUNCTION_EXISTS(log2 LOG2_RES) +if(NOT LOG2_RES) + set(orig_req_libs "${CMAKE_REQUIRED_LIBRARIES}") + set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES};m") + CHECK_FUNCTION_EXISTS(log2 LOG2_LIBM_RES) + if(LOG2_LIBM_RES) + set(LIBM_LIBRARY "m") + else() + message(FATAL_ERROR "log2() not found") + endif() + + set(CMAKE_REQUIRED_LIBRARIES "${orig_req_libs}") + unset(LOG2_LIBM_RES) + unset(orig_req_libs) +endif() +unset(LOG2_RES) + +set(BROTLI_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/c/include") +mark_as_advanced(BROTLI_INCLUDE_DIRS) + +set(BROTLI_LIBRARIES_CORE brotlienc brotlidec brotlicommon) +set(BROTLI_LIBRARIES ${BROTLI_LIBRARIES_CORE} ${LIBM_LIBRARY}) +mark_as_advanced(BROTLI_LIBRARIES) + +set(BROTLI_LIBRARIES_CORE_STATIC brotlienc-static brotlidec-static brotlicommon-static) +set(BROTLI_LIBRARIES_STATIC ${BROTLI_LIBRARIES_CORE_STATIC} ${LIBM_LIBRARY}) +mark_as_advanced(BROTLI_LIBRARIES_STATIC) + +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_definitions(-DOS_LINUX) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + add_definitions(-DOS_FREEBSD) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + add_definitions(-DOS_MACOSX) +endif() + +function(transform_sources_list INPUT_FILE OUTPUT_FILE) + file(READ ${INPUT_FILE} TEXT) + string(REGEX REPLACE "\\\\\n" "~continuation~" TEXT ${TEXT}) + string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*)" "SET(\\1 \\2)" TEXT ${TEXT}) + string(REPLACE "~continuation~" "\n" TEXT ${TEXT}) + file(WRITE ${OUTPUT_FILE} ${TEXT}) +endfunction() + +transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") +include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") + +if(BROTLI_EMSCRIPTEN) + set(BROTLI_SHARED_LIBS "") +else() + set(BROTLI_SHARED_LIBS brotlicommon brotlidec brotlienc) + add_library(brotlicommon SHARED ${BROTLI_COMMON_C}) + add_library(brotlidec SHARED ${BROTLI_DEC_C}) + add_library(brotlienc SHARED ${BROTLI_ENC_C}) +endif() + +set(BROTLI_STATIC_LIBS brotlicommon-static brotlidec-static brotlienc-static) +add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C}) +add_library(brotlidec-static STATIC ${BROTLI_DEC_C}) +add_library(brotlienc-static STATIC ${BROTLI_ENC_C}) + +# Older CMake versions does not understand INCLUDE_DIRECTORIES property. +include_directories(${BROTLI_INCLUDE_DIRS}) + +foreach(lib IN LISTS BROTLI_SHARED_LIBS) + target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" ) + string(TOUPPER "${lib}" LIB) + set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION") +endforeach() + +foreach(lib IN LISTS BROTLI_SHARED_LIBS BROTLI_STATIC_LIBS) + target_link_libraries(${lib} ${LIBM_LIBRARY}) + set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS}) + set_target_properties(${lib} PROPERTIES + VERSION "${BROTLI_ABI_COMPATIBILITY}.${BROTLI_ABI_AGE}.${BROTLI_ABI_REVISION}" + SOVERSION "${BROTLI_ABI_COMPATIBILITY}") + if(NOT BROTLI_EMSCRIPTEN) + set_target_properties(${lib} PROPERTIES POSITION_INDEPENDENT_CODE TRUE) + endif() + set_property(TARGET ${lib} APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${BROTLI_INCLUDE_DIRS}") +endforeach() + +if(NOT BROTLI_EMSCRIPTEN) +target_link_libraries(brotlidec brotlicommon) +target_link_libraries(brotlienc brotlicommon) +endif() + +target_link_libraries(brotlidec-static brotlicommon-static) +target_link_libraries(brotlienc-static brotlicommon-static) + +# For projects stuck on older versions of CMake, this will set the +# BROTLI_INCLUDE_DIRS and BROTLI_LIBRARIES variables so they still +# have a relatively easy way to use Brotli: +# +# include_directories(${BROTLI_INCLUDE_DIRS}) +# target_link_libraries(foo ${BROTLI_LIBRARIES}) +if(BROTLI_PARENT_DIRECTORY) + set(BROTLI_INCLUDE_DIRS "${BROTLI_INCLUDE_DIRS}" PARENT_SCOPE) + set(BROTLI_LIBRARIES "${BROTLI_LIBRARIES}" PARENT_SCOPE) +endif() + +# Build the brotli executable +add_executable(brotli ${BROTLI_CLI_C}) +target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC}) + +# Installation +if(NOT BROTLI_EMSCRIPTEN) +if(NOT BROTLI_BUNDLED_MODE) + install( + TARGETS brotli + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + + install( + TARGETS ${BROTLI_LIBRARIES_CORE} + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + + install( + TARGETS ${BROTLI_LIBRARIES_CORE_STATIC} + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + + install( + DIRECTORY ${BROTLI_INCLUDE_DIRS}/brotli + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" + ) +endif() # BROTLI_BUNDLED_MODE +endif() # BROTLI_EMSCRIPTEN + +# Tests + +# If we're targeting Windows but not running on Windows, we need Wine +# to run the tests... +if(NOT BROTLI_DISABLE_TESTS) + if(WIN32 AND NOT CMAKE_HOST_WIN32) + find_program(BROTLI_WRAPPER NAMES wine) + + if(NOT BROTLI_WRAPPER) + message(STATUS "wine not found, disabling tests") + set(BROTLI_DISABLE_TESTS TRUE) + endif() + endif() +endif() + +# If our compiler is a cross-compiler that we know about (arm/aarch64), +# then we need to use qemu to execute the tests. +if(NOT BROTLI_DISABLE_TESTS) + if ("${CMAKE_C_COMPILER}" MATCHES "^.*/arm-linux-gnueabihf-.*$") + message(STATUS "Detected arm-linux-gnueabihf cross-compilation") + set(BROTLI_WRAPPER "qemu-arm") + set(BROTLI_WRAPPER_LD_PREFIX "/usr/arm-linux-gnueabihf") + endif() + + if ("${CMAKE_C_COMPILER}" MATCHES "^.*/arm-linux-gnueabi-.*$") + message(STATUS "Detected arm-linux-gnueabi cross-compilation") + set(BROTLI_WRAPPER "qemu-arm") + set(BROTLI_WRAPPER_LD_PREFIX "/usr/arm-linux-gnueabi") + endif() + + if ("${CMAKE_C_COMPILER}" MATCHES "^.*/aarch64-linux-gnu-.*$") + message(STATUS "Detected aarch64-linux-gnu cross-compilation") + set(BROTLI_WRAPPER "qemu-aarch64") + set(BROTLI_WRAPPER_LD_PREFIX "/usr/aarch64-linux-gnu") + endif() +endif() + +if(NOT BROTLI_DISABLE_TESTS) + include(CTest) + enable_testing() + + set(ROUNDTRIP_INPUTS + tests/testdata/alice29.txt + tests/testdata/asyoulik.txt + tests/testdata/lcet10.txt + tests/testdata/plrabn12.txt + c/enc/encode.c + c/common/dictionary.h + c/dec/decode.c) + + foreach(INPUT ${ROUNDTRIP_INPUTS}) + get_filename_component(OUTPUT_NAME "${INPUT}" NAME) + + set(OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_NAME}") + set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${INPUT}") + + foreach(quality 1 6 9 11) + add_test(NAME "${BROTLI_TEST_PREFIX}roundtrip/${INPUT}/${quality}" + COMMAND "${CMAKE_COMMAND}" + -DBROTLI_WRAPPER=${BROTLI_WRAPPER} + -DBROTLI_WRAPPER_LD_PREFIX=${BROTLI_WRAPPER_LD_PREFIX} + -DBROTLI_CLI=$ + -DQUALITY=${quality} + -DINPUT=${INPUT_FILE} + -DOUTPUT=${OUTPUT_FILE}.${quality} + -P ${CMAKE_CURRENT_SOURCE_DIR}/tests/run-roundtrip-test.cmake) + endforeach() + endforeach() + + file(GLOB_RECURSE + COMPATIBILITY_INPUTS + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + tests/testdata/*.compressed*) + + foreach(INPUT ${COMPATIBILITY_INPUTS}) + add_test(NAME "${BROTLI_TEST_PREFIX}compatibility/${INPUT}" + COMMAND "${CMAKE_COMMAND}" + -DBROTLI_WRAPPER=${BROTLI_WRAPPER} + -DBROTLI_WRAPPER_LD_PREFIX=${BROTLI_WRAPPER_LD_PREFIX} + -DBROTLI_CLI=$ + -DINPUT=${CMAKE_CURRENT_SOURCE_DIR}/${INPUT} + -P ${CMAKE_CURRENT_SOURCE_DIR}/tests/run-compatibility-test.cmake) + endforeach() +endif() + +# Generate a pkg-config files + +function(generate_pkg_config_path outvar path) + string(LENGTH "${path}" path_length) + + set(path_args ${ARGV}) + list(REMOVE_AT path_args 0 1) + list(LENGTH path_args path_args_remaining) + + set("${outvar}" "${path}") + + while(path_args_remaining GREATER 1) + list(GET path_args 0 name) + list(GET path_args 1 value) + + get_filename_component(value_full "${value}" ABSOLUTE) + string(LENGTH "${value}" value_length) + + if(path_length EQUAL value_length AND path STREQUAL value) + set("${outvar}" "\${${name}}") + break() + elseif(path_length GREATER value_length) + # We might be in a subdirectory of the value, but we have to be + # careful about a prefix matching but not being a subdirectory + # (for example, /usr/lib64 is not a subdirectory of /usr/lib). + # We'll do this by making sure the next character is a directory + # separator. + string(SUBSTRING "${path}" ${value_length} 1 sep) + if(sep STREQUAL "/") + string(SUBSTRING "${path}" 0 ${value_length} s) + if(s STREQUAL value) + string(SUBSTRING "${path}" "${value_length}" -1 suffix) + set("${outvar}" "\${${name}}${suffix}") + break() + endif() + endif() + endif() + + list(REMOVE_AT path_args 0 1) + list(LENGTH path_args path_args_remaining) + endwhile() + + set("${outvar}" "${${outvar}}" PARENT_SCOPE) +endfunction(generate_pkg_config_path) + +function(transform_pc_file INPUT_FILE OUTPUT_FILE VERSION) + file(READ ${INPUT_FILE} TEXT) + + set(PREFIX "${CMAKE_INSTALL_PREFIX}") + string(REGEX REPLACE "@prefix@" "${PREFIX}" TEXT ${TEXT}) + string(REGEX REPLACE "@exec_prefix@" "${PREFIX}" TEXT ${TEXT}) + + generate_pkg_config_path(LIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}" prefix "${PREFIX}") + string(REGEX REPLACE "@libdir@" "${LIBDIR}" TEXT ${TEXT}) + + generate_pkg_config_path(INCLUDEDIR "${CMAKE_INSTALL_FULL_INCLUDEDIR}" prefix "${PREFIX}") + string(REGEX REPLACE "@includedir@" "${INCLUDEDIR}" TEXT ${TEXT}) + + string(REGEX REPLACE "@PACKAGE_VERSION@" "${VERSION}" TEXT ${TEXT}) + + file(WRITE ${OUTPUT_FILE} ${TEXT}) +endfunction() + +transform_pc_file("scripts/libbrotlicommon.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libbrotlicommon.pc" "${BROTLI_VERSION}") + +transform_pc_file("scripts/libbrotlidec.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libbrotlidec.pc" "${BROTLI_VERSION}") + +transform_pc_file("scripts/libbrotlienc.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libbrotlienc.pc" "${BROTLI_VERSION}") + +if(NOT BROTLI_EMSCRIPTEN) +if(NOT BROTLI_BUNDLED_MODE) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlicommon.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlidec.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libbrotlienc.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +endif() # BROTLI_BUNDLED_MODE +endif() # BROTLI_EMSCRIPTEN + +if (ENABLE_COVERAGE STREQUAL "yes") + SETUP_TARGET_FOR_COVERAGE(coverage test coverage) +endif () diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md new file mode 100644 index 000000000..a00e37d17 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/CONTRIBUTING.md @@ -0,0 +1,27 @@ +Want to contribute? Great! First, read this page (including the small print at +the end). + +### Before you contribute +Before we can use your code, you must sign the +[Google Individual Contributor License Agreement] +(https://cla.developers.google.com/about/google-individual) +(CLA), which you can do online. The CLA is necessary mainly because you own the +copyright to your changes, even after your contribution becomes part of our +codebase, so we need your permission to use and distribute your code. We also +need to be sure of various other things—for instance that you'll tell us if you +know that your code infringes on other people's patents. You don't have to sign +the CLA until after you've submitted your code for review and a member has +approved it, but you must do it before we can put your code into our codebase. +Before you start working on a larger contribution, you should get in touch with +us first through the issue tracker with your idea so that we can help out and +possibly guide you. Coordinating up front makes it much easier to avoid +frustration later on. + +### Code reviews +All submissions, including submissions by project members, require review. We +use Github pull requests for this purpose. + +### The small print +Contributions made by corporations are covered by a different agreement than +the one above, the [Software Grant and Corporate Contributor License Agreement] +(https://cla.developers.google.com/about/google-corporate). diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE new file mode 100644 index 000000000..33b7cdd2d --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in new file mode 100644 index 000000000..b7b8e7244 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/MANIFEST.in @@ -0,0 +1,17 @@ +include CONTRIBUTING.md +include c/common/*.c +include c/common/*.h +include c/dec/*.c +include c/dec/*.h +include c/enc/*.c +include c/enc/*.h +include c/include/brotli/*.h +include LICENSE +include MANIFEST.in +include python/_brotli.cc +include python/bro.py +include python/brotli.py +include python/README.md +include README.md +include setup.py +include c/tools/brotli.c diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile new file mode 100644 index 000000000..489094090 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile @@ -0,0 +1,55 @@ +OS := $(shell uname) +LIBSOURCES = $(wildcard c/common/*.c) $(wildcard c/dec/*.c) \ + $(wildcard c/enc/*.c) +SOURCES = $(LIBSOURCES) c/tools/brotli.c +BINDIR = bin +OBJDIR = $(BINDIR)/obj +LIBOBJECTS = $(addprefix $(OBJDIR)/, $(LIBSOURCES:.c=.o)) +OBJECTS = $(addprefix $(OBJDIR)/, $(SOURCES:.c=.o)) +LIB_A = libbrotli.a +EXECUTABLE = brotli +DIRS = $(OBJDIR)/c/common $(OBJDIR)/c/dec $(OBJDIR)/c/enc \ + $(OBJDIR)/c/tools $(BINDIR)/tmp +CFLAGS += -O2 +ifeq ($(os), Darwin) + CPPFLAGS += -DOS_MACOSX +endif + +ifneq ($(strip $(CROSS_COMPILE)), ) + CC=$(CROSS_COMPILE)-gcc + ARCH=$(firstword $(subst -, ,$(CROSS_COMPILE))) + BROTLI_WRAPPER="qemu-$(ARCH) -L /usr/$(CROSS_COMPILE)" +endif + +# The arm-linux-gnueabi compiler defaults to Armv5. Since we only support Armv7 +# and beyond, we need to select Armv7 explicitly with march. +ifeq ($(ARCH), arm) + CFLAGS += -march=armv7-a -mfloat-abi=hard -mfpu=neon +endif + +all: test + @: + +.PHONY: all clean test + +$(DIRS): + mkdir -p $@ + +$(EXECUTABLE): $(OBJECTS) + $(CC) $(LDFLAGS) $(OBJECTS) -lm -o $(BINDIR)/$(EXECUTABLE) + +lib: $(LIBOBJECTS) + rm -f $(LIB_A) + ar -crs $(LIB_A) $(LIBOBJECTS) + +test: $(EXECUTABLE) + tests/compatibility_test.sh $(BROTLI_WRAPPER) + tests/roundtrip_test.sh $(BROTLI_WRAPPER) + +clean: + rm -rf $(BINDIR) $(LIB_A) + +.SECONDEXPANSION: +$(OBJECTS): $$(patsubst %.o,%.c,$$(patsubst $$(OBJDIR)/%,%,$$@)) | $(DIRS) + $(CC) $(CFLAGS) $(CPPFLAGS) -Ic/include \ + -c $(patsubst %.o,%.c,$(patsubst $(OBJDIR)/%,%,$@)) -o $@ diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am new file mode 100644 index 000000000..ace7a8506 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/Makefile.am @@ -0,0 +1,38 @@ +AUTOMAKE_OPTIONS = foreign nostdinc subdir-objects + +ACLOCAL_AMFLAGS = -I m4 + +# Actual ABI version is substituted by bootstrap +LIBBROTLI_VERSION_INFO = -version-info 0:0:0 + +bin_PROGRAMS = brotli +lib_LTLIBRARIES = libbrotlicommon.la libbrotlidec.la libbrotlienc.la + +include scripts/sources.lst + +brotliincludedir = $(includedir)/brotli +brotliinclude_HEADERS = $(BROTLI_INCLUDE) + +AM_CFLAGS = -I$(top_srcdir)/c/include + +brotli_SOURCES = $(BROTLI_CLI_C) +brotli_LDADD = libbrotlidec.la libbrotlienc.la libbrotlicommon.la -lm +#brotli_LDFLAGS = -static + +libbrotlicommon_la_SOURCES = $(BROTLI_COMMON_C) $(BROTLI_COMMON_H) +libbrotlicommon_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) +libbrotlidec_la_SOURCES = $(BROTLI_DEC_C) $(BROTLI_DEC_H) +libbrotlidec_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) +libbrotlidec_la_LIBADD = libbrotlicommon.la -lm +libbrotlienc_la_SOURCES = $(BROTLI_ENC_C) $(BROTLI_ENC_H) +libbrotlienc_la_LDFLAGS = $(AM_LDFLAGS) $(LIBBROTLI_VERSION_INFO) $(LDFLAGS) +libbrotlienc_la_LIBADD = libbrotlicommon.la -lm + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = \ + scripts/libbrotlicommon.pc \ + scripts/libbrotlidec.pc \ + scripts/libbrotlienc.pc +pkgincludedir= $(brotliincludedir) + +dist_doc_DATA = README diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README new file mode 100644 index 000000000..dea729130 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README @@ -0,0 +1,15 @@ +BROTLI DATA COMPRESSION LIBRARY + +Brotli is a generic-purpose lossless compression algorithm that compresses data +using a combination of a modern variant of the LZ77 algorithm, Huffman coding +and 2nd order context modeling, with a compression ratio comparable to the best +currently available general-purpose compression methods. It is similar in speed +with deflate but offers more dense compression. + +The specification of the Brotli Compressed Data Format is defined in RFC 7932 +https://tools.ietf.org/html/rfc7932 + +Brotli is open-sourced under the MIT License, see the LICENSE file. + +Brotli mailing list: +https://groups.google.com/forum/#!forum/brotli diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md new file mode 100644 index 000000000..017173c4e --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/README.md @@ -0,0 +1,98 @@ +

Brotli

+ +### Introduction + +Brotli is a generic-purpose lossless compression algorithm that compresses data +using a combination of a modern variant of the LZ77 algorithm, Huffman coding +and 2nd order context modeling, with a compression ratio comparable to the best +currently available general-purpose compression methods. It is similar in speed +with deflate but offers more dense compression. + +The specification of the Brotli Compressed Data Format is defined in [RFC 7932](https://tools.ietf.org/html/rfc7932). + +Brotli is open-sourced under the MIT License, see the LICENSE file. + +Brotli mailing list: +https://groups.google.com/forum/#!forum/brotli + +[![TravisCI Build Status](https://travis-ci.org/google/brotli.svg?branch=master)](https://travis-ci.org/google/brotli) +[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/google/brotli?branch=master&svg=true)](https://ci.appveyor.com/project/szabadka/brotli) +[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/brotli.svg)](https://oss-fuzz-build-logs.storage.googleapis.com/index.html#brotli) + +### Build instructions + +#### Vcpkg + +You can download and install brotli using the [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager: + + git clone https://github.com/Microsoft/vcpkg.git + cd vcpkg + ./bootstrap-vcpkg.sh + ./vcpkg integrate install + vcpkg install brotli + +The brotli port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. + +#### Autotools-style CMake + +[configure-cmake](https://github.com/nemequ/configure-cmake) is an +autotools-style configure script for CMake-based projects (not supported on Windows). + +The basic commands to build, test and install brotli are: + + $ mkdir out && cd out + $ ../configure-cmake + $ make + $ make test + $ make install + +By default, debug binaries are built. To generate "release" `Makefile` specify `--disable-debug` option to `configure-cmake`. + +#### Bazel + +See [Bazel](http://www.bazel.build/) + +#### CMake + +The basic commands to build and install brotli are: + + $ mkdir out && cd out + $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./installed .. + $ cmake --build . --config Release --target install + +You can use other [CMake](https://cmake.org/) configuration. + +#### Premake5 + +See [Premake5](https://premake.github.io/) + +#### Python + +To install the latest release of the Python module, run the following: + + $ pip install brotli + +To install the tip-of-the-tree version, run: + + $ pip install --upgrade git+https://github.com/google/brotli + +See the [Python readme](python/README.md) for more details on installing +from source, development, and testing. + +### Benchmarks +* [Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/) / [Unstable Squash Compression Benchmark](https://quixdb.github.io/squash-benchmark/unstable/) +* [Large Text Compression Benchmark](http://mattmahoney.net/dc/text.html) +* [Lzturbo Benchmark](https://sites.google.com/site/powturbo/home/benchmark) + +### Related projects +> **Disclaimer:** Brotli authors take no responsibility for the third party projects mentioned in this section. + +Independent [decoder](https://github.com/madler/brotli) implementation by Mark Adler, based entirely on format specification. + +JavaScript port of brotli [decoder](https://github.com/devongovett/brotli.js). Could be used directly via `npm install brotli` + +Hand ported [decoder / encoder](https://github.com/dominikhlbg/BrotliHaxe) in haxe by Dominik Homberger. Output source code: JavaScript, PHP, Python, Java and C# + +7Zip [plugin](https://github.com/mcmilk/7-Zip-Zstd) + +Dart [native bindings](https://github.com/thosakwe/brotli) diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE new file mode 100644 index 000000000..75f376828 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/WORKSPACE @@ -0,0 +1,21 @@ +workspace(name = "org_brotli") + +local_repository( + name = "ignore_org_brotli_go", + path = "go", +) + +local_repository( + name = "ignore_org_brotli_java", + path = "java", +) + +local_repository( + name = "ignore_org_brotli_js", + path = "js", +) + +local_repository( + name = "ignore_org_brotli_research", + path = "research", +) diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap new file mode 100755 index 000000000..64aca2c40 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/bootstrap @@ -0,0 +1,31 @@ +# !/bin/sh -e + +REQUIRED='is required, but not installed.' +bc -v >/dev/null 2>&1 || { echo >&2 "'bc' $REQUIRED"; exit 1; } +if [ `uname -s` != "FreeBSD" ]; then +sed --version >/dev/null 2>&1 || { echo >&2 "'sed' $REQUIRED"; exit 1; } +fi +autoreconf --version >/dev/null 2>&1 || { echo >&2 "'autoconf' $REQUIRED"; exit 1; } + +# If libtool is not installed -> "error: Libtool library used but 'LIBTOOL' is undefined" + +mkdir m4 2>/dev/null + +BROTLI_ABI_HEX=`sed -n 's/#define BROTLI_ABI_VERSION 0x//p' c/common/version.h` +BROTLI_ABI_INT=`echo "ibase=16;$BROTLI_ABI_HEX" | bc` +BROTLI_ABI_CURRENT=`expr $BROTLI_ABI_INT / 16777216` +BROTLI_ABI_REVISION=`expr $BROTLI_ABI_INT / 4096 % 4096` +BROTLI_ABI_AGE=`expr $BROTLI_ABI_INT % 4096` +BROTLI_ABI_INFO="$BROTLI_ABI_CURRENT:$BROTLI_ABI_REVISION:$BROTLI_ABI_AGE" + +BROTLI_VERSION_HEX=`sed -n 's/#define BROTLI_VERSION 0x//p' c/common/version.h` +BROTLI_VERSION_INT=`echo "ibase=16;$BROTLI_VERSION_HEX" | bc` +BROTLI_VERSION_MAJOR=`expr $BROTLI_VERSION_INT / 16777216` +BROTLI_VERSION_MINOR=`expr $BROTLI_VERSION_INT / 4096 % 4096` +BROTLI_VERSION_PATCH=`expr $BROTLI_VERSION_INT % 4096` +BROTLI_VERSION="$BROTLI_VERSION_MAJOR.$BROTLI_VERSION_MINOR.$BROTLI_VERSION_PATCH" + +sed -i.bak -r "s/[0-9]+:[0-9]+:[0-9]+/$BROTLI_ABI_INFO/" Makefile.am +sed -i.bak -r "s/\[[0-9]+\.[0-9]+\.[0-9]+\]/[$BROTLI_VERSION]/" configure.ac + +autoreconf --install --force --symlink || exit $ diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h new file mode 100644 index 000000000..f6e44dc7b --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/constants.h @@ -0,0 +1,184 @@ +/* Copyright 2016 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +/** + * @file + * Common constants used in decoder and encoder API. + */ + +#ifndef BROTLI_COMMON_CONSTANTS_H_ +#define BROTLI_COMMON_CONSTANTS_H_ + +#include "./platform.h" +#include + +/* Specification: 7.3. Encoding of the context map */ +#define BROTLI_CONTEXT_MAP_MAX_RLE 16 + +/* Specification: 2. Compressed representation overview */ +#define BROTLI_MAX_NUMBER_OF_BLOCK_TYPES 256 + +/* Specification: 3.3. Alphabet sizes: insert-and-copy length */ +#define BROTLI_NUM_LITERAL_SYMBOLS 256 +#define BROTLI_NUM_COMMAND_SYMBOLS 704 +#define BROTLI_NUM_BLOCK_LEN_SYMBOLS 26 +#define BROTLI_MAX_CONTEXT_MAP_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + \ + BROTLI_CONTEXT_MAP_MAX_RLE) +#define BROTLI_MAX_BLOCK_TYPE_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + 2) + +/* Specification: 3.5. Complex prefix codes */ +#define BROTLI_REPEAT_PREVIOUS_CODE_LENGTH 16 +#define BROTLI_REPEAT_ZERO_CODE_LENGTH 17 +#define BROTLI_CODE_LENGTH_CODES (BROTLI_REPEAT_ZERO_CODE_LENGTH + 1) +/* "code length of 8 is repeated" */ +#define BROTLI_INITIAL_REPEATED_CODE_LENGTH 8 + +/* "Large Window Brotli" */ + +/** + * The theoretical maximum number of distance bits specified for large window + * brotli, for 64-bit encoders and decoders. Even when in practice 32-bit + * encoders and decoders only support up to 30 max distance bits, the value is + * set to 62 because it affects the large window brotli file format. + * Specifically, it affects the encoding of simple huffman tree for distances, + * see Specification RFC 7932 chapter 3.4. + */ +#define BROTLI_LARGE_MAX_DISTANCE_BITS 62U +#define BROTLI_LARGE_MIN_WBITS 10 +/** + * The maximum supported large brotli window bits by the encoder and decoder. + * Large window brotli allows up to 62 bits, however the current encoder and + * decoder, designed for 32-bit integers, only support up to 30 bits maximum. + */ +#define BROTLI_LARGE_MAX_WBITS 30 + +/* Specification: 4. Encoding of distances */ +#define BROTLI_NUM_DISTANCE_SHORT_CODES 16 +/** + * Maximal number of "postfix" bits. + * + * Number of "postfix" bits is stored as 2 bits in meta-block header. + */ +#define BROTLI_MAX_NPOSTFIX 3 +#define BROTLI_MAX_NDIRECT 120 +#define BROTLI_MAX_DISTANCE_BITS 24U +#define BROTLI_DISTANCE_ALPHABET_SIZE(NPOSTFIX, NDIRECT, MAXNBITS) ( \ + BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) + \ + ((MAXNBITS) << ((NPOSTFIX) + 1))) +/* BROTLI_NUM_DISTANCE_SYMBOLS == 1128 */ +#define BROTLI_NUM_DISTANCE_SYMBOLS \ + BROTLI_DISTANCE_ALPHABET_SIZE( \ + BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_LARGE_MAX_DISTANCE_BITS) + +/* ((1 << 26) - 4) is the maximal distance that can be expressed in RFC 7932 + brotli stream using NPOSTFIX = 0 and NDIRECT = 0. With other NPOSTFIX and + NDIRECT values distances up to ((1 << 29) + 88) could be expressed. */ +#define BROTLI_MAX_DISTANCE 0x3FFFFFC + +/* ((1 << 31) - 4) is the safe distance limit. Using this number as a limit + allows safe distance calculation without overflows, given the distance + alphabet size is limited to corresponding size + (see kLargeWindowDistanceCodeLimits). */ +#define BROTLI_MAX_ALLOWED_DISTANCE 0x7FFFFFFC + +/* 7.1. Context modes and context ID lookup for literals */ +/* "context IDs for literals are in the range of 0..63" */ +#define BROTLI_LITERAL_CONTEXT_BITS 6 + +/* 7.2. Context ID for distances */ +#define BROTLI_DISTANCE_CONTEXT_BITS 2 + +/* 9.1. Format of the Stream Header */ +/* Number of slack bytes for window size. Don't confuse + with BROTLI_NUM_DISTANCE_SHORT_CODES. */ +#define BROTLI_WINDOW_GAP 16 +#define BROTLI_MAX_BACKWARD_LIMIT(W) (((size_t)1 << (W)) - BROTLI_WINDOW_GAP) + +typedef struct BrotliDistanceCodeLimit { + uint32_t max_alphabet_size; + uint32_t max_distance; +} BrotliDistanceCodeLimit; + +/* This function calculates maximal size of distance alphabet, such that the + distances greater than the given values can not be represented. + + This limits are designed to support fast and safe 32-bit decoders. + "32-bit" means that signed integer values up to ((1 << 31) - 1) could be + safely expressed. + + Brotli distance alphabet symbols do not represent consecutive distance + ranges. Each distance alphabet symbol (excluding direct distances and short + codes), represent interleaved (for NPOSTFIX > 0) range of distances. + A "group" of consecutive (1 << NPOSTFIX) symbols represent non-interleaved + range. Two consecutive groups require the same amount of "extra bits". + + It is important that distance alphabet represents complete "groups". + To avoid complex logic on encoder side about interleaved ranges + it was decided to restrict both sides to complete distance code "groups". + */ +BROTLI_UNUSED_FUNCTION BrotliDistanceCodeLimit BrotliCalculateDistanceCodeLimit( + uint32_t max_distance, uint32_t npostfix, uint32_t ndirect) { + BrotliDistanceCodeLimit result; + /* Marking this function as unused, because not all files + including "constants.h" use it -> compiler warns about that. */ + BROTLI_UNUSED(&BrotliCalculateDistanceCodeLimit); + if (max_distance <= ndirect) { + /* This case never happens / exists only for the sake of completeness. */ + result.max_alphabet_size = max_distance + BROTLI_NUM_DISTANCE_SHORT_CODES; + result.max_distance = max_distance; + return result; + } else { + /* The first prohibited value. */ + uint32_t forbidden_distance = max_distance + 1; + /* Subtract "directly" encoded region. */ + uint32_t offset = forbidden_distance - ndirect - 1; + uint32_t ndistbits = 0; + uint32_t tmp; + uint32_t half; + uint32_t group; + /* Postfix for the last dcode in the group. */ + uint32_t postfix = (1u << npostfix) - 1; + uint32_t extra; + uint32_t start; + /* Remove postfix and "head-start". */ + offset = (offset >> npostfix) + 4; + /* Calculate the number of distance bits. */ + tmp = offset / 2; + /* Poor-man's log2floor, to avoid extra dependencies. */ + while (tmp != 0) {ndistbits++; tmp = tmp >> 1;} + /* One bit is covered with subrange addressing ("half"). */ + ndistbits--; + /* Find subrange. */ + half = (offset >> ndistbits) & 1; + /* Calculate the "group" part of dcode. */ + group = ((ndistbits - 1) << 1) | half; + /* Calculated "group" covers the prohibited distance value. */ + if (group == 0) { + /* This case is added for correctness; does not occur for limit > 128. */ + result.max_alphabet_size = ndirect + BROTLI_NUM_DISTANCE_SHORT_CODES; + result.max_distance = ndirect; + return result; + } + /* Decrement "group", so it is the last permitted "group". */ + group--; + /* After group was decremented, ndistbits and half must be recalculated. */ + ndistbits = (group >> 1) + 1; + /* The last available distance in the subrange has all extra bits set. */ + extra = (1u << ndistbits) - 1; + /* Calculate region start. NB: ndistbits >= 1. */ + start = (1u << (ndistbits + 1)) - 4; + /* Move to subregion. */ + start += (group & 1) << ndistbits; + /* Calculate the alphabet size. */ + result.max_alphabet_size = ((group << npostfix) | postfix) + ndirect + + BROTLI_NUM_DISTANCE_SHORT_CODES + 1; + /* Calculate the maximal distance representable by alphabet. */ + result.max_distance = ((start + extra) << npostfix) + postfix + ndirect + 1; + return result; + } +} + +#endif /* BROTLI_COMMON_CONSTANTS_H_ */ diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h new file mode 100755 index 000000000..24b3eb48f --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/context.h @@ -0,0 +1,261 @@ +/* Copyright 2013 Google Inc. All Rights Reserved. + + Distributed under MIT license. + See file LICENSE for detail or copy at https://opensource.org/licenses/MIT +*/ + +/* Lookup table to map the previous two bytes to a context id. + + There are four different context modeling modes defined here: + CONTEXT_LSB6: context id is the least significant 6 bits of the last byte, + CONTEXT_MSB6: context id is the most significant 6 bits of the last byte, + CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text, + CONTEXT_SIGNED: second-order context model tuned for signed integers. + + If |p1| and |p2| are the previous two bytes, and |mode| is current context + mode, we calculate the context as: + + context = ContextLut(mode)[p1] | ContextLut(mode)[p2 + 256]. + + For CONTEXT_UTF8 mode, if the previous two bytes are ASCII characters + (i.e. < 128), this will be equivalent to + + context = 4 * context1(p1) + context2(p2), + + where context1 is based on the previous byte in the following way: + + 0 : non-ASCII control + 1 : \t, \n, \r + 2 : space + 3 : other punctuation + 4 : " ' + 5 : % + 6 : ( < [ { + 7 : ) > ] } + 8 : , ; : + 9 : . + 10 : = + 11 : number + 12 : upper-case vowel + 13 : upper-case consonant + 14 : lower-case vowel + 15 : lower-case consonant + + and context2 is based on the second last byte: + + 0 : control, space + 1 : punctuation + 2 : upper-case letter, number + 3 : lower-case letter + + If the last byte is ASCII, and the second last byte is not (in a valid UTF8 + stream it will be a continuation byte, value between 128 and 191), the + context is the same as if the second last byte was an ASCII control or space. + + If the last byte is a UTF8 lead byte (value >= 192), then the next byte will + be a continuation byte and the context id is 2 or 3 depending on the LSB of + the last byte and to a lesser extent on the second last byte if it is ASCII. + + If the last byte is a UTF8 continuation byte, the second last byte can be: + - continuation byte: the next byte is probably ASCII or lead byte (assuming + 4-byte UTF8 characters are rare) and the context id is 0 or 1. + - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1 + - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3 + + The possible value combinations of the previous two bytes, the range of + context ids and the type of the next byte is summarized in the table below: + + |--------\-----------------------------------------------------------------| + | \ Last byte | + | Second \---------------------------------------------------------------| + | last byte \ ASCII | cont. byte | lead byte | + | \ (0-127) | (128-191) | (192-) | + |=============|===================|=====================|==================| + | ASCII | next: ASCII/lead | not valid | next: cont. | + | (0-127) | context: 4 - 63 | | context: 2 - 3 | + |-------------|-------------------|---------------------|------------------| + | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. | + | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 | + |-------------|-------------------|---------------------|------------------| + | lead byte | not valid | next: ASCII/lead | not valid | + | (192-207) | | context: 0 - 1 | | + |-------------|-------------------|---------------------|------------------| + | lead byte | not valid | next: cont. | not valid | + | (208-) | | context: 2 - 3 | | + |-------------|-------------------|---------------------|------------------| +*/ + +#ifndef BROTLI_COMMON_CONTEXT_H_ +#define BROTLI_COMMON_CONTEXT_H_ + +#include + +typedef enum ContextType { + CONTEXT_LSB6 = 0, + CONTEXT_MSB6 = 1, + CONTEXT_UTF8 = 2, + CONTEXT_SIGNED = 3 +} ContextType; + +/* Common context lookup table for all context modes. */ +static const uint8_t kContextLookup[2048] = { + /* CONTEXT_LSB6, last byte. */ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + + /* CONTEXT_LSB6, second last byte, */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + /* CONTEXT_MSB6, last byte. */ + 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, + 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, + 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, + 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, + 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, + 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, + 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, + 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, + 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, + 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, + 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, + 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, + 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, + 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, + 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, + 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, + + /* CONTEXT_MSB6, second last byte, */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + /* CONTEXT_UTF8, last byte. */ + /* ASCII range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12, + 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48, + 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12, + 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56, + 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0, + /* UTF8 continuation byte range. */ + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + /* UTF8 lead byte range. */ + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + + /* CONTEXT_UTF8 second last byte. */ + /* ASCII range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, + /* UTF8 continuation byte range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + /* UTF8 lead byte range. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */ + 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, + + /* CONTEXT_SIGNED, second last byte. */ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, +}; + +typedef const uint8_t* ContextLut; + +/* typeof(MODE) == ContextType; returns ContextLut */ +#define BROTLI_CONTEXT_LUT(MODE) (&kContextLookup[(MODE) << 9]) + +/* typeof(LUT) == ContextLut */ +#define BROTLI_CONTEXT(P1, P2, LUT) ((LUT)[P1] | ((LUT) + 256)[P2]) + +#endif /* BROTLI_COMMON_CONTEXT_H_ */ diff --git a/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin new file mode 100644 index 000000000..a585c0e29 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/c/common/dictionary.bin @@ -0,0 +1,432 @@ +timedownlifeleftbackcodedatashowonlysitecityopenjustlikefreeworktextyearoverbodyloveformbookplaylivelinehelphomesidemorewordlongthemviewfindpagedaysfullheadtermeachareafromtruemarkableuponhighdatelandnewsevennextcasebothpostusedmadehandherewhatnameLinkblogsizebaseheldmakemainuser') +holdendswithNewsreadweresigntakehavegameseencallpathwellplusmenufilmpartjointhislistgoodneedwayswestjobsmindalsologorichuseslastteamarmyfoodkingwilleastwardbestfirePageknowaway.pngmovethanloadgiveselfnotemuchfeedmanyrockicononcelookhidediedHomerulehostajaxinfoclublawslesshalfsomesuchzone100%onescareTimeracebluefourweekfacehopegavehardlostwhenparkkeptpassshiproomHTMLplanTypedonesavekeepflaglinksoldfivetookratetownjumpthusdarkcardfilefearstaykillthatfallautoever.comtalkshopvotedeepmoderestturnbornbandfellroseurl(skinrolecomeactsagesmeetgold.jpgitemvaryfeltthensenddropViewcopy1.0"stopelseliestourpack.gifpastcss?graymean>rideshotlatesaidroadvar feeljohnrickportfast'UA-deadpoorbilltypeU.S.woodmust2px;Inforankwidewantwalllead[0];paulwavesure$('#waitmassarmsgoesgainlangpaid!-- lockunitrootwalkfirmwifexml"songtest20pxkindrowstoolfontmailsafestarmapscorerainflowbabyspansays4px;6px;artsfootrealwikiheatsteptriporg/lakeweaktoldFormcastfansbankveryrunsjulytask1px;goalgrewslowedgeid="sets5px;.js?40pxif (soonseatnonetubezerosentreedfactintogiftharm18pxcamehillboldzoomvoideasyringfillpeakinitcost3px;jacktagsbitsrolleditknewnearironfreddiskwentsoilputs/js/holyT22:ISBNT20:adamsees

json', 'contT21: RSSloopasiamoon

soulLINEfortcartT14:

80px!--<9px;T04:mike:46ZniceinchYorkricezh:ä'));puremageparatonebond:37Z_of_']);000,zh:çtankyardbowlbush:56ZJava30px +|} +%C3%:34ZjeffEXPIcashvisagolfsnowzh:équer.csssickmeatmin.binddellhirepicsrent:36ZHTTP-201fotowolfEND xbox:54ZBODYdick; +} +exit:35Zvarsbeat'});diet999;anne}}sonyguysfuckpipe|- +!002)ndow[1];[]; +Log salt + bangtrimbath){ +00px +});ko:ìfeesad> s:// [];tollplug(){ +{ + .js'200pdualboat.JPG); +}quot); + +'); + +} 201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037201320122011201020092008200720062005200420032002200120001999199819971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197419731972197119701969196819671966196519641963196219611960195919581957195619551954195319521951195010001024139400009999comomásesteestaperotodohacecadaañobiendíaasívidacasootroforosolootracualdijosidograntipotemadebealgoquéestonadatrespococasabajotodasinoaguapuesunosantediceluisellamayozonaamorpisoobraclicellodioshoracasiзанаомрарутанепоотизнодотожеонихÐаеебымыВыÑовывоÐообПолиниРФÐеМытыОнимдаЗаДаÐуОбтеИзейнуммТыужÙيأنمامعكلأوردياÙىهولملكاولهبسالإنهيأيقدهلثمبهلوليبلايبكشيامأمنتبيلنحبهممشوشfirstvideolightworldmediawhitecloseblackrightsmallbooksplacemusicfieldorderpointvalueleveltableboardhousegroupworksyearsstatetodaywaterstartstyledeathpowerphonenighterrorinputabouttermstitletoolseventlocaltimeslargewordsgamesshortspacefocusclearmodelblockguideradiosharewomenagainmoneyimagenamesyounglineslatercolorgreenfront&watchforcepricerulesbeginaftervisitissueareasbelowindextotalhourslabelprintpressbuiltlinksspeedstudytradefoundsenseundershownformsrangeaddedstillmovedtakenaboveflashfixedoftenotherviewschecklegalriveritemsquickshapehumanexistgoingmoviethirdbasicpeacestagewidthloginideaswrotepagesusersdrivestorebreaksouthvoicesitesmonthwherebuildwhichearthforumthreesportpartyClicklowerlivesclasslayerentrystoryusagesoundcourtyour birthpopuptypesapplyImagebeinguppernoteseveryshowsmeansextramatchtrackknownearlybegansuperpapernorthlearngivennamedendedTermspartsGroupbrandusingwomanfalsereadyaudiotakeswhile.com/livedcasesdailychildgreatjudgethoseunitsneverbroadcoastcoverapplefilescyclesceneplansclickwritequeenpieceemailframeolderphotolimitcachecivilscaleenterthemetheretouchboundroyalaskedwholesincestock namefaithheartemptyofferscopeownedmightalbumthinkbloodarraymajortrustcanonunioncountvalidstoneStyleLoginhappyoccurleft:freshquitefilmsgradeneedsurbanfightbasishoverauto;route.htmlmixedfinalYour slidetopicbrownalonedrawnsplitreachRightdatesmarchquotegoodsLinksdoubtasyncthumballowchiefyouthnovel10px;serveuntilhandsCheckSpacequeryjamesequaltwice0,000Startpanelsongsroundeightshiftworthpostsleadsweeksavoidthesemilesplanesmartalphaplantmarksratesplaysclaimsalestextsstarswrong

thing.org/multiheardPowerstandtokensolid(thisbringshipsstafftriedcallsfullyfactsagentThis //-->adminegyptEvent15px;Emailtrue"crossspentblogsbox">notedleavechinasizesguestrobotheavytrue,sevengrandcrimesignsawaredancephase> + + +name=diegopage swiss--> + +#fff;">Log.com"treatsheet) && 14px;sleepntentfiledja:ãƒid="cName"worseshots-box-delta +<bears:48Z spendbakershops= "";php">ction13px;brianhellosize=o=%2F joinmaybe, fjsimg" ")[0]MTopBType"newlyDanskczechtrailknowsfaq">zh-cn10); +-1");type=bluestrulydavis.js';> + +form jesus100% menu. + +walesrisksumentddingb-likteachgif" vegasdanskeestishqipsuomisobredesdeentretodospuedeañosestátienehastaotrospartedondenuevohacerformamismomejormundoaquídíassóloayudafechatodastantomenosdatosotrassitiomuchoahoralugarmayorestoshorastenerantesfotosestaspaísnuevasaludforosmedioquienmesespoderchileserávecesdecirjoséestarventagrupohechoellostengoamigocosasnivelgentemismaairesjuliotemashaciafavorjuniolibrepuntobuenoautorabrilbuenatextomarzosaberlistaluegocómoenerojuegoperúhaberestoynuncamujervalorfueralibrogustaigualvotoscasosguíapuedosomosavisousteddebennochebuscafaltaeurosseriedichocursoclavecasasleónplazolargoobrasvistaapoyojuntotratavistocrearcampohemoscincocargopisosordenhacenáreadiscopedrocercapuedapapelmenorútilclarojorgecalleponertardenadiemarcasigueellassiglocochemotosmadreclaserestoniñoquedapasarbancohijosviajepabloéstevienereinodejarfondocanalnorteletracausatomarmanoslunesautosvillavendopesartipostengamarcollevapadreunidovamoszonasambosbandamariaabusomuchasubirriojavivirgradochicaallíjovendichaestantalessalirsuelopesosfinesllamabuscoéstalleganegroplazahumorpagarjuntadobleislasbolsabañohablaluchaÃreadicenjugarnotasvalleallácargadolorabajoestégustomentemariofirmacostofichaplatahogarartesleyesaquelmuseobasespocosmitadcielochicomiedoganarsantoetapadebesplayaredessietecortecoreadudasdeseoviejodeseaaguas"domaincommonstatuseventsmastersystemactionbannerremovescrollupdateglobalmediumfilternumberchangeresultpublicscreenchoosenormaltravelissuessourcetargetspringmodulemobileswitchphotosborderregionitselfsocialactivecolumnrecordfollowtitle>eitherlengthfamilyfriendlayoutauthorcreatereviewsummerserverplayedplayerexpandpolicyformatdoublepointsseriespersonlivingdesignmonthsforcesuniqueweightpeopleenergynaturesearchfigurehavingcustomoffsetletterwindowsubmitrendergroupsuploadhealthmethodvideosschoolfutureshadowdebatevaluesObjectothersrightsleaguechromesimplenoticesharedendingseasonreportonlinesquarebuttonimagesenablemovinglatestwinterFranceperiodstrongrepeatLondondetailformeddemandsecurepassedtoggleplacesdevicestaticcitiesstreamyellowattackstreetflighthiddeninfo">openedusefulvalleycausesleadersecretseconddamagesportsexceptratingsignedthingseffectfieldsstatesofficevisualeditorvolumeReportmuseummoviesparentaccessmostlymother" id="marketgroundchancesurveybeforesymbolmomentspeechmotioninsidematterCenterobjectexistsmiddleEuropegrowthlegacymannerenoughcareeransweroriginportalclientselectrandomclosedtopicscomingfatheroptionsimplyraisedescapechosenchurchdefinereasoncorneroutputmemoryiframepolicemodelsNumberduringoffersstyleskilledlistedcalledsilvermargindeletebetterbrowselimitsGlobalsinglewidgetcenterbudgetnowrapcreditclaimsenginesafetychoicespirit-stylespreadmakingneededrussiapleaseextentScriptbrokenallowschargedividefactormember-basedtheoryconfigaroundworkedhelpedChurchimpactshouldalwayslogo" bottomlist">){var prefixorangeHeader.push(couplegardenbridgelaunchReviewtakingvisionlittledatingButtonbeautythemesforgotSearchanchoralmostloadedChangereturnstringreloadMobileincomesupplySourceordersviewed courseAbout islandPhilipawardshandleimportOfficeregardskillsnationSportsdegreeweekly (e.g.behinddoctorloggedunitedbeyond-scaleacceptservedmarineFootercamera +_form"leavesstress" /> +.gif" onloadloaderOxfordsistersurvivlistenfemaleDesignsize="appealtext">levelsthankshigherforcedanimalanyoneAfricaagreedrecentPeople
wonderpricesturned|| {};main">inlinesundaywrap">failedcensusminutebeaconquotes150px|estateremoteemail"linkedright;signalformal1.htmlsignupprincefloat:.png" forum.AccesspaperssoundsextendHeightsliderUTF-8"& Before. WithstudioownersmanageprofitjQueryannualparamsboughtfamousgooglelongeri++) {israelsayingdecidehome">headerensurebranchpiecesblock;statedtop">boston.test(avatartested_countforumsschemaindex,filledsharesreaderalert(appearSubmitline">body"> +* TheThoughseeingjerseyNews +System DavidcancertablesprovedApril reallydriveritem">more">boardscolorscampusfirst || [];media.guitarfinishwidth:showedOther .php" assumelayerswilsonstoresreliefswedenCustomeasily your String + +Whiltaylorclear:resortfrenchthough") + "buyingbrandsMembername">oppingsector5px;">vspacepostermajor coffeemartinmaturehappenkansaslink">Images=falsewhile hspace0& + +In powerPolski-colorjordanBottomStart -count2.htmlnews">01.jpgOnline-rightmillerseniorISBN 00,000 guidesvalue)ectionrepair.xml" rights.html-blockregExp:hoverwithinvirginphones using + var >'); + + +bahasabrasilgalegomagyarpolskisrpskiردو中文简体ç¹é«”ä¿¡æ¯ä¸­å›½æˆ‘们一个公å¸ç®¡ç†è®ºå›å¯ä»¥æœåŠ¡æ—¶é—´ä¸ªäººäº§å“自己ä¼ä¸šæŸ¥çœ‹å·¥ä½œè”系没有网站所有评论中心文章用户首页作者技术问题相关下载æœç´¢ä½¿ç”¨è½¯ä»¶åœ¨çº¿ä¸»é¢˜èµ„料视频回å¤æ³¨å†Œç½‘络收è—内容推è市场消æ¯ç©ºé—´å‘布什么好å‹ç”Ÿæ´»å›¾ç‰‡å‘展如果手机新闻最新方å¼åŒ—京æ供关于更多这个系统知é“游æˆå¹¿å‘Šå…¶ä»–å‘表安全第一会员进行点击版æƒç”µå­ä¸–界设计å…费教育加入活动他们商å“åšå®¢çŽ°åœ¨ä¸Šæµ·å¦‚何已ç»ç•™è¨€è¯¦ç»†ç¤¾åŒºç™»å½•æœ¬ç«™éœ€è¦ä»·æ ¼æ”¯æŒå›½é™…链接国家建设朋å‹é˜…读法律ä½ç½®ç»æµŽé€‰æ‹©è¿™æ ·å½“å‰åˆ†ç±»æŽ’行因为交易最åŽéŸ³ä¹ä¸èƒ½é€šè¿‡è¡Œä¸šç§‘技å¯èƒ½è®¾å¤‡åˆä½œå¤§å®¶ç¤¾ä¼šç ”究专业全部项目这里还是开始情况电脑文件å“牌帮助文化资æºå¤§å­¦å­¦ä¹ åœ°å€æµè§ˆæŠ•èµ„工程è¦æ±‚怎么时候功能主è¦ç›®å‰èµ„讯城市方法电影招è˜å£°æ˜Žä»»ä½•å¥åº·æ•°æ®ç¾Žå›½æ±½è½¦ä»‹ç»ä½†æ˜¯äº¤æµç”Ÿäº§æ‰€ä»¥ç”µè¯æ˜¾ç¤ºä¸€äº›å•ä½äººå‘˜åˆ†æžåœ°å›¾æ—…游工具学生系列网å‹å¸–å­å¯†ç é¢‘é“控制地区基本全国网上é‡è¦ç¬¬äºŒå–œæ¬¢è¿›å…¥å‹æƒ…这些考试å‘现培训以上政府æˆä¸ºçŽ¯å¢ƒé¦™æ¸¯åŒæ—¶å¨±ä¹å‘é€ä¸€å®šå¼€å‘作å“标准欢迎解决地方一下以åŠè´£ä»»æˆ–者客户代表积分女人数ç é”€å”®å‡ºçŽ°ç¦»çº¿åº”用列表ä¸åŒç¼–辑统计查询ä¸è¦æœ‰å…³æœºæž„很多播放组织政策直接能力æ¥æºæ™‚間看到热门关键专区éžå¸¸è‹±è¯­ç™¾åº¦å¸Œæœ›ç¾Žå¥³æ¯”较知识规定建议部门æ„è§ç²¾å½©æ—¥æœ¬æ高å‘言方é¢åŸºé‡‘处ç†æƒé™å½±ç‰‡é“¶è¡Œè¿˜æœ‰åˆ†äº«ç‰©å“ç»è¥æ·»åŠ ä¸“家这ç§è¯é¢˜èµ·æ¥ä¸šåŠ¡å…¬å‘Šè®°å½•ç®€ä»‹è´¨é‡ç”·äººå½±å“引用报告部分快速咨询时尚注æ„申请学校应该历å²åªæ˜¯è¿”回购买å称为了æˆåŠŸè¯´æ˜Žä¾›åº”å­©å­ä¸“题程åºä¸€èˆ¬æœƒå“¡åªæœ‰å…¶å®ƒä¿æŠ¤è€Œä¸”今天窗å£åŠ¨æ€çŠ¶æ€ç‰¹åˆ«è®¤ä¸ºå¿…须更新å°è¯´æˆ‘們作为媒体包括那么一样国内是å¦æ ¹æ®ç”µè§†å­¦é™¢å…·æœ‰è¿‡ç¨‹ç”±äºŽäººæ‰å‡ºæ¥ä¸è¿‡æ­£åœ¨æ˜Žæ˜Ÿæ•…事关系标题商务输入一直基础教学了解建筑结果全çƒé€šçŸ¥è®¡åˆ’对于艺术相册å‘生真的建立等级类型ç»éªŒå®žçŽ°åˆ¶ä½œæ¥è‡ªæ ‡ç­¾ä»¥ä¸‹åŽŸåˆ›æ— æ³•å…¶ä¸­å€‹äººä¸€åˆ‡æŒ‡å—关闭集团第三关注因此照片深圳商业广州日期高级最近综åˆè¡¨ç¤ºä¸“辑行为交通评价觉得精åŽå®¶åº­å®Œæˆæ„Ÿè§‰å®‰è£…得到邮件制度食å“虽然转载报价记者方案行政人民用å“东西æ出酒店然åŽä»˜æ¬¾çƒ­ç‚¹ä»¥å‰å®Œå…¨å‘帖设置领导工业医院看看ç»å…¸åŽŸå› å¹³å°å„ç§å¢žåŠ æ料新增之åŽèŒä¸šæ•ˆæžœä»Šå¹´è®ºæ–‡æˆ‘国告诉版主修改å‚与打å°å¿«ä¹æœºæ¢°è§‚点存在精神获得利用继续你们这么模å¼è¯­è¨€èƒ½å¤Ÿé›…虎æ“作风格一起科学体育短信æ¡ä»¶æ²»ç–—è¿åŠ¨äº§ä¸šä¼šè®®å¯¼èˆªå…ˆç”Ÿè”盟å¯æ˜¯å•é¡Œç»“构作用调查資料自动负责农业访问实施接å—讨论那个å馈加强女性范围æœå‹™ä¼‘闲今日客æœè§€çœ‹å‚加的è¯ä¸€ç‚¹ä¿è¯å›¾ä¹¦æœ‰æ•ˆæµ‹è¯•ç§»åŠ¨æ‰èƒ½å†³å®šè‚¡ç¥¨ä¸æ–­éœ€æ±‚ä¸å¾—办法之间采用è¥é”€æŠ•è¯‰ç›®æ ‡çˆ±æƒ…摄影有些複製文学机会数字装修购物农æ‘å…¨é¢ç²¾å“其实事情水平æ示上市谢谢普通教师上传类别歌曲拥有创新é…件åªè¦æ—¶ä»£è³‡è¨Šè¾¾åˆ°äººç”Ÿè®¢é˜…è€å¸ˆå±•ç¤ºå¿ƒç†è´´å­ç¶²ç«™ä¸»é¡Œè‡ªç„¶çº§åˆ«ç®€å•æ”¹é©é‚£äº›æ¥è¯´æ‰“开代ç åˆ é™¤è¯åˆ¸èŠ‚ç›®é‡ç‚¹æ¬¡æ•¸å¤šå°‘规划资金找到以åŽå¤§å…¨ä¸»é¡µæœ€ä½³å›žç­”天下ä¿éšœçŽ°ä»£æ£€æŸ¥æŠ•ç¥¨å°æ—¶æ²’有正常甚至代ç†ç›®å½•å…¬å¼€å¤åˆ¶é‡‘èžå¹¸ç¦ç‰ˆæœ¬å½¢æˆå‡†å¤‡è¡Œæƒ…回到æ€æƒ³æ€Žæ ·å议认è¯æœ€å¥½äº§ç”ŸæŒ‰ç…§æœè£…广东动漫采购新手组图é¢æ¿å‚考政治容易天地努力人们å‡çº§é€Ÿåº¦äººç‰©è°ƒæ•´æµè¡Œé€ æˆæ–‡å­—韩国贸易开展相關表现影视如此美容大å°æŠ¥é“æ¡æ¬¾å¿ƒæƒ…许多法规家居书店连接立å³ä¸¾æŠ¥æŠ€å·§å¥¥è¿ç™»å…¥ä»¥æ¥ç†è®ºäº‹ä»¶è‡ªç”±ä¸­åŽåŠžå…¬å¦ˆå¦ˆçœŸæ­£ä¸é”™å…¨æ–‡åˆåŒä»·å€¼åˆ«äººç›‘ç£å…·ä½“世纪团队创业承担增长有人ä¿æŒå•†å®¶ç»´ä¿®å°æ¹¾å·¦å³è‚¡ä»½ç­”案实际电信ç»ç†ç”Ÿå‘½å®£ä¼ ä»»åŠ¡æ­£å¼ç‰¹è‰²ä¸‹æ¥å会åªèƒ½å½“然é‡æ–°å…§å®¹æŒ‡å¯¼è¿è¡Œæ—¥å¿—賣家超过土地浙江支付推出站长æ­å·žæ‰§è¡Œåˆ¶é€ ä¹‹ä¸€æŽ¨å¹¿çŽ°åœºæè¿°å˜åŒ–传统歌手ä¿é™©è¯¾ç¨‹åŒ»ç–—ç»è¿‡è¿‡åŽ»ä¹‹å‰æ”¶å…¥å¹´åº¦æ‚志美丽最高登陆未æ¥åŠ å·¥å…责教程版å—身体é‡åº†å‡ºå”®æˆæœ¬å½¢å¼åœŸè±†å‡ºåƒ¹ä¸œæ–¹é‚®ç®±å—京求èŒå–å¾—èŒä½ç›¸ä¿¡é¡µé¢åˆ†é’Ÿç½‘页确定图例网å€ç§¯æžé”™è¯¯ç›®çš„å®è´æœºå…³é£Žé™©æŽˆæƒç—…毒宠物除了評論疾病åŠæ—¶æ±‚购站点儿童æ¯å¤©ä¸­å¤®è®¤è¯†æ¯ä¸ªå¤©æ´¥å­—体å°ç£ç»´æŠ¤æœ¬é¡µä¸ªæ€§å®˜æ–¹å¸¸è§ç›¸æœºæˆ˜ç•¥åº”当律师方便校园股市房屋æ ç›®å‘˜å·¥å¯¼è‡´çªç„¶é“具本网结åˆæ¡£æ¡ˆåŠ³åŠ¨å¦å¤–美元引起改å˜ç¬¬å››ä¼šè®¡èªªæ˜Žéšç§å®å®è§„范消费共åŒå¿˜è®°ä½“系带æ¥å字發表开放加盟å—到二手大é‡æˆäººæ•°é‡å…±äº«åŒºåŸŸå¥³å­©åŽŸåˆ™æ‰€åœ¨ç»“æŸé€šä¿¡è¶…级é…置当时优秀性感房产éŠæˆ²å‡ºå£æ交就业ä¿å¥ç¨‹åº¦å‚数事业整个山东情感特殊分類æœå°‹å±žäºŽé—¨æˆ·è´¢åŠ¡å£°éŸ³åŠå…¶è´¢ç»åšæŒå¹²éƒ¨æˆç«‹åˆ©ç›Šè€ƒè™‘æˆéƒ½åŒ…装用戶比赛文明招商完整真是眼ç›ä¼™ä¼´å¨æœ›é¢†åŸŸå«ç”Ÿä¼˜æƒ è«–壇公共良好充分符åˆé™„件特点ä¸å¯è‹±æ–‡èµ„产根本明显密碼公众民æ—更加享å—åŒå­¦å¯åŠ¨é€‚åˆåŽŸæ¥é—®ç­”本文美食绿色稳定终于生物供求æœç‹åŠ›é‡ä¸¥é‡æ°¸è¿œå†™çœŸæœ‰é™ç«žäº‰å¯¹è±¡è´¹ç”¨ä¸å¥½ç»å¯¹å分促进点评影音优势ä¸å°‘欣èµå¹¶ä¸”有点方å‘全新信用设施形象资格çªç ´éšç€é‡å¤§äºŽæ˜¯æ¯•ä¸šæ™ºèƒ½åŒ–工完美商城统一出版打造產å“概况用于ä¿ç•™å› ç´ ä¸­åœ‹å­˜å‚¨è´´å›¾æœ€æ„›é•¿æœŸå£ä»·ç†è´¢åŸºåœ°å®‰æŽ’武汉里é¢åˆ›å»ºå¤©ç©ºé¦–先完善驱动下é¢ä¸å†è¯šä¿¡æ„义阳光英国漂亮军事玩家群众农民å³å¯å稱家具动画想到注明å°å­¦æ€§èƒ½è€ƒç ”硬件观看清楚æžç¬‘首é é»„金适用江è‹çœŸå®žä¸»ç®¡é˜¶æ®µè¨»å†Šç¿»è¯‘æƒåˆ©åšå¥½ä¼¼ä¹Žé€šè®¯æ–½å·¥ç‹€æ…‹ä¹Ÿè®¸çŽ¯ä¿åŸ¹å…»æ¦‚念大型机票ç†è§£åŒ¿åcuandoenviarmadridbuscariniciotiempoporquecuentaestadopuedenjuegoscontraestánnombretienenperfilmaneraamigosciudadcentroaunquepuedesdentroprimerpreciosegúnbuenosvolverpuntossemanahabíaagostonuevosunidoscarlosequiponiñosmuchosalgunacorreoimagenpartirarribamaríahombreempleoverdadcambiomuchasfueronpasadolíneaparecenuevascursosestabaquierolibroscuantoaccesomiguelvarioscuatrotienesgruposseráneuropamediosfrenteacercademásofertacochesmodeloitalialetrasalgúncompracualesexistecuerposiendoprensallegarviajesdineromurciapodrápuestodiariopuebloquieremanuelpropiocrisisciertoseguromuertefuentecerrargrandeefectopartesmedidapropiaofrecetierrae-mailvariasformasfuturoobjetoseguirriesgonormasmismosúnicocaminositiosrazóndebidopruebatoledoteníajesúsesperococinaorigentiendacientocádizhablarseríalatinafuerzaestiloguerraentraréxitolópezagendavídeoevitarpaginametrosjavierpadresfácilcabezaáreassalidaenvíojapónabusosbienestextosllevarpuedanfuertecomúnclaseshumanotenidobilbaounidadestáseditarcreadoдлÑчтокакилиÑтовÑеегопритакещеужеКакбезбылониВÑеподЭтотомчемнетлетразонагдемнеДлÑПринаÑнихтемктогодвоттамСШÐмаÑЧтоваÑвамемуТакдванамÑтиÑтуВамтехпротутнадднÑВоттринейВаÑнимÑамтотрубОнимирнееОООлицÑтаОнанемдоммойдвеоноÑудकेहैकीसेकाकोऔरपरनेà¤à¤•à¤•à¤¿à¤­à¥€à¤‡à¤¸à¤•à¤°à¤¤à¥‹à¤¹à¥‹à¤†à¤ªà¤¹à¥€à¤¯à¤¹à¤¯à¤¾à¤¤à¤•à¤¥à¤¾jagranआजजोअबदोगईजागà¤à¤¹à¤®à¤‡à¤¨à¤µà¤¹à¤¯à¥‡à¤¥à¥‡à¤¥à¥€à¤˜à¤°à¤œà¤¬à¤¦à¥€à¤•à¤ˆà¤œà¥€à¤µà¥‡à¤¨à¤ˆà¤¨à¤à¤¹à¤°à¤‰à¤¸à¤®à¥‡à¤•à¤®à¤µà¥‹à¤²à¥‡à¤¸à¤¬à¤®à¤ˆà¤¦à¥‡à¤“रआमबसभरबनचलमनआगसीलीعلىإلىهذاآخرعددالىهذهصورغيركانولابينعرضذلكهنايومقالعليانالكنحتىقبلوحةاخرÙقطعبدركنإذاكمااحدإلاÙيهبعضكيÙبحثومنوهوأناجدالهاسلمعندليسعبرصلىمنذبهاأنهمثلكنتالاحيثمصرشرححولوÙياذالكلمرةانتالÙأبوخاصأنتانهاليعضووقدابنخيربنتلكمشاءوهيابوقصصومارقمأحدنحنعدمرأياحةكتبدونيجبمنهتحتجهةسنةيتمكرةغزةنÙسبيتللهلناتلكقلبلماعنهأولشيءنورأماÙيكبكلذاترتببأنهمسانكبيعÙقدحسنلهمشعرأهلشهرقطرطلبprofileservicedefaulthimselfdetailscontentsupportstartedmessagesuccessfashioncountryaccountcreatedstoriesresultsrunningprocesswritingobjectsvisiblewelcomearticleunknownnetworkcompanydynamicbrowserprivacyproblemServicerespectdisplayrequestreservewebsitehistoryfriendsoptionsworkingversionmillionchannelwindow.addressvisitedweathercorrectproductedirectforwardyou canremovedsubjectcontrolarchivecurrentreadinglibrarylimitedmanagerfurthersummarymachineminutesprivatecontextprogramsocietynumberswrittenenabledtriggersourcesloadingelementpartnerfinallyperfectmeaningsystemskeepingculture",journalprojectsurfaces"expiresreviewsbalanceEnglishContentthroughPlease opinioncontactaverageprimaryvillageSpanishgallerydeclinemeetingmissionpopularqualitymeasuregeneralspeciessessionsectionwriterscounterinitialreportsfiguresmembersholdingdisputeearlierexpressdigitalpictureAnothermarriedtrafficleadingchangedcentralvictoryimages/reasonsstudiesfeaturelistingmust beschoolsVersionusuallyepisodeplayinggrowingobviousoverlaypresentactions</ul> +wrapperalreadycertainrealitystorageanotherdesktopofferedpatternunusualDigitalcapitalWebsitefailureconnectreducedAndroiddecadesregular & animalsreleaseAutomatgettingmethodsnothingPopularcaptionletterscapturesciencelicensechangesEngland=1&History = new CentralupdatedSpecialNetworkrequirecommentwarningCollegetoolbarremainsbecauseelectedDeutschfinanceworkersquicklybetweenexactlysettingdiseaseSocietyweaponsexhibit<!--Controlclassescoveredoutlineattacksdevices(windowpurposetitle="Mobile killingshowingItaliandroppedheavilyeffects-1']); +confirmCurrentadvancesharingopeningdrawingbillionorderedGermanyrelated</form>includewhetherdefinedSciencecatalogArticlebuttonslargestuniformjourneysidebarChicagoholidayGeneralpassage,"animatefeelingarrivedpassingnaturalroughly. + +The but notdensityBritainChineselack oftributeIreland" data-factorsreceivethat isLibraryhusbandin factaffairsCharlesradicalbroughtfindinglanding:lang="return leadersplannedpremiumpackageAmericaEdition]"Messageneed tovalue="complexlookingstationbelievesmaller-mobilerecordswant tokind ofFirefoxyou aresimilarstudiedmaximumheadingrapidlyclimatekingdomemergedamountsfoundedpioneerformuladynastyhow to SupportrevenueeconomyResultsbrothersoldierlargelycalling."AccountEdward segmentRobert effortsPacificlearnedup withheight:we haveAngelesnations_searchappliedacquiremassivegranted: falsetreatedbiggestbenefitdrivingStudiesminimumperhapsmorningsellingis usedreversevariant role="missingachievepromotestudentsomeoneextremerestorebottom:evolvedall thesitemapenglishway to AugustsymbolsCompanymattersmusicalagainstserving})(); +paymenttroubleconceptcompareparentsplayersregionsmonitor ''The winningexploreadaptedGalleryproduceabilityenhancecareers). The collectSearch ancientexistedfooter handlerprintedconsoleEasternexportswindowsChannelillegalneutralsuggest_headersigning.html">settledwesterncausing-webkitclaimedJusticechaptervictimsThomas mozillapromisepartieseditionoutside:false,hundredOlympic_buttonauthorsreachedchronicdemandssecondsprotectadoptedprepareneithergreatlygreateroverallimprovecommandspecialsearch.worshipfundingthoughthighestinsteadutilityquarterCulturetestingclearlyexposedBrowserliberal} catchProjectexamplehide();FloridaanswersallowedEmperordefenseseriousfreedomSeveral-buttonFurtherout of != nulltrainedDenmarkvoid(0)/all.jspreventRequestStephen + +When observe</h2> +Modern provide" alt="borders. + +For + +Many artistspoweredperformfictiontype ofmedicalticketsopposedCouncilwitnessjusticeGeorge Belgium...</a>twitternotablywaitingwarfare Other rankingphrasesmentionsurvivescholar</p> + Countryignoredloss ofjust asGeorgiastrange<head><stopped1']); +islandsnotableborder:list ofcarried100,000</h3> + severalbecomesselect wedding00.htmlmonarchoff theteacherhighly biologylife ofor evenrise of»plusonehunting(thoughDouglasjoiningcirclesFor theAncientVietnamvehiclesuch ascrystalvalue =Windowsenjoyeda smallassumed<a id="foreign All rihow theDisplayretiredhoweverhidden;battlesseekingcabinetwas notlook atconductget theJanuaryhappensturninga:hoverOnline French lackingtypicalextractenemieseven ifgeneratdecidedare not/searchbeliefs-image:locatedstatic.login">convertviolententeredfirst">circuitFinlandchemistshe was10px;">as suchdivided</span>will beline ofa greatmystery/index.fallingdue to railwaycollegemonsterdescentit withnuclearJewish protestBritishflowerspredictreformsbutton who waslectureinstantsuicidegenericperiodsmarketsSocial fishingcombinegraphicwinners<br /><by the NaturalPrivacycookiesoutcomeresolveSwedishbrieflyPersianso muchCenturydepictscolumnshousingscriptsnext tobearingmappingrevisedjQuery(-width:title">tooltipSectiondesignsTurkishyounger.match(})(); + +burningoperatedegreessource=Richardcloselyplasticentries</tr> +color:#ul id="possessrollingphysicsfailingexecutecontestlink toDefault<br /> +: true,chartertourismclassicproceedexplain</h1> +online.?xml vehelpingdiamonduse theairlineend -->).attr(readershosting#ffffffrealizeVincentsignals src="/ProductdespitediversetellingPublic held inJoseph theatreaffects<style>a largedoesn'tlater, ElementfaviconcreatorHungaryAirportsee theso thatMichaelSystemsPrograms, and width=e"tradingleft"> +personsGolden Affairsgrammarformingdestroyidea ofcase ofoldest this is.src = cartoonregistrCommonsMuslimsWhat isin manymarkingrevealsIndeed,equally/show_aoutdoorescape(Austriageneticsystem,In the sittingHe alsoIslandsAcademy + <!--Daniel bindingblock">imposedutilizeAbraham(except{width:putting).html(|| []; +DATA[ *kitchenmountedactual dialectmainly _blank'installexpertsif(typeIt also© ">Termsborn inOptionseasterntalkingconcerngained ongoingjustifycriticsfactoryits ownassaultinvitedlastinghis ownhref="/" rel="developconcertdiagramdollarsclusterphp?id=alcohol);})();using a><span>vesselsrevivalAddressamateurandroidallegedillnesswalkingcentersqualifymatchesunifiedextinctDefensedied in + <!-- customslinkingLittle Book ofeveningmin.js?are thekontakttoday's.html" target=wearingAll Rig; +})();raising Also, crucialabout">declare--> +<scfirefoxas muchappliesindex, s, but type = + +<!--towardsRecordsPrivateForeignPremierchoicesVirtualreturnsCommentPoweredinline;povertychamberLiving volumesAnthonylogin" RelatedEconomyreachescuttinggravitylife inChapter-shadowNotable</td> + returnstadiumwidgetsvaryingtravelsheld bywho arework infacultyangularwho hadairporttown of + +Some 'click'chargeskeywordit willcity of(this);Andrew unique checkedor more300px; return;rsion="pluginswithin herselfStationFederalventurepublishsent totensionactresscome tofingersDuke ofpeople,exploitwhat isharmonya major":"httpin his menu"> +monthlyofficercouncilgainingeven inSummarydate ofloyaltyfitnessand wasemperorsupremeSecond hearingRussianlongestAlbertalateralset of small">.appenddo withfederalbank ofbeneathDespiteCapitalgrounds), and percentit fromclosingcontainInsteadfifteenas well.yahoo.respondfighterobscurereflectorganic= Math.editingonline paddinga wholeonerroryear ofend of barrierwhen itheader home ofresumedrenamedstrong>heatingretainscloudfrway of March 1knowingin partBetweenlessonsclosestvirtuallinks">crossedEND -->famous awardedLicenseHealth fairly wealthyminimalAfricancompetelabel">singingfarmersBrasil)discussreplaceGregoryfont copursuedappearsmake uproundedboth ofblockedsaw theofficescoloursif(docuwhen heenforcepush(fuAugust UTF-8">Fantasyin mostinjuredUsuallyfarmingclosureobject defenceuse of Medical<body> +evidentbe usedkeyCodesixteenIslamic#000000entire widely active (typeofone cancolor =speakerextendsPhysicsterrain<tbody>funeralviewingmiddle cricketprophetshifteddoctorsRussell targetcompactalgebrasocial-bulk ofman and</td> + he left).val()false);logicalbankinghome tonaming Arizonacredits); +}); +founderin turnCollinsbefore But thechargedTitle">CaptainspelledgoddessTag -->Adding:but wasRecent patientback in=false&Lincolnwe knowCounterJudaismscript altered']); + has theunclearEvent',both innot all + +<!-- placinghard to centersort ofclientsstreetsBernardassertstend tofantasydown inharbourFreedomjewelry/about..searchlegendsis mademodern only ononly toimage" linear painterand notrarely acronymdelivershorter00&as manywidth="/* <![Ctitle =of the lowest picked escapeduses ofpeoples PublicMatthewtacticsdamagedway forlaws ofeasy to windowstrong simple}catch(seventhinfoboxwent topaintedcitizenI don'tretreat. Some ww."); +bombingmailto:made in. Many carries||{};wiwork ofsynonymdefeatsfavoredopticalpageTraunless sendingleft"><comScorAll thejQuery.touristClassicfalse" Wilhelmsuburbsgenuinebishops.split(global followsbody ofnominalContactsecularleft tochiefly-hidden-banner</li> + +. When in bothdismissExplorealways via thespañolwelfareruling arrangecaptainhis sonrule ofhe tookitself,=0&(calledsamplesto makecom/pagMartin Kennedyacceptsfull ofhandledBesides//--></able totargetsessencehim to its by common.mineralto takeways tos.org/ladvisedpenaltysimple:if theyLettersa shortHerbertstrikes groups.lengthflightsoverlapslowly lesser social </p> + it intoranked rate oful> + attemptpair ofmake itKontaktAntoniohaving ratings activestreamstrapped").css(hostilelead tolittle groups,Picture--> + + rows=" objectinverse<footerCustomV><\/scrsolvingChamberslaverywoundedwhereas!= 'undfor allpartly -right:Arabianbacked centuryunit ofmobile-Europe,is homerisk ofdesiredClintoncost ofage of become none ofp"Middle ead')[0Criticsstudios>©group">assemblmaking pressedwidget.ps:" ? rebuiltby someFormer editorsdelayedCanonichad thepushingclass="but arepartialBabylonbottom carrierCommandits useAs withcoursesa thirddenotesalso inHouston20px;">accuseddouble goal ofFamous ).bind(priests Onlinein Julyst + "gconsultdecimalhelpfulrevivedis veryr'+'iptlosing femalesis alsostringsdays ofarrivalfuture <objectforcingString(" /> + here isencoded. The balloondone by/commonbgcolorlaw of Indianaavoidedbut the2px 3pxjquery.after apolicy.men andfooter-= true;for usescreen.Indian image =family,http://  driverseternalsame asnoticedviewers})(); + is moreseasonsformer the newis justconsent Searchwas thewhy theshippedbr><br>width: height=made ofcuisineis thata very Admiral fixed;normal MissionPress, ontariocharsettry to invaded="true"spacingis mosta more totallyfall of}); + immensetime inset outsatisfyto finddown tolot of Playersin Junequantumnot thetime todistantFinnishsrc = (single help ofGerman law andlabeledforestscookingspace">header-well asStanleybridges/globalCroatia About [0]; + it, andgroupedbeing a){throwhe madelighterethicalFFFFFF"bottom"like a employslive inas seenprintermost ofub-linkrejectsand useimage">succeedfeedingNuclearinformato helpWomen'sNeitherMexicanprotein<table by manyhealthylawsuitdevised.push({sellerssimply Through.cookie Image(older">us.js"> Since universlarger open to!-- endlies in']); + marketwho is ("DOMComanagedone fortypeof Kingdomprofitsproposeto showcenter;made itdressedwere inmixtureprecisearisingsrc = 'make a securedBaptistvoting + var March 2grew upClimate.removeskilledway the</head>face ofacting right">to workreduceshas haderectedshow();action=book ofan area== "htt<header +<html>conformfacing cookie.rely onhosted .customhe wentbut forspread Family a meansout theforums.footage">MobilClements" id="as highintense--><!--female is seenimpliedset thea stateand hisfastestbesidesbutton_bounded"><img Infoboxevents,a youngand areNative cheaperTimeoutand hasengineswon the(mostlyright: find a -bottomPrince area ofmore ofsearch_nature,legallyperiod,land ofor withinducedprovingmissilelocallyAgainstthe wayk"px;"> +pushed abandonnumeralCertainIn thismore inor somename isand, incrownedISBN 0-createsOctobermay notcenter late inDefenceenactedwish tobroadlycoolingonload=it. TherecoverMembersheight assumes<html> +people.in one =windowfooter_a good reklamaothers,to this_cookiepanel">London,definescrushedbaptismcoastalstatus title" move tolost inbetter impliesrivalryservers SystemPerhapses and contendflowinglasted rise inGenesisview ofrising seem tobut in backinghe willgiven agiving cities.flow of Later all butHighwayonly bysign ofhe doesdiffersbattery&lasinglesthreatsintegertake onrefusedcalled =US&See thenativesby thissystem.head of:hover,lesbiansurnameand allcommon/header__paramsHarvard/pixel.removalso longrole ofjointlyskyscraUnicodebr /> +AtlantanucleusCounty,purely count">easily build aonclicka givenpointerh"events else { +ditionsnow the, with man whoorg/Webone andcavalryHe diedseattle00,000 {windowhave toif(windand itssolely m"renewedDetroitamongsteither them inSenatorUs</a><King ofFrancis-produche usedart andhim andused byscoringat hometo haverelatesibilityfactionBuffalolink"><what hefree toCity ofcome insectorscountedone daynervoussquare };if(goin whatimg" alis onlysearch/tuesdaylooselySolomonsexual - <a hrmedium"DO NOT France,with a war andsecond take a > + + +market.highwaydone inctivity"last">obligedrise to"undefimade to Early praisedin its for hisathleteJupiterYahoo! termed so manyreally s. The a woman?value=direct right" bicycleacing="day andstatingRather,higher Office are nowtimes, when a pay foron this-link">;borderaround annual the Newput the.com" takin toa brief(in thegroups.; widthenzymessimple in late{returntherapya pointbanninginks"> +();" rea place\u003Caabout atr> + ccount gives a<SCRIPTRailwaythemes/toolboxById("xhumans,watchesin some if (wicoming formats Under but hashanded made bythan infear ofdenoted/iframeleft involtagein eacha"base ofIn manyundergoregimesaction </p> +<ustomVa;></importsor thatmostly &re size="</a></ha classpassiveHost = WhetherfertileVarious=[];(fucameras/></td>acts asIn some> + +<!organis <br />Beijingcatalàdeutscheuropeueuskaragaeilgesvenskaespañamensajeusuariotrabajoméxicopáginasiempresistemaoctubreduranteañadirempresamomentonuestroprimeratravésgraciasnuestraprocesoestadoscalidadpersonanúmeroacuerdomúsicamiembroofertasalgunospaísesejemploderechoademásprivadoagregarenlacesposiblehotelessevillaprimeroúltimoeventosarchivoculturamujeresentradaanuncioembargomercadograndesestudiomejoresfebrerodiseñoturismocódigoportadaespaciofamiliaantoniopermiteguardaralgunaspreciosalguiensentidovisitastítuloconocersegundoconsejofranciaminutossegundatenemosefectosmálagasesiónrevistagranadacompraringresogarcíaacciónecuadorquienesinclusodeberámateriahombresmuestrapodríamañanaúltimaestamosoficialtambienningúnsaludospodemosmejorarpositionbusinesshomepagesecuritylanguagestandardcampaignfeaturescategoryexternalchildrenreservedresearchexchangefavoritetemplatemilitaryindustryservicesmaterialproductsz-index:commentssoftwarecompletecalendarplatformarticlesrequiredmovementquestionbuildingpoliticspossiblereligionphysicalfeedbackregisterpicturesdisabledprotocolaudiencesettingsactivityelementslearninganythingabstractprogressoverviewmagazineeconomictrainingpressurevarious <strong>propertyshoppingtogetheradvancedbehaviordownloadfeaturedfootballselectedLanguagedistanceremembertrackingpasswordmodifiedstudentsdirectlyfightingnortherndatabasefestivalbreakinglocationinternetdropdownpracticeevidencefunctionmarriageresponseproblemsnegativeprogramsanalysisreleasedbanner">purchasepoliciesregionalcreativeargumentbookmarkreferrerchemicaldivisioncallbackseparateprojectsconflicthardwareinterestdeliverymountainobtained= false;for(var acceptedcapacitycomputeridentityaircraftemployedproposeddomesticincludesprovidedhospitalverticalcollapseapproachpartnerslogo"><adaughterauthor" culturalfamilies/images/assemblypowerfulteachingfinisheddistrictcriticalcgi-bin/purposesrequireselectionbecomingprovidesacademicexerciseactuallymedicineconstantaccidentMagazinedocumentstartingbottom">observed: "extendedpreviousSoftwarecustomerdecisionstrengthdetailedslightlyplanningtextareacurrencyeveryonestraighttransferpositiveproducedheritageshippingabsolutereceivedrelevantbutton" violenceanywherebenefitslaunchedrecentlyalliancefollowedmultiplebulletinincludedoccurredinternal$(this).republic><tr><tdcongressrecordedultimatesolution<ul id="discoverHome</a>websitesnetworksalthoughentirelymemorialmessagescontinueactive">somewhatvictoriaWestern title="LocationcontractvisitorsDownloadwithout right"> +measureswidth = variableinvolvedvirginianormallyhappenedaccountsstandingnationalRegisterpreparedcontrolsaccuratebirthdaystrategyofficialgraphicscriminalpossiblyconsumerPersonalspeakingvalidateachieved.jpg" />machines</h2> + keywordsfriendlybrotherscombinedoriginalcomposedexpectedadequatepakistanfollow" valuable</label>relativebringingincreasegovernorplugins/List of Header">" name=" ("graduate</head> +commercemalaysiadirectormaintain;height:schedulechangingback to catholicpatternscolor: #greatestsuppliesreliable</ul> + <select citizensclothingwatching<li id="specificcarryingsentence<center>contrastthinkingcatch(e)southernMichael merchantcarouselpadding:interior.split("lizationOctober ){returnimproved--> + +coveragechairman.png" />subjectsRichard whateverprobablyrecoverybaseballjudgmentconnect..css" /> websitereporteddefault"/></a> +electricscotlandcreationquantity. ISBN 0did not instance-search-" lang="speakersComputercontainsarchivesministerreactiondiscountItalianocriteriastrongly: 'http:'script'coveringofferingappearedBritish identifyFacebooknumerousvehiclesconcernsAmericanhandlingdiv id="William provider_contentaccuracysection andersonflexibleCategorylawrence<script>layout="approved maximumheader"></table>Serviceshamiltoncurrent canadianchannels/themes//articleoptionalportugalvalue=""intervalwirelessentitledagenciesSearch" measuredthousandspending…new Date" size="pageNamemiddle" " /></a>hidden">sequencepersonaloverflowopinionsillinoislinks"> + <title>versionssaturdayterminalitempropengineersectionsdesignerproposal="false"Españolreleasessubmit" er"additionsymptomsorientedresourceright"><pleasurestationshistory.leaving border=contentscenter">. + +Some directedsuitablebulgaria.show();designedGeneral conceptsExampleswilliamsOriginal"><span>search">operatorrequestsa "allowingDocumentrevision. + +The yourselfContact michiganEnglish columbiapriorityprintingdrinkingfacilityreturnedContent officersRussian generate-8859-1"indicatefamiliar qualitymargin:0 contentviewportcontacts-title">portable.length eligibleinvolvesatlanticonload="default.suppliedpaymentsglossary + +After guidance</td><tdencodingmiddle">came to displaysscottishjonathanmajoritywidgets.clinicalthailandteachers<head> + affectedsupportspointer;toString</small>oklahomawill be investor0" alt="holidaysResourcelicensed (which . After considervisitingexplorerprimary search" android"quickly meetingsestimate;return ;color:# height=approval, " checked.min.js"magnetic></a></hforecast. While thursdaydvertiseéhasClassevaluateorderingexistingpatients Online coloradoOptions"campbell<!-- end</span><<br /> +_popups|sciences," quality Windows assignedheight: <b classle" value=" Companyexamples<iframe believespresentsmarshallpart of properly). + +The taxonomymuch of </span> +" data-srtuguêsscrollTo project<head> +attorneyemphasissponsorsfancyboxworld's wildlifechecked=sessionsprogrammpx;font- Projectjournalsbelievedvacationthompsonlightingand the special border=0checking</tbody><button Completeclearfix +<head> +article <sectionfindingsrole in popular Octoberwebsite exposureused to changesoperatedclickingenteringcommandsinformed numbers </div>creatingonSubmitmarylandcollegesanalyticlistingscontact.loggedInadvisorysiblingscontent"s")s. This packagescheckboxsuggestspregnanttomorrowspacing=icon.pngjapanesecodebasebutton">gamblingsuch as , while </span> missourisportingtop:1px .</span>tensionswidth="2lazyloadnovemberused in height="cript"> + </<tr><td height:2/productcountry include footer" <!-- title"></jquery.</form> +(简体)(ç¹é«”)hrvatskiitalianoromânătürkçeاردوtambiénnoticiasmensajespersonasderechosnacionalserviciocontactousuariosprogramagobiernoempresasanunciosvalenciacolombiadespuésdeportesproyectoproductopúbliconosotroshistoriapresentemillonesmediantepreguntaanteriorrecursosproblemasantiagonuestrosopiniónimprimirmientrasaméricavendedorsociedadrespectorealizarregistropalabrasinterésentoncesespecialmiembrosrealidadcórdobazaragozapáginassocialesbloqueargestiónalquilersistemascienciascompletoversióncompletaestudiospúblicaobjetivoalicantebuscadorcantidadentradasaccionesarchivossuperiormayoríaalemaniafunciónúltimoshaciendoaquellosediciónfernandoambientefacebooknuestrasclientesprocesosbastantepresentareportarcongresopublicarcomerciocontratojóvenesdistritotécnicaconjuntoenergíatrabajarasturiasrecienteutilizarboletínsalvadorcorrectatrabajosprimerosnegocioslibertaddetallespantallapróximoalmeríaanimalesquiénescorazónsecciónbuscandoopcionesexteriorconceptotodavíagaleríaescribirmedicinalicenciaconsultaaspectoscríticadólaresjusticiadeberánperíodonecesitamantenerpequeñorecibidatribunaltenerifecancióncanariasdescargadiversosmallorcarequieretécnicodeberíaviviendafinanzasadelantefuncionaconsejosdifícilciudadesantiguasavanzadatérminounidadessánchezcampañasoftonicrevistascontienesectoresmomentosfacultadcréditodiversassupuestofactoressegundospequeñaгодаеÑлиеÑтьбылобытьÑтомЕÑлитогоменÑвÑехÑтойдажебылигодуденьÑтотбылаÑебÑодинÑебенадоÑайтфотонегоÑвоиÑвойигрытожевÑемÑвоюлишьÑтихпокаднейдомамиралиботемухотÑдвухÑетилюдиделомиретебÑÑвоевидечегоÑтимÑчеттемыценыÑталведьтемеводытебевышенамитипатомуправлицаоднагодызнаюмогудругвÑейидеткиноодноделаделеÑрокиюнÑвеÑьЕÑтьразанашиاللهالتيجميعخاصةالذيعليهجديدالآنالردتحكمصÙحةكانتاللييكونشبكةÙيهابناتحواءأكثرخلالالحبدليلدروساضغطتكونهناكساحةناديالطبعليكشكرايمكنمنهاشركةرئيسنشيطماذاالÙنشبابتعبررحمةكاÙةيقولمركزكلمةأحمدقلبييعنيصورةطريقشاركجوالأخرىمعناابحثعروضبشكلمسجلبنانخالدكتابكليةبدونأيضايوجدÙريقكتبتأÙضلمطبخاكثرباركاÙضلاحلىنÙسهأيامردودأنهاديناالانمعرضتعلمداخلممكن���������������������� +  + ÿÿÿÿ��������ÿÿÿÿ������������������ÿÿ������ÿÿ����������������resourcescountriesquestionsequipmentcommunityavailablehighlightDTD/xhtmlmarketingknowledgesomethingcontainerdirectionsubscribeadvertisecharacter" value="</select>Australia" class="situationauthorityfollowingprimarilyoperationchallengedevelopedanonymousfunction functionscompaniesstructureagreement" title="potentialeducationargumentssecondarycopyrightlanguagesexclusivecondition</form> +statementattentionBiography} else { +solutionswhen the Analyticstemplatesdangeroussatellitedocumentspublisherimportantprototypeinfluence»</effectivegenerallytransformbeautifultransportorganizedpublishedprominentuntil thethumbnailNational .focus();over the migrationannouncedfooter"> +exceptionless thanexpensiveformationframeworkterritoryndicationcurrentlyclassNamecriticismtraditionelsewhereAlexanderappointedmaterialsbroadcastmentionedaffiliate</option>treatmentdifferent/default.Presidentonclick="biographyotherwisepermanentFrançaisHollywoodexpansionstandards</style> +reductionDecember preferredCambridgeopponentsBusiness confusion> +<title>presentedexplaineddoes not worldwideinterfacepositionsnewspaper</table> +mountainslike the essentialfinancialselectionaction="/abandonedEducationparseInt(stabilityunable to +relationsNote thatefficientperformedtwo yearsSince thethereforewrapper">alternateincreasedBattle ofperceivedtrying tonecessaryportrayedelectionsElizabethdiscoveryinsurances.length;legendaryGeographycandidatecorporatesometimesservices.inheritedCommunityreligiouslocationsCommitteebuildingsthe worldno longerbeginningreferencecannot befrequencytypicallyinto the relative;recordingpresidentinitiallytechniquethe otherit can beexistenceunderlinethis timetelephoneitemscopepracticesadvantage);return For otherprovidingdemocracyboth the extensivesufferingsupportedcomputers functionpracticalsaid thatit may beEnglish +suspectedmargin: 0spiritual + +microsoftgraduallydiscussedhe becameexecutivejquery.jshouseholdconfirmedpurchasedliterallydestroyedup to thevariationremainingit is notcenturiesJapanese among thecompletedalgorithminterestsrebellionundefinedencourageresizableinvolvingsensitiveuniversalprovision(althoughfeaturingconducted), which continued-header">February numerous overflow:componentfragmentsexcellentcolspan="technicalnear the Advanced source ofexpressedHong Kong Facebookmultiple mechanismelevationoffensive + sponsoreddocument.or "there arethose whomovementsprocessesdifficultsubmittedrecommendconvincedpromoting" width=".replace(classicalcoalitionhis firstdecisionsassistantindicatedevolution-wrapper"enough toalong thedelivered--> + + +
Archbishop class="nobeing usedapproachesprivilegesnoscript> +results inmay be theEaster eggmechanismsreasonablePopulationCollectionselected">noscript> /index.phparrival of-jssdk'));managed toincompletecasualtiescompletionChristiansSeptember arithmeticproceduresmight haveProductionit appearsPhilosophyfriendshipleading togiving thetoward theguaranteeddocumentedcolor:#000video gamecommissionreflectingchange theassociatedsans-serifonkeypress; padding:He was theunderlyingtypically , and the srcElementsuccessivesince the should be networkingaccountinguse of thelower thanshows that + complaintscontinuousquantitiesastronomerhe did notdue to itsapplied toan averageefforts tothe futureattempt toTherefore,capabilityRepublicanwas formedElectronickilometerschallengespublishingthe formerindigenousdirectionssubsidiaryconspiracydetails ofand in theaffordablesubstancesreason forconventionitemtype="absolutelysupposedlyremained aattractivetravellingseparatelyfocuses onelementaryapplicablefound thatstylesheetmanuscriptstands for no-repeat(sometimesCommercialin Americaundertakenquarter ofan examplepersonallyindex.php? +percentagebest-knowncreating a" dir="ltrLieutenant +
is said tostructuralreferendummost oftena separate-> +
implementedcan be seenthere was ademonstratecontainer">connectionsthe Britishwas written!important;px; margin-followed byability to complicatedduring the immigrationalso called

as follows:merged withthrough thecommercial pointed outopportunityview of therequirementdivision ofprogramminghe receivedsetInterval">maintainingChristopherMuch of thewritings of" height="2size of theversion of mixture of between theExamples ofeducationalcompetitive onsubmit="director ofdistinctive/DTD XHTML relating totendency toprovince ofwhich woulddespite thescientific legislature.innerHTML allegationsAgriculturewas used inapproach tointelligentyears later,sans-serifdeterminingPerformanceappearances, which is foundationsabbreviatedhigher thans from the individual composed ofsupposed toclaims thatattributionfont-size:1elements ofHistorical his brotherat the timeanniversarygoverned byrelated to ultimately innovationsit is stillcan only bedefinitionstoGMTStringA number ofimg class="Eventually,was changedoccurred inneighboringdistinguishwhen he wasintroducingterrestrialMany of theargues thatan Americanconquest ofwidespread were killedscreen and In order toexpected todescendantsare locatedlegislativegenerations backgroundmost peopleyears afterthere is nothe highestfrequently they do notargued thatshowed thatpredominanttheologicalby the timeconsideringshort-livedcan be usedvery littleone of the had alreadyinterpretedcommunicatefeatures ofgovernment,entered the" height="3Independentpopulationslarge-scale. Although used in thedestructionpossibilitystarting intwo or moreexpressionssubordinatelarger thanhistory and +Continentaleliminatingwill not bepractice ofin front ofsite of theensure thatto create amississippipotentiallyoutstandingbetter thanwhat is nowsituated inmeta name="TraditionalsuggestionsTranslationthe form ofatmosphericideologicalenterprisescalculatingeast of theremnants ofpluginspage/index.php?remained intransformedHe was alsowas alreadystatisticalin favor ofMinistry ofmovement offormulationis required +question ofwas electedto become abecause of some peopleinspired bysuccessful a time whenmore commonamongst thean officialwidth:100%;technology,was adoptedto keep thesettlementslive birthsindex.html"Connecticutassigned to&times;account foralign=rightthe companyalways beenreturned toinvolvementBecause thethis period" name="q" confined toa result ofvalue="" />is actuallyEnvironment + +Conversely,> +
this is notthe presentif they areand finallya matter of +
+ +faster thanmajority ofafter whichcomparativeto maintainimprove theawarded theer" class="frameborderrestorationin the sameanalysis oftheir firstDuring the continentalsequence offunction(){font-size: work on the +adopted theproperty ofdirected byeffectivelywas broughtchildren ofProgramminglonger thanmanuscriptswar againstby means ofand most ofsimilar to proprietaryoriginatingprestigiousgrammaticalexperience.to make theIt was alsois found incompetitorsin the U.S.replace thebrought thecalculationfall of thethe generalpracticallyin honor ofreleased inresidentialand some ofking of thereaction to1st Earl ofculture andprincipally + they can beback to thesome of hisexposure toare similarform of theaddFavoritecitizenshippart in thepeople within practiceto continue&minus;approved by the first allowed theand for thefunctioningplaying thesolution toheight="0" in his bookmore than afollows thecreated thepresence in nationalistthe idea ofa characterwere forced class="btndays of thefeatured inshowing theinterest inin place ofturn of thethe head ofLord of thepoliticallyhas its ownEducationalapproval ofsome of theeach other,behavior ofand becauseand anotherappeared onrecorded inblack"may includethe world'scan lead torefers to aborder="0" government winning theresulted in while the Washington,the subjectcity in the>

+ reflect theto completebecame moreradioactiverejected bywithout anyhis father,which couldcopy of theto indicatea politicalaccounts ofconstitutesworked witherof his lifeaccompaniedclientWidthprevent theLegislativedifferentlytogether inhas severalfor anothertext of thefounded thee with the is used forchanged theusually theplace wherewhereas the> The currentthe site ofsubstantialexperience,in the Westthey shouldslovenÄinacomentariosuniversidadcondicionesactividadesexperienciatecnologíaproducciónpuntuaciónaplicacióncontraseñacategoríasregistrarseprofesionaltratamientoregístratesecretaríaprincipalesprotecciónimportantesimportanciaposibilidadinteresantecrecimientonecesidadessuscribirseasociacióndisponiblesevaluaciónestudiantesresponsableresoluciónguadalajararegistradosoportunidadcomercialesfotografíaautoridadesingenieríatelevisióncompetenciaoperacionesestablecidosimplementeactualmentenavegaciónconformidadline-height:font-family:" : "http://applicationslink" href="specifically// +/index.html"window.open( !important;application/independence//www.googleorganizationautocompleterequirementsconservative
most notably/>
notification'undefined')Furthermore,believe thatinnerHTML = prior to thedramaticallyreferring tonegotiationsheadquartersSouth AfricaunsuccessfulPennsylvaniaAs a result, +
English (US)appendChild(transmissions. However, intelligence" tabindex="float:right;Commonwealthranging fromin which theat least onereproductionencyclopedia;font-size:1jurisdictionat that time">compensationchampionshipmedia="all" violation ofreference toreturn true;Strict//EN" transactionsinterventionverificationInformation difficultiesChampionshipcapabilities} + +Christianityfor example,Professionalrestrictionssuggest thatwas released(such as theremoveClass(unemploymentthe Americanstructure of/index.html published inspan class=""> + +f (document.border: 1px {font-size:1treatment of0" height="1modificationIndependencedivided intogreater thanachievementsestablishingJavaScript" neverthelesssignificanceBroadcasting> container"> +such as the influence ofa particularsrc='http://navigation" half of the substantial  advantage ofdiscovery offundamental metropolitanthe opposite" xml:lang="deliberatelyalign=centerevolution ofpreservationimprovementsbeginning inJesus ChristPublicationsdisagreementtext-align:r, function()similaritiesbody>is currentlyalphabeticalis sometimestype="image/many of the flow:hidden;available indescribe theexistence ofall over thethe Internet