From 76772b4ed707fa017747bfcb4e63a8ffdb3fc18f Mon Sep 17 00:00:00 2001 From: Aleksander Guryanov Date: Fri, 1 Feb 2013 23:37:56 +0700 Subject: [PATCH 001/326] Test for recv (partial) --- tests/runner.py | 27 ++++++++ tests/websockets_partial.c | 124 +++++++++++++++++++++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 tests/websockets_partial.c diff --git a/tests/runner.py b/tests/runner.py index 06b74caa3d409..2c2a291ceb539 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10575,6 +10575,33 @@ def test_websockets(self): finally: self.clean_pids() + def test_websockets_partial(self): + def partial(q): + import socket + + q.put(None) # No sub-process to start + ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + ssock.bind(("127.0.0.1", 8990)) + ssock.listen(2) + while True: + csock, addr = ssock.accept() + print "Connection from %s" % repr(addr) + csock.send("\x09\x01\x02\x03\x04\x05\x06\x07\x08\x09") + csock.send("\x08\x01\x02\x03\x04\x05\x06\x07\x08") + csock.send("\x07\x01\x02\x03\x04\x05\x06\x07") + csock.send("\x06\x01\x02\x03\x04\x05\x06") + csock.send("\x05\x01\x02\x03\x04\x05") + csock.send("\x04\x01\x02\x03\x04") + csock.send("\x03\x01\x02\x03") + csock.send("\x02\x01\x02") + csock.send("\x01\x01") + + try: + with self.WebsockHarness(8990, partial): + self.btest('websockets_partial.c', expected='165') + finally: + self.clean_pids() + def make_relay_server(self, port1, port2): def relay_server(q): print >> sys.stderr, 'creating relay server on ports %d,%d' % (port1, port2) diff --git a/tests/websockets_partial.c b/tests/websockets_partial.c new file mode 100644 index 0000000000000..deacdb6b46a32 --- /dev/null +++ b/tests/websockets_partial.c @@ -0,0 +1,124 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if EMSCRIPTEN +#include +#endif + +int SocketFD; +int done = 0; +int sum = 0; + +void iter(void *arg) { + char buffer[1024]; + char packetLength; + int n; + int i; + + if (done) { + return; + } + + n = recv(SocketFD, buffer, 1, 0); + + if (n == -1) { + if (errno == EAGAIN || errno == EWOULDBLOCK) { + return; //try again + } + + fprintf(stderr, "unexcepted end of data"); + exit(EXIT_FAILURE); + } + + if (n != 1) { + fprintf(stderr, "should read 1 byte"); + exit(EXIT_FAILURE); + } + + packetLength = buffer[0]; + n = recv(SocketFD, buffer, packetLength, 0); + + if (n != packetLength) { + fprintf(stderr, "lost packet data, expected: %d readed: %d", packetLength, n); + exit(EXIT_FAILURE); + } + + for (i = 0; i < packetLength; ++i) { + if (buffer[i] != i+1) { + fprintf(stderr, "packet corrupted, expected: %d, actual: %d", i+1, buffer[i]); + exit(EXIT_FAILURE); + } + + sum += buffer[i]; + } + + if (packetLength == buffer[0]) { // \x01\x01 - end marker + shutdown(SocketFD, SHUT_RDWR); + close(SocketFD); + done = 1; + + #if EMSCRIPTEN + int result = sum; + REPORT_RESULT(); + #endif + } +} + +int main(void) +{ + struct sockaddr_in stSockAddr; + int Res; + SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); + + if (-1 == SocketFD) + { + perror("cannot create socket"); + exit(EXIT_FAILURE); + } + + memset(&stSockAddr, 0, sizeof(stSockAddr)); + + stSockAddr.sin_family = AF_INET; + stSockAddr.sin_port = htons( +#if EMSCRIPTEN + 8991 +#else + 8990 +#endif + ); + Res = inet_pton(AF_INET, "127.0.0.1", &stSockAddr.sin_addr); + + if (0 > Res) { + perror("error: first parameter is not a valid address family"); + close(SocketFD); + exit(EXIT_FAILURE); + } else if (0 == Res) { + perror("char string (second parameter does not contain valid ipaddress)"); + close(SocketFD); + exit(EXIT_FAILURE); + } + + if (-1 == connect(SocketFD, (struct sockaddr *)&stSockAddr, sizeof(stSockAddr))) { + perror("connect failed"); + close(SocketFD); + exit(EXIT_FAILURE); + + } + +#if EMSCRIPTEN + emscripten_set_main_loop(iter, 0, 0); +#else + while (!done) iter(NULL); +#endif + + return EXIT_SUCCESS; +} + From 24fe400832f5c734655ded971c9223913a5f0455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Fri, 1 Feb 2013 22:18:03 +0200 Subject: [PATCH 002/326] Fix test_llvmswitch to be valid C++11 code. Using an unsigned type would cause an error: case value evaluates to 4294967281, which cannot be narrowed to type 'int' [-Wc++11-narrowing] when compiled as C++11. --- tests/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index 06b74caa3d409..1b0852f4fd303 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -3498,7 +3498,7 @@ def test_llvmswitch(self): case 'b': case 'c': return p-1; - case 0xfffffff1: + case -15: return p+1; } return p; From c40babef1f7774dde1a7eaa16fddc59929539481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Fri, 1 Feb 2013 22:20:04 +0200 Subject: [PATCH 003/326] Add a unit test that checks that all platforms are building C++03 code by default. --- tests/runner.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index 1b0852f4fd303..a22256c3c14e0 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -3513,6 +3513,25 @@ def test_llvmswitch(self): ''' self.do_run(src, '*96,97,98,-14,-14,101*') + # By default, when user has not specified a -std flag, Emscripten should always build .cpp files using the C++03 standard, + # i.e. as if "-std=c++03" had been passed on the command line. On Linux with Clang 3.2 this is the case, but on Windows + # with Clang 3.2 -std=c++11 has been chosen as default, because of + # < jrose> clb: it's deliberate, with the idea that for people who don't care about the standard, they should be using the "best" thing we can offer on that platform + def test_cxx03(self): + src = ''' + #include + + #if __cplusplus != 199711L + #error By default, if no -std is specified, emscripten should be compiling with -std=c++03! + #endif + + int main( int argc, const char *argv[] ) { + printf("Hello world!\\n"); + return 0; + } + ''' + self.do_run(src, 'Hello world!') + def test_bigswitch(self): if Settings.RELOOP: return self.skip('TODO: switch in relooper, issue #781') From 9dd7e94ecd16a6b4200a276880f378c3e155c212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Fri, 1 Feb 2013 22:48:09 +0200 Subject: [PATCH 004/326] Compile with -std=c++03 consistently on all platforms. By default, Clang 3.2 inconsistently uses C++11 for Windows and C++03 for Linux if user did not specify -std= on the command line. Fixes other.test_embind and *.test_llvmswitch. Add unit tests that confirm that .cpp files are compiled with C++03 std by default. --- emcc | 14 +++++++++++++- tests/hello_cxx03.cpp | 10 ++++++++++ tests/runner.py | 10 ++++++++-- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 tests/hello_cxx03.cpp diff --git a/emcc b/emcc index 73f12cdad5686..f21feb1fab641 100755 --- a/emcc +++ b/emcc @@ -596,6 +596,10 @@ try: keep_debug = False bind = False jcache = False + if use_cxx: + default_cxx_std = '-std=c++03' # Enforce a consistent C++ standard when compiling .cpp files, if user does not specify one on the cmdline. + else: + default_cxx_std = '' # Compiling C code with .c files, don't enforce a default C++ std. def check_bad_eq(arg): assert '=' not in arg, 'Invalid parameter (do not use "=" with "--" options)' @@ -659,7 +663,11 @@ try: keep_debug = True elif newargs[i] == '--bind': bind = True - newargs[i] = '-std=c++11' # Force C++11 for embind code + newargs[i] = '' + if default_cxx_std: + default_cxx_std = '-std=c++11' # Force C++11 for embind code, but only if user has not explicitly overridden a standard. + elif newargs[i].startswith('-std='): + default_cxx_std = '' # User specified a standard to use, clear Emscripten from specifying it. elif newargs[i].startswith('--embed-file'): check_bad_eq(newargs[i]) embed_files.append(newargs[i+1]) @@ -717,6 +725,10 @@ try: absolute_warning_shown = True newargs = [ arg for arg in newargs if arg is not '' ] + # If user did not specify a default -std for C++ code, specify the emscripten default. + if default_cxx_std: + newargs = newargs + [default_cxx_std] + if llvm_opts is None: llvm_opts = LLVM_OPT_LEVEL[opt_level] if llvm_lto is None: llvm_lto = llvm_opts > 0 if closure is None: closure = 1 if opt_level >= 2 else 0 diff --git a/tests/hello_cxx03.cpp b/tests/hello_cxx03.cpp new file mode 100644 index 0000000000000..d6cc766a978a9 --- /dev/null +++ b/tests/hello_cxx03.cpp @@ -0,0 +1,10 @@ +#include + +#if __cplusplus != 199711L +#error By default, if no -std is specified, emscripten should be compiling with -std=c++03! +#endif + +int main( int argc, const char *argv[] ) { + printf("Hello world!\\n"); + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index a22256c3c14e0..43a14e7f7b9d0 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -238,7 +238,7 @@ def build(self, src, dirname, filename, output_processor=None, main_file=None, a os.remove(f + '.o') except: pass - args = [Building.COMPILER, '-emit-llvm'] + COMPILER_OPTS + Building.COMPILER_TEST_OPTS + \ + args = [Building.COMPILER, '-emit-llvm', '-std=c++03'] + COMPILER_OPTS + Building.COMPILER_TEST_OPTS + \ ['-I', dirname, '-I', os.path.join(dirname, 'include')] + \ map(lambda include: '-I' + include, includes) + \ ['-c', f, '-o', f + '.o'] @@ -3517,7 +3517,7 @@ def test_llvmswitch(self): # i.e. as if "-std=c++03" had been passed on the command line. On Linux with Clang 3.2 this is the case, but on Windows # with Clang 3.2 -std=c++11 has been chosen as default, because of # < jrose> clb: it's deliberate, with the idea that for people who don't care about the standard, they should be using the "best" thing we can offer on that platform - def test_cxx03(self): + def test_cxx03_do_run(self): src = ''' #include @@ -8406,6 +8406,12 @@ def test_failure_error_code(self): assert process.returncode is not 0, 'Trying to compile a nonexisting file should return with a nonzero error code!' assert os.path.exists('this_output_file_should_never_exist.js') == False, 'Emcc should not produce an output file when build fails!' + def test_cxx03(self): + for compiler in [EMCC, EMXX]: + process = Popen([PYTHON, compiler, path_from_root('tests', 'hello_cxx03.cpp')], stdout=PIPE, stderr=PIPE) + process.communicate() + assert process.returncode is 0, 'By default, emscripten should build using -std=c++03!' + def test_Os(self): for opt in ['s', '0']: output = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world.c'), '-O' + opt], stdout=PIPE, stderr=PIPE).communicate() From ff8c8fd1ba0ab0d49029b09f0c083cf47554da56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Fri, 1 Feb 2013 23:13:17 +0200 Subject: [PATCH 005/326] Add a unit test that checks that user is able to specify a custom -std= flag on the command line. --- tests/hello_cxx11.cpp | 10 ++++++++++ tests/runner.py | 6 ++++++ 2 files changed, 16 insertions(+) create mode 100644 tests/hello_cxx11.cpp diff --git a/tests/hello_cxx11.cpp b/tests/hello_cxx11.cpp new file mode 100644 index 0000000000000..cfce039a0dc49 --- /dev/null +++ b/tests/hello_cxx11.cpp @@ -0,0 +1,10 @@ +#include + +#if __cplusplus != 201103L +#error This file should be compiled with -std=c++11! +#endif + +int main( int argc, const char *argv[] ) { + printf("Hello world!\\n"); + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 43a14e7f7b9d0..c67b4f24c7966 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8412,6 +8412,12 @@ def test_cxx03(self): process.communicate() assert process.returncode is 0, 'By default, emscripten should build using -std=c++03!' + def test_cxx11(self): + for compiler in [EMCC, EMXX]: + process = Popen([PYTHON, compiler, '-std=c++11', path_from_root('tests', 'hello_cxx11.cpp')], stdout=PIPE, stderr=PIPE) + process.communicate() + assert process.returncode is 0, 'User should be able to specify custom -std= on the command line!' + def test_Os(self): for opt in ['s', '0']: output = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world.c'), '-O' + opt], stdout=PIPE, stderr=PIPE).communicate() From d779fe7e6ad05ef1a9ba70d3f160c4f87878d997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Sat, 2 Feb 2013 00:32:48 +0200 Subject: [PATCH 006/326] In test runner, don't pass -std=c++03 when building .c files. --- tests/runner.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index c67b4f24c7966..383254aab3b34 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -238,7 +238,10 @@ def build(self, src, dirname, filename, output_processor=None, main_file=None, a os.remove(f + '.o') except: pass - args = [Building.COMPILER, '-emit-llvm', '-std=c++03'] + COMPILER_OPTS + Building.COMPILER_TEST_OPTS + \ + compiler_flags = ['-emit-llvm'] + if not f.endswith('.c'): + compiler_flags = compiler_flags + ['-std=c++03'] + args = [Building.COMPILER] + compiler_flags + COMPILER_OPTS + Building.COMPILER_TEST_OPTS + \ ['-I', dirname, '-I', os.path.join(dirname, 'include')] + \ map(lambda include: '-I' + include, includes) + \ ['-c', f, '-o', f + '.o'] From db152b921d818b1e2f1ad2c4a17dc936a2e92c6b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Feb 2013 15:29:48 -0800 Subject: [PATCH 007/326] eliminate into labels --- .../eliminator/asm-eliminator-test-output.js | 8 ++ tools/eliminator/asm-eliminator-test.js | 13 +++- tools/eliminator/eliminator-test-output.js | 78 +++++++------------ tools/js-optimizer.js | 2 +- 4 files changed, 47 insertions(+), 54 deletions(-) diff --git a/tools/eliminator/asm-eliminator-test-output.js b/tools/eliminator/asm-eliminator-test-output.js index 3170bd9cd8900..4cf15c62d6de2 100644 --- a/tools/eliminator/asm-eliminator-test-output.js +++ b/tools/eliminator/asm-eliminator-test-output.js @@ -100,4 +100,12 @@ function exc($this) { ___cxa_call_unexpected($8$0); } } +function label() { + if (f()) { + g(); + } + L100 : if (h()) { + i(); + } +} diff --git a/tools/eliminator/asm-eliminator-test.js b/tools/eliminator/asm-eliminator-test.js index ce34a7a670dfa..d2c0507caa448 100644 --- a/tools/eliminator/asm-eliminator-test.js +++ b/tools/eliminator/asm-eliminator-test.js @@ -130,5 +130,16 @@ function exc($this) { ___cxa_call_unexpected($9); } } -// EMSCRIPTEN_GENERATED_FUNCTIONS: ["asm", "__Z11printResultPiS_j", "_segment_holding", "__ZN5identC2EiPKcPci", "_vec2Length", "exc"] +function label() { + var $1 = 0, $2 = 0; + $1 = f(); + if ($1) { + g(); + } + $2 = h(); + L100: if ($2) { + i(); + } +} +// EMSCRIPTEN_GENERATED_FUNCTIONS: ["asm", "__Z11printResultPiS_j", "_segment_holding", "__ZN5identC2EiPKcPci", "_vec2Length", "exc", "label"] diff --git a/tools/eliminator/eliminator-test-output.js b/tools/eliminator/eliminator-test-output.js index a005a0a53dd87..32b7ddcfe639a 100644 --- a/tools/eliminator/eliminator-test-output.js +++ b/tools/eliminator/eliminator-test-output.js @@ -242,9 +242,8 @@ function _inflate($strm, $flush) { STACKTOP += 4; var __label__; var $hbuf = __stackBase__; - var $cmp = ($strm | 0) == 0; $_$2 : do { - if ($cmp) { + if (($strm | 0) == 0) { var $retval_0 = -2; } else { var $0 = HEAPU32[($strm + 28 | 0) >> 2]; @@ -1129,9 +1128,8 @@ function _inflate($strm, $flush) { var $hold_23 = $hold_24 >>> 3; var $bits_23 = $bits_24 - 3 | 0; } - var $cmp850111 = $122 >>> 0 < 19; $_$131 : do { - if ($cmp850111) { + if ($122 >>> 0 < 19) { var $126 = $122; while (1) { var $126; @@ -2880,9 +2878,8 @@ function _inflate($strm, $flush) { } function _malloc($bytes) { var __label__; - var $1 = $bytes >>> 0 < 245; $_$2 : do { - if ($1) { + if ($bytes >>> 0 < 245) { if ($bytes >>> 0 < 11) { var $8 = 16; } else { @@ -3102,9 +3099,8 @@ function _malloc($bytes) { } } while (0); var $R_1_i; - var $232 = ($198 | 0) == 0; $_$62 : do { - if (!$232) { + if (!(($198 | 0) == 0)) { var $234 = $v_0_i + 28 | 0; var $236 = __gm_ + 304 + (HEAP32[$234 >> 2] << 2) | 0; do { @@ -3245,9 +3241,8 @@ function _malloc($bytes) { } while (0); var $idx_0_i; var $376 = HEAPU32[(__gm_ + 304 + ($idx_0_i << 2) | 0) >> 2]; - var $377 = ($376 | 0) == 0; $_$110 : do { - if ($377) { + if (($376 | 0) == 0) { var $v_2_i = 0; var $rsize_2_i = $346; var $t_1_i = 0; @@ -3329,9 +3324,8 @@ function _malloc($bytes) { var $t_2_ph_i = $t_1_i; } var $t_2_ph_i; - var $438 = ($t_2_ph_i | 0) == 0; $_$125 : do { - if ($438) { + if (($t_2_ph_i | 0) == 0) { var $rsize_3_lcssa_i = $rsize_2_i; var $v_3_lcssa_i = $v_2_i; } else { @@ -3442,9 +3436,8 @@ function _malloc($bytes) { } } while (0); var $R_1_i19; - var $499 = ($465 | 0) == 0; $_$151 : do { - if (!$499) { + if (!(($465 | 0) == 0)) { var $501 = $v_3_lcssa_i + 28 | 0; var $503 = __gm_ + 304 + (HEAP32[$501 >> 2] << 2) | 0; do { @@ -3496,9 +3489,8 @@ function _malloc($bytes) { } } } while (0); - var $557 = $rsize_3_lcssa_i >>> 0 < 16; $_$179 : do { - if ($557) { + if ($rsize_3_lcssa_i >>> 0 < 16) { var $559 = $rsize_3_lcssa_i + $342 | 0; HEAP32[($v_3_lcssa_i + 4 | 0) >> 2] = $559 | 3; var $563 = $456 + ($559 + 4 | 0) | 0; @@ -3669,13 +3661,11 @@ function _malloc($bytes) { } } } while (0); - var $765 = (HEAP32[(__gm_ + 440 | 0) >> 2] & 4 | 0) == 0; $_$234 : do { - if ($765) { + if ((HEAP32[(__gm_ + 440 | 0) >> 2] & 4 | 0) == 0) { var $767 = HEAP32[(__gm_ + 24 | 0) >> 2]; - var $768 = ($767 | 0) == 0; $_$236 : do { - if (!$768) { + if (!(($767 | 0) == 0)) { var $770 = $767; var $sp_0_i_i = __gm_ + 444 | 0; while (1) { @@ -3846,9 +3836,8 @@ function _malloc($bytes) { HEAP32[(__gm_ + 436 | 0) >> 2] = $871; } var $876 = HEAPU32[(__gm_ + 24 | 0) >> 2]; - var $877 = ($876 | 0) == 0; $_$275 : do { - if ($877) { + if (($876 | 0) == 0) { var $879 = HEAPU32[(__gm_ + 16 | 0) >> 2]; if (($879 | 0) == 0 | $tbase_243_i >>> 0 < $879 >>> 0) { HEAP32[(__gm_ + 16 | 0) >> 2] = $tbase_243_i; @@ -3970,9 +3959,8 @@ function _malloc($bytes) { var $998 = $997; var $999 = ($992 - ($tbase_243_i + $981 | 0) | 0) - $nb_0 | 0; HEAP32[($tbase_243_i + ($981 + 4 | 0) | 0) >> 2] = $nb_0 | 3; - var $1004 = ($993 | 0) == (HEAP32[(__gm_ + 24 | 0) >> 2] | 0); $_$314 : do { - if ($1004) { + if (($993 | 0) == (HEAP32[(__gm_ + 24 | 0) >> 2] | 0)) { var $1007 = HEAP32[(__gm_ + 12 | 0) >> 2] + $999 | 0; HEAP32[(__gm_ + 12 | 0) >> 2] = $1007; HEAP32[(__gm_ + 24 | 0) >> 2] = $998; @@ -3990,9 +3978,8 @@ function _malloc($bytes) { if (($1025 & 3 | 0) == 1) { var $1029 = $1025 & -8; var $1030 = $1025 >>> 3; - var $1031 = $1025 >>> 0 < 256; $_$322 : do { - if ($1031) { + if ($1025 >>> 0 < 256) { var $1035 = HEAPU32[($tbase_243_i + (($991 | 8) + $tsize_242_i | 0) | 0) >> 2]; var $1038 = HEAPU32[($tbase_243_i + (($tsize_242_i + 12 | 0) + $991 | 0) | 0) >> 2]; if (($1035 | 0) == ($1038 | 0)) { @@ -4327,9 +4314,8 @@ function _malloc($bytes) { HEAP32[(__gm_ + 452 | 0) >> 2] = $1337; var $1360 = $1336 + 28 | 0; HEAP32[$1360 >> 2] = 7; - var $1362 = ($1336 + 32 | 0) >>> 0 < $1322 >>> 0; $_$426 : do { - if ($1362) { + if (($1336 + 32 | 0) >>> 0 < $1322 >>> 0) { var $1363 = $1360; while (1) { var $1363; @@ -4507,9 +4493,8 @@ function _malloc($bytes) { } function _mallocNoU($bytes) { var __label__; - var $1 = $bytes >>> 0 < 245; $_$2 : do { - if ($1) { + if ($bytes >>> 0 < 245) { if ($bytes >>> 0 < 11) { var $8 = 16; } else { @@ -4729,9 +4714,8 @@ function _mallocNoU($bytes) { } } while (0); var $R_1_i; - var $232 = ($198 | 0) == 0; $_$62 : do { - if (!$232) { + if (!(($198 | 0) == 0)) { var $234 = $v_0_i + 28 | 0; var $236 = __gm_ + 304 + (HEAP32[$234 >> 2] << 2) | 0; do { @@ -4872,9 +4856,8 @@ function _mallocNoU($bytes) { } while (0); var $idx_0_i; var $376 = HEAP32[(__gm_ + 304 + ($idx_0_i << 2) | 0) >> 2]; - var $377 = ($376 | 0) == 0; $_$110 : do { - if ($377) { + if (($376 | 0) == 0) { var $v_2_i = 0; var $rsize_2_i = $346; var $t_1_i = 0; @@ -4956,9 +4939,8 @@ function _mallocNoU($bytes) { var $t_2_ph_i = $t_1_i; } var $t_2_ph_i; - var $438 = ($t_2_ph_i | 0) == 0; $_$125 : do { - if ($438) { + if (($t_2_ph_i | 0) == 0) { var $rsize_3_lcssa_i = $rsize_2_i; var $v_3_lcssa_i = $v_2_i; } else { @@ -5069,9 +5051,8 @@ function _mallocNoU($bytes) { } } while (0); var $R_1_i19; - var $499 = ($465 | 0) == 0; $_$151 : do { - if (!$499) { + if (!(($465 | 0) == 0)) { var $501 = $v_3_lcssa_i + 28 | 0; var $503 = __gm_ + 304 + (HEAP32[$501 >> 2] << 2) | 0; do { @@ -5123,9 +5104,8 @@ function _mallocNoU($bytes) { } } } while (0); - var $557 = $rsize_3_lcssa_i >>> 0 < 16; $_$179 : do { - if ($557) { + if ($rsize_3_lcssa_i >>> 0 < 16) { var $559 = $rsize_3_lcssa_i + $342 | 0; HEAP32[($v_3_lcssa_i + 4 | 0) >> 2] = $559 | 3; var $563 = $456 + ($559 + 4 | 0) | 0; @@ -5296,13 +5276,11 @@ function _mallocNoU($bytes) { } } } while (0); - var $765 = (HEAP32[(__gm_ + 440 | 0) >> 2] & 4 | 0) == 0; $_$234 : do { - if ($765) { + if ((HEAP32[(__gm_ + 440 | 0) >> 2] & 4 | 0) == 0) { var $767 = HEAP32[(__gm_ + 24 | 0) >> 2]; - var $768 = ($767 | 0) == 0; $_$236 : do { - if (!$768) { + if (!(($767 | 0) == 0)) { var $770 = $767; var $sp_0_i_i = __gm_ + 444 | 0; while (1) { @@ -5473,9 +5451,8 @@ function _mallocNoU($bytes) { HEAP32[(__gm_ + 436 | 0) >> 2] = $871; } var $876 = HEAP32[(__gm_ + 24 | 0) >> 2]; - var $877 = ($876 | 0) == 0; $_$275 : do { - if ($877) { + if (($876 | 0) == 0) { var $879 = HEAP32[(__gm_ + 16 | 0) >> 2]; if (($879 | 0) == 0 | $tbase_243_i >>> 0 < $879 >>> 0) { HEAP32[(__gm_ + 16 | 0) >> 2] = $tbase_243_i; @@ -5597,9 +5574,8 @@ function _mallocNoU($bytes) { var $998 = $997; var $999 = ($992 - ($tbase_243_i + $981 | 0) | 0) - $nb_0 | 0; HEAP32[($tbase_243_i + ($981 + 4 | 0) | 0) >> 2] = $nb_0 | 3; - var $1004 = ($993 | 0) == (HEAP32[(__gm_ + 24 | 0) >> 2] | 0); $_$314 : do { - if ($1004) { + if (($993 | 0) == (HEAP32[(__gm_ + 24 | 0) >> 2] | 0)) { var $1007 = HEAP32[(__gm_ + 12 | 0) >> 2] + $999 | 0; HEAP32[(__gm_ + 12 | 0) >> 2] = $1007; HEAP32[(__gm_ + 24 | 0) >> 2] = $998; @@ -5617,9 +5593,8 @@ function _mallocNoU($bytes) { if (($1025 & 3 | 0) == 1) { var $1029 = $1025 & -8; var $1030 = $1025 >>> 3; - var $1031 = $1025 >>> 0 < 256; $_$322 : do { - if ($1031) { + if ($1025 >>> 0 < 256) { var $1035 = HEAP32[($tbase_243_i + (($991 | 8) + $tsize_242_i | 0) | 0) >> 2]; var $1038 = HEAP32[($tbase_243_i + (($tsize_242_i + 12 | 0) + $991 | 0) | 0) >> 2]; if (($1035 | 0) == ($1038 | 0)) { @@ -5954,9 +5929,8 @@ function _mallocNoU($bytes) { HEAP32[(__gm_ + 452 | 0) >> 2] = $1337; var $1360 = $1336 + 28 | 0; HEAP32[$1360 >> 2] = 7; - var $1362 = ($1336 + 32 | 0) >>> 0 < $1322 >>> 0; $_$426 : do { - if ($1362) { + if (($1336 + 32 | 0) >>> 0 < $1322 >>> 0) { var $1363 = $1360; while (1) { var $1363; diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 12754bb2c80b7..634d7dda2fe98 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -1653,7 +1653,7 @@ function registerize(ast) { // In memSafe mode, we are more careful and assume functions can replace HEAP and FUNCTION_TABLE, which // can happen in ALLOW_MEMORY_GROWTH mode -var ELIMINATION_SAFE_NODES = set('var', 'assign', 'call', 'if', 'toplevel', 'do', 'return'); // do is checked carefully, however +var ELIMINATION_SAFE_NODES = set('var', 'assign', 'call', 'if', 'toplevel', 'do', 'return', 'label'); // do is checked carefully, however var NODES_WITHOUT_ELIMINATION_SIDE_EFFECTS = set('name', 'num', 'string', 'binary', 'sub', 'unary-prefix'); var IGNORABLE_ELIMINATOR_SCAN_NODES = set('num', 'toplevel', 'string', 'break', 'continue', 'dot'); // dot can only be STRING_TABLE.* var ABORTING_ELIMINATOR_SCAN_NODES = set('new', 'object', 'function', 'defun', 'switch', 'for', 'while', 'array', 'throw'); // we could handle some of these, TODO, but nontrivial (e.g. for while, the condition is hit multiple times after the body) From b4914455a788a63ca2191678a28620ded82d07f2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Feb 2013 09:51:57 -0800 Subject: [PATCH 008/326] fix reps printing in benchmarks --- tests/runner.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index ffac5045ed0b1..991e4c61bedd7 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10727,7 +10727,7 @@ def test_enet(self): total_native_times = map(lambda x: 0., range(TOTAL_TESTS)) class benchmark(RunnerCore): - def print_stats(self, times, native_times, last=False): + def print_stats(self, times, native_times, last=False, reps=TEST_REPS): mean = sum(times)/len(times) squared_times = map(lambda x: x*x, times) mean_of_squared = sum(squared_times)/len(times) @@ -10756,7 +10756,7 @@ def print_stats(self, times, native_times, last=False): return print - print ' JavaScript: mean: %.3f (+-%.3f) secs median: %.3f range: %.3f-%.3f (noise: %3.3f%%) (%d runs)' % (mean, std, median, min(times), max(times), 100*std/mean, TEST_REPS) + print ' JavaScript: mean: %.3f (+-%.3f) secs median: %.3f range: %.3f-%.3f (noise: %3.3f%%) (%d runs)' % (mean, std, median, min(times), max(times), 100*std/mean, reps) print ' Native : mean: %.3f (+-%.3f) secs median: %.3f range: %.3f-%.3f (noise: %3.3f%%) JS is %.2f X slower' % (mean_native, std_native, median_native, min(native_times), max(native_times), 100*std_native/mean_native, final) def do_benchmark(self, name, src, args=[], expected_output='FAIL', emcc_args=[], native_args=[], shared_args=[], force_c=False, reps=TEST_REPS): @@ -10804,7 +10804,7 @@ def do_benchmark(self, name, src, args=[], expected_output='FAIL', emcc_args=[], native_times.append(curr) total_native_times[tests_done] += curr - self.print_stats(times, native_times) + self.print_stats(times, native_times, reps=reps) #tests_done += 1 #if tests_done == TOTAL_TESTS: From 3605e51ea9f67d6a5761313fb37a4a77521e61ac Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Feb 2013 10:17:32 -0800 Subject: [PATCH 009/326] do not run unnecessary optimizeShiftsAggressive+eliminate steps in asm mode, it is pointless and just wastes compilation time --- emcc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emcc b/emcc index c2d3181d8b4e4..40b3d206ef2c6 100755 --- a/emcc +++ b/emcc @@ -1195,7 +1195,7 @@ try: js_optimizer_queue += [get_eliminate(), 'simplifyExpressionsPre'] - if shared.Settings.RELOOP: + if shared.Settings.RELOOP and not shared.Settings.ASM_JS: js_optimizer_queue += ['optimizeShiftsAggressive', get_eliminate()] # aggressive shifts optimization requires loops, it breaks on switches if closure: From 0e2d5b6ed1e97e3c8ab07b53d9e5534c10f294af Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Feb 2013 11:13:50 -0800 Subject: [PATCH 010/326] improve eliminator test flexibility, fixes #822 --- tests/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index 991e4c61bedd7..ce04ab393f7b7 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8272,7 +8272,7 @@ def test_emcc(self): assert ('assert(STACKTOP < STACK_MAX' in generated) == (opt_level == 0), 'assertions should be in opt == 0' assert 'var $i;' in generated or 'var $i_0' in generated or 'var $storemerge3;' in generated or 'var $storemerge4;' in generated or 'var $i_04;' in generated, 'micro opts should always be on' if opt_level >= 2: - assert 'HEAP8[$0 + ($i_' in generated or 'HEAP8[$0 + (($i_0' in generated or 'HEAP8[HEAP32[' in generated or 'HEAP8[$vla1 + (($storemerge4 | 0) / 2 & -1) | 0]' in generated or 'HEAP8[$vla1 + (($storemerge4 | 0) / 2 & -1) | 0]' in generated or 'HEAP8[$vla1 + (($i_04 | 0) / 2 & -1) | 0]' in generated or 'HEAP8[$vla1 + ($i_04 / 2 & -1)]' in generated or 'HEAP8[$1 + (($i_01 | 0) / 2 & -1) | 0]' in generated or 'HEAP8[$1 + (($i_01 | 0) / 2 & -1) | 0]' in generated or 'HEAP8[$1 + ($i_01 / 2 & -1)]' in generated, 'eliminator should create compound expressions, and fewer one-time vars' # also in -O1, but easier to test in -O2 + assert re.search('HEAP8\[\$\w+ \+ \(+\$\w+ ', generated) or re.search('HEAP8\[HEAP32\[', generated), 'eliminator should create compound expressions, and fewer one-time vars' # also in -O1, but easier to test in -O2 assert ('_puts(' in generated) == (opt_level >= 1), 'with opt >= 1, llvm opts are run and they should optimize printf to puts' assert ('function _malloc(bytes) {' in generated) == (not has_malloc), 'If malloc is needed, it should be there, if not not' assert 'function _main() {' in generated, 'Should be unminified, including whitespace' From c84352a5633f697cb8f72c90db4faa9500280be7 Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Mon, 4 Feb 2013 07:39:23 +0700 Subject: [PATCH 011/326] dlfcn.h: Missing include guards. --- system/include/dlfcn.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/system/include/dlfcn.h b/system/include/dlfcn.h index 3a4edd004bf82..7986c12d0088c 100644 --- a/system/include/dlfcn.h +++ b/system/include/dlfcn.h @@ -1,3 +1,5 @@ +#ifndef _DLFCN_H_INCLUDED +#define _DLFCN_H_INCLUDED #ifdef __cplusplus extern "C" { @@ -26,3 +28,4 @@ int dladdr(void *addr, Dl_info *info); } #endif +#endif From defb31b122dc0458ab2c57e649b43aee4587016e Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Mon, 4 Feb 2013 10:08:58 +0700 Subject: [PATCH 012/326] gc.h: Missing include guards. --- system/include/gc.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/system/include/gc.h b/system/include/gc.h index 8c5a8989e673a..a21fd410420d9 100644 --- a/system/include/gc.h +++ b/system/include/gc.h @@ -1,6 +1,8 @@ /* * Boehm-compatible GC API */ +#ifndef _GC_H_INCLUDED +#define _GC_H_INCLUDED #include @@ -65,3 +67,4 @@ void GC_enable_incremental(); } #endif +#endif From 7c2b6a9e293acfad2f806c0f28459ac14b4a1d5d Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Fri, 1 Feb 2013 11:22:27 +0700 Subject: [PATCH 013/326] Fix typos. --- src/library.js | 10 +++++----- src/library_jansson.js | 2 +- src/parseTools.js | 2 +- src/runtime.js | 2 +- src/settings.js | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/library.js b/src/library.js index 9b97b7955b3de..623d162634064 100644 --- a/src/library.js +++ b/src/library.js @@ -252,7 +252,7 @@ LibraryManager.library = { var properties = {isFolder: true, isDevice: false, contents: {}}; return FS.createObject(parent, name, properties, canRead, canWrite); }, - // Creates a a folder and all its missing parents. + // Creates a folder and all its missing parents. createPath: function(parent, path, canRead, canWrite) { var current = FS.findObject(parent); if (current === null) throw new Error('Invalid parent.'); @@ -414,7 +414,7 @@ LibraryManager.library = { processData(url); } }, - // Creates a link to a sepcific local path. + // Creates a link to a specific local path. createLink: function(parent, name, target, canRead, canWrite) { var properties = {isDevice: false, link: target}; return FS.createFile(parent, name, properties, canRead, canWrite); @@ -1120,7 +1120,7 @@ LibraryManager.library = { open: function(path, oflag, varargs) { // int open(const char *path, int oflag, ...); // http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html - // NOTE: This implementation tries to mimic glibc rather that strictly + // NOTE: This implementation tries to mimic glibc rather than strictly // following the POSIX standard. var mode = {{{ makeGetValue('varargs', 0, 'i32') }}}; @@ -1341,7 +1341,7 @@ LibraryManager.library = { poll: function(fds, nfds, timeout) { // int poll(struct pollfd fds[], nfds_t nfds, int timeout); // http://pubs.opengroup.org/onlinepubs/009695399/functions/poll.html - // NOTE: This is pretty much a no-op mimicing glibc. + // NOTE: This is pretty much a no-op mimicking glibc. var offsets = ___pollfd_struct_layout; var nonzero = 0; for (var i = 0; i < nfds; i++) { @@ -1505,7 +1505,7 @@ LibraryManager.library = { // long fpathconf(int fildes, int name); // http://pubs.opengroup.org/onlinepubs/000095399/functions/encrypt.html // NOTE: The first parameter is ignored, so pathconf == fpathconf. - // The constants here aren't real values. Just mimicing glibc. + // The constants here aren't real values. Just mimicking glibc. switch (name) { case {{{ cDefine('_PC_LINK_MAX') }}}: return 32000; diff --git a/src/library_jansson.js b/src/library_jansson.js index 368584a7df81b..93f239fc10855 100644 --- a/src/library_jansson.js +++ b/src/library_jansson.js @@ -74,7 +74,7 @@ var LibraryJansson = { _free(node['stringValuePtr']); }, - // Loads a string into the Javascript JSNON context + // Loads a string into the Javascript JSON context // Only the root node is loaded. Child nodes are loaded on demand via `loadChildNodes` method. load: function(string, flags, error) { // This is potentially a security problem. diff --git a/src/parseTools.js b/src/parseTools.js index f5e2f33f6c43b..e226a4f8e7b3a 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -111,7 +111,7 @@ function isStructPointerType(type) { // |%5()| as a function call (like |i32 (i8*)| etc.). So // we must check later on, in call(), where we have more // context, to differentiate such cases. - // A similar thing happns in isStructType() + // A similar thing happens in isStructType() return !Runtime.isNumberType(type) && type[0] == '%'; } diff --git a/src/runtime.js b/src/runtime.js index 5fce46518b141..e5b86065929c1 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -290,7 +290,7 @@ var Runtime = { // // When providing a typeName, you can generate information for nested // structs, for example, struct = ['field1', { field2: ['sub1', 'sub2', 'sub3'] }, 'field3'] - // which repesents a structure whose 2nd field is another structure. + // which represents a structure whose 2nd field is another structure. generateStructInfo: function(struct, typeName, offset) { var type, alignment; if (typeName) { diff --git a/src/settings.js b/src/settings.js index 26b649e0c9780..e43a717c809b6 100644 --- a/src/settings.js +++ b/src/settings.js @@ -69,7 +69,7 @@ var USE_FHEAP = 1; // Relevant in USE_TYPED_ARRAYS == 1. If this is disabled, on // not generated at all. This is useful if your code is 100% ints without floats or doubles var DOUBLE_MODE = 1; // How to load and store 64-bit doubles. Without typed arrays or in typed array mode 1, // this doesn't matter - these values are just values like any other. In typed array mode 2, - // a potentialy risk is that doubles may be only 32-bit aligned. Forcing 64-bit alignment + // a potential risk is that doubles may be only 32-bit aligned. Forcing 64-bit alignment // in Clang itself should be able to solve that, or as a workaround in DOUBLE_MODE 1 we // will carefully load in parts, in a way that requires only 32-bit alignment. In DOUBLE_MODE // 0 we will simply store and load doubles as 32-bit floats, so when they are stored/loaded @@ -282,7 +282,7 @@ var LINKABLE = 0; // If set to 1, this file can be linked with others, either as // we will not internalize all symbols and cull the unused ones, in other // words, we will not remove unused functions and globals, which might be // used by another module we are linked with. - // BUILD_AS_SHARED_LIB > 0 implies this, so it is only importand to set this to 1 + // BUILD_AS_SHARED_LIB > 0 implies this, so it is only important to set this to 1 // when building the main file, and *if* that main file has symbols that // the library it will open will then access through an extern. // LINKABLE of 0 is very useful in that we can reduce the size of the @@ -320,7 +320,7 @@ var HEADLESS = 0; // If 1, will include shim code that tries to 'fake' a browser // keep your expectations low for this to work. var BENCHMARK = 0; // If 1, will just time how long main() takes to execute, and not - // print out anything at all whatsover. This is useful for benchmarking. + // print out anything at all whatsoever. This is useful for benchmarking. var ASM_JS = 0; // If 1, generate code in asm.js format. XXX This is highly experimental, // and will not work on most codebases yet. It is NOT recommended that you From 87c84e8898c0a4ff9af8596f1558b469ea672327 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 10:32:09 -0800 Subject: [PATCH 014/326] optimize num >> num in js optimizer, necessary for asm now that we do not do shift optimization there --- tools/js-optimizer.js | 11 +++++++++++ tools/test-js-optimizer-asm-pre-output.js | 2 ++ tools/test-js-optimizer-asm-pre.js | 2 ++ 3 files changed, 15 insertions(+) diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index 634d7dda2fe98..efbfa8aa60a32 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -486,6 +486,17 @@ function simplifyExpressionsPre(ast) { } } }); + + if (asm) { + // optimize num >> num, in asm we need this here since we do not run optimizeShifts + traverseGenerated(ast, function(node, type) { + if (type == 'binary' && node[1] == '>>' && node[2][0] == 'num' && node[3][0] == 'num') { + node[0] = 'num'; + node[1] = node[2][1] >> node[3][1]; + node.length = 2; + } + }); + } } // The most common mathop is addition, e.g. in getelementptr done repeatedly. We can join all of those, diff --git a/tools/test-js-optimizer-asm-pre-output.js b/tools/test-js-optimizer-asm-pre-output.js index 84c9536076c27..3437163e7f7e3 100644 --- a/tools/test-js-optimizer-asm-pre-output.js +++ b/tools/test-js-optimizer-asm-pre-output.js @@ -4,6 +4,8 @@ function a() { f(347); f(351); f(8); + HEAP[1024] = 5; + HEAP[1024] = 5; } function b($this, $__n) { $this = $this | 0; diff --git a/tools/test-js-optimizer-asm-pre.js b/tools/test-js-optimizer-asm-pre.js index 3042ef669a516..42eb435ae2682 100644 --- a/tools/test-js-optimizer-asm-pre.js +++ b/tools/test-js-optimizer-asm-pre.js @@ -4,6 +4,8 @@ function a() { f(347 | 0); f(347 | 12); f(347 & 12); + HEAP[4096 >> 2] = 5; + HEAP[(4096 & 8191) >> 2] = 5; } function b($this, $__n) { $this = $this | 0; From 5535dcad8cdca9c6ad949e4e2df8a5ee9919b3a2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 11:05:09 -0800 Subject: [PATCH 015/326] emit simple multiply in asm if the values are small enough to avoid double rounding concerns --- src/parseTools.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/parseTools.js b/src/parseTools.js index f5e2f33f6c43b..40051e29e1fb5 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1045,9 +1045,14 @@ function asmCoercion(value, type, signedness) { } } +var TWO_TWENTY = Math.pow(2, 20); + function asmMultiplyI32(a, b) { // special-case: there is no integer multiply in asm, because there is no true integer // multiply in JS. While we wait for Math.imul, do double multiply + if ((isNumber(a) && Math.abs(a) < TWO_TWENTY) || (isNumber(b) && Math.abs(b) < TWO_TWENTY)) { + return '(((' + a + ')*(' + b + '))&-1)'; // small enough to emit directly as a multiply + } if (USE_MATH_IMUL) { return 'Math.imul(' + a + ',' + b + ')'; } From caf592912e7834c2024438c7d2feb9bf6a37adbd Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 12:48:33 -0800 Subject: [PATCH 016/326] revert 73313a7ef6ab384a3130e50f4904b8ae232cf4a5 - stop labeling ifs in relooper due to speed concerns --- src/relooper/Relooper.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/relooper/Relooper.cpp b/src/relooper/Relooper.cpp index 6ea9e7f4248c6..ae8577b1de453 100644 --- a/src/relooper/Relooper.cpp +++ b/src/relooper/Relooper.cpp @@ -253,11 +253,20 @@ int Shape::IdCounter = 0; void MultipleShape::RenderLoopPrefix() { if (NeedLoop) { - PrintIndented("L%d: \n", Id); + if (Labeled) { + PrintIndented("L%d: do {\n", Id); + } else { + PrintIndented("do {\n"); + } + Indenter::Indent(); } } void MultipleShape::RenderLoopPostfix() { + if (NeedLoop) { + Indenter::Unindent(); + PrintIndented("} while(0);\n"); + } } void MultipleShape::Render(bool InLoop) { @@ -912,10 +921,7 @@ void Relooper::Calculate(Block *Entry) { Branch *Details = iter->second; if (Details->Type != Branch::Direct) { assert(LoopStack.size() > 0); - // If the ancestor is not at the top of the stack, we need a labelled break. We also - // always need a labeled break for multiple blocks, which are always labeled. - MultipleShape *Multiple; - if (Details->Ancestor != LoopStack.top() || Shape::IsMultiple(Details->Ancestor)) { + if (Details->Ancestor != LoopStack.top()) { LabeledShape *Labeled = Shape::IsLabeled(Details->Ancestor); Labeled->Labeled = true; Details->Labeled = true; From f3311dc114621b44e7f7c8b722ad02f49bbde6c3 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 16:25:26 -0800 Subject: [PATCH 017/326] EXPLICIT_ZEXT option --- src/parseTools.js | 10 +++++++++- src/settings.js | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/parseTools.js b/src/parseTools.js index 40051e29e1fb5..85e91f6812482 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1954,6 +1954,7 @@ function processMathop(item) { if (item.type[0] === 'i') { bits = parseInt(item.type.substr(1)); } + var bitsBefore = parseInt((item.params[0] ? item.params[0].type : item.type).substr(1)); // remove i to leave the number of bits left after this var bitsLeft = parseInt(((item.params[1] && item.params[1].ident) ? item.params[1].ident : item.type).substr(1)); // remove i to leave the number of bits left after this operation function integerizeBignum(value) { @@ -2235,7 +2236,14 @@ function processMathop(item) { } // Note that zext has sign checking, see above. We must guard against -33 in i8 turning into -33 in i32 // then unsigning that i32... which would give something huge. - case 'zext': case 'fpext': case 'sext': return idents[0]; + case 'zext': { + if (EXPLICIT_ZEXT && bitsBefore == 1 && bitsLeft > 1) { + return '(' + originalIdents[0] + '?1:0)'; // explicit bool-to-int conversion, work around v8 issue 2513 + break; + } + // otherwise, fall through + } + case 'fpext': case 'sext': return idents[0]; case 'fptrunc': return idents[0]; case 'select': return idents[0] + ' ? ' + asmEnsureFloat(idents[1], item.type) + ' : ' + asmEnsureFloat(idents[2], item.type); case 'ptrtoint': case 'inttoptr': { diff --git a/src/settings.js b/src/settings.js index 26b649e0c9780..e8e136689e527 100644 --- a/src/settings.js +++ b/src/settings.js @@ -327,6 +327,8 @@ var ASM_JS = 0; // If 1, generate code in asm.js format. XXX This is highly expe // try this yet. var USE_MATH_IMUL = 0; // If 1, use Math.imul when useful +var EXPLICIT_ZEXT = 0; // If 1, generate an explicit conversion of zext i1 to i32, using ?: + var NECESSARY_BLOCKADDRS = []; // List of (function, block) for all block addresses that are taken. // Compiler debugging options From ed41d97300977675b80c42ed2978f3775b0479f6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 16:43:45 -0800 Subject: [PATCH 018/326] GLES 1.1 headers --- system/include/GLES/gl.h | 770 ++++++++++++++++++ system/include/GLES/glext.h | 1278 ++++++++++++++++++++++++++++++ system/include/GLES/glplatform.h | 30 + 3 files changed, 2078 insertions(+) create mode 100644 system/include/GLES/gl.h create mode 100644 system/include/GLES/glext.h create mode 100644 system/include/GLES/glplatform.h diff --git a/system/include/GLES/gl.h b/system/include/GLES/gl.h new file mode 100644 index 0000000000000..5b8d85a920974 --- /dev/null +++ b/system/include/GLES/gl.h @@ -0,0 +1,770 @@ +#ifndef __gl_h_ +#define __gl_h_ + +/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +typedef void GLvoid; +typedef char GLchar; +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef khronos_int8_t GLbyte; +typedef short GLshort; +typedef int GLint; +typedef int GLsizei; +typedef khronos_uint8_t GLubyte; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int32_t GLclampx; + +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + + +/*************************************************************/ + +/* OpenGL ES core versions */ +#define GL_VERSION_ES_CM_1_0 1 +#define GL_VERSION_ES_CL_1_0 1 +#define GL_VERSION_ES_CM_1_1 1 +#define GL_VERSION_ES_CL_1_1 1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +/* Boolean */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* BeginMode */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 + +/* AlphaFunction */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 + +/* BlendingFactorDest */ +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 + +/* BlendingFactorSrc */ +/* GL_ZERO */ +/* GL_ONE */ +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +/* GL_SRC_ALPHA */ +/* GL_ONE_MINUS_SRC_ALPHA */ +/* GL_DST_ALPHA */ +/* GL_ONE_MINUS_DST_ALPHA */ + +/* ClipPlaneName */ +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 + +/* ColorMaterialFace */ +/* GL_FRONT_AND_BACK */ + +/* ColorMaterialParameter */ +/* GL_AMBIENT_AND_DIFFUSE */ + +/* ColorPointerType */ +/* GL_UNSIGNED_BYTE */ +/* GL_FLOAT */ +/* GL_FIXED */ + +/* CullFaceMode */ +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 + +/* DepthFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* EnableCap */ +#define GL_FOG 0x0B60 +#define GL_LIGHTING 0x0B50 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_BLEND 0x0BE2 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +/* GL_LIGHT0 */ +/* GL_LIGHT1 */ +/* GL_LIGHT2 */ +/* GL_LIGHT3 */ +/* GL_LIGHT4 */ +/* GL_LIGHT5 */ +/* GL_LIGHT6 */ +/* GL_LIGHT7 */ +#define GL_POINT_SMOOTH 0x0B10 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_NORMALIZE 0x0BA1 +#define GL_RESCALE_NORMAL 0x803A +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_OUT_OF_MEMORY 0x0505 + +/* FogMode */ +/* GL_LINEAR */ +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 + +/* FogParameter */ +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 + +/* FrontFaceDirection */ +#define GL_CW 0x0900 +#define GL_CCW 0x0901 + +/* GetPName */ +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_LINE_WIDTH 0x0B21 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_SHADE_MODEL 0x0B54 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_MATRIX_MODE 0x0BA0 +#define GL_VIEWPORT 0x0BA2 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB + +/* GetTextureParameter */ +/* GL_TEXTURE_MAG_FILTER */ +/* GL_TEXTURE_MIN_FILTER */ +/* GL_TEXTURE_WRAP_S */ +/* GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 + +/* HintMode */ +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* HintTarget */ +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_FOG_HINT 0x0C54 +#define GL_GENERATE_MIPMAP_HINT 0x8192 + +/* LightModelParameter */ +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 + +/* LightParameter */ +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 + +/* DataType */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C + +/* LogicOp */ +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F + +/* MaterialFace */ +/* GL_FRONT_AND_BACK */ + +/* MaterialParameter */ +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +/* GL_AMBIENT */ +/* GL_DIFFUSE */ +/* GL_SPECULAR */ + +/* MatrixMode */ +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_TEXTURE 0x1702 + +/* NormalPointerType */ +/* GL_BYTE */ +/* GL_SHORT */ +/* GL_FLOAT */ +/* GL_FIXED */ + +/* PixelFormat */ +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A + +/* PixelStoreParameter */ +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 + +/* PixelType */ +/* GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 + +/* ShadingModel */ +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 + +/* StencilFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* StencilOp */ +/* GL_ZERO */ +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +/* GL_INVERT */ + +/* StringName */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* TexCoordPointerType */ +/* GL_SHORT */ +/* GL_FLOAT */ +/* GL_FIXED */ +/* GL_BYTE */ + +/* TextureEnvMode */ +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +/* GL_BLEND */ +#define GL_ADD 0x0104 +/* GL_REPLACE */ + +/* TextureEnvParameter */ +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 + +/* TextureEnvTarget */ +#define GL_TEXTURE_ENV 0x2300 + +/* TextureMagFilter */ +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 + +/* TextureMinFilter */ +/* GL_NEAREST */ +/* GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_GENERATE_MIPMAP 0x8191 + +/* TextureTarget */ +/* GL_TEXTURE_2D */ + +/* TextureUnit */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 + +/* TextureWrapMode */ +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F + +/* VertexPointerType */ +/* GL_SHORT */ +/* GL_FLOAT */ +/* GL_FIXED */ +/* GL_BYTE */ + +/* LightName */ +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 + +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A + +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 + +/* Texture combine + dot3 */ +#define GL_SUBTRACT 0x84E7 +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A + +#define GL_ALPHA_SCALE 0x0D1C + +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC1_ALPHA 0x8589 +#define GL_SRC2_ALPHA 0x858A + +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF + +/*------------------------------------------------------------------------* + * required OES extension tokens + *------------------------------------------------------------------------*/ + +/* OES_read_format */ +#ifndef GL_OES_read_format +#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + +/* OES_point_size_array */ +#ifndef GL_OES_point_size_array +#define GL_POINT_SIZE_ARRAY_OES 0x8B9C +#define GL_POINT_SIZE_ARRAY_TYPE_OES 0x898A +#define GL_POINT_SIZE_ARRAY_STRIDE_OES 0x898B +#define GL_POINT_SIZE_ARRAY_POINTER_OES 0x898C +#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES 0x8B9F +#endif + +/* GL_OES_point_sprite */ +#ifndef GL_OES_point_sprite +#define GL_POINT_SPRITE_OES 0x8861 +#define GL_COORD_REPLACE_OES 0x8862 +#endif + +/*************************************************************/ + +/* Available only in Common profile */ +GL_API void GL_APIENTRY glAlphaFunc (GLenum func, GLclampf ref); +GL_API void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_API void GL_APIENTRY glClearDepthf (GLclampf depth); +GL_API void GL_APIENTRY glClipPlanef (GLenum plane, const GLfloat *equation); +GL_API void GL_APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_API void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); +GL_API void GL_APIENTRY glFogf (GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glFogfv (GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glGetClipPlanef (GLenum pname, GLfloat eqn[4]); +GL_API void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetTexEnvfv (GLenum env, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glLightModelf (GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glLightModelfv (GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glLightf (GLenum light, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glLineWidth (GLfloat width); +GL_API void GL_APIENTRY glLoadMatrixf (const GLfloat *m); +GL_API void GL_APIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glMultMatrixf (const GLfloat *m); +GL_API void GL_APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GL_API void GL_APIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz); +GL_API void GL_APIENTRY glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glPointParameterf (GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glPointSize (GLfloat size); +GL_API void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_API void GL_APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_API void GL_APIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z); +GL_API void GL_APIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); + +/* Available in both Common and Common-Lite profiles */ +GL_API void GL_APIENTRY glActiveTexture (GLenum texture); +GL_API void GL_APIENTRY glAlphaFuncx (GLenum func, GLclampx ref); +GL_API void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_API void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_API void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_API void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +GL_API void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); +GL_API void GL_APIENTRY glClear (GLbitfield mask); +GL_API void GL_APIENTRY glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +GL_API void GL_APIENTRY glClearDepthx (GLclampx depth); +GL_API void GL_APIENTRY glClearStencil (GLint s); +GL_API void GL_APIENTRY glClientActiveTexture (GLenum texture); +GL_API void GL_APIENTRY glClipPlanex (GLenum plane, const GLfixed *equation); +GL_API void GL_APIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +GL_API void GL_APIENTRY glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GL_API void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_API void GL_APIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); +GL_API void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); +GL_API void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_API void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glCullFace (GLenum mode); +GL_API void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_API void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_API void GL_APIENTRY glDepthFunc (GLenum func); +GL_API void GL_APIENTRY glDepthMask (GLboolean flag); +GL_API void GL_APIENTRY glDepthRangex (GLclampx zNear, GLclampx zFar); +GL_API void GL_APIENTRY glDisable (GLenum cap); +GL_API void GL_APIENTRY glDisableClientState (GLenum array); +GL_API void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_API void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +GL_API void GL_APIENTRY glEnable (GLenum cap); +GL_API void GL_APIENTRY glEnableClientState (GLenum array); +GL_API void GL_APIENTRY glFinish (void); +GL_API void GL_APIENTRY glFlush (void); +GL_API void GL_APIENTRY glFogx (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glFogxv (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glFrontFace (GLenum mode); +GL_API void GL_APIENTRY glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params); +GL_API void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetClipPlanex (GLenum pname, GLfixed eqn[4]); +GL_API void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_API void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_API GLenum GL_APIENTRY glGetError (void); +GL_API void GL_APIENTRY glGetFixedv (GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetLightxv (GLenum light, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetMaterialxv (GLenum face, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetPointerv (GLenum pname, GLvoid **params); +GL_API const GLubyte * GL_APIENTRY glGetString (GLenum name); +GL_API void GL_APIENTRY glGetTexEnviv (GLenum env, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetTexEnvxv (GLenum env, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetTexParameterxv (GLenum target, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_API GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_API GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_API GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_API void GL_APIENTRY glLightModelx (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightModelxv (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLightx (GLenum light, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightxv (GLenum light, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLineWidthx (GLfixed width); +GL_API void GL_APIENTRY glLoadIdentity (void); +GL_API void GL_APIENTRY glLoadMatrixx (const GLfixed *m); +GL_API void GL_APIENTRY glLogicOp (GLenum opcode); +GL_API void GL_APIENTRY glMaterialx (GLenum face, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glMaterialxv (GLenum face, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glMatrixMode (GLenum mode); +GL_API void GL_APIENTRY glMultMatrixx (const GLfixed *m); +GL_API void GL_APIENTRY glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GL_API void GL_APIENTRY glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz); +GL_API void GL_APIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_API void GL_APIENTRY glPointParameterx (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glPointParameterxv (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glPointSizex (GLfixed size); +GL_API void GL_APIENTRY glPolygonOffsetx (GLfixed factor, GLfixed units); +GL_API void GL_APIENTRY glPopMatrix (void); +GL_API void GL_APIENTRY glPushMatrix (void); +GL_API void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels); +GL_API void GL_APIENTRY glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); +GL_API void GL_APIENTRY glSampleCoveragex (GLclampx value, GLboolean invert); +GL_API void GL_APIENTRY glScalex (GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glShadeModel (GLenum mode); +GL_API void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_API void GL_APIENTRY glStencilMask (GLuint mask); +GL_API void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_API void GL_APIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param); +GL_API void GL_APIENTRY glTexEnvx (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params); +GL_API void GL_APIENTRY glTexEnvxv (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); +GL_API void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_API void GL_APIENTRY glTexParameterx (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_API void GL_APIENTRY glTexParameterxv (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); +GL_API void GL_APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +/*------------------------------------------------------------------------* + * Required OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_read_format */ +#ifndef GL_OES_read_format +#define GL_OES_read_format 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_point_size_array */ +#ifndef GL_OES_point_size_array +#define GL_OES_point_size_array 1 +GL_API void GL_APIENTRY glPointSizePointerOES (GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +/* GL_OES_point_sprite */ +#ifndef GL_OES_point_sprite +#define GL_OES_point_sprite 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + diff --git a/system/include/GLES/glext.h b/system/include/GLES/glext.h new file mode 100644 index 0000000000000..5b46ae6d050a2 --- /dev/null +++ b/system/include/GLES/glext.h @@ -0,0 +1,1278 @@ +#ifndef __glext_h_ +#define __glext_h_ + +/* $Revision: 19260 $ on $Date:: 2012-09-20 11:30:36 -0700 #$ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +# define GL_APIENTRYP GL_APIENTRY* +#endif + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_blend_equation_separate */ +#ifndef GL_OES_blend_equation_separate +/* BLEND_EQUATION_RGB_OES same as BLEND_EQUATION_OES */ +#define GL_BLEND_EQUATION_RGB_OES 0x8009 +#define GL_BLEND_EQUATION_ALPHA_OES 0x883D +#endif + +/* GL_OES_blend_func_separate */ +#ifndef GL_OES_blend_func_separate +#define GL_BLEND_DST_RGB_OES 0x80C8 +#define GL_BLEND_SRC_RGB_OES 0x80C9 +#define GL_BLEND_DST_ALPHA_OES 0x80CA +#define GL_BLEND_SRC_ALPHA_OES 0x80CB +#endif + +/* GL_OES_blend_subtract */ +#ifndef GL_OES_blend_subtract +#define GL_BLEND_EQUATION_OES 0x8009 +#define GL_FUNC_ADD_OES 0x8006 +#define GL_FUNC_SUBTRACT_OES 0x800A +#define GL_FUNC_REVERSE_SUBTRACT_OES 0x800B +#endif + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES 0x8D64 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif + +/* GL_OES_draw_texture */ +#ifndef GL_OES_draw_texture +#define GL_TEXTURE_CROP_RECT_OES 0x8B9D +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +/* GLeglImageOES defined in GL_OES_EGL_image already. */ +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_UNSIGNED_INT 0x1405 +#endif + +/* GL_OES_fixed_point */ +#ifndef GL_OES_fixed_point +#define GL_FIXED_OES 0x140C +#endif + +/* GL_OES_framebuffer_object */ +#ifndef GL_OES_framebuffer_object +#define GL_NONE_OES 0 +#define GL_FRAMEBUFFER_OES 0x8D40 +#define GL_RENDERBUFFER_OES 0x8D41 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_RENDERBUFFER_WIDTH_OES 0x8D42 +#define GL_RENDERBUFFER_HEIGHT_OES 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE_OES 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3 +#define GL_COLOR_ATTACHMENT0_OES 0x8CE0 +#define GL_DEPTH_ATTACHMENT_OES 0x8D00 +#define GL_STENCIL_ATTACHMENT_OES 0x8D20 +#define GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9 +#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA +#define GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD +#define GL_FRAMEBUFFER_BINDING_OES 0x8CA6 +#define GL_RENDERBUFFER_BINDING_OES 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506 +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +#endif + +/* GL_OES_matrix_get */ +#ifndef GL_OES_matrix_get +#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES 0x898D +#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES 0x898E +#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES 0x898F +#endif + +/* GL_OES_matrix_palette */ +#ifndef GL_OES_matrix_palette +#define GL_MAX_VERTEX_UNITS_OES 0x86A4 +#define GL_MAX_PALETTE_MATRICES_OES 0x8842 +#define GL_MATRIX_PALETTE_OES 0x8840 +#define GL_MATRIX_INDEX_ARRAY_OES 0x8844 +#define GL_WEIGHT_ARRAY_OES 0x86AD +#define GL_CURRENT_PALETTE_MATRIX_OES 0x8843 +#define GL_MATRIX_INDEX_ARRAY_SIZE_OES 0x8846 +#define GL_MATRIX_INDEX_ARRAY_TYPE_OES 0x8847 +#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES 0x8848 +#define GL_MATRIX_INDEX_ARRAY_POINTER_OES 0x8849 +#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES 0x8B9E +#define GL_WEIGHT_ARRAY_SIZE_OES 0x86AB +#define GL_WEIGHT_ARRAY_TYPE_OES 0x86A9 +#define GL_WEIGHT_ARRAY_STRIDE_OES 0x86AA +#define GL_WEIGHT_ARRAY_POINTER_OES 0x86AC +#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES 0x889E +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + +/* GL_OES_required_internalformat */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif + +/* GL_OES_stencil8 */ +#ifndef GL_OES_stencil8 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif + +/* GL_OES_stencil_wrap */ +#ifndef GL_OES_stencil_wrap +#define GL_INCR_WRAP_OES 0x8507 +#define GL_DECR_WRAP_OES 0x8508 +#endif + +/* GL_OES_texture_cube_map */ +#ifndef GL_OES_texture_cube_map +#define GL_NORMAL_MAP_OES 0x8511 +#define GL_REFLECTION_MAP_OES 0x8512 +#define GL_TEXTURE_CUBE_MAP_OES 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP_OES 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES 0x851C +#define GL_TEXTURE_GEN_MODE_OES 0x2500 +#define GL_TEXTURE_GEN_STR_OES 0x8D60 +#endif + +/* GL_OES_texture_mirrored_repeat */ +#ifndef GL_OES_texture_mirrored_repeat +#define GL_MIRRORED_REPEAT_OES 0x8370 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif + +/*------------------------------------------------------------------------* + * APPLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_APPLE_copy_texture_levels */ +/* No new tokens introduced by this extension. */ + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync + +/* These types are defined with reference to + * in the Apple extension spec, but here we use the Khronos + * portable types in khrplatform.h, and assume those types + * are always defined. + * If any other extensions using these types are defined, + * the typedefs must move out of this block and be shared. + */ +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef struct __GLsync *GLsync; + +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +#endif + +/* GL_APPLE_texture_2D_limited_npot */ +/* No new tokens introduced by this extension. */ + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif + +/*------------------------------------------------------------------------* + * ARM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ARM_rgba8 */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +#endif + +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */ +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#endif + +/* GL_EXT_multi_draw_arrays */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +/* reuse GL_NO_ERROR */ +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_EXT_texture_lod_bias */ +#ifndef GL_EXT_texture_lod_bias +#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD +#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 +#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +/* reuse GL_RGBA16F_EXT */ +#define GL_RGB16F_EXT 0x881B +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif + +/* GL_IMG_texture_env_enhanced_fixed_function */ +#ifndef GL_IMG_texture_env_enhanced_fixed_function +#define GL_MODULATE_COLOR_IMG 0x8C04 +#define GL_RECIP_ADD_SIGNED_ALPHA_IMG 0x8C05 +#define GL_TEXTURE_ALPHA_MODULATE_IMG 0x8C06 +#define GL_FACTOR_ALPHA_MODULATE_IMG 0x8C07 +#define GL_FRAGMENT_ALPHA_MODULATE_IMG 0x8C08 +#define GL_ADD_BLEND_IMG 0x8C09 +#define GL_DOT3_RGBA_IMG 0x86AF +#endif + +/* GL_IMG_user_clip_plane */ +#ifndef GL_IMG_user_clip_plane +#define GL_CLIP_PLANE0_IMG 0x3000 +#define GL_CLIP_PLANE1_IMG 0x3001 +#define GL_CLIP_PLANE2_IMG 0x3002 +#define GL_CLIP_PLANE3_IMG 0x3003 +#define GL_CLIP_PLANE4_IMG 0x3004 +#define GL_CLIP_PLANE5_IMG 0x3005 +#define GL_MAX_CLIP_PLANES_IMG 0x0D32 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +#endif + +/* GL_QCOM_extended_get2 */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_blend_equation_separate */ +#ifndef GL_OES_blend_equation_separate +#define GL_OES_blend_equation_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha); +#endif +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEOESPROC) (GLenum modeRGB, GLenum modeAlpha); +#endif + +/* GL_OES_blend_func_separate */ +#ifndef GL_OES_blend_func_separate +#define GL_OES_blend_func_separate 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendFuncSeparateOES (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEOESPROC) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +#endif + +/* GL_OES_blend_subtract */ +#ifndef GL_OES_blend_subtract +#define GL_OES_blend_subtract 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBlendEquationOES (GLenum mode); +#endif +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONOESPROC) (GLenum mode); +#endif + +/* GL_OES_byte_coordinates */ +#ifndef GL_OES_byte_coordinates +#define GL_OES_byte_coordinates 1 +#endif + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_draw_texture */ +#ifndef GL_OES_draw_texture +#define GL_OES_draw_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDrawTexsOES (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +GL_API void GL_APIENTRY glDrawTexiOES (GLint x, GLint y, GLint z, GLint width, GLint height); +GL_API void GL_APIENTRY glDrawTexxOES (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +GL_API void GL_APIENTRY glDrawTexsvOES (const GLshort *coords); +GL_API void GL_APIENTRY glDrawTexivOES (const GLint *coords); +GL_API void GL_APIENTRY glDrawTexxvOES (const GLfixed *coords); +GL_API void GL_APIENTRY glDrawTexfOES (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +GL_API void GL_APIENTRY glDrawTexfvOES (const GLfloat *coords); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWTEXSOESPROC) (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXIOESPROC) (GLint x, GLint y, GLint z, GLint width, GLint height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXXOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXSVOESPROC) (const GLshort *coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXIVOESPROC) (const GLint *coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXXVOESPROC) (const GLfixed *coords); +typedef void (GL_APIENTRYP PFNGLDRAWTEXFOESPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +typedef void (GL_APIENTRYP PFNGLDRAWTEXFVOESPROC) (const GLfloat *coords); +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_API void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_extended_matrix_palette */ +#ifndef GL_OES_extended_matrix_palette +#define GL_OES_extended_matrix_palette 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fixed_point */ +#ifndef GL_OES_fixed_point +#define GL_OES_fixed_point 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glAlphaFuncxOES (GLenum func, GLclampx ref); +GL_API void GL_APIENTRY glClearColorxOES (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +GL_API void GL_APIENTRY glClearDepthxOES (GLclampx depth); +GL_API void GL_APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation); +GL_API void GL_APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +GL_API void GL_APIENTRY glDepthRangexOES (GLclampx zNear, GLclampx zFar); +GL_API void GL_APIENTRY glFogxOES (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glFogxvOES (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glFrustumxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glGetClipPlanexOES (GLenum pname, GLfixed eqn[4]); +GL_API void GL_APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetLightxvOES (GLenum light, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetMaterialxvOES (GLenum face, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetTexEnvxvOES (GLenum env, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params); +GL_API void GL_APIENTRY glLightModelxOES (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glLineWidthxOES (GLfixed width); +GL_API void GL_APIENTRY glLoadMatrixxOES (const GLfixed *m); +GL_API void GL_APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glMultMatrixxOES (const GLfixed *m); +GL_API void GL_APIENTRY glMultiTexCoord4xOES (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +GL_API void GL_APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz); +GL_API void GL_APIENTRY glOrthoxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +GL_API void GL_APIENTRY glPointParameterxOES (GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glPointSizexOES (GLfixed size); +GL_API void GL_APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units); +GL_API void GL_APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glSampleCoveragexOES (GLclampx value, GLboolean invert); +GL_API void GL_APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z); +GL_API void GL_APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z); +#endif +typedef void (GL_APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLclampx ref); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLclampx depth); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation); +typedef void (GL_APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLclampx zNear, GLclampx zFar); +typedef void (GL_APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum pname, GLfixed eqn[4]); +typedef void (GL_APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETLIGHTXVOESPROC) (GLenum light, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETMATERIALXVOESPROC) (GLenum face, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum env, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params); +typedef void (GL_APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width); +typedef void (GL_APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m); +typedef void (GL_APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m); +typedef void (GL_APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +typedef void (GL_APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); +typedef void (GL_APIENTRYP PFNGLORTHOXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXOESPROC) (GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); +typedef void (GL_APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEXOESPROC) (GLclampx value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +typedef void (GL_APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); +#endif + +/* GL_OES_framebuffer_object */ +#ifndef GL_OES_framebuffer_object +#define GL_OES_framebuffer_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLboolean GL_APIENTRY glIsRenderbufferOES (GLuint renderbuffer); +GL_API void GL_APIENTRY glBindRenderbufferOES (GLenum target, GLuint renderbuffer); +GL_API void GL_APIENTRY glDeleteRenderbuffersOES (GLsizei n, const GLuint* renderbuffers); +GL_API void GL_APIENTRY glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers); +GL_API void GL_APIENTRY glRenderbufferStorageOES (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glGetRenderbufferParameterivOES (GLenum target, GLenum pname, GLint* params); +GL_API GLboolean GL_APIENTRY glIsFramebufferOES (GLuint framebuffer); +GL_API void GL_APIENTRY glBindFramebufferOES (GLenum target, GLuint framebuffer); +GL_API void GL_APIENTRY glDeleteFramebuffersOES (GLsizei n, const GLuint* framebuffers); +GL_API void GL_APIENTRY glGenFramebuffersOES (GLsizei n, GLuint* framebuffers); +GL_API GLenum GL_APIENTRY glCheckFramebufferStatusOES (GLenum target); +GL_API void GL_APIENTRY glFramebufferRenderbufferOES (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_API void GL_APIENTRY glFramebufferTexture2DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_API void GL_APIENTRY glGetFramebufferAttachmentParameterivOES (GLenum target, GLenum attachment, GLenum pname, GLint* params); +GL_API void GL_APIENTRY glGenerateMipmapOES (GLenum target); +#endif +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPOESPROC) (GLenum target); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_API GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_API void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid ** params); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid ** params); +#endif + +/* GL_OES_matrix_get */ +#ifndef GL_OES_matrix_get +#define GL_OES_matrix_get 1 +#endif + +/* GL_OES_matrix_palette */ +#ifndef GL_OES_matrix_palette +#define GL_OES_matrix_palette 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glCurrentPaletteMatrixOES (GLuint matrixpaletteindex); +GL_API void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES (void); +GL_API void GL_APIENTRY glMatrixIndexPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +GL_API void GL_APIENTRY glWeightPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif +typedef void (GL_APIENTRYP PFNGLCURRENTPALETTEMATRIXOESPROC) (GLuint matrixpaletteindex); +typedef void (GL_APIENTRYP PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC) (void); +typedef void (GL_APIENTRYP PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +typedef void (GL_APIENTRYP PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_required_internalformat */ +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#endif + +/* GL_OES_query_matrix */ +#ifndef GL_OES_query_matrix +#define GL_OES_query_matrix 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLbitfield GL_APIENTRY glQueryMatrixxOES (GLfixed mantissa[16], GLint exponent[16]); +#endif +typedef GLbitfield (GL_APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed mantissa[16], GLint exponent[16]); +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_single_precision */ +#ifndef GL_OES_single_precision +#define GL_OES_single_precision 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDepthRangefOES (GLclampf zNear, GLclampf zFar); +GL_API void GL_APIENTRY glFrustumfOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glOrthofOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +GL_API void GL_APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation); +GL_API void GL_APIENTRY glGetClipPlanefOES (GLenum pname, GLfloat eqn[4]); +GL_API void GL_APIENTRY glClearDepthfOES (GLclampf depth); +#endif +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf zNear, GLclampf zFar); +typedef void (GL_APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GL_APIENTRYP PFNGLORTHOFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation); +typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum pname, GLfloat eqn[4]); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth); +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +/* GL_OES_stencil8 */ +#ifndef GL_OES_stencil8 +#define GL_OES_stencil8 1 +#endif + +/* GL_OES_stencil_wrap */ +#ifndef GL_OES_stencil_wrap +#define GL_OES_stencil_wrap 1 +#endif + +/* GL_OES_texture_cube_map */ +#ifndef GL_OES_texture_cube_map +#define GL_OES_texture_cube_map 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glTexGenfOES (GLenum coord, GLenum pname, GLfloat param); +GL_API void GL_APIENTRY glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat *params); +GL_API void GL_APIENTRY glTexGeniOES (GLenum coord, GLenum pname, GLint param); +GL_API void GL_APIENTRY glTexGenivOES (GLenum coord, GLenum pname, const GLint *params); +GL_API void GL_APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param); +GL_API void GL_APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params); +GL_API void GL_APIENTRY glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat *params); +GL_API void GL_APIENTRY glGetTexGenivOES (GLenum coord, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params); +#endif +typedef void (GL_APIENTRYP PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); +typedef void (GL_APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +#endif + +/* GL_OES_texture_env_crossbar */ +#ifndef GL_OES_texture_env_crossbar +#define GL_OES_texture_env_crossbar 1 +#endif + +/* GL_OES_texture_mirrored_repeat */ +#ifndef GL_OES_texture_mirrored_repeat +#define GL_OES_texture_mirrored_repeat 1 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_API void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_API void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_API GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#endif + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/*------------------------------------------------------------------------* + * APPLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_APPLE_copy_texture_levels */ +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_API void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync +#define GL_APPLE_sync 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_API GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_API void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_API GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_API void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_API void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_API void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif + +/* GL_APPLE_texture_2D_limited_npot */ +#ifndef GL_APPLE_texture_2D_limited_npot +#define GL_APPLE_texture_2D_limited_npot 1 +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#endif + +/*------------------------------------------------------------------------* + * ARM extension functions + *------------------------------------------------------------------------*/ + +/* GL_ARM_rgba8 */ +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif + +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY *glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_API void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_API void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/* GL_EXT_multi_draw_arrays */ +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GL_API void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_API void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_API void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, float *params); +GL_API void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, float *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_texture_lod_bias */ +#ifndef GL_EXT_texture_lod_bias +#define GL_EXT_texture_lod_bias 1 +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_API void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_API void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_API void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_API void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/* GL_IMG_texture_env_enhanced_fixed_function */ +#ifndef GL_IMG_texture_env_enhanced_fixed_function +#define GL_IMG_texture_env_enhanced_fixed_function 1 +#endif + +/* GL_IMG_user_clip_plane */ +#ifndef GL_IMG_user_clip_plane +#define GL_IMG_user_clip_plane 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glClipPlanefIMG (GLenum, const GLfloat *); +GL_API void GL_APIENTRY glClipPlanexIMG (GLenum, const GLfixed *); +#endif +typedef void (GL_APIENTRYP PFNGLCLIPPLANEFIMGPROC) (GLenum p, const GLfloat *eqn); +typedef void (GL_APIENTRYP PFNGLCLIPPLANEXIMGPROC) (GLenum p, const GLfixed *eqn); +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_API void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GL_API void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *); +GL_API GLboolean GL_APIENTRY glIsFenceNV (GLuint); +GL_API GLboolean GL_APIENTRY glTestFenceNV (GLuint); +GL_API void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GL_API void GL_APIENTRY glFinishFenceNV (GLuint); +GL_API void GL_APIENTRY glSetFenceNV (GLuint, GLenum); +#endif +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_API void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_API void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_API void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#endif + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_API void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_API void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_API void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_API void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_API void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_API void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +GL_API void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); +#endif + +/* GL_QCOM_extended_get2 */ +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_API void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_API GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_API void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_API void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_API void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __glext_h_ */ + diff --git a/system/include/GLES/glplatform.h b/system/include/GLES/glplatform.h new file mode 100644 index 0000000000000..2db6ee2ca68e1 --- /dev/null +++ b/system/include/GLES/glplatform.h @@ -0,0 +1,30 @@ +#ifndef __glplatform_h_ +#define __glplatform_h_ + +/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */ + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 1.X gl.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +#include + +#ifndef GL_API +#define GL_API KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __glplatform_h_ */ From 5a8d9d2833451cba3048e2b8ec03642edf7f754b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 17:02:55 -0800 Subject: [PATCH 019/326] remove test_pgo --- tests/runner.py | 57 ------------------------------------------------- 1 file changed, 57 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 66936e5ab2b51..02ec11c808c7f 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7836,63 +7836,6 @@ def test_linespecific(self): self.do_run(src.replace('TYPE', 'unsigned int'), '*2147483645**2**-5**5*') Settings.CORRECT_SIGNS = 0 - def test_pgo(self): - if Settings.ASM_JS: return self.skip('asm does not support pgo') - - if '-g' not in Building.COMPILER_TEST_OPTS: Building.COMPILER_TEST_OPTS.append('-g') - Settings.PGO = Settings.CHECK_OVERFLOWS = Settings.CORRECT_OVERFLOWS = Settings.CHECK_SIGNS = Settings.CORRECT_SIGNS = 1 - - src = ''' - #include - int main() { - int t = 77; - for (int i = 0; i < 30; i++) { - t = t + t + t + t + t + 1; - } - printf("*%d,%d*\\n", t, t & 127); - - int varey = 100; - unsigned int MAXEY = -1; - for (int j = 0; j < 2; j++) { - printf("*%d*\\n", varey >= MAXEY); // 100 >= -1? not in unsigned! - MAXEY = 1; // So we succeed the second time around - } - return 0; - } - ''' - - def check(output, err): - # TODO: check the line # - if self.emcc_args is None or self.emcc_args == []: # LLVM full opts optimize out some corrections - assert re.search('^Overflow\|.*src.cpp:6 : 150 hits, %21 failures$', output, re.M), 'no indication of Overflow corrections: ' + output - assert re.search('^UnSign\|.*src.cpp:13 : 6 hits, %17 failures$', output, re.M), 'no indication of Sign corrections: ' + output - return output - - print >>sys.stderr, '1' - self.do_run(src, '*186854335,63*\n', output_nicerizer=check) - - Settings.PGO = Settings.CHECK_OVERFLOWS = Settings.CORRECT_OVERFLOWS = Settings.CHECK_SIGNS = Settings.CORRECT_SIGNS = 0 - - # Now, recompile with the PGO data, and it should work - - pgo_data = read_pgo_data(self.get_stdout_path()) - - Settings.CORRECT_SIGNS = 2 - Settings.CORRECT_SIGNS_LINES = pgo_data['signs_lines'] - Settings.CORRECT_OVERFLOWS = 2 - Settings.CORRECT_OVERFLOWS_LINES = pgo_data['overflows_lines'] - - print >>sys.stderr, '2' - self.do_run(src, '*186854335,63*\n') - - # Sanity check: Without PGO, we will fail - - print >>sys.stderr, '3' - try: - self.do_run(src, '*186854335,63*\n') - except: - pass - def test_exit_status(self): Settings.CATCH_EXIT_CODE = 1 From 27841ea86c6be6f96a2ab777a19d00686c551ed9 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 19:00:09 -0800 Subject: [PATCH 020/326] refactor sockets code --- src/library.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/library.js b/src/library.js index 623d162634064..aa93598ec6a38 100644 --- a/src/library.js +++ b/src/library.js @@ -6906,8 +6906,9 @@ LibraryManager.library = { var i8Temp = new Uint8Array(i32Temp.buffer); info.inQueue = []; + info.hasData = function() { return info.inQueue.length > 0 } if (!info.stream) { - var partialBuffer = null; // inQueue contains full dgram messages; this buffers incomplete data. Must begin with the beginning of a message + var partialBuffer = null; // in datagram mode, inQueue contains full dgram messages; this buffers incomplete data. Must begin with the beginning of a message } info.socket.onmessage = function(event) { @@ -7043,7 +7044,7 @@ LibraryManager.library = { recv: function(fd, buf, len, flags) { var info = Sockets.fds[fd]; if (!info) return -1; - if (info.inQueue.length == 0) { + if (!info.hasData()) { ___setErrNo(ERRNO_CODES.EAGAIN); // no data, and all sockets are nonblocking, so this is the right behavior return -1; } @@ -7114,7 +7115,7 @@ LibraryManager.library = { assert(name, 'sendmsg on non-connected socket, and no name/address in the message'); _connect(fd, name, {{{ makeGetValue('msg', 'Sockets.msghdr_layout.msg_namelen', 'i32') }}}); } - if (info.inQueue.length == 0) { + if (!info.hasData()) { ___setErrNo(ERRNO_CODES.EWOULDBLOCK); return -1; } @@ -7179,7 +7180,7 @@ LibraryManager.library = { var info = Sockets.fds[fd]; if (!info) return -1; var bytes = 0; - if (info.inQueue.length > 0) { + if (info.hasData()) { bytes = info.inQueue[0].length; } var dest = {{{ makeGetValue('varargs', '0', 'i32') }}}; @@ -7229,7 +7230,7 @@ LibraryManager.library = { // index is in the set, check if it is ready for read var info = Sockets.fds[fd]; if (!info) continue; - if (info.inQueue.length > 0) ret++; + if (info.hasData()) ret++; } } return ret; From 83fa6b5ca739d3afc4abdf3d602e0f08e0e25307 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Feb 2013 20:33:33 -0800 Subject: [PATCH 021/326] fix test_websockets_partial --- src/library.js | 12 +++++++++++- tests/websockets_partial.c | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index aa93598ec6a38..6c2702bab6d79 100644 --- a/src/library.js +++ b/src/library.js @@ -7053,6 +7053,13 @@ LibraryManager.library = { Module.print('recv: ' + [Array.prototype.slice.call(buffer)]); #endif if (len < buffer.length) { + if (info.stream) { + // This is tcp (reliable), so if not all was read, keep it + info.inQueue.unshift(buffer.subarray(len)); +#if SOCKET_DEBUG + Module.print('recv: put back: ' + (len - buffer.length)); +#endif + } buffer = buffer.subarray(0, len); } HEAPU8.set(buffer, buf); @@ -7151,7 +7158,10 @@ LibraryManager.library = { if (info.stream) { // This is tcp (reliable), so if not all was read, keep it if (bufferPos < bytes) { - info.inQueue.unshift(buffer.subArray(bufferPos)); + info.inQueue.unshift(buffer.subarray(bufferPos)); +#if SOCKET_DEBUG + Module.print('recvmsg: put back: ' + (bytes - bufferPos)); +#endif } } return ret; diff --git a/tests/websockets_partial.c b/tests/websockets_partial.c index deacdb6b46a32..f71160b7d6ff9 100644 --- a/tests/websockets_partial.c +++ b/tests/websockets_partial.c @@ -46,6 +46,8 @@ void iter(void *arg) { packetLength = buffer[0]; n = recv(SocketFD, buffer, packetLength, 0); + printf("got %d,%d\n", n, packetLength); + if (n != packetLength) { fprintf(stderr, "lost packet data, expected: %d readed: %d", packetLength, n); exit(EXIT_FAILURE); @@ -66,6 +68,7 @@ void iter(void *arg) { done = 1; #if EMSCRIPTEN + printf("sum: %d\n", sum); int result = sum; REPORT_RESULT(); #endif From 9aa7bbf6987cad3cff53906c5d6a6e77b6bd5b9c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 5 Feb 2013 16:14:55 -0800 Subject: [PATCH 022/326] fix memmove bug and add testing --- src/library.js | 4 ++-- tests/runner.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/library.js b/src/library.js index 6c2702bab6d79..1e026937f105f 100644 --- a/src/library.js +++ b/src/library.js @@ -4259,11 +4259,11 @@ LibraryManager.library = { memmove__deps: ['memcpy'], memmove: function(dest, src, num) { dest = dest|0; src = src|0; num = num|0; - if ((src|0 < (dest|0)) & (dest|0 < ((src + num)|0))) { + if (((src|0) < (dest|0)) & ((dest|0) < ((src + num)|0))) { // Unlikely case: Copy backwards in a safe manner src = (src + num)|0; dest = (dest + num)|0; - while (num|0 > 0) { + while ((num|0) > 0) { dest = (dest - 1)|0; src = (src - 1)|0; num = (num - 1)|0; diff --git a/tests/runner.py b/tests/runner.py index 626008302ec48..b698093381299 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -4168,6 +4168,35 @@ def test_memmove(self): ''' self.do_run(src, 'memmove can be very very useful') + def test_memmove2(self): + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('need ta2') + + src = r''' + #include + #include + #include + int main() { + int sum = 0; + char buffer[256]; + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 10; j++) { + for (int k = 0; k < 35; k++) { + for (int t = 0; t < 256; t++) buffer[t] = t; + char *dest = buffer + i; + char *src = buffer + j; + if (dest == src) continue; + //printf("%d, %d, %d\n", i, j, k); + assert(memmove(dest, src, k) == dest); + for (int t = 0; t < 256; t++) sum += buffer[t]; + } + } + } + printf("final: %d.\n", sum); + return 1; + } + ''' + self.do_run(src, 'final: -403200.'); + def test_bsearch(self): if Settings.QUANTUM_SIZE == 1: return self.skip('Test cannot work with q1') From 647b5cf5ceb346d9eb417e250c46151cf95c12cd Mon Sep 17 00:00:00 2001 From: Aleksander Guryanov Date: Tue, 5 Feb 2013 21:10:51 +0700 Subject: [PATCH 023/326] Test for memmove --- tests/runner.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index b698093381299..71414dd5f1022 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -4197,6 +4197,19 @@ def test_memmove2(self): ''' self.do_run(src, 'final: -403200.'); + def test_memmove3(self): + src = ''' + #include + #include + int main() { + char str[] = "memmove can be vvery useful....!"; + memmove(str+15, str+16, 17); + puts(str); + return 0; + } + ''' + self.do_run(src, 'memmove can be very useful....!') + def test_bsearch(self): if Settings.QUANTUM_SIZE == 1: return self.skip('Test cannot work with q1') From 0e317a7bd6f61f7bd0245da44d8b2eebc48d2493 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 18:19:48 -0800 Subject: [PATCH 024/326] fix struct flock --- src/library.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/library.js b/src/library.js index 1e026937f105f..9eb01ac790cc5 100644 --- a/src/library.js +++ b/src/library.js @@ -1110,12 +1110,12 @@ LibraryManager.library = { // ========================================================================== __flock_struct_layout: Runtime.generateStructInfo([ - 'l_type', - 'l_whence', - 'l_start', - 'l_len', - 'l_pid', - 'l_xxx'], '%struct.flock'), + ['i16', 'l_type'], + ['i16', 'l_whence'], + ['i32', 'l_start'], + ['i32', 'l_len'], + ['i16', 'l_pid'], + ['i16', 'l_xxx']]), open__deps: ['$FS', '__setErrNo', '$ERRNO_CODES', '__dirent_struct_layout'], open: function(path, oflag, varargs) { // int open(const char *path, int oflag, ...); From e5be72c60d6368b517eb380bba0880e1bb91ef17 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 18:45:25 -0800 Subject: [PATCH 025/326] fix struct.stat --- src/library.js | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/library.js b/src/library.js index 9eb01ac790cc5..e10563dfbb101 100644 --- a/src/library.js +++ b/src/library.js @@ -877,23 +877,23 @@ LibraryManager.library = { // ========================================================================== __stat_struct_layout: Runtime.generateStructInfo([ - 'st_dev', - 'st_ino', - 'st_mode', - 'st_nlink', - 'st_uid', - 'st_gid', - 'st_rdev', - 'st_size', - 'st_atime', - 'st_spare1', - 'st_mtime', - 'st_spare2', - 'st_ctime', - 'st_spare3', - 'st_blksize', - 'st_blocks', - 'st_spare4'], '%struct.stat'), + ['i32', 'st_dev'], + ['i32', 'st_ino'], + ['i32', 'st_mode'], + ['i32', 'st_nlink'], + ['i32', 'st_uid'], + ['i32', 'st_gid'], + ['i32', 'st_rdev'], + ['i32', 'st_size'], + ['i32', 'st_atime'], + ['i32', 'st_spare1'], + ['i32', 'st_mtime'], + ['i32', 'st_spare2'], + ['i32', 'st_ctime'], + ['i32', 'st_spare3'], + ['i32', 'st_blksize'], + ['i32', 'st_blocks'], + ['i32', 'st_spare4']]), stat__deps: ['$FS', '__stat_struct_layout'], stat: function(path, buf, dontResolveLastLink) { // http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html From 7cc767bd36be39500f9dc60244b72a6761c34139 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 18:48:30 -0800 Subject: [PATCH 026/326] fix struct.dirent --- src/library.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index e10563dfbb101..792b4f7d22422 100644 --- a/src/library.js +++ b/src/library.js @@ -624,7 +624,12 @@ LibraryManager.library = { // dirent.h // ========================================================================== - __dirent_struct_layout: Runtime.generateStructInfo(['d_ino', 'd_name', 'd_off', 'd_reclen', 'd_type'], '%struct.dirent'), + __dirent_struct_layout: Runtime.generateStructInfo([ + ['i32', 'd_ino'], + ['[1024 x i8]', 'd_name'], + ['i32', 'd_off'], + ['i32', 'd_reclen'], + ['i32', 'd_type']]), opendir__deps: ['$FS', '__setErrNo', '$ERRNO_CODES', '__dirent_struct_layout'], opendir: function(dirname) { // DIR *opendir(const char *dirname); From fe8fa5b87da2e0f02cc90f948d7b38857d2c611e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 18:49:43 -0800 Subject: [PATCH 027/326] fix struct.utimbuf --- src/library.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index 792b4f7d22422..080ecb335a64b 100644 --- a/src/library.js +++ b/src/library.js @@ -791,7 +791,9 @@ LibraryManager.library = { // utime.h // ========================================================================== - __utimbuf_struct_layout: Runtime.generateStructInfo(['actime', 'modtime'], '%struct.utimbuf'), + __utimbuf_struct_layout: Runtime.generateStructInfo([ + ['i32', 'actime'], + ['i32', 'modtime']]), utime__deps: ['$FS', '__setErrNo', '$ERRNO_CODES', '__utimbuf_struct_layout'], utime: function(path, times) { // int utime(const char *path, const struct utimbuf *times); From 7ceb8568b438515c4990e77dbe4a3b77b7a2ccb1 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 18:50:53 -0800 Subject: [PATCH 028/326] fix struct.statvfs --- src/library.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/library.js b/src/library.js index 080ecb335a64b..b7b43a9212fe0 100644 --- a/src/library.js +++ b/src/library.js @@ -1072,17 +1072,17 @@ LibraryManager.library = { // ========================================================================== __statvfs_struct_layout: Runtime.generateStructInfo([ - 'f_bsize', - 'f_frsize', - 'f_blocks', - 'f_bfree', - 'f_bavail', - 'f_files', - 'f_ffree', - 'f_favail', - 'f_fsid', - 'f_flag', - 'f_namemax'], '%struct.statvfs'), + ['i32', 'f_bsize'], + ['i32', 'f_frsize'], + ['i32', 'f_blocks'], + ['i32', 'f_bfree'], + ['i32', 'f_bavail'], + ['i32', 'f_files'], + ['i32', 'f_ffree'], + ['i32', 'f_favail'], + ['i32', 'f_fsid'], + ['i32', 'f_flag'], + ['i32', 'f_namemax']]), statvfs__deps: ['$FS', '__statvfs_struct_layout'], statvfs: function(path, buf) { // http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html From 860ee4943367055d76fb0c02649f64e407ab0293 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 18:50:53 -0800 Subject: [PATCH 029/326] fix struct.pollfd --- src/library.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index b7b43a9212fe0..bf5f125018149 100644 --- a/src/library.js +++ b/src/library.js @@ -1343,7 +1343,10 @@ LibraryManager.library = { // poll.h // ========================================================================== - __pollfd_struct_layout: Runtime.generateStructInfo(['fd', 'events', 'revents'], '%struct.pollfd'), + __pollfd_struct_layout: Runtime.generateStructInfo([ + ['i32', 'fd'], + ['i16', 'events'], + ['i16', 'revents']]), poll__deps: ['$FS', '__pollfd_struct_layout'], poll: function(fds, nfds, timeout) { // int poll(struct pollfd fds[], nfds_t nfds, int timeout); From b133908ab1a00639ceda438f46fc3b2856bd4bc4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 19:05:21 -0800 Subject: [PATCH 030/326] fix struct.utsname and allow simple bN syntax in struct definitions for fields of N bytes Conflicts: src/library.js --- src/library.js | 12 ++++++------ src/runtime.js | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/library.js b/src/library.js index bf5f125018149..afd7262a4e6f6 100644 --- a/src/library.js +++ b/src/library.js @@ -626,7 +626,7 @@ LibraryManager.library = { __dirent_struct_layout: Runtime.generateStructInfo([ ['i32', 'd_ino'], - ['[1024 x i8]', 'd_name'], + ['b1024', 'd_name'], ['i32', 'd_off'], ['i32', 'd_reclen'], ['i32', 'd_type']]), @@ -5629,11 +5629,11 @@ LibraryManager.library = { // ========================================================================== __utsname_struct_layout: Runtime.generateStructInfo([ - 'sysname', - 'nodename', - 'release', - 'version', - 'machine'], '%struct.utsname'), + ['b32', 'sysname'], + ['b32', 'nodename'], + ['b32', 'release'], + ['b32', 'version'], + ['b32', 'machine']]), uname__deps: ['__utsname_struct_layout'], uname: function(name) { // int uname(struct utsname *name); diff --git a/src/runtime.js b/src/runtime.js index e5b86065929c1..95c74647f3945 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -242,6 +242,10 @@ var Runtime = { } else if (Runtime.isStructType(field)) { size = Types.types[field].flatSize; alignSize = Types.types[field].alignSize; + } else if (field[0] == 'b') { + // bN, large number field, like a [N x i8] + size = field.substr(1)|0; + alignSize = 1; } else { throw 'Unclear type in struct: ' + field + ', in ' + type.name_ + ' :: ' + dump(Types.types[type.name_]); } From 6a555f93d522781961707c296c37a7f41d38d37b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 19:08:35 -0800 Subject: [PATCH 031/326] fix struct.tm --- src/library.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/library.js b/src/library.js index afd7262a4e6f6..4300cef1947bf 100644 --- a/src/library.js +++ b/src/library.js @@ -5833,17 +5833,17 @@ LibraryManager.library = { }, __tm_struct_layout: Runtime.generateStructInfo([ - 'tm_sec', - 'tm_min', - 'tm_hour', - 'tm_mday', - 'tm_mon', - 'tm_year', - 'tm_wday', - 'tm_yday', - 'tm_isdst', - 'tm_gmtoff', - 'tm_zone'], '%struct.tm'), + ['i32', 'tm_sec'], + ['i32', 'tm_min'], + ['i32', 'tm_hour'], + ['i32', 'tm_mday'], + ['i32', 'tm_mon'], + ['i32', 'tm_year'], + ['i32', 'tm_wday'], + ['i32', 'tm_yday'], + ['i32', 'tm_isdst'], + ['i32', 'tm_gmtoff'], + ['i32', 'tm_zone']]), // Statically allocated time struct. __tm_current: 'allocate({{{ Runtime.QUANTUM_SIZE }}}*26, "i8", ALLOC_STACK)', // Statically allocated timezone strings. From 5b3c6924a7d1a4e4623c70b1bcb8348a8c8ea295 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 19:10:11 -0800 Subject: [PATCH 032/326] fix struct.timespec --- src/library.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index 4300cef1947bf..66d7c298338e2 100644 --- a/src/library.js +++ b/src/library.js @@ -6042,7 +6042,9 @@ LibraryManager.library = { // sys/time.h // ========================================================================== - __timespec_struct_layout: Runtime.generateStructInfo(['tv_sec', 'tv_nsec'], '%struct.timespec'), + __timespec_struct_layout: Runtime.generateStructInfo([ + ['i32', 'tv_sec'], + ['i32', 'tv_nsec']]), // TODO: Implement these for real. clock_gettime__deps: ['__timespec_struct_layout'], clock_gettime: function(clk_id, tp) { From 2eb84a5ae1690b4d57758f936167af20e2139d8d Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 19:12:15 -0800 Subject: [PATCH 033/326] fix struct.tms --- src/library.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/library.js b/src/library.js index 66d7c298338e2..35cefb27c6431 100644 --- a/src/library.js +++ b/src/library.js @@ -6101,10 +6101,10 @@ LibraryManager.library = { // ========================================================================== __tms_struct_layout: Runtime.generateStructInfo([ - 'tms_utime', - 'tms_stime', - 'tms_cutime', - 'tms_cstime'], '%struct.tms'), + ['i32', 'tms_utime'], + ['i32', 'tms_stime'], + ['i32', 'tms_cutime'], + ['i32', 'tms_cstime']]), times__deps: ['__tms_struct_layout', 'memset'], times: function(buffer) { // clock_t times(struct tms *buffer); From 130ac4b7355b813d800c84a1ab4cfaeb8d1b1f97 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 19:13:24 -0800 Subject: [PATCH 034/326] fix struct.rlimit --- src/library.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index 35cefb27c6431..2faab96e4a6f8 100644 --- a/src/library.js +++ b/src/library.js @@ -6626,7 +6626,9 @@ LibraryManager.library = { // ========================================================================== // TODO: Implement for real. - __rlimit_struct_layout: Runtime.generateStructInfo(['rlim_cur', 'rlim_max'], '%struct.rlimit'), + __rlimit_struct_layout: Runtime.generateStructInfo([ + ['i32', 'rlim_cur'], + ['i32', 'rlim_max']]), getrlimit__deps: ['__rlimit_struct_layout'], getrlimit: function(resource, rlp) { // int getrlimit(int resource, struct rlimit *rlp); From aa2ad76765cc6968894f035a7acb0fe23f497c7f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 16 Nov 2012 19:19:00 -0800 Subject: [PATCH 035/326] fix struct.rusage --- src/library.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/library.js b/src/library.js index 2faab96e4a6f8..d4a0046c42bf5 100644 --- a/src/library.js +++ b/src/library.js @@ -6644,22 +6644,22 @@ LibraryManager.library = { // TODO: Implement for real. We just do time used, and no useful data __rusage_struct_layout: Runtime.generateStructInfo([ - 'ru_utime', - 'ru_stime', - 'ru_maxrss', - 'ru_ixrss', - 'ru_idrss', - 'ru_isrss', - 'ru_minflt', - 'ru_majflt', - 'ru_nswap', - 'ru_inblock', - 'ru_oublock', - 'ru_msgsnd', - 'ru_msgrcv', - 'ru_nsignals', - 'ru_nvcsw', - 'ru_nivcsw'], '%struct.rusage'), + ['i64', 'ru_utime'], + ['i64', 'ru_stime'], + ['i32', 'ru_maxrss'], + ['i32', 'ru_ixrss'], + ['i32', 'ru_idrss'], + ['i32', 'ru_isrss'], + ['i32', 'ru_minflt'], + ['i32', 'ru_majflt'], + ['i32', 'ru_nswap'], + ['i32', 'ru_inblock'], + ['i32', 'ru_oublock'], + ['i32', 'ru_msgsnd'], + ['i32', 'ru_msgrcv'], + ['i32', 'ru_nsignals'], + ['i32', 'ru_nvcsw'], + ['i32', 'ru_nivcsw']]), getrusage__deps: ['__rusage_struct_layout'], getrusage: function(resource, rlp) { // %struct.timeval = type { i32, i32 } From 7c4144bf31b38db67f7e1c1d42e28ad324b28d2b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 6 Feb 2013 11:02:30 -0800 Subject: [PATCH 036/326] test for issue #838 --- tests/runner.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index b698093381299..c4760b07fd0f0 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -3966,6 +3966,18 @@ def test_timeb(self): ''' self.do_run(src, '*0\n') + def test_time_c(self): + src = r''' + #include + #include + + int main() { + time_t t = time(0); + printf("time: %s\n", ctime(&t)); + } + ''' + self.do_run(src, 'time: ') # compilation check, mainly + def test_intentional_fault(self): if Settings.ASM_JS: return self.skip('no throw support in asm') # Some programs intentionally segfault themselves, we should compile that into a throw From 4fd6da423bf6eb8aff0b9709793b730b569f13e2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 6 Feb 2013 11:45:13 -0800 Subject: [PATCH 037/326] fix gluPerspective and add test --- src/library_gl.js | 5 +- tests/perspective.c | 408 ++++++++++++++++++++++++++++++++++++++++++ tests/perspective.png | Bin 0 -> 2477 bytes tests/runner.py | 3 + 4 files changed, 414 insertions(+), 2 deletions(-) create mode 100644 tests/perspective.c create mode 100644 tests/perspective.png diff --git a/src/library_gl.js b/src/library_gl.js index f7966dabc9385..5c64e5f6c2edd 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2464,8 +2464,9 @@ var LibraryGL = { gluPerspective: function(fov, aspect, near, far) { GL.immediate.matricesModified = true; - GL.immediate.matrix.lib.mat4.multiply(GL.immediate.matrix[GL.immediate.currentMatrix], - GL.immediate.matrix.lib.mat4.perspective(fov, aspect, near, far, GL.immediate.currentMatrix)); + GL.immediate.matrix[GL.immediate.currentMatrix] = + GL.immediate.matrix.lib.mat4.perspective(fov, aspect, near, far, + GL.immediate.matrix[GL.immediate.currentMatrix]); }, gluLookAt: function(ex, ey, ez, cx, cy, cz, ux, uy, uz) { diff --git a/tests/perspective.c b/tests/perspective.c new file mode 100644 index 0000000000000..72f4c50f8a9ae --- /dev/null +++ b/tests/perspective.c @@ -0,0 +1,408 @@ +/* + * SDL OpenGL Tutorial. + * (c) Michael Vance, 2000 + * briareos@lokigames.com + * + * Distributed under terms of the LGPL. + */ + +#include + +#ifdef EMSCRIPTEN +#include +#include +#include "emscripten.h" +#else +#include +#include +#endif +#include +#include + +#ifdef EMSCRIPTEN + #define emColor4ubv(x) +#else +#define emColor4ubv(x) glColor4ubv(x) +#endif + +static GLboolean should_rotate = GL_TRUE; + +static void quit_tutorial( int code ) +{ + /* + * Quit SDL so we can release the fullscreen + * mode and restore the previous video settings, + * etc. + */ + SDL_Quit( ); + + /* Exit program. */ + exit( code ); +} + +static void handle_key_down( SDL_keysym* keysym ) +{ + + /* + * We're only interested if 'Esc' has + * been presssed. + * + * EXERCISE: + * Handle the arrow keys and have that change the + * viewing position/angle. + */ + switch( keysym->sym ) { + case SDLK_ESCAPE: + quit_tutorial( 0 ); + break; + case SDLK_SPACE: + should_rotate = !should_rotate; + break; + default: + break; + } + +} + +static void process_events( void ) +{ + /* Our SDL event placeholder. */ + SDL_Event event; + + /* Grab all the events off the queue. */ + while( SDL_PollEvent( &event ) ) { + + switch( event.type ) { + case SDL_KEYDOWN: + /* Handle key presses. */ + handle_key_down( &event.key.keysym ); + break; + case SDL_QUIT: + /* Handle quit requests (like Ctrl-c). */ + quit_tutorial( 0 ); + break; + } + + } + +} + +static void draw_screen( void ) +{ + /* Our angle of rotation. */ + static float angle = 0.0f; + + /* + * EXERCISE: + * Replace this awful mess with vertex + * arrays and a call to glDrawElements. + * + * EXERCISE: + * After completing the above, change + * it to use compiled vertex arrays. + * + * EXERCISE: + * Verify my windings are correct here ;). + */ + static GLfloat v0[] = { -1.0f, -1.0f, 1.0f }; + static GLfloat v1[] = { 1.0f, -1.0f, 1.0f }; + static GLfloat v2[] = { 1.0f, 1.0f, 1.0f }; + static GLfloat v3[] = { -1.0f, 1.0f, 1.0f }; + static GLfloat v4[] = { -1.0f, -1.0f, -1.0f }; + static GLfloat v5[] = { 1.0f, -1.0f, -1.0f }; + static GLfloat v6[] = { 1.0f, 1.0f, -1.0f }; + static GLfloat v7[] = { -1.0f, 1.0f, -1.0f }; + static GLubyte red[] = { 255, 0, 0, 255 }; + static GLubyte green[] = { 0, 255, 0, 255 }; + static GLubyte blue[] = { 0, 0, 255, 255 }; + static GLubyte white[] = { 255, 255, 255, 255 }; + static GLubyte yellow[] = { 0, 255, 255, 255 }; + static GLubyte black[] = { 0, 0, 0, 255 }; + static GLubyte orange[] = { 255, 255, 0, 255 }; + static GLubyte purple[] = { 255, 0, 255, 0 }; + + /* Clear the color and depth buffers. */ + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + + /* We don't want to modify the projection matrix. */ + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity( ); + + /* Move down the z-axis. */ + glTranslatef( 0.0, 0.0, -5.0 ); + + /* Rotate. */ + glRotatef( angle, 0.0, 1.0, 0.0 ); + + if( should_rotate ) { + + if( ++angle > 360.0f ) { + angle = 0.0f; + } + + } + + /* Send our triangle data to the pipeline. */ + glBegin( GL_TRIANGLES ); + + emColor4ubv( red ); + glVertex3fv( v0 ); + emColor4ubv( green ); + glVertex3fv( v1 ); + emColor4ubv( blue ); + glVertex3fv( v2 ); + + emColor4ubv( red ); + glVertex3fv( v0 ); + emColor4ubv( blue ); + glVertex3fv( v2 ); + emColor4ubv( white ); + glVertex3fv( v3 ); + + emColor4ubv( green ); + glVertex3fv( v1 ); + emColor4ubv( black ); + glVertex3fv( v5 ); + emColor4ubv( orange ); + glVertex3fv( v6 ); + + emColor4ubv( green ); + glVertex3fv( v1 ); + emColor4ubv( orange ); + glVertex3fv( v6 ); + emColor4ubv( blue ); + glVertex3fv( v2 ); + + emColor4ubv( black ); + glVertex3fv( v5 ); + emColor4ubv( yellow ); + glVertex3fv( v4 ); + emColor4ubv( purple ); + glVertex3fv( v7 ); + + emColor4ubv( black ); + glVertex3fv( v5 ); + emColor4ubv( purple ); + glVertex3fv( v7 ); + emColor4ubv( orange ); + glVertex3fv( v6 ); + + emColor4ubv( yellow ); + glVertex3fv( v4 ); + emColor4ubv( red ); + glVertex3fv( v0 ); + emColor4ubv( white ); + glVertex3fv( v3 ); + + emColor4ubv( yellow ); + glVertex3fv( v4 ); + emColor4ubv( white ); + glVertex3fv( v3 ); + emColor4ubv( purple ); + glVertex3fv( v7 ); + + emColor4ubv( white ); + glVertex3fv( v3 ); + emColor4ubv( blue ); + glVertex3fv( v2 ); + emColor4ubv( orange ); + glVertex3fv( v6 ); + + emColor4ubv( white ); + glVertex3fv( v3 ); + emColor4ubv( orange ); + glVertex3fv( v6 ); + emColor4ubv( purple ); + glVertex3fv( v7 ); + + emColor4ubv( green ); + glVertex3fv( v1 ); + emColor4ubv( red ); + glVertex3fv( v0 ); + emColor4ubv( yellow ); + glVertex3fv( v4 ); + + emColor4ubv( green ); + glVertex3fv( v1 ); + emColor4ubv( yellow ); + glVertex3fv( v4 ); + emColor4ubv( black ); + glVertex3fv( v5 ); + + glEnd( ); + + /* + * EXERCISE: + * Draw text telling the user that 'Spc' + * pauses the rotation and 'Esc' quits. + * Do it using vetors and textured quads. + */ + + /* + * Swap the buffers. This this tells the driver to + * render the next frame from the contents of the + * back-buffer, and to set all rendering operations + * to occur on what was the front-buffer. + * + * Double buffering prevents nasty visual tearing + * from the application drawing on areas of the + * screen that are being updated at the same time. + */ + SDL_GL_SwapBuffers( ); +} + +static void setup_opengl( int width, int height ) +{ + float ratio = (float) width / (float) height; + + /* Our shading model--Gouraud (smooth). */ + glShadeModel( GL_SMOOTH ); + + /* Culling. */ + glCullFace( GL_BACK ); + glFrontFace( GL_CCW ); + glEnable( GL_CULL_FACE ); + + /* Set the clear color. */ + glClearColor( 0, 0, 0, 0 ); + + /* Setup our viewport. */ + glViewport( 0, 0, width, height ); + + /* + * Change to the projection matrix and set + * our viewing volume. + */ + glMatrixMode( GL_PROJECTION ); + glLoadIdentity( ); + /* + * EXERCISE: + * Replace this with a call to glFrustum. + */ + gluPerspective( 60.0, ratio, 1.0, 1024.0 ); +} + +void one_iter(); +void one_iter() { + process_events( ); + /* Draw the screen. */ + draw_screen( ); +} + +int main( int argc, char* argv[] ) +{ + /* Information about the current video settings. */ + const SDL_VideoInfo* info = NULL; + /* Dimensions of our window. */ + int width = 0; + int height = 0; + /* Color depth in bits of our window. */ + int bpp = 0; + /* Flags we will pass into SDL_SetVideoMode. */ + int flags = 0; + + /* First, initialize SDL's video subsystem. */ + if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { + /* Failed, exit. */ + fprintf( stderr, "Video initialization failed: %s\n", + SDL_GetError( ) ); + quit_tutorial( 1 ); + } + + /* Let's get some video information. */ + info = SDL_GetVideoInfo( ); + + if( !info ) { + /* This should probably never happen. */ + fprintf( stderr, "Video query failed: %s\n", + SDL_GetError( ) ); + quit_tutorial( 1 ); + } + + /* + * Set our width/height to 640/480 (you would + * of course let the user decide this in a normal + * app). We get the bpp we will request from + * the display. On X11, VidMode can't change + * resolution, so this is probably being overly + * safe. Under Win32, ChangeDisplaySettings + * can change the bpp. + */ + width = 640; + height = 480; + bpp = info->vfmt->BitsPerPixel; + + /* + * Now, we want to setup our requested + * window attributes for our OpenGL window. + * We want *at least* 5 bits of red, green + * and blue. We also want at least a 16-bit + * depth buffer. + * + * The last thing we do is request a double + * buffered window. '1' turns on double + * buffering, '0' turns it off. + * + * Note that we do not use SDL_DOUBLEBUF in + * the flags to SDL_SetVideoMode. That does + * not affect the GL attribute state, only + * the standard 2D blitting setup. + */ +// SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 ); +// SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 ); +// SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 ); +// SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); +// SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + + /* + * We want to request that SDL provide us + * with an OpenGL window, in a fullscreen + * video mode. + * + * EXERCISE: + * Make starting windowed an option, and + * handle the resize events properly with + * glViewport. + */ + flags = SDL_OPENGL;// | SDL_FULLSCREEN; + + /* + * Set the video mode + */ + if( SDL_SetVideoMode( width, height, bpp, flags ) == 0 ) { + /* + * This could happen for a variety of reasons, + * including DISPLAY not being set, the specified + * resolution not being available, etc. + */ + fprintf( stderr, "Video mode set failed: %s\n", + SDL_GetError( ) ); + quit_tutorial( 1 ); + } + + /* + * At this point, we should have a properly setup + * double-buffered window for use with OpenGL. + */ + setup_opengl( width, height ); + + /* + * Now we want to begin our normal app process-- + * an event loop with a lot of redrawing. + */ + one_iter(); // just one for testing purposes + +#ifndef EMSCRIPTEN + SDL_Delay(2000); +#endif + + /* + * EXERCISE: + * Record timings using SDL_GetTicks() and + * and print out frames per second at program + * end. + */ + + /* Never reached. */ + return 0; +} diff --git a/tests/perspective.png b/tests/perspective.png new file mode 100644 index 0000000000000000000000000000000000000000..04cedc71f0fa219f958ab02ae9393168c92c2b50 GIT binary patch literal 2477 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A1{5*9c;^WN180e+i(^Q|oVQmSIS(@k z9NF+@f61o9j)w6|WP9eb1C@;eYKB0={EEiNyZQ`1uNn`fmhNXTSjo;c{pw$)154yI zV#2<2Gfb{pP%x@sG#p0L!)U%3Egwe9$w5#ZP_zCUHH(4a!+N`$Ud;t}u5OnH1&61r KpUXO@geCw?^8~X1 literal 0 HcmV?d00001 diff --git a/tests/runner.py b/tests/runner.py index c4760b07fd0f0..48af246e38f6b 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10511,6 +10511,9 @@ def test_float_tex(self): def test_subdata(self): self.btest('gl_subdata.cpp', reference='float_tex.png') + def test_perspective(self): + self.btest('perspective.c', reference='perspective.png') + def test_runtimelink(self): main, supp = self.setup_runtimelink_test() From a34e8338aa0d385cc0bcd05e4047db79752b67f7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 6 Feb 2013 14:47:55 -0800 Subject: [PATCH 038/326] use Math.imul in benchmarks --- tests/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index 48af246e38f6b..975a2aceb07fa 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10818,7 +10818,7 @@ def do_benchmark(self, name, src, args=[], expected_output='FAIL', emcc_args=[], try_delete(final_filename) output = Popen([PYTHON, EMCC, filename, #'-O3', '-O2', '-s', 'INLINING_LIMIT=0', '-s', 'DOUBLE_MODE=0', '-s', 'PRECISE_I64_MATH=0', - '-s', 'ASM_JS=1',# '-s', 'USE_MATH_IMUL=1', + '-s', 'ASM_JS=1', '-s', 'USE_MATH_IMUL=1', '-s', 'TOTAL_MEMORY=128*1024*1024', '-s', 'FAST_MEMORY=10*1024*1024', '-o', final_filename] + shared_args + emcc_args, stdout=PIPE, stderr=self.stderr_redirect).communicate() assert os.path.exists(final_filename), 'Failed to compile file: ' + output[0] From 3360757e086753077696d96d06fc1c5edb44d175 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 6 Feb 2013 14:54:51 -0800 Subject: [PATCH 039/326] better checks for stride in prepareClientAttributes --- src/library_gl.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index 5c64e5f6c2edd..5102dd0de66d0 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1997,6 +1997,7 @@ var LibraryGL = { #endif if (attribute.stride) stride = attribute.stride; } + assert(stride || beginEnd); // beginEnd can not have stride in the attributes, that is fine var bytes = 0; for (var i = 0; i < attributes.length; i++) { @@ -2010,7 +2011,7 @@ var LibraryGL = { bytes += attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot]; if (bytes % 4 != 0) bytes += 4 - (bytes % 4); // XXX assuming 4-alignment } - assert(stride == 0 || bytes <= stride); + assert(beginEnd || bytes <= stride); // if not begin-end, explicit stride should make sense with total byte size if (bytes < stride) { // ensure the size is that of the stride bytes = stride; } From 1c1d7036c6699aa91e0a29a07ec0872bc8a8dec3 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 6 Feb 2013 16:06:24 -0800 Subject: [PATCH 040/326] support packed attributes in gl emulation code, perform restriding manually --- src/library_gl.js | 67 ++++++++++--- tests/gl_ps_packed.c | 230 +++++++++++++++++++++++++++++++++++++++++++ tests/runner.py | 5 + 3 files changed, 286 insertions(+), 16 deletions(-) create mode 100644 tests/gl_ps_packed.c diff --git a/src/library_gl.js b/src/library_gl.js index 5102dd0de66d0..6144f548db461 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1997,23 +1997,58 @@ var LibraryGL = { #endif if (attribute.stride) stride = attribute.stride; } - assert(stride || beginEnd); // beginEnd can not have stride in the attributes, that is fine - - var bytes = 0; - for (var i = 0; i < attributes.length; i++) { - var attribute = attributes[i]; - if (!attribute) break; - attribute.offset = attribute.pointer - start; - if (attribute.offset > bytes) { // ensure we start where we should - assert((attribute.offset - bytes)%4 == 0); // XXX assuming 4-alignment - bytes += attribute.offset - bytes; + var bytes = 0; // total size in bytes + if (!stride && !beginEnd) { + // beginEnd can not have stride in the attributes, that is fine. otherwise, + // no stride means that all attributes are in fact packed. to keep the rest of + // our emulation code simple, we perform unpacking/restriding here. this adds overhead, so + // it is a good idea to not hit this! +#if ASSERTIONS + Runtime.warnOnce('Unpacking/restriding attributes, this is not fast'); +#endif + if (!GL.immediate.restrideBuffer) GL.immediate.restrideBuffer = _malloc(GL.immediate.MAX_TEMP_BUFFER_SIZE); + start = GL.immediate.restrideBuffer; +#if ASSERTIONS + assert(start % 4 == 0); +#endif + // calculate restrided offsets and total size + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + if (!attribute) break; + var size = attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot]; + if (size % 4 != 0) size += 4 - (size % 4); // align everything + attribute.offset = bytes; + bytes += size; + } + // copy out the data (we need to know the stride for that, and define attribute.pointer + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + if (!attribute) break; + var size4 = Math.floor((attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot])/4); + for (var j = 0; j < count; j++) { + for (var k = 0; k < size4; k++) { // copy in chunks of 4 bytes, our alignment makes this possible + HEAP32[((start + attribute.offset + bytes*j)>>2) + k] = HEAP32[(attribute.pointer>>2) + j*size4 + k]; + } + } + attribute.pointer = start + attribute.offset; + } + } else { + // normal situation, everything is strided and in the same buffer + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + if (!attribute) break; + attribute.offset = attribute.pointer - start; + if (attribute.offset > bytes) { // ensure we start where we should + assert((attribute.offset - bytes)%4 == 0); // XXX assuming 4-alignment + bytes += attribute.offset - bytes; + } + bytes += attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot]; + if (bytes % 4 != 0) bytes += 4 - (bytes % 4); // XXX assuming 4-alignment + } + assert(beginEnd || bytes <= stride); // if not begin-end, explicit stride should make sense with total byte size + if (bytes < stride) { // ensure the size is that of the stride + bytes = stride; } - bytes += attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot]; - if (bytes % 4 != 0) bytes += 4 - (bytes % 4); // XXX assuming 4-alignment - } - assert(beginEnd || bytes <= stride); // if not begin-end, explicit stride should make sense with total byte size - if (bytes < stride) { // ensure the size is that of the stride - bytes = stride; } GL.immediate.stride = bytes; diff --git a/tests/gl_ps_packed.c b/tests/gl_ps_packed.c new file mode 100644 index 0000000000000..9ab99cb894453 --- /dev/null +++ b/tests/gl_ps_packed.c @@ -0,0 +1,230 @@ +/******************************************************************* + * * + * Using SDL With OpenGL * + * * + * Tutorial by Kyle Foley (sdw) * + * * + * http://gpwiki.org/index.php/SDL:Tutorials:Using_SDL_with_OpenGL * + * * + *******************************************************************/ + +/* +THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION +AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN. + +THE ORIGINAL AUTHOR IS KYLE FOLEY. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +#if !EMSCRIPTEN +#define USE_GLEW 1 +#endif + +#if USE_GLEW +#include "GL/glew.h" +#endif + +#include "SDL/SDL.h" +#include "SDL/SDL_image.h" +#if !USE_GLEW +#include "SDL/SDL_opengl.h" +#endif + +#include +#include +#include + +void shaders() { +#if USE_GLEW + glewInit(); +#endif + + GLint ok; + + const char *vertexShader = "void main(void) \n" + "{ \n" + " gl_Position = ftransform(); \n" + " gl_TexCoord[0] = gl_MultiTexCoord0; \n" + " gl_FrontColor = gl_Color; \n" + "} \n"; + const char *fragmentShader = "uniform sampler2D tex0; \n" + "void main(void) \n" + "{ \n" + " gl_FragColor = gl_Color * texture2D(tex0, gl_TexCoord[0].xy); \n" + "} \n"; + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &vertexShader, NULL); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &ok); + assert(ok); + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, &fragmentShader, NULL); + glCompileShader(fs); + glGetShaderiv(fs, GL_COMPILE_STATUS, &ok); + assert(ok); + + GLuint program = glCreateProgram(); + + glAttachShader(program, vs); + glAttachShader(program, fs); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &ok); + assert(ok); + + glUseProgram(program); +} + +int main(int argc, char *argv[]) +{ + SDL_Surface *screen; + + // Slightly different SDL initialization + if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { + printf("Unable to initialize SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // *new* + + screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL ); // *changed* + if ( !screen ) { + printf("Unable to set video mode: %s\n", SDL_GetError()); + return 1; + } + + // Set the OpenGL state after creating the context with SDL_SetVideoMode + + glClearColor( 0, 0, 0, 0 ); + +#if !EMSCRIPTEN + glEnable( GL_TEXTURE_2D ); // Need this to display a texture XXX unnecessary in OpenGL ES 2.0/WebGL +#endif + + glViewport( 0, 0, 640, 480 ); + + glMatrixMode( GL_PROJECTION ); + GLfloat matrixData[] = { 2.0/640, 0, 0, 0, + 0, -2.0/480, 0, 0, + 0, 0, -1, 0, + -1, 1, 0, 1 }; + glLoadMatrixf(matrixData); // test loadmatrix + + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + + // Load the OpenGL texture + + GLuint texture; // Texture object handle + SDL_Surface *surface; // Gives us the information to make the texture + + if ( (surface = IMG_Load("screenshot.png")) ) { + + // Check that the image's width is a power of 2 + if ( (surface->w & (surface->w - 1)) != 0 ) { + printf("warning: image.bmp's width is not a power of 2\n"); + } + + // Also check if the height is a power of 2 + if ( (surface->h & (surface->h - 1)) != 0 ) { + printf("warning: image.bmp's height is not a power of 2\n"); + } + + // Have OpenGL generate a texture object handle for us + glGenTextures( 1, &texture ); + + // Bind the texture object + glBindTexture( GL_TEXTURE_2D, texture ); + + // Set the texture's stretching properties + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + + //SDL_LockSurface(surface); + + // Add some greyness + memset(surface->pixels, 0x66, surface->w*surface->h); + + // Edit the texture object's image data using the information SDL_Surface gives us + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels ); + + //SDL_UnlockSurface(surface); + } + else { + printf("SDL could not load image.bmp: %s\n", SDL_GetError()); + SDL_Quit(); + return 1; + } + + // Free the SDL_Surface only if it was successfully created + if ( surface ) { + SDL_FreeSurface( surface ); + } + + // Clear the screen before drawing + glClear( GL_COLOR_BUFFER_BIT ); + + shaders(); + + // Bind the texture to which subsequent calls refer to + glBindTexture( GL_TEXTURE_2D, texture ); + + // Use clientside vertex pointers to render two items. In this test we have each + // attribute in a separate buffer, packed (i.e. stride == 0) + GLfloat vertexData[] = { 10, 10, + 300, 10, + 300, 128, + 10, 128, + 410, 10, + 600, 10, + 630, 200, + 310, 250, + 100, 300, + 300, 300, + 300, 400, + 100, 400 }; + GLfloat textureData[] = { 0, 0, + 1, 0, + 1, 1, + 0, 1, + 0, 0.5, + 1, 0.5, + 1, 1, + 0.5, 1, + 0, 0, + 1, 0, + 1, 1, + 0, 1, }; + + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glTexCoordPointer(2, GL_FLOAT, 0, textureData); + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, vertexData); + + glDrawArrays(GL_QUADS, 0, 12); + + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + + SDL_GL_SwapBuffers(); + +#if !EMSCRIPTEN + // Wait for 3 seconds to give us a chance to see the image + SDL_Delay(3000); +#endif + + // Now we can delete the OpenGL texture and close down SDL + glDeleteTextures( 1, &texture ); + + SDL_Quit(); + + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 975a2aceb07fa..31ec06e5fdfb6 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10381,6 +10381,11 @@ def test_gl_ps(self): shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.btest('gl_ps.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) + def test_gl_ps_packed(self): + # packed data that needs to be strided + shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) + self.btest('gl_ps_packed.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) + def test_matrix_identity(self): self.btest('gl_matrix_identity.c', expected=['-1882984448', '460451840']) From 8753da903ae260ef97b5dd23950b7dc33e9935c1 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 6 Feb 2013 16:15:38 -0800 Subject: [PATCH 041/326] do not throw on an incorrect glEnableClientState, just warn --- src/library_gl.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index 6144f548db461..c43b424db6d07 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2346,7 +2346,10 @@ var LibraryGL = { case 0x8076: // GL_COLOR_ARRAY attrib = GL.immediate.COLOR; break; default: - throw 'unhandled clientstate: ' + cap; +#if ASSERTIONS + Module.printErr('WARNING: unhandled clientstate: ' + cap); +#endif + return; } if (disable && GL.immediate.enabledClientAttributes[attrib]) { GL.immediate.enabledClientAttributes[attrib] = false; From fffcc6cfa23d2eca35679f72985ebfb9007092ac Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 6 Feb 2013 16:37:24 -0800 Subject: [PATCH 042/326] option to not capture keyboard in SDL --- src/library_sdl.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/library_sdl.js b/src/library_sdl.js index cfab6410f5aec..4ad7a9a9aec65 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -607,9 +607,11 @@ var LibrarySDL = { SDL_Init: function(what) { SDL.startTime = Date.now(); // capture all key events. we just keep down and up, but also capture press to prevent default actions - document.onkeydown = SDL.receiveEvent; - document.onkeyup = SDL.receiveEvent; - document.onkeypress = SDL.receiveEvent; + if (!Module['doNotCaptureKeyboard']) { + document.onkeydown = SDL.receiveEvent; + document.onkeyup = SDL.receiveEvent; + document.onkeypress = SDL.receiveEvent; + } window.onunload = SDL.receiveEvent; SDL.keyboardState = _malloc(0x10000); _memset(SDL.keyboardState, 0, 0x10000); From f812a4423b49a3e3d85d83ff308c7586bff343cb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 7 Feb 2013 12:46:14 -0800 Subject: [PATCH 043/326] commented out explicit_zext in benchmarks --- tests/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index ce9f05511c0ec..81c433e514205 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10835,7 +10835,7 @@ def do_benchmark(self, name, src, args=[], expected_output='FAIL', emcc_args=[], try_delete(final_filename) output = Popen([PYTHON, EMCC, filename, #'-O3', - '-O2', '-s', 'INLINING_LIMIT=0', '-s', 'DOUBLE_MODE=0', '-s', 'PRECISE_I64_MATH=0', + '-O2', '-s', 'INLINING_LIMIT=0', '-s', 'DOUBLE_MODE=0', '-s', 'PRECISE_I64_MATH=0',# '-s', 'EXPLICIT_ZEXT=1', '-s', 'ASM_JS=1', '-s', 'USE_MATH_IMUL=1', '-s', 'TOTAL_MEMORY=128*1024*1024', '-s', 'FAST_MEMORY=10*1024*1024', '-o', final_filename] + shared_args + emcc_args, stdout=PIPE, stderr=self.stderr_redirect).communicate() From ede5afe800f46aef362fe9a328698cf35a33c80a Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 7 Feb 2013 12:46:32 -0800 Subject: [PATCH 044/326] Module.* options to disable image and audio autodecoding --- src/library_browser.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/library_browser.js b/src/library_browser.js index d16fbc0b2c661..6b1e956ded8b4 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -81,7 +81,7 @@ mergeInto(LibraryManager.library, { var imagePlugin = {}; imagePlugin['canHandle'] = function(name) { - return name.substr(-4) in { '.jpg': 1, '.png': 1, '.bmp': 1 }; + return !Module.noImageDecoding && name.substr(-4) in { '.jpg': 1, '.png': 1, '.bmp': 1 }; }; imagePlugin['handle'] = function(byteArray, name, onload, onerror) { var b = null; @@ -123,7 +123,7 @@ mergeInto(LibraryManager.library, { var audioPlugin = {}; audioPlugin['canHandle'] = function(name) { - return name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; + return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; }; audioPlugin['handle'] = function(byteArray, name, onload, onerror) { var done = false; From c8eb08da1e772d9320a4c41aed09eef8774f4815 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 8 Feb 2013 11:37:55 -0800 Subject: [PATCH 045/326] do not disable corrections/roundings/overflows in -O3 --- tools/shared.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index c283c1f537892..401a580b33f9f 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -569,9 +569,6 @@ def apply_opt_level(self, opt_level, noisy=False): Settings.INLINING_LIMIT = 0 Settings.DOUBLE_MODE = 0 Settings.PRECISE_I64_MATH = 0 - Settings.CORRECT_SIGNS = 0 - Settings.CORRECT_OVERFLOWS = 0 - Settings.CORRECT_ROUNDINGS = 0 if noisy: print >> sys.stderr, 'Warning: Applying some potentially unsafe optimizations! (Use -O2 if this fails.)' global Settings From 9beec600be686bb78f4c8cd65f2e80504deae625 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 8 Feb 2013 11:38:39 -0800 Subject: [PATCH 046/326] make gl temp buffer size adjustable --- src/library_gl.js | 2 +- src/settings.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index c43b424db6d07..f37fde78f8746 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1501,7 +1501,7 @@ var LibraryGL = { }, // Temporary buffers - MAX_TEMP_BUFFER_SIZE: 2*1024*1024, + MAX_TEMP_BUFFER_SIZE: {{{ GL_MAX_TEMP_BUFFER_SIZE }}}, tempBufferIndexLookup: null, tempVertexBuffers: null, tempIndexBuffers: null, diff --git a/src/settings.js b/src/settings.js index 0234d0ca9dd00..23898195c8781 100644 --- a/src/settings.js +++ b/src/settings.js @@ -148,9 +148,11 @@ var LIBRARY_DEBUG = 0; // Print out when we enter a library call (library*.js). // Runtime.debug at runtime for logging to cease, and can set it when you // want it back. A simple way to set it in C++ is // emscripten_run_script("Runtime.debug = ...;"); +var SOCKET_DEBUG = 0; // Log out socket/network data transfer. + var GL_DEBUG = 0; // Print out all calls into WebGL. As with LIBRARY_DEBUG, you can set a runtime // option, in this case GL.debug. -var SOCKET_DEBUG = 0; // Log out socket/network data transfer. +var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers are var PROFILE_MAIN_LOOP = 0; // Profile the function called in set_main_loop From f1c434e1983f29c35433993e6cecfdc178365ace Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 8 Feb 2013 12:11:13 -0800 Subject: [PATCH 047/326] check for restriding exceeding the temp buffer size --- src/library_gl.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/library_gl.js b/src/library_gl.js index f37fde78f8746..5e8f4c848c028 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2020,6 +2020,9 @@ var LibraryGL = { attribute.offset = bytes; bytes += size; } +#if ASSERTIONS + assert(count*bytes < GL.immediate.MAX_TEMP_BUFFER_SIZE); +#endif // copy out the data (we need to know the stride for that, and define attribute.pointer for (var i = 0; i < attributes.length; i++) { var attribute = attributes[i]; From 61f91b6c525cd22e431c169d903a158a904d31a8 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 8 Feb 2013 14:51:43 -0800 Subject: [PATCH 048/326] fix comparison --- src/library_gl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index 5e8f4c848c028..64b09b72eed19 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2021,7 +2021,7 @@ var LibraryGL = { bytes += size; } #if ASSERTIONS - assert(count*bytes < GL.immediate.MAX_TEMP_BUFFER_SIZE); + assert(count*bytes <= GL.immediate.MAX_TEMP_BUFFER_SIZE); #endif // copy out the data (we need to know the stride for that, and define attribute.pointer for (var i = 0; i < attributes.length; i++) { From a5c78a58902abd6166a81a895cc9eea141c9cab4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 8 Feb 2013 18:51:37 -0800 Subject: [PATCH 049/326] arc4random --- src/library.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/library.js b/src/library.js index d4a0046c42bf5..ffac685b44ca4 100644 --- a/src/library.js +++ b/src/library.js @@ -4212,6 +4212,8 @@ LibraryManager.library = { return 1; }, + arc4random: 'rand', + // ========================================================================== // string.h // ========================================================================== From 9087e2ec5b1761ac9fb468771f9fff17512eba70 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 8 Feb 2013 18:52:07 -0800 Subject: [PATCH 050/326] gl assertion --- src/library_gl.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/library_gl.js b/src/library_gl.js index 64b09b72eed19..834ab85728165 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2065,6 +2065,9 @@ var LibraryGL = { }, flush: function(numProvidedIndexes, startIndex, ptr) { +#if ASSERTIONS + assert(numProvidedIndexes >= 0); +#endif startIndex = startIndex || 0; ptr = ptr || 0; From 4928f86a496bec355df44b2f54e080706b07fcce Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 8 Feb 2013 19:47:32 -0800 Subject: [PATCH 051/326] gles workaround --- src/library_gl.js | 1 + tests/gl_ps_workaround.c | 230 +++++++++++++++++++++++++++++++++++++++ tests/runner.py | 5 + 3 files changed, 236 insertions(+) create mode 100644 tests/gl_ps_workaround.c diff --git a/src/library_gl.js b/src/library_gl.js index 834ab85728165..8b29e4e2f14d2 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2344,6 +2344,7 @@ var LibraryGL = { var attrib; switch(cap) { case 0x8078: // GL_TEXTURE_COORD_ARRAY + case 0x0de1: // GL_TEXTURE_2D - XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support it attrib = GL.immediate.TEXTURE0 + GL.immediate.clientActiveTexture; break; case 0x8074: // GL_VERTEX_ARRAY attrib = GL.immediate.VERTEX; break; diff --git a/tests/gl_ps_workaround.c b/tests/gl_ps_workaround.c new file mode 100644 index 0000000000000..1e2a5c41c32bb --- /dev/null +++ b/tests/gl_ps_workaround.c @@ -0,0 +1,230 @@ +/******************************************************************* + * * + * Using SDL With OpenGL * + * * + * Tutorial by Kyle Foley (sdw) * + * * + * http://gpwiki.org/index.php/SDL:Tutorials:Using_SDL_with_OpenGL * + * * + *******************************************************************/ + +/* +THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION +AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN. + +THE ORIGINAL AUTHOR IS KYLE FOLEY. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +#if !EMSCRIPTEN +#define USE_GLEW 1 +#endif + +#if USE_GLEW +#include "GL/glew.h" +#endif + +#include "SDL/SDL.h" +#include "SDL/SDL_image.h" +#if !USE_GLEW +#include "SDL/SDL_opengl.h" +#endif + +#include +#include +#include + +void shaders() { +#if USE_GLEW + glewInit(); +#endif + + GLint ok; + + const char *vertexShader = "void main(void) \n" + "{ \n" + " gl_Position = ftransform(); \n" + " gl_TexCoord[0] = gl_MultiTexCoord0; \n" + " gl_FrontColor = gl_Color; \n" + "} \n"; + const char *fragmentShader = "uniform sampler2D tex0; \n" + "void main(void) \n" + "{ \n" + " gl_FragColor = gl_Color * texture2D(tex0, gl_TexCoord[0].xy); \n" + "} \n"; + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &vertexShader, NULL); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &ok); + assert(ok); + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, &fragmentShader, NULL); + glCompileShader(fs); + glGetShaderiv(fs, GL_COMPILE_STATUS, &ok); + assert(ok); + + GLuint program = glCreateProgram(); + + glAttachShader(program, vs); + glAttachShader(program, fs); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &ok); + assert(ok); + + glUseProgram(program); +} + +int main(int argc, char *argv[]) +{ + SDL_Surface *screen; + + // Slightly different SDL initialization + if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { + printf("Unable to initialize SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // *new* + + screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL ); // *changed* + if ( !screen ) { + printf("Unable to set video mode: %s\n", SDL_GetError()); + return 1; + } + + // Set the OpenGL state after creating the context with SDL_SetVideoMode + + glClearColor( 0, 0, 0, 0 ); + +#if !EMSCRIPTEN + glEnable( GL_TEXTURE_2D ); // Need this to display a texture XXX unnecessary in OpenGL ES 2.0/WebGL +#endif + + glViewport( 0, 0, 640, 480 ); + + glMatrixMode( GL_PROJECTION ); + GLfloat matrixData[] = { 2.0/640, 0, 0, 0, + 0, -2.0/480, 0, 0, + 0, 0, -1, 0, + -1, 1, 0, 1 }; + glLoadMatrixf(matrixData); // test loadmatrix + + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + + // Load the OpenGL texture + + GLuint texture; // Texture object handle + SDL_Surface *surface; // Gives us the information to make the texture + + if ( (surface = IMG_Load("screenshot.png")) ) { + + // Check that the image's width is a power of 2 + if ( (surface->w & (surface->w - 1)) != 0 ) { + printf("warning: image.bmp's width is not a power of 2\n"); + } + + // Also check if the height is a power of 2 + if ( (surface->h & (surface->h - 1)) != 0 ) { + printf("warning: image.bmp's height is not a power of 2\n"); + } + + // Have OpenGL generate a texture object handle for us + glGenTextures( 1, &texture ); + + // Bind the texture object + glBindTexture( GL_TEXTURE_2D, texture ); + + // Set the texture's stretching properties + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + + //SDL_LockSurface(surface); + + // Add some greyness + memset(surface->pixels, 0x66, surface->w*surface->h); + + // Edit the texture object's image data using the information SDL_Surface gives us + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels ); + + //SDL_UnlockSurface(surface); + } + else { + printf("SDL could not load image.bmp: %s\n", SDL_GetError()); + SDL_Quit(); + return 1; + } + + // Free the SDL_Surface only if it was successfully created + if ( surface ) { + SDL_FreeSurface( surface ); + } + + // Clear the screen before drawing + glClear( GL_COLOR_BUFFER_BIT ); + + shaders(); + + // Bind the texture to which subsequent calls refer to + glBindTexture( GL_TEXTURE_2D, texture ); + + // Use clientside vertex pointers to render two items. In this test we have each + // attribute in a separate buffer, packed (i.e. stride == 0) + GLfloat vertexData[] = { 10, 10, + 300, 10, + 300, 128, + 10, 128, + 410, 10, + 600, 10, + 630, 200, + 310, 250, + 100, 300, + 300, 300, + 300, 400, + 100, 400 }; + GLfloat textureData[] = { 0, 0, + 1, 0, + 1, 1, + 0, 1, + 0, 0.5, + 1, 0.5, + 1, 1, + 0.5, 1, + 0, 0, + 1, 0, + 1, 1, + 0, 1, }; + + glEnableClientState(GL_TEXTURE_2D); // XXX should be GL_TEXTURE_COORD_ARRAY); // XXX + glTexCoordPointer(2, GL_FLOAT, 0, textureData); + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, vertexData); + + glDrawArrays(GL_QUADS, 0, 12); + + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + + SDL_GL_SwapBuffers(); + +#if !EMSCRIPTEN + // Wait for 3 seconds to give us a chance to see the image + SDL_Delay(3000); +#endif + + // Now we can delete the OpenGL texture and close down SDL + glDeleteTextures( 1, &texture ); + + SDL_Quit(); + + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 81c433e514205..f06e1b62a29ff 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10399,6 +10399,11 @@ def test_gl_ps_packed(self): shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.btest('gl_ps_packed.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) + def test_gl_ps_workaround(self): + # packed data that needs to be strided + shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) + self.btest('gl_ps_workaround.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) + def test_matrix_identity(self): self.btest('gl_matrix_identity.c', expected=['-1882984448', '460451840']) From 123063bc5bdbebce5bafb79b89f507ba0a0c1488 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 10 Feb 2013 18:33:46 -0800 Subject: [PATCH 052/326] force inputs to inttoptr to be i32 if they are i64; fixes #827 --- src/analyzer.js | 3 +++ tests/runner.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/src/analyzer.js b/src/analyzer.js index 1c53b76caa25b..adc615fb563cb 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -223,6 +223,9 @@ function analyzer(data, sidePass) { for (var i = 0; i < item.params.length; i++) { if (item.params[i].type == 'i64') item.params[i].type = 'i32'; } + } else if (item.intertype == 'inttoptr') { + var input = item.params[0]; + if (input.type == 'i64') input.type = 'i32'; // inttoptr can only care about 32 bits anyhow since pointers are 32-bit } if (isIllegalType(item.valueType) || isIllegalType(item.type)) { isIllegal = true; diff --git a/tests/runner.py b/tests/runner.py index f06e1b62a29ff..71035b02bac9f 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -6308,6 +6308,53 @@ def test_stdvec(self): self.do_run(src, '789:123.46\n0:100.1') + def test_reinterpreted_ptrs(self): + if self.emcc_args is None: return self.skip('needs emcc and libc') + + src = r''' +#include + +class Foo { +private: + float bar; +public: + int baz; + + Foo(): bar(0), baz(4711) {}; + + int getBar() const; +}; + +int Foo::getBar() const { + return this->bar; +}; + +const Foo *magic1 = reinterpret_cast(0xDEAD111F); +const Foo *magic2 = reinterpret_cast(0xDEAD888F); + +static void runTest() { + + const Foo *a = new Foo(); + const Foo *b = a; + + if (a->getBar() == 0) { + if (a->baz == 4712) + b = magic1; + else + b = magic2; + } + + printf("%s\n", (b == magic1 ? "magic1" : (b == magic2 ? "magic2" : "neither"))); +}; + +extern "C" { + int main(int argc, char **argv) { + runTest(); + } +} +''' + self.do_run(src, 'magic2') + def test_jansson(self): return self.skip('currently broken') From b2dcd0e2b9c9442d29a92d8ffd277df75f03fcaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Tue, 12 Feb 2013 01:25:12 +0200 Subject: [PATCH 053/326] Update to dlmalloc 2.8.6 and set HAVE_MMAP to 0 only if compiling under EMSCRIPTEN to fix an allocator failure issue on OSX when building test_dlmalloc to native code. Fixes #730. --- system/lib/dlmalloc.c | 9147 ++++++++++++++++++++++------------------- 1 file changed, 4867 insertions(+), 4280 deletions(-) diff --git a/system/lib/dlmalloc.c b/system/lib/dlmalloc.c index 9ee3709eb662d..7e04a726bd63b 100644 --- a/system/lib/dlmalloc.c +++ b/system/lib/dlmalloc.c @@ -5,492 +5,537 @@ /* - This is a version (aka dlmalloc) of malloc/free/realloc written by - Doug Lea and released to the public domain, as explained at - http://creativecommons.org/licenses/publicdomain. Send questions, - comments, complaints, performance data, etc to dl@cs.oswego.edu - -* Version 2.8.4 Wed May 27 09:56:23 2009 Doug Lea (dl at gee) - - Note: There may be an updated version of this malloc obtainable at - ftp://gee.cs.oswego.edu/pub/misc/malloc.c - Check before installing! - -* Quickstart - - This library is all in one file to simplify the most common usage: - ftp it, compile it (-O3), and link it into another program. All of - the compile-time options default to reasonable values for use on - most platforms. You might later want to step through various - compile-time and dynamic tuning options. - - For convenience, an include file for code using this malloc is at: - ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.4.h - You don't really need this .h file unless you call functions not - defined in your system include files. The .h file contains only the - excerpts from this file needed for using this malloc on ANSI C/C++ - systems, so long as you haven't changed compile-time options about - naming and tuning parameters. If you do, then you can create your - own malloc.h that does include all settings by cutting at the point - indicated below. Note that you may already by default be using a C - library containing a malloc that is based on some version of this - malloc (for example in linux). You might still want to use the one - in this file to customize settings or to avoid overheads associated - with library versions. - -* Vital statistics: - - Supported pointer/size_t representation: 4 or 8 bytes - size_t MUST be an unsigned type of the same width as - pointers. (If you are using an ancient system that declares - size_t as a signed type, or need it to be a different width - than pointers, you can use a previous release of this malloc - (e.g. 2.7.2) supporting these.) - - Alignment: 8 bytes (default) - This suffices for nearly all current machines and C compilers. - However, you can define MALLOC_ALIGNMENT to be wider than this - if necessary (up to 128bytes), at the expense of using more space. - - Minimum overhead per allocated chunk: 4 or 8 bytes (if 4byte sizes) - 8 or 16 bytes (if 8byte sizes) - Each malloced chunk has a hidden word of overhead holding size - and status information, and additional cross-check word - if FOOTERS is defined. - - Minimum allocated size: 4-byte ptrs: 16 bytes (including overhead) - 8-byte ptrs: 32 bytes (including overhead) - - Even a request for zero bytes (i.e., malloc(0)) returns a - pointer to something of the minimum allocatable size. - The maximum overhead wastage (i.e., number of extra bytes - allocated than were requested in malloc) is less than or equal - to the minimum size, except for requests >= mmap_threshold that - are serviced via mmap(), where the worst case wastage is about - 32 bytes plus the remainder from a system page (the minimal - mmap unit); typically 4096 or 8192 bytes. - - Security: static-safe; optionally more or less - The "security" of malloc refers to the ability of malicious - code to accentuate the effects of errors (for example, freeing - space that is not currently malloc'ed or overwriting past the - ends of chunks) in code that calls malloc. This malloc - guarantees not to modify any memory locations below the base of - heap, i.e., static variables, even in the presence of usage - errors. The routines additionally detect most improper frees - and reallocs. All this holds as long as the static bookkeeping - for malloc itself is not corrupted by some other means. This - is only one aspect of security -- these checks do not, and - cannot, detect all possible programming errors. - - If FOOTERS is defined nonzero, then each allocated chunk - carries an additional check word to verify that it was malloced - from its space. These check words are the same within each - execution of a program using malloc, but differ across - executions, so externally crafted fake chunks cannot be - freed. This improves security by rejecting frees/reallocs that - could corrupt heap memory, in addition to the checks preventing - writes to statics that are always on. This may further improve - security at the expense of time and space overhead. (Note that - FOOTERS may also be worth using with MSPACES.) - - By default detected errors cause the program to abort (calling - "abort()"). You can override this to instead proceed past - errors by defining PROCEED_ON_ERROR. In this case, a bad free - has no effect, and a malloc that encounters a bad address - caused by user overwrites will ignore the bad address by - dropping pointers and indices to all known memory. This may - be appropriate for programs that should continue if at all - possible in the face of programming errors, although they may - run out of memory because dropped memory is never reclaimed. - - If you don't like either of these options, you can define - CORRUPTION_ERROR_ACTION and USAGE_ERROR_ACTION to do anything - else. And if if you are sure that your program using malloc has - no errors or vulnerabilities, you can define INSECURE to 1, - which might (or might not) provide a small performance improvement. - - Thread-safety: NOT thread-safe unless USE_LOCKS defined - When USE_LOCKS is defined, each public call to malloc, free, - etc is surrounded with either a pthread mutex or a win32 - spinlock (depending on WIN32). This is not especially fast, and - can be a major bottleneck. It is designed only to provide - minimal protection in concurrent environments, and to provide a - basis for extensions. If you are using malloc in a concurrent - program, consider instead using nedmalloc - (http://www.nedprod.com/programs/portable/nedmalloc/) or - ptmalloc (See http://www.malloc.de), which are derived - from versions of this malloc. - - System requirements: Any combination of MORECORE and/or MMAP/MUNMAP - This malloc can use unix sbrk or any emulation (invoked using - the CALL_MORECORE macro) and/or mmap/munmap or any emulation - (invoked using CALL_MMAP/CALL_MUNMAP) to get and release system - memory. On most unix systems, it tends to work best if both - MORECORE and MMAP are enabled. On Win32, it uses emulations - based on VirtualAlloc. It also uses common C library functions - like memset. - - Compliance: I believe it is compliant with the Single Unix Specification - (See http://www.unix.org). Also SVID/XPG, ANSI C, and probably - others as well. - -* Overview of algorithms - - This is not the fastest, most space-conserving, most portable, or - most tunable malloc ever written. However it is among the fastest - while also being among the most space-conserving, portable and - tunable. Consistent balance across these factors results in a good - general-purpose allocator for malloc-intensive programs. - - In most ways, this malloc is a best-fit allocator. Generally, it - chooses the best-fitting existing chunk for a request, with ties - broken in approximately least-recently-used order. (This strategy - normally maintains low fragmentation.) However, for requests less - than 256bytes, it deviates from best-fit when there is not an - exactly fitting available chunk by preferring to use space adjacent - to that used for the previous small request, as well as by breaking - ties in approximately most-recently-used order. (These enhance - locality of series of small allocations.) And for very large requests - (>= 256Kb by default), it relies on system memory mapping - facilities, if supported. (This helps avoid carrying around and - possibly fragmenting memory used only for large chunks.) - - All operations (except malloc_stats and mallinfo) have execution - times that are bounded by a constant factor of the number of bits in - a size_t, not counting any clearing in calloc or copying in realloc, - or actions surrounding MORECORE and MMAP that have times - proportional to the number of non-contiguous regions returned by - system allocation routines, which is often just 1. In real-time - applications, you can optionally suppress segment traversals using - NO_SEGMENT_TRAVERSAL, which assures bounded execution even when - system allocators return non-contiguous spaces, at the typical - expense of carrying around more memory and increased fragmentation. - - The implementation is not very modular and seriously overuses - macros. Perhaps someday all C compilers will do as good a job - inlining modular code as can now be done by brute-force expansion, - but now, enough of them seem not to. - - Some compilers issue a lot of warnings about code that is - dead/unreachable only on some platforms, and also about intentional - uses of negation on unsigned types. All known cases of each can be - ignored. - - For a longer but out of date high-level description, see - http://gee.cs.oswego.edu/dl/html/malloc.html - -* MSPACES - If MSPACES is defined, then in addition to malloc, free, etc., - this file also defines mspace_malloc, mspace_free, etc. These - are versions of malloc routines that take an "mspace" argument - obtained using create_mspace, to control all internal bookkeeping. - If ONLY_MSPACES is defined, only these versions are compiled. - So if you would like to use this allocator for only some allocations, - and your system malloc for others, you can compile with - ONLY_MSPACES and then do something like... - static mspace mymspace = create_mspace(0,0); // for example - #define mymalloc(bytes) mspace_malloc(mymspace, bytes) - - (Note: If you only need one instance of an mspace, you can instead - use "USE_DL_PREFIX" to relabel the global malloc.) - - You can similarly create thread-local allocators by storing - mspaces as thread-locals. For example: - static __thread mspace tlms = 0; - void* tlmalloc(size_t bytes) { - if (tlms == 0) tlms = create_mspace(0, 0); - return mspace_malloc(tlms, bytes); - } - void tlfree(void* mem) { mspace_free(tlms, mem); } - - Unless FOOTERS is defined, each mspace is completely independent. - You cannot allocate from one and free to another (although - conformance is only weakly checked, so usage errors are not always - caught). If FOOTERS is defined, then each chunk carries around a tag - indicating its originating mspace, and frees are directed to their - originating spaces. - + This is a version (aka dlmalloc) of malloc/free/realloc written by + Doug Lea and released to the public domain, as explained at + http://creativecommons.org/publicdomain/zero/1.0/ Send questions, + comments, complaints, performance data, etc to dl@cs.oswego.edu + + * Version 2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea + Note: There may be an updated version of this malloc obtainable at + ftp://gee.cs.oswego.edu/pub/misc/malloc.c + Check before installing! + + * Quickstart + + This library is all in one file to simplify the most common usage: + ftp it, compile it (-O3), and link it into another program. All of + the compile-time options default to reasonable values for use on + most platforms. You might later want to step through various + compile-time and dynamic tuning options. + + For convenience, an include file for code using this malloc is at: + ftp://gee.cs.oswego.edu/pub/misc/malloc-2.8.6.h + You don't really need this .h file unless you call functions not + defined in your system include files. The .h file contains only the + excerpts from this file needed for using this malloc on ANSI C/C++ + systems, so long as you haven't changed compile-time options about + naming and tuning parameters. If you do, then you can create your + own malloc.h that does include all settings by cutting at the point + indicated below. Note that you may already by default be using a C + library containing a malloc that is based on some version of this + malloc (for example in linux). You might still want to use the one + in this file to customize settings or to avoid overheads associated + with library versions. + + * Vital statistics: + + Supported pointer/size_t representation: 4 or 8 bytes + size_t MUST be an unsigned type of the same width as + pointers. (If you are using an ancient system that declares + size_t as a signed type, or need it to be a different width + than pointers, you can use a previous release of this malloc + (e.g. 2.7.2) supporting these.) + + Alignment: 8 bytes (minimum) + This suffices for nearly all current machines and C compilers. + However, you can define MALLOC_ALIGNMENT to be wider than this + if necessary (up to 128bytes), at the expense of using more space. + + Minimum overhead per allocated chunk: 4 or 8 bytes (if 4byte sizes) + 8 or 16 bytes (if 8byte sizes) + Each malloced chunk has a hidden word of overhead holding size + and status information, and additional cross-check word + if FOOTERS is defined. + + Minimum allocated size: 4-byte ptrs: 16 bytes (including overhead) + 8-byte ptrs: 32 bytes (including overhead) + + Even a request for zero bytes (i.e., malloc(0)) returns a + pointer to something of the minimum allocatable size. + The maximum overhead wastage (i.e., number of extra bytes + allocated than were requested in malloc) is less than or equal + to the minimum size, except for requests >= mmap_threshold that + are serviced via mmap(), where the worst case wastage is about + 32 bytes plus the remainder from a system page (the minimal + mmap unit); typically 4096 or 8192 bytes. + + Security: static-safe; optionally more or less + The "security" of malloc refers to the ability of malicious + code to accentuate the effects of errors (for example, freeing + space that is not currently malloc'ed or overwriting past the + ends of chunks) in code that calls malloc. This malloc + guarantees not to modify any memory locations below the base of + heap, i.e., static variables, even in the presence of usage + errors. The routines additionally detect most improper frees + and reallocs. All this holds as long as the static bookkeeping + for malloc itself is not corrupted by some other means. This + is only one aspect of security -- these checks do not, and + cannot, detect all possible programming errors. + + If FOOTERS is defined nonzero, then each allocated chunk + carries an additional check word to verify that it was malloced + from its space. These check words are the same within each + execution of a program using malloc, but differ across + executions, so externally crafted fake chunks cannot be + freed. This improves security by rejecting frees/reallocs that + could corrupt heap memory, in addition to the checks preventing + writes to statics that are always on. This may further improve + security at the expense of time and space overhead. (Note that + FOOTERS may also be worth using with MSPACES.) + + By default detected errors cause the program to abort (calling + "abort()"). You can override this to instead proceed past + errors by defining PROCEED_ON_ERROR. In this case, a bad free + has no effect, and a malloc that encounters a bad address + caused by user overwrites will ignore the bad address by + dropping pointers and indices to all known memory. This may + be appropriate for programs that should continue if at all + possible in the face of programming errors, although they may + run out of memory because dropped memory is never reclaimed. + + If you don't like either of these options, you can define + CORRUPTION_ERROR_ACTION and USAGE_ERROR_ACTION to do anything + else. And if if you are sure that your program using malloc has + no errors or vulnerabilities, you can define INSECURE to 1, + which might (or might not) provide a small performance improvement. + + It is also possible to limit the maximum total allocatable + space, using malloc_set_footprint_limit. This is not + designed as a security feature in itself (calls to set limits + are not screened or privileged), but may be useful as one + aspect of a secure implementation. + + Thread-safety: NOT thread-safe unless USE_LOCKS defined non-zero + When USE_LOCKS is defined, each public call to malloc, free, + etc is surrounded with a lock. By default, this uses a plain + pthread mutex, win32 critical section, or a spin-lock if if + available for the platform and not disabled by setting + USE_SPIN_LOCKS=0. However, if USE_RECURSIVE_LOCKS is defined, + recursive versions are used instead (which are not required for + base functionality but may be needed in layered extensions). + Using a global lock is not especially fast, and can be a major + bottleneck. It is designed only to provide minimal protection + in concurrent environments, and to provide a basis for + extensions. If you are using malloc in a concurrent program, + consider instead using nedmalloc + (http://www.nedprod.com/programs/portable/nedmalloc/) or + ptmalloc (See http://www.malloc.de), which are derived from + versions of this malloc. + + System requirements: Any combination of MORECORE and/or MMAP/MUNMAP + This malloc can use unix sbrk or any emulation (invoked using + the CALL_MORECORE macro) and/or mmap/munmap or any emulation + (invoked using CALL_MMAP/CALL_MUNMAP) to get and release system + memory. On most unix systems, it tends to work best if both + MORECORE and MMAP are enabled. On Win32, it uses emulations + based on VirtualAlloc. It also uses common C library functions + like memset. + + Compliance: I believe it is compliant with the Single Unix Specification + (See http://www.unix.org). Also SVID/XPG, ANSI C, and probably + others as well. + + * Overview of algorithms + + This is not the fastest, most space-conserving, most portable, or + most tunable malloc ever written. However it is among the fastest + while also being among the most space-conserving, portable and + tunable. Consistent balance across these factors results in a good + general-purpose allocator for malloc-intensive programs. + + In most ways, this malloc is a best-fit allocator. Generally, it + chooses the best-fitting existing chunk for a request, with ties + broken in approximately least-recently-used order. (This strategy + normally maintains low fragmentation.) However, for requests less + than 256bytes, it deviates from best-fit when there is not an + exactly fitting available chunk by preferring to use space adjacent + to that used for the previous small request, as well as by breaking + ties in approximately most-recently-used order. (These enhance + locality of series of small allocations.) And for very large requests + (>= 256Kb by default), it relies on system memory mapping + facilities, if supported. (This helps avoid carrying around and + possibly fragmenting memory used only for large chunks.) + + All operations (except malloc_stats and mallinfo) have execution + times that are bounded by a constant factor of the number of bits in + a size_t, not counting any clearing in calloc or copying in realloc, + or actions surrounding MORECORE and MMAP that have times + proportional to the number of non-contiguous regions returned by + system allocation routines, which is often just 1. In real-time + applications, you can optionally suppress segment traversals using + NO_SEGMENT_TRAVERSAL, which assures bounded execution even when + system allocators return non-contiguous spaces, at the typical + expense of carrying around more memory and increased fragmentation. + + The implementation is not very modular and seriously overuses + macros. Perhaps someday all C compilers will do as good a job + inlining modular code as can now be done by brute-force expansion, + but now, enough of them seem not to. + + Some compilers issue a lot of warnings about code that is + dead/unreachable only on some platforms, and also about intentional + uses of negation on unsigned types. All known cases of each can be + ignored. + + For a longer but out of date high-level description, see + http://gee.cs.oswego.edu/dl/html/malloc.html + + * MSPACES + If MSPACES is defined, then in addition to malloc, free, etc., + this file also defines mspace_malloc, mspace_free, etc. These + are versions of malloc routines that take an "mspace" argument + obtained using create_mspace, to control all internal bookkeeping. + If ONLY_MSPACES is defined, only these versions are compiled. + So if you would like to use this allocator for only some allocations, + and your system malloc for others, you can compile with + ONLY_MSPACES and then do something like... + static mspace mymspace = create_mspace(0,0); // for example + #define mymalloc(bytes) mspace_malloc(mymspace, bytes) + + (Note: If you only need one instance of an mspace, you can instead + use "USE_DL_PREFIX" to relabel the global malloc.) + + You can similarly create thread-local allocators by storing + mspaces as thread-locals. For example: + static __thread mspace tlms = 0; + void* tlmalloc(size_t bytes) { + if (tlms == 0) tlms = create_mspace(0, 0); + return mspace_malloc(tlms, bytes); + } + void tlfree(void* mem) { mspace_free(tlms, mem); } + + Unless FOOTERS is defined, each mspace is completely independent. + You cannot allocate from one and free to another (although + conformance is only weakly checked, so usage errors are not always + caught). If FOOTERS is defined, then each chunk carries around a tag + indicating its originating mspace, and frees are directed to their + originating spaces. Normally, this requires use of locks. + ------------------------- Compile-time options --------------------------- - -Be careful in setting #define values for numerical constants of type -size_t. On some systems, literal values are not automatically extended -to size_t precision unless they are explicitly casted. You can also -use the symbolic values MAX_SIZE_T, SIZE_T_ONE, etc below. - -WIN32 default: defined if _WIN32 defined - Defining WIN32 sets up defaults for MS environment and compilers. - Otherwise defaults are for unix. Beware that there seem to be some - cases where this malloc might not be a pure drop-in replacement for - Win32 malloc: Random-looking failures from Win32 GDI API's (eg; - SetDIBits()) may be due to bugs in some video driver implementations - when pixel buffers are malloc()ed, and the region spans more than - one VirtualAlloc()ed region. Because dlmalloc uses a small (64Kb) - default granularity, pixel buffers may straddle virtual allocation - regions more often than when using the Microsoft allocator. You can - avoid this by using VirtualAlloc() and VirtualFree() for all pixel - buffers rather than using malloc(). If this is not possible, - recompile this malloc with a larger DEFAULT_GRANULARITY. - -MALLOC_ALIGNMENT default: (size_t)8 - Controls the minimum alignment for malloc'ed chunks. It must be a - power of two and at least 8, even on machines for which smaller - alignments would suffice. It may be defined as larger than this - though. Note however that code and data structures are optimized for - the case of 8-byte alignment. - -MSPACES default: 0 (false) - If true, compile in support for independent allocation spaces. - This is only supported if HAVE_MMAP is true. - -ONLY_MSPACES default: 0 (false) - If true, only compile in mspace versions, not regular versions. - -USE_LOCKS default: 0 (false) - Causes each call to each public routine to be surrounded with - pthread or WIN32 mutex lock/unlock. (If set true, this can be - overridden on a per-mspace basis for mspace versions.) If set to a - non-zero value other than 1, locks are used, but their - implementation is left out, so lock functions must be supplied manually, - as described below. - -USE_SPIN_LOCKS default: 1 iff USE_LOCKS and on x86 using gcc or MSC - If true, uses custom spin locks for locking. This is currently - supported only for x86 platforms using gcc or recent MS compilers. - Otherwise, posix locks or win32 critical sections are used. - -FOOTERS default: 0 - If true, provide extra checking and dispatching by placing - information in the footers of allocated chunks. This adds - space and time overhead. - -INSECURE default: 0 - If true, omit checks for usage errors and heap space overwrites. - -USE_DL_PREFIX default: NOT defined - Causes compiler to prefix all public routines with the string 'dl'. - This can be useful when you only want to use this malloc in one part - of a program, using your regular system malloc elsewhere. - -ABORT default: defined as abort() - Defines how to abort on failed checks. On most systems, a failed - check cannot die with an "assert" or even print an informative - message, because the underlying print routines in turn call malloc, - which will fail again. Generally, the best policy is to simply call - abort(). It's not very useful to do more than this because many - errors due to overwriting will show up as address faults (null, odd - addresses etc) rather than malloc-triggered checks, so will also - abort. Also, most compilers know that abort() does not return, so - can better optimize code conditionally calling it. - -PROCEED_ON_ERROR default: defined as 0 (false) - Controls whether detected bad addresses cause them to bypassed - rather than aborting. If set, detected bad arguments to free and - realloc are ignored. And all bookkeeping information is zeroed out - upon a detected overwrite of freed heap space, thus losing the - ability to ever return it from malloc again, but enabling the - application to proceed. If PROCEED_ON_ERROR is defined, the - static variable malloc_corruption_error_count is compiled in - and can be examined to see if errors have occurred. This option - generates slower code than the default abort policy. - -DEBUG default: NOT defined - The DEBUG setting is mainly intended for people trying to modify - this code or diagnose problems when porting to new platforms. - However, it may also be able to better isolate user errors than just - using runtime checks. The assertions in the check routines spell - out in more detail the assumptions and invariants underlying the - algorithms. The checking is fairly extensive, and will slow down - execution noticeably. Calling malloc_stats or mallinfo with DEBUG - set will attempt to check every non-mmapped allocated and free chunk - in the course of computing the summaries. - -ABORT_ON_ASSERT_FAILURE default: defined as 1 (true) - Debugging assertion failures can be nearly impossible if your - version of the assert macro causes malloc to be called, which will - lead to a cascade of further failures, blowing the runtime stack. - ABORT_ON_ASSERT_FAILURE cause assertions failures to call abort(), - which will usually make debugging easier. - -MALLOC_FAILURE_ACTION default: sets errno to ENOMEM, or no-op on win32 - The action to take before "return 0" when malloc fails to be able to - return memory because there is none available. - -HAVE_MORECORE default: 1 (true) unless win32 or ONLY_MSPACES - True if this system supports sbrk or an emulation of it. - -MORECORE default: sbrk - The name of the sbrk-style system routine to call to obtain more - memory. See below for guidance on writing custom MORECORE - functions. The type of the argument to sbrk/MORECORE varies across - systems. It cannot be size_t, because it supports negative - arguments, so it is normally the signed type of the same width as - size_t (sometimes declared as "intptr_t"). It doesn't much matter - though. Internally, we only call it with arguments less than half - the max value of a size_t, which should work across all reasonable - possibilities, although sometimes generating compiler warnings. - -MORECORE_CONTIGUOUS default: 1 (true) if HAVE_MORECORE - If true, take advantage of fact that consecutive calls to MORECORE - with positive arguments always return contiguous increasing - addresses. This is true of unix sbrk. It does not hurt too much to - set it true anyway, since malloc copes with non-contiguities. - Setting it false when definitely non-contiguous saves time - and possibly wasted space it would take to discover this though. - -MORECORE_CANNOT_TRIM default: NOT defined - True if MORECORE cannot release space back to the system when given - negative arguments. This is generally necessary only if you are - using a hand-crafted MORECORE function that cannot handle negative - arguments. - -NO_SEGMENT_TRAVERSAL default: 0 - If non-zero, suppresses traversals of memory segments - returned by either MORECORE or CALL_MMAP. This disables - merging of segments that are contiguous, and selectively - releasing them to the OS if unused, but bounds execution times. - -HAVE_MMAP default: 1 (true) - True if this system supports mmap or an emulation of it. If so, and - HAVE_MORECORE is not true, MMAP is used for all system - allocation. If set and HAVE_MORECORE is true as well, MMAP is - primarily used to directly allocate very large blocks. It is also - used as a backup strategy in cases where MORECORE fails to provide - space from system. Note: A single call to MUNMAP is assumed to be - able to unmap memory that may have be allocated using multiple calls - to MMAP, so long as they are adjacent. - -HAVE_MREMAP default: 1 on linux, else 0 - If true realloc() uses mremap() to re-allocate large blocks and - extend or shrink allocation spaces. - -MMAP_CLEARS default: 1 except on WINCE. - True if mmap clears memory so calloc doesn't need to. This is true - for standard unix mmap using /dev/zero and on WIN32 except for WINCE. - -USE_BUILTIN_FFS default: 0 (i.e., not used) - Causes malloc to use the builtin ffs() function to compute indices. - Some compilers may recognize and intrinsify ffs to be faster than the - supplied C version. Also, the case of x86 using gcc is special-cased - to an asm instruction, so is already as fast as it can be, and so - this setting has no effect. Similarly for Win32 under recent MS compilers. - (On most x86s, the asm version is only slightly faster than the C version.) - -malloc_getpagesize default: derive from system includes, or 4096. - The system page size. To the extent possible, this malloc manages - memory from the system in page-size units. This may be (and - usually is) a function rather than a constant. This is ignored - if WIN32, where page size is determined using getSystemInfo during - initialization. - -USE_DEV_RANDOM default: 0 (i.e., not used) - Causes malloc to use /dev/random to initialize secure magic seed for - stamping footers. Otherwise, the current time is used. - -NO_MALLINFO default: 0 - If defined, don't compile "mallinfo". This can be a simple way - of dealing with mismatches between system declarations and - those in this file. - -MALLINFO_FIELD_TYPE default: size_t - The type of the fields in the mallinfo struct. This was originally - defined as "int" in SVID etc, but is more usefully defined as - size_t. The value is used only if HAVE_USR_INCLUDE_MALLOC_H is not set - -REALLOC_ZERO_BYTES_FREES default: not defined - This should be set if a call to realloc with zero bytes should - be the same as a call to free. Some people think it should. Otherwise, - since this malloc returns a unique pointer for malloc(0), so does - realloc(p, 0). - -LACKS_UNISTD_H, LACKS_FCNTL_H, LACKS_SYS_PARAM_H, LACKS_SYS_MMAN_H -LACKS_STRINGS_H, LACKS_STRING_H, LACKS_SYS_TYPES_H, LACKS_ERRNO_H -LACKS_STDLIB_H default: NOT defined unless on WIN32 - Define these if your system does not have these header files. - You might need to manually insert some of the declarations they provide. - -DEFAULT_GRANULARITY default: page size if MORECORE_CONTIGUOUS, - system_info.dwAllocationGranularity in WIN32, - otherwise 64K. - Also settable using mallopt(M_GRANULARITY, x) - The unit for allocating and deallocating memory from the system. On - most systems with contiguous MORECORE, there is no reason to - make this more than a page. However, systems with MMAP tend to - either require or encourage larger granularities. You can increase - this value to prevent system allocation functions to be called so - often, especially if they are slow. The value must be at least one - page and must be a power of two. Setting to 0 causes initialization - to either page size or win32 region size. (Note: In previous - versions of malloc, the equivalent of this option was called - "TOP_PAD") - -DEFAULT_TRIM_THRESHOLD default: 2MB - Also settable using mallopt(M_TRIM_THRESHOLD, x) - The maximum amount of unused top-most memory to keep before - releasing via malloc_trim in free(). Automatic trimming is mainly - useful in long-lived programs using contiguous MORECORE. Because - trimming via sbrk can be slow on some systems, and can sometimes be - wasteful (in cases where programs immediately afterward allocate - more large chunks) the value should be high enough so that your - overall system performance would improve by releasing this much - memory. As a rough guide, you might set to a value close to the - average size of a process (program) running on your system. - Releasing this much memory would allow such a process to run in - memory. Generally, it is worth tuning trim thresholds when a - program undergoes phases where several large chunks are allocated - and released in ways that can reuse each other's storage, perhaps - mixed with phases where there are no such chunks at all. The trim - value must be greater than page size to have any useful effect. To - disable trimming completely, you can set to MAX_SIZE_T. Note that the trick - some people use of mallocing a huge space and then freeing it at - program startup, in an attempt to reserve system memory, doesn't - have the intended effect under automatic trimming, since that memory - will immediately be returned to the system. - -DEFAULT_MMAP_THRESHOLD default: 256K - Also settable using mallopt(M_MMAP_THRESHOLD, x) - The request size threshold for using MMAP to directly service a - request. Requests of at least this size that cannot be allocated - using already-existing space will be serviced via mmap. (If enough - normal freed space already exists it is used instead.) Using mmap - segregates relatively large chunks of memory so that they can be - individually obtained and released from the host system. A request - serviced through mmap is never reused by any other request (at least - not directly; the system may just so happen to remap successive - requests to the same locations). Segregating space in this way has - the benefits that: Mmapped space can always be individually released - back to the system, which helps keep the system level memory demands - of a long-lived program low. Also, mapped memory doesn't become - `locked' between other chunks, as can happen with normally allocated - chunks, which means that even trimming via malloc_trim would not - release them. However, it has the disadvantage that the space - cannot be reclaimed, consolidated, and then used to service later - requests, as happens with normal chunks. The advantages of mmap - nearly always outweigh disadvantages for "large" chunks, but the - value of "large" may vary across systems. The default is an - empirically derived value that works well in most systems. You can - disable mmap by setting to MAX_SIZE_T. - -MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP - The number of consolidated frees between checks to release - unused segments when freeing. When using non-contiguous segments, - especially with multiple mspaces, checking only for topmost space - doesn't always suffice to trigger trimming. To compensate for this, - free() will, with a period of MAX_RELEASE_CHECK_RATE (or the - current number of segments, if greater) try to release unused - segments to the OS when freeing chunks that result in - consolidation. The best value for this parameter is a compromise - between slowing down frees with relatively costly checks that - rarely trigger versus holding on to unused memory. To effectively - disable, set to MAX_SIZE_T. This may lead to a very slight speed - improvement at the expense of carrying around more memory. -*/ + + Be careful in setting #define values for numerical constants of type + size_t. On some systems, literal values are not automatically extended + to size_t precision unless they are explicitly casted. You can also + use the symbolic values MAX_SIZE_T, SIZE_T_ONE, etc below. + + WIN32 default: defined if _WIN32 defined + Defining WIN32 sets up defaults for MS environment and compilers. + Otherwise defaults are for unix. Beware that there seem to be some + cases where this malloc might not be a pure drop-in replacement for + Win32 malloc: Random-looking failures from Win32 GDI API's (eg; + SetDIBits()) may be due to bugs in some video driver implementations + when pixel buffers are malloc()ed, and the region spans more than + one VirtualAlloc()ed region. Because dlmalloc uses a small (64Kb) + default granularity, pixel buffers may straddle virtual allocation + regions more often than when using the Microsoft allocator. You can + avoid this by using VirtualAlloc() and VirtualFree() for all pixel + buffers rather than using malloc(). If this is not possible, + recompile this malloc with a larger DEFAULT_GRANULARITY. Note: + in cases where MSC and gcc (cygwin) are known to differ on WIN32, + conditions use _MSC_VER to distinguish them. + + DLMALLOC_EXPORT default: extern + Defines how public APIs are declared. If you want to export via a + Windows DLL, you might define this as + #define DLMALLOC_EXPORT extern __declspec(dllexport) + If you want a POSIX ELF shared object, you might use + #define DLMALLOC_EXPORT extern __attribute__((visibility("default"))) + + MALLOC_ALIGNMENT default: (size_t)(2 * sizeof(void *)) + Controls the minimum alignment for malloc'ed chunks. It must be a + power of two and at least 8, even on machines for which smaller + alignments would suffice. It may be defined as larger than this + though. Note however that code and data structures are optimized for + the case of 8-byte alignment. + + MSPACES default: 0 (false) + If true, compile in support for independent allocation spaces. + This is only supported if HAVE_MMAP is true. + + ONLY_MSPACES default: 0 (false) + If true, only compile in mspace versions, not regular versions. + + USE_LOCKS default: 0 (false) + Causes each call to each public routine to be surrounded with + pthread or WIN32 mutex lock/unlock. (If set true, this can be + overridden on a per-mspace basis for mspace versions.) If set to a + non-zero value other than 1, locks are used, but their + implementation is left out, so lock functions must be supplied manually, + as described below. + + USE_SPIN_LOCKS default: 1 iff USE_LOCKS and spin locks available + If true, uses custom spin locks for locking. This is currently + supported only gcc >= 4.1, older gccs on x86 platforms, and recent + MS compilers. Otherwise, posix locks or win32 critical sections are + used. + + USE_RECURSIVE_LOCKS default: not defined + If defined nonzero, uses recursive (aka reentrant) locks, otherwise + uses plain mutexes. This is not required for malloc proper, but may + be needed for layered allocators such as nedmalloc. + + LOCK_AT_FORK default: not defined + If defined nonzero, performs pthread_atfork upon initialization + to initialize child lock while holding parent lock. The implementation + assumes that pthread locks (not custom locks) are being used. In other + cases, you may need to customize the implementation. + + FOOTERS default: 0 + If true, provide extra checking and dispatching by placing + information in the footers of allocated chunks. This adds + space and time overhead. + + INSECURE default: 0 + If true, omit checks for usage errors and heap space overwrites. + + USE_DL_PREFIX default: NOT defined + Causes compiler to prefix all public routines with the string 'dl'. + This can be useful when you only want to use this malloc in one part + of a program, using your regular system malloc elsewhere. + + MALLOC_INSPECT_ALL default: NOT defined + If defined, compiles malloc_inspect_all and mspace_inspect_all, that + perform traversal of all heap space. Unless access to these + functions is otherwise restricted, you probably do not want to + include them in secure implementations. + + ABORT default: defined as abort() + Defines how to abort on failed checks. On most systems, a failed + check cannot die with an "assert" or even print an informative + message, because the underlying print routines in turn call malloc, + which will fail again. Generally, the best policy is to simply call + abort(). It's not very useful to do more than this because many + errors due to overwriting will show up as address faults (null, odd + addresses etc) rather than malloc-triggered checks, so will also + abort. Also, most compilers know that abort() does not return, so + can better optimize code conditionally calling it. + + PROCEED_ON_ERROR default: defined as 0 (false) + Controls whether detected bad addresses cause them to bypassed + rather than aborting. If set, detected bad arguments to free and + realloc are ignored. And all bookkeeping information is zeroed out + upon a detected overwrite of freed heap space, thus losing the + ability to ever return it from malloc again, but enabling the + application to proceed. If PROCEED_ON_ERROR is defined, the + static variable malloc_corruption_error_count is compiled in + and can be examined to see if errors have occurred. This option + generates slower code than the default abort policy. + + DEBUG default: NOT defined + The DEBUG setting is mainly intended for people trying to modify + this code or diagnose problems when porting to new platforms. + However, it may also be able to better isolate user errors than just + using runtime checks. The assertions in the check routines spell + out in more detail the assumptions and invariants underlying the + algorithms. The checking is fairly extensive, and will slow down + execution noticeably. Calling malloc_stats or mallinfo with DEBUG + set will attempt to check every non-mmapped allocated and free chunk + in the course of computing the summaries. + + ABORT_ON_ASSERT_FAILURE default: defined as 1 (true) + Debugging assertion failures can be nearly impossible if your + version of the assert macro causes malloc to be called, which will + lead to a cascade of further failures, blowing the runtime stack. + ABORT_ON_ASSERT_FAILURE cause assertions failures to call abort(), + which will usually make debugging easier. + + MALLOC_FAILURE_ACTION default: sets errno to ENOMEM, or no-op on win32 + The action to take before "return 0" when malloc fails to be able to + return memory because there is none available. + + HAVE_MORECORE default: 1 (true) unless win32 or ONLY_MSPACES + True if this system supports sbrk or an emulation of it. + + MORECORE default: sbrk + The name of the sbrk-style system routine to call to obtain more + memory. See below for guidance on writing custom MORECORE + functions. The type of the argument to sbrk/MORECORE varies across + systems. It cannot be size_t, because it supports negative + arguments, so it is normally the signed type of the same width as + size_t (sometimes declared as "intptr_t"). It doesn't much matter + though. Internally, we only call it with arguments less than half + the max value of a size_t, which should work across all reasonable + possibilities, although sometimes generating compiler warnings. + + MORECORE_CONTIGUOUS default: 1 (true) if HAVE_MORECORE + If true, take advantage of fact that consecutive calls to MORECORE + with positive arguments always return contiguous increasing + addresses. This is true of unix sbrk. It does not hurt too much to + set it true anyway, since malloc copes with non-contiguities. + Setting it false when definitely non-contiguous saves time + and possibly wasted space it would take to discover this though. + + MORECORE_CANNOT_TRIM default: NOT defined + True if MORECORE cannot release space back to the system when given + negative arguments. This is generally necessary only if you are + using a hand-crafted MORECORE function that cannot handle negative + arguments. + + NO_SEGMENT_TRAVERSAL default: 0 + If non-zero, suppresses traversals of memory segments + returned by either MORECORE or CALL_MMAP. This disables + merging of segments that are contiguous, and selectively + releasing them to the OS if unused, but bounds execution times. + + HAVE_MMAP default: 1 (true) + True if this system supports mmap or an emulation of it. If so, and + HAVE_MORECORE is not true, MMAP is used for all system + allocation. If set and HAVE_MORECORE is true as well, MMAP is + primarily used to directly allocate very large blocks. It is also + used as a backup strategy in cases where MORECORE fails to provide + space from system. Note: A single call to MUNMAP is assumed to be + able to unmap memory that may have be allocated using multiple calls + to MMAP, so long as they are adjacent. + + HAVE_MREMAP default: 1 on linux, else 0 + If true realloc() uses mremap() to re-allocate large blocks and + extend or shrink allocation spaces. + + MMAP_CLEARS default: 1 except on WINCE. + True if mmap clears memory so calloc doesn't need to. This is true + for standard unix mmap using /dev/zero and on WIN32 except for WINCE. + + USE_BUILTIN_FFS default: 0 (i.e., not used) + Causes malloc to use the builtin ffs() function to compute indices. + Some compilers may recognize and intrinsify ffs to be faster than the + supplied C version. Also, the case of x86 using gcc is special-cased + to an asm instruction, so is already as fast as it can be, and so + this setting has no effect. Similarly for Win32 under recent MS compilers. + (On most x86s, the asm version is only slightly faster than the C version.) + + malloc_getpagesize default: derive from system includes, or 4096. + The system page size. To the extent possible, this malloc manages + memory from the system in page-size units. This may be (and + usually is) a function rather than a constant. This is ignored + if WIN32, where page size is determined using getSystemInfo during + initialization. + + USE_DEV_RANDOM default: 0 (i.e., not used) + Causes malloc to use /dev/random to initialize secure magic seed for + stamping footers. Otherwise, the current time is used. + + NO_MALLINFO default: 0 + If defined, don't compile "mallinfo". This can be a simple way + of dealing with mismatches between system declarations and + those in this file. + + MALLINFO_FIELD_TYPE default: size_t + The type of the fields in the mallinfo struct. This was originally + defined as "int" in SVID etc, but is more usefully defined as + size_t. The value is used only if HAVE_USR_INCLUDE_MALLOC_H is not set + + NO_MALLOC_STATS default: 0 + If defined, don't compile "malloc_stats". This avoids calls to + fprintf and bringing in stdio dependencies you might not want. + + REALLOC_ZERO_BYTES_FREES default: not defined + This should be set if a call to realloc with zero bytes should + be the same as a call to free. Some people think it should. Otherwise, + since this malloc returns a unique pointer for malloc(0), so does + realloc(p, 0). + + LACKS_UNISTD_H, LACKS_FCNTL_H, LACKS_SYS_PARAM_H, LACKS_SYS_MMAN_H + LACKS_STRINGS_H, LACKS_STRING_H, LACKS_SYS_TYPES_H, LACKS_ERRNO_H + LACKS_STDLIB_H LACKS_SCHED_H LACKS_TIME_H default: NOT defined unless on WIN32 + Define these if your system does not have these header files. + You might need to manually insert some of the declarations they provide. + + DEFAULT_GRANULARITY default: page size if MORECORE_CONTIGUOUS, + system_info.dwAllocationGranularity in WIN32, + otherwise 64K. + Also settable using mallopt(M_GRANULARITY, x) + The unit for allocating and deallocating memory from the system. On + most systems with contiguous MORECORE, there is no reason to + make this more than a page. However, systems with MMAP tend to + either require or encourage larger granularities. You can increase + this value to prevent system allocation functions to be called so + often, especially if they are slow. The value must be at least one + page and must be a power of two. Setting to 0 causes initialization + to either page size or win32 region size. (Note: In previous + versions of malloc, the equivalent of this option was called + "TOP_PAD") + + DEFAULT_TRIM_THRESHOLD default: 2MB + Also settable using mallopt(M_TRIM_THRESHOLD, x) + The maximum amount of unused top-most memory to keep before + releasing via malloc_trim in free(). Automatic trimming is mainly + useful in long-lived programs using contiguous MORECORE. Because + trimming via sbrk can be slow on some systems, and can sometimes be + wasteful (in cases where programs immediately afterward allocate + more large chunks) the value should be high enough so that your + overall system performance would improve by releasing this much + memory. As a rough guide, you might set to a value close to the + average size of a process (program) running on your system. + Releasing this much memory would allow such a process to run in + memory. Generally, it is worth tuning trim thresholds when a + program undergoes phases where several large chunks are allocated + and released in ways that can reuse each other's storage, perhaps + mixed with phases where there are no such chunks at all. The trim + value must be greater than page size to have any useful effect. To + disable trimming completely, you can set to MAX_SIZE_T. Note that the trick + some people use of mallocing a huge space and then freeing it at + program startup, in an attempt to reserve system memory, doesn't + have the intended effect under automatic trimming, since that memory + will immediately be returned to the system. + + DEFAULT_MMAP_THRESHOLD default: 256K + Also settable using mallopt(M_MMAP_THRESHOLD, x) + The request size threshold for using MMAP to directly service a + request. Requests of at least this size that cannot be allocated + using already-existing space will be serviced via mmap. (If enough + normal freed space already exists it is used instead.) Using mmap + segregates relatively large chunks of memory so that they can be + individually obtained and released from the host system. A request + serviced through mmap is never reused by any other request (at least + not directly; the system may just so happen to remap successive + requests to the same locations). Segregating space in this way has + the benefits that: Mmapped space can always be individually released + back to the system, which helps keep the system level memory demands + of a long-lived program low. Also, mapped memory doesn't become + `locked' between other chunks, as can happen with normally allocated + chunks, which means that even trimming via malloc_trim would not + release them. However, it has the disadvantage that the space + cannot be reclaimed, consolidated, and then used to service later + requests, as happens with normal chunks. The advantages of mmap + nearly always outweigh disadvantages for "large" chunks, but the + value of "large" may vary across systems. The default is an + empirically derived value that works well in most systems. You can + disable mmap by setting to MAX_SIZE_T. + + MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP + The number of consolidated frees between checks to release + unused segments when freeing. When using non-contiguous segments, + especially with multiple mspaces, checking only for topmost space + doesn't always suffice to trigger trimming. To compensate for this, + free() will, with a period of MAX_RELEASE_CHECK_RATE (or the + current number of segments, if greater) try to release unused + segments to the OS when freeing chunks that result in + consolidation. The best value for this parameter is a compromise + between slowing down frees with relatively costly checks that + rarely trigger versus holding on to unused memory. To effectively + disable, set to MAX_SIZE_T. This may lead to a very slight speed + improvement at the expense of carrying around more memory. + */ /* Version identifier to allow people to support multiple versions */ #ifndef DLMALLOC_VERSION -#define DLMALLOC_VERSION 20804 +#define DLMALLOC_VERSION 20806 #endif /* DLMALLOC_VERSION */ +#ifndef DLMALLOC_EXPORT +#define DLMALLOC_EXPORT extern +#endif + #ifndef WIN32 #ifdef _WIN32 #define WIN32 1 @@ -503,6 +548,7 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #ifdef WIN32 #define WIN32_LEAN_AND_MEAN #include +#include #define HAVE_MMAP 1 #define HAVE_MORECORE 0 #define LACKS_UNISTD_H @@ -512,14 +558,17 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #define LACKS_STRINGS_H #define LACKS_SYS_TYPES_H #define LACKS_ERRNO_H +#define LACKS_SCHED_H #ifndef MALLOC_FAILURE_ACTION #define MALLOC_FAILURE_ACTION #endif /* MALLOC_FAILURE_ACTION */ +#ifndef MMAP_CLEARS #ifdef _WIN32_WCE /* WINCE reportedly does not clear */ #define MMAP_CLEARS 0 #else #define MMAP_CLEARS 1 #endif /* _WIN32_WCE */ +#endif /*MMAP_CLEARS */ #endif /* WIN32 */ #if defined(DARWIN) || defined(_DARWIN) @@ -538,19 +587,31 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #include /* For size_t */ #endif /* LACKS_SYS_TYPES_H */ -#if (defined(__GNUC__) && ((defined(__i386__) || defined(__x86_64__)))) || (defined(_MSC_VER) && _MSC_VER>=1310) -#define SPIN_LOCKS_AVAILABLE 1 -#else -#define SPIN_LOCKS_AVAILABLE 0 -#endif - /* The maximum possible size_t value has all bits set */ #define MAX_SIZE_T (~(size_t)0) +#ifndef USE_LOCKS /* ensure true if spin or recursive locks set */ +#define USE_LOCKS ((defined(USE_SPIN_LOCKS) && USE_SPIN_LOCKS != 0) || \ +(defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0)) +#endif /* USE_LOCKS */ + +#if USE_LOCKS /* Spin locks for gcc >= 4.1, older gcc on x86, MSC >= 1310 */ +#if ((defined(__GNUC__) && \ +((__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) || \ +defined(__i386__) || defined(__x86_64__))) || \ +(defined(_MSC_VER) && _MSC_VER>=1310)) +#ifndef USE_SPIN_LOCKS +#define USE_SPIN_LOCKS 1 +#endif /* USE_SPIN_LOCKS */ +#elif USE_SPIN_LOCKS +#error "USE_SPIN_LOCKS defined without implementation" +#endif /* ... locks available... */ +#elif !defined(USE_SPIN_LOCKS) +#define USE_SPIN_LOCKS 0 +#endif /* USE_LOCKS */ + #ifndef ONLY_MSPACES -#define ONLY_MSPACES 0 /* define to a value */ -#else -#define ONLY_MSPACES 1 +#define ONLY_MSPACES 0 #endif /* ONLY_MSPACES */ #ifndef MSPACES #if ONLY_MSPACES @@ -560,7 +621,7 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #endif /* ONLY_MSPACES */ #endif /* MSPACES */ #ifndef MALLOC_ALIGNMENT -#define MALLOC_ALIGNMENT ((size_t)8U) +#define MALLOC_ALIGNMENT ((size_t)(2 * sizeof(void *))) #endif /* MALLOC_ALIGNMENT */ #ifndef FOOTERS #define FOOTERS 0 @@ -574,24 +635,23 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #ifndef PROCEED_ON_ERROR #define PROCEED_ON_ERROR 0 #endif /* PROCEED_ON_ERROR */ -#ifndef USE_LOCKS -#define USE_LOCKS 0 -#endif /* USE_LOCKS */ -#ifndef USE_SPIN_LOCKS -#if USE_LOCKS && SPIN_LOCKS_AVAILABLE -#define USE_SPIN_LOCKS 1 -#else -#define USE_SPIN_LOCKS 0 -#endif /* USE_LOCKS && SPIN_LOCKS_AVAILABLE. */ -#endif /* USE_SPIN_LOCKS */ + #ifndef INSECURE #define INSECURE 0 #endif /* INSECURE */ +#ifndef MALLOC_INSPECT_ALL +#define MALLOC_INSPECT_ALL 0 +#endif /* MALLOC_INSPECT_ALL */ #ifndef HAVE_MMAP /* XXX Emscripten * mmap uses malloc, so malloc can't use mmap */ +#ifdef EMSCRIPTEN #define HAVE_MMAP 0 +#else +#define HAVE_MMAP 1 +#endif + #endif /* HAVE_MMAP */ #ifndef MMAP_CLEARS #define MMAP_CLEARS 1 @@ -599,6 +659,7 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #ifndef HAVE_MREMAP #ifdef linux #define HAVE_MREMAP 1 +#define _GNU_SOURCE /* Turns on mremap() definition */ #else /* linux */ #define HAVE_MREMAP 0 #endif /* linux */ @@ -661,16 +722,19 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #ifndef MALLINFO_FIELD_TYPE #define MALLINFO_FIELD_TYPE size_t #endif /* MALLINFO_FIELD_TYPE */ +#ifndef NO_MALLOC_STATS +#define NO_MALLOC_STATS 0 +#endif /* NO_MALLOC_STATS */ #ifndef NO_SEGMENT_TRAVERSAL #define NO_SEGMENT_TRAVERSAL 0 #endif /* NO_SEGMENT_TRAVERSAL */ /* - mallopt tuning options. SVID/XPG defines four standard parameter - numbers for mallopt, normally defined in malloc.h. None of these - are used in this malloc, so setting them has no effect. But this - malloc does support the following options. -*/ + mallopt tuning options. SVID/XPG defines four standard parameter + numbers for mallopt, normally defined in malloc.h. None of these + are used in this malloc, so setting them has no effect. But this + malloc does support the following options. + */ #define M_TRIM_THRESHOLD (-1) #define M_GRANULARITY (-2) @@ -680,26 +744,26 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #if !NO_MALLINFO /* - This version of malloc supports the standard SVID/XPG mallinfo - routine that returns a struct containing usage properties and - statistics. It should work on any system that has a - /usr/include/malloc.h defining struct mallinfo. The main - declaration needed is the mallinfo struct that is returned (by-copy) - by mallinfo(). The malloinfo struct contains a bunch of fields that - are not even meaningful in this version of malloc. These fields are - are instead filled by mallinfo() with other numbers that might be of - interest. - - HAVE_USR_INCLUDE_MALLOC_H should be set if you have a - /usr/include/malloc.h file that includes a declaration of struct - mallinfo. If so, it is included; else a compliant version is - declared below. These must be precisely the same for mallinfo() to - work. The original SVID version of this struct, defined on most - systems with mallinfo, declares all fields as ints. But some others - define as unsigned long. If your system defines the fields using a - type of different width than listed here, you MUST #include your - system version and #define HAVE_USR_INCLUDE_MALLOC_H. -*/ + This version of malloc supports the standard SVID/XPG mallinfo + routine that returns a struct containing usage properties and + statistics. It should work on any system that has a + /usr/include/malloc.h defining struct mallinfo. The main + declaration needed is the mallinfo struct that is returned (by-copy) + by mallinfo(). The malloinfo struct contains a bunch of fields that + are not even meaningful in this version of malloc. These fields are + are instead filled by mallinfo() with other numbers that might be of + interest. + + HAVE_USR_INCLUDE_MALLOC_H should be set if you have a + /usr/include/malloc.h file that includes a declaration of struct + mallinfo. If so, it is included; else a compliant version is + declared below. These must be precisely the same for mallinfo() to + work. The original SVID version of this struct, defined on most + systems with mallinfo, declares all fields as ints. But some others + define as unsigned long. If your system defines the fields using a + type of different width than listed here, you MUST #include your + system version and #define HAVE_USR_INCLUDE_MALLOC_H. + */ /* #define HAVE_USR_INCLUDE_MALLOC_H */ @@ -707,65 +771,69 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #include "/usr/include/malloc.h" #else /* HAVE_USR_INCLUDE_MALLOC_H */ #ifndef STRUCT_MALLINFO_DECLARED +/* HP-UX (and others?) redefines mallinfo unless _STRUCT_MALLINFO is defined */ +#define _STRUCT_MALLINFO #define STRUCT_MALLINFO_DECLARED 1 struct mallinfo { - MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ - MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ - MALLINFO_FIELD_TYPE smblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ - MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ - MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ - MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ - MALLINFO_FIELD_TYPE fordblks; /* total free space */ - MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ + MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ + MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ + MALLINFO_FIELD_TYPE smblks; /* always 0 */ + MALLINFO_FIELD_TYPE hblks; /* always 0 */ + MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ + MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ + MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ + MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ + MALLINFO_FIELD_TYPE fordblks; /* total free space */ + MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ }; #endif /* STRUCT_MALLINFO_DECLARED */ #endif /* HAVE_USR_INCLUDE_MALLOC_H */ #endif /* NO_MALLINFO */ /* - Try to persuade compilers to inline. The most critical functions for - inlining are defined as macros, so these aren't used for them. -*/ + Try to persuade compilers to inline. The most critical functions for + inlining are defined as macros, so these aren't used for them. + */ #ifndef FORCEINLINE - #if defined(__GNUC__) +#if defined(__GNUC__) #define FORCEINLINE __inline __attribute__ ((always_inline)) - #elif defined(_MSC_VER) - #define FORCEINLINE __forceinline - #endif +#elif defined(_MSC_VER) +#define FORCEINLINE __forceinline +#endif #endif #ifndef NOINLINE - #if defined(__GNUC__) - #define NOINLINE __attribute__ ((noinline)) - #elif defined(_MSC_VER) - #define NOINLINE __declspec(noinline) - #else - #define NOINLINE - #endif +#if defined(__GNUC__) +#define NOINLINE __attribute__ ((noinline)) +#elif defined(_MSC_VER) +#define NOINLINE __declspec(noinline) +#else +#define NOINLINE +#endif #endif #ifdef __cplusplus extern "C" { #ifndef FORCEINLINE - #define FORCEINLINE inline +#define FORCEINLINE inline #endif #endif /* __cplusplus */ #ifndef FORCEINLINE - #define FORCEINLINE +#define FORCEINLINE #endif - + #if !ONLY_MSPACES - -/* ------------------- Declarations of public routines ------------------- */ - + + /* ------------------- Declarations of public routines ------------------- */ + #ifndef USE_DL_PREFIX #define dlcalloc calloc #define dlfree free #define dlmalloc malloc #define dlmemalign memalign +#define dlposix_memalign posix_memalign #define dlrealloc realloc +#define dlrealloc_in_place realloc_in_place #define dlvalloc valloc #define dlpvalloc pvalloc #define dlmallinfo mallinfo @@ -775,533 +843,615 @@ extern "C" { #define dlmalloc_usable_size malloc_usable_size #define dlmalloc_footprint malloc_footprint #define dlmalloc_max_footprint malloc_max_footprint +#define dlmalloc_footprint_limit malloc_footprint_limit +#define dlmalloc_set_footprint_limit malloc_set_footprint_limit +#define dlmalloc_inspect_all malloc_inspect_all #define dlindependent_calloc independent_calloc #define dlindependent_comalloc independent_comalloc +#define dlbulk_free bulk_free #endif /* USE_DL_PREFIX */ - - -/* - malloc(size_t n) - Returns a pointer to a newly allocated chunk of at least n bytes, or - null if no space is available, in which case errno is set to ENOMEM - on ANSI C systems. - - If n is zero, malloc returns a minimum-sized chunk. (The minimum - size is 16 bytes on most 32bit systems, and 32 bytes on 64bit - systems.) Note that size_t is an unsigned type, so calls with - arguments that would be negative if signed are interpreted as - requests for huge amounts of space, which will often fail. The - maximum supported value of n differs across systems, but is in all - cases less than the maximum representable value of a size_t. -*/ -void* dlmalloc(size_t) __THROW __attribute_malloc__ __wur; - -/* - free(void* p) - Releases the chunk of memory pointed to by p, that had been previously - allocated using malloc or a related routine such as realloc. - It has no effect if p is null. If p was not malloced or already - freed, free(p) will by default cause the current program to abort. -*/ -void dlfree(void*) __THROW __wur; - -/* - calloc(size_t n_elements, size_t element_size); - Returns a pointer to n_elements * element_size bytes, with all locations - set to zero. -*/ -void* dlcalloc(size_t, size_t) __THROW __attribute_malloc__ __wur; - -/* - realloc(void* p, size_t n) - Returns a pointer to a chunk of size n that contains the same data - as does chunk p up to the minimum of (n, p's size) bytes, or null - if no space is available. - - The returned pointer may or may not be the same as p. The algorithm - prefers extending p in most cases when possible, otherwise it - employs the equivalent of a malloc-copy-free sequence. - - If p is null, realloc is equivalent to malloc. - - If space is not available, realloc returns null, errno is set (if on - ANSI) and p is NOT freed. - - if n is for fewer bytes than already held by p, the newly unused - space is lopped off and freed if possible. realloc with a size - argument of zero (re)allocates a minimum-sized chunk. - - The old unix realloc convention of allowing the last-free'd chunk - to be used as an argument to realloc is not supported. -*/ - -void* dlrealloc(void*, size_t) __THROW __attribute_malloc__ __wur; - -/* - memalign(size_t alignment, size_t n); - Returns a pointer to a newly allocated chunk of n bytes, aligned - in accord with the alignment argument. - - The alignment argument should be a power of two. If the argument is - not a power of two, the nearest greater power is used. - 8-byte alignment is guaranteed by normal malloc calls, so don't - bother calling memalign with an argument of 8 or less. - - Overreliance on memalign is a sure way to fragment space. -*/ -void* dlmemalign(size_t, size_t); - -/* - valloc(size_t n); - Equivalent to memalign(pagesize, n), where pagesize is the page - size of the system. If the pagesize is unknown, 4096 is used. -*/ -void* dlvalloc(size_t) __THROW __attribute_malloc__ __wur; - -/* - mallopt(int parameter_number, int parameter_value) - Sets tunable parameters The format is to provide a - (parameter-number, parameter-value) pair. mallopt then sets the - corresponding parameter to the argument value if it can (i.e., so - long as the value is meaningful), and returns 1 if successful else - 0. To workaround the fact that mallopt is specified to use int, - not size_t parameters, the value -1 is specially treated as the - maximum unsigned size_t value. - - SVID/XPG/ANSI defines four standard param numbers for mallopt, - normally defined in malloc.h. None of these are use in this malloc, - so setting them has no effect. But this malloc also supports other - options in mallopt. See below for details. Briefly, supported - parameters are as follows (listed defaults are for "typical" - configurations). - - Symbol param # default allowed param values - M_TRIM_THRESHOLD -1 2*1024*1024 any (-1 disables) - M_GRANULARITY -2 page size any power of 2 >= page size - M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support) -*/ -int dlmallopt(int, int); - -/* - malloc_footprint(); - Returns the number of bytes obtained from the system. The total - number of bytes allocated by malloc, realloc etc., is less than this - value. Unlike mallinfo, this function returns only a precomputed - result, so can be called frequently to monitor memory consumption. - Even if locks are otherwise defined, this function does not use them, - so results might not be up to date. -*/ -size_t dlmalloc_footprint(void); - -/* - malloc_max_footprint(); - Returns the maximum number of bytes obtained from the system. This - value will be greater than current footprint if deallocated space - has been reclaimed by the system. The peak number of bytes allocated - by malloc, realloc etc., is less than this value. Unlike mallinfo, - this function returns only a precomputed result, so can be called - frequently to monitor memory consumption. Even if locks are - otherwise defined, this function does not use them, so results might - not be up to date. -*/ -size_t dlmalloc_max_footprint(void); - + + /* + malloc(size_t n) + Returns a pointer to a newly allocated chunk of at least n bytes, or + null if no space is available, in which case errno is set to ENOMEM + on ANSI C systems. + + If n is zero, malloc returns a minimum-sized chunk. (The minimum + size is 16 bytes on most 32bit systems, and 32 bytes on 64bit + systems.) Note that size_t is an unsigned type, so calls with + arguments that would be negative if signed are interpreted as + requests for huge amounts of space, which will often fail. The + maximum supported value of n differs across systems, but is in all + cases less than the maximum representable value of a size_t. + */ + DLMALLOC_EXPORT void* dlmalloc(size_t); + + /* + free(void* p) + Releases the chunk of memory pointed to by p, that had been previously + allocated using malloc or a related routine such as realloc. + It has no effect if p is null. If p was not malloced or already + freed, free(p) will by default cause the current program to abort. + */ + DLMALLOC_EXPORT void dlfree(void*); + + /* + calloc(size_t n_elements, size_t element_size); + Returns a pointer to n_elements * element_size bytes, with all locations + set to zero. + */ + DLMALLOC_EXPORT void* dlcalloc(size_t, size_t); + + /* + realloc(void* p, size_t n) + Returns a pointer to a chunk of size n that contains the same data + as does chunk p up to the minimum of (n, p's size) bytes, or null + if no space is available. + + The returned pointer may or may not be the same as p. The algorithm + prefers extending p in most cases when possible, otherwise it + employs the equivalent of a malloc-copy-free sequence. + + If p is null, realloc is equivalent to malloc. + + If space is not available, realloc returns null, errno is set (if on + ANSI) and p is NOT freed. + + if n is for fewer bytes than already held by p, the newly unused + space is lopped off and freed if possible. realloc with a size + argument of zero (re)allocates a minimum-sized chunk. + + The old unix realloc convention of allowing the last-free'd chunk + to be used as an argument to realloc is not supported. + */ + DLMALLOC_EXPORT void* dlrealloc(void*, size_t); + + /* + realloc_in_place(void* p, size_t n) + Resizes the space allocated for p to size n, only if this can be + done without moving p (i.e., only if there is adjacent space + available if n is greater than p's current allocated size, or n is + less than or equal to p's size). This may be used instead of plain + realloc if an alternative allocation strategy is needed upon failure + to expand space; for example, reallocation of a buffer that must be + memory-aligned or cleared. You can use realloc_in_place to trigger + these alternatives only when needed. + + Returns p if successful; otherwise null. + */ + DLMALLOC_EXPORT void* dlrealloc_in_place(void*, size_t); + + /* + memalign(size_t alignment, size_t n); + Returns a pointer to a newly allocated chunk of n bytes, aligned + in accord with the alignment argument. + + The alignment argument should be a power of two. If the argument is + not a power of two, the nearest greater power is used. + 8-byte alignment is guaranteed by normal malloc calls, so don't + bother calling memalign with an argument of 8 or less. + + Overreliance on memalign is a sure way to fragment space. + */ + DLMALLOC_EXPORT void* dlmemalign(size_t, size_t); + + /* + int posix_memalign(void** pp, size_t alignment, size_t n); + Allocates a chunk of n bytes, aligned in accord with the alignment + argument. Differs from memalign only in that it (1) assigns the + allocated memory to *pp rather than returning it, (2) fails and + returns EINVAL if the alignment is not a power of two (3) fails and + returns ENOMEM if memory cannot be allocated. + */ + DLMALLOC_EXPORT int dlposix_memalign(void**, size_t, size_t); + + /* + valloc(size_t n); + Equivalent to memalign(pagesize, n), where pagesize is the page + size of the system. If the pagesize is unknown, 4096 is used. + */ + DLMALLOC_EXPORT void* dlvalloc(size_t); + + /* + mallopt(int parameter_number, int parameter_value) + Sets tunable parameters The format is to provide a + (parameter-number, parameter-value) pair. mallopt then sets the + corresponding parameter to the argument value if it can (i.e., so + long as the value is meaningful), and returns 1 if successful else + 0. To workaround the fact that mallopt is specified to use int, + not size_t parameters, the value -1 is specially treated as the + maximum unsigned size_t value. + + SVID/XPG/ANSI defines four standard param numbers for mallopt, + normally defined in malloc.h. None of these are use in this malloc, + so setting them has no effect. But this malloc also supports other + options in mallopt. See below for details. Briefly, supported + parameters are as follows (listed defaults are for "typical" + configurations). + + Symbol param # default allowed param values + M_TRIM_THRESHOLD -1 2*1024*1024 any (-1 disables) + M_GRANULARITY -2 page size any power of 2 >= page size + M_MMAP_THRESHOLD -3 256*1024 any (or 0 if no MMAP support) + */ + DLMALLOC_EXPORT int dlmallopt(int, int); + + /* + malloc_footprint(); + Returns the number of bytes obtained from the system. The total + number of bytes allocated by malloc, realloc etc., is less than this + value. Unlike mallinfo, this function returns only a precomputed + result, so can be called frequently to monitor memory consumption. + Even if locks are otherwise defined, this function does not use them, + so results might not be up to date. + */ + DLMALLOC_EXPORT size_t dlmalloc_footprint(void); + + /* + malloc_max_footprint(); + Returns the maximum number of bytes obtained from the system. This + value will be greater than current footprint if deallocated space + has been reclaimed by the system. The peak number of bytes allocated + by malloc, realloc etc., is less than this value. Unlike mallinfo, + this function returns only a precomputed result, so can be called + frequently to monitor memory consumption. Even if locks are + otherwise defined, this function does not use them, so results might + not be up to date. + */ + DLMALLOC_EXPORT size_t dlmalloc_max_footprint(void); + + /* + malloc_footprint_limit(); + Returns the number of bytes that the heap is allowed to obtain from + the system, returning the last value returned by + malloc_set_footprint_limit, or the maximum size_t value if + never set. The returned value reflects a permission. There is no + guarantee that this number of bytes can actually be obtained from + the system. + */ + DLMALLOC_EXPORT size_t dlmalloc_footprint_limit(); + + /* + malloc_set_footprint_limit(); + Sets the maximum number of bytes to obtain from the system, causing + failure returns from malloc and related functions upon attempts to + exceed this value. The argument value may be subject to page + rounding to an enforceable limit; this actual value is returned. + Using an argument of the maximum possible size_t effectively + disables checks. If the argument is less than or equal to the + current malloc_footprint, then all future allocations that require + additional system memory will fail. However, invocation cannot + retroactively deallocate existing used memory. + */ + DLMALLOC_EXPORT size_t dlmalloc_set_footprint_limit(size_t bytes); + +#if MALLOC_INSPECT_ALL + /* + malloc_inspect_all(void(*handler)(void *start, + void *end, + size_t used_bytes, + void* callback_arg), + void* arg); + Traverses the heap and calls the given handler for each managed + region, skipping all bytes that are (or may be) used for bookkeeping + purposes. Traversal does not include include chunks that have been + directly memory mapped. Each reported region begins at the start + address, and continues up to but not including the end address. The + first used_bytes of the region contain allocated data. If + used_bytes is zero, the region is unallocated. The handler is + invoked with the given callback argument. If locks are defined, they + are held during the entire traversal. It is a bad idea to invoke + other malloc functions from within the handler. + + For example, to count the number of in-use chunks with size greater + than 1000, you could write: + static int count = 0; + void count_chunks(void* start, void* end, size_t used, void* arg) { + if (used >= 1000) ++count; + } + then: + malloc_inspect_all(count_chunks, NULL); + + malloc_inspect_all is compiled only if MALLOC_INSPECT_ALL is defined. + */ + DLMALLOC_EXPORT void dlmalloc_inspect_all(void(*handler)(void*, void *, size_t, void*), + void* arg); + +#endif /* MALLOC_INSPECT_ALL */ + #if !NO_MALLINFO -/* - mallinfo() - Returns (by copy) a struct containing various summary statistics: - - arena: current total non-mmapped bytes allocated from system - ordblks: the number of free chunks - smblks: always zero. - hblks: current number of mmapped regions - hblkhd: total bytes held in mmapped regions - usmblks: the maximum total allocated space. This will be greater - than current total if trimming has occurred. - fsmblks: always zero - uordblks: current total allocated space (normal or mmapped) - fordblks: total free space - keepcost: the maximum number of bytes that could ideally be released - back to system via malloc_trim. ("ideally" means that - it ignores page restrictions etc.) - - Because these fields are ints, but internal bookkeeping may - be kept as longs, the reported values may wrap around zero and - thus be inaccurate. -*/ -struct mallinfo dlmallinfo(void); + /* + mallinfo() + Returns (by copy) a struct containing various summary statistics: + + arena: current total non-mmapped bytes allocated from system + ordblks: the number of free chunks + smblks: always zero. + hblks: current number of mmapped regions + hblkhd: total bytes held in mmapped regions + usmblks: the maximum total allocated space. This will be greater + than current total if trimming has occurred. + fsmblks: always zero + uordblks: current total allocated space (normal or mmapped) + fordblks: total free space + keepcost: the maximum number of bytes that could ideally be released + back to system via malloc_trim. ("ideally" means that + it ignores page restrictions etc.) + + Because these fields are ints, but internal bookkeeping may + be kept as longs, the reported values may wrap around zero and + thus be inaccurate. + */ + DLMALLOC_EXPORT struct mallinfo dlmallinfo(void); #endif /* NO_MALLINFO */ - -/* - independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); - - independent_calloc is similar to calloc, but instead of returning a - single cleared space, it returns an array of pointers to n_elements - independent elements that can hold contents of size elem_size, each - of which starts out cleared, and can be independently freed, - realloc'ed etc. The elements are guaranteed to be adjacently - allocated (this is not guaranteed to occur with multiple callocs or - mallocs), which may also improve cache locality in some - applications. - - The "chunks" argument is optional (i.e., may be null, which is - probably the most typical usage). If it is null, the returned array - is itself dynamically allocated and should also be freed when it is - no longer needed. Otherwise, the chunks array must be of at least - n_elements in length. It is filled in with the pointers to the - chunks. - - In either case, independent_calloc returns this pointer array, or - null if the allocation failed. If n_elements is zero and "chunks" - is null, it returns a chunk representing an array with zero elements - (which should be freed if not wanted). - - Each element must be individually freed when it is no longer - needed. If you'd like to instead be able to free all at once, you - should instead use regular calloc and assign pointers into this - space to represent elements. (In this case though, you cannot - independently free elements.) - - independent_calloc simplifies and speeds up implementations of many - kinds of pools. It may also be useful when constructing large data - structures that initially have a fixed number of fixed-sized nodes, - but the number is not known at compile time, and some of the nodes - may later need to be freed. For example: - - struct Node { int item; struct Node* next; }; - - struct Node* build_list() { - struct Node** pool; - int n = read_number_of_nodes_needed(); - if (n <= 0) return 0; - pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0); - if (pool == 0) die(); - // organize into a linked list... - struct Node* first = pool[0]; - for (i = 0; i < n-1; ++i) - pool[i]->next = pool[i+1]; - free(pool); // Can now free the array (or not, if it is needed later) - return first; - } -*/ -void** dlindependent_calloc(size_t, size_t, void**); - -/* - independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]); - - independent_comalloc allocates, all at once, a set of n_elements - chunks with sizes indicated in the "sizes" array. It returns - an array of pointers to these elements, each of which can be - independently freed, realloc'ed etc. The elements are guaranteed to - be adjacently allocated (this is not guaranteed to occur with - multiple callocs or mallocs), which may also improve cache locality - in some applications. - - The "chunks" argument is optional (i.e., may be null). If it is null - the returned array is itself dynamically allocated and should also - be freed when it is no longer needed. Otherwise, the chunks array - must be of at least n_elements in length. It is filled in with the - pointers to the chunks. - - In either case, independent_comalloc returns this pointer array, or - null if the allocation failed. If n_elements is zero and chunks is - null, it returns a chunk representing an array with zero elements - (which should be freed if not wanted). - - Each element must be individually freed when it is no longer - needed. If you'd like to instead be able to free all at once, you - should instead use a single regular malloc, and assign pointers at - particular offsets in the aggregate space. (In this case though, you - cannot independently free elements.) - - independent_comallac differs from independent_calloc in that each - element may have a different size, and also that it does not - automatically clear elements. - - independent_comalloc can be used to speed up allocation in cases - where several structs or objects must always be allocated at the - same time. For example: - - struct Head { ... } - struct Foot { ... } - - void send_message(char* msg) { - int msglen = strlen(msg); - size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) }; - void* chunks[3]; - if (independent_comalloc(3, sizes, chunks) == 0) - die(); - struct Head* head = (struct Head*)(chunks[0]); - char* body = (char*)(chunks[1]); - struct Foot* foot = (struct Foot*)(chunks[2]); - // ... - } - - In general though, independent_comalloc is worth using only for - larger values of n_elements. For small values, you probably won't - detect enough difference from series of malloc calls to bother. - - Overuse of independent_comalloc can increase overall memory usage, - since it cannot reuse existing noncontiguous small chunks that - might be available for some of the elements. -*/ -void** dlindependent_comalloc(size_t, size_t*, void**); - - -/* - pvalloc(size_t n); - Equivalent to valloc(minimum-page-that-holds(n)), that is, - round up n to nearest pagesize. - */ -void* dlpvalloc(size_t); - -/* - malloc_trim(size_t pad); - - If possible, gives memory back to the system (via negative arguments - to sbrk) if there is unused memory at the `high' end of the malloc - pool or in unused MMAP segments. You can call this after freeing - large blocks of memory to potentially reduce the system-level memory - requirements of a program. However, it cannot guarantee to reduce - memory. Under some allocation patterns, some large free blocks of - memory will be locked between two used chunks, so they cannot be - given back to the system. - - The `pad' argument to malloc_trim represents the amount of free - trailing space to leave untrimmed. If this argument is zero, only - the minimum amount of memory to maintain internal data structures - will be left. Non-zero arguments can be supplied to maintain enough - trailing space to service future expected allocations without having - to re-obtain memory from the system. - - Malloc_trim returns 1 if it actually released any memory, else 0. -*/ -int dlmalloc_trim(size_t); - -/* - malloc_stats(); - Prints on stderr the amount of space obtained from the system (both - via sbrk and mmap), the maximum amount (which may be more than - current if malloc_trim and/or munmap got called), and the current - number of bytes allocated via malloc (or realloc, etc) but not yet - freed. Note that this is the number of bytes allocated, not the - number requested. It will be larger than the number requested - because of alignment and bookkeeping overhead. Because it includes - alignment wastage as being in use, this figure may be greater than - zero even when no user-level chunks are allocated. - - The reported current and maximum system memory can be inaccurate if - a program makes other calls to system memory allocation functions - (normally sbrk) outside of malloc. - - malloc_stats prints only the most commonly interesting statistics. - More information can be obtained by calling mallinfo. -*/ -void dlmalloc_stats(void); - + + /* + independent_calloc(size_t n_elements, size_t element_size, void* chunks[]); + + independent_calloc is similar to calloc, but instead of returning a + single cleared space, it returns an array of pointers to n_elements + independent elements that can hold contents of size elem_size, each + of which starts out cleared, and can be independently freed, + realloc'ed etc. The elements are guaranteed to be adjacently + allocated (this is not guaranteed to occur with multiple callocs or + mallocs), which may also improve cache locality in some + applications. + + The "chunks" argument is optional (i.e., may be null, which is + probably the most typical usage). If it is null, the returned array + is itself dynamically allocated and should also be freed when it is + no longer needed. Otherwise, the chunks array must be of at least + n_elements in length. It is filled in with the pointers to the + chunks. + + In either case, independent_calloc returns this pointer array, or + null if the allocation failed. If n_elements is zero and "chunks" + is null, it returns a chunk representing an array with zero elements + (which should be freed if not wanted). + + Each element must be freed when it is no longer needed. This can be + done all at once using bulk_free. + + independent_calloc simplifies and speeds up implementations of many + kinds of pools. It may also be useful when constructing large data + structures that initially have a fixed number of fixed-sized nodes, + but the number is not known at compile time, and some of the nodes + may later need to be freed. For example: + + struct Node { int item; struct Node* next; }; + + struct Node* build_list() { + struct Node** pool; + int n = read_number_of_nodes_needed(); + if (n <= 0) return 0; + pool = (struct Node**)(independent_calloc(n, sizeof(struct Node), 0); + if (pool == 0) die(); + // organize into a linked list... + struct Node* first = pool[0]; + for (i = 0; i < n-1; ++i) + pool[i]->next = pool[i+1]; + free(pool); // Can now free the array (or not, if it is needed later) + return first; + } + */ + DLMALLOC_EXPORT void** dlindependent_calloc(size_t, size_t, void**); + + /* + independent_comalloc(size_t n_elements, size_t sizes[], void* chunks[]); + + independent_comalloc allocates, all at once, a set of n_elements + chunks with sizes indicated in the "sizes" array. It returns + an array of pointers to these elements, each of which can be + independently freed, realloc'ed etc. The elements are guaranteed to + be adjacently allocated (this is not guaranteed to occur with + multiple callocs or mallocs), which may also improve cache locality + in some applications. + + The "chunks" argument is optional (i.e., may be null). If it is null + the returned array is itself dynamically allocated and should also + be freed when it is no longer needed. Otherwise, the chunks array + must be of at least n_elements in length. It is filled in with the + pointers to the chunks. + + In either case, independent_comalloc returns this pointer array, or + null if the allocation failed. If n_elements is zero and chunks is + null, it returns a chunk representing an array with zero elements + (which should be freed if not wanted). + + Each element must be freed when it is no longer needed. This can be + done all at once using bulk_free. + + independent_comallac differs from independent_calloc in that each + element may have a different size, and also that it does not + automatically clear elements. + + independent_comalloc can be used to speed up allocation in cases + where several structs or objects must always be allocated at the + same time. For example: + + struct Head { ... } + struct Foot { ... } + + void send_message(char* msg) { + int msglen = strlen(msg); + size_t sizes[3] = { sizeof(struct Head), msglen, sizeof(struct Foot) }; + void* chunks[3]; + if (independent_comalloc(3, sizes, chunks) == 0) + die(); + struct Head* head = (struct Head*)(chunks[0]); + char* body = (char*)(chunks[1]); + struct Foot* foot = (struct Foot*)(chunks[2]); + // ... + } + + In general though, independent_comalloc is worth using only for + larger values of n_elements. For small values, you probably won't + detect enough difference from series of malloc calls to bother. + + Overuse of independent_comalloc can increase overall memory usage, + since it cannot reuse existing noncontiguous small chunks that + might be available for some of the elements. + */ + DLMALLOC_EXPORT void** dlindependent_comalloc(size_t, size_t*, void**); + + /* + bulk_free(void* array[], size_t n_elements) + Frees and clears (sets to null) each non-null pointer in the given + array. This is likely to be faster than freeing them one-by-one. + If footers are used, pointers that have been allocated in different + mspaces are not freed or cleared, and the count of all such pointers + is returned. For large arrays of pointers with poor locality, it + may be worthwhile to sort this array before calling bulk_free. + */ + DLMALLOC_EXPORT size_t dlbulk_free(void**, size_t n_elements); + + /* + pvalloc(size_t n); + Equivalent to valloc(minimum-page-that-holds(n)), that is, + round up n to nearest pagesize. + */ + DLMALLOC_EXPORT void* dlpvalloc(size_t); + + /* + malloc_trim(size_t pad); + + If possible, gives memory back to the system (via negative arguments + to sbrk) if there is unused memory at the `high' end of the malloc + pool or in unused MMAP segments. You can call this after freeing + large blocks of memory to potentially reduce the system-level memory + requirements of a program. However, it cannot guarantee to reduce + memory. Under some allocation patterns, some large free blocks of + memory will be locked between two used chunks, so they cannot be + given back to the system. + + The `pad' argument to malloc_trim represents the amount of free + trailing space to leave untrimmed. If this argument is zero, only + the minimum amount of memory to maintain internal data structures + will be left. Non-zero arguments can be supplied to maintain enough + trailing space to service future expected allocations without having + to re-obtain memory from the system. + + Malloc_trim returns 1 if it actually released any memory, else 0. + */ + DLMALLOC_EXPORT int dlmalloc_trim(size_t); + + /* + malloc_stats(); + Prints on stderr the amount of space obtained from the system (both + via sbrk and mmap), the maximum amount (which may be more than + current if malloc_trim and/or munmap got called), and the current + number of bytes allocated via malloc (or realloc, etc) but not yet + freed. Note that this is the number of bytes allocated, not the + number requested. It will be larger than the number requested + because of alignment and bookkeeping overhead. Because it includes + alignment wastage as being in use, this figure may be greater than + zero even when no user-level chunks are allocated. + + The reported current and maximum system memory can be inaccurate if + a program makes other calls to system memory allocation functions + (normally sbrk) outside of malloc. + + malloc_stats prints only the most commonly interesting statistics. + More information can be obtained by calling mallinfo. + */ + DLMALLOC_EXPORT void dlmalloc_stats(void); + + /* + malloc_usable_size(void* p); + + Returns the number of bytes you can actually use in + an allocated chunk, which may be more than you requested (although + often not) due to alignment and minimum size constraints. + You can use this many bytes without worrying about + overwriting other allocated objects. This is not a particularly great + programming practice. malloc_usable_size can be more useful in + debugging and assertions, for example: + + p = malloc(n); + assert(malloc_usable_size(p) >= 256); + */ + size_t dlmalloc_usable_size(void*); + #endif /* ONLY_MSPACES */ - -/* - malloc_usable_size(void* p); - - Returns the number of bytes you can actually use in - an allocated chunk, which may be more than you requested (although - often not) due to alignment and minimum size constraints. - You can use this many bytes without worrying about - overwriting other allocated objects. This is not a particularly great - programming practice. malloc_usable_size can be more useful in - debugging and assertions, for example: - - p = malloc(n); - assert(malloc_usable_size(p) >= 256); -*/ -size_t dlmalloc_usable_size(void*); - - + #if MSPACES - -/* - mspace is an opaque type representing an independent - region of space that supports mspace_malloc, etc. -*/ -typedef void* mspace; - -/* - create_mspace creates and returns a new independent space with the - given initial capacity, or, if 0, the default granularity size. It - returns null if there is no system memory available to create the - space. If argument locked is non-zero, the space uses a separate - lock to control access. The capacity of the space will grow - dynamically as needed to service mspace_malloc requests. You can - control the sizes of incremental increases of this space by - compiling with a different DEFAULT_GRANULARITY or dynamically - setting with mallopt(M_GRANULARITY, value). -*/ -mspace create_mspace(size_t capacity, int locked); - -/* - destroy_mspace destroys the given space, and attempts to return all - of its memory back to the system, returning the total number of - bytes freed. After destruction, the results of access to all memory - used by the space become undefined. -*/ -size_t destroy_mspace(mspace msp); - -/* - create_mspace_with_base uses the memory supplied as the initial base - of a new mspace. Part (less than 128*sizeof(size_t) bytes) of this - space is used for bookkeeping, so the capacity must be at least this - large. (Otherwise 0 is returned.) When this initial space is - exhausted, additional memory will be obtained from the system. - Destroying this space will deallocate all additionally allocated - space (if possible) but not the initial base. -*/ -mspace create_mspace_with_base(void* base, size_t capacity, int locked); - -/* - mspace_track_large_chunks controls whether requests for large chunks - are allocated in their own untracked mmapped regions, separate from - others in this mspace. By default large chunks are not tracked, - which reduces fragmentation. However, such chunks are not - necessarily released to the system upon destroy_mspace. Enabling - tracking by setting to true may increase fragmentation, but avoids - leakage when relying on destroy_mspace to release all memory - allocated using this space. The function returns the previous - setting. -*/ -int mspace_track_large_chunks(mspace msp, int enable); - - -/* - mspace_malloc behaves as malloc, but operates within - the given space. -*/ -void* mspace_malloc(mspace msp, size_t bytes); - -/* - mspace_free behaves as free, but operates within - the given space. - - If compiled with FOOTERS==1, mspace_free is not actually needed. - free may be called instead of mspace_free because freed chunks from - any space are handled by their originating spaces. -*/ -void mspace_free(mspace msp, void* mem); - -/* - mspace_realloc behaves as realloc, but operates within - the given space. - - If compiled with FOOTERS==1, mspace_realloc is not actually - needed. realloc may be called instead of mspace_realloc because - realloced chunks from any space are handled by their originating - spaces. -*/ -void* mspace_realloc(mspace msp, void* mem, size_t newsize); - -/* - mspace_calloc behaves as calloc, but operates within - the given space. -*/ -void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size); - -/* - mspace_memalign behaves as memalign, but operates within - the given space. -*/ -void* mspace_memalign(mspace msp, size_t alignment, size_t bytes); - -/* - mspace_independent_calloc behaves as independent_calloc, but - operates within the given space. -*/ -void** mspace_independent_calloc(mspace msp, size_t n_elements, - size_t elem_size, void* chunks[]); - -/* - mspace_independent_comalloc behaves as independent_comalloc, but - operates within the given space. -*/ -void** mspace_independent_comalloc(mspace msp, size_t n_elements, - size_t sizes[], void* chunks[]); - -/* - mspace_footprint() returns the number of bytes obtained from the - system for this space. -*/ -size_t mspace_footprint(mspace msp); - -/* - mspace_max_footprint() returns the peak number of bytes obtained from the - system for this space. -*/ -size_t mspace_max_footprint(mspace msp); - - + + /* + mspace is an opaque type representing an independent + region of space that supports mspace_malloc, etc. + */ + typedef void* mspace; + + /* + create_mspace creates and returns a new independent space with the + given initial capacity, or, if 0, the default granularity size. It + returns null if there is no system memory available to create the + space. If argument locked is non-zero, the space uses a separate + lock to control access. The capacity of the space will grow + dynamically as needed to service mspace_malloc requests. You can + control the sizes of incremental increases of this space by + compiling with a different DEFAULT_GRANULARITY or dynamically + setting with mallopt(M_GRANULARITY, value). + */ + DLMALLOC_EXPORT mspace create_mspace(size_t capacity, int locked); + + /* + destroy_mspace destroys the given space, and attempts to return all + of its memory back to the system, returning the total number of + bytes freed. After destruction, the results of access to all memory + used by the space become undefined. + */ + DLMALLOC_EXPORT size_t destroy_mspace(mspace msp); + + /* + create_mspace_with_base uses the memory supplied as the initial base + of a new mspace. Part (less than 128*sizeof(size_t) bytes) of this + space is used for bookkeeping, so the capacity must be at least this + large. (Otherwise 0 is returned.) When this initial space is + exhausted, additional memory will be obtained from the system. + Destroying this space will deallocate all additionally allocated + space (if possible) but not the initial base. + */ + DLMALLOC_EXPORT mspace create_mspace_with_base(void* base, size_t capacity, int locked); + + /* + mspace_track_large_chunks controls whether requests for large chunks + are allocated in their own untracked mmapped regions, separate from + others in this mspace. By default large chunks are not tracked, + which reduces fragmentation. However, such chunks are not + necessarily released to the system upon destroy_mspace. Enabling + tracking by setting to true may increase fragmentation, but avoids + leakage when relying on destroy_mspace to release all memory + allocated using this space. The function returns the previous + setting. + */ + DLMALLOC_EXPORT int mspace_track_large_chunks(mspace msp, int enable); + + + /* + mspace_malloc behaves as malloc, but operates within + the given space. + */ + DLMALLOC_EXPORT void* mspace_malloc(mspace msp, size_t bytes); + + /* + mspace_free behaves as free, but operates within + the given space. + + If compiled with FOOTERS==1, mspace_free is not actually needed. + free may be called instead of mspace_free because freed chunks from + any space are handled by their originating spaces. + */ + DLMALLOC_EXPORT void mspace_free(mspace msp, void* mem); + + /* + mspace_realloc behaves as realloc, but operates within + the given space. + + If compiled with FOOTERS==1, mspace_realloc is not actually + needed. realloc may be called instead of mspace_realloc because + realloced chunks from any space are handled by their originating + spaces. + */ + DLMALLOC_EXPORT void* mspace_realloc(mspace msp, void* mem, size_t newsize); + + /* + mspace_calloc behaves as calloc, but operates within + the given space. + */ + DLMALLOC_EXPORT void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size); + + /* + mspace_memalign behaves as memalign, but operates within + the given space. + */ + DLMALLOC_EXPORT void* mspace_memalign(mspace msp, size_t alignment, size_t bytes); + + /* + mspace_independent_calloc behaves as independent_calloc, but + operates within the given space. + */ + DLMALLOC_EXPORT void** mspace_independent_calloc(mspace msp, size_t n_elements, + size_t elem_size, void* chunks[]); + + /* + mspace_independent_comalloc behaves as independent_comalloc, but + operates within the given space. + */ + DLMALLOC_EXPORT void** mspace_independent_comalloc(mspace msp, size_t n_elements, + size_t sizes[], void* chunks[]); + + /* + mspace_footprint() returns the number of bytes obtained from the + system for this space. + */ + DLMALLOC_EXPORT size_t mspace_footprint(mspace msp); + + /* + mspace_max_footprint() returns the peak number of bytes obtained from the + system for this space. + */ + DLMALLOC_EXPORT size_t mspace_max_footprint(mspace msp); + + #if !NO_MALLINFO -/* - mspace_mallinfo behaves as mallinfo, but reports properties of - the given space. -*/ -struct mallinfo mspace_mallinfo(mspace msp); + /* + mspace_mallinfo behaves as mallinfo, but reports properties of + the given space. + */ + DLMALLOC_EXPORT struct mallinfo mspace_mallinfo(mspace msp); #endif /* NO_MALLINFO */ - -/* - malloc_usable_size(void* p) behaves the same as malloc_usable_size; -*/ - size_t mspace_usable_size(void* mem); - -/* - mspace_malloc_stats behaves as malloc_stats, but reports - properties of the given space. -*/ -void mspace_malloc_stats(mspace msp); - -/* - mspace_trim behaves as malloc_trim, but - operates within the given space. -*/ -int mspace_trim(mspace msp, size_t pad); - -/* - An alias for mallopt. -*/ -int mspace_mallopt(int, int); - + + /* + malloc_usable_size(void* p) behaves the same as malloc_usable_size; + */ + DLMALLOC_EXPORT size_t mspace_usable_size(const void* mem); + + /* + mspace_malloc_stats behaves as malloc_stats, but reports + properties of the given space. + */ + DLMALLOC_EXPORT void mspace_malloc_stats(mspace msp); + + /* + mspace_trim behaves as malloc_trim, but + operates within the given space. + */ + DLMALLOC_EXPORT int mspace_trim(mspace msp, size_t pad); + + /* + An alias for mallopt. + */ + DLMALLOC_EXPORT int mspace_mallopt(int, int); + #endif /* MSPACES */ - + #ifdef __cplusplus -}; /* end of extern "C" */ +} /* end of extern "C" */ #endif /* __cplusplus */ /* - ======================================================================== - To make a fully customizable malloc.h header file, cut everything - above this line, put into file malloc.h, edit to suit, and #include it - on the next line, as well as in programs that use this malloc. - ======================================================================== -*/ + ======================================================================== + To make a fully customizable malloc.h header file, cut everything + above this line, put into file malloc.h, edit to suit, and #include it + on the next line, as well as in programs that use this malloc. + ======================================================================== + */ /* #include "malloc.h" */ /*------------------------------ internal #includes ---------------------- */ -#ifdef WIN32 +#ifdef _MSC_VER #pragma warning( disable : 4146 ) /* no "unsigned" warnings */ -#endif /* WIN32 */ - +#endif /* _MSC_VER */ +#if !NO_MALLOC_STATS #include /* for printing in malloc_stats */ -#include /* for magic initialization */ - +#endif /* NO_MALLOC_STATS */ #ifndef LACKS_ERRNO_H #include /* for MALLOC_FAILURE_ACTION */ #endif /* LACKS_ERRNO_H */ -#if FOOTERS || DEBUG -#include /* for magic initialization */ -#endif /* FOOTERS */ -#ifndef LACKS_STDLIB_H -#include /* for abort() */ -#endif /* LACKS_STDLIB_H */ #ifdef DEBUG #if ABORT_ON_ASSERT_FAILURE #undef assert @@ -1315,6 +1465,12 @@ int mspace_mallopt(int, int); #endif #define DEBUG 0 #endif /* DEBUG */ +#if !defined(WIN32) && !defined(LACKS_TIME_H) +#include /* for magic initialization */ +#endif /* WIN32 */ +#ifndef LACKS_STDLIB_H +#include /* for abort() */ +#endif /* LACKS_STDLIB_H */ #ifndef LACKS_STRING_H #include /* for memset etc */ #endif /* LACKS_STRING_H */ @@ -1349,18 +1505,22 @@ extern void* sbrk(ptrdiff_t); /* Declarations for locking */ #if USE_LOCKS #ifndef WIN32 -#include #if defined (__SVR4) && defined (__sun) /* solaris */ #include -#endif /* solaris */ -#else +#elif !defined(LACKS_SCHED_H) +#include +#endif /* solaris or LACKS_SCHED_H */ +#if (defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0) || !USE_SPIN_LOCKS +#include +#endif /* USE_RECURSIVE_LOCKS ... */ +#elif defined(_MSC_VER) #ifndef _M_AMD64 /* These are already defined on AMD64 builds */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -LONG __cdecl _InterlockedCompareExchange(LONG volatile *Dest, LONG Exchange, LONG Comp); -LONG __cdecl _InterlockedExchange(LONG volatile *Target, LONG Value); + LONG __cdecl _InterlockedCompareExchange(LONG volatile *Dest, LONG Exchange, LONG Comp); + LONG __cdecl _InterlockedExchange(LONG volatile *Target, LONG Value); #ifdef __cplusplus } #endif /* __cplusplus */ @@ -1369,17 +1529,25 @@ LONG __cdecl _InterlockedExchange(LONG volatile *Target, LONG Value); #pragma intrinsic (_InterlockedExchange) #define interlockedcompareexchange _InterlockedCompareExchange #define interlockedexchange _InterlockedExchange +#elif defined(WIN32) && defined(__GNUC__) +#define interlockedcompareexchange(a, b, c) __sync_val_compare_and_swap(a, c, b) +#define interlockedexchange __sync_lock_test_and_set #endif /* Win32 */ +#else /* USE_LOCKS */ #endif /* USE_LOCKS */ +#ifndef LOCK_AT_FORK +#define LOCK_AT_FORK 0 +#endif + /* Declarations for bit scanning on win32 */ #if defined(_MSC_VER) && _MSC_VER>=1300 -#ifndef BitScanForward /* Try to avoid pulling in WinNT.h */ +#ifndef BitScanForward /* Try to avoid pulling in WinNT.h */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -unsigned char _BitScanForward(unsigned long *index, unsigned long mask); -unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); + unsigned char _BitScanForward(unsigned long *index, unsigned long mask); + unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); #ifdef __cplusplus } #endif /* __cplusplus */ @@ -1402,7 +1570,7 @@ unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); # define malloc_getpagesize sysconf(_SC_PAGE_SIZE) # else # if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) - extern size_t getpagesize(); +extern size_t getpagesize(); # define malloc_getpagesize getpagesize() # else # ifdef WIN32 /* use supplied emulation of getpagesize */ @@ -1438,8 +1606,6 @@ unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); #endif #endif - - /* ------------------- size_t and alignment properties -------------------- */ /* The byte and bit size of a size_t */ @@ -1465,16 +1631,16 @@ unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); /* the number of bytes to offset an address to align it */ #define align_offset(A)\ - ((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ - ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) +((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ +((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) /* -------------------------- MMAP preliminaries ------------------------- */ /* - If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and - checks to fail so compiler optimizer can delete code rather than - using so many "#if"s. -*/ + If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and + checks to fail so compiler optimizer can delete code rather than + using so many "#if"s. + */ /* MORECORE and MMAP must return MFAIL on failure */ @@ -1494,15 +1660,15 @@ unsigned char _BitScanReverse(unsigned long *index, unsigned long mask); #define MMAP_DEFAULT(s) mmap(0, (s), MMAP_PROT, MMAP_FLAGS, -1, 0) #else /* MAP_ANONYMOUS */ /* - Nearly all versions of mmap support MAP_ANONYMOUS, so the following - is unlikely to be needed, but is supplied just in case. -*/ + Nearly all versions of mmap support MAP_ANONYMOUS, so the following + is unlikely to be needed, but is supplied just in case. + */ #define MMAP_FLAGS (MAP_PRIVATE) static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ #define MMAP_DEFAULT(s) ((dev_zero_fd < 0) ? \ - (dev_zero_fd = open("/dev/zero", O_RDWR), \ - mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ - mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) +(dev_zero_fd = open("/dev/zero", O_RDWR), \ +mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ +mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) #endif /* MAP_ANONYMOUS */ #define DIRECT_MMAP_DEFAULT(s) MMAP_DEFAULT(s) @@ -1511,33 +1677,33 @@ static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ /* Win32 MMAP via VirtualAlloc */ static FORCEINLINE void* win32mmap(size_t size) { - void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); - return (ptr != 0)? ptr: MFAIL; + void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); + return (ptr != 0)? ptr: MFAIL; } /* For direct MMAP, use MEM_TOP_DOWN to minimize interference */ static FORCEINLINE void* win32direct_mmap(size_t size) { - void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, - PAGE_READWRITE); - return (ptr != 0)? ptr: MFAIL; + void* ptr = VirtualAlloc(0, size, MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN, + PAGE_READWRITE); + return (ptr != 0)? ptr: MFAIL; } /* This function supports releasing coalesed segments */ static FORCEINLINE int win32munmap(void* ptr, size_t size) { - MEMORY_BASIC_INFORMATION minfo; - char* cptr = (char*)ptr; - while (size) { - if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0) - return -1; - if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr || - minfo.State != MEM_COMMIT || minfo.RegionSize > size) - return -1; - if (VirtualFree(cptr, 0, MEM_RELEASE) == 0) - return -1; - cptr += minfo.RegionSize; - size -= minfo.RegionSize; - } - return 0; + MEMORY_BASIC_INFORMATION minfo; + char* cptr = (char*)ptr; + while (size) { + if (VirtualQuery(cptr, &minfo, sizeof(minfo)) == 0) + return -1; + if (minfo.BaseAddress != cptr || minfo.AllocationBase != cptr || + minfo.State != MEM_COMMIT || minfo.RegionSize > size) + return -1; + if (VirtualFree(cptr, 0, MEM_RELEASE) == 0) + return -1; + cptr += minfo.RegionSize; + size -= minfo.RegionSize; + } + return 0; } #define MMAP_DEFAULT(s) win32mmap(s) @@ -1552,63 +1718,62 @@ static FORCEINLINE int win32munmap(void* ptr, size_t size) { #endif /* WIN32 */ #endif /* HAVE_MREMAP */ - /** * Define CALL_MORECORE */ #if HAVE_MORECORE - #ifdef MORECORE - #define CALL_MORECORE(S) MORECORE(S) - #else /* MORECORE */ - #define CALL_MORECORE(S) MORECORE_DEFAULT(S) - #endif /* MORECORE */ +#ifdef MORECORE +#define CALL_MORECORE(S) MORECORE(S) +#else /* MORECORE */ +#define CALL_MORECORE(S) MORECORE_DEFAULT(S) +#endif /* MORECORE */ #else /* HAVE_MORECORE */ - #define CALL_MORECORE(S) MFAIL +#define CALL_MORECORE(S) MFAIL #endif /* HAVE_MORECORE */ /** * Define CALL_MMAP/CALL_MUNMAP/CALL_DIRECT_MMAP */ #if HAVE_MMAP - #define USE_MMAP_BIT (SIZE_T_ONE) - - #ifdef MMAP - #define CALL_MMAP(s) MMAP(s) - #else /* MMAP */ - #define CALL_MMAP(s) MMAP_DEFAULT(s) - #endif /* MMAP */ - #ifdef MUNMAP - #define CALL_MUNMAP(a, s) MUNMAP((a), (s)) - #else /* MUNMAP */ - #define CALL_MUNMAP(a, s) MUNMAP_DEFAULT((a), (s)) - #endif /* MUNMAP */ - #ifdef DIRECT_MMAP - #define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) - #else /* DIRECT_MMAP */ - #define CALL_DIRECT_MMAP(s) DIRECT_MMAP_DEFAULT(s) - #endif /* DIRECT_MMAP */ +#define USE_MMAP_BIT (SIZE_T_ONE) + +#ifdef MMAP +#define CALL_MMAP(s) MMAP(s) +#else /* MMAP */ +#define CALL_MMAP(s) MMAP_DEFAULT(s) +#endif /* MMAP */ +#ifdef MUNMAP +#define CALL_MUNMAP(a, s) MUNMAP((a), (s)) +#else /* MUNMAP */ +#define CALL_MUNMAP(a, s) MUNMAP_DEFAULT((a), (s)) +#endif /* MUNMAP */ +#ifdef DIRECT_MMAP +#define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) +#else /* DIRECT_MMAP */ +#define CALL_DIRECT_MMAP(s) DIRECT_MMAP_DEFAULT(s) +#endif /* DIRECT_MMAP */ #else /* HAVE_MMAP */ - #define USE_MMAP_BIT (SIZE_T_ZERO) - - #define MMAP(s) MFAIL - #define MUNMAP(a, s) (-1) - #define DIRECT_MMAP(s) MFAIL - #define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) - #define CALL_MMAP(s) MMAP(s) - #define CALL_MUNMAP(a, s) MUNMAP((a), (s)) +#define USE_MMAP_BIT (SIZE_T_ZERO) + +#define MMAP(s) MFAIL +#define MUNMAP(a, s) (-1) +#define DIRECT_MMAP(s) MFAIL +#define CALL_DIRECT_MMAP(s) DIRECT_MMAP(s) +#define CALL_MMAP(s) MMAP(s) +#define CALL_MUNMAP(a, s) MUNMAP((a), (s)) #endif /* HAVE_MMAP */ /** * Define CALL_MREMAP */ #if HAVE_MMAP && HAVE_MREMAP - #ifdef MREMAP - #define CALL_MREMAP(addr, osz, nsz, mv) MREMAP((addr), (osz), (nsz), (mv)) - #else /* MREMAP */ - #define CALL_MREMAP(addr, osz, nsz, mv) MREMAP_DEFAULT((addr), (osz), (nsz), (mv)) - #endif /* MREMAP */ +#ifdef MREMAP +#define CALL_MREMAP(addr, osz, nsz, mv) MREMAP((addr), (osz), (nsz), (mv)) +#else /* MREMAP */ +#define CALL_MREMAP(addr, osz, nsz, mv) MREMAP_DEFAULT((addr), (osz), (nsz), (mv)) +#endif /* MREMAP */ #else /* HAVE_MMAP && HAVE_MREMAP */ - #define CALL_MREMAP(addr, osz, nsz, mv) MFAIL +#define CALL_MREMAP(addr, osz, nsz, mv) MFAIL #endif /* HAVE_MMAP && HAVE_MREMAP */ /* mstate bit set if continguous morecore disabled or failed */ @@ -1621,449 +1786,418 @@ static FORCEINLINE int win32munmap(void* ptr, size_t size) { /* --------------------------- Lock preliminaries ------------------------ */ /* - When locks are defined, there is one global lock, plus - one per-mspace lock. - - The global lock_ensures that mparams.magic and other unique - mparams values are initialized only once. It also protects - sequences of calls to MORECORE. In many cases sys_alloc requires - two calls, that should not be interleaved with calls by other - threads. This does not protect against direct calls to MORECORE - by other threads not using this lock, so there is still code to - cope the best we can on interference. - - Per-mspace locks surround calls to malloc, free, etc. To enable use - in layered extensions, per-mspace locks are reentrant. - - Because lock-protected regions generally have bounded times, it is - OK to use the supplied simple spinlocks in the custom versions for - x86. Spinlocks are likely to improve performance for lightly - contended applications, but worsen performance under heavy - contention. - - If USE_LOCKS is > 1, the definitions of lock routines here are - bypassed, in which case you will need to define the type MLOCK_T, - and at least INITIAL_LOCK, ACQUIRE_LOCK, RELEASE_LOCK and possibly - TRY_LOCK (which is not used in this malloc, but commonly needed in - extensions.) You must also declare a - static MLOCK_T malloc_global_mutex = { initialization values };. - -*/ - -#if USE_LOCKS == 1 - -#if USE_SPIN_LOCKS && SPIN_LOCKS_AVAILABLE -#ifndef WIN32 - -/* Custom pthread-style spin locks on x86 and x64 for gcc */ -struct pthread_mlock_t { - volatile unsigned int l; - unsigned int c; - pthread_t threadid; -}; -#define MLOCK_T struct pthread_mlock_t -#define CURRENT_THREAD pthread_self() -#define INITIAL_LOCK(sl) ((sl)->threadid = 0, (sl)->l = (sl)->c = 0, 0) -#define ACQUIRE_LOCK(sl) pthread_acquire_lock(sl) -#define RELEASE_LOCK(sl) pthread_release_lock(sl) -#define TRY_LOCK(sl) pthread_try_lock(sl) -#define SPINS_PER_YIELD 63 + When locks are defined, there is one global lock, plus + one per-mspace lock. + + The global lock_ensures that mparams.magic and other unique + mparams values are initialized only once. It also protects + sequences of calls to MORECORE. In many cases sys_alloc requires + two calls, that should not be interleaved with calls by other + threads. This does not protect against direct calls to MORECORE + by other threads not using this lock, so there is still code to + cope the best we can on interference. + + Per-mspace locks surround calls to malloc, free, etc. + By default, locks are simple non-reentrant mutexes. + + Because lock-protected regions generally have bounded times, it is + OK to use the supplied simple spinlocks. Spinlocks are likely to + improve performance for lightly contended applications, but worsen + performance under heavy contention. + + If USE_LOCKS is > 1, the definitions of lock routines here are + bypassed, in which case you will need to define the type MLOCK_T, + and at least INITIAL_LOCK, DESTROY_LOCK, ACQUIRE_LOCK, RELEASE_LOCK + and TRY_LOCK. You must also declare a + static MLOCK_T malloc_global_mutex = { initialization values };. + + */ -static MLOCK_T malloc_global_mutex = { 0, 0, 0}; +#if !USE_LOCKS +#define USE_LOCK_BIT (0U) +#define INITIAL_LOCK(l) (0) +#define DESTROY_LOCK(l) (0) +#define ACQUIRE_MALLOC_GLOBAL_LOCK() +#define RELEASE_MALLOC_GLOBAL_LOCK() -static FORCEINLINE int pthread_acquire_lock (MLOCK_T *sl) { - int spins = 0; - volatile unsigned int* lp = &sl->l; - for (;;) { - if (*lp != 0) { - if (sl->threadid == CURRENT_THREAD) { - ++sl->c; - return 0; - } - } - else { - /* place args to cmpxchgl in locals to evade oddities in some gccs */ - int cmp = 0; - int val = 1; - int ret; - __asm__ __volatile__ ("lock; cmpxchgl %1, %2" - : "=a" (ret) - : "r" (val), "m" (*(lp)), "0"(cmp) - : "memory", "cc"); - if (!ret) { - assert(!sl->threadid); - sl->threadid = CURRENT_THREAD; - sl->c = 1; - return 0; - } - } - if ((++spins & SPINS_PER_YIELD) == 0) { -#if defined (__SVR4) && defined (__sun) /* solaris */ - thr_yield(); #else -#if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__) - sched_yield(); -#else /* no-op yield on unknown systems */ - ; -#endif /* __linux__ || __FreeBSD__ || __APPLE__ */ -#endif /* solaris */ - } - } +#if USE_LOCKS > 1 +/* ----------------------- User-defined locks ------------------------ */ +/* Define your own lock implementation here */ +/* #define INITIAL_LOCK(lk) ... */ +/* #define DESTROY_LOCK(lk) ... */ +/* #define ACQUIRE_LOCK(lk) ... */ +/* #define RELEASE_LOCK(lk) ... */ +/* #define TRY_LOCK(lk) ... */ +/* static MLOCK_T malloc_global_mutex = ... */ + +#elif USE_SPIN_LOCKS + +/* First, define CAS_LOCK and CLEAR_LOCK on ints */ +/* Note CAS_LOCK defined to return 0 on success */ + +#if defined(__GNUC__)&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) +#define CAS_LOCK(sl) __sync_lock_test_and_set(sl, 1) +#define CLEAR_LOCK(sl) __sync_lock_release(sl) + +#elif (defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))) +/* Custom spin locks for older gcc on x86 */ +static FORCEINLINE int x86_cas_lock(int *sl) { + int ret; + int val = 1; + int cmp = 0; + __asm__ __volatile__ ("lock; cmpxchgl %1, %2" + : "=a" (ret) + : "r" (val), "m" (*(sl)), "0"(cmp) + : "memory", "cc"); + return ret; } -static FORCEINLINE void pthread_release_lock (MLOCK_T *sl) { - volatile unsigned int* lp = &sl->l; - assert(*lp != 0); - assert(sl->threadid == CURRENT_THREAD); - if (--sl->c == 0) { - sl->threadid = 0; +static FORCEINLINE void x86_clear_lock(int* sl) { + assert(*sl != 0); int prev = 0; int ret; __asm__ __volatile__ ("lock; xchgl %0, %1" : "=r" (ret) - : "m" (*(lp)), "0"(prev) + : "m" (*(sl)), "0"(prev) : "memory"); - } } -static FORCEINLINE int pthread_try_lock (MLOCK_T *sl) { - volatile unsigned int* lp = &sl->l; - if (*lp != 0) { - if (sl->threadid == CURRENT_THREAD) { - ++sl->c; - return 1; - } - } - else { - int cmp = 0; - int val = 1; - int ret; - __asm__ __volatile__ ("lock; cmpxchgl %1, %2" - : "=a" (ret) - : "r" (val), "m" (*(lp)), "0"(cmp) - : "memory", "cc"); - if (!ret) { - assert(!sl->threadid); - sl->threadid = CURRENT_THREAD; - sl->c = 1; - return 1; +#define CAS_LOCK(sl) x86_cas_lock(sl) +#define CLEAR_LOCK(sl) x86_clear_lock(sl) + +#else /* Win32 MSC */ +#define CAS_LOCK(sl) interlockedexchange(sl, (LONG)1) +#define CLEAR_LOCK(sl) interlockedexchange (sl, (LONG)0) + +#endif /* ... gcc spins locks ... */ + +/* How to yield for a spin lock */ +#define SPINS_PER_YIELD 63 +#if defined(_MSC_VER) +#define SLEEP_EX_DURATION 50 /* delay for yield/sleep */ +#define SPIN_LOCK_YIELD SleepEx(SLEEP_EX_DURATION, FALSE) +#elif defined (__SVR4) && defined (__sun) /* solaris */ +#define SPIN_LOCK_YIELD thr_yield(); +#elif !defined(LACKS_SCHED_H) +#define SPIN_LOCK_YIELD sched_yield(); +#else +#define SPIN_LOCK_YIELD +#endif /* ... yield ... */ + +#if !defined(USE_RECURSIVE_LOCKS) || USE_RECURSIVE_LOCKS == 0 +/* Plain spin locks use single word (embedded in malloc_states) */ +static int spin_acquire_lock(int *sl) { + int spins = 0; + while (*(volatile int *)sl != 0 || CAS_LOCK(sl)) { + if ((++spins & SPINS_PER_YIELD) == 0) { + SPIN_LOCK_YIELD; + } } - } - return 0; + return 0; } +#define MLOCK_T int +#define TRY_LOCK(sl) !CAS_LOCK(sl) +#define RELEASE_LOCK(sl) CLEAR_LOCK(sl) +#define ACQUIRE_LOCK(sl) (CAS_LOCK(sl)? spin_acquire_lock(sl) : 0) +#define INITIAL_LOCK(sl) (*sl = 0) +#define DESTROY_LOCK(sl) (0) +static MLOCK_T malloc_global_mutex = 0; -#else /* WIN32 */ -/* Custom win32-style spin locks on x86 and x64 for MSC */ -struct win32_mlock_t { - volatile long l; - unsigned int c; - long threadid; -}; - -#define MLOCK_T struct win32_mlock_t +#else /* USE_RECURSIVE_LOCKS */ +/* types for lock owners */ +#ifdef WIN32 +#define THREAD_ID_T DWORD #define CURRENT_THREAD GetCurrentThreadId() -#define INITIAL_LOCK(sl) ((sl)->threadid = 0, (sl)->l = (sl)->c = 0, 0) -#define ACQUIRE_LOCK(sl) win32_acquire_lock(sl) -#define RELEASE_LOCK(sl) win32_release_lock(sl) -#define TRY_LOCK(sl) win32_try_lock(sl) -#define SPINS_PER_YIELD 63 +#define EQ_OWNER(X,Y) ((X) == (Y)) +#else +/* + Note: the following assume that pthread_t is a type that can be + initialized to (casted) zero. If this is not the case, you will need to + somehow redefine these or not use spin locks. + */ +#define THREAD_ID_T pthread_t +#define CURRENT_THREAD pthread_self() +#define EQ_OWNER(X,Y) pthread_equal(X, Y) +#endif + +struct malloc_recursive_lock { + int sl; + unsigned int c; + THREAD_ID_T threadid; +}; -static MLOCK_T malloc_global_mutex = { 0, 0, 0}; +#define MLOCK_T struct malloc_recursive_lock +static MLOCK_T malloc_global_mutex = { 0, 0, (THREAD_ID_T)0}; -static FORCEINLINE int win32_acquire_lock (MLOCK_T *sl) { - int spins = 0; - for (;;) { - if (sl->l != 0) { - if (sl->threadid == CURRENT_THREAD) { - ++sl->c; - return 0; - } - } - else { - if (!interlockedexchange(&sl->l, 1)) { - assert(!sl->threadid); - sl->threadid = CURRENT_THREAD; - sl->c = 1; - return 0; - } +static FORCEINLINE void recursive_release_lock(MLOCK_T *lk) { + assert(lk->sl != 0); + if (--lk->c == 0) { + CLEAR_LOCK(&lk->sl); } - if ((++spins & SPINS_PER_YIELD) == 0) - SleepEx(0, FALSE); - } } -static FORCEINLINE void win32_release_lock (MLOCK_T *sl) { - assert(sl->threadid == CURRENT_THREAD); - assert(sl->l != 0); - if (--sl->c == 0) { - sl->threadid = 0; - interlockedexchange (&sl->l, 0); - } +static FORCEINLINE int recursive_acquire_lock(MLOCK_T *lk) { + THREAD_ID_T mythreadid = CURRENT_THREAD; + int spins = 0; + for (;;) { + if (*((volatile int *)(&lk->sl)) == 0) { + if (!CAS_LOCK(&lk->sl)) { + lk->threadid = mythreadid; + lk->c = 1; + return 0; + } + } + else if (EQ_OWNER(lk->threadid, mythreadid)) { + ++lk->c; + return 0; + } + if ((++spins & SPINS_PER_YIELD) == 0) { + SPIN_LOCK_YIELD; + } + } } -static FORCEINLINE int win32_try_lock (MLOCK_T *sl) { - if (sl->l != 0) { - if (sl->threadid == CURRENT_THREAD) { - ++sl->c; - return 1; +static FORCEINLINE int recursive_try_lock(MLOCK_T *lk) { + THREAD_ID_T mythreadid = CURRENT_THREAD; + if (*((volatile int *)(&lk->sl)) == 0) { + if (!CAS_LOCK(&lk->sl)) { + lk->threadid = mythreadid; + lk->c = 1; + return 1; + } } - } - else { - if (!interlockedexchange(&sl->l, 1)){ - assert(!sl->threadid); - sl->threadid = CURRENT_THREAD; - sl->c = 1; - return 1; + else if (EQ_OWNER(lk->threadid, mythreadid)) { + ++lk->c; + return 1; } - } - return 0; + return 0; } -#endif /* WIN32 */ -#else /* USE_SPIN_LOCKS */ - -#ifndef WIN32 -/* pthreads-based locks */ - -#define MLOCK_T pthread_mutex_t -#define CURRENT_THREAD pthread_self() -#define INITIAL_LOCK(sl) pthread_init_lock(sl) -#define ACQUIRE_LOCK(sl) pthread_mutex_lock(sl) -#define RELEASE_LOCK(sl) pthread_mutex_unlock(sl) -#define TRY_LOCK(sl) (!pthread_mutex_trylock(sl)) - -static MLOCK_T malloc_global_mutex = PTHREAD_MUTEX_INITIALIZER; - -/* Cope with old-style linux recursive lock initialization by adding */ -/* skipped internal declaration from pthread.h */ -#ifdef linux -#ifndef PTHREAD_MUTEX_RECURSIVE -extern int pthread_mutexattr_setkind_np __P ((pthread_mutexattr_t *__attr, - int __kind)); -#define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP -#define pthread_mutexattr_settype(x,y) pthread_mutexattr_setkind_np(x,y) -#endif -#endif - -static int pthread_init_lock (MLOCK_T *sl) { - pthread_mutexattr_t attr; - if (pthread_mutexattr_init(&attr)) return 1; - if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)) return 1; - if (pthread_mutex_init(sl, &attr)) return 1; - if (pthread_mutexattr_destroy(&attr)) return 1; - return 0; -} +#define RELEASE_LOCK(lk) recursive_release_lock(lk) +#define TRY_LOCK(lk) recursive_try_lock(lk) +#define ACQUIRE_LOCK(lk) recursive_acquire_lock(lk) +#define INITIAL_LOCK(lk) ((lk)->threadid = (THREAD_ID_T)0, (lk)->sl = 0, (lk)->c = 0) +#define DESTROY_LOCK(lk) (0) +#endif /* USE_RECURSIVE_LOCKS */ -#else /* WIN32 */ -/* Win32 critical sections */ +#elif defined(WIN32) /* Win32 critical sections */ #define MLOCK_T CRITICAL_SECTION -#define CURRENT_THREAD GetCurrentThreadId() -#define INITIAL_LOCK(s) (!InitializeCriticalSectionAndSpinCount((s), 0x80000000|4000)) -#define ACQUIRE_LOCK(s) (EnterCriticalSection(sl), 0) -#define RELEASE_LOCK(s) LeaveCriticalSection(sl) -#define TRY_LOCK(s) TryEnterCriticalSection(sl) +#define ACQUIRE_LOCK(lk) (EnterCriticalSection(lk), 0) +#define RELEASE_LOCK(lk) LeaveCriticalSection(lk) +#define TRY_LOCK(lk) TryEnterCriticalSection(lk) +#define INITIAL_LOCK(lk) (!InitializeCriticalSectionAndSpinCount((lk), 0x80000000|4000)) +#define DESTROY_LOCK(lk) (DeleteCriticalSection(lk), 0) #define NEED_GLOBAL_LOCK_INIT static MLOCK_T malloc_global_mutex; -static volatile long malloc_global_mutex_status; +static volatile LONG malloc_global_mutex_status; /* Use spin loop to initialize global lock */ static void init_malloc_global_mutex() { - for (;;) { - long stat = malloc_global_mutex_status; - if (stat > 0) - return; - /* transition to < 0 while initializing, then to > 0) */ - if (stat == 0 && - interlockedcompareexchange(&malloc_global_mutex_status, -1, 0) == 0) { - InitializeCriticalSection(&malloc_global_mutex); - interlockedexchange(&malloc_global_mutex_status,1); - return; + for (;;) { + long stat = malloc_global_mutex_status; + if (stat > 0) + return; + /* transition to < 0 while initializing, then to > 0) */ + if (stat == 0 && + interlockedcompareexchange(&malloc_global_mutex_status, (LONG)-1, (LONG)0) == 0) { + InitializeCriticalSection(&malloc_global_mutex); + interlockedexchange(&malloc_global_mutex_status, (LONG)1); + return; + } + SleepEx(0, FALSE); } - SleepEx(0, FALSE); - } } -#endif /* WIN32 */ -#endif /* USE_SPIN_LOCKS */ -#endif /* USE_LOCKS == 1 */ +#else /* pthreads-based locks */ +#define MLOCK_T pthread_mutex_t +#define ACQUIRE_LOCK(lk) pthread_mutex_lock(lk) +#define RELEASE_LOCK(lk) pthread_mutex_unlock(lk) +#define TRY_LOCK(lk) (!pthread_mutex_trylock(lk)) +#define INITIAL_LOCK(lk) pthread_init_lock(lk) +#define DESTROY_LOCK(lk) pthread_mutex_destroy(lk) -/* ----------------------- User-defined locks ------------------------ */ +#if defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0 && defined(linux) && !defined(PTHREAD_MUTEX_RECURSIVE) +/* Cope with old-style linux recursive lock initialization by adding */ +/* skipped internal declaration from pthread.h */ +extern int pthread_mutexattr_setkind_np __P ((pthread_mutexattr_t *__attr, + int __kind)); +#define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP +#define pthread_mutexattr_settype(x,y) pthread_mutexattr_setkind_np(x,y) +#endif /* USE_RECURSIVE_LOCKS ... */ -#if USE_LOCKS > 1 -/* Define your own lock implementation here */ -/* #define INITIAL_LOCK(sl) ... */ -/* #define ACQUIRE_LOCK(sl) ... */ -/* #define RELEASE_LOCK(sl) ... */ -/* #define TRY_LOCK(sl) ... */ -/* static MLOCK_T malloc_global_mutex = ... */ -#endif /* USE_LOCKS > 1 */ +static MLOCK_T malloc_global_mutex = PTHREAD_MUTEX_INITIALIZER; + +static int pthread_init_lock (MLOCK_T *lk) { + pthread_mutexattr_t attr; + if (pthread_mutexattr_init(&attr)) return 1; +#if defined(USE_RECURSIVE_LOCKS) && USE_RECURSIVE_LOCKS != 0 + if (pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)) return 1; +#endif + if (pthread_mutex_init(lk, &attr)) return 1; + if (pthread_mutexattr_destroy(&attr)) return 1; + return 0; +} -/* ----------------------- Lock-based state ------------------------ */ +#endif /* ... lock types ... */ -#if USE_LOCKS +/* Common code for all lock types */ #define USE_LOCK_BIT (2U) -#else /* USE_LOCKS */ -#define USE_LOCK_BIT (0U) -#define INITIAL_LOCK(l) -#endif /* USE_LOCKS */ -#if USE_LOCKS #ifndef ACQUIRE_MALLOC_GLOBAL_LOCK #define ACQUIRE_MALLOC_GLOBAL_LOCK() ACQUIRE_LOCK(&malloc_global_mutex); #endif + #ifndef RELEASE_MALLOC_GLOBAL_LOCK #define RELEASE_MALLOC_GLOBAL_LOCK() RELEASE_LOCK(&malloc_global_mutex); #endif -#else /* USE_LOCKS */ -#define ACQUIRE_MALLOC_GLOBAL_LOCK() -#define RELEASE_MALLOC_GLOBAL_LOCK() -#endif /* USE_LOCKS */ +#endif /* USE_LOCKS */ /* ----------------------- Chunk representations ------------------------ */ /* - (The following includes lightly edited explanations by Colin Plumb.) - - The malloc_chunk declaration below is misleading (but accurate and - necessary). It declares a "view" into memory allowing access to - necessary fields at known offsets from a given base. - - Chunks of memory are maintained using a `boundary tag' method as - originally described by Knuth. (See the paper by Paul Wilson - ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such - techniques.) Sizes of free chunks are stored both in the front of - each chunk and at the end. This makes consolidating fragmented - chunks into bigger chunks fast. The head fields also hold bits - representing whether chunks are free or in use. - - Here are some pictures to make it clearer. They are "exploded" to - show that the state of a chunk can be thought of as extending from - the high 31 bits of the head field of its header through the - prev_foot and PINUSE_BIT bit of the following chunk header. - - A chunk that's in use looks like: - - chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of previous chunk (if P = 0) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| - | Size of this chunk 1| +-+ - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | | - +- -+ - | | - +- -+ - | : - +- size - sizeof(size_t) available payload bytes -+ - : | + (The following includes lightly edited explanations by Colin Plumb.) + + The malloc_chunk declaration below is misleading (but accurate and + necessary). It declares a "view" into memory allowing access to + necessary fields at known offsets from a given base. + + Chunks of memory are maintained using a `boundary tag' method as + originally described by Knuth. (See the paper by Paul Wilson + ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps for a survey of such + techniques.) Sizes of free chunks are stored both in the front of + each chunk and at the end. This makes consolidating fragmented + chunks into bigger chunks fast. The head fields also hold bits + representing whether chunks are free or in use. + + Here are some pictures to make it clearer. They are "exploded" to + show that the state of a chunk can be thought of as extending from + the high 31 bits of the head field of its header through the + prev_foot and PINUSE_BIT bit of the following chunk header. + + A chunk that's in use looks like: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk (if P = 0) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| + | Size of this chunk 1| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- -+ + | | + +- -+ + | : + +- size - sizeof(size_t) available payload bytes -+ + : | chunk-> +- -+ - | | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1| - | Size of next chunk (may or may not be in use) | +-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1| + | Size of next chunk (may or may not be in use) | +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - And if it's free, it looks like this: - - chunk-> +- -+ - | User payload (must be in use, or we would have merged!) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| - | Size of this chunk 0| +-+ - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Next pointer | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Prev pointer | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | : - +- size - sizeof(struct chunk) unused bytes -+ - : | + + And if it's free, it looks like this: + + chunk-> +- -+ + | User payload (must be in use, or we would have merged!) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |P| + | Size of this chunk 0| +-+ + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Next pointer | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Prev pointer | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | : + +- size - sizeof(struct chunk) unused bytes -+ + : | chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of this chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| - | Size of next chunk (must be in use, or we would have merged)| +-+ + | Size of this chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| + | Size of next chunk (must be in use, or we would have merged)| +-+ mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | : - +- User payload -+ - : | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - |0| - +-+ - Note that since we always merge adjacent free chunks, the chunks - adjacent to a free chunk must be in use. - - Given a pointer to a chunk (which can be derived trivially from the - payload pointer) we can, in O(1) time, find out whether the adjacent - chunks are free, and if so, unlink them from the lists that they - are on and merge them with the current chunk. - - Chunks always begin on even word boundaries, so the mem portion - (which is returned to the user) is also on an even word boundary, and - thus at least double-word aligned. - - The P (PINUSE_BIT) bit, stored in the unused low-order bit of the - chunk size (which is always a multiple of two words), is an in-use - bit for the *previous* chunk. If that bit is *clear*, then the - word before the current chunk size contains the previous chunk - size, and can be used to find the front of the previous chunk. - The very first chunk allocated always has this bit set, preventing - access to non-existent (or non-owned) memory. If pinuse is set for - any given chunk, then you CANNOT determine the size of the - previous chunk, and might even get a memory addressing fault when - trying to do so. - - The C (CINUSE_BIT) bit, stored in the unused second-lowest bit of - the chunk size redundantly records whether the current chunk is - inuse (unless the chunk is mmapped). This redundancy enables usage - checks within free and realloc, and reduces indirection when freeing - and consolidating chunks. - - Each freshly allocated chunk must have both cinuse and pinuse set. - That is, each allocated chunk borders either a previously allocated - and still in-use chunk, or the base of its memory arena. This is - ensured by making all allocations from the the `lowest' part of any - found chunk. Further, no free chunk physically borders another one, - so each free chunk is known to be preceded and followed by either - inuse chunks or the ends of memory. - - Note that the `foot' of the current chunk is actually represented - as the prev_foot of the NEXT chunk. This makes it easier to - deal with alignments etc but can be very confusing when trying - to extend or adapt this code. - - The exceptions to all this are - - 1. The special chunk `top' is the top-most available chunk (i.e., - the one bordering the end of available memory). It is treated - specially. Top is never included in any bin, is used only if - no other chunk is available, and is released back to the - system if it is very large (see M_TRIM_THRESHOLD). In effect, - the top chunk is treated as larger (and thus less well - fitting) than any other available chunk. The top chunk - doesn't update its trailing size field since there is no next - contiguous chunk that would have to index off it. However, - space is still allocated for it (TOP_FOOT_SIZE) to enable - separation or merging when space is extended. - - 3. Chunks allocated via mmap, have both cinuse and pinuse bits - cleared in their head fields. Because they are allocated - one-by-one, each must carry its own prev_foot field, which is - also used to hold the offset this chunk has within its mmapped - region, which is needed to preserve alignment. Each mmapped - chunk is trailed by the first two fields of a fake next-chunk - for sake of usage checks. - -*/ + | : + +- User payload -+ + : | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |0| + +-+ + Note that since we always merge adjacent free chunks, the chunks + adjacent to a free chunk must be in use. + + Given a pointer to a chunk (which can be derived trivially from the + payload pointer) we can, in O(1) time, find out whether the adjacent + chunks are free, and if so, unlink them from the lists that they + are on and merge them with the current chunk. + + Chunks always begin on even word boundaries, so the mem portion + (which is returned to the user) is also on an even word boundary, and + thus at least double-word aligned. + + The P (PINUSE_BIT) bit, stored in the unused low-order bit of the + chunk size (which is always a multiple of two words), is an in-use + bit for the *previous* chunk. If that bit is *clear*, then the + word before the current chunk size contains the previous chunk + size, and can be used to find the front of the previous chunk. + The very first chunk allocated always has this bit set, preventing + access to non-existent (or non-owned) memory. If pinuse is set for + any given chunk, then you CANNOT determine the size of the + previous chunk, and might even get a memory addressing fault when + trying to do so. + + The C (CINUSE_BIT) bit, stored in the unused second-lowest bit of + the chunk size redundantly records whether the current chunk is + inuse (unless the chunk is mmapped). This redundancy enables usage + checks within free and realloc, and reduces indirection when freeing + and consolidating chunks. + + Each freshly allocated chunk must have both cinuse and pinuse set. + That is, each allocated chunk borders either a previously allocated + and still in-use chunk, or the base of its memory arena. This is + ensured by making all allocations from the `lowest' part of any + found chunk. Further, no free chunk physically borders another one, + so each free chunk is known to be preceded and followed by either + inuse chunks or the ends of memory. + + Note that the `foot' of the current chunk is actually represented + as the prev_foot of the NEXT chunk. This makes it easier to + deal with alignments etc but can be very confusing when trying + to extend or adapt this code. + + The exceptions to all this are + + 1. The special chunk `top' is the top-most available chunk (i.e., + the one bordering the end of available memory). It is treated + specially. Top is never included in any bin, is used only if + no other chunk is available, and is released back to the + system if it is very large (see M_TRIM_THRESHOLD). In effect, + the top chunk is treated as larger (and thus less well + fitting) than any other available chunk. The top chunk + doesn't update its trailing size field since there is no next + contiguous chunk that would have to index off it. However, + space is still allocated for it (TOP_FOOT_SIZE) to enable + separation or merging when space is extended. + + 3. Chunks allocated via mmap, have both cinuse and pinuse bits + cleared in their head fields. Because they are allocated + one-by-one, each must carry its own prev_foot field, which is + also used to hold the offset this chunk has within its mmapped + region, which is needed to preserve alignment. Each mmapped + chunk is trailed by the first two fields of a fake next-chunk + for sake of usage checks. + + */ struct malloc_chunk { - size_t prev_foot; /* Size of previous chunk (if free). */ - size_t head; /* Size and inuse bits. */ - struct malloc_chunk* fd; /* double links -- used only if free. */ - struct malloc_chunk* bk; + size_t prev_foot; /* Size of previous chunk (if free). */ + size_t head; /* Size and inuse bits. */ + struct malloc_chunk* fd; /* double links -- used only if free. */ + struct malloc_chunk* bk; }; typedef struct malloc_chunk mchunk; @@ -2089,8 +2223,8 @@ typedef unsigned int flag_t; /* The type of various bit flag sets */ #define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) /* The smallest size we can malloc is an aligned minimal chunk */ -#define MIN_CHUNK_SIZE\ - ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) +#define MIN_CHUNK_SIZE \ +((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) /* conversion from malloc headers to user pointers, and back */ #define chunk2mem(p) ((void*)((char*)(p) + TWO_SIZE_T_SIZES)) @@ -2104,22 +2238,22 @@ typedef unsigned int flag_t; /* The type of various bit flag sets */ /* pad request bytes into a usable size */ #define pad_request(req) \ - (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) +(((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) /* pad request, checking for minimum (but not maximum) */ #define request2size(req) \ - (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) +(((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) /* ------------------ Operations on head and foot fields ----------------- */ /* - The head field of a chunk is or'ed with PINUSE_BIT when previous - adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in - use, unless mmapped, in which case both bits are cleared. - - FLAG4_BIT is not used by this malloc, but might be useful in extensions. -*/ + The head field of a chunk is or'ed with PINUSE_BIT when previous + adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in + use, unless mmapped, in which case both bits are cleared. + + FLAG4_BIT is not used by this malloc, but might be useful in extensions. + */ #define PINUSE_BIT (SIZE_T_ONE) #define CINUSE_BIT (SIZE_T_TWO) @@ -2133,12 +2267,15 @@ typedef unsigned int flag_t; /* The type of various bit flag sets */ /* extraction of fields from head words */ #define cinuse(p) ((p)->head & CINUSE_BIT) #define pinuse(p) ((p)->head & PINUSE_BIT) +#define flag4inuse(p) ((p)->head & FLAG4_BIT) #define is_inuse(p) (((p)->head & INUSE_BITS) != PINUSE_BIT) #define is_mmapped(p) (((p)->head & INUSE_BITS) == 0) #define chunksize(p) ((p)->head & ~(FLAG_BITS)) #define clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) +#define set_flag4(p) ((p)->head |= FLAG4_BIT) +#define clear_flag4(p) ((p)->head &= ~FLAG4_BIT) /* Treat space at ptr +/- offset as a chunk */ #define chunk_plus_offset(p, s) ((mchunkptr)(((char*)(p)) + (s))) @@ -2157,15 +2294,15 @@ typedef unsigned int flag_t; /* The type of various bit flag sets */ /* Set size, pinuse bit, and foot */ #define set_size_and_pinuse_of_free_chunk(p, s)\ - ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) +((p)->head = (s|PINUSE_BIT), set_foot(p, s)) /* Set size, pinuse bit, foot, and clear next pinuse */ #define set_free_with_pinuse(p, s, n)\ - (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) +(clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) /* Get the internal overhead associated with chunk p */ #define overhead_for(p)\ - (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) +(is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) /* Return true if malloced space is not necessarily cleared */ #if MMAP_CLEARS @@ -2177,104 +2314,104 @@ typedef unsigned int flag_t; /* The type of various bit flag sets */ /* ---------------------- Overlaid data structures ----------------------- */ /* - When chunks are not in use, they are treated as nodes of either - lists or trees. - - "Small" chunks are stored in circular doubly-linked lists, and look - like this: - - chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of previous chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `head:' | Size of chunk, in bytes |P| - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Forward pointer to next chunk in list | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Back pointer to previous chunk in list | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Unused space (may be 0 bytes long) . - . . - . | -nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `foot:' | Size of chunk, in bytes | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Larger chunks are kept in a form of bitwise digital trees (aka - tries) keyed on chunksizes. Because malloc_tree_chunks are only for - free chunks greater than 256 bytes, their size doesn't impose any - constraints on user chunk sizes. Each node looks like: - - chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Size of previous chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `head:' | Size of chunk, in bytes |P| - mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Forward pointer to next chunk of same size | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Back pointer to previous chunk of same size | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Pointer to left child (child[0]) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Pointer to right child (child[1]) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Pointer to parent | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | bin index of this chunk | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Unused space . - . | -nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - `foot:' | Size of chunk, in bytes | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - Each tree holding treenodes is a tree of unique chunk sizes. Chunks - of the same size are arranged in a circularly-linked list, with only - the oldest chunk (the next to be used, in our FIFO ordering) - actually in the tree. (Tree members are distinguished by a non-null - parent pointer.) If a chunk with the same size an an existing node - is inserted, it is linked off the existing node using pointers that - work in the same way as fd/bk pointers of small chunks. - - Each tree contains a power of 2 sized range of chunk sizes (the - smallest is 0x100 <= x < 0x180), which is is divided in half at each - tree level, with the chunks in the smaller half of the range (0x100 - <= x < 0x140 for the top nose) in the left subtree and the larger - half (0x140 <= x < 0x180) in the right subtree. This is, of course, - done by inspecting individual bits. - - Using these rules, each node's left subtree contains all smaller - sizes than its right subtree. However, the node at the root of each - subtree has no particular ordering relationship to either. (The - dividing line between the subtree sizes is based on trie relation.) - If we remove the last chunk of a given size from the interior of the - tree, we need to replace it with a leaf node. The tree ordering - rules permit a node to be replaced by any leaf below it. - - The smallest chunk in a tree (a common operation in a best-fit - allocator) can be found by walking a path to the leftmost leaf in - the tree. Unlike a usual binary tree, where we follow left child - pointers until we reach a null, here we follow the right child - pointer any time the left one is null, until we reach a leaf with - both child pointers null. The smallest chunk in the tree will be - somewhere along that path. - - The worst case number of steps to add, find, or remove a node is - bounded by the number of bits differentiating chunks within - bins. Under current bin calculations, this ranges from 6 up to 21 - (for 32 bit sizes) or up to 53 (for 64 bit sizes). The typical case - is of course much better. -*/ + When chunks are not in use, they are treated as nodes of either + lists or trees. + + "Small" chunks are stored in circular doubly-linked lists, and look + like this: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `head:' | Size of chunk, in bytes |P| + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forward pointer to next chunk in list | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Back pointer to previous chunk in list | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Unused space (may be 0 bytes long) . + . . + . | + nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `foot:' | Size of chunk, in bytes | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Larger chunks are kept in a form of bitwise digital trees (aka + tries) keyed on chunksizes. Because malloc_tree_chunks are only for + free chunks greater than 256 bytes, their size doesn't impose any + constraints on user chunk sizes. Each node looks like: + + chunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Size of previous chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `head:' | Size of chunk, in bytes |P| + mem-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forward pointer to next chunk of same size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Back pointer to previous chunk of same size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to left child (child[0]) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to right child (child[1]) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Pointer to parent | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | bin index of this chunk | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Unused space . + . | + nextchunk-> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + `foot:' | Size of chunk, in bytes | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Each tree holding treenodes is a tree of unique chunk sizes. Chunks + of the same size are arranged in a circularly-linked list, with only + the oldest chunk (the next to be used, in our FIFO ordering) + actually in the tree. (Tree members are distinguished by a non-null + parent pointer.) If a chunk with the same size an an existing node + is inserted, it is linked off the existing node using pointers that + work in the same way as fd/bk pointers of small chunks. + + Each tree contains a power of 2 sized range of chunk sizes (the + smallest is 0x100 <= x < 0x180), which is is divided in half at each + tree level, with the chunks in the smaller half of the range (0x100 + <= x < 0x140 for the top nose) in the left subtree and the larger + half (0x140 <= x < 0x180) in the right subtree. This is, of course, + done by inspecting individual bits. + + Using these rules, each node's left subtree contains all smaller + sizes than its right subtree. However, the node at the root of each + subtree has no particular ordering relationship to either. (The + dividing line between the subtree sizes is based on trie relation.) + If we remove the last chunk of a given size from the interior of the + tree, we need to replace it with a leaf node. The tree ordering + rules permit a node to be replaced by any leaf below it. + + The smallest chunk in a tree (a common operation in a best-fit + allocator) can be found by walking a path to the leftmost leaf in + the tree. Unlike a usual binary tree, where we follow left child + pointers until we reach a null, here we follow the right child + pointer any time the left one is null, until we reach a leaf with + both child pointers null. The smallest chunk in the tree will be + somewhere along that path. + + The worst case number of steps to add, find, or remove a node is + bounded by the number of bits differentiating chunks within + bins. Under current bin calculations, this ranges from 6 up to 21 + (for 32 bit sizes) or up to 53 (for 64 bit sizes). The typical case + is of course much better. + */ struct malloc_tree_chunk { - /* The first four fields must be compatible with malloc_chunk */ - size_t prev_foot; - size_t head; - struct malloc_tree_chunk* fd; - struct malloc_tree_chunk* bk; - - struct malloc_tree_chunk* child[2]; - struct malloc_tree_chunk* parent; - bindex_t index; + /* The first four fields must be compatible with malloc_chunk */ + size_t prev_foot; + size_t head; + struct malloc_tree_chunk* fd; + struct malloc_tree_chunk* bk; + + struct malloc_tree_chunk* child[2]; + struct malloc_tree_chunk* parent; + bindex_t index; }; typedef struct malloc_tree_chunk tchunk; @@ -2287,65 +2424,65 @@ typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */ /* ----------------------------- Segments -------------------------------- */ /* - Each malloc space may include non-contiguous segments, held in a - list headed by an embedded malloc_segment record representing the - top-most space. Segments also include flags holding properties of - the space. Large chunks that are directly allocated by mmap are not - included in this list. They are instead independently created and - destroyed without otherwise keeping track of them. - - Segment management mainly comes into play for spaces allocated by - MMAP. Any call to MMAP might or might not return memory that is - adjacent to an existing segment. MORECORE normally contiguously - extends the current space, so this space is almost always adjacent, - which is simpler and faster to deal with. (This is why MORECORE is - used preferentially to MMAP when both are available -- see - sys_alloc.) When allocating using MMAP, we don't use any of the - hinting mechanisms (inconsistently) supported in various - implementations of unix mmap, or distinguish reserving from - committing memory. Instead, we just ask for space, and exploit - contiguity when we get it. It is probably possible to do - better than this on some systems, but no general scheme seems - to be significantly better. - - Management entails a simpler variant of the consolidation scheme - used for chunks to reduce fragmentation -- new adjacent memory is - normally prepended or appended to an existing segment. However, - there are limitations compared to chunk consolidation that mostly - reflect the fact that segment processing is relatively infrequent - (occurring only when getting memory from system) and that we - don't expect to have huge numbers of segments: - - * Segments are not indexed, so traversal requires linear scans. (It - would be possible to index these, but is not worth the extra - overhead and complexity for most programs on most platforms.) - * New segments are only appended to old ones when holding top-most - memory; if they cannot be prepended to others, they are held in - different segments. - - Except for the top-most segment of an mstate, each segment record - is kept at the tail of its segment. Segments are added by pushing - segment records onto the list headed by &mstate.seg for the - containing mstate. - - Segment flags control allocation/merge/deallocation policies: - * If EXTERN_BIT set, then we did not allocate this segment, - and so should not try to deallocate or merge with others. - (This currently holds only for the initial segment passed - into create_mspace_with_base.) - * If USE_MMAP_BIT set, the segment may be merged with - other surrounding mmapped segments and trimmed/de-allocated - using munmap. - * If neither bit is set, then the segment was obtained using - MORECORE so can be merged with surrounding MORECORE'd segments - and deallocated/trimmed using MORECORE with negative arguments. -*/ + Each malloc space may include non-contiguous segments, held in a + list headed by an embedded malloc_segment record representing the + top-most space. Segments also include flags holding properties of + the space. Large chunks that are directly allocated by mmap are not + included in this list. They are instead independently created and + destroyed without otherwise keeping track of them. + + Segment management mainly comes into play for spaces allocated by + MMAP. Any call to MMAP might or might not return memory that is + adjacent to an existing segment. MORECORE normally contiguously + extends the current space, so this space is almost always adjacent, + which is simpler and faster to deal with. (This is why MORECORE is + used preferentially to MMAP when both are available -- see + sys_alloc.) When allocating using MMAP, we don't use any of the + hinting mechanisms (inconsistently) supported in various + implementations of unix mmap, or distinguish reserving from + committing memory. Instead, we just ask for space, and exploit + contiguity when we get it. It is probably possible to do + better than this on some systems, but no general scheme seems + to be significantly better. + + Management entails a simpler variant of the consolidation scheme + used for chunks to reduce fragmentation -- new adjacent memory is + normally prepended or appended to an existing segment. However, + there are limitations compared to chunk consolidation that mostly + reflect the fact that segment processing is relatively infrequent + (occurring only when getting memory from system) and that we + don't expect to have huge numbers of segments: + + * Segments are not indexed, so traversal requires linear scans. (It + would be possible to index these, but is not worth the extra + overhead and complexity for most programs on most platforms.) + * New segments are only appended to old ones when holding top-most + memory; if they cannot be prepended to others, they are held in + different segments. + + Except for the top-most segment of an mstate, each segment record + is kept at the tail of its segment. Segments are added by pushing + segment records onto the list headed by &mstate.seg for the + containing mstate. + + Segment flags control allocation/merge/deallocation policies: + * If EXTERN_BIT set, then we did not allocate this segment, + and so should not try to deallocate or merge with others. + (This currently holds only for the initial segment passed + into create_mspace_with_base.) + * If USE_MMAP_BIT set, the segment may be merged with + other surrounding mmapped segments and trimmed/de-allocated + using munmap. + * If neither bit is set, then the segment was obtained using + MORECORE so can be merged with surrounding MORECORE'd segments + and deallocated/trimmed using MORECORE with negative arguments. + */ struct malloc_segment { - char* base; /* base address */ - size_t size; /* allocated size */ - struct malloc_segment* next; /* ptr to next segment */ - flag_t sflags; /* mmap and extern flag */ + char* base; /* base address */ + size_t size; /* allocated size */ + struct malloc_segment* next; /* ptr to next segment */ + flag_t sflags; /* mmap and extern flag */ }; #define is_mmapped_segment(S) ((S)->sflags & USE_MMAP_BIT) @@ -2357,86 +2494,89 @@ typedef struct malloc_segment* msegmentptr; /* ---------------------------- malloc_state ----------------------------- */ /* - A malloc_state holds all of the bookkeeping for a space. - The main fields are: - - Top - The topmost chunk of the currently active segment. Its size is - cached in topsize. The actual size of topmost space is - topsize+TOP_FOOT_SIZE, which includes space reserved for adding - fenceposts and segment records if necessary when getting more - space from the system. The size at which to autotrim top is - cached from mparams in trim_check, except that it is disabled if - an autotrim fails. - - Designated victim (dv) - This is the preferred chunk for servicing small requests that - don't have exact fits. It is normally the chunk split off most - recently to service another small request. Its size is cached in - dvsize. The link fields of this chunk are not maintained since it - is not kept in a bin. - - SmallBins - An array of bin headers for free chunks. These bins hold chunks - with sizes less than MIN_LARGE_SIZE bytes. Each bin contains - chunks of all the same size, spaced 8 bytes apart. To simplify - use in double-linked lists, each bin header acts as a malloc_chunk - pointing to the real first node, if it exists (else pointing to - itself). This avoids special-casing for headers. But to avoid - waste, we allocate only the fd/bk pointers of bins, and then use - repositioning tricks to treat these as the fields of a chunk. - - TreeBins - Treebins are pointers to the roots of trees holding a range of - sizes. There are 2 equally spaced treebins for each power of two - from TREE_SHIFT to TREE_SHIFT+16. The last bin holds anything - larger. - - Bin maps - There is one bit map for small bins ("smallmap") and one for - treebins ("treemap). Each bin sets its bit when non-empty, and - clears the bit when empty. Bit operations are then used to avoid - bin-by-bin searching -- nearly all "search" is done without ever - looking at bins that won't be selected. The bit maps - conservatively use 32 bits per map word, even if on 64bit system. - For a good description of some of the bit-based techniques used - here, see Henry S. Warren Jr's book "Hacker's Delight" (and - supplement at http://hackersdelight.org/). Many of these are - intended to reduce the branchiness of paths through malloc etc, as - well as to reduce the number of memory locations read or written. - - Segments - A list of segments headed by an embedded malloc_segment record - representing the initial space. - - Address check support - The least_addr field is the least address ever obtained from - MORECORE or MMAP. Attempted frees and reallocs of any address less - than this are trapped (unless INSECURE is defined). - - Magic tag - A cross-check field that should always hold same value as mparams.magic. - - Flags - Bits recording whether to use MMAP, locks, or contiguous MORECORE - - Statistics - Each space keeps track of current and maximum system memory - obtained via MORECORE or MMAP. - - Trim support - Fields holding the amount of unused topmost memory that should trigger - timming, and a counter to force periodic scanning to release unused - non-topmost segments. - - Locking - If USE_LOCKS is defined, the "mutex" lock is acquired and released - around every public call using this mspace. - - Extension support - A void* pointer and a size_t field that can be used to help implement - extensions to this malloc. -*/ + A malloc_state holds all of the bookkeeping for a space. + The main fields are: + + Top + The topmost chunk of the currently active segment. Its size is + cached in topsize. The actual size of topmost space is + topsize+TOP_FOOT_SIZE, which includes space reserved for adding + fenceposts and segment records if necessary when getting more + space from the system. The size at which to autotrim top is + cached from mparams in trim_check, except that it is disabled if + an autotrim fails. + + Designated victim (dv) + This is the preferred chunk for servicing small requests that + don't have exact fits. It is normally the chunk split off most + recently to service another small request. Its size is cached in + dvsize. The link fields of this chunk are not maintained since it + is not kept in a bin. + + SmallBins + An array of bin headers for free chunks. These bins hold chunks + with sizes less than MIN_LARGE_SIZE bytes. Each bin contains + chunks of all the same size, spaced 8 bytes apart. To simplify + use in double-linked lists, each bin header acts as a malloc_chunk + pointing to the real first node, if it exists (else pointing to + itself). This avoids special-casing for headers. But to avoid + waste, we allocate only the fd/bk pointers of bins, and then use + repositioning tricks to treat these as the fields of a chunk. + + TreeBins + Treebins are pointers to the roots of trees holding a range of + sizes. There are 2 equally spaced treebins for each power of two + from TREE_SHIFT to TREE_SHIFT+16. The last bin holds anything + larger. + + Bin maps + There is one bit map for small bins ("smallmap") and one for + treebins ("treemap). Each bin sets its bit when non-empty, and + clears the bit when empty. Bit operations are then used to avoid + bin-by-bin searching -- nearly all "search" is done without ever + looking at bins that won't be selected. The bit maps + conservatively use 32 bits per map word, even if on 64bit system. + For a good description of some of the bit-based techniques used + here, see Henry S. Warren Jr's book "Hacker's Delight" (and + supplement at http://hackersdelight.org/). Many of these are + intended to reduce the branchiness of paths through malloc etc, as + well as to reduce the number of memory locations read or written. + + Segments + A list of segments headed by an embedded malloc_segment record + representing the initial space. + + Address check support + The least_addr field is the least address ever obtained from + MORECORE or MMAP. Attempted frees and reallocs of any address less + than this are trapped (unless INSECURE is defined). + + Magic tag + A cross-check field that should always hold same value as mparams.magic. + + Max allowed footprint + The maximum allowed bytes to allocate from system (zero means no limit) + + Flags + Bits recording whether to use MMAP, locks, or contiguous MORECORE + + Statistics + Each space keeps track of current and maximum system memory + obtained via MORECORE or MMAP. + + Trim support + Fields holding the amount of unused topmost memory that should trigger + trimming, and a counter to force periodic scanning to release unused + non-topmost segments. + + Locking + If USE_LOCKS is defined, the "mutex" lock is acquired and released + around every public call using this mspace. + + Extension support + A void* pointer and a size_t field that can be used to help implement + extensions to this malloc. + */ /* Bin types, widths and sizes */ #define NSMALLBINS (32U) @@ -2449,27 +2589,28 @@ typedef struct malloc_segment* msegmentptr; #define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) struct malloc_state { - binmap_t smallmap; - binmap_t treemap; - size_t dvsize; - size_t topsize; - char* least_addr; - mchunkptr dv; - mchunkptr top; - size_t trim_check; - size_t release_checks; - size_t magic; - mchunkptr smallbins[(NSMALLBINS+1)*2]; - tbinptr treebins[NTREEBINS]; - size_t footprint; - size_t max_footprint; - flag_t mflags; + binmap_t smallmap; + binmap_t treemap; + size_t dvsize; + size_t topsize; + char* least_addr; + mchunkptr dv; + mchunkptr top; + size_t trim_check; + size_t release_checks; + size_t magic; + mchunkptr smallbins[(NSMALLBINS+1)*2]; + tbinptr treebins[NTREEBINS]; + size_t footprint; + size_t max_footprint; + size_t footprint_limit; /* zero means no limit */ + flag_t mflags; #if USE_LOCKS - MLOCK_T mutex; /* locate lock among fields that rarely change */ + MLOCK_T mutex; /* locate lock among fields that rarely change */ #endif /* USE_LOCKS */ - msegment seg; - void* extp; /* Unused but available for extensions */ - size_t exts; + msegment seg; + void* extp; /* Unused but available for extensions */ + size_t exts; }; typedef struct malloc_state* mstate; @@ -2477,19 +2618,19 @@ typedef struct malloc_state* mstate; /* ------------- Global malloc_state and malloc_params ------------------- */ /* - malloc_params holds global properties, including those that can be - dynamically set using mallopt. There is a single instance, mparams, - initialized in init_mparams. Note that the non-zeroness of "magic" - also serves as an initialization flag. -*/ + malloc_params holds global properties, including those that can be + dynamically set using mallopt. There is a single instance, mparams, + initialized in init_mparams. Note that the non-zeroness of "magic" + also serves as an initialization flag. + */ struct malloc_params { - volatile size_t magic; - size_t page_size; - size_t granularity; - size_t mmap_threshold; - size_t trim_threshold; - flag_t default_mflags; + size_t magic; + size_t page_size; + size_t granularity; + size_t mmap_threshold; + size_t trim_threshold; + flag_t default_mflags; }; static struct malloc_params mparams; @@ -2514,28 +2655,36 @@ static struct malloc_state _gm_; #define use_lock(M) ((M)->mflags & USE_LOCK_BIT) #define enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) +#if USE_LOCKS #define disable_lock(M) ((M)->mflags &= ~USE_LOCK_BIT) +#else +#define disable_lock(M) +#endif #define use_mmap(M) ((M)->mflags & USE_MMAP_BIT) #define enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) +#if HAVE_MMAP #define disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) +#else +#define disable_mmap(M) +#endif #define use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) #define disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) #define set_lock(M,L)\ - ((M)->mflags = (L)?\ - ((M)->mflags | USE_LOCK_BIT) :\ - ((M)->mflags & ~USE_LOCK_BIT)) +((M)->mflags = (L)?\ +((M)->mflags | USE_LOCK_BIT) :\ +((M)->mflags & ~USE_LOCK_BIT)) /* page-align a size */ #define page_align(S)\ - (((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE)) +(((S) + (mparams.page_size - SIZE_T_ONE)) & ~(mparams.page_size - SIZE_T_ONE)) /* granularity-align a size */ #define granularity_align(S)\ - (((S) + (mparams.granularity - SIZE_T_ONE))\ - & ~(mparams.granularity - SIZE_T_ONE)) +(((S) + (mparams.granularity - SIZE_T_ONE))\ +& ~(mparams.granularity - SIZE_T_ONE)) /* For mmap, use granularity alignment on windows, else page-align */ @@ -2549,34 +2698,34 @@ static struct malloc_state _gm_; #define SYS_ALLOC_PADDING (TOP_FOOT_SIZE + MALLOC_ALIGNMENT) #define is_page_aligned(S)\ - (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) +(((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) #define is_granularity_aligned(S)\ - (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) +(((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) /* True if segment S holds address A */ #define segment_holds(S, A)\ - ((char*)(A) >= S->base && (char*)(A) < S->base + S->size) +((char*)(A) >= S->base && (char*)(A) < S->base + S->size) /* Return segment holding given address */ static msegmentptr segment_holding(mstate m, char* addr) { - msegmentptr sp = &m->seg; - for (;;) { - if (addr >= sp->base && addr < sp->base + sp->size) - return sp; - if ((sp = sp->next) == 0) - return 0; - } + msegmentptr sp = &m->seg; + for (;;) { + if (addr >= sp->base && addr < sp->base + sp->size) + return sp; + if ((sp = sp->next) == 0) + return 0; + } } /* Return true if segment contains a segment link */ static int has_segment_link(mstate m, msegmentptr ss) { - msegmentptr sp = &m->seg; - for (;;) { - if ((char*)sp >= ss->base && (char*)sp < ss->base + ss->size) - return 1; - if ((sp = sp->next) == 0) - return 0; - } + msegmentptr sp = &m->seg; + for (;;) { + if ((char*)sp >= ss->base && (char*)sp < ss->base + ss->size) + return 1; + if ((sp = sp->next) == 0) + return 0; + } } #ifndef MORECORE_CANNOT_TRIM @@ -2586,24 +2735,23 @@ static int has_segment_link(mstate m, msegmentptr ss) { #endif /* MORECORE_CANNOT_TRIM */ /* - TOP_FOOT_SIZE is padding at the end of a segment, including space - that may be needed to place segment records and fenceposts when new - noncontiguous segments are added. -*/ -#define TOP_FOOT_SIZE\ - (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) + TOP_FOOT_SIZE is padding at the end of a segment, including space + that may be needed to place segment records and fenceposts when new + noncontiguous segments are added. + */ +#define TOP_FOOT_SIZE \ +(align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) /* ------------------------------- Hooks -------------------------------- */ /* - PREACTION should be defined to return 0 on success, and nonzero on - failure. If you are not using locking, you can redefine these to do - anything you like. -*/ + PREACTION should be defined to return 0 on success, and nonzero on + failure. If you are not using locking, you can redefine these to do + anything you like. + */ #if USE_LOCKS - #define PREACTION(M) ((use_lock(M))? ACQUIRE_LOCK(&(M)->mutex) : 0) #define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK(&(M)->mutex); } #else /* USE_LOCKS */ @@ -2619,12 +2767,12 @@ static int has_segment_link(mstate m, msegmentptr ss) { #endif /* USE_LOCKS */ /* - CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. - USAGE_ERROR_ACTION is triggered on detected bad frees and - reallocs. The argument p is an address that might have triggered the - fault. It is ignored by the two predefined actions, but might be - useful in custom actions that try to help diagnose errors. -*/ + CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. + USAGE_ERROR_ACTION is triggered on detected bad frees and + reallocs. The argument p is an address that might have triggered the + fault. It is ignored by the two predefined actions, but might be + useful in custom actions that try to help diagnose errors. + */ #if PROCEED_ON_ERROR @@ -2649,6 +2797,7 @@ static void reset_on_error(mstate m); #endif /* PROCEED_ON_ERROR */ + /* -------------------------- Debugging setup ---------------------------- */ #if ! DEBUG @@ -2685,7 +2834,7 @@ static size_t traverse_and_check(mstate m); /* ---------------------------- Indexing Bins ---------------------------- */ #define is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) -#define small_index(s) ((s) >> SMALLBIN_SHIFT) +#define small_index(s) (bindex_t)((s) >> SMALLBIN_SHIFT) #define small_index2size(i) ((i) << SMALLBIN_SHIFT) #define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) @@ -2697,80 +2846,79 @@ static size_t traverse_and_check(mstate m); #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define compute_tree_index(S, I)\ {\ - unsigned int X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int K;\ - __asm__("bsrl\t%1, %0\n\t" : "=r" (K) : "g" (X));\ - I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ - }\ +unsigned int X = S >> TREEBIN_SHIFT;\ +if (X == 0)\ +I = 0;\ +else if (X > 0xFFFF)\ +I = NTREEBINS-1;\ +else {\ +unsigned int K = (unsigned) sizeof(X)*__CHAR_BIT__ - 1 - (unsigned) __builtin_clz(X); \ +I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ +}\ } #elif defined (__INTEL_COMPILER) #define compute_tree_index(S, I)\ {\ - size_t X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int K = _bit_scan_reverse (X); \ - I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ - }\ +size_t X = S >> TREEBIN_SHIFT;\ +if (X == 0)\ +I = 0;\ +else if (X > 0xFFFF)\ +I = NTREEBINS-1;\ +else {\ +unsigned int K = _bit_scan_reverse (X); \ +I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ +}\ } #elif defined(_MSC_VER) && _MSC_VER>=1300 #define compute_tree_index(S, I)\ {\ - size_t X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int K;\ - _BitScanReverse((DWORD *) &K, X);\ - I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ - }\ +size_t X = S >> TREEBIN_SHIFT;\ +if (X == 0)\ +I = 0;\ +else if (X > 0xFFFF)\ +I = NTREEBINS-1;\ +else {\ +unsigned int K;\ +_BitScanReverse((DWORD *) &K, (DWORD) X);\ +I = (bindex_t)((K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)));\ +}\ } #else /* GNUC */ #define compute_tree_index(S, I)\ {\ - size_t X = S >> TREEBIN_SHIFT;\ - if (X == 0)\ - I = 0;\ - else if (X > 0xFFFF)\ - I = NTREEBINS-1;\ - else {\ - unsigned int Y = (unsigned int)X;\ - unsigned int N = ((Y - 0x100) >> 16) & 8;\ - unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\ - N += K;\ - N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\ - K = 14 - N + ((Y <<= K) >> 15);\ - I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\ - }\ +size_t X = S >> TREEBIN_SHIFT;\ +if (X == 0)\ +I = 0;\ +else if (X > 0xFFFF)\ +I = NTREEBINS-1;\ +else {\ +unsigned int Y = (unsigned int)X;\ +unsigned int N = ((Y - 0x100) >> 16) & 8;\ +unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4;\ +N += K;\ +N += K = (((Y <<= K) - 0x4000) >> 16) & 2;\ +K = 14 - N + ((Y <<= K) >> 15);\ +I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1));\ +}\ } #endif /* GNUC */ /* Bit representing maximum resolved size in a treebin at i */ #define bit_for_tree_index(i) \ - (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) +(i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) /* Shift placing maximum resolved bit in a treebin at i as sign bit */ #define leftshift_for_tree_index(i) \ - ((i == NTREEBINS-1)? 0 : \ - ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) +((i == NTREEBINS-1)? 0 : \ +((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) /* The size of the smallest chunk held in bin with index i */ #define minsize_for_tree_index(i) \ - ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \ - (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) +((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | \ +(((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) /* ------------------------ Operations on bin maps ----------------------- */ @@ -2801,25 +2949,25 @@ static size_t traverse_and_check(mstate m); #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define compute_bit2idx(X, I)\ {\ - unsigned int J;\ - __asm__("bsfl\t%1, %0\n\t" : "=r" (J) : "g" (X));\ - I = (bindex_t)J;\ +unsigned int J;\ +J = __builtin_ctz(X); \ +I = (bindex_t)J;\ } #elif defined (__INTEL_COMPILER) #define compute_bit2idx(X, I)\ {\ - unsigned int J;\ - J = _bit_scan_forward (X); \ - I = (bindex_t)J;\ +unsigned int J;\ +J = _bit_scan_forward (X); \ +I = (bindex_t)J;\ } #elif defined(_MSC_VER) && _MSC_VER>=1300 #define compute_bit2idx(X, I)\ {\ - unsigned int J;\ - _BitScanForward((DWORD *) &J, X);\ - I = (bindex_t)J;\ +unsigned int J;\ +_BitScanForward((DWORD *) &J, X);\ +I = (bindex_t)J;\ } #elif USE_BUILTIN_FFS @@ -2828,14 +2976,14 @@ static size_t traverse_and_check(mstate m); #else #define compute_bit2idx(X, I)\ {\ - unsigned int Y = X - 1;\ - unsigned int K = Y >> (16-4) & 16;\ - unsigned int N = K; Y >>= K;\ - N += K = Y >> (8-3) & 8; Y >>= K;\ - N += K = Y >> (4-2) & 4; Y >>= K;\ - N += K = Y >> (2-1) & 2; Y >>= K;\ - N += K = Y >> (1-0) & 1; Y >>= K;\ - I = (bindex_t)(N + Y);\ +unsigned int Y = X - 1;\ +unsigned int K = Y >> (16-4) & 16;\ +unsigned int N = K; Y >>= K;\ +N += K = Y >> (8-3) & 8; Y >>= K;\ +N += K = Y >> (4-2) & 4; Y >>= K;\ +N += K = Y >> (2-1) & 2; Y >>= K;\ +N += K = Y >> (1-0) & 1; Y >>= K;\ +I = (bindex_t)(N + Y);\ } #endif /* GNUC */ @@ -2843,30 +2991,30 @@ static size_t traverse_and_check(mstate m); /* ----------------------- Runtime Check Support ------------------------- */ /* - For security, the main invariant is that malloc/free/etc never - writes to a static address other than malloc_state, unless static - malloc_state itself has been corrupted, which cannot occur via - malloc (because of these checks). In essence this means that we - believe all pointers, sizes, maps etc held in malloc_state, but - check all of those linked or offsetted from other embedded data - structures. These checks are interspersed with main code in a way - that tends to minimize their run-time cost. - - When FOOTERS is defined, in addition to range checking, we also - verify footer fields of inuse chunks, which can be used guarantee - that the mstate controlling malloc/free is intact. This is a - streamlined version of the approach described by William Robertson - et al in "Run-time Detection of Heap-based Overflows" LISA'03 - http://www.usenix.org/events/lisa03/tech/robertson.html The footer - of an inuse chunk holds the xor of its mstate and a random seed, - that is checked upon calls to free() and realloc(). This is - (probablistically) unguessable from outside the program, but can be - computed by any code successfully malloc'ing any chunk, so does not - itself provide protection against code that has already broken - security through some other means. Unlike Robertson et al, we - always dynamically check addresses of all offset chunks (previous, - next, etc). This turns out to be cheaper than relying on hashes. -*/ + For security, the main invariant is that malloc/free/etc never + writes to a static address other than malloc_state, unless static + malloc_state itself has been corrupted, which cannot occur via + malloc (because of these checks). In essence this means that we + believe all pointers, sizes, maps etc held in malloc_state, but + check all of those linked or offsetted from other embedded data + structures. These checks are interspersed with main code in a way + that tends to minimize their run-time cost. + + When FOOTERS is defined, in addition to range checking, we also + verify footer fields of inuse chunks, which can be used guarantee + that the mstate controlling malloc/free is intact. This is a + streamlined version of the approach described by William Robertson + et al in "Run-time Detection of Heap-based Overflows" LISA'03 + http://www.usenix.org/events/lisa03/tech/robertson.html The footer + of an inuse chunk holds the xor of its mstate and a random seed, + that is checked upon calls to free() and realloc(). This is + (probabalistically) unguessable from outside the program, but can be + computed by any code successfully malloc'ing any chunk, so does not + itself provide protection against code that has already broken + security through some other means. Unlike Robertson et al, we + always dynamically check addresses of all offset chunks (previous, + next, etc). This turns out to be cheaper than relying on hashes. + */ #if !INSECURE /* Check if address a is at least as high as any from MORECORE or MMAP */ @@ -2892,7 +3040,6 @@ static size_t traverse_and_check(mstate m); #define ok_magic(M) (1) #endif /* (FOOTERS && !INSECURE) */ - /* In gcc, use __builtin_expect to minimize impact of checks */ #if !INSECURE #if defined(__GNUC__) && __GNUC__ >= 3 @@ -2914,153 +3061,164 @@ static size_t traverse_and_check(mstate m); /* Set cinuse bit and pinuse bit of next chunk */ #define set_inuse(M,p,s)\ - ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ - ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) +((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ +((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) /* Set cinuse and pinuse of this chunk and pinuse of next chunk */ #define set_inuse_and_pinuse(M,p,s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - ((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) +((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ +((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT) /* Set size, cinuse and pinuse bit of this chunk */ #define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) +((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) #else /* FOOTERS */ /* Set foot of inuse chunk to be xor of mstate and seed */ #define mark_inuse_foot(M,p,s)\ - (((mchunkptr)((char*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) +(((mchunkptr)((char*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) #define get_mstate_for(p)\ - ((mstate)(((mchunkptr)((char*)(p) +\ - (chunksize(p))))->prev_foot ^ mparams.magic)) +((mstate)(((mchunkptr)((char*)(p) +\ +(chunksize(p))))->prev_foot ^ mparams.magic)) #define set_inuse(M,p,s)\ - ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ - (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT), \ - mark_inuse_foot(M,p,s)) +((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ +(((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT), \ +mark_inuse_foot(M,p,s)) #define set_inuse_and_pinuse(M,p,s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - (((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT),\ - mark_inuse_foot(M,p,s)) +((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ +(((mchunkptr)(((char*)(p)) + (s)))->head |= PINUSE_BIT),\ +mark_inuse_foot(M,p,s)) #define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - mark_inuse_foot(M, p, s)) +((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ +mark_inuse_foot(M, p, s)) #endif /* !FOOTERS */ /* ---------------------------- setting mparams -------------------------- */ +#if LOCK_AT_FORK +static void pre_fork(void) { ACQUIRE_LOCK(&(gm)->mutex); } +static void post_fork_parent(void) { RELEASE_LOCK(&(gm)->mutex); } +static void post_fork_child(void) { INITIAL_LOCK(&(gm)->mutex); } +#endif /* LOCK_AT_FORK */ + /* Initialize mparams */ static int init_mparams(void) { #ifdef NEED_GLOBAL_LOCK_INIT - if (malloc_global_mutex_status <= 0) - init_malloc_global_mutex(); + if (malloc_global_mutex_status <= 0) + init_malloc_global_mutex(); #endif - - ACQUIRE_MALLOC_GLOBAL_LOCK(); - if (mparams.magic == 0) { - size_t magic; - size_t psize; - size_t gsize; - + + ACQUIRE_MALLOC_GLOBAL_LOCK(); + if (mparams.magic == 0) { + size_t magic; + size_t psize; + size_t gsize; + #ifndef WIN32 - psize = malloc_getpagesize; - gsize = ((DEFAULT_GRANULARITY != 0)? DEFAULT_GRANULARITY : psize); + psize = malloc_getpagesize; + gsize = ((DEFAULT_GRANULARITY != 0)? DEFAULT_GRANULARITY : psize); #else /* WIN32 */ - { - SYSTEM_INFO system_info; - GetSystemInfo(&system_info); - psize = system_info.dwPageSize; - gsize = ((DEFAULT_GRANULARITY != 0)? - DEFAULT_GRANULARITY : system_info.dwAllocationGranularity); - } + { + SYSTEM_INFO system_info; + GetSystemInfo(&system_info); + psize = system_info.dwPageSize; + gsize = ((DEFAULT_GRANULARITY != 0)? + DEFAULT_GRANULARITY : system_info.dwAllocationGranularity); + } #endif /* WIN32 */ - - /* Sanity-check configuration: - size_t must be unsigned and as wide as pointer type. - ints must be at least 4 bytes. - alignment must be at least 8. - Alignment, min chunk size, and page size must all be powers of 2. - */ - if ((sizeof(size_t) != sizeof(char*)) || - (MAX_SIZE_T < MIN_CHUNK_SIZE) || - (sizeof(int) < 4) || - (MALLOC_ALIGNMENT < (size_t)8U) || - ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || - ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || - ((gsize & (gsize-SIZE_T_ONE)) != 0) || - ((psize & (psize-SIZE_T_ONE)) != 0)) - ABORT; - - mparams.granularity = gsize; - mparams.page_size = psize; - mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; - mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; + + /* Sanity-check configuration: + size_t must be unsigned and as wide as pointer type. + ints must be at least 4 bytes. + alignment must be at least 8. + Alignment, min chunk size, and page size must all be powers of 2. + */ + if ((sizeof(size_t) != sizeof(char*)) || + (MAX_SIZE_T < MIN_CHUNK_SIZE) || + (sizeof(int) < 4) || + (MALLOC_ALIGNMENT < (size_t)8U) || + ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || + ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || + ((gsize & (gsize-SIZE_T_ONE)) != 0) || + ((psize & (psize-SIZE_T_ONE)) != 0)) + ABORT; + mparams.granularity = gsize; + mparams.page_size = psize; + mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; + mparams.trim_threshold = DEFAULT_TRIM_THRESHOLD; #if MORECORE_CONTIGUOUS - mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; + mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; #else /* MORECORE_CONTIGUOUS */ - mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; + mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; #endif /* MORECORE_CONTIGUOUS */ - + #if !ONLY_MSPACES - /* Set up lock for main malloc area */ - gm->mflags = mparams.default_mflags; - INITIAL_LOCK(&gm->mutex); + /* Set up lock for main malloc area */ + gm->mflags = mparams.default_mflags; + (void)INITIAL_LOCK(&gm->mutex); #endif - - { +#if LOCK_AT_FORK + pthread_atfork(&pre_fork, &post_fork_parent, &post_fork_child); +#endif + + { #if USE_DEV_RANDOM - int fd; - unsigned char buf[sizeof(size_t)]; - /* Try to use /dev/urandom, else fall back on using time */ - if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && - read(fd, buf, sizeof(buf)) == sizeof(buf)) { - magic = *((size_t *) buf); - close(fd); - } - else + int fd; + unsigned char buf[sizeof(size_t)]; + /* Try to use /dev/urandom, else fall back on using time */ + if ((fd = open("/dev/urandom", O_RDONLY)) >= 0 && + read(fd, buf, sizeof(buf)) == sizeof(buf)) { + magic = *((size_t *) buf); + close(fd); + } + else #endif /* USE_DEV_RANDOM */ #ifdef WIN32 - magic = (size_t)(GetTickCount() ^ (size_t)0x55555555U); + magic = (size_t)(GetTickCount() ^ (size_t)0x55555555U); +#elif defined(LACKS_TIME_H) + magic = (size_t)&magic ^ (size_t)0x55555555U; #else - magic = (size_t)(time(0) ^ (size_t)0x55555555U); + magic = (size_t)(time(0) ^ (size_t)0x55555555U); #endif - magic |= (size_t)8U; /* ensure nonzero */ - magic &= ~(size_t)7U; /* improve chances of fault for bad values */ - mparams.magic = magic; + magic |= (size_t)8U; /* ensure nonzero */ + magic &= ~(size_t)7U; /* improve chances of fault for bad values */ + /* Until memory modes commonly available, use volatile-write */ + (*(volatile size_t *)(&(mparams.magic))) = magic; + } } - } - - RELEASE_MALLOC_GLOBAL_LOCK(); - return 1; + + RELEASE_MALLOC_GLOBAL_LOCK(); + return 1; } /* support for mallopt */ static int change_mparam(int param_number, int value) { - size_t val; - ensure_initialization(); - val = (value == -1)? MAX_SIZE_T : (size_t)value; - switch(param_number) { - case M_TRIM_THRESHOLD: - mparams.trim_threshold = val; - return 1; - case M_GRANULARITY: - if (val >= mparams.page_size && ((val & (val-1)) == 0)) { - mparams.granularity = val; - return 1; + size_t val; + ensure_initialization(); + val = (value == -1)? MAX_SIZE_T : (size_t)value; + switch(param_number) { + case M_TRIM_THRESHOLD: + mparams.trim_threshold = val; + return 1; + case M_GRANULARITY: + if (val >= mparams.page_size && ((val & (val-1)) == 0)) { + mparams.granularity = val; + return 1; + } + else + return 0; + case M_MMAP_THRESHOLD: + mparams.mmap_threshold = val; + return 1; + default: + return 0; } - else - return 0; - case M_MMAP_THRESHOLD: - mparams.mmap_threshold = val; - return 1; - default: - return 0; - } } #if DEBUG @@ -3068,266 +3226,267 @@ static int change_mparam(int param_number, int value) { /* Check properties of any chunk, whether free, inuse, mmapped etc */ static void do_check_any_chunk(mstate m, mchunkptr p) { - assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); - assert(ok_address(m, p)); + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); } /* Check properties of top chunk */ static void do_check_top_chunk(mstate m, mchunkptr p) { - msegmentptr sp = segment_holding(m, (char*)p); - size_t sz = p->head & ~INUSE_BITS; /* third-lowest bit can be set! */ - assert(sp != 0); - assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); - assert(ok_address(m, p)); - assert(sz == m->topsize); - assert(sz > 0); - assert(sz == ((sp->base + sp->size) - (char*)p) - TOP_FOOT_SIZE); - assert(pinuse(p)); - assert(!pinuse(chunk_plus_offset(p, sz))); + msegmentptr sp = segment_holding(m, (char*)p); + size_t sz = p->head & ~INUSE_BITS; /* third-lowest bit can be set! */ + assert(sp != 0); + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); + assert(sz == m->topsize); + assert(sz > 0); + assert(sz == ((sp->base + sp->size) - (char*)p) - TOP_FOOT_SIZE); + assert(pinuse(p)); + assert(!pinuse(chunk_plus_offset(p, sz))); } /* Check properties of (inuse) mmapped chunks */ static void do_check_mmapped_chunk(mstate m, mchunkptr p) { - size_t sz = chunksize(p); - size_t len = (sz + (p->prev_foot) + MMAP_FOOT_PAD); - assert(is_mmapped(p)); - assert(use_mmap(m)); - assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); - assert(ok_address(m, p)); - assert(!is_small(sz)); - assert((len & (mparams.page_size-SIZE_T_ONE)) == 0); - assert(chunk_plus_offset(p, sz)->head == FENCEPOST_HEAD); - assert(chunk_plus_offset(p, sz+SIZE_T_SIZE)->head == 0); + size_t sz = chunksize(p); + size_t len = (sz + (p->prev_foot) + MMAP_FOOT_PAD); + assert(is_mmapped(p)); + assert(use_mmap(m)); + assert((is_aligned(chunk2mem(p))) || (p->head == FENCEPOST_HEAD)); + assert(ok_address(m, p)); + assert(!is_small(sz)); + assert((len & (mparams.page_size-SIZE_T_ONE)) == 0); + assert(chunk_plus_offset(p, sz)->head == FENCEPOST_HEAD); + assert(chunk_plus_offset(p, sz+SIZE_T_SIZE)->head == 0); } /* Check properties of inuse chunks */ static void do_check_inuse_chunk(mstate m, mchunkptr p) { - do_check_any_chunk(m, p); - assert(is_inuse(p)); - assert(next_pinuse(p)); - /* If not pinuse and not mmapped, previous chunk has OK offset */ - assert(is_mmapped(p) || pinuse(p) || next_chunk(prev_chunk(p)) == p); - if (is_mmapped(p)) - do_check_mmapped_chunk(m, p); + do_check_any_chunk(m, p); + assert(is_inuse(p)); + assert(next_pinuse(p)); + /* If not pinuse and not mmapped, previous chunk has OK offset */ + assert(is_mmapped(p) || pinuse(p) || next_chunk(prev_chunk(p)) == p); + if (is_mmapped(p)) + do_check_mmapped_chunk(m, p); } /* Check properties of free chunks */ static void do_check_free_chunk(mstate m, mchunkptr p) { - size_t sz = chunksize(p); - mchunkptr next = chunk_plus_offset(p, sz); - do_check_any_chunk(m, p); - assert(!is_inuse(p)); - assert(!next_pinuse(p)); - assert (!is_mmapped(p)); - if (p != m->dv && p != m->top) { - if (sz >= MIN_CHUNK_SIZE) { - assert((sz & CHUNK_ALIGN_MASK) == 0); - assert(is_aligned(chunk2mem(p))); - assert(next->prev_foot == sz); - assert(pinuse(p)); - assert (next == m->top || is_inuse(next)); - assert(p->fd->bk == p); - assert(p->bk->fd == p); + size_t sz = chunksize(p); + mchunkptr next = chunk_plus_offset(p, sz); + do_check_any_chunk(m, p); + assert(!is_inuse(p)); + assert(!next_pinuse(p)); + assert (!is_mmapped(p)); + if (p != m->dv && p != m->top) { + if (sz >= MIN_CHUNK_SIZE) { + assert((sz & CHUNK_ALIGN_MASK) == 0); + assert(is_aligned(chunk2mem(p))); + assert(next->prev_foot == sz); + assert(pinuse(p)); + assert (next == m->top || is_inuse(next)); + assert(p->fd->bk == p); + assert(p->bk->fd == p); + } + else /* markers are always of size SIZE_T_SIZE */ + assert(sz == SIZE_T_SIZE); } - else /* markers are always of size SIZE_T_SIZE */ - assert(sz == SIZE_T_SIZE); - } } /* Check properties of malloced chunks at the point they are malloced */ static void do_check_malloced_chunk(mstate m, void* mem, size_t s) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - size_t sz = p->head & ~INUSE_BITS; - do_check_inuse_chunk(m, p); - assert((sz & CHUNK_ALIGN_MASK) == 0); - assert(sz >= MIN_CHUNK_SIZE); - assert(sz >= s); - /* unless mmapped, size is less than MIN_CHUNK_SIZE more than request */ - assert(is_mmapped(p) || sz < (s + MIN_CHUNK_SIZE)); - } + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + size_t sz = p->head & ~INUSE_BITS; + do_check_inuse_chunk(m, p); + assert((sz & CHUNK_ALIGN_MASK) == 0); + assert(sz >= MIN_CHUNK_SIZE); + assert(sz >= s); + /* unless mmapped, size is less than MIN_CHUNK_SIZE more than request */ + assert(is_mmapped(p) || sz < (s + MIN_CHUNK_SIZE)); + } } /* Check a tree and its subtrees. */ static void do_check_tree(mstate m, tchunkptr t) { - tchunkptr head = 0; - tchunkptr u = t; - bindex_t tindex = t->index; - size_t tsize = chunksize(t); - bindex_t idx; - compute_tree_index(tsize, idx); - assert(tindex == idx); - assert(tsize >= MIN_LARGE_SIZE); - assert(tsize >= minsize_for_tree_index(idx)); - assert((idx == NTREEBINS-1) || (tsize < minsize_for_tree_index((idx+1)))); - - do { /* traverse through chain of same-sized nodes */ - do_check_any_chunk(m, ((mchunkptr)u)); - assert(u->index == tindex); - assert(chunksize(u) == tsize); - assert(!is_inuse(u)); - assert(!next_pinuse(u)); - assert(u->fd->bk == u); - assert(u->bk->fd == u); - if (u->parent == 0) { - assert(u->child[0] == 0); - assert(u->child[1] == 0); - } - else { - assert(head == 0); /* only one node on chain has parent */ - head = u; - assert(u->parent != u); - assert (u->parent->child[0] == u || - u->parent->child[1] == u || - *((tbinptr*)(u->parent)) == u); - if (u->child[0] != 0) { - assert(u->child[0]->parent == u); - assert(u->child[0] != u); - do_check_tree(m, u->child[0]); - } - if (u->child[1] != 0) { - assert(u->child[1]->parent == u); - assert(u->child[1] != u); - do_check_tree(m, u->child[1]); - } - if (u->child[0] != 0 && u->child[1] != 0) { - assert(chunksize(u->child[0]) < chunksize(u->child[1])); - } - } - u = u->fd; - } while (u != t); - assert(head != 0); + tchunkptr head = 0; + tchunkptr u = t; + bindex_t tindex = t->index; + size_t tsize = chunksize(t); + bindex_t idx; + compute_tree_index(tsize, idx); + assert(tindex == idx); + assert(tsize >= MIN_LARGE_SIZE); + assert(tsize >= minsize_for_tree_index(idx)); + assert((idx == NTREEBINS-1) || (tsize < minsize_for_tree_index((idx+1)))); + + do { /* traverse through chain of same-sized nodes */ + do_check_any_chunk(m, ((mchunkptr)u)); + assert(u->index == tindex); + assert(chunksize(u) == tsize); + assert(!is_inuse(u)); + assert(!next_pinuse(u)); + assert(u->fd->bk == u); + assert(u->bk->fd == u); + if (u->parent == 0) { + assert(u->child[0] == 0); + assert(u->child[1] == 0); + } + else { + assert(head == 0); /* only one node on chain has parent */ + head = u; + assert(u->parent != u); + assert (u->parent->child[0] == u || + u->parent->child[1] == u || + *((tbinptr*)(u->parent)) == u); + if (u->child[0] != 0) { + assert(u->child[0]->parent == u); + assert(u->child[0] != u); + do_check_tree(m, u->child[0]); + } + if (u->child[1] != 0) { + assert(u->child[1]->parent == u); + assert(u->child[1] != u); + do_check_tree(m, u->child[1]); + } + if (u->child[0] != 0 && u->child[1] != 0) { + assert(chunksize(u->child[0]) < chunksize(u->child[1])); + } + } + u = u->fd; + } while (u != t); + assert(head != 0); } /* Check all the chunks in a treebin. */ static void do_check_treebin(mstate m, bindex_t i) { - tbinptr* tb = treebin_at(m, i); - tchunkptr t = *tb; - int empty = (m->treemap & (1U << i)) == 0; - if (t == 0) - assert(empty); - if (!empty) - do_check_tree(m, t); + tbinptr* tb = treebin_at(m, i); + tchunkptr t = *tb; + int empty = (m->treemap & (1U << i)) == 0; + if (t == 0) + assert(empty); + if (!empty) + do_check_tree(m, t); } /* Check all the chunks in a smallbin. */ static void do_check_smallbin(mstate m, bindex_t i) { - sbinptr b = smallbin_at(m, i); - mchunkptr p = b->bk; - unsigned int empty = (m->smallmap & (1U << i)) == 0; - if (p == b) - assert(empty); - if (!empty) { - for (; p != b; p = p->bk) { - size_t size = chunksize(p); - mchunkptr q; - /* each chunk claims to be free */ - do_check_free_chunk(m, p); - /* chunk belongs in bin */ - assert(small_index(size) == i); - assert(p->bk == b || chunksize(p->bk) == chunksize(p)); - /* chunk is followed by an inuse chunk */ - q = next_chunk(p); - if (q->head != FENCEPOST_HEAD) - do_check_inuse_chunk(m, q); + sbinptr b = smallbin_at(m, i); + mchunkptr p = b->bk; + unsigned int empty = (m->smallmap & (1U << i)) == 0; + if (p == b) + assert(empty); + if (!empty) { + for (; p != b; p = p->bk) { + size_t size = chunksize(p); + mchunkptr q; + /* each chunk claims to be free */ + do_check_free_chunk(m, p); + /* chunk belongs in bin */ + assert(small_index(size) == i); + assert(p->bk == b || chunksize(p->bk) == chunksize(p)); + /* chunk is followed by an inuse chunk */ + q = next_chunk(p); + if (q->head != FENCEPOST_HEAD) + do_check_inuse_chunk(m, q); + } } - } } /* Find x in a bin. Used in other check functions. */ static int bin_find(mstate m, mchunkptr x) { - size_t size = chunksize(x); - if (is_small(size)) { - bindex_t sidx = small_index(size); - sbinptr b = smallbin_at(m, sidx); - if (smallmap_is_marked(m, sidx)) { - mchunkptr p = b; - do { - if (p == x) - return 1; - } while ((p = p->fd) != b); + size_t size = chunksize(x); + if (is_small(size)) { + bindex_t sidx = small_index(size); + sbinptr b = smallbin_at(m, sidx); + if (smallmap_is_marked(m, sidx)) { + mchunkptr p = b; + do { + if (p == x) + return 1; + } while ((p = p->fd) != b); + } } - } - else { - bindex_t tidx; - compute_tree_index(size, tidx); - if (treemap_is_marked(m, tidx)) { - tchunkptr t = *treebin_at(m, tidx); - size_t sizebits = size << leftshift_for_tree_index(tidx); - while (t != 0 && chunksize(t) != size) { - t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; - sizebits <<= 1; - } - if (t != 0) { - tchunkptr u = t; - do { - if (u == (tchunkptr)x) - return 1; - } while ((u = u->fd) != t); - } + else { + bindex_t tidx; + compute_tree_index(size, tidx); + if (treemap_is_marked(m, tidx)) { + tchunkptr t = *treebin_at(m, tidx); + size_t sizebits = size << leftshift_for_tree_index(tidx); + while (t != 0 && chunksize(t) != size) { + t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; + sizebits <<= 1; + } + if (t != 0) { + tchunkptr u = t; + do { + if (u == (tchunkptr)x) + return 1; + } while ((u = u->fd) != t); + } + } } - } - return 0; + return 0; } /* Traverse each chunk and check it; return total */ static size_t traverse_and_check(mstate m) { - size_t sum = 0; - if (is_initialized(m)) { - msegmentptr s = &m->seg; - sum += m->topsize + TOP_FOOT_SIZE; - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - mchunkptr lastq = 0; - assert(pinuse(q)); - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - sum += chunksize(q); - if (is_inuse(q)) { - assert(!bin_find(m, q)); - do_check_inuse_chunk(m, q); - } - else { - assert(q == m->dv || bin_find(m, q)); - assert(lastq == 0 || is_inuse(lastq)); /* Not 2 consecutive free */ - do_check_free_chunk(m, q); + size_t sum = 0; + if (is_initialized(m)) { + msegmentptr s = &m->seg; + sum += m->topsize + TOP_FOOT_SIZE; + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + mchunkptr lastq = 0; + assert(pinuse(q)); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + sum += chunksize(q); + if (is_inuse(q)) { + assert(!bin_find(m, q)); + do_check_inuse_chunk(m, q); + } + else { + assert(q == m->dv || bin_find(m, q)); + assert(lastq == 0 || is_inuse(lastq)); /* Not 2 consecutive free */ + do_check_free_chunk(m, q); + } + lastq = q; + q = next_chunk(q); + } + s = s->next; } - lastq = q; - q = next_chunk(q); - } - s = s->next; } - } - return sum; + return sum; } + /* Check all properties of malloc_state. */ static void do_check_malloc_state(mstate m) { - bindex_t i; - size_t total; - /* check bins */ - for (i = 0; i < NSMALLBINS; ++i) - do_check_smallbin(m, i); - for (i = 0; i < NTREEBINS; ++i) - do_check_treebin(m, i); - - if (m->dvsize != 0) { /* check dv chunk */ - do_check_any_chunk(m, m->dv); - assert(m->dvsize == chunksize(m->dv)); - assert(m->dvsize >= MIN_CHUNK_SIZE); - assert(bin_find(m, m->dv) == 0); - } - - if (m->top != 0) { /* check top chunk */ - do_check_top_chunk(m, m->top); - /*assert(m->topsize == chunksize(m->top)); redundant */ - assert(m->topsize > 0); - assert(bin_find(m, m->top) == 0); - } - - total = traverse_and_check(m); - assert(total <= m->footprint); - assert(m->footprint <= m->max_footprint); + bindex_t i; + size_t total; + /* check bins */ + for (i = 0; i < NSMALLBINS; ++i) + do_check_smallbin(m, i); + for (i = 0; i < NTREEBINS; ++i) + do_check_treebin(m, i); + + if (m->dvsize != 0) { /* check dv chunk */ + do_check_any_chunk(m, m->dv); + assert(m->dvsize == chunksize(m->dv)); + assert(m->dvsize >= MIN_CHUNK_SIZE); + assert(bin_find(m, m->dv) == 0); + } + + if (m->top != 0) { /* check top chunk */ + do_check_top_chunk(m, m->top); + /*assert(m->topsize == chunksize(m->top)); redundant */ + assert(m->topsize > 0); + assert(bin_find(m, m->top) == 0); + } + + total = traverse_and_check(m); + assert(total <= m->footprint); + assert(m->footprint <= m->max_footprint); } #endif /* DEBUG */ @@ -3335,309 +3494,314 @@ static void do_check_malloc_state(mstate m) { #if !NO_MALLINFO static struct mallinfo internal_mallinfo(mstate m) { - struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - ensure_initialization(); - if (!PREACTION(m)) { - check_malloc_state(m); - if (is_initialized(m)) { - size_t nfree = SIZE_T_ONE; /* top always free */ - size_t mfree = m->topsize + TOP_FOOT_SIZE; - size_t sum = mfree; - msegmentptr s = &m->seg; - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - size_t sz = chunksize(q); - sum += sz; - if (!is_inuse(q)) { - mfree += sz; - ++nfree; - } - q = next_chunk(q); + struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + ensure_initialization(); + if (!PREACTION(m)) { + check_malloc_state(m); + if (is_initialized(m)) { + size_t nfree = SIZE_T_ONE; /* top always free */ + size_t mfree = m->topsize + TOP_FOOT_SIZE; + size_t sum = mfree; + msegmentptr s = &m->seg; + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + size_t sz = chunksize(q); + sum += sz; + if (!is_inuse(q)) { + mfree += sz; + ++nfree; + } + q = next_chunk(q); + } + s = s->next; + } + + nm.arena = sum; + nm.ordblks = nfree; + nm.hblkhd = m->footprint - sum; + nm.usmblks = m->max_footprint; + nm.uordblks = m->footprint - mfree; + nm.fordblks = mfree; + nm.keepcost = m->topsize; } - s = s->next; - } - - nm.arena = sum; - nm.ordblks = nfree; - nm.hblkhd = m->footprint - sum; - nm.usmblks = m->max_footprint; - nm.uordblks = m->footprint - mfree; - nm.fordblks = mfree; - nm.keepcost = m->topsize; + + POSTACTION(m); } - - POSTACTION(m); - } - return nm; + return nm; } #endif /* !NO_MALLINFO */ +#if !NO_MALLOC_STATS static void internal_malloc_stats(mstate m) { - ensure_initialization(); - if (!PREACTION(m)) { - size_t maxfp = 0; - size_t fp = 0; - size_t used = 0; - check_malloc_state(m); - if (is_initialized(m)) { - msegmentptr s = &m->seg; - maxfp = m->max_footprint; - fp = m->footprint; - used = fp - (m->topsize + TOP_FOOT_SIZE); - - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - if (!is_inuse(q)) - used -= chunksize(q); - q = next_chunk(q); + ensure_initialization(); + if (!PREACTION(m)) { + size_t maxfp = 0; + size_t fp = 0; + size_t used = 0; + check_malloc_state(m); + if (is_initialized(m)) { + msegmentptr s = &m->seg; + maxfp = m->max_footprint; + fp = m->footprint; + used = fp - (m->topsize + TOP_FOOT_SIZE); + + while (s != 0) { + mchunkptr q = align_as_chunk(s->base); + while (segment_holds(s, q) && + q != m->top && q->head != FENCEPOST_HEAD) { + if (!is_inuse(q)) + used -= chunksize(q); + q = next_chunk(q); + } + s = s->next; + } } - s = s->next; - } + POSTACTION(m); /* drop lock */ + fprintf(stderr, "max system bytes = %10lu\n", (unsigned long)(maxfp)); + fprintf(stderr, "system bytes = %10lu\n", (unsigned long)(fp)); + fprintf(stderr, "in use bytes = %10lu\n", (unsigned long)(used)); } - - fprintf(stderr, "max system bytes = %10lu\n", (unsigned long)(maxfp)); - fprintf(stderr, "system bytes = %10lu\n", (unsigned long)(fp)); - fprintf(stderr, "in use bytes = %10lu\n", (unsigned long)(used)); - - POSTACTION(m); - } } +#endif /* NO_MALLOC_STATS */ /* ----------------------- Operations on smallbins ----------------------- */ /* - Various forms of linking and unlinking are defined as macros. Even - the ones for trees, which are very long but have very short typical - paths. This is ugly but reduces reliance on inlining support of - compilers. -*/ + Various forms of linking and unlinking are defined as macros. Even + the ones for trees, which are very long but have very short typical + paths. This is ugly but reduces reliance on inlining support of + compilers. + */ /* Link a free chunk into a smallbin */ #define insert_small_chunk(M, P, S) {\ - bindex_t I = small_index(S);\ - mchunkptr B = smallbin_at(M, I);\ - mchunkptr F = B;\ - assert(S >= MIN_CHUNK_SIZE);\ - if (!smallmap_is_marked(M, I))\ - mark_smallmap(M, I);\ - else if (RTCHECK(ok_address(M, B->fd)))\ - F = B->fd;\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - B->fd = P;\ - F->bk = P;\ - P->fd = F;\ - P->bk = B;\ +bindex_t I = small_index(S);\ +mchunkptr B = smallbin_at(M, I);\ +mchunkptr F = B;\ +assert(S >= MIN_CHUNK_SIZE);\ +if (!smallmap_is_marked(M, I))\ +mark_smallmap(M, I);\ +else if (RTCHECK(ok_address(M, B->fd)))\ +F = B->fd;\ +else {\ +CORRUPTION_ERROR_ACTION(M);\ +}\ +B->fd = P;\ +F->bk = P;\ +P->fd = F;\ +P->bk = B;\ } /* Unlink a chunk from a smallbin */ #define unlink_small_chunk(M, P, S) {\ - mchunkptr F = P->fd;\ - mchunkptr B = P->bk;\ - bindex_t I = small_index(S);\ - assert(P != B);\ - assert(P != F);\ - assert(chunksize(P) == small_index2size(I));\ - if (F == B)\ - clear_smallmap(M, I);\ - else if (RTCHECK((F == smallbin_at(M,I) || ok_address(M, F)) &&\ - (B == smallbin_at(M,I) || ok_address(M, B)))) {\ - F->bk = B;\ - B->fd = F;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ +mchunkptr F = P->fd;\ +mchunkptr B = P->bk;\ +bindex_t I = small_index(S);\ +assert(P != B);\ +assert(P != F);\ +assert(chunksize(P) == small_index2size(I));\ +if (RTCHECK(F == smallbin_at(M,I) || (ok_address(M, F) && F->bk == P))) { \ +if (B == F) {\ +clear_smallmap(M, I);\ +}\ +else if (RTCHECK(B == smallbin_at(M,I) ||\ +(ok_address(M, B) && B->fd == P))) {\ +F->bk = B;\ +B->fd = F;\ +}\ +else {\ +CORRUPTION_ERROR_ACTION(M);\ +}\ +}\ +else {\ +CORRUPTION_ERROR_ACTION(M);\ +}\ } /* Unlink the first chunk from a smallbin */ #define unlink_first_small_chunk(M, B, P, I) {\ - mchunkptr F = P->fd;\ - assert(P != B);\ - assert(P != F);\ - assert(chunksize(P) == small_index2size(I));\ - if (B == F)\ - clear_smallmap(M, I);\ - else if (RTCHECK(ok_address(M, F))) {\ - B->fd = F;\ - F->bk = B;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ +mchunkptr F = P->fd;\ +assert(P != B);\ +assert(P != F);\ +assert(chunksize(P) == small_index2size(I));\ +if (B == F) {\ +clear_smallmap(M, I);\ +}\ +else if (RTCHECK(ok_address(M, F) && F->bk == P)) {\ +F->bk = B;\ +B->fd = F;\ +}\ +else {\ +CORRUPTION_ERROR_ACTION(M);\ +}\ } - - /* Replace dv node, binning the old one */ /* Used only when dvsize known to be small */ #define replace_dv(M, P, S) {\ - size_t DVS = M->dvsize;\ - if (DVS != 0) {\ - mchunkptr DV = M->dv;\ - assert(is_small(DVS));\ - insert_small_chunk(M, DV, DVS);\ - }\ - M->dvsize = S;\ - M->dv = P;\ +size_t DVS = M->dvsize;\ +assert(is_small(DVS));\ +if (DVS != 0) {\ +mchunkptr DV = M->dv;\ +insert_small_chunk(M, DV, DVS);\ +}\ +M->dvsize = S;\ +M->dv = P;\ } /* ------------------------- Operations on trees ------------------------- */ /* Insert chunk into tree */ #define insert_large_chunk(M, X, S) {\ - tbinptr* H;\ - bindex_t I;\ - compute_tree_index(S, I);\ - H = treebin_at(M, I);\ - X->index = I;\ - X->child[0] = X->child[1] = 0;\ - if (!treemap_is_marked(M, I)) {\ - mark_treemap(M, I);\ - *H = X;\ - X->parent = (tchunkptr)H;\ - X->fd = X->bk = X;\ - }\ - else {\ - tchunkptr T = *H;\ - size_t K = S << leftshift_for_tree_index(I);\ - for (;;) {\ - if (chunksize(T) != S) {\ - tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);\ - K <<= 1;\ - if (*C != 0)\ - T = *C;\ - else if (RTCHECK(ok_address(M, C))) {\ - *C = X;\ - X->parent = T;\ - X->fd = X->bk = X;\ - break;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - break;\ - }\ - }\ - else {\ - tchunkptr F = T->fd;\ - if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {\ - T->fd = F->bk = X;\ - X->fd = F;\ - X->bk = T;\ - X->parent = 0;\ - break;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - break;\ - }\ - }\ - }\ - }\ +tbinptr* H;\ +bindex_t I;\ +compute_tree_index(S, I);\ +H = treebin_at(M, I);\ +X->index = I;\ +X->child[0] = X->child[1] = 0;\ +if (!treemap_is_marked(M, I)) {\ +mark_treemap(M, I);\ +*H = X;\ +X->parent = (tchunkptr)H;\ +X->fd = X->bk = X;\ +}\ +else {\ +tchunkptr T = *H;\ +size_t K = S << leftshift_for_tree_index(I);\ +for (;;) {\ +if (chunksize(T) != S) {\ +tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]);\ +K <<= 1;\ +if (*C != 0)\ +T = *C;\ +else if (RTCHECK(ok_address(M, C))) {\ +*C = X;\ +X->parent = T;\ +X->fd = X->bk = X;\ +break;\ +}\ +else {\ +CORRUPTION_ERROR_ACTION(M);\ +break;\ +}\ +}\ +else {\ +tchunkptr F = T->fd;\ +if (RTCHECK(ok_address(M, T) && ok_address(M, F))) {\ +T->fd = F->bk = X;\ +X->fd = F;\ +X->bk = T;\ +X->parent = 0;\ +break;\ +}\ +else {\ +CORRUPTION_ERROR_ACTION(M);\ +break;\ +}\ +}\ +}\ +}\ } /* - Unlink steps: - - 1. If x is a chained node, unlink it from its same-sized fd/bk links - and choose its bk node as its replacement. - 2. If x was the last node of its size, but not a leaf node, it must - be replaced with a leaf node (not merely one with an open left or - right), to make sure that lefts and rights of descendents - correspond properly to bit masks. We use the rightmost descendent - of x. We could use any other leaf, but this is easy to locate and - tends to counteract removal of leftmosts elsewhere, and so keeps - paths shorter than minimally guaranteed. This doesn't loop much - because on average a node in a tree is near the bottom. - 3. If x is the base of a chain (i.e., has parent links) relink - x's parent and children to x's replacement (or null if none). -*/ - -#define unlink_large_chunk(M, X) {\ - tchunkptr XP = X->parent;\ - tchunkptr R;\ - if (X->bk != X) {\ - tchunkptr F = X->fd;\ - R = X->bk;\ - if (RTCHECK(ok_address(M, F))) {\ - F->bk = R;\ - R->fd = F;\ - }\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ - else {\ - tchunkptr* RP;\ - if (((R = *(RP = &(X->child[1]))) != 0) ||\ - ((R = *(RP = &(X->child[0]))) != 0)) {\ - tchunkptr* CP;\ - while ((*(CP = &(R->child[1])) != 0) ||\ - (*(CP = &(R->child[0])) != 0)) {\ - R = *(RP = CP);\ - }\ - if (RTCHECK(ok_address(M, RP)))\ - *RP = 0;\ - else {\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ - }\ - if (XP != 0) {\ - tbinptr* H = treebin_at(M, X->index);\ - if (X == *H) {\ - if ((*H = R) == 0) \ - clear_treemap(M, X->index);\ - }\ - else if (RTCHECK(ok_address(M, XP))) {\ - if (XP->child[0] == X) \ - XP->child[0] = R;\ - else \ - XP->child[1] = R;\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - if (R != 0) {\ - if (RTCHECK(ok_address(M, R))) {\ - tchunkptr C0, C1;\ - R->parent = XP;\ - if ((C0 = X->child[0]) != 0) {\ - if (RTCHECK(ok_address(M, C0))) {\ - R->child[0] = C0;\ - C0->parent = R;\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - if ((C1 = X->child[1]) != 0) {\ - if (RTCHECK(ok_address(M, C1))) {\ - R->child[1] = C1;\ - C1->parent = R;\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ - else\ - CORRUPTION_ERROR_ACTION(M);\ - }\ - }\ + Unlink steps: + + 1. If x is a chained node, unlink it from its same-sized fd/bk links + and choose its bk node as its replacement. + 2. If x was the last node of its size, but not a leaf node, it must + be replaced with a leaf node (not merely one with an open left or + right), to make sure that lefts and rights of descendents + correspond properly to bit masks. We use the rightmost descendent + of x. We could use any other leaf, but this is easy to locate and + tends to counteract removal of leftmosts elsewhere, and so keeps + paths shorter than minimally guaranteed. This doesn't loop much + because on average a node in a tree is near the bottom. + 3. If x is the base of a chain (i.e., has parent links) relink + x's parent and children to x's replacement (or null if none). + */ + +#define unlink_large_chunk(M, X) { \ +tchunkptr XP = X->parent; \ +tchunkptr R; \ +if (X->bk != X) { \ +tchunkptr F = X->fd; \ +R = X->bk; \ +if (RTCHECK(ok_address(M, F) && F->bk == X && R->fd == X)) { \ +F->bk = R; \ +R->fd = F; \ +} \ +else { \ +CORRUPTION_ERROR_ACTION(M); \ +} \ +} \ +else { \ +tchunkptr* RP; \ +if (((R = *(RP = &(X->child[1]))) != 0) || \ +((R = *(RP = &(X->child[0]))) != 0)) { \ +tchunkptr* CP; \ +while ((*(CP = &(R->child[1])) != 0) || \ +(*(CP = &(R->child[0])) != 0)) { \ +R = *(RP = CP); \ +} \ +if (RTCHECK(ok_address(M, RP))) \ +*RP = 0; \ +else { \ +CORRUPTION_ERROR_ACTION(M); \ +} \ +} \ +} \ +if (XP != 0) { \ +tbinptr* H = treebin_at(M, X->index); \ +if (X == *H) { \ +if ((*H = R) == 0) \ +clear_treemap(M, X->index); \ +} \ +else if (RTCHECK(ok_address(M, XP))) { \ +if (XP->child[0] == X) \ +XP->child[0] = R; \ +else \ +XP->child[1] = R; \ +} \ +else \ +CORRUPTION_ERROR_ACTION(M); \ +if (R != 0) { \ +if (RTCHECK(ok_address(M, R))) { \ +tchunkptr C0, C1; \ +R->parent = XP; \ +if ((C0 = X->child[0]) != 0) { \ +if (RTCHECK(ok_address(M, C0))) { \ +R->child[0] = C0; \ +C0->parent = R; \ +} \ +else \ +CORRUPTION_ERROR_ACTION(M); \ +} \ +if ((C1 = X->child[1]) != 0) { \ +if (RTCHECK(ok_address(M, C1))) { \ +R->child[1] = C1; \ +C1->parent = R; \ +} \ +else \ +CORRUPTION_ERROR_ACTION(M); \ +} \ +} \ +else \ +CORRUPTION_ERROR_ACTION(M); \ +} \ +} \ } /* Relays to large vs small bin operations */ -#define insert_chunk(M, P, S)\ - if (is_small(S)) insert_small_chunk(M, P, S)\ - else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); } +#define insert_chunk(M, P, S) \ +if (is_small(S)) insert_small_chunk(M, P, S) \ +else { tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); } -#define unlink_chunk(M, P, S)\ - if (is_small(S)) unlink_small_chunk(M, P, S)\ - else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); } +#define unlink_chunk(M, P, S) \ +if (is_small(S)) unlink_small_chunk(M, P, S) \ +else { tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); } /* Relays to internal calls to malloc/free from realloc, memalign etc */ @@ -3648,9 +3812,9 @@ static void internal_malloc_stats(mstate m) { #else /* ONLY_MSPACES */ #if MSPACES #define internal_malloc(m, b)\ - (m == gm)? dlmalloc(b) : mspace_malloc(m, b) +((m == gm)? dlmalloc(b) : mspace_malloc(m, b)) #define internal_free(m, mem)\ - if (m == gm) dlfree(mem); else mspace_free(m,mem); +if (m == gm) dlfree(mem); else mspace_free(m,mem); #else /* MSPACES */ #define internal_malloc(m, b) dlmalloc(b) #define internal_free(m, mem) dlfree(mem) @@ -3660,1759 +3824,2159 @@ static void internal_malloc_stats(mstate m) { /* ----------------------- Direct-mmapping chunks ----------------------- */ /* - Directly mmapped chunks are set up with an offset to the start of - the mmapped region stored in the prev_foot field of the chunk. This - allows reconstruction of the required argument to MUNMAP when freed, - and also allows adjustment of the returned chunk to meet alignment - requirements (especially in memalign). -*/ + Directly mmapped chunks are set up with an offset to the start of + the mmapped region stored in the prev_foot field of the chunk. This + allows reconstruction of the required argument to MUNMAP when freed, + and also allows adjustment of the returned chunk to meet alignment + requirements (especially in memalign). + */ /* Malloc using mmap */ static void* mmap_alloc(mstate m, size_t nb) { - size_t mmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - if (mmsize > nb) { /* Check for wrap around 0 */ - char* mm = (char*)(CALL_DIRECT_MMAP(mmsize)); - if (mm != CMFAIL) { - size_t offset = align_offset(chunk2mem(mm)); - size_t psize = mmsize - offset - MMAP_FOOT_PAD; - mchunkptr p = (mchunkptr)(mm + offset); - p->prev_foot = offset; - p->head = psize; - mark_inuse_foot(m, p, psize); - chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; - chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; - - if (m->least_addr == 0 || mm < m->least_addr) - m->least_addr = mm; - if ((m->footprint += mmsize) > m->max_footprint) - m->max_footprint = m->footprint; - assert(is_aligned(chunk2mem(p))); - check_mmapped_chunk(m, p); - return chunk2mem(p); + size_t mmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); + if (m->footprint_limit != 0) { + size_t fp = m->footprint + mmsize; + if (fp <= m->footprint || fp > m->footprint_limit) + return 0; + } + if (mmsize > nb) { /* Check for wrap around 0 */ + char* mm = (char*)(CALL_DIRECT_MMAP(mmsize)); + if (mm != CMFAIL) { + size_t offset = align_offset(chunk2mem(mm)); + size_t psize = mmsize - offset - MMAP_FOOT_PAD; + mchunkptr p = (mchunkptr)(mm + offset); + p->prev_foot = offset; + p->head = psize; + mark_inuse_foot(m, p, psize); + chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; + chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; + + if (m->least_addr == 0 || mm < m->least_addr) + m->least_addr = mm; + if ((m->footprint += mmsize) > m->max_footprint) + m->max_footprint = m->footprint; + assert(is_aligned(chunk2mem(p))); + check_mmapped_chunk(m, p); + return chunk2mem(p); + } } - } - return 0; + return 0; } /* Realloc using mmap */ -static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb) { - size_t oldsize = chunksize(oldp); - if (is_small(nb)) /* Can't shrink mmap regions below small size */ - return 0; - /* Keep old chunk if big enough but not too big */ - if (oldsize >= nb + SIZE_T_SIZE && - (oldsize - nb) <= (mparams.granularity << 1)) - return oldp; - else { - size_t offset = oldp->prev_foot; - size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; - size_t newmmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - char* cp = (char*)CALL_MREMAP((char*)oldp - offset, - oldmmsize, newmmsize, 1); - if (cp != CMFAIL) { - mchunkptr newp = (mchunkptr)(cp + offset); - size_t psize = newmmsize - offset - MMAP_FOOT_PAD; - newp->head = psize; - mark_inuse_foot(m, newp, psize); - chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; - chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; - - if (cp < m->least_addr) - m->least_addr = cp; - if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) - m->max_footprint = m->footprint; - check_mmapped_chunk(m, newp); - return newp; +static mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb, int flags) { + size_t oldsize = chunksize(oldp); + (void)flags; /* placate people compiling -Wunused */ + if (is_small(nb)) /* Can't shrink mmap regions below small size */ + return 0; + /* Keep old chunk if big enough but not too big */ + if (oldsize >= nb + SIZE_T_SIZE && + (oldsize - nb) <= (mparams.granularity << 1)) + return oldp; + else { + size_t offset = oldp->prev_foot; + size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; + size_t newmmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); + char* cp = (char*)CALL_MREMAP((char*)oldp - offset, + oldmmsize, newmmsize, flags); + if (cp != CMFAIL) { + mchunkptr newp = (mchunkptr)(cp + offset); + size_t psize = newmmsize - offset - MMAP_FOOT_PAD; + newp->head = psize; + mark_inuse_foot(m, newp, psize); + chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; + chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; + + if (cp < m->least_addr) + m->least_addr = cp; + if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) + m->max_footprint = m->footprint; + check_mmapped_chunk(m, newp); + return newp; + } } - } - return 0; + return 0; } + /* -------------------------- mspace management -------------------------- */ /* Initialize top chunk and its size */ static void init_top(mstate m, mchunkptr p, size_t psize) { - /* Ensure alignment */ - size_t offset = align_offset(chunk2mem(p)); - p = (mchunkptr)((char*)p + offset); - psize -= offset; - - m->top = p; - m->topsize = psize; - p->head = psize | PINUSE_BIT; - /* set size of fake trailing chunk holding overhead space only once */ - chunk_plus_offset(p, psize)->head = TOP_FOOT_SIZE; - m->trim_check = mparams.trim_threshold; /* reset on each update */ + /* Ensure alignment */ + size_t offset = align_offset(chunk2mem(p)); + p = (mchunkptr)((char*)p + offset); + psize -= offset; + + m->top = p; + m->topsize = psize; + p->head = psize | PINUSE_BIT; + /* set size of fake trailing chunk holding overhead space only once */ + chunk_plus_offset(p, psize)->head = TOP_FOOT_SIZE; + m->trim_check = mparams.trim_threshold; /* reset on each update */ } /* Initialize bins for a new mstate that is otherwise zeroed out */ static void init_bins(mstate m) { - /* Establish circular links for smallbins */ - bindex_t i; - for (i = 0; i < NSMALLBINS; ++i) { - sbinptr bin = smallbin_at(m,i); - bin->fd = bin->bk = bin; - } + /* Establish circular links for smallbins */ + bindex_t i; + for (i = 0; i < NSMALLBINS; ++i) { + sbinptr bin = smallbin_at(m,i); + bin->fd = bin->bk = bin; + } } #if PROCEED_ON_ERROR /* default corruption action */ static void reset_on_error(mstate m) { - int i; - ++malloc_corruption_error_count; - /* Reinitialize fields to forget about all memory */ - m->smallbins = m->treebins = 0; - m->dvsize = m->topsize = 0; - m->seg.base = 0; - m->seg.size = 0; - m->seg.next = 0; - m->top = m->dv = 0; - for (i = 0; i < NTREEBINS; ++i) - *treebin_at(m, i) = 0; - init_bins(m); + int i; + ++malloc_corruption_error_count; + /* Reinitialize fields to forget about all memory */ + m->smallmap = m->treemap = 0; + m->dvsize = m->topsize = 0; + m->seg.base = 0; + m->seg.size = 0; + m->seg.next = 0; + m->top = m->dv = 0; + for (i = 0; i < NTREEBINS; ++i) + *treebin_at(m, i) = 0; + init_bins(m); } #endif /* PROCEED_ON_ERROR */ /* Allocate chunk and prepend remainder with chunk in successor base. */ static void* prepend_alloc(mstate m, char* newbase, char* oldbase, size_t nb) { - mchunkptr p = align_as_chunk(newbase); - mchunkptr oldfirst = align_as_chunk(oldbase); - size_t psize = (char*)oldfirst - (char*)p; - mchunkptr q = chunk_plus_offset(p, nb); - size_t qsize = psize - nb; - set_size_and_pinuse_of_inuse_chunk(m, p, nb); - - assert((char*)oldfirst > (char*)q); - assert(pinuse(oldfirst)); - assert(qsize >= MIN_CHUNK_SIZE); - - /* consolidate remainder with first chunk of old base */ - if (oldfirst == m->top) { - size_t tsize = m->topsize += qsize; - m->top = q; - q->head = tsize | PINUSE_BIT; - check_top_chunk(m, q); - } - else if (oldfirst == m->dv) { - size_t dsize = m->dvsize += qsize; - m->dv = q; - set_size_and_pinuse_of_free_chunk(q, dsize); - } - else { - if (!is_inuse(oldfirst)) { - size_t nsize = chunksize(oldfirst); - unlink_chunk(m, oldfirst, nsize); - oldfirst = chunk_plus_offset(oldfirst, nsize); - qsize += nsize; + mchunkptr p = align_as_chunk(newbase); + mchunkptr oldfirst = align_as_chunk(oldbase); + size_t psize = (char*)oldfirst - (char*)p; + mchunkptr q = chunk_plus_offset(p, nb); + size_t qsize = psize - nb; + set_size_and_pinuse_of_inuse_chunk(m, p, nb); + + assert((char*)oldfirst > (char*)q); + assert(pinuse(oldfirst)); + assert(qsize >= MIN_CHUNK_SIZE); + + /* consolidate remainder with first chunk of old base */ + if (oldfirst == m->top) { + size_t tsize = m->topsize += qsize; + m->top = q; + q->head = tsize | PINUSE_BIT; + check_top_chunk(m, q); } - set_free_with_pinuse(q, qsize, oldfirst); - insert_chunk(m, q, qsize); - check_free_chunk(m, q); - } - - check_malloced_chunk(m, chunk2mem(p), nb); - return chunk2mem(p); + else if (oldfirst == m->dv) { + size_t dsize = m->dvsize += qsize; + m->dv = q; + set_size_and_pinuse_of_free_chunk(q, dsize); + } + else { + if (!is_inuse(oldfirst)) { + size_t nsize = chunksize(oldfirst); + unlink_chunk(m, oldfirst, nsize); + oldfirst = chunk_plus_offset(oldfirst, nsize); + qsize += nsize; + } + set_free_with_pinuse(q, qsize, oldfirst); + insert_chunk(m, q, qsize); + check_free_chunk(m, q); + } + + check_malloced_chunk(m, chunk2mem(p), nb); + return chunk2mem(p); } /* Add a segment to hold a new noncontiguous region */ static void add_segment(mstate m, char* tbase, size_t tsize, flag_t mmapped) { - /* Determine locations and sizes of segment, fenceposts, old top */ - char* old_top = (char*)m->top; - msegmentptr oldsp = segment_holding(m, old_top); - char* old_end = oldsp->base + oldsp->size; - size_t ssize = pad_request(sizeof(struct malloc_segment)); - char* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - size_t offset = align_offset(chunk2mem(rawsp)); - char* asp = rawsp + offset; - char* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; - mchunkptr sp = (mchunkptr)csp; - msegmentptr ss = (msegmentptr)(chunk2mem(sp)); - mchunkptr tnext = chunk_plus_offset(sp, ssize); - mchunkptr p = tnext; - int nfences = 0; - - /* reset top to new space */ - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - - /* Set up segment record */ - assert(is_aligned(ss)); - set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); - *ss = m->seg; /* Push current record */ - m->seg.base = tbase; - m->seg.size = tsize; - m->seg.sflags = mmapped; - m->seg.next = ss; - - /* Insert trailing fenceposts */ - for (;;) { - mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); - p->head = FENCEPOST_HEAD; - ++nfences; - if ((char*)(&(nextp->head)) < old_end) - p = nextp; - else - break; - } - assert(nfences >= 2); - - /* Insert the rest of old top into a bin as an ordinary free chunk */ - if (csp != old_top) { - mchunkptr q = (mchunkptr)old_top; - size_t psize = csp - old_top; - mchunkptr tn = chunk_plus_offset(q, psize); - set_free_with_pinuse(q, psize, tn); - insert_chunk(m, q, psize); - } - - check_top_chunk(m, m->top); + /* Determine locations and sizes of segment, fenceposts, old top */ + char* old_top = (char*)m->top; + msegmentptr oldsp = segment_holding(m, old_top); + char* old_end = oldsp->base + oldsp->size; + size_t ssize = pad_request(sizeof(struct malloc_segment)); + char* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); + size_t offset = align_offset(chunk2mem(rawsp)); + char* asp = rawsp + offset; + char* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; + mchunkptr sp = (mchunkptr)csp; + msegmentptr ss = (msegmentptr)(chunk2mem(sp)); + mchunkptr tnext = chunk_plus_offset(sp, ssize); + mchunkptr p = tnext; + int nfences = 0; + + /* reset top to new space */ + init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); + + /* Set up segment record */ + assert(is_aligned(ss)); + set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); + *ss = m->seg; /* Push current record */ + m->seg.base = tbase; + m->seg.size = tsize; + m->seg.sflags = mmapped; + m->seg.next = ss; + + /* Insert trailing fenceposts */ + for (;;) { + mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); + p->head = FENCEPOST_HEAD; + ++nfences; + if ((char*)(&(nextp->head)) < old_end) + p = nextp; + else + break; + } + assert(nfences >= 2); + + /* Insert the rest of old top into a bin as an ordinary free chunk */ + if (csp != old_top) { + mchunkptr q = (mchunkptr)old_top; + size_t psize = csp - old_top; + mchunkptr tn = chunk_plus_offset(q, psize); + set_free_with_pinuse(q, psize, tn); + insert_chunk(m, q, psize); + } + + check_top_chunk(m, m->top); } /* -------------------------- System allocation -------------------------- */ /* Get memory from system using MORECORE or MMAP */ static void* sys_alloc(mstate m, size_t nb) { - char* tbase = CMFAIL; - size_t tsize = 0; - flag_t mmap_flag = 0; - - ensure_initialization(); - - /* Directly map large chunks, but only if already initialized */ - if (use_mmap(m) && nb >= mparams.mmap_threshold && m->topsize != 0) { - void* mem = mmap_alloc(m, nb); - if (mem != 0) - return mem; - } - - /* - Try getting memory in any of three ways (in most-preferred to - least-preferred order): - 1. A call to MORECORE that can normally contiguously extend memory. - (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or - or main space is mmapped or a previous contiguous call failed) - 2. A call to MMAP new space (disabled if not HAVE_MMAP). - Note that under the default settings, if MORECORE is unable to - fulfill a request, and HAVE_MMAP is true, then mmap is - used as a noncontiguous system allocator. This is a useful backup - strategy for systems with holes in address spaces -- in this case - sbrk cannot contiguously expand the heap, but mmap may be able to - find space. - 3. A call to MORECORE that cannot usually contiguously extend memory. - (disabled if not HAVE_MORECORE) - - In all cases, we need to request enough bytes from system to ensure - we can malloc nb bytes upon success, so pad with enough space for - top_foot, plus alignment-pad to make sure we don't lose bytes if - not on boundary, and round this up to a granularity unit. - */ - - if (MORECORE_CONTIGUOUS && !use_noncontiguous(m)) { - char* br = CMFAIL; - msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (char*)m->top); - size_t asize = 0; - ACQUIRE_MALLOC_GLOBAL_LOCK(); - - if (ss == 0) { /* First time through or recovery */ - char* base = (char*)CALL_MORECORE(0); - if (base != CMFAIL) { - asize = granularity_align(nb + SYS_ALLOC_PADDING); - /* Adjust to end on a page boundary */ - if (!is_page_aligned(base)) - asize += (page_align((size_t)base) - (size_t)base); - /* Can't call MORECORE if size is negative when treated as signed */ - if (asize < HALF_MAX_SIZE_T && - (br = (char*)(CALL_MORECORE(asize))) == base) { - tbase = base; - tsize = asize; - } - } + char* tbase = CMFAIL; + size_t tsize = 0; + flag_t mmap_flag = 0; + size_t asize; /* allocation size */ + + ensure_initialization(); + + /* Directly map large chunks, but only if already initialized */ + if (use_mmap(m) && nb >= mparams.mmap_threshold && m->topsize != 0) { + void* mem = mmap_alloc(m, nb); + if (mem != 0) + return mem; } - else { - /* Subtract out existing available top space from MORECORE request. */ - asize = granularity_align(nb - m->topsize + SYS_ALLOC_PADDING); - /* Use mem here only if it did continuously extend old space */ - if (asize < HALF_MAX_SIZE_T && - (br = (char*)(CALL_MORECORE(asize))) == ss->base+ss->size) { - tbase = br; - tsize = asize; - } + + asize = granularity_align(nb + SYS_ALLOC_PADDING); + if (asize <= nb) + return 0; /* wraparound */ + if (m->footprint_limit != 0) { + size_t fp = m->footprint + asize; + if (fp <= m->footprint || fp > m->footprint_limit) + return 0; } - - if (tbase == CMFAIL) { /* Cope with partial failure */ - if (br != CMFAIL) { /* Try to use/extend the space we did get */ - if (asize < HALF_MAX_SIZE_T && - asize < nb + SYS_ALLOC_PADDING) { - size_t esize = granularity_align(nb + SYS_ALLOC_PADDING - asize); - if (esize < HALF_MAX_SIZE_T) { - char* end = (char*)CALL_MORECORE(esize); - if (end != CMFAIL) - asize += esize; - else { /* Can't use; try to release */ - (void) CALL_MORECORE(-asize); - br = CMFAIL; + + /* + Try getting memory in any of three ways (in most-preferred to + least-preferred order): + 1. A call to MORECORE that can normally contiguously extend memory. + (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or + or main space is mmapped or a previous contiguous call failed) + 2. A call to MMAP new space (disabled if not HAVE_MMAP). + Note that under the default settings, if MORECORE is unable to + fulfill a request, and HAVE_MMAP is true, then mmap is + used as a noncontiguous system allocator. This is a useful backup + strategy for systems with holes in address spaces -- in this case + sbrk cannot contiguously expand the heap, but mmap may be able to + find space. + 3. A call to MORECORE that cannot usually contiguously extend memory. + (disabled if not HAVE_MORECORE) + + In all cases, we need to request enough bytes from system to ensure + we can malloc nb bytes upon success, so pad with enough space for + top_foot, plus alignment-pad to make sure we don't lose bytes if + not on boundary, and round this up to a granularity unit. + */ + + if (MORECORE_CONTIGUOUS && !use_noncontiguous(m)) { + char* br = CMFAIL; + size_t ssize = asize; /* sbrk call size */ + msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (char*)m->top); + ACQUIRE_MALLOC_GLOBAL_LOCK(); + + if (ss == 0) { /* First time through or recovery */ + char* base = (char*)CALL_MORECORE(0); + if (base != CMFAIL) { + size_t fp; + /* Adjust to end on a page boundary */ + if (!is_page_aligned(base)) + ssize += (page_align((size_t)base) - (size_t)base); + fp = m->footprint + ssize; /* recheck limits */ + if (ssize > nb && ssize < HALF_MAX_SIZE_T && + (m->footprint_limit == 0 || + (fp > m->footprint && fp <= m->footprint_limit)) && + (br = (char*)(CALL_MORECORE(ssize))) == base) { + tbase = base; + tsize = ssize; + } + } + } + else { + /* Subtract out existing available top space from MORECORE request. */ + ssize = granularity_align(nb - m->topsize + SYS_ALLOC_PADDING); + /* Use mem here only if it did continuously extend old space */ + if (ssize < HALF_MAX_SIZE_T && + (br = (char*)(CALL_MORECORE(ssize))) == ss->base+ss->size) { + tbase = br; + tsize = ssize; + } + } + + if (tbase == CMFAIL) { /* Cope with partial failure */ + if (br != CMFAIL) { /* Try to use/extend the space we did get */ + if (ssize < HALF_MAX_SIZE_T && + ssize < nb + SYS_ALLOC_PADDING) { + size_t esize = granularity_align(nb + SYS_ALLOC_PADDING - ssize); + if (esize < HALF_MAX_SIZE_T) { + char* end = (char*)CALL_MORECORE(esize); + if (end != CMFAIL) + ssize += esize; + else { /* Can't use; try to release */ + (void) CALL_MORECORE(-ssize); + br = CMFAIL; + } + } + } } - } + if (br != CMFAIL) { /* Use the space we did get */ + tbase = br; + tsize = ssize; + } + else + disable_contiguous(m); /* Don't try contiguous path in the future */ } - } - if (br != CMFAIL) { /* Use the space we did get */ - tbase = br; - tsize = asize; - } - else - disable_contiguous(m); /* Don't try contiguous path in the future */ + + RELEASE_MALLOC_GLOBAL_LOCK(); } - - RELEASE_MALLOC_GLOBAL_LOCK(); - } - - if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ - size_t rsize = granularity_align(nb + SYS_ALLOC_PADDING); - if (rsize > nb) { /* Fail if wraps around zero */ - char* mp = (char*)(CALL_MMAP(rsize)); - if (mp != CMFAIL) { - tbase = mp; - tsize = rsize; - mmap_flag = USE_MMAP_BIT; - } + + if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ + char* mp = (char*)(CALL_MMAP(asize)); + if (mp != CMFAIL) { + tbase = mp; + tsize = asize; + mmap_flag = USE_MMAP_BIT; + } } - } - - if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ - size_t asize = granularity_align(nb + SYS_ALLOC_PADDING); - if (asize < HALF_MAX_SIZE_T) { - char* br = CMFAIL; - char* end = CMFAIL; - ACQUIRE_MALLOC_GLOBAL_LOCK(); - br = (char*)(CALL_MORECORE(asize)); - end = (char*)(CALL_MORECORE(0)); - RELEASE_MALLOC_GLOBAL_LOCK(); - if (br != CMFAIL && end != CMFAIL && br < end) { - size_t ssize = end - br; - if (ssize > nb + TOP_FOOT_SIZE) { - tbase = br; - tsize = ssize; + + if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ + if (asize < HALF_MAX_SIZE_T) { + char* br = CMFAIL; + char* end = CMFAIL; + ACQUIRE_MALLOC_GLOBAL_LOCK(); + br = (char*)(CALL_MORECORE(asize)); + end = (char*)(CALL_MORECORE(0)); + RELEASE_MALLOC_GLOBAL_LOCK(); + if (br != CMFAIL && end != CMFAIL && br < end) { + size_t ssize = end - br; + if (ssize > nb + TOP_FOOT_SIZE) { + tbase = br; + tsize = ssize; + } + } } - } } - } - - if (tbase != CMFAIL) { - - if ((m->footprint += tsize) > m->max_footprint) - m->max_footprint = m->footprint; - - if (!is_initialized(m)) { /* first-time initialization */ - if (m->least_addr == 0 || tbase < m->least_addr) - m->least_addr = tbase; - m->seg.base = tbase; - m->seg.size = tsize; - m->seg.sflags = mmap_flag; - m->magic = mparams.magic; - m->release_checks = MAX_RELEASE_CHECK_RATE; - init_bins(m); + + if (tbase != CMFAIL) { + + if ((m->footprint += tsize) > m->max_footprint) + m->max_footprint = m->footprint; + + if (!is_initialized(m)) { /* first-time initialization */ + if (m->least_addr == 0 || tbase < m->least_addr) + m->least_addr = tbase; + m->seg.base = tbase; + m->seg.size = tsize; + m->seg.sflags = mmap_flag; + m->magic = mparams.magic; + m->release_checks = MAX_RELEASE_CHECK_RATE; + init_bins(m); #if !ONLY_MSPACES - if (is_global(m)) - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - else + if (is_global(m)) + init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); + else #endif - { - /* Offset top by embedded malloc_state */ - mchunkptr mn = next_chunk(mem2chunk(m)); - init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); - } - } - - else { - /* Try to merge with an existing segment */ - msegmentptr sp = &m->seg; - /* Only consider most recent segment if traversal suppressed */ - while (sp != 0 && tbase != sp->base + sp->size) - sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; - if (sp != 0 && - !is_extern_segment(sp) && - (sp->sflags & USE_MMAP_BIT) == mmap_flag && - segment_holds(sp, m->top)) { /* append */ - sp->size += tsize; - init_top(m, m->top, m->topsize + tsize); - } - else { - if (tbase < m->least_addr) - m->least_addr = tbase; - sp = &m->seg; - while (sp != 0 && sp->base != tbase + tsize) - sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; - if (sp != 0 && - !is_extern_segment(sp) && - (sp->sflags & USE_MMAP_BIT) == mmap_flag) { - char* oldbase = sp->base; - sp->base = tbase; - sp->size += tsize; - return prepend_alloc(m, tbase, oldbase, nb); + { + /* Offset top by embedded malloc_state */ + mchunkptr mn = next_chunk(mem2chunk(m)); + init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) -TOP_FOOT_SIZE); + } + } + + else { + /* Try to merge with an existing segment */ + msegmentptr sp = &m->seg; + /* Only consider most recent segment if traversal suppressed */ + while (sp != 0 && tbase != sp->base + sp->size) + sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; + if (sp != 0 && + !is_extern_segment(sp) && + (sp->sflags & USE_MMAP_BIT) == mmap_flag && + segment_holds(sp, m->top)) { /* append */ + sp->size += tsize; + init_top(m, m->top, m->topsize + tsize); + } + else { + if (tbase < m->least_addr) + m->least_addr = tbase; + sp = &m->seg; + while (sp != 0 && sp->base != tbase + tsize) + sp = (NO_SEGMENT_TRAVERSAL) ? 0 : sp->next; + if (sp != 0 && + !is_extern_segment(sp) && + (sp->sflags & USE_MMAP_BIT) == mmap_flag) { + char* oldbase = sp->base; + sp->base = tbase; + sp->size += tsize; + return prepend_alloc(m, tbase, oldbase, nb); + } + else + add_segment(m, tbase, tsize, mmap_flag); + } + } + + if (nb < m->topsize) { /* Allocate from new or extended top space */ + size_t rsize = m->topsize -= nb; + mchunkptr p = m->top; + mchunkptr r = m->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(m, p, nb); + check_top_chunk(m, m->top); + check_malloced_chunk(m, chunk2mem(p), nb); + return chunk2mem(p); } - else - add_segment(m, tbase, tsize, mmap_flag); - } - } - - if (nb < m->topsize) { /* Allocate from new or extended top space */ - size_t rsize = m->topsize -= nb; - mchunkptr p = m->top; - mchunkptr r = m->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(m, p, nb); - check_top_chunk(m, m->top); - check_malloced_chunk(m, chunk2mem(p), nb); - return chunk2mem(p); } - } - - MALLOC_FAILURE_ACTION; - return 0; + + MALLOC_FAILURE_ACTION; + return 0; } /* ----------------------- system deallocation -------------------------- */ /* Unmap and unlink any mmapped segments that don't contain used chunks */ static size_t release_unused_segments(mstate m) { - size_t released = 0; - int nsegs = 0; - msegmentptr pred = &m->seg; - msegmentptr sp = pred->next; - while (sp != 0) { - char* base = sp->base; - size_t size = sp->size; - msegmentptr next = sp->next; - ++nsegs; - if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { - mchunkptr p = align_as_chunk(base); - size_t psize = chunksize(p); - /* Can unmap if first chunk holds entire segment and not pinned */ - if (!is_inuse(p) && (char*)p + psize >= base + size - TOP_FOOT_SIZE) { - tchunkptr tp = (tchunkptr)p; - assert(segment_holds(sp, (char*)sp)); - if (p == m->dv) { - m->dv = 0; - m->dvsize = 0; - } - else { - unlink_large_chunk(m, tp); - } - if (CALL_MUNMAP(base, size) == 0) { - released += size; - m->footprint -= size; - /* unlink obsoleted record */ - sp = pred; - sp->next = next; - } - else { /* back out if cannot unmap */ - insert_large_chunk(m, tp, psize); + size_t released = 0; + int nsegs = 0; + msegmentptr pred = &m->seg; + msegmentptr sp = pred->next; + while (sp != 0) { + char* base = sp->base; + size_t size = sp->size; + msegmentptr next = sp->next; + ++nsegs; + if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { + mchunkptr p = align_as_chunk(base); + size_t psize = chunksize(p); + /* Can unmap if first chunk holds entire segment and not pinned */ + if (!is_inuse(p) && (char*)p + psize >= base + size - TOP_FOOT_SIZE) { + tchunkptr tp = (tchunkptr)p; + assert(segment_holds(sp, (char*)sp)); + if (p == m->dv) { + m->dv = 0; + m->dvsize = 0; + } + else { + unlink_large_chunk(m, tp); + } + if (CALL_MUNMAP(base, size) == 0) { + released += size; + m->footprint -= size; + /* unlink obsoleted record */ + sp = pred; + sp->next = next; + } + else { /* back out if cannot unmap */ + insert_large_chunk(m, tp, psize); + } + } } - } + if (NO_SEGMENT_TRAVERSAL) /* scan only first segment */ + break; + pred = sp; + sp = next; } - if (NO_SEGMENT_TRAVERSAL) /* scan only first segment */ - break; - pred = sp; - sp = next; - } - /* Reset check counter */ - m->release_checks = ((nsegs > MAX_RELEASE_CHECK_RATE)? - nsegs : MAX_RELEASE_CHECK_RATE); - return released; + /* Reset check counter */ + m->release_checks = (((size_t) nsegs > (size_t) MAX_RELEASE_CHECK_RATE)? + (size_t) nsegs : (size_t) MAX_RELEASE_CHECK_RATE); + return released; } static int sys_trim(mstate m, size_t pad) { - size_t released = 0; - ensure_initialization(); - if (pad < MAX_REQUEST && is_initialized(m)) { - pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ - - if (m->topsize > pad) { - /* Shrink top space in granularity-size units, keeping at least one */ - size_t unit = mparams.granularity; - size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - - SIZE_T_ONE) * unit; - msegmentptr sp = segment_holding(m, (char*)m->top); - - if (!is_extern_segment(sp)) { - if (is_mmapped_segment(sp)) { - if (HAVE_MMAP && - sp->size >= extra && - !has_segment_link(m, sp)) { /* can't shrink if pinned */ - size_t newsize = sp->size - extra; - (void)newsize; // XXX EMSCRIPTEN - /* Prefer mremap, fall back to munmap */ - if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || - (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { - released = extra; + size_t released = 0; + ensure_initialization(); + if (pad < MAX_REQUEST && is_initialized(m)) { + pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ + + if (m->topsize > pad) { + /* Shrink top space in granularity-size units, keeping at least one */ + size_t unit = mparams.granularity; + size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - + SIZE_T_ONE) * unit; + msegmentptr sp = segment_holding(m, (char*)m->top); + + if (!is_extern_segment(sp)) { + if (is_mmapped_segment(sp)) { + if (HAVE_MMAP && + sp->size >= extra && + !has_segment_link(m, sp)) { /* can't shrink if pinned */ + size_t newsize = sp->size - extra; + (void)newsize; /* placate people compiling -Wunused-variable */ + /* Prefer mremap, fall back to munmap */ + if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || + (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { + released = extra; + } + } + } + else if (HAVE_MORECORE) { + if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ + extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; + ACQUIRE_MALLOC_GLOBAL_LOCK(); + { + /* Make sure end of memory is where we last set it. */ + char* old_br = (char*)(CALL_MORECORE(0)); + if (old_br == sp->base + sp->size) { + char* rel_br = (char*)(CALL_MORECORE(-extra)); + char* new_br = (char*)(CALL_MORECORE(0)); + if (rel_br != CMFAIL && new_br < old_br) + released = old_br - new_br; + } + } + RELEASE_MALLOC_GLOBAL_LOCK(); + } } - } - } - else if (HAVE_MORECORE) { - if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ - extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; - ACQUIRE_MALLOC_GLOBAL_LOCK(); - { - /* Make sure end of memory is where we last set it. */ - char* old_br = (char*)(CALL_MORECORE(0)); - if (old_br == sp->base + sp->size) { - char* rel_br = (char*)(CALL_MORECORE(-extra)); - char* new_br = (char*)(CALL_MORECORE(0)); - if (rel_br != CMFAIL && new_br < old_br) - released = old_br - new_br; + + if (released != 0) { + sp->size -= released; + m->footprint -= released; + init_top(m, m->top, m->topsize - released); + check_top_chunk(m, m->top); } - } - RELEASE_MALLOC_GLOBAL_LOCK(); } - } - - if (released != 0) { - sp->size -= released; - m->footprint -= released; - init_top(m, m->top, m->topsize - released); - check_top_chunk(m, m->top); - } + + /* Unmap any unused mmapped segments */ + if (HAVE_MMAP) + released += release_unused_segments(m); + + /* On failure, disable autotrim to avoid repeated failed future calls */ + if (released == 0 && m->topsize > m->trim_check) + m->trim_check = MAX_SIZE_T; } - - /* Unmap any unused mmapped segments */ - if (HAVE_MMAP) - released += release_unused_segments(m); - - /* On failure, disable autotrim to avoid repeated failed future calls */ - if (released == 0 && m->topsize > m->trim_check) - m->trim_check = MAX_SIZE_T; - } - - return (released != 0)? 1 : 0; + + return (released != 0)? 1 : 0; } - -/* ---------------------------- malloc support --------------------------- */ - -/* allocate a large request from the best fitting chunk in a treebin */ -static void* tmalloc_large(mstate m, size_t nb) { - tchunkptr v = 0; - size_t rsize = -nb; /* Unsigned negation */ - tchunkptr t; - bindex_t idx; - compute_tree_index(nb, idx); - if ((t = *treebin_at(m, idx)) != 0) { - /* Traverse tree for this bin looking for node with size == nb */ - size_t sizebits = nb << leftshift_for_tree_index(idx); - tchunkptr rst = 0; /* The deepest untaken right subtree */ - for (;;) { - tchunkptr rt; - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - v = t; - if ((rsize = trem) == 0) - break; - } - rt = t->child[1]; - t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; - if (rt != 0 && rt != t) - rst = rt; - if (t == 0) { - t = rst; /* set t to least subtree holding sizes > nb */ - break; - } - sizebits <<= 1; - } - } - if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ - binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; - if (leftbits != 0) { - bindex_t i; - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - t = *treebin_at(m, i); - } - } - - while (t != 0) { /* find smallest of tree or subtree */ - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - rsize = trem; - v = t; - } - t = leftmost_child(t); - } - - /* If dv is a better fit, return 0 so malloc will use it */ - if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { - if (RTCHECK(ok_address(m, v))) { /* split */ - mchunkptr r = chunk_plus_offset(v, nb); - assert(chunksize(v) == rsize + nb); - if (RTCHECK(ok_next(v, r))) { - unlink_large_chunk(m, v); - if (rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(m, v, (rsize + nb)); +/* Consolidate and bin a chunk. Differs from exported versions + of free mainly in that the chunk need not be marked as inuse. + */ +static void dispose_chunk(mstate m, mchunkptr p, size_t psize) { + mchunkptr next = chunk_plus_offset(p, psize); + if (!pinuse(p)) { + mchunkptr prev; + size_t prevsize = p->prev_foot; + if (is_mmapped(p)) { + psize += prevsize + MMAP_FOOT_PAD; + if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) + m->footprint -= psize; + return; + } + prev = chunk_minus_offset(p, prevsize); + psize += prevsize; + p = prev; + if (RTCHECK(ok_address(m, prev))) { /* consolidate backward */ + if (p != m->dv) { + unlink_chunk(m, p, prevsize); + } + else if ((next->head & INUSE_BITS) == INUSE_BITS) { + m->dvsize = psize; + set_free_with_pinuse(p, psize, next); + return; + } + } else { - set_size_and_pinuse_of_inuse_chunk(m, v, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - insert_chunk(m, r, rsize); + CORRUPTION_ERROR_ACTION(m); + return; } - return chunk2mem(v); - } } - CORRUPTION_ERROR_ACTION(m); - } - return 0; -} - -/* allocate a small request from the best fitting chunk in a treebin */ -static void* tmalloc_small(mstate m, size_t nb) { - tchunkptr t, v; - size_t rsize; - bindex_t i; - binmap_t leastbit = least_bit(m->treemap); - compute_bit2idx(leastbit, i); - v = t = *treebin_at(m, i); - rsize = chunksize(t) - nb; - - while ((t = leftmost_child(t)) != 0) { - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - rsize = trem; - v = t; + if (RTCHECK(ok_address(m, next))) { + if (!cinuse(next)) { /* consolidate forward */ + if (next == m->top) { + size_t tsize = m->topsize += psize; + m->top = p; + p->head = tsize | PINUSE_BIT; + if (p == m->dv) { + m->dv = 0; + m->dvsize = 0; + } + return; + } + else if (next == m->dv) { + size_t dsize = m->dvsize += psize; + m->dv = p; + set_size_and_pinuse_of_free_chunk(p, dsize); + return; + } + else { + size_t nsize = chunksize(next); + psize += nsize; + unlink_chunk(m, next, nsize); + set_size_and_pinuse_of_free_chunk(p, psize); + if (p == m->dv) { + m->dvsize = psize; + return; + } + } + } + else { + set_free_with_pinuse(p, psize, next); + } + insert_chunk(m, p, psize); } - } - - if (RTCHECK(ok_address(m, v))) { - mchunkptr r = chunk_plus_offset(v, nb); - assert(chunksize(v) == rsize + nb); - if (RTCHECK(ok_next(v, r))) { - unlink_large_chunk(m, v); - if (rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(m, v, (rsize + nb)); - else { - set_size_and_pinuse_of_inuse_chunk(m, v, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(m, r, rsize); - } - return chunk2mem(v); + else { + CORRUPTION_ERROR_ACTION(m); } - } - - CORRUPTION_ERROR_ACTION(m); - return 0; } -/* --------------------------- realloc support --------------------------- */ +/* ---------------------------- malloc --------------------------- */ -static void* internal_realloc(mstate m, void* oldmem, size_t bytes) { - if (bytes >= MAX_REQUEST) { - MALLOC_FAILURE_ACTION; - return 0; - } - if (!PREACTION(m)) { - mchunkptr oldp = mem2chunk(oldmem); - size_t oldsize = chunksize(oldp); - mchunkptr next = chunk_plus_offset(oldp, oldsize); - mchunkptr newp = 0; - void* extra = 0; - - /* Try to either shrink or extend into top. Else malloc-copy-free */ - - if (RTCHECK(ok_address(m, oldp) && ok_inuse(oldp) && - ok_next(oldp, next) && ok_pinuse(next))) { - size_t nb = request2size(bytes); - if (is_mmapped(oldp)) - newp = mmap_resize(m, oldp, nb); - else if (oldsize >= nb) { /* already big enough */ - size_t rsize = oldsize - nb; - newp = oldp; - if (rsize >= MIN_CHUNK_SIZE) { - mchunkptr remainder = chunk_plus_offset(newp, nb); - set_inuse(m, newp, nb); - set_inuse_and_pinuse(m, remainder, rsize); - extra = chunk2mem(remainder); +/* allocate a large request from the best fitting chunk in a treebin */ +static void* tmalloc_large(mstate m, size_t nb) { + tchunkptr v = 0; + size_t rsize = -nb; /* Unsigned negation */ + tchunkptr t; + bindex_t idx; + compute_tree_index(nb, idx); + if ((t = *treebin_at(m, idx)) != 0) { + /* Traverse tree for this bin looking for node with size == nb */ + size_t sizebits = nb << leftshift_for_tree_index(idx); + tchunkptr rst = 0; /* The deepest untaken right subtree */ + for (;;) { + tchunkptr rt; + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + v = t; + if ((rsize = trem) == 0) + break; + } + rt = t->child[1]; + t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; + if (rt != 0 && rt != t) + rst = rt; + if (t == 0) { + t = rst; /* set t to least subtree holding sizes > nb */ + break; + } + sizebits <<= 1; } - } - else if (next == m->top && oldsize + m->topsize > nb) { - /* Expand into top */ - size_t newsize = oldsize + m->topsize; - size_t newtopsize = newsize - nb; - mchunkptr newtop = chunk_plus_offset(oldp, nb); - set_inuse(m, oldp, nb); - newtop->head = newtopsize |PINUSE_BIT; - m->top = newtop; - m->topsize = newtopsize; - newp = oldp; - } - } - else { - USAGE_ERROR_ACTION(m, oldmem); - POSTACTION(m); - return 0; } -#if DEBUG - if (newp != 0) { - check_inuse_chunk(m, newp); /* Check requires lock */ + if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ + binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; + if (leftbits != 0) { + bindex_t i; + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + t = *treebin_at(m, i); + } } -#endif - - POSTACTION(m); - - if (newp != 0) { - if (extra != 0) { - internal_free(m, extra); - } - return chunk2mem(newp); + + while (t != 0) { /* find smallest of tree or subtree */ + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + rsize = trem; + v = t; + } + t = leftmost_child(t); } - else { - void* newmem = internal_malloc(m, bytes); - if (newmem != 0) { - size_t oc = oldsize - overhead_for(oldp); - memcpy(newmem, oldmem, (oc < bytes)? oc : bytes); - internal_free(m, oldmem); - } - return newmem; + + /* If dv is a better fit, return 0 so malloc will use it */ + if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { + if (RTCHECK(ok_address(m, v))) { /* split */ + mchunkptr r = chunk_plus_offset(v, nb); + assert(chunksize(v) == rsize + nb); + if (RTCHECK(ok_next(v, r))) { + unlink_large_chunk(m, v); + if (rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(m, v, (rsize + nb)); + else { + set_size_and_pinuse_of_inuse_chunk(m, v, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + insert_chunk(m, r, rsize); + } + return chunk2mem(v); + } + } + CORRUPTION_ERROR_ACTION(m); } - } - return 0; + return 0; } -/* --------------------------- memalign support -------------------------- */ - -static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { - if (alignment <= MALLOC_ALIGNMENT) /* Can just use malloc */ - return internal_malloc(m, bytes); - if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ - alignment = MIN_CHUNK_SIZE; - if ((alignment & (alignment-SIZE_T_ONE)) != 0) {/* Ensure a power of 2 */ - size_t a = MALLOC_ALIGNMENT << 1; - while (a < alignment) a <<= 1; - alignment = a; - } - - if (bytes >= MAX_REQUEST - alignment) { - if (m != 0) { /* Test isn't needed but avoids compiler warning */ - MALLOC_FAILURE_ACTION; - } - } - else { - size_t nb = request2size(bytes); - size_t req = nb + alignment + MIN_CHUNK_SIZE - CHUNK_OVERHEAD; - char* mem = (char*)internal_malloc(m, req); - if (mem != 0) { - void* leader = 0; - void* trailer = 0; - mchunkptr p = mem2chunk(mem); - - if (PREACTION(m)) return 0; - if ((((size_t)(mem)) % alignment) != 0) { /* misaligned */ - /* - Find an aligned spot inside chunk. Since we need to give - back leading space in a chunk of at least MIN_CHUNK_SIZE, if - the first calculation places us at a spot with less than - MIN_CHUNK_SIZE leader, we can move to the next aligned spot. - We've allocated enough total room so that this is always - possible. - */ - char* br = (char*)mem2chunk((size_t)(((size_t)(mem + - alignment - - SIZE_T_ONE)) & - -alignment)); - char* pos = ((size_t)(br - (char*)(p)) >= MIN_CHUNK_SIZE)? - br : br+alignment; - mchunkptr newp = (mchunkptr)pos; - size_t leadsize = pos - (char*)(p); - size_t newsize = chunksize(p) - leadsize; - - if (is_mmapped(p)) { /* For mmapped chunks, just adjust offset */ - newp->prev_foot = p->prev_foot + leadsize; - newp->head = newsize; - } - else { /* Otherwise, give back leader, use the rest */ - set_inuse(m, newp, newsize); - set_inuse(m, p, leadsize); - leader = chunk2mem(p); +/* allocate a small request from the best fitting chunk in a treebin */ +static void* tmalloc_small(mstate m, size_t nb) { + tchunkptr t, v; + size_t rsize; + bindex_t i; + binmap_t leastbit = least_bit(m->treemap); + compute_bit2idx(leastbit, i); + v = t = *treebin_at(m, i); + rsize = chunksize(t) - nb; + + while ((t = leftmost_child(t)) != 0) { + size_t trem = chunksize(t) - nb; + if (trem < rsize) { + rsize = trem; + v = t; } - p = newp; - } - - /* Give back spare room at the end */ - if (!is_mmapped(p)) { - size_t size = chunksize(p); - if (size > nb + MIN_CHUNK_SIZE) { - size_t remainder_size = size - nb; - mchunkptr remainder = chunk_plus_offset(p, nb); - set_inuse(m, p, nb); - set_inuse(m, remainder, remainder_size); - trailer = chunk2mem(remainder); + } + + if (RTCHECK(ok_address(m, v))) { + mchunkptr r = chunk_plus_offset(v, nb); + assert(chunksize(v) == rsize + nb); + if (RTCHECK(ok_next(v, r))) { + unlink_large_chunk(m, v); + if (rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(m, v, (rsize + nb)); + else { + set_size_and_pinuse_of_inuse_chunk(m, v, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(m, r, rsize); + } + return chunk2mem(v); } - } - - assert (chunksize(p) >= nb); - assert((((size_t)(chunk2mem(p))) % alignment) == 0); - check_inuse_chunk(m, p); - POSTACTION(m); - if (leader != 0) { - internal_free(m, leader); - } - if (trailer != 0) { - internal_free(m, trailer); - } - return chunk2mem(p); } - } - return 0; + + CORRUPTION_ERROR_ACTION(m); + return 0; } -/* ------------------------ comalloc/coalloc support --------------------- */ - -static void** ialloc(mstate m, - size_t n_elements, - size_t* sizes, - int opts, - void* chunks[]) { - /* - This provides common support for independent_X routines, handling - all of the combinations that can result. - - The opts arg has: - bit 0 set if all elements are same size (using sizes[0]) - bit 1 set if elements should be zeroed - */ - - size_t element_size; /* chunksize of each element, if all same */ - size_t contents_size; /* total size of elements */ - size_t array_size; /* request size of pointer array */ - void* mem; /* malloced aggregate space */ - mchunkptr p; /* corresponding chunk */ - size_t remainder_size; /* remaining bytes while splitting */ - void** marray; /* either "chunks" or malloced ptr array */ - mchunkptr array_chunk; /* chunk for malloced ptr array */ - flag_t was_enabled; /* to disable mmap */ - size_t size; - size_t i; - - ensure_initialization(); - /* compute array length, if needed */ - if (chunks != 0) { - if (n_elements == 0) - return chunks; /* nothing to do */ - marray = chunks; - array_size = 0; - } - else { - /* if empty req, must still return chunk representing empty array */ - if (n_elements == 0) - return (void**)internal_malloc(m, 0); - marray = 0; - array_size = request2size(n_elements * (sizeof(void*))); - } - - /* compute total element size */ - if (opts & 0x1) { /* all-same-size */ - element_size = request2size(*sizes); - contents_size = n_elements * element_size; - } - else { /* add up all the sizes */ - element_size = 0; - contents_size = 0; - for (i = 0; i != n_elements; ++i) - contents_size += request2size(sizes[i]); - } - - size = contents_size + array_size; - - /* - Allocate the aggregate chunk. First disable direct-mmapping so - malloc won't use it, since we would not be able to later - free/realloc space internal to a segregated mmap region. - */ - was_enabled = use_mmap(m); - disable_mmap(m); - mem = internal_malloc(m, size - CHUNK_OVERHEAD); - if (was_enabled) - enable_mmap(m); - if (mem == 0) - return 0; - - if (PREACTION(m)) return 0; - p = mem2chunk(mem); - remainder_size = chunksize(p); - - assert(!is_mmapped(p)); - - if (opts & 0x2) { /* optionally clear the elements */ - memset((size_t*)mem, 0, remainder_size - SIZE_T_SIZE - array_size); - } - - /* If not provided, allocate the pointer array as final part of chunk */ - if (marray == 0) { - size_t array_chunk_size; - array_chunk = chunk_plus_offset(p, contents_size); - array_chunk_size = remainder_size - contents_size; - marray = (void**) (chunk2mem(array_chunk)); - set_size_and_pinuse_of_inuse_chunk(m, array_chunk, array_chunk_size); - remainder_size = contents_size; - } - - /* split out elements */ - for (i = 0; ; ++i) { - marray[i] = chunk2mem(p); - if (i != n_elements-1) { - if (element_size != 0) - size = element_size; - else - size = request2size(sizes[i]); - remainder_size -= size; - set_size_and_pinuse_of_inuse_chunk(m, p, size); - p = chunk_plus_offset(p, size); - } - else { /* the final element absorbs any overallocation slop */ - set_size_and_pinuse_of_inuse_chunk(m, p, remainder_size); - break; - } - } - -#if DEBUG - if (marray != chunks) { - /* final element must have exactly exhausted chunk */ - if (element_size != 0) { - assert(remainder_size == element_size); - } - else { - assert(remainder_size == request2size(sizes[i])); - } - check_inuse_chunk(m, mem2chunk(marray)); - } - for (i = 0; i != n_elements; ++i) - check_inuse_chunk(m, mem2chunk(marray[i])); - -#endif /* DEBUG */ - - POSTACTION(m); - return marray; -} - - -/* -------------------------- public routines ---------------------------- */ - -#if !ONLY_MSPACES +#if !ONLY_MSPACES void* dlmalloc(size_t bytes) { - /* + /* Basic algorithm: If a small request (< 256 bytes minus per-chunk overhead): - 1. If one exists, use a remainderless chunk in associated smallbin. - (Remainderless means that there are too few excess bytes to - represent as a chunk.) - 2. If it is big enough, use the dv chunk, which is normally the - chunk adjacent to the one used for the most recent small request. - 3. If one exists, split the smallest available chunk in a bin, - saving remainder in dv. - 4. If it is big enough, use the top chunk. - 5. If available, get memory from system and use it + 1. If one exists, use a remainderless chunk in associated smallbin. + (Remainderless means that there are too few excess bytes to + represent as a chunk.) + 2. If it is big enough, use the dv chunk, which is normally the + chunk adjacent to the one used for the most recent small request. + 3. If one exists, split the smallest available chunk in a bin, + saving remainder in dv. + 4. If it is big enough, use the top chunk. + 5. If available, get memory from system and use it Otherwise, for a large request: - 1. Find the smallest available binned chunk that fits, and use it - if it is better fitting than dv chunk, splitting if necessary. - 2. If better fitting than any binned chunk, use the dv chunk. - 3. If it is big enough, use the top chunk. - 4. If request size >= mmap threshold, try to directly mmap this chunk. - 5. If available, get memory from system and use it - + 1. Find the smallest available binned chunk that fits, and use it + if it is better fitting than dv chunk, splitting if necessary. + 2. If better fitting than any binned chunk, use the dv chunk. + 3. If it is big enough, use the top chunk. + 4. If request size >= mmap threshold, try to directly mmap this chunk. + 5. If available, get memory from system and use it + The ugly goto's here ensure that postaction occurs along all paths. - */ - + */ + #if USE_LOCKS - ensure_initialization(); /* initialize in sys_alloc if not using locks */ + ensure_initialization(); /* initialize in sys_alloc if not using locks */ #endif - - if (!PREACTION(gm)) { - void* mem; - size_t nb; - if (bytes <= MAX_SMALL_REQUEST) { - bindex_t idx; - binmap_t smallbits; - nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); - idx = small_index(nb); - smallbits = gm->smallmap >> idx; - - if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ - mchunkptr b, p; - idx += ~smallbits & 1; /* Uses next bin if idx empty */ - b = smallbin_at(gm, idx); - p = b->fd; - assert(chunksize(p) == small_index2size(idx)); - unlink_first_small_chunk(gm, b, p, idx); - set_inuse_and_pinuse(gm, p, small_index2size(idx)); - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (nb > gm->dvsize) { - if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ - mchunkptr b, p, r; - size_t rsize; - bindex_t i; - binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - b = smallbin_at(gm, i); - p = b->fd; - assert(chunksize(p) == small_index2size(i)); - unlink_first_small_chunk(gm, b, p, i); - rsize = small_index2size(i) - nb; - /* Fit here cannot be remainderless if 4byte sizes */ - if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(gm, p, small_index2size(i)); - else { - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - r = chunk_plus_offset(p, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(gm, r, rsize); - } - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; + + if (!PREACTION(gm)) { + void* mem; + size_t nb; + if (bytes <= MAX_SMALL_REQUEST) { + bindex_t idx; + binmap_t smallbits; + nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); + idx = small_index(nb); + smallbits = gm->smallmap >> idx; + + if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ + mchunkptr b, p; + idx += ~smallbits & 1; /* Uses next bin if idx empty */ + b = smallbin_at(gm, idx); + p = b->fd; + assert(chunksize(p) == small_index2size(idx)); + unlink_first_small_chunk(gm, b, p, idx); + set_inuse_and_pinuse(gm, p, small_index2size(idx)); + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (nb > gm->dvsize) { + if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ + mchunkptr b, p, r; + size_t rsize; + bindex_t i; + binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + b = smallbin_at(gm, i); + p = b->fd; + assert(chunksize(p) == small_index2size(i)); + unlink_first_small_chunk(gm, b, p, i); + rsize = small_index2size(i) - nb; + /* Fit here cannot be remainderless if 4byte sizes */ + if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(gm, p, small_index2size(i)); + else { + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + r = chunk_plus_offset(p, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(gm, r, rsize); + } + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + } } - - else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { - check_malloced_chunk(gm, mem, nb); - goto postaction; + else if (bytes >= MAX_REQUEST) + nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ + else { + nb = pad_request(bytes); + if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { + check_malloced_chunk(gm, mem, nb); + goto postaction; + } } - } - } - else if (bytes >= MAX_REQUEST) - nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ - else { - nb = pad_request(bytes); - if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - } - - if (nb <= gm->dvsize) { - size_t rsize = gm->dvsize - nb; - mchunkptr p = gm->dv; - if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ - mchunkptr r = gm->dv = chunk_plus_offset(p, nb); - gm->dvsize = rsize; - set_size_and_pinuse_of_free_chunk(r, rsize); - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - } - else { /* exhaust dv */ - size_t dvs = gm->dvsize; - gm->dvsize = 0; - gm->dv = 0; - set_inuse_and_pinuse(gm, p, dvs); - } - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (nb < gm->topsize) { /* Split top */ - size_t rsize = gm->topsize -= nb; - mchunkptr p = gm->top; - mchunkptr r = gm->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - mem = chunk2mem(p); - check_top_chunk(gm, gm->top); - check_malloced_chunk(gm, mem, nb); - goto postaction; + + if (nb <= gm->dvsize) { + size_t rsize = gm->dvsize - nb; + mchunkptr p = gm->dv; + if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ + mchunkptr r = gm->dv = chunk_plus_offset(p, nb); + gm->dvsize = rsize; + set_size_and_pinuse_of_free_chunk(r, rsize); + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + } + else { /* exhaust dv */ + size_t dvs = gm->dvsize; + gm->dvsize = 0; + gm->dv = 0; + set_inuse_and_pinuse(gm, p, dvs); + } + mem = chunk2mem(p); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + else if (nb < gm->topsize) { /* Split top */ + size_t rsize = gm->topsize -= nb; + mchunkptr p = gm->top; + mchunkptr r = gm->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(gm, p, nb); + mem = chunk2mem(p); + check_top_chunk(gm, gm->top); + check_malloced_chunk(gm, mem, nb); + goto postaction; + } + + mem = sys_alloc(gm, nb); + + postaction: + POSTACTION(gm); + return mem; } - - mem = sys_alloc(gm, nb); - - postaction: - POSTACTION(gm); - return mem; - } - - return 0; + + return 0; } +/* ---------------------------- free --------------------------- */ + void dlfree(void* mem) { - /* + /* Consolidate freed chunks with preceeding or succeeding bordering free chunks, if they exist, and then place in a bin. Intermixed with special cases for top, dv, mmapped chunks, and usage errors. - */ - - if (mem != 0) { - mchunkptr p = mem2chunk(mem); + */ + + if (mem != 0) { + mchunkptr p = mem2chunk(mem); #if FOOTERS - mstate fm = get_mstate_for(p); - if (!ok_magic(fm)) { - USAGE_ERROR_ACTION(fm, p); - return; - } + mstate fm = get_mstate_for(p); + if (!ok_magic(fm)) { + USAGE_ERROR_ACTION(fm, p); + return; + } #else /* FOOTERS */ #define fm gm #endif /* FOOTERS */ - if (!PREACTION(fm)) { - check_inuse_chunk(fm, p); - if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { - size_t psize = chunksize(p); - mchunkptr next = chunk_plus_offset(p, psize); - if (!pinuse(p)) { - size_t prevsize = p->prev_foot; - if (is_mmapped(p)) { - psize += prevsize + MMAP_FOOT_PAD; - if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) - fm->footprint -= psize; - goto postaction; - } - else { - mchunkptr prev = chunk_minus_offset(p, prevsize); - psize += prevsize; - p = prev; - if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ - if (p != fm->dv) { - unlink_chunk(fm, p, prevsize); - } - else if ((next->head & INUSE_BITS) == INUSE_BITS) { - fm->dvsize = psize; - set_free_with_pinuse(p, psize, next); - goto postaction; - } + if (!PREACTION(fm)) { + check_inuse_chunk(fm, p); + if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { + size_t psize = chunksize(p); + mchunkptr next = chunk_plus_offset(p, psize); + if (!pinuse(p)) { + size_t prevsize = p->prev_foot; + if (is_mmapped(p)) { + psize += prevsize + MMAP_FOOT_PAD; + if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) + fm->footprint -= psize; + goto postaction; + } + else { + mchunkptr prev = chunk_minus_offset(p, prevsize); + psize += prevsize; + p = prev; + if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ + if (p != fm->dv) { + unlink_chunk(fm, p, prevsize); + } + else if ((next->head & INUSE_BITS) == INUSE_BITS) { + fm->dvsize = psize; + set_free_with_pinuse(p, psize, next); + goto postaction; + } + } + else + goto erroraction; + } + } + + if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { + if (!cinuse(next)) { /* consolidate forward */ + if (next == fm->top) { + size_t tsize = fm->topsize += psize; + fm->top = p; + p->head = tsize | PINUSE_BIT; + if (p == fm->dv) { + fm->dv = 0; + fm->dvsize = 0; + } + if (should_trim(fm, tsize)) + sys_trim(fm, 0); + goto postaction; + } + else if (next == fm->dv) { + size_t dsize = fm->dvsize += psize; + fm->dv = p; + set_size_and_pinuse_of_free_chunk(p, dsize); + goto postaction; + } + else { + size_t nsize = chunksize(next); + psize += nsize; + unlink_chunk(fm, next, nsize); + set_size_and_pinuse_of_free_chunk(p, psize); + if (p == fm->dv) { + fm->dvsize = psize; + goto postaction; + } + } + } + else + set_free_with_pinuse(p, psize, next); + + if (is_small(psize)) { + insert_small_chunk(fm, p, psize); + check_free_chunk(fm, p); + } + else { + tchunkptr tp = (tchunkptr)p; + insert_large_chunk(fm, tp, psize); + check_free_chunk(fm, p); + if (--fm->release_checks == 0) + release_unused_segments(fm); + } + goto postaction; + } } - else - goto erroraction; - } + erroraction: + USAGE_ERROR_ACTION(fm, p); + postaction: + POSTACTION(fm); } + } +#if !FOOTERS +#undef fm +#endif /* FOOTERS */ +} + +void* dlcalloc(size_t n_elements, size_t elem_size) { + void* mem; + size_t req = 0; + if (n_elements != 0) { + req = n_elements * elem_size; + if (((n_elements | elem_size) & ~(size_t)0xffff) && + (req / n_elements != elem_size)) + req = MAX_SIZE_T; /* force downstream failure on overflow */ + } + mem = dlmalloc(req); + if (mem != 0 && calloc_must_clear(mem2chunk(mem))) + memset(mem, 0, req); + return mem; +} + +#endif /* !ONLY_MSPACES */ - if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { - if (!cinuse(next)) { /* consolidate forward */ - if (next == fm->top) { - size_t tsize = fm->topsize += psize; - fm->top = p; - p->head = tsize | PINUSE_BIT; - if (p == fm->dv) { - fm->dv = 0; - fm->dvsize = 0; - } - if (should_trim(fm, tsize)) - sys_trim(fm, 0); - goto postaction; +/* ------------ Internal support for realloc, memalign, etc -------------- */ + +/* Try to realloc; only in-place unless can_move true */ +static mchunkptr try_realloc_chunk(mstate m, mchunkptr p, size_t nb, + int can_move) { + mchunkptr newp = 0; + size_t oldsize = chunksize(p); + mchunkptr next = chunk_plus_offset(p, oldsize); + if (RTCHECK(ok_address(m, p) && ok_inuse(p) && + ok_next(p, next) && ok_pinuse(next))) { + if (is_mmapped(p)) { + newp = mmap_resize(m, p, nb, can_move); + } + else if (oldsize >= nb) { /* already big enough */ + size_t rsize = oldsize - nb; + if (rsize >= MIN_CHUNK_SIZE) { /* split off remainder */ + mchunkptr r = chunk_plus_offset(p, nb); + set_inuse(m, p, nb); + set_inuse(m, r, rsize); + dispose_chunk(m, r, rsize); } - else if (next == fm->dv) { - size_t dsize = fm->dvsize += psize; - fm->dv = p; - set_size_and_pinuse_of_free_chunk(p, dsize); - goto postaction; + newp = p; + } + else if (next == m->top) { /* extend into top */ + if (oldsize + m->topsize > nb) { + size_t newsize = oldsize + m->topsize; + size_t newtopsize = newsize - nb; + mchunkptr newtop = chunk_plus_offset(p, nb); + set_inuse(m, p, nb); + newtop->head = newtopsize |PINUSE_BIT; + m->top = newtop; + m->topsize = newtopsize; + newp = p; } - else { - size_t nsize = chunksize(next); - psize += nsize; - unlink_chunk(fm, next, nsize); - set_size_and_pinuse_of_free_chunk(p, psize); - if (p == fm->dv) { - fm->dvsize = psize; - goto postaction; - } + } + else if (next == m->dv) { /* extend into dv */ + size_t dvs = m->dvsize; + if (oldsize + dvs >= nb) { + size_t dsize = oldsize + dvs - nb; + if (dsize >= MIN_CHUNK_SIZE) { + mchunkptr r = chunk_plus_offset(p, nb); + mchunkptr n = chunk_plus_offset(r, dsize); + set_inuse(m, p, nb); + set_size_and_pinuse_of_free_chunk(r, dsize); + clear_pinuse(n); + m->dvsize = dsize; + m->dv = r; + } + else { /* exhaust dv */ + size_t newsize = oldsize + dvs; + set_inuse(m, p, newsize); + m->dvsize = 0; + m->dv = 0; + } + newp = p; } - } - else - set_free_with_pinuse(p, psize, next); + } + else if (!cinuse(next)) { /* extend into next free chunk */ + size_t nextsize = chunksize(next); + if (oldsize + nextsize >= nb) { + size_t rsize = oldsize + nextsize - nb; + unlink_chunk(m, next, nextsize); + if (rsize < MIN_CHUNK_SIZE) { + size_t newsize = oldsize + nextsize; + set_inuse(m, p, newsize); + } + else { + mchunkptr r = chunk_plus_offset(p, nb); + set_inuse(m, p, nb); + set_inuse(m, r, rsize); + dispose_chunk(m, r, rsize); + } + newp = p; + } + } + } + else { + USAGE_ERROR_ACTION(m, chunk2mem(p)); + } + return newp; +} - if (is_small(psize)) { - insert_small_chunk(fm, p, psize); - check_free_chunk(fm, p); - } - else { - tchunkptr tp = (tchunkptr)p; - insert_large_chunk(fm, tp, psize); - check_free_chunk(fm, p); - if (--fm->release_checks == 0) - release_unused_segments(fm); - } - goto postaction; +static void* internal_memalign(mstate m, size_t alignment, size_t bytes) { + void* mem = 0; + if (alignment < MIN_CHUNK_SIZE) /* must be at least a minimum chunk size */ + alignment = MIN_CHUNK_SIZE; + if ((alignment & (alignment-SIZE_T_ONE)) != 0) {/* Ensure a power of 2 */ + size_t a = MALLOC_ALIGNMENT << 1; + while (a < alignment) a <<= 1; + alignment = a; + } + if (bytes >= MAX_REQUEST - alignment) { + if (m != 0) { /* Test isn't needed but avoids compiler warning */ + MALLOC_FAILURE_ACTION; } - } - erroraction: - USAGE_ERROR_ACTION(fm, p); - postaction: - POSTACTION(fm); } - } -#if !FOOTERS -#undef fm -#endif /* FOOTERS */ + else { + size_t nb = request2size(bytes); + size_t req = nb + alignment + MIN_CHUNK_SIZE - CHUNK_OVERHEAD; + mem = internal_malloc(m, req); + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + if (PREACTION(m)) + return 0; + if ((((size_t)(mem)) & (alignment - 1)) != 0) { /* misaligned */ + /* + Find an aligned spot inside chunk. Since we need to give + back leading space in a chunk of at least MIN_CHUNK_SIZE, if + the first calculation places us at a spot with less than + MIN_CHUNK_SIZE leader, we can move to the next aligned spot. + We've allocated enough total room so that this is always + possible. + */ + char* br = (char*)mem2chunk((size_t)(((size_t)((char*)mem + alignment - + SIZE_T_ONE)) & + -alignment)); + char* pos = ((size_t)(br - (char*)(p)) >= MIN_CHUNK_SIZE)? + br : br+alignment; + mchunkptr newp = (mchunkptr)pos; + size_t leadsize = pos - (char*)(p); + size_t newsize = chunksize(p) - leadsize; + + if (is_mmapped(p)) { /* For mmapped chunks, just adjust offset */ + newp->prev_foot = p->prev_foot + leadsize; + newp->head = newsize; + } + else { /* Otherwise, give back leader, use the rest */ + set_inuse(m, newp, newsize); + set_inuse(m, p, leadsize); + dispose_chunk(m, p, leadsize); + } + p = newp; + } + + /* Give back spare room at the end */ + if (!is_mmapped(p)) { + size_t size = chunksize(p); + if (size > nb + MIN_CHUNK_SIZE) { + size_t remainder_size = size - nb; + mchunkptr remainder = chunk_plus_offset(p, nb); + set_inuse(m, p, nb); + set_inuse(m, remainder, remainder_size); + dispose_chunk(m, remainder, remainder_size); + } + } + + mem = chunk2mem(p); + assert (chunksize(p) >= nb); + assert(((size_t)mem & (alignment - 1)) == 0); + check_inuse_chunk(m, p); + POSTACTION(m); + } + } + return mem; } -void* dlcalloc(size_t n_elements, size_t elem_size) { - void* mem; - size_t req = 0; - if (n_elements != 0) { - req = n_elements * elem_size; - if (((n_elements | elem_size) & ~(size_t)0xffff) && - (req / n_elements != elem_size)) - req = MAX_SIZE_T; /* force downstream failure on overflow */ - } - mem = dlmalloc(req); - if (mem != 0 && calloc_must_clear(mem2chunk(mem))) - memset(mem, 0, req); - return mem; +/* + Common support for independent_X routines, handling + all of the combinations that can result. + The opts arg has: + bit 0 set if all elements are same size (using sizes[0]) + bit 1 set if elements should be zeroed + */ +static void** ialloc(mstate m, + size_t n_elements, + size_t* sizes, + int opts, + void* chunks[]) { + + size_t element_size; /* chunksize of each element, if all same */ + size_t contents_size; /* total size of elements */ + size_t array_size; /* request size of pointer array */ + void* mem; /* malloced aggregate space */ + mchunkptr p; /* corresponding chunk */ + size_t remainder_size; /* remaining bytes while splitting */ + void** marray; /* either "chunks" or malloced ptr array */ + mchunkptr array_chunk; /* chunk for malloced ptr array */ + flag_t was_enabled; /* to disable mmap */ + size_t size; + size_t i; + + ensure_initialization(); + /* compute array length, if needed */ + if (chunks != 0) { + if (n_elements == 0) + return chunks; /* nothing to do */ + marray = chunks; + array_size = 0; + } + else { + /* if empty req, must still return chunk representing empty array */ + if (n_elements == 0) + return (void**)internal_malloc(m, 0); + marray = 0; + array_size = request2size(n_elements * (sizeof(void*))); + } + + /* compute total element size */ + if (opts & 0x1) { /* all-same-size */ + element_size = request2size(*sizes); + contents_size = n_elements * element_size; + } + else { /* add up all the sizes */ + element_size = 0; + contents_size = 0; + for (i = 0; i != n_elements; ++i) + contents_size += request2size(sizes[i]); + } + + size = contents_size + array_size; + + /* + Allocate the aggregate chunk. First disable direct-mmapping so + malloc won't use it, since we would not be able to later + free/realloc space internal to a segregated mmap region. + */ + was_enabled = use_mmap(m); + disable_mmap(m); + mem = internal_malloc(m, size - CHUNK_OVERHEAD); + if (was_enabled) + enable_mmap(m); + if (mem == 0) + return 0; + + if (PREACTION(m)) return 0; + p = mem2chunk(mem); + remainder_size = chunksize(p); + + assert(!is_mmapped(p)); + + if (opts & 0x2) { /* optionally clear the elements */ + memset((size_t*)mem, 0, remainder_size - SIZE_T_SIZE - array_size); + } + + /* If not provided, allocate the pointer array as final part of chunk */ + if (marray == 0) { + size_t array_chunk_size; + array_chunk = chunk_plus_offset(p, contents_size); + array_chunk_size = remainder_size - contents_size; + marray = (void**) (chunk2mem(array_chunk)); + set_size_and_pinuse_of_inuse_chunk(m, array_chunk, array_chunk_size); + remainder_size = contents_size; + } + + /* split out elements */ + for (i = 0; ; ++i) { + marray[i] = chunk2mem(p); + if (i != n_elements-1) { + if (element_size != 0) + size = element_size; + else + size = request2size(sizes[i]); + remainder_size -= size; + set_size_and_pinuse_of_inuse_chunk(m, p, size); + p = chunk_plus_offset(p, size); + } + else { /* the final element absorbs any overallocation slop */ + set_size_and_pinuse_of_inuse_chunk(m, p, remainder_size); + break; + } + } + +#if DEBUG + if (marray != chunks) { + /* final element must have exactly exhausted chunk */ + if (element_size != 0) { + assert(remainder_size == element_size); + } + else { + assert(remainder_size == request2size(sizes[i])); + } + check_inuse_chunk(m, mem2chunk(marray)); + } + for (i = 0; i != n_elements; ++i) + check_inuse_chunk(m, mem2chunk(marray[i])); + +#endif /* DEBUG */ + + POSTACTION(m); + return marray; +} + +/* Try to free all pointers in the given array. + Note: this could be made faster, by delaying consolidation, + at the price of disabling some user integrity checks, We + still optimize some consolidations by combining adjacent + chunks before freeing, which will occur often if allocated + with ialloc or the array is sorted. + */ +static size_t internal_bulk_free(mstate m, void* array[], size_t nelem) { + size_t unfreed = 0; + if (!PREACTION(m)) { + void** a; + void** fence = &(array[nelem]); + for (a = array; a != fence; ++a) { + void* mem = *a; + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + size_t psize = chunksize(p); +#if FOOTERS + if (get_mstate_for(p) != m) { + ++unfreed; + continue; + } +#endif + check_inuse_chunk(m, p); + *a = 0; + if (RTCHECK(ok_address(m, p) && ok_inuse(p))) { + void ** b = a + 1; /* try to merge with next chunk */ + mchunkptr next = next_chunk(p); + if (b != fence && *b == chunk2mem(next)) { + size_t newsize = chunksize(next) + psize; + set_inuse(m, p, newsize); + *b = chunk2mem(p); + } + else + dispose_chunk(m, p, psize); + } + else { + CORRUPTION_ERROR_ACTION(m); + break; + } + } + } + if (should_trim(m, m->topsize)) + sys_trim(m, 0); + POSTACTION(m); + } + return unfreed; +} + +/* Traversal */ +#if MALLOC_INSPECT_ALL +static void internal_inspect_all(mstate m, + void(*handler)(void *start, + void *end, + size_t used_bytes, + void* callback_arg), + void* arg) { + if (is_initialized(m)) { + mchunkptr top = m->top; + msegmentptr s; + for (s = &m->seg; s != 0; s = s->next) { + mchunkptr q = align_as_chunk(s->base); + while (segment_holds(s, q) && q->head != FENCEPOST_HEAD) { + mchunkptr next = next_chunk(q); + size_t sz = chunksize(q); + size_t used; + void* start; + if (is_inuse(q)) { + used = sz - CHUNK_OVERHEAD; /* must not be mmapped */ + start = chunk2mem(q); + } + else { + used = 0; + if (is_small(sz)) { /* offset by possible bookkeeping */ + start = (void*)((char*)q + sizeof(struct malloc_chunk)); + } + else { + start = (void*)((char*)q + sizeof(struct malloc_tree_chunk)); + } + } + if (start < (void*)next) /* skip if all space is bookkeeping */ + handler(start, next, used, arg); + if (q == top) + break; + q = next; + } + } + } } +#endif /* MALLOC_INSPECT_ALL */ + +/* ------------------ Exported realloc, memalign, etc -------------------- */ + +#if !ONLY_MSPACES void* dlrealloc(void* oldmem, size_t bytes) { - if (oldmem == 0) - return dlmalloc(bytes); + void* mem = 0; + if (oldmem == 0) { + mem = dlmalloc(bytes); + } + else if (bytes >= MAX_REQUEST) { + MALLOC_FAILURE_ACTION; + } #ifdef REALLOC_ZERO_BYTES_FREES - if (bytes == 0) { - dlfree(oldmem); - return 0; - } + else if (bytes == 0) { + dlfree(oldmem); + } #endif /* REALLOC_ZERO_BYTES_FREES */ - else { + else { + size_t nb = request2size(bytes); + mchunkptr oldp = mem2chunk(oldmem); #if ! FOOTERS - mstate m = gm; + mstate m = gm; #else /* FOOTERS */ - mstate m = get_mstate_for(mem2chunk(oldmem)); - if (!ok_magic(m)) { - USAGE_ERROR_ACTION(m, oldmem); - return 0; + mstate m = get_mstate_for(oldp); + if (!ok_magic(m)) { + USAGE_ERROR_ACTION(m, oldmem); + return 0; + } +#endif /* FOOTERS */ + if (!PREACTION(m)) { + mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1); + POSTACTION(m); + if (newp != 0) { + check_inuse_chunk(m, newp); + mem = chunk2mem(newp); + } + else { + mem = internal_malloc(m, bytes); + if (mem != 0) { + size_t oc = chunksize(oldp) - overhead_for(oldp); + memcpy(mem, oldmem, (oc < bytes)? oc : bytes); + internal_free(m, oldmem); + } + } + } } + return mem; +} + +void* dlrealloc_in_place(void* oldmem, size_t bytes) { + void* mem = 0; + if (oldmem != 0) { + if (bytes >= MAX_REQUEST) { + MALLOC_FAILURE_ACTION; + } + else { + size_t nb = request2size(bytes); + mchunkptr oldp = mem2chunk(oldmem); +#if ! FOOTERS + mstate m = gm; +#else /* FOOTERS */ + mstate m = get_mstate_for(oldp); + if (!ok_magic(m)) { + USAGE_ERROR_ACTION(m, oldmem); + return 0; + } #endif /* FOOTERS */ - return internal_realloc(m, oldmem, bytes); - } + if (!PREACTION(m)) { + mchunkptr newp = try_realloc_chunk(m, oldp, nb, 0); + POSTACTION(m); + if (newp == oldp) { + check_inuse_chunk(m, newp); + mem = oldmem; + } + } + } + } + return mem; } void* dlmemalign(size_t alignment, size_t bytes) { - return internal_memalign(gm, alignment, bytes); + if (alignment <= MALLOC_ALIGNMENT) { + return dlmalloc(bytes); + } + return internal_memalign(gm, alignment, bytes); +} + +int dlposix_memalign(void** pp, size_t alignment, size_t bytes) { + void* mem = 0; + if (alignment == MALLOC_ALIGNMENT) + mem = dlmalloc(bytes); + else { + size_t d = alignment / sizeof(void*); + size_t r = alignment % sizeof(void*); + if (r != 0 || d == 0 || (d & (d-SIZE_T_ONE)) != 0) + return EINVAL; + else if (bytes <= MAX_REQUEST - alignment) { + if (alignment < MIN_CHUNK_SIZE) + alignment = MIN_CHUNK_SIZE; + mem = internal_memalign(gm, alignment, bytes); + } + } + if (mem == 0) + return ENOMEM; + else { + *pp = mem; + return 0; + } +} + +void* dlvalloc(size_t bytes) { + size_t pagesz; + ensure_initialization(); + pagesz = mparams.page_size; + return dlmemalign(pagesz, bytes); +} + +void* dlpvalloc(size_t bytes) { + size_t pagesz; + ensure_initialization(); + pagesz = mparams.page_size; + return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); } void** dlindependent_calloc(size_t n_elements, size_t elem_size, - void* chunks[]) { - size_t sz = elem_size; /* serves as 1-element array */ - return ialloc(gm, n_elements, &sz, 3, chunks); + void* chunks[]) { + size_t sz = elem_size; /* serves as 1-element array */ + return ialloc(gm, n_elements, &sz, 3, chunks); } void** dlindependent_comalloc(size_t n_elements, size_t sizes[], - void* chunks[]) { - return ialloc(gm, n_elements, sizes, 0, chunks); + void* chunks[]) { + return ialloc(gm, n_elements, sizes, 0, chunks); } -void* dlvalloc(size_t bytes) { - size_t pagesz; - ensure_initialization(); - pagesz = mparams.page_size; - return dlmemalign(pagesz, bytes); +size_t dlbulk_free(void* array[], size_t nelem) { + return internal_bulk_free(gm, array, nelem); } -void* dlpvalloc(size_t bytes) { - size_t pagesz; - ensure_initialization(); - pagesz = mparams.page_size; - return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); +#if MALLOC_INSPECT_ALL +void dlmalloc_inspect_all(void(*handler)(void *start, + void *end, + size_t used_bytes, + void* callback_arg), + void* arg) { + ensure_initialization(); + if (!PREACTION(gm)) { + internal_inspect_all(gm, handler, arg); + POSTACTION(gm); + } } +#endif /* MALLOC_INSPECT_ALL */ int dlmalloc_trim(size_t pad) { - int result = 0; - ensure_initialization(); - if (!PREACTION(gm)) { - result = sys_trim(gm, pad); - POSTACTION(gm); - } - return result; + int result = 0; + ensure_initialization(); + if (!PREACTION(gm)) { + result = sys_trim(gm, pad); + POSTACTION(gm); + } + return result; } size_t dlmalloc_footprint(void) { - return gm->footprint; + return gm->footprint; } size_t dlmalloc_max_footprint(void) { - return gm->max_footprint; + return gm->max_footprint; +} + +size_t dlmalloc_footprint_limit(void) { + size_t maf = gm->footprint_limit; + return maf == 0 ? MAX_SIZE_T : maf; +} + +size_t dlmalloc_set_footprint_limit(size_t bytes) { + size_t result; /* invert sense of 0 */ + if (bytes == 0) + result = granularity_align(1); /* Use minimal size */ + if (bytes == MAX_SIZE_T) + result = 0; /* disable */ + else + result = granularity_align(bytes); + return gm->footprint_limit = result; } #if !NO_MALLINFO struct mallinfo dlmallinfo(void) { - return internal_mallinfo(gm); + return internal_mallinfo(gm); } #endif /* NO_MALLINFO */ +#if !NO_MALLOC_STATS void dlmalloc_stats() { - internal_malloc_stats(gm); + internal_malloc_stats(gm); } +#endif /* NO_MALLOC_STATS */ int dlmallopt(int param_number, int value) { - return change_mparam(param_number, value); + return change_mparam(param_number, value); } -#endif /* !ONLY_MSPACES */ - size_t dlmalloc_usable_size(void* mem) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - if (is_inuse(p)) - return chunksize(p) - overhead_for(p); - } - return 0; + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + if (is_inuse(p)) + return chunksize(p) - overhead_for(p); + } + return 0; } +#endif /* !ONLY_MSPACES */ + /* ----------------------------- user mspaces ---------------------------- */ #if MSPACES static mstate init_user_mstate(char* tbase, size_t tsize) { - size_t msize = pad_request(sizeof(struct malloc_state)); - mchunkptr mn; - mchunkptr msp = align_as_chunk(tbase); - mstate m = (mstate)(chunk2mem(msp)); - memset(m, 0, msize); - INITIAL_LOCK(&m->mutex); - msp->head = (msize|INUSE_BITS); - m->seg.base = m->least_addr = tbase; - m->seg.size = m->footprint = m->max_footprint = tsize; - m->magic = mparams.magic; - m->release_checks = MAX_RELEASE_CHECK_RATE; - m->mflags = mparams.default_mflags; - m->extp = 0; - m->exts = 0; - disable_contiguous(m); - init_bins(m); - mn = next_chunk(mem2chunk(m)); - init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) - TOP_FOOT_SIZE); - check_top_chunk(m, m->top); - return m; + size_t msize = pad_request(sizeof(struct malloc_state)); + mchunkptr mn; + mchunkptr msp = align_as_chunk(tbase); + mstate m = (mstate)(chunk2mem(msp)); + memset(m, 0, msize); + (void)INITIAL_LOCK(&m->mutex); + msp->head = (msize|INUSE_BITS); + m->seg.base = m->least_addr = tbase; + m->seg.size = m->footprint = m->max_footprint = tsize; + m->magic = mparams.magic; + m->release_checks = MAX_RELEASE_CHECK_RATE; + m->mflags = mparams.default_mflags; + m->extp = 0; + m->exts = 0; + disable_contiguous(m); + init_bins(m); + mn = next_chunk(mem2chunk(m)); + init_top(m, mn, (size_t)((tbase + tsize) - (char*)mn) - TOP_FOOT_SIZE); + check_top_chunk(m, m->top); + return m; } mspace create_mspace(size_t capacity, int locked) { - mstate m = 0; - size_t msize; - ensure_initialization(); - msize = pad_request(sizeof(struct malloc_state)); - if (capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { - size_t rs = ((capacity == 0)? mparams.granularity : - (capacity + TOP_FOOT_SIZE + msize)); - size_t tsize = granularity_align(rs); - char* tbase = (char*)(CALL_MMAP(tsize)); - if (tbase != CMFAIL) { - m = init_user_mstate(tbase, tsize); - m->seg.sflags = USE_MMAP_BIT; - set_lock(m, locked); + mstate m = 0; + size_t msize; + ensure_initialization(); + msize = pad_request(sizeof(struct malloc_state)); + if (capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { + size_t rs = ((capacity == 0)? mparams.granularity : + (capacity + TOP_FOOT_SIZE + msize)); + size_t tsize = granularity_align(rs); + char* tbase = (char*)(CALL_MMAP(tsize)); + if (tbase != CMFAIL) { + m = init_user_mstate(tbase, tsize); + m->seg.sflags = USE_MMAP_BIT; + set_lock(m, locked); + } } - } - return (mspace)m; + return (mspace)m; } mspace create_mspace_with_base(void* base, size_t capacity, int locked) { - mstate m = 0; - size_t msize; - ensure_initialization(); - msize = pad_request(sizeof(struct malloc_state)); - if (capacity > msize + TOP_FOOT_SIZE && - capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { - m = init_user_mstate((char*)base, capacity); - m->seg.sflags = EXTERN_BIT; - set_lock(m, locked); - } - return (mspace)m; + mstate m = 0; + size_t msize; + ensure_initialization(); + msize = pad_request(sizeof(struct malloc_state)); + if (capacity > msize + TOP_FOOT_SIZE && + capacity < (size_t) -(msize + TOP_FOOT_SIZE + mparams.page_size)) { + m = init_user_mstate((char*)base, capacity); + m->seg.sflags = EXTERN_BIT; + set_lock(m, locked); + } + return (mspace)m; } int mspace_track_large_chunks(mspace msp, int enable) { - int ret = 0; - mstate ms = (mstate)msp; - if (!PREACTION(ms)) { - if (!use_mmap(ms)) - ret = 1; - if (!enable) - enable_mmap(ms); - else - disable_mmap(ms); - POSTACTION(ms); - } - return ret; + int ret = 0; + mstate ms = (mstate)msp; + if (!PREACTION(ms)) { + if (!use_mmap(ms)) { + ret = 1; + } + if (!enable) { + enable_mmap(ms); + } else { + disable_mmap(ms); + } + POSTACTION(ms); + } + return ret; } size_t destroy_mspace(mspace msp) { - size_t freed = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - msegmentptr sp = &ms->seg; - while (sp != 0) { - char* base = sp->base; - size_t size = sp->size; - flag_t flag = sp->sflags; - sp = sp->next; - if ((flag & USE_MMAP_BIT) && !(flag & EXTERN_BIT) && - CALL_MUNMAP(base, size) == 0) - freed += size; + size_t freed = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + msegmentptr sp = &ms->seg; + (void)DESTROY_LOCK(&ms->mutex); /* destroy before unmapped */ + while (sp != 0) { + char* base = sp->base; + size_t size = sp->size; + flag_t flag = sp->sflags; + (void)base; /* placate people compiling -Wunused-variable */ + sp = sp->next; + if ((flag & USE_MMAP_BIT) && !(flag & EXTERN_BIT) && + CALL_MUNMAP(base, size) == 0) + freed += size; + } } - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return freed; + else { + USAGE_ERROR_ACTION(ms,ms); + } + return freed; } /* - mspace versions of routines are near-clones of the global - versions. This is not so nice but better than the alternatives. -*/ - + mspace versions of routines are near-clones of the global + versions. This is not so nice but better than the alternatives. + */ void* mspace_malloc(mspace msp, size_t bytes) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - if (!PREACTION(ms)) { - void* mem; - size_t nb; - if (bytes <= MAX_SMALL_REQUEST) { - bindex_t idx; - binmap_t smallbits; - nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); - idx = small_index(nb); - smallbits = ms->smallmap >> idx; - - if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ - mchunkptr b, p; - idx += ~smallbits & 1; /* Uses next bin if idx empty */ - b = smallbin_at(ms, idx); - p = b->fd; - assert(chunksize(p) == small_index2size(idx)); - unlink_first_small_chunk(ms, b, p, idx); - set_inuse_and_pinuse(ms, p, small_index2size(idx)); - mem = chunk2mem(p); - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - - else if (nb > ms->dvsize) { - if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ - mchunkptr b, p, r; - size_t rsize; - bindex_t i; - binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - b = smallbin_at(ms, i); - p = b->fd; - assert(chunksize(p) == small_index2size(i)); - unlink_first_small_chunk(ms, b, p, i); - rsize = small_index2size(i) - nb; - /* Fit here cannot be remainderless if 4byte sizes */ - if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(ms, p, small_index2size(i)); - else { - set_size_and_pinuse_of_inuse_chunk(ms, p, nb); - r = chunk_plus_offset(p, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(ms, r, rsize); - } - mem = chunk2mem(p); - check_malloced_chunk(ms, mem, nb); - goto postaction; + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + if (!PREACTION(ms)) { + void* mem; + size_t nb; + if (bytes <= MAX_SMALL_REQUEST) { + bindex_t idx; + binmap_t smallbits; + nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); + idx = small_index(nb); + smallbits = ms->smallmap >> idx; + + if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ + mchunkptr b, p; + idx += ~smallbits & 1; /* Uses next bin if idx empty */ + b = smallbin_at(ms, idx); + p = b->fd; + assert(chunksize(p) == small_index2size(idx)); + unlink_first_small_chunk(ms, b, p, idx); + set_inuse_and_pinuse(ms, p, small_index2size(idx)); + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (nb > ms->dvsize) { + if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ + mchunkptr b, p, r; + size_t rsize; + bindex_t i; + binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); + binmap_t leastbit = least_bit(leftbits); + compute_bit2idx(leastbit, i); + b = smallbin_at(ms, i); + p = b->fd; + assert(chunksize(p) == small_index2size(i)); + unlink_first_small_chunk(ms, b, p, i); + rsize = small_index2size(i) - nb; + /* Fit here cannot be remainderless if 4byte sizes */ + if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) + set_inuse_and_pinuse(ms, p, small_index2size(i)); + else { + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + r = chunk_plus_offset(p, nb); + set_size_and_pinuse_of_free_chunk(r, rsize); + replace_dv(ms, r, rsize); + } + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (ms->treemap != 0 && (mem = tmalloc_small(ms, nb)) != 0) { + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + } } - - else if (ms->treemap != 0 && (mem = tmalloc_small(ms, nb)) != 0) { - check_malloced_chunk(ms, mem, nb); - goto postaction; + else if (bytes >= MAX_REQUEST) + nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ + else { + nb = pad_request(bytes); + if (ms->treemap != 0 && (mem = tmalloc_large(ms, nb)) != 0) { + check_malloced_chunk(ms, mem, nb); + goto postaction; + } } - } - } - else if (bytes >= MAX_REQUEST) - nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ - else { - nb = pad_request(bytes); - if (ms->treemap != 0 && (mem = tmalloc_large(ms, nb)) != 0) { - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - } - - if (nb <= ms->dvsize) { - size_t rsize = ms->dvsize - nb; - mchunkptr p = ms->dv; - if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ - mchunkptr r = ms->dv = chunk_plus_offset(p, nb); - ms->dvsize = rsize; - set_size_and_pinuse_of_free_chunk(r, rsize); - set_size_and_pinuse_of_inuse_chunk(ms, p, nb); - } - else { /* exhaust dv */ - size_t dvs = ms->dvsize; - ms->dvsize = 0; - ms->dv = 0; - set_inuse_and_pinuse(ms, p, dvs); - } - mem = chunk2mem(p); - check_malloced_chunk(ms, mem, nb); - goto postaction; - } - - else if (nb < ms->topsize) { /* Split top */ - size_t rsize = ms->topsize -= nb; - mchunkptr p = ms->top; - mchunkptr r = ms->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(ms, p, nb); - mem = chunk2mem(p); - check_top_chunk(ms, ms->top); - check_malloced_chunk(ms, mem, nb); - goto postaction; + + if (nb <= ms->dvsize) { + size_t rsize = ms->dvsize - nb; + mchunkptr p = ms->dv; + if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ + mchunkptr r = ms->dv = chunk_plus_offset(p, nb); + ms->dvsize = rsize; + set_size_and_pinuse_of_free_chunk(r, rsize); + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + } + else { /* exhaust dv */ + size_t dvs = ms->dvsize; + ms->dvsize = 0; + ms->dv = 0; + set_inuse_and_pinuse(ms, p, dvs); + } + mem = chunk2mem(p); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + else if (nb < ms->topsize) { /* Split top */ + size_t rsize = ms->topsize -= nb; + mchunkptr p = ms->top; + mchunkptr r = ms->top = chunk_plus_offset(p, nb); + r->head = rsize | PINUSE_BIT; + set_size_and_pinuse_of_inuse_chunk(ms, p, nb); + mem = chunk2mem(p); + check_top_chunk(ms, ms->top); + check_malloced_chunk(ms, mem, nb); + goto postaction; + } + + mem = sys_alloc(ms, nb); + + postaction: + POSTACTION(ms); + return mem; } - - mem = sys_alloc(ms, nb); - - postaction: - POSTACTION(ms); - return mem; - } - - return 0; + + return 0; } void mspace_free(mspace msp, void* mem) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); + if (mem != 0) { + mchunkptr p = mem2chunk(mem); #if FOOTERS - mstate fm = get_mstate_for(p); - msp = msp; /* placate people compiling -Wunused */ + mstate fm = get_mstate_for(p); + (void)msp; /* placate people compiling -Wunused */ #else /* FOOTERS */ - mstate fm = (mstate)msp; + mstate fm = (mstate)msp; #endif /* FOOTERS */ - if (!ok_magic(fm)) { - USAGE_ERROR_ACTION(fm, p); - return; - } - if (!PREACTION(fm)) { - check_inuse_chunk(fm, p); - if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { - size_t psize = chunksize(p); - mchunkptr next = chunk_plus_offset(p, psize); - if (!pinuse(p)) { - size_t prevsize = p->prev_foot; - if (is_mmapped(p)) { - psize += prevsize + MMAP_FOOT_PAD; - if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) - fm->footprint -= psize; - goto postaction; - } - else { - mchunkptr prev = chunk_minus_offset(p, prevsize); - psize += prevsize; - p = prev; - if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ - if (p != fm->dv) { - unlink_chunk(fm, p, prevsize); - } - else if ((next->head & INUSE_BITS) == INUSE_BITS) { - fm->dvsize = psize; - set_free_with_pinuse(p, psize, next); - goto postaction; - } - } - else - goto erroraction; - } + if (!ok_magic(fm)) { + USAGE_ERROR_ACTION(fm, p); + return; } - - if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { - if (!cinuse(next)) { /* consolidate forward */ - if (next == fm->top) { - size_t tsize = fm->topsize += psize; - fm->top = p; - p->head = tsize | PINUSE_BIT; - if (p == fm->dv) { - fm->dv = 0; - fm->dvsize = 0; - } - if (should_trim(fm, tsize)) - sys_trim(fm, 0); - goto postaction; - } - else if (next == fm->dv) { - size_t dsize = fm->dvsize += psize; - fm->dv = p; - set_size_and_pinuse_of_free_chunk(p, dsize); - goto postaction; - } - else { - size_t nsize = chunksize(next); - psize += nsize; - unlink_chunk(fm, next, nsize); - set_size_and_pinuse_of_free_chunk(p, psize); - if (p == fm->dv) { - fm->dvsize = psize; - goto postaction; - } + if (!PREACTION(fm)) { + check_inuse_chunk(fm, p); + if (RTCHECK(ok_address(fm, p) && ok_inuse(p))) { + size_t psize = chunksize(p); + mchunkptr next = chunk_plus_offset(p, psize); + if (!pinuse(p)) { + size_t prevsize = p->prev_foot; + if (is_mmapped(p)) { + psize += prevsize + MMAP_FOOT_PAD; + if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) + fm->footprint -= psize; + goto postaction; + } + else { + mchunkptr prev = chunk_minus_offset(p, prevsize); + psize += prevsize; + p = prev; + if (RTCHECK(ok_address(fm, prev))) { /* consolidate backward */ + if (p != fm->dv) { + unlink_chunk(fm, p, prevsize); + } + else if ((next->head & INUSE_BITS) == INUSE_BITS) { + fm->dvsize = psize; + set_free_with_pinuse(p, psize, next); + goto postaction; + } + } + else + goto erroraction; + } + } + + if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) { + if (!cinuse(next)) { /* consolidate forward */ + if (next == fm->top) { + size_t tsize = fm->topsize += psize; + fm->top = p; + p->head = tsize | PINUSE_BIT; + if (p == fm->dv) { + fm->dv = 0; + fm->dvsize = 0; + } + if (should_trim(fm, tsize)) + sys_trim(fm, 0); + goto postaction; + } + else if (next == fm->dv) { + size_t dsize = fm->dvsize += psize; + fm->dv = p; + set_size_and_pinuse_of_free_chunk(p, dsize); + goto postaction; + } + else { + size_t nsize = chunksize(next); + psize += nsize; + unlink_chunk(fm, next, nsize); + set_size_and_pinuse_of_free_chunk(p, psize); + if (p == fm->dv) { + fm->dvsize = psize; + goto postaction; + } + } + } + else + set_free_with_pinuse(p, psize, next); + + if (is_small(psize)) { + insert_small_chunk(fm, p, psize); + check_free_chunk(fm, p); + } + else { + tchunkptr tp = (tchunkptr)p; + insert_large_chunk(fm, tp, psize); + check_free_chunk(fm, p); + if (--fm->release_checks == 0) + release_unused_segments(fm); + } + goto postaction; + } } - } - else - set_free_with_pinuse(p, psize, next); - - if (is_small(psize)) { - insert_small_chunk(fm, p, psize); - check_free_chunk(fm, p); - } - else { - tchunkptr tp = (tchunkptr)p; - insert_large_chunk(fm, tp, psize); - check_free_chunk(fm, p); - if (--fm->release_checks == 0) - release_unused_segments(fm); - } - goto postaction; + erroraction: + USAGE_ERROR_ACTION(fm, p); + postaction: + POSTACTION(fm); } - } - erroraction: - USAGE_ERROR_ACTION(fm, p); - postaction: - POSTACTION(fm); } - } } void* mspace_calloc(mspace msp, size_t n_elements, size_t elem_size) { - void* mem; - size_t req = 0; - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - if (n_elements != 0) { - req = n_elements * elem_size; - if (((n_elements | elem_size) & ~(size_t)0xffff) && - (req / n_elements != elem_size)) - req = MAX_SIZE_T; /* force downstream failure on overflow */ - } - mem = internal_malloc(ms, req); - if (mem != 0 && calloc_must_clear(mem2chunk(mem))) - memset(mem, 0, req); - return mem; + void* mem; + size_t req = 0; + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + if (n_elements != 0) { + req = n_elements * elem_size; + if (((n_elements | elem_size) & ~(size_t)0xffff) && + (req / n_elements != elem_size)) + req = MAX_SIZE_T; /* force downstream failure on overflow */ + } + mem = internal_malloc(ms, req); + if (mem != 0 && calloc_must_clear(mem2chunk(mem))) + memset(mem, 0, req); + return mem; } void* mspace_realloc(mspace msp, void* oldmem, size_t bytes) { - if (oldmem == 0) - return mspace_malloc(msp, bytes); + void* mem = 0; + if (oldmem == 0) { + mem = mspace_malloc(msp, bytes); + } + else if (bytes >= MAX_REQUEST) { + MALLOC_FAILURE_ACTION; + } #ifdef REALLOC_ZERO_BYTES_FREES - if (bytes == 0) { - mspace_free(msp, oldmem); - return 0; - } + else if (bytes == 0) { + mspace_free(msp, oldmem); + } #endif /* REALLOC_ZERO_BYTES_FREES */ - else { -#if FOOTERS - mchunkptr p = mem2chunk(oldmem); - mstate ms = get_mstate_for(p); + else { + size_t nb = request2size(bytes); + mchunkptr oldp = mem2chunk(oldmem); +#if ! FOOTERS + mstate m = (mstate)msp; #else /* FOOTERS */ - mstate ms = (mstate)msp; + mstate m = get_mstate_for(oldp); + if (!ok_magic(m)) { + USAGE_ERROR_ACTION(m, oldmem); + return 0; + } #endif /* FOOTERS */ - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; + if (!PREACTION(m)) { + mchunkptr newp = try_realloc_chunk(m, oldp, nb, 1); + POSTACTION(m); + if (newp != 0) { + check_inuse_chunk(m, newp); + mem = chunk2mem(newp); + } + else { + mem = mspace_malloc(m, bytes); + if (mem != 0) { + size_t oc = chunksize(oldp) - overhead_for(oldp); + memcpy(mem, oldmem, (oc < bytes)? oc : bytes); + mspace_free(m, oldmem); + } + } + } + } + return mem; +} + +void* mspace_realloc_in_place(mspace msp, void* oldmem, size_t bytes) { + void* mem = 0; + if (oldmem != 0) { + if (bytes >= MAX_REQUEST) { + MALLOC_FAILURE_ACTION; + } + else { + size_t nb = request2size(bytes); + mchunkptr oldp = mem2chunk(oldmem); +#if ! FOOTERS + mstate m = (mstate)msp; +#else /* FOOTERS */ + mstate m = get_mstate_for(oldp); + (void)msp; /* placate people compiling -Wunused */ + if (!ok_magic(m)) { + USAGE_ERROR_ACTION(m, oldmem); + return 0; + } +#endif /* FOOTERS */ + if (!PREACTION(m)) { + mchunkptr newp = try_realloc_chunk(m, oldp, nb, 0); + POSTACTION(m); + if (newp == oldp) { + check_inuse_chunk(m, newp); + mem = oldmem; + } + } + } } - return internal_realloc(ms, oldmem, bytes); - } + return mem; } void* mspace_memalign(mspace msp, size_t alignment, size_t bytes) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - return internal_memalign(ms, alignment, bytes); + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + if (alignment <= MALLOC_ALIGNMENT) + return mspace_malloc(msp, bytes); + return internal_memalign(ms, alignment, bytes); } void** mspace_independent_calloc(mspace msp, size_t n_elements, size_t elem_size, void* chunks[]) { - size_t sz = elem_size; /* serves as 1-element array */ - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - return ialloc(ms, n_elements, &sz, 3, chunks); + size_t sz = elem_size; /* serves as 1-element array */ + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return ialloc(ms, n_elements, &sz, 3, chunks); } void** mspace_independent_comalloc(mspace msp, size_t n_elements, size_t sizes[], void* chunks[]) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - return 0; - } - return ialloc(ms, n_elements, sizes, 0, chunks); + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + return 0; + } + return ialloc(ms, n_elements, sizes, 0, chunks); +} + +size_t mspace_bulk_free(mspace msp, void* array[], size_t nelem) { + return internal_bulk_free((mstate)msp, array, nelem); +} + +#if MALLOC_INSPECT_ALL +void mspace_inspect_all(mspace msp, + void(*handler)(void *start, + void *end, + size_t used_bytes, + void* callback_arg), + void* arg) { + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + if (!PREACTION(ms)) { + internal_inspect_all(ms, handler, arg); + POSTACTION(ms); + } + } + else { + USAGE_ERROR_ACTION(ms,ms); + } } +#endif /* MALLOC_INSPECT_ALL */ int mspace_trim(mspace msp, size_t pad) { - int result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - if (!PREACTION(ms)) { - result = sys_trim(ms, pad); - POSTACTION(ms); + int result = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + if (!PREACTION(ms)) { + result = sys_trim(ms, pad); + POSTACTION(ms); + } } - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; + else { + USAGE_ERROR_ACTION(ms,ms); + } + return result; } +#if !NO_MALLOC_STATS void mspace_malloc_stats(mspace msp) { - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - internal_malloc_stats(ms); - } - else { - USAGE_ERROR_ACTION(ms,ms); - } + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + internal_malloc_stats(ms); + } + else { + USAGE_ERROR_ACTION(ms,ms); + } } +#endif /* NO_MALLOC_STATS */ size_t mspace_footprint(mspace msp) { - size_t result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - result = ms->footprint; - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; + size_t result = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + result = ms->footprint; + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return result; } - size_t mspace_max_footprint(mspace msp) { - size_t result = 0; - mstate ms = (mstate)msp; - if (ok_magic(ms)) { - result = ms->max_footprint; - } - else { - USAGE_ERROR_ACTION(ms,ms); - } - return result; + size_t result = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + result = ms->max_footprint; + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return result; +} + +size_t mspace_footprint_limit(mspace msp) { + size_t result = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + size_t maf = ms->footprint_limit; + result = (maf == 0) ? MAX_SIZE_T : maf; + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return result; } +size_t mspace_set_footprint_limit(mspace msp, size_t bytes) { + size_t result = 0; + mstate ms = (mstate)msp; + if (ok_magic(ms)) { + if (bytes == 0) + result = granularity_align(1); /* Use minimal size */ + if (bytes == MAX_SIZE_T) + result = 0; /* disable */ + else + result = granularity_align(bytes); + ms->footprint_limit = result; + } + else { + USAGE_ERROR_ACTION(ms,ms); + } + return result; +} #if !NO_MALLINFO struct mallinfo mspace_mallinfo(mspace msp) { - mstate ms = (mstate)msp; - if (!ok_magic(ms)) { - USAGE_ERROR_ACTION(ms,ms); - } - return internal_mallinfo(ms); + mstate ms = (mstate)msp; + if (!ok_magic(ms)) { + USAGE_ERROR_ACTION(ms,ms); + } + return internal_mallinfo(ms); } #endif /* NO_MALLINFO */ -size_t mspace_usable_size(void* mem) { - if (mem != 0) { - mchunkptr p = mem2chunk(mem); - if (is_inuse(p)) - return chunksize(p) - overhead_for(p); - } - return 0; +size_t mspace_usable_size(const void* mem) { + if (mem != 0) { + mchunkptr p = mem2chunk(mem); + if (is_inuse(p)) + return chunksize(p) - overhead_for(p); + } + return 0; } int mspace_mallopt(int param_number, int value) { - return change_mparam(param_number, value); + return change_mparam(param_number, value); } #endif /* MSPACES */ @@ -5421,287 +5985,310 @@ int mspace_mallopt(int param_number, int value) { /* -------------------- Alternative MORECORE functions ------------------- */ /* - Guidelines for creating a custom version of MORECORE: - - * For best performance, MORECORE should allocate in multiples of pagesize. - * MORECORE may allocate more memory than requested. (Or even less, - but this will usually result in a malloc failure.) - * MORECORE must not allocate memory when given argument zero, but - instead return one past the end address of memory from previous - nonzero call. - * For best performance, consecutive calls to MORECORE with positive - arguments should return increasing addresses, indicating that - space has been contiguously extended. - * Even though consecutive calls to MORECORE need not return contiguous - addresses, it must be OK for malloc'ed chunks to span multiple - regions in those cases where they do happen to be contiguous. - * MORECORE need not handle negative arguments -- it may instead - just return MFAIL when given negative arguments. - Negative arguments are always multiples of pagesize. MORECORE - must not misinterpret negative args as large positive unsigned - args. You can suppress all such calls from even occurring by defining - MORECORE_CANNOT_TRIM, - - As an example alternative MORECORE, here is a custom allocator - kindly contributed for pre-OSX macOS. It uses virtually but not - necessarily physically contiguous non-paged memory (locked in, - present and won't get swapped out). You can use it by uncommenting - this section, adding some #includes, and setting up the appropriate - defines above: - - #define MORECORE osMoreCore - - There is also a shutdown routine that should somehow be called for - cleanup upon program exit. - - #define MAX_POOL_ENTRIES 100 - #define MINIMUM_MORECORE_SIZE (64 * 1024U) - static int next_os_pool; - void *our_os_pools[MAX_POOL_ENTRIES]; - - void *osMoreCore(int size) - { - void *ptr = 0; - static void *sbrk_top = 0; - - if (size > 0) - { - if (size < MINIMUM_MORECORE_SIZE) - size = MINIMUM_MORECORE_SIZE; - if (CurrentExecutionLevel() == kTaskLevel) - ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0); - if (ptr == 0) - { - return (void *) MFAIL; - } - // save ptrs so they can be freed during cleanup - our_os_pools[next_os_pool] = ptr; - next_os_pool++; - ptr = (void *) ((((size_t) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK); - sbrk_top = (char *) ptr + size; - return ptr; - } - else if (size < 0) - { - // we don't currently support shrink behavior - return (void *) MFAIL; - } - else - { - return sbrk_top; - } - } - - // cleanup any allocated memory pools - // called as last thing before shutting down driver - - void osCleanupMem(void) - { - void **ptr; - - for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++) - if (*ptr) - { - PoolDeallocate(*ptr); - *ptr = 0; - } - } - -*/ + Guidelines for creating a custom version of MORECORE: + + * For best performance, MORECORE should allocate in multiples of pagesize. + * MORECORE may allocate more memory than requested. (Or even less, + but this will usually result in a malloc failure.) + * MORECORE must not allocate memory when given argument zero, but + instead return one past the end address of memory from previous + nonzero call. + * For best performance, consecutive calls to MORECORE with positive + arguments should return increasing addresses, indicating that + space has been contiguously extended. + * Even though consecutive calls to MORECORE need not return contiguous + addresses, it must be OK for malloc'ed chunks to span multiple + regions in those cases where they do happen to be contiguous. + * MORECORE need not handle negative arguments -- it may instead + just return MFAIL when given negative arguments. + Negative arguments are always multiples of pagesize. MORECORE + must not misinterpret negative args as large positive unsigned + args. You can suppress all such calls from even occurring by defining + MORECORE_CANNOT_TRIM, + + As an example alternative MORECORE, here is a custom allocator + kindly contributed for pre-OSX macOS. It uses virtually but not + necessarily physically contiguous non-paged memory (locked in, + present and won't get swapped out). You can use it by uncommenting + this section, adding some #includes, and setting up the appropriate + defines above: + + #define MORECORE osMoreCore + + There is also a shutdown routine that should somehow be called for + cleanup upon program exit. + + #define MAX_POOL_ENTRIES 100 + #define MINIMUM_MORECORE_SIZE (64 * 1024U) + static int next_os_pool; + void *our_os_pools[MAX_POOL_ENTRIES]; + + void *osMoreCore(int size) + { + void *ptr = 0; + static void *sbrk_top = 0; + + if (size > 0) + { + if (size < MINIMUM_MORECORE_SIZE) + size = MINIMUM_MORECORE_SIZE; + if (CurrentExecutionLevel() == kTaskLevel) + ptr = PoolAllocateResident(size + RM_PAGE_SIZE, 0); + if (ptr == 0) + { + return (void *) MFAIL; + } + // save ptrs so they can be freed during cleanup + our_os_pools[next_os_pool] = ptr; + next_os_pool++; + ptr = (void *) ((((size_t) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK); + sbrk_top = (char *) ptr + size; + return ptr; + } + else if (size < 0) + { + // we don't currently support shrink behavior + return (void *) MFAIL; + } + else + { + return sbrk_top; + } + } + + // cleanup any allocated memory pools + // called as last thing before shutting down driver + + void osCleanupMem(void) + { + void **ptr; + + for (ptr = our_os_pools; ptr < &our_os_pools[MAX_POOL_ENTRIES]; ptr++) + if (*ptr) + { + PoolDeallocate(*ptr); + *ptr = 0; + } + } + + */ /* ----------------------------------------------------------------------- -History: - V2.8.4 Wed May 27 09:56:23 2009 Doug Lea (dl at gee) - * Use zeros instead of prev foot for is_mmapped - * Add mspace_track_large_chunks; thanks to Jean Brouwers - * Fix set_inuse in internal_realloc; thanks to Jean Brouwers - * Fix insufficient sys_alloc padding when using 16byte alignment - * Fix bad error check in mspace_footprint - * Adaptations for ptmalloc; thanks to Wolfram Gloger. - * Reentrant spin locks; thanks to Earl Chew and others - * Win32 improvements; thanks to Niall Douglas and Earl Chew - * Add NO_SEGMENT_TRAVERSAL and MAX_RELEASE_CHECK_RATE options - * Extension hook in malloc_state - * Various small adjustments to reduce warnings on some compilers - * Various configuration extensions/changes for more platforms. Thanks - to all who contributed these. - - V2.8.3 Thu Sep 22 11:16:32 2005 Doug Lea (dl at gee) - * Add max_footprint functions - * Ensure all appropriate literals are size_t - * Fix conditional compilation problem for some #define settings - * Avoid concatenating segments with the one provided - in create_mspace_with_base - * Rename some variables to avoid compiler shadowing warnings - * Use explicit lock initialization. - * Better handling of sbrk interference. - * Simplify and fix segment insertion, trimming and mspace_destroy - * Reinstate REALLOC_ZERO_BYTES_FREES option from 2.7.x - * Thanks especially to Dennis Flanagan for help on these. - - V2.8.2 Sun Jun 12 16:01:10 2005 Doug Lea (dl at gee) - * Fix memalign brace error. - - V2.8.1 Wed Jun 8 16:11:46 2005 Doug Lea (dl at gee) - * Fix improper #endif nesting in C++ - * Add explicit casts needed for C++ - - V2.8.0 Mon May 30 14:09:02 2005 Doug Lea (dl at gee) - * Use trees for large bins - * Support mspaces - * Use segments to unify sbrk-based and mmap-based system allocation, - removing need for emulation on most platforms without sbrk. - * Default safety checks - * Optional footer checks. Thanks to William Robertson for the idea. - * Internal code refactoring - * Incorporate suggestions and platform-specific changes. - Thanks to Dennis Flanagan, Colin Plumb, Niall Douglas, - Aaron Bachmann, Emery Berger, and others. - * Speed up non-fastbin processing enough to remove fastbins. - * Remove useless cfree() to avoid conflicts with other apps. - * Remove internal memcpy, memset. Compilers handle builtins better. - * Remove some options that no one ever used and rename others. - - V2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee) - * Fix malloc_state bitmap array misdeclaration - - V2.7.1 Thu Jul 25 10:58:03 2002 Doug Lea (dl at gee) - * Allow tuning of FIRST_SORTED_BIN_SIZE - * Use PTR_UINT as type for all ptr->int casts. Thanks to John Belmonte. - * Better detection and support for non-contiguousness of MORECORE. - Thanks to Andreas Mueller, Conal Walsh, and Wolfram Gloger - * Bypass most of malloc if no frees. Thanks To Emery Berger. - * Fix freeing of old top non-contiguous chunk im sysmalloc. - * Raised default trim and map thresholds to 256K. - * Fix mmap-related #defines. Thanks to Lubos Lunak. - * Fix copy macros; added LACKS_FCNTL_H. Thanks to Neal Walfield. - * Branch-free bin calculation - * Default trim and mmap thresholds now 256K. - - V2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) - * Introduce independent_comalloc and independent_calloc. - Thanks to Michael Pachos for motivation and help. - * Make optional .h file available - * Allow > 2GB requests on 32bit systems. - * new WIN32 sbrk, mmap, munmap, lock code from . - Thanks also to Andreas Mueller , - and Anonymous. - * Allow override of MALLOC_ALIGNMENT (Thanks to Ruud Waij for - helping test this.) - * memalign: check alignment arg - * realloc: don't try to shift chunks backwards, since this - leads to more fragmentation in some programs and doesn't - seem to help in any others. - * Collect all cases in malloc requiring system memory into sysmalloc - * Use mmap as backup to sbrk - * Place all internal state in malloc_state - * Introduce fastbins (although similar to 2.5.1) - * Many minor tunings and cosmetic improvements - * Introduce USE_PUBLIC_MALLOC_WRAPPERS, USE_MALLOC_LOCK - * Introduce MALLOC_FAILURE_ACTION, MORECORE_CONTIGUOUS - Thanks to Tony E. Bennett and others. - * Include errno.h to support default failure action. - - V2.6.6 Sun Dec 5 07:42:19 1999 Doug Lea (dl at gee) - * return null for negative arguments - * Added Several WIN32 cleanups from Martin C. Fong - * Add 'LACKS_SYS_PARAM_H' for those systems without 'sys/param.h' - (e.g. WIN32 platforms) - * Cleanup header file inclusion for WIN32 platforms - * Cleanup code to avoid Microsoft Visual C++ compiler complaints - * Add 'USE_DL_PREFIX' to quickly allow co-existence with existing - memory allocation routines - * Set 'malloc_getpagesize' for WIN32 platforms (needs more work) - * Use 'assert' rather than 'ASSERT' in WIN32 code to conform to - usage of 'assert' in non-WIN32 code - * Improve WIN32 'sbrk()' emulation's 'findRegion()' routine to - avoid infinite loop - * Always call 'fREe()' rather than 'free()' - - V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) - * Fixed ordering problem with boundary-stamping - - V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) - * Added pvalloc, as recommended by H.J. Liu - * Added 64bit pointer support mainly from Wolfram Gloger - * Added anonymously donated WIN32 sbrk emulation - * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen - * malloc_extend_top: fix mask error that caused wastage after - foreign sbrks - * Add linux mremap support code from HJ Liu - - V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) - * Integrated most documentation with the code. - * Add support for mmap, with help from - Wolfram Gloger (Gloger@lrz.uni-muenchen.de). - * Use last_remainder in more cases. - * Pack bins using idea from colin@nyx10.cs.du.edu - * Use ordered bins instead of best-fit threshhold - * Eliminate block-local decls to simplify tracing and debugging. - * Support another case of realloc via move into top - * Fix error occuring when initial sbrk_base not word-aligned. - * Rely on page size for units instead of SBRK_UNIT to - avoid surprises about sbrk alignment conventions. - * Add mallinfo, mallopt. Thanks to Raymond Nijssen - (raymond@es.ele.tue.nl) for the suggestion. - * Add `pad' argument to malloc_trim and top_pad mallopt parameter. - * More precautions for cases where other routines call sbrk, - courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). - * Added macros etc., allowing use in linux libc from - H.J. Lu (hjl@gnu.ai.mit.edu) - * Inverted this history list - - V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) - * Re-tuned and fixed to behave more nicely with V2.6.0 changes. - * Removed all preallocation code since under current scheme - the work required to undo bad preallocations exceeds - the work saved in good cases for most test programs. - * No longer use return list or unconsolidated bins since - no scheme using them consistently outperforms those that don't - given above changes. - * Use best fit for very large chunks to prevent some worst-cases. - * Added some support for debugging - - V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) - * Removed footers when chunks are in use. Thanks to - Paul Wilson (wilson@cs.texas.edu) for the suggestion. - - V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) - * Added malloc_trim, with help from Wolfram Gloger - (wmglo@Dent.MED.Uni-Muenchen.DE). - - V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) - - V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) - * realloc: try to expand in both directions - * malloc: swap order of clean-bin strategy; - * realloc: only conditionally expand backwards - * Try not to scavenge used bins - * Use bin counts as a guide to preallocation - * Occasionally bin return list chunks in first scan - * Add a few optimizations from colin@nyx10.cs.du.edu - - V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) - * faster bin computation & slightly different binning - * merged all consolidations to one part of malloc proper - (eliminating old malloc_find_space & malloc_clean_bin) - * Scan 2 returns chunks (not just 1) - * Propagate failure in realloc if malloc returns 0 - * Add stuff to allow compilation on non-ANSI compilers - from kpv@research.att.com - - V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) - * removed potential for odd address access in prev_chunk - * removed dependency on getpagesize.h - * misc cosmetics and a bit more internal documentation - * anticosmetics: mangled names in macros to evade debugger strangeness - * tested on sparc, hp-700, dec-mips, rs6000 - with gcc & native cc (hp, dec only) allowing - Detlefs & Zorn comparison study (in SIGPLAN Notices.) - - Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) - * Based loosely on libg++-1.2X malloc. (It retains some of the overall - structure of old version, but most details differ.) - -*/ + History: + v2.8.6 Wed Aug 29 06:57:58 2012 Doug Lea + * fix bad comparison in dlposix_memalign + * don't reuse adjusted asize in sys_alloc + * add LOCK_AT_FORK -- thanks to Kirill Artamonov for the suggestion + * reduce compiler warnings -- thanks to all who reported/suggested these + + v2.8.5 Sun May 22 10:26:02 2011 Doug Lea (dl at gee) + * Always perform unlink checks unless INSECURE + * Add posix_memalign. + * Improve realloc to expand in more cases; expose realloc_in_place. + Thanks to Peter Buhr for the suggestion. + * Add footprint_limit, inspect_all, bulk_free. Thanks + to Barry Hayes and others for the suggestions. + * Internal refactorings to avoid calls while holding locks + * Use non-reentrant locks by default. Thanks to Roland McGrath + for the suggestion. + * Small fixes to mspace_destroy, reset_on_error. + * Various configuration extensions/changes. Thanks + to all who contributed these. + + V2.8.4a Thu Apr 28 14:39:43 2011 (dl at gee.cs.oswego.edu) + * Update Creative Commons URL + + V2.8.4 Wed May 27 09:56:23 2009 Doug Lea (dl at gee) + * Use zeros instead of prev foot for is_mmapped + * Add mspace_track_large_chunks; thanks to Jean Brouwers + * Fix set_inuse in internal_realloc; thanks to Jean Brouwers + * Fix insufficient sys_alloc padding when using 16byte alignment + * Fix bad error check in mspace_footprint + * Adaptations for ptmalloc; thanks to Wolfram Gloger. + * Reentrant spin locks; thanks to Earl Chew and others + * Win32 improvements; thanks to Niall Douglas and Earl Chew + * Add NO_SEGMENT_TRAVERSAL and MAX_RELEASE_CHECK_RATE options + * Extension hook in malloc_state + * Various small adjustments to reduce warnings on some compilers + * Various configuration extensions/changes for more platforms. Thanks + to all who contributed these. + + V2.8.3 Thu Sep 22 11:16:32 2005 Doug Lea (dl at gee) + * Add max_footprint functions + * Ensure all appropriate literals are size_t + * Fix conditional compilation problem for some #define settings + * Avoid concatenating segments with the one provided + in create_mspace_with_base + * Rename some variables to avoid compiler shadowing warnings + * Use explicit lock initialization. + * Better handling of sbrk interference. + * Simplify and fix segment insertion, trimming and mspace_destroy + * Reinstate REALLOC_ZERO_BYTES_FREES option from 2.7.x + * Thanks especially to Dennis Flanagan for help on these. + + V2.8.2 Sun Jun 12 16:01:10 2005 Doug Lea (dl at gee) + * Fix memalign brace error. + + V2.8.1 Wed Jun 8 16:11:46 2005 Doug Lea (dl at gee) + * Fix improper #endif nesting in C++ + * Add explicit casts needed for C++ + + V2.8.0 Mon May 30 14:09:02 2005 Doug Lea (dl at gee) + * Use trees for large bins + * Support mspaces + * Use segments to unify sbrk-based and mmap-based system allocation, + removing need for emulation on most platforms without sbrk. + * Default safety checks + * Optional footer checks. Thanks to William Robertson for the idea. + * Internal code refactoring + * Incorporate suggestions and platform-specific changes. + Thanks to Dennis Flanagan, Colin Plumb, Niall Douglas, + Aaron Bachmann, Emery Berger, and others. + * Speed up non-fastbin processing enough to remove fastbins. + * Remove useless cfree() to avoid conflicts with other apps. + * Remove internal memcpy, memset. Compilers handle builtins better. + * Remove some options that no one ever used and rename others. + + V2.7.2 Sat Aug 17 09:07:30 2002 Doug Lea (dl at gee) + * Fix malloc_state bitmap array misdeclaration + + V2.7.1 Thu Jul 25 10:58:03 2002 Doug Lea (dl at gee) + * Allow tuning of FIRST_SORTED_BIN_SIZE + * Use PTR_UINT as type for all ptr->int casts. Thanks to John Belmonte. + * Better detection and support for non-contiguousness of MORECORE. + Thanks to Andreas Mueller, Conal Walsh, and Wolfram Gloger + * Bypass most of malloc if no frees. Thanks To Emery Berger. + * Fix freeing of old top non-contiguous chunk im sysmalloc. + * Raised default trim and map thresholds to 256K. + * Fix mmap-related #defines. Thanks to Lubos Lunak. + * Fix copy macros; added LACKS_FCNTL_H. Thanks to Neal Walfield. + * Branch-free bin calculation + * Default trim and mmap thresholds now 256K. + + V2.7.0 Sun Mar 11 14:14:06 2001 Doug Lea (dl at gee) + * Introduce independent_comalloc and independent_calloc. + Thanks to Michael Pachos for motivation and help. + * Make optional .h file available + * Allow > 2GB requests on 32bit systems. + * new WIN32 sbrk, mmap, munmap, lock code from . + Thanks also to Andreas Mueller , + and Anonymous. + * Allow override of MALLOC_ALIGNMENT (Thanks to Ruud Waij for + helping test this.) + * memalign: check alignment arg + * realloc: don't try to shift chunks backwards, since this + leads to more fragmentation in some programs and doesn't + seem to help in any others. + * Collect all cases in malloc requiring system memory into sysmalloc + * Use mmap as backup to sbrk + * Place all internal state in malloc_state + * Introduce fastbins (although similar to 2.5.1) + * Many minor tunings and cosmetic improvements + * Introduce USE_PUBLIC_MALLOC_WRAPPERS, USE_MALLOC_LOCK + * Introduce MALLOC_FAILURE_ACTION, MORECORE_CONTIGUOUS + Thanks to Tony E. Bennett and others. + * Include errno.h to support default failure action. + + V2.6.6 Sun Dec 5 07:42:19 1999 Doug Lea (dl at gee) + * return null for negative arguments + * Added Several WIN32 cleanups from Martin C. Fong + * Add 'LACKS_SYS_PARAM_H' for those systems without 'sys/param.h' + (e.g. WIN32 platforms) + * Cleanup header file inclusion for WIN32 platforms + * Cleanup code to avoid Microsoft Visual C++ compiler complaints + * Add 'USE_DL_PREFIX' to quickly allow co-existence with existing + memory allocation routines + * Set 'malloc_getpagesize' for WIN32 platforms (needs more work) + * Use 'assert' rather than 'ASSERT' in WIN32 code to conform to + usage of 'assert' in non-WIN32 code + * Improve WIN32 'sbrk()' emulation's 'findRegion()' routine to + avoid infinite loop + * Always call 'fREe()' rather than 'free()' + + V2.6.5 Wed Jun 17 15:57:31 1998 Doug Lea (dl at gee) + * Fixed ordering problem with boundary-stamping + + V2.6.3 Sun May 19 08:17:58 1996 Doug Lea (dl at gee) + * Added pvalloc, as recommended by H.J. Liu + * Added 64bit pointer support mainly from Wolfram Gloger + * Added anonymously donated WIN32 sbrk emulation + * Malloc, calloc, getpagesize: add optimizations from Raymond Nijssen + * malloc_extend_top: fix mask error that caused wastage after + foreign sbrks + * Add linux mremap support code from HJ Liu + + V2.6.2 Tue Dec 5 06:52:55 1995 Doug Lea (dl at gee) + * Integrated most documentation with the code. + * Add support for mmap, with help from + Wolfram Gloger (Gloger@lrz.uni-muenchen.de). + * Use last_remainder in more cases. + * Pack bins using idea from colin@nyx10.cs.du.edu + * Use ordered bins instead of best-fit threshhold + * Eliminate block-local decls to simplify tracing and debugging. + * Support another case of realloc via move into top + * Fix error occuring when initial sbrk_base not word-aligned. + * Rely on page size for units instead of SBRK_UNIT to + avoid surprises about sbrk alignment conventions. + * Add mallinfo, mallopt. Thanks to Raymond Nijssen + (raymond@es.ele.tue.nl) for the suggestion. + * Add `pad' argument to malloc_trim and top_pad mallopt parameter. + * More precautions for cases where other routines call sbrk, + courtesy of Wolfram Gloger (Gloger@lrz.uni-muenchen.de). + * Added macros etc., allowing use in linux libc from + H.J. Lu (hjl@gnu.ai.mit.edu) + * Inverted this history list + + V2.6.1 Sat Dec 2 14:10:57 1995 Doug Lea (dl at gee) + * Re-tuned and fixed to behave more nicely with V2.6.0 changes. + * Removed all preallocation code since under current scheme + the work required to undo bad preallocations exceeds + the work saved in good cases for most test programs. + * No longer use return list or unconsolidated bins since + no scheme using them consistently outperforms those that don't + given above changes. + * Use best fit for very large chunks to prevent some worst-cases. + * Added some support for debugging + + V2.6.0 Sat Nov 4 07:05:23 1995 Doug Lea (dl at gee) + * Removed footers when chunks are in use. Thanks to + Paul Wilson (wilson@cs.texas.edu) for the suggestion. + + V2.5.4 Wed Nov 1 07:54:51 1995 Doug Lea (dl at gee) + * Added malloc_trim, with help from Wolfram Gloger + (wmglo@Dent.MED.Uni-Muenchen.DE). + + V2.5.3 Tue Apr 26 10:16:01 1994 Doug Lea (dl at g) + + V2.5.2 Tue Apr 5 16:20:40 1994 Doug Lea (dl at g) + * realloc: try to expand in both directions + * malloc: swap order of clean-bin strategy; + * realloc: only conditionally expand backwards + * Try not to scavenge used bins + * Use bin counts as a guide to preallocation + * Occasionally bin return list chunks in first scan + * Add a few optimizations from colin@nyx10.cs.du.edu + + V2.5.1 Sat Aug 14 15:40:43 1993 Doug Lea (dl at g) + * faster bin computation & slightly different binning + * merged all consolidations to one part of malloc proper + (eliminating old malloc_find_space & malloc_clean_bin) + * Scan 2 returns chunks (not just 1) + * Propagate failure in realloc if malloc returns 0 + * Add stuff to allow compilation on non-ANSI compilers + from kpv@research.att.com + + V2.5 Sat Aug 7 07:41:59 1993 Doug Lea (dl at g.oswego.edu) + * removed potential for odd address access in prev_chunk + * removed dependency on getpagesize.h + * misc cosmetics and a bit more internal documentation + * anticosmetics: mangled names in macros to evade debugger strangeness + * tested on sparc, hp-700, dec-mips, rs6000 + with gcc & native cc (hp, dec only) allowing + Detlefs & Zorn comparison study (in SIGPLAN Notices.) + + Trial version Fri Aug 28 13:14:29 1992 Doug Lea (dl at g.oswego.edu) + * Based loosely on libg++-1.2X malloc. (It retains some of the overall + structure of old version, but most details differ.) + + */ \ No newline at end of file From 88d88688e48fb393cd04101bef82d140b94d57df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Tue, 12 Feb 2013 02:02:57 +0200 Subject: [PATCH 054/326] Skip, or simulate success for the test_dlmalloc test that checks memory allocation linearity/contiguity when compiling it natively to OSX. On that platform, this condition has been detected to not hold. Retain the check still for other platforms. --- tests/dlmalloc_test.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/dlmalloc_test.c b/tests/dlmalloc_test.c index 817778bdb2e59..fc640d4611cf8 100644 --- a/tests/dlmalloc_test.c +++ b/tests/dlmalloc_test.c @@ -42,8 +42,12 @@ int main(int ac, char **av) //printf("zz last: %d\n", (int)last); char *newer = (char*)malloc(512); // should be different //printf("zz newer: %d\n", (int)newer); +#ifndef __APPLE__ c1 += first == last; c2 += first == newer; +#else // On OSX, it's been detected that memory is not necessarily allocated linearly, so skip this check and simulate success. + ++c1; +#endif } printf("*%d,%d*\n", c1, c2); } From d2e0254015e0bb4d3a253d44df46b4696e8e8000 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 13 Feb 2013 00:09:37 -0800 Subject: [PATCH 055/326] prepare jpeg as well as jpg --- src/library_browser.js | 3 ++- tests/runner.py | 10 ++++++++-- tests/sdl_image_jpeg.c | 45 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 tests/sdl_image_jpeg.c diff --git a/src/library_browser.js b/src/library_browser.js index 6b1e956ded8b4..e04aedd5c77ca 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -68,6 +68,7 @@ mergeInto(LibraryManager.library, { function getMimetype(name) { return { 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', 'png': 'image/png', 'bmp': 'image/bmp', 'ogg': 'audio/ogg', @@ -81,7 +82,7 @@ mergeInto(LibraryManager.library, { var imagePlugin = {}; imagePlugin['canHandle'] = function(name) { - return !Module.noImageDecoding && name.substr(-4) in { '.jpg': 1, '.png': 1, '.bmp': 1 }; + return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/.exec(name); }; imagePlugin['handle'] = function(byteArray, name, onload, onerror) { var b = null; diff --git a/tests/runner.py b/tests/runner.py index 71035b02bac9f..ee710fc9dcb76 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10030,6 +10030,12 @@ def test_sdl_image(self): Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'sdl_image.c'), '-O2', '--preload-file', 'screenshot.jpg', '-o', 'page.html']).communicate() self.run_browser('page.html', '', '/report_result?600') + def test_sdl_image_jpeg(self): + shutil.copyfile(path_from_root('tests', 'screenshot.jpg'), os.path.join(self.get_dir(), 'screenshot.jpeg')) + open(os.path.join(self.get_dir(), 'sdl_image_jpeg.c'), 'w').write(self.with_report_result(open(path_from_root('tests', 'sdl_image_jpeg.c')).read())) + Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'sdl_image_jpeg.c'), '--preload-file', 'screenshot.jpeg', '-o', 'page.html']).communicate() + self.run_browser('page.html', '', '/report_result?600') + def test_sdl_image_compressed(self): for image, width in [(path_from_root('tests', 'screenshot2.png'), 300), (path_from_root('tests', 'screenshot.jpg'), 600)]: @@ -10049,12 +10055,12 @@ def test_sdl_image_compressed(self): self.run_browser('page.html', '', '/report_result?' + str(width)) def test_sdl_image_prepare(self): - # load an image file, get pixel data. Also O2 coverage for --preload-file + # load an image file, get pixel data. shutil.copyfile(path_from_root('tests', 'screenshot.jpg'), os.path.join(self.get_dir(), 'screenshot.not')) self.btest('sdl_image_prepare.c', reference='screenshot.jpg', args=['--preload-file', 'screenshot.not']) def test_sdl_image_prepare_data(self): - # load an image file, get pixel data. Also O2 coverage for --preload-file + # load an image file, get pixel data. shutil.copyfile(path_from_root('tests', 'screenshot.jpg'), os.path.join(self.get_dir(), 'screenshot.not')) self.btest('sdl_image_prepare_data.c', reference='screenshot.jpg', args=['--preload-file', 'screenshot.not']) diff --git a/tests/sdl_image_jpeg.c b/tests/sdl_image_jpeg.c new file mode 100644 index 0000000000000..10619dadc1017 --- /dev/null +++ b/tests/sdl_image_jpeg.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include + +int testImage(SDL_Surface* screen, const char* fileName) { + SDL_Surface *image = IMG_Load(fileName); + if (!image) + { + printf("IMG_Load: %s\n", IMG_GetError()); + return 0; + } + assert(image->format->BitsPerPixel == 32); + assert(image->format->BytesPerPixel == 4); + assert(image->pitch == 4*image->w); + int result = image->w; + + SDL_BlitSurface (image, NULL, screen, NULL); + SDL_FreeSurface (image); + + return result; +} + +int main() { + SDL_Init(SDL_INIT_VIDEO); + SDL_Surface *screen = SDL_SetVideoMode(600, 450, 32, SDL_SWSURFACE); + + int result = 0; + result = testImage(screen, "screenshot.jpeg"); // relative path + assert(result != 0); + result |= testImage(screen, "/screenshot.jpeg"); // absolute path + assert(result != 0); + + SDL_Flip(screen); + + printf("you should see an image.\n"); + + SDL_Quit(); + + REPORT_RESULT(); + + return 0; +} + From 1f5518bf0f4afcfbc54772247776879ea956f913 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 14 Feb 2013 21:07:10 +0100 Subject: [PATCH 056/326] fix gl flush assertion --- src/library_gl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index 8b29e4e2f14d2..964f3f400229c 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2066,7 +2066,7 @@ var LibraryGL = { flush: function(numProvidedIndexes, startIndex, ptr) { #if ASSERTIONS - assert(numProvidedIndexes >= 0); + assert(numProvidedIndexes >= 0 || !numProvidedIndexes); #endif startIndex = startIndex || 0; ptr = ptr || 0; From 275900d217b354a92b97e645ea6de566b58c3476 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 14 Feb 2013 22:13:59 +0100 Subject: [PATCH 057/326] fix and test glIsProgram --- src/library_gl.js | 8 +++----- tests/gl_ps.c | 2 ++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 964f3f400229c..8f692dbf87a3b 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -908,11 +908,9 @@ var LibraryGL = { }, glIsProgram: function(program) { - var fb = GL.programs[program]; - if (typeof(fb) == 'undefined') { - return 0; - } - return Module.ctx.isProgram(fb); + var program = GL.programs[program]; + if (!program) return 0; + return Module.ctx.isProgram(program); }, glBindAttribLocation__sig: 'viii', diff --git a/tests/gl_ps.c b/tests/gl_ps.c index 81579c1d836c4..a8a6807f0906a 100644 --- a/tests/gl_ps.c +++ b/tests/gl_ps.c @@ -78,6 +78,8 @@ void shaders() { glLinkProgram(program); glGetProgramiv(program, GL_LINK_STATUS, &ok); assert(ok); + assert(glIsProgram(program)); + assert(!glIsProgram(-1)); glUseProgram(program); From f8fbf5a424e630e194a8068a799c22d10229ea15 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 14 Feb 2013 22:21:08 +0100 Subject: [PATCH 058/326] set alpha to false in WebGL rendering - it represents the screen, so no alpha is needed --- src/library_browser.js | 7 ++++++- tests/aniso.png | Bin 35041 -> 26812 bytes tests/float_tex.png | Bin 19944 -> 18869 bytes tests/gears.png | Bin 7832 -> 6407 bytes tests/gl_ps.png | Bin 203535 -> 202598 bytes tests/s3tc_crunch.png | Bin 353677 -> 271258 bytes tests/screenshot-fog-density.png | Bin 154012 -> 157048 bytes tests/screenshot-fog-exp2.png | Bin 119847 -> 122164 bytes tests/screenshot-fog-linear.png | Bin 247928 -> 250343 bytes tests/screenshot-fog-negative.png | Bin 79537 -> 80704 bytes tests/screenshot-fog-simple.png | Bin 36557 -> 37940 bytes tests/screenshot-gray-purple.png | Bin 242425 -> 241235 bytes tests/screenshot-gray.png | Bin 203336 -> 202044 bytes 13 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/library_browser.js b/src/library_browser.js index e04aedd5c77ca..6af2ce0b6efdf 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -201,8 +201,13 @@ mergeInto(LibraryManager.library, { return null; } #endif + var ctx; try { - var ctx = canvas.getContext(useWebGL ? 'experimental-webgl' : '2d'); + if (useWebGL) { + ctx = canvas.getContext('experimental-webgl', { alpha: false }); + } else { + ctx = canvas.getContext('2d'); + } if (!ctx) throw ':('; } catch (e) { Module.print('Could not create canvas - ' + e); diff --git a/tests/aniso.png b/tests/aniso.png index 5f5812d202e77f407d1f746a03cd3b10dbe6934c..2bcb2f5f04e919f4f520736978b18d3abf460d5b 100644 GIT binary patch literal 26812 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%0AVyU5pOyoJ-U0DPc2(Su~Bb( z7Zg$_-H}OQj_dL?$iRhpjZiwyt6U}XfGLqmhggYG7RNi_{M%UV9yr1e_rP6P;scSk z@T)tt5Pp~NxsnW59GsGhX1e={<4xP)>>Myo0n}Slx;S7T*wX@C2>(m!>E7*Gf6{ue zm_>YLNoVP1l+{>|RkJJM1_H{i3aRqqS<3Vh|yD(cn;+yc=(D7$dZ-h_bQ{0l0 z{)8xkd9qX(CEkUza}Z-kCGAOwq(q3&Gi454iena#cJXZr5G`veq{lPN-2{O$8)z%1zrI5SPXE+4~P@&f}4X^MD z{h#$w4bh9C>W_EA;v&(Z)UcdB+{p47IYI8W8pm(Pl+|pgpu3a(!qddFF^`s5u(3wG&)Eg!W#^J1K+KzOCX6{|6o>%vJ`tfZHi)I7 zD+Bq8sY-56{rcg9eUA?^UTm@2Q3)uqFA*FN%>S+B;MJiO<}vR&TEV#ilQ)UBuzLgw z5U`hmOoH&bh{>NfX~qH^?}_q8=P4$%y%VI7^Z~mPum{fDf6<&wpf|MnT^1HN(x|Az zwnW%^SPU-ZTOa?`Hp59sqn~1=2nKJyfM5t$%zR7dw|$mL?x*gF65hECC2#ZgR0y|yuT2f$`@eF6 zP=+twQ|Y>Q;wh36b^#Ht6ckj0Ty6Fo&E*G^ubueUaw=_8oUv+5RAyr z45IJDONuC|C~scM%CpZMpBgAn+o~M!XIDD=&TfeJ%M?>udHMa<7myf(nFnFQTuCBG zB$0piU|9HFkJ+ctM?@&!v*ubo_HmY|&R3nvu&WDsZ#M?X_xtrGRka z$R3ayvGy2&)&MBtWCGSI10@BtH=sHQ75do6{#+^2@fWWL2Ff4Rlb(Ny)OJy!wqy-k zYQ(%*jy>%9gDMj|+;Kr-?7la>PTP#@`a^XM>hH{hOLT_Tr8f3+y(Et8}82 z(E$`_Xr!7ltXZMfX&Q1Q{qB1>CWu0G2a9FGOPrkc+iFx5?$H>E*cK;puW|pmbC{qn z`L(bVuO!z}L^STl2^&p6I;htUe^BBRC&+-N^}4kqM_1@9W*A_WQhf= z5I>g=VZ+g2xf@wx;pArTh}M(2@UzzaKIprRh~MJVk5>#TRq$$RY5)d}D=tE!=Av?_ ziEHkzWDrgZpd#mX0*xd-UuFa|&g*JJ%96G_|P_;_#2zQb+|XNh49ds?tP#40xr%ZH$>$fqZPF5}|PE zSlAZ!kJux`V>F}LaQOHIWx@Kt!{5o)U;UoT2mE>9^euYv?Y<};GZCU`fh48;AKnMJ zI+~~kRELp-9Nm+8^0SEkVa=!-4EzmA+Ior9QrH}J6OUunoa8wf933be+#O%dn_-nK5@~@W! zv?;f(##iYKi=D)w)bkfJrz?`Kf0Bvx`}sUnBb`qhT#uR9a#2}rcq$E*9IFIAAIJPj z4}H53XG3J9CFwnSg|rV@J>M64z_hI&y3A_*7Uvu-i30v(Mp4B3?*IoqcMqoAF>&@1 zeD@e{gcQ|ox#cV(8t%Y~sY&c|(5YNWfS1CWM~T&oNdnL|61ax)T)-M=OhdPhab}2# zoTa|y$5NObSLRShbMRrEV!Iyy_N8n>zhq)PJe4ZwVaS_%fBLW~;Aukm@^XCm*=Gut ze&mJzejp$Ng#BH^-L=3`tOw9EBzAeYb=N}a^)pe{>hGN8reASXb+0T-ODfQ!FE^Zn z-t47q^N2Ni#D^AM+kyhuLqVr+;88VSmkX2)$CWWfnj-$%-JuxH3S8=3)uDn_1l)wV zyKaoKG(@5xK3rH_0EZznlJR@P$qsh(SF{Y~d-O-WilQp&YVfm0_e(9+FU`7ZS3em4 zbM_Y9LBMrsA<^vEWhJV?r4Bn`VLpr>%65|u<%(t|y|Sba)v>mBqu3OVYtcFX;-)#M z{u%9xy*_8`8z*iH##}X@kWi!yx8G7{q|GzCBBG{}1rLPgQ3?nmfUNLjpIDN|e43w1 zPSl83){sZ9K8_j@9=Iqw9Trl3QjMmo=ejpVrjj6Nu})>5PuXQcVinIC00V0kzy&j%jf+yB z0vucVy3*xqttJx@{r(#I+zqGt-a;52G zfJny6NdvrzhBG7cG^hlWI08T10(}*35pXeoZ4vD0;cU2oQo@8Q7Tz{{llaov7<1`7 zwT{z)R21e<#n1vUo!CmGV)SaI4Q!C%xGTaU?fW=0GlT%KB_(xD^W( zH{4b5s+nc_o>J1SbS|6{Y2e6m4h?)X;?4uQ>lf#!9tL2su_pB1dd_)#k7Azkbqmi0 z?e#^SI`4NP9B?{soK%>0(+4AHQC6E>Oszq7x0;P1i{_gx5q<8vVGB zn={wiHC{P7`Zv~-MoF*uAYo?-X5O+3|K~#9R4lC$3*?Yz2SmYF*vPL#&{QBp&hk7e zYP%~>U4xs{#nu;d$ujP#Nk^7g{j~t~*t?JZ)bQ{M3r9U|jPtK>Wnq1e`8=QV+ZQwo zAL8I+IQErpb@iUzrFyOz{+g;gHIY7#io(_VfSkRHv9F7=l%xMzyVUfwJro}TL#zI> zl_cYC{)Pe^d&)OlE-^J!SXfoV$c{+>ilj%1guNk^R+`FAmV z^xreEg9R(n=EfbAw@?gJFu&8SACCR-?Zq>O?lGol}(9pWtM=Gd4@iza|O%l ziT~oJ2?QT`F&r$<(3dme0H2*PzKrQS5=TQ9=e&Yz1 zE-fR83-ok!l)i1`TaWj%hzD)sz&-o_|Ezf!H;K$t-RdG zKLGb9W4RzN0s-gBOTKN=8Is3gU}^wZwvS{p%k?h6{z~mSt)vG|$)|hVi_czA2`F`R zj0>zS-IjzRiNRZJ@?K?$d0lFAHpO>cXo9BQyY+-1#)5=tiR5>%4>B2Rd&c`v_BKmg z{I~^#%0X43%mmEfz=J6xOY*eXJNP{8s>3JkFqo1b(#=4lM9k$_xO0BlS;B_&@9Kb# zN#i`T$vL#JKHMt9z}8l4^1IP{894eJLD-=|0Kg!8<&lSc7#@QRY8{3z=Iz;&*+hpy96H)?gr77e75`~x!V`E zX2kuM)wojUZp`Orz+?>6p%;`Xim0=e_DeSv4h?k^XWmK_Wtk4(PGp+Ixkl_(UqvHl zn$0AyryNa!>r82o+IfFTl^HpxUT{9TxZfgg0IVmk*&9y9t|Kpx%-{R(;KY0T7z3)R zjJq@|)i>t8@ER4*PoCYrF&z9b#A;z>3X0l&7%;B?xyMJ<<06jTRATi-C??Cf^-O=S zQ0;v9t2wOB|OAx9dUGBZOZL!#aqwHSOdrSwUqz^cXQu_=t(xbNgioUU^ z#Hl`0hdEtKAtpO9ze-6Y8-s!4S-^9eC_*}))pnq(zS0!w9DGc+8;UKjx4jdA8aQwG zDH75vn6N$bbR}tQiz+XAJ$6@TfpYKd*tRLfl1$vIs$1{HgTVPr9YD1f@t@g&+YT@V zLGy1%D(MMzS!HM?8__BO1M{NusC^XL=lZZSe_4=yDF_ z(q(6Ab@M;L0QK_jiRVg6Lhs&>&%)-b@myIdOx&c~^{r=jlil!5M|awPU7H9*zufXG zUrcjpy#@}3LB^~0br@iBc6uei1oxP?!@wQiR_z1WDdO6j`E#V{rbE=9OgIs*nv*CaXqig2GIQuH_C|~ z*-OHcxokpR4{8C4_Y(01>^+j13w=RZG|tiB0zXqGB0M0nuzrCVdy3(VfIOTTB!;?F6VATsCR0ktB!u@l%#0Jd>mB zuoF94U=JkV7$e97a}Ifd9pJWg=iLIM_?WCv7T9>NT@O5iE84{iRy8$*_j&`_eEfQE zl&@Su7#j}pF}i}Hg6mEP*esa_JdtKP^o>#uG1fK{JySf1NweEQK6b>Hkh$|iG0s6w z3pY#rgw4lEs5wn@cG}RTtn)8xNDRgLq<^iiWOPED4SN+CWQG-?dOg^w++d#tz@@)G z2?ZF!L^wMTG&<|L?_%;(=>&8Mj!o$5DV*~RD>^3~R!VMMdIAKdOhk~USz!_6ht*=$ zDQNl$>r^uucUuLcD}WHN4x?h3tGo{&_l8tR{)1kBk^q>rNsK0Uvbi6xiwfy3=0Kdf zbZWJW2X-VUnEOo~ygA39EY{33(f$vffCB|OgKBdCEh7puVjFOXXC$R znOn!bn39bB(%iTtJ$$&09m+%nSWcEfPIN#s-?Xn|!jv)woUTG()D6COYTa%DixwgU zp(D5M+42{4lZ7XQ*%#lO^VEz{<|TLw#;E~g;kg4oE%uM|%On(5Ivl!3<;c-6`fRbV z?>l@Zt$qYe?; z>wPFscLIuhlbgeb#1t`XWXdkIh9>2c^(I&GgJTtyBTxxypJS|Q}7n7BkxRITC%0~q~Mr_M?X_Sul_5(=W@Z7% zZ%}N6nIErUn%trhWkV2I2{YpdJmN+|FrhN#;TMSZYs8l)&QW6Il#jGBYN)LY7twEn zP8b7Om6RAbtOuk!Jxmwya;eKY;CP$i_lF?<9d-=LBlG}eMK3$F80Pj`Rgp-7EB_)O z{Ak84JA@0!Hj=qbkn8ghPcG%s&i3KV2Q1#it_b<-h}42ys;GL{9KIEFK;R}#2-Mu0 z&}JTqm7j#1x-vpmAQJloDA2$T#|^>ENXRdPbmPYi1Mr=5>}YYK z<9mtuT`bop2Oa#} z5mPezHx=@fa%mO9j#>v!)nNvDxue}5h0)^lqEa1eef_}#>X%)M%%!sFwKLp+!JZEn zJN|Onv2C}uSK9MZ=>}}7UAQQKF5I)sURG?27vw1EI{SR2w_?fzmQw%^)|n${s0(YH zB;Az`{}6a6$~dRE646lW_h0Nc54a!$j!q0dCdq!$=^Y^6fS3pHQN_klW5Fc)Ig-Gq z4jd6cVExQdBldB!z0cvl$RnLh!XUrW9O4)#=ImW1IqNzHWJm7gU1Gqr`g5_)y;b>U2 z7z>2bxuA1%j1>z{-{Xkui7d3zIJVzK1p~QLfux>QN5-81)#cBfNn;+Lw)1Tjf(539 zC$?j0_6dImimgVtP#IDJ;xe@+CBqxrd(Cn;;$EA^oToub#7l~ME)oHIOE4S>U~tCG z1$DUwJPN%&if1JcFAk%EBiBWMR*QMSVV82nHmz#+z&FmDN^Knj0z)4pU$Mo2L&pst zVC^9+f7Kw{_+|NObRLaXSYRb5UMQeFle4oOifvko&~*!I*PZ{d!OO+fA>?s(xb6)1 zmlU7wTu`TLU5s&*!Z+-8fDo1xSlZa%P8~YDN3rzZ4Vw{GX@Fbej`3=Ir+BSI2qZ%y zC0KK=+Y@=}a8W`TSkLa6xYyQirArfa{_SsZp32?n>JSi!U=W8zSR18%$m}Vn2(W0W zai;e$Y(JkS0y@5Z$CtHfq?H&7XuqEOBRT}Rej7Jp^ncOd>L%8bt>mIE_}u1A8{mZi z2vwN(N&Ao_P$@`x83!cMt62dqJTW&di4!GkB(Y+nIAgM5beK zHY%)>^0pC_vx&_H6U>KABj7)U)?Dve+E6AeJ*HssNr+c0t%qT`GzsoJMXlgv9h&_- z&gQSArA}O?m_H??nQm8s&?pko86ZZ0q2k9RmUA(Yzx&==Bs1asAtHQA1QIaV=ncEl?bv70yqA_=( zh$^It6cgKPOwOjI&Z(Wa=3c%_etmZ{s(j^2BX4^W+5wH2L-Bg*G-CTT!tsFt>Iks> zmJr|dikxvS!dBF75+ZW=l0pc?J58?A~~u{ zG!NY20FoDA31na!%|i+FTYwc2zy0s6yM`ta*6Bs${lJ6?XpFZ&VDn;xHj312a_A;w z3N>b(J4}j~khT@?&+~cto03m?lpaf@GxfGAcG(Xqzb5rE|CNz;jBQ8yxAElF>6~k> zw7)!Xn@UjFy^}yMdZUN8idO;~uwm|RuSXvMbDB*33IHd*l<2<06%~n$uz|+B?MeJk zWclv4^Zs<-7ViZpM>#)A`;gIg>~0H_*uQA^h8s(^oE}nt(ta_%@F-k`s;T_HYb5c3 zjoM%DLyFhg6fgnJ0AL4nzDWEesk#_TTuJIIat$kTPEkAA{tL5s%|QpaH|7)(IkMYa zvI5TeY==MluWb8c!>I^^4v(~>4M|#-WXUjBn!uJJq(|&<3@t&=p4WpQiC%`R zrc#yqT)3QJA7eb1m?`--=S-UcG+}IJ<}%y4w696;1*(AIo+Z3x4IGmdE%HJ8yU;@a zNePb~6&{DdjwgJP>>R+}T@z=Aj_Q>W=hxW6Dam6r2@A@BFtG9lr@xZ-r#HqiugrJv zAD?w$SlbR;;P&1n3&7&byeQo_xbzo=^-3MguC}PxPg~~Ehd)xv2$q0=AMd%S;rO{xXbzmLs)ZQNz;W>B`%?Dlt2LDiBCiTrW1hi zrj@V*8&FN}y0W@3fpLKhu}t45fcoP<@<(-eESV8o$Hb#IR18DQra`-{`>IRTq9S>DLMV@G~lP1-usw5`1k9rE&s|W1?EBXLfP5E1-SOMh`*!FO4e~lTZ zQ!?`0bw*ZJ*ttyyKOkWBwu5OHBfCb#ee=&K2D~>qiAY4aJ>)}e#YU_NQVyS^b?x)A zyWUN5vRw zl7O};SC)+VrWv?94(VxjJ$~qxjm_{@dNB%EnXD^sf2d;jCd4m4vh87|06&KE7*M&l zKLj(KOWE^#5M(>%QJx8eG=&0=($*u!VgQo?+6v@} z;9?+sr)(J8QtZfcg7Oz_LMmw`aotZavU4mvo#;{ua)6}V9rUw7e;$=2X1Q#Pxsjbg z3aKz)fdyN1G4FR%)aZ9~x$LmbxA)R1y(_&-zPm;EF!Yd2_y@VNJ#2;R2GbE3i+ZWBJ z^OS@FN@2@>E}U03s*e*8o*fI(m+am@y2&UdH-xZw@hG6bV_*^A#Iz@D!kAZ(%(Xnk zxU}@z$@F+g`DW~MOxWh5%#lng@-h7Y?R& zVl;8)YF!T&i1?%g*;~&xP(2!vK%V? zBqEHn9bu`qA3CIGX#8XRJTy8zBd$9tL<%KLE*=m^@LP-uTAm^KZ5lj%sS9F`J-niC z*6(mJSE^r*xB?ra;ca!>E(e4vy3z~-7S_K1S*laTZ<$ijh+f3bL7{o4FhN5>d_+Wq zC(%+KjZBZi+(crPKz)c7cjDKr4sX<2otWACVFnjkljbv$&9d^`+o_tD1B_dt3znX) zz}6W2qR$a9uK;2T-xsg0{lRDuYxB2Xhzaq0`H57@!zoOMb0nySbeJLA!F{F@Z z?!e}|iU8H?hlWQf@yWmB8&V>c(tUqs0LxRnSIy*0PFmLg0DT}q52c?v#chGok{yrWEoe}f0 z_@bvU>&+`J9*$hD2yXA&#oe4~!qz4S%UNomPmG{jOMVzItzd75HWzSAR^l3${)+sQ z19`TEMUyCcKQHeDWf;T`n09vebXS4}$LvSME(ND*kJQCEqSE6|vdm3ca^faJ*8BHA zh=urjZ7JlL0UhoqghYR&E)Mkts0qZI5I9ZmP+u;M`){>L3n<#VaNYT}&)agm%keH& z9@t1{u;zCmxO1mglQJWr%APj6n2BBiXf6%YUa#*Zn^gww#kPhOK#;I7>viDGDCGrjoBUDV;WW-eKZ_=PEEz+832@yPY4J=O$x0+n~}5w>Z%=+ zf=^_yT95wmle&{!E=c3t1xoOrcsUTNrZ>aS;8U9oVDp4VMK_e~ zIgsBg0`vF31vWuckMTmCWMBa35VzzraWBIDlW2ZpBmuO7-ta-}o&?lR$1+?xM5ZNV zra5~r;&@2x=+BNV(B_sA3Tr*vmH^m0+l?L0!2@^1XBD78(*Ngh^ftcyOXlZ0zo7oT zQ4BWs3v-^2xv1c!+-n~fluN*y8`Vs}1GxJLL4Yk&f2&#L8UX3gPAg0!@}r}3aey{k zv$q5uoe#qFY*V;3wD<|Il-+uM4BK|R1IUc;;dgMg#X0XXJ9kAMa;;S3D3NZvc#<98 zYx}oII_^MKzVZ03T6>j>Pr)tVz6V`Ju(kgg%@U8n)LV2?YxG}>Xf&z{+^Mo#_8LFM`Ceaue+osrc1q_u0vQizt@rZC?H7qSi?3|45B`Y)t&BOQ<;F@C%vv@g*el%}%4f<>h(EQ)IojxkO4B?w`xQmU^Yk4Xdz3r#FYLOWHkxT(hxgQ{{Bh{hl)+g&6lFQza;3WVc*B3u2#!pA+z zmjEGVtJ2S$L+K9mY!q+mm%&@egy0P1h3^YZWBq!Mf3;TTzVPwycTSF=i5@%ul;kZw z!OVS45q&tWXCN9&9ujQ zvaXbnl~K%@ndS%enqzB!zBb7lE5|DPogY+~fg711*UJ2+BIgM}v$>$H9O7?f2!qwv z*0q#W_5IX0!=W*rrlzK%{inSWu}kF{k)78bs=T|l0FoVc7|`=$gWA7DPk}TlY4n~B z%@JU?NIx{QmXA^1n-40fjm*uo?mOGNT4<(nn}W++&YuyrH>5P?BKVuU*RyXlm(M_q zjncDWyM1r4u&`QoWmXz9veL(ndOwcx>hcpNE4Hxbo$r=KqU=gy&edaKEn#hej79VF zPoj6>IZcBmp;i(SXs6t(GuVlwzIAmly@~Ic86V6?mikk{x2V?x%k*mUb1v{sj=~bj zetOQd`Wx4jWv7rMFVHEETdH&OlG@R`f;i`@$WF^mdbH*n{$p=);=ohT-m347N)4F`v!OkqJWeuTLwn5k~L0ERT|W;mgFev;a%w<56r zJ!%V5E|GJbe%$JhR=1}UO24)nQG@&YvDf)(=vs63jUKW~hX%CxD`he@<@rR<1iMj; zxVi6}qV)Wyd5<-TUj+DQeE5n?8XbYvmZ=`Zq}UYNPQYMbCmHmZpigG}V^ZfAAKqb= z2c7Lit>ts6da&x;r9JP%8x+udW?T{<|J~^)?(ccv#v@!B{Yzl=9?4$*X_S%m*0jPt zcUpVJ&)%jnMnE&EJ0|SO!4H!2#Rc_b`B1O=dVwGI5F2}ibNzC#$Pu1AH43G*^R&lGttHFym_I5to96VpDby}>8B_+9scb-phu}BvQs947v|0mNQ{}w;d zlom9u-i;_PRV&TsO!yEKw}oBZ-LwBIF{nhGu(lam_R2{^22Qa6NbHM zRO_bQHk$OvQ^`aUSp6leU30%XDd$l1mQC!}&<7VVzWM^(=%i^^EtUg^gWph|b^}^; zW9l;d7<_7ep?asx+Px zg6`S9x!whk@WbBV8XPRmTHbvhSvM&}+Eo6x!1mq!Vw*x%Qooin1=$bhM}_Qf44S8> z*A~ioIB0#9%L=E)rLAXvL%W;Aa)G1)IET&4sqRkJXF^CXH@b7T+lqf=?VzdwTX5kYNiUHOK|X&+wf zUaWmjRds{&%yEu`tJ} zxpZb`rs8Ymm SZ|njBbfzK3yJZ=5LiOV+nMTIuM4eMt^vV=^eq_l?~TQL zZu)a?a$~x_b+_a9!24YR?Psuq){9}Jv@Z>0c`aeeHz#p6@XBGF5o?~nmCU#Y@VqGY zH#)#~qS{nlKkLeoEo{3vfsKh(-b6Y zNb|h{Mk=K6&bD!Lt{It3(Uf(otEIH9d|m2%4yg&)7}1uLju_AWn7ZWcE9vf?WLpkv zXS1HH>@d|*B+7CP4wNP{+miu;L+#;O92~l~UI}D^2Bv4N_IXQml~?q7d#)}%@YFW<&0g=kPrugaeBRtj z7yuWWGHNYpE9X#^IWI&mOWE7{E4E(zg8|O+0lDvv@?O8WK)CPBY;)c>#DtU30enGm zt=1UGDw3+%CTrtWe;v5~A~1eiR(E@DLZ>v(DXBP%qRDlkJCzWu2gN?mwy3CnS)8gH zY6(}gLc82bz0AaqbEktNCWr7=brZo_$j6I)3(ONp) z?EUU$i=Lj|e$U*QRwBLRCGBzY;ComziDEjWDypcOnTMFC%UEc~SG-`G_^+%4hXiC1mnV(^( zseYi3oHB=U#+s++@=z8JZOEMeYV<4=kuxeXd2-Su+2n5wti7KsY+bO;d3h|Ka9ycH z(d?|8?zitJy%c*td!zdDt)glBHTcHq)0Y}z>zP1k?W=MC5P)<4T|+`alVfeHj4`#b z-{$ljxV9p@wb9=@A3}A|)PkJZVy|4c*HQTLwdwP!nY#Dp%<-tA}`|H+*K zD>1iq0y5W+BldPSxuss3c8;DK{n#Mx(P}xHb7!@FG^#BS4mt|N^fI0N87(ASKf(2I zWA^7c58-&~ezWO^hSFy~U^Pez7@KM=?rdgR~7=h;C!Z|917A4>Rc%Sq>z^zI!zLxeKI zCjJh*0Ta1r&{PiyqI_!5q?DsHV?_Y4CdUe=2m1kzTouJalI(K_I(KQbD$>7~>DKb{ z=X+&CTrJF`&f3BMwaeCs|LMaKZzb7I*%JLI($n&_JlQ7SjY!svbQ>F+{oOg5kV5sW z(Q{~`&hzwH|Fi6X(gGXu_4ZAS$(SN_&cuhnH5nH%dTh1)MRrr4&E zHe^pyr0CL8CvEvrHI7!Sni;Ekn#9)d+b=i%UAAfU_z$YASNg1V*~un2WMcx= zV3UHs`f9&6d`<;~(BgA+md@{oge%%FMM(PWhIU6`k8|JVQXPJ<8|XO9z1}a8dI>j& z6JmjDpURzQM&#pD>`8DdxoyF7{Zga%S(=5t zK#E#Me=&awI`<0n+_duKR6t0m;AG|Xo3>Od!7n2GWvgn+do_FJkI;s*M9a*PXGHcC zs?gI#(=3Udx?SecBMtc%lzmk6sC4y{_uugcj%7}eYS@qNsmS*y4ZF;m_nrIQO}NyC z?E*YBl9o#!iWJp$VTvAP{4KNvEMibaJ!lmTtOGjNHu|?8w*qy{KO^0@&;)VVghNGM zv6(tYKgY?%r83mAMisX%o@D7M*E`LQa`3c%(j#B*Slz>wP(M!{2HUTMqhjtS@AQ`S z1%7PU1$wIL)#h?0yo-EgGX2BBS*y0nqATd*4&1`Atn7OYCs1jYX4z(B{98?Kl|ZHH zul-J&pAncP>C&b`1U)<*P0Jl$6in;!E7yv&7QxJp;dA)ndFz?5+WO|gtPNV|?k?h8 zM7A2e6jz}Wq!Rh^$|}c<(lT@_#(u2r#(Z8Y8s&ZG?CZv*sJ)T!d8)`#O2^Sd4pvvU zG+hU@xqx7;s^)R9MidOrqAwAuJrobuL{SY|uu<#Tn38Xn^dM1Y=|u@FvE?Km!_(bb zxwM~SYU-y}?Zc99-us8t&iyY$O7yT$A!{w`QQ3DJ;~6jGQe}>62pNm?M}=DMVK2cS z4&Q4_VxSs8jq3F8U!S+bpqg4~I%~#C?ZH%O1(?U@AP&3iGjtDAJa8yA>2(!SiC3-ZaV@?py z7lwfBd-rr{%h>jBcvhQ)PHX(btcEN!LH(6m93ftoPvvP!VUDZuumo@lc6m3#KEn<% z-v4msH{cZ6&1RSF1ZtNu0qxs@W0cSt1+Xd zjS+~d2mvV2qNN}I^X>f&*u?#<;9OoD;QHE8oh-HT3uTHHpPwahFSgH=$~enb*4CP2 zV0wA8Bhx)|8djef<_@lsg^BJGTx!qSOvf@#?(Zdfq}ZX6r>DsZuQHTM7~@GrTTDvJ zvFqu2YdBTwnt`ksI2s-beoi8`KieYEja}RLg<-hrAZj?cqK)XCd{Q;9UQN24!}IOf zsEwVHli{q9wcQd{Bie}`1v1|j;Oxao(x2G~)pAwa`=xG(+>g61AQ`)6ymGKji zyI%4G2=JZ)_wa>R4$jVJSXhuYFEA&I;<(;!I}RBn*{-|2&<*1oezuUAn_CgNDFN^| zlklNpNu-m*9)D(=Tl3W+%QAY;jRWO)oTV`&I#wd{7JWFX=px|BAHPPvR98>-;oJz_ z&|xp7^q?Byn99@D;n{eL7|-+H23$CYLhRG~pd|N!=V%)P{Jrk(09vRhPFYkBxIG=C z9#x-w(rzUNL=Z%oaq&>}HBRbAamPEa?L#K&0eKI!jZyjN0#}}*YJ*_&n;c7BL=v!X zB#ZBiSM{2TMFlX31w&Gpr`^9GjkUnGRlKWJ`xv|UnvSL~s0dHw*x?{i3<<(({h5ht zr0G>gdgencG@kanC{CGsIpP{N^xJ?N5uWnI(A(S`Wx!uLQz>SyBa36D8O1WiD-T*x zA^p1_$Lk(8xN5kvd@JkaK3=`Q88A13&N+5$TC7BT%GkfpoN0EC_`b0m@`Shv|6M=3 zq1cG%<+I-SkvIR+bUO}(Ssu;BAII&gRo7B)Ze1=;(rcam>!E>?4h3#c;`O?{>8xj- zjeW=IH5jx|tgwSi6DE3|=Emz9*Qsl?+~Sai+Q+7~>=`@t=ByCsXP-aoeahLY>!Rm$ z%*ULBN9=%3ZQK-L*LV?~dC`9Tv3Xsta$}qGuV?dMq9A?bPt^O{{C)lGJd!RG{eQfb zrVRRM@D*?LUvSd)1vyE9J2h-=7%Qt>_csWAjD1|YfoHnR**~H*TP7=T3k35(P?dw=_Ejsm3de-Mn;We~z$!6iqaG$wRQ}DigmLS8kCJcH$pMqF2`njf|zs4@xL8xDweG=hAMKEA~}V zg9O{g*NTN5@IvL>(90a%sF}_T6)PO|EjZ^0n}fw^UZ>nT5mwS${poLuqxxb#2!8A9 zlS+j~hYM)B!1UWEfGEr{`i%8>-B(y2(u_Bbn^=1Kc)K5W1{uu_=|e#q_&_ZS%SS@D zk%`H+CCSOxG*UMYx;m0 z)^%CVBNrb)CH`IC=6zhaH)d+Y$E4&e_E{^^dcoWE+x4plUSyFg8LYbw#F;Xn*Q6j~ zH#Ui=vJ8V(_Y6*;#m)Dnt!CH@UBD=*=n%baWCVlvzMmYbuOP745CS)7a->m=7ys4s z%i*VCwt#F*YkDP0^(aihHW(qC(?1afT0w@vBg0uYxQ5e%=JZdarZ?UGqr4vT(+Awf zqti1oF}$u8QKQisVGiSy| zQBt3DlA7o$yAu4eP)s|;7|?T1J+=5ctm$*fmCwcenVyy2!ZPhcX}*YBp{4Olix1@E z(F1o>o}nW5Nh?BbI;~C#(_j{Grr8v~_$f2Gd}1^$Yh@r_NshBwEc~fSp}JTFPS(X6 z8*G8A`9G%eG0qW(!h@u2+k8fiJe;_a-g=~Yae&SBewuBVfYH(f+KNeqTu`j%rirL; zMK!Gsolv|2_H0D9^o!`;PnnTYBgBu{rudbr;GQSnS6bwCZiOHil#A?1_T#Cu9eIi2rQ8TJO^;UEYV;4QH6ABh^P2CgBRb_D)Cl{3hrO+{c3G=&)yG zxr;RWLD?qN#F`Cvq#Y`fWZD|TSG9!UgTL7}VW!fQh?jiPq`5grC$THFP)JpFBoo$Z z^O~3J6ZE!t`#C%c?Cws#OdF7h2_WvZcgl{nZ;h-s$sP&dVHzA#64_l*y6<2CTXsY zvB7<9AT&10osG^o2lz&MJP6TO(OENz`rn^TGO6V{Q0e&Ybfu-`7+)eNt2oHB=GMqz zrbl^oVK8xKdtHqhn8p0*w3|5D;j;;A=kNx4SBFn=Hzp5TDtgUjVGQAq!&&gcs)jT* z<*FCULGVEo7?dyfnGn#tjtn z5erJr2^p-lD2F$;A0OqAqk{wEE+G6zkC|+BF1@CjY0f&};;x}Z3o!+fv{h7-Bzm;& zKatc>U=Yjb=rO*h#2cT8)}l>D1-!To@U3p6yT)F(!6kK#F>!L`eTblp-0ikwA$_C_ zkO5akeJ$;)GCnJB`5seiKWLf2&bbw}`dYcz$f?Q~`VD>G&-R2B#%sD6EAeduCFgAQ z@;LhWkJ%AB0!Lo0jmtj8535?Xm~rb10;sEnswnW79rL>T_MK*l9qqU0rS<=xjW0Pe zPcVi@`5;a*%kOh0Uv;b8I#IneJ`5PA-HMXB*-cvnR17sC!R<|Cz&$Ff?k5B{r{>0@$@T~#d&zV{f6i(l!p>i_px1DAvB>w| zMAqzfjk$1E?&-r7HCK}81sS@)FbK^$mUvduk`uMmXo}hUOlR$@hg z_Jp<%<$Z4F#G*6km5~p3(kGnt!>lsNO9kUmK9~B;8L%yiG;WeuhAuy$n1Ly_#1oIT zGzKwBRh@lFvZ8L^&Jz2-^lzsj=;Vf^VOXiKv=H_U$e&^}RQk!NcXILP_8hfTb?&*V zVc^GN$^o~_UY_Y^QM&P97Wupi3UFnSZ!HYJ7d>F<`0T`_&GpA-zd^ba4%035`-@p$=7v5iY#Y_}4k<2rhQK;K2((>3bg)1|P>wrDYwl;xXcP8?#*t*_rl$QEZ>+ zLFJFs?b|QzL{)N^OS>O!xrGm_JP=5BKcB-m#b=))o-LVaSWg<&?Xw(Ot|RkwNiR35 zFhRQs9dqGytTf=t^%H^6KovMHS!OG5$-n8?>(EWm{8^@r+q0;?XOCj#!cGd{0Btxi zc>FQvD2!?LP597X2XjFc_Aj92Uh5SsE-r?DSdNr?vRchBF$Dy)OdnLUo*5IE*&}ch zft=6N%u6!WSvl*$Apq->8*P&_!6-M;XbaxSxxze|I|8m(?9$@C{s5b=$vSO+^PZ9k@HHupvxSDDUv1 zXyMBI^sfai1cO6dl`Keej{#DQs4Se(O=t+bKK(e(wy9;R`43yMNYuz#cZrYnO}zge zJtTT4miN4CQ$?9k`48Nh8Tb7fBDqWoD1cMRarW#yG+w()6j!Y0e$Euu5(J&~0S)e- zd|gHU>dzMTN>$iI4^<~6J0*%0E+U8V;HCa;u-{O0G}AKXRMD{Bw2qKCt7g)cXDg1j zXblC!&3!#F->p}T=V8MsU(+du=z&g8FK^77g=r12xnRt($kV`)XeSxi_rtJOl81*T zI6c@vmAuKtu5G8)?J7><=h?5NqSJY#jLtP?jDgFQ`LQGg2D6#~jRO%7!N>Qmj*X#G;>qwi6C2L~K z)x%TH(UztuClfn%?Sh4mGK5iP_EsPTD8dhLq? z%+1CGRO$hBjlG!T&JY10z!xE#Vl8B!L93#CXdBH=2z4!H=Dfxrtc^Cm2X;G>?ZKcj zaq@b7iT6qj4!{|adwz~1A!{yTuGCCeaPeV**C1fTHy1@&>zIgh?;GfSJEE5s=FVoY z0lOD4kkmBvNb*2P_@y?w)|1}Gkf>oLZ zOUErkUWRFIx{+N|1c@%2=#ii`|2~@8%-pcye+UlXKLW-g1nT?ux+h)?$YU+X<=&a! z$L=W5-)bwTc*hQp&D$&q|0(f_{{bGr=W`@ezk_>E(Y-rumW1QzU%es=_Q64}gOGOf zD?m0H;`qn%@ElfWSZV2z`~wt|^&MLUY?SWZ_w|MiHJ?(f!Cw{Bz;d^PuOrT*O5p1Z zdJ%kXX#4Wh7i)ZpjW6l&r8s=4hhMtG|JR0iZ+cZJ!2f7(#x)vat*tvCTuyRr&;9bh Dd{s*& literal 35041 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 diff --git a/tests/float_tex.png b/tests/float_tex.png index 8c3c6502deed0f60373a9fdced89166d9bbe6a5d..8fc005ff99418f4412aa93fd5f589e9025276b4c 100644 GIT binary patch literal 18869 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 am3eonTs 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 Z7pVSzjWI4u4p%nD(|oO~R;mIC`#-`E@D%_6 diff --git a/tests/gl_ps.png b/tests/gl_ps.png index 185f7166028f53a604ae56b71ffdb034467d1b07..ac13ec0bf40de51bcf13278d3989cad59ba75f54 100644 GIT binary patch literal 202598 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 F{{f@2uWtYV literal 203535 zcmce-^;=Y5*f$CYl2X#r4bouH(jg%Y(nuOK3=PuV9nv5nDIyFoQqm<-!Z0A6Ll4ba ze$RQY>v`Tk;QX+;l-bPe+3Q~S{iz-GN<--Z9t|EE8rlODWqEBhG>jlLH1s8$``|ZE zCKguF&=}EF;ez%@3+ap;-jpiMSXNYMF0@BMC6gC=R-aWij~gVJ0hiv9b~xY8&`3GL(;Q zIV$5!`ZQfn&zbpp81d>EoW4Fa_T585kjNpk_0AA%B6QLL0; zFi;hMEqOhs_4f2z(_*Z)uWW@l$4qX)lp@s{y{$*&L}t;GjnzwETB$SEFMIy|QzTm^ zabNWra~?D9P>5Fbczv}HMbtGf+6kIBz?yBKb8p(S-H>rRvi0OSl;M!57=Ojoos?095I?QY|#hRC%#EPp$rcyrH-=Ow1hm9sK zdBj$QJq7$vgr-+S#9dt>U8r9>+@3X*XV99QTyApWH&2;kqB85a$OF?E_*jNAYoZPH zP(%O5v0=J`pm~7_Pd$A1aOsBVV4dUB>gr~uZM#e}+_ELp#mBXWg-D{m%KVU<-v8Wk z@p7HR>$295&-`T3?mQUPkyCr#z`vG~e@?U8uAKd_(Z`UmRp6RIs@rhVUI;qFIB zt|@eMZjKrShcNtiEVvP+41}td2D7SI3sGxVkZrlsaIrAQkXBX~*ga{8j^-KaZ-}j| zWF^HVQ;?bQ__ZYh&d?%DvZ0ND*k@}C4zQl2TEz@nq&tBn$pHh$Xa_I-gX;T-Z zi<9NZ(d41$by69PX?D$f_qPE)!3Q|l96pQHx0 zw$ja_5g$KSJ)KLNr_DQ)8Cyn6M?1N5lBKp@qRpJH_d=_|T8K26l_a5Wz*-0_gKG4m=9ko!Y0OiuVTP=#orA?yMy}yeB_%i!`|RY$NgAOfm<(B;iMYraiDwmv zi%R}lY9G?MKT%#(B_`YNVmMeKl0U%SXSWL#c*2lP!%Bn8h+`>Rhy!j{s9%W=dhB~N z)6+L^Wq4TR^>H5(;)ixGzf_Fud$^C%dOPyX;N}>W5nL5;F6nc!d02^%Aqw=gKNXz& zL-j?f)1J4k_1$3iz3df#_8eiF?kBxxWL2VUGgPnaA8e{o{5F=H-toU*jH{wmIJYlM zGn^Suc_JqFv`X?@j-+A;Q{zBp`$#mX5)I9GP$jNlub#ducc=0AR>hX4on^>6c&&}b zXX|F0!d2eKFPDHKO|fC=uh8<6oc$(8x@fmbL z^(JY3o8B97=Ue*Z0oLfEL^XEMFAdYfSXEYeA1Y7`7_)Eb2K$WMO8puj!+NYaDj?`_ zPho^Hbf1}GQASMx=f0=1qMz~rnv7+{3jtXkT6qIz`{W=SRvabI18m44Ru?7~Lm7$8 z*dGi*l2Zgbnj8+3^kFFPH7E}CL(42nH8@33l5(grtL$@Hb{ci!IK?Q%V&$-DO0&~3 zggIW#qPXw>9ZChww#LPc%+j;kS+tXx`4gG>T67FnPs&rXS%y_J-a?}FcC>dA zvTB|Z^gYauV{bf6)u>Vz$ts+r`-P07eozK#L_el!XHi}84aITAdR= zxqD)feoZ^-)hi3B{6<)_hv|>v5V`bYtS#$sFlycl*$Em8(*G&`tHwPt(a8jg!{vM6 zkGJ(@@ZCgV9#DDHLl3^_N5~e2R=)jQ8P3Yp-w?`(Q=-j98ikq6nxs*#!b%!h6j{V+ zpB-K~$l0LGL&KgHo1$l9Ef~W6xW+CYk32&V92vXN${n#@t0b$A7hkkX zO?VCuLWo)jm+GXK4lIWLHIS2}2(RuP=@>}+%@@CkM&$B4se^#q^_jp_^Ygjm(<DE`A!P?yFnW=ew5X}G>5Cy8%k8dGv{ylCCa z0$d6x%mSqZddXXxga7)))6_ntv6+qX-|T(A*&}q7j8$)*^p0XQjWcBn)(z7AjNyfM zrusm~oF!}pXvZC&7;0>Y43Z~1B)u+HXq+mXp&NhezWL2}7x}?xl#*uy-*!?E`^q?; z5M|2r-DEhE5Zgprv`m|iltPwv7wHC;8=w^E+&>g@;U1ovWXP*e;NxGm!j&?S8L}s3 zq_AcI9cxD|EIHo=%~>nfPAVnoe#`L(h0*jn9CM$GI^Xd|tPGfw6XrHzJyCTexOde`b!BLWtbl-Q{73^11ig+-YEX?W0z% zD>?Cu^gP1y3%AZt#SS$GI%M-CvGUCOGxqws0-A^WaAOXT;gD2VMs~4at9^hCPiOF^N2I;T z<+a`&!ENbMB|`wH37@uY$ar@?ebdCmH!&$jgju4~Sbwu!s+e2#Wn!#8J5}0u@yvp0 znh83!is{z`*l%d!Xxhyp%$mF3)>{jHVj18Lv&wR8)@+;uJ9@mj*>HG0gDL*$)%=61 zwFSC+NT+8!l)^u6==-jWFWU*N#Jb-L*+83Z8eccQ<}u>`Fj1~7RNR?3U_V?iWA`)* zK;K>=x7hn~qZ%4>i1}Y1AV$2?B`MVD$K;a}v7S|OjdSc2FDJ5m7wzsD--Wk2Kab@Z0)51i>T~5b z9tTGdla0Jkg$S5zuS-?Sr^<|+#vPiBc+(}$HoM!-8qG$;7jG#(1@vtk6vECF{N`r@ zo*?d;@9y6nWdy_@A4@O&{j2c(`_groTgRU9t=L!xihA)Zz4_>J2KK3s-j^J;;1)7q zE!%EZ{)#hk#1?K5VM#?5{;_6x)+)i|gOAqar}4GYNy>?!(Uoe~Tp4huDVOUQ zrZ2Y!ezDC{HZ0KP)aIVO3JNcqhlUwtCDz5{MzLT*aPRwBPogK|O5X;(80Sw^Iqzo= zVJ(&^swcj+2r^{~V#FM86m(TY)4{jccJV!V9EuxJ94f~Y+{NcDtg1m-7fY=0INAoM zXN9TDveV;+G%6MPkSb2`?v4brWjg`^_zZpRCEdwExl+A&V8G%Gd3mo1>0Ervx#PR{Pm{Qzr#&pmaO6Z&M;WGI}^_c{ID*Vi9F zonQDZ!l&Fq^HNX?M7$u7e94sGEg}L6ghy4ro1`RmGx~*|o}l`q zI;D6GV$Tv!CHWQW99;^d9}btd!`x;4h_6rIEnw1_t;SBGkfh74AeFC_Zi5$wQK1{1 zTk$Y1^mA&=?@AleL(Wp|DAiKgFZynG8mvaFO9&a&KAec_&@K#Ds|ejLB}U>O$cM_k zo>~tBiayd=O>lMuF$9iB5FfGFV!DPi$Q>8kbmPeWAP)*AW+gi-e#fLH8B~GYzahKo z#zZC>&WLG(Zl4hJCRCP*IVq9@?LU~wA7b#2mP}fH75fvPp+sQotGi7{P!-F$gEK)^ zXc%5?R5C$5&M>@r+NZ|ub_qwn@r*e2>3%O&zG&~}>KUTpB+t#JUG-%1^!_k^2u;jf z@}aYA?WB!h&g5qU>J#X2Su+NcZw~p;Md}VmpZmPJRT5{rM#hw@%}gJU!9INf_v7E( zde01hIW&RN_?$YpN|2IL{6-@|lMjOZ?6d3ijo6_hm1KDd3Z|^c!gt)>Lto)PhJxhS)7VL3ij^C7DznO>${aGwqKY^nu|bntB35D{ zJgU~@X~Ajb`W4!>(^MyywEGMPg9Z|V;)p}fjsyHpYu)CDY@i!R_YvK}kxS))*D2Qs z*hTH~Uj;s|q~l{y0YtY!PB*j9ju*@G*Q1_wL>aXIO_Mn4FQ%o-t23*0Xr3p-!)gxy zNsV}&ZX^D&Y)gL*fPjiutah3Eobx1oTkfC=5I}$wii(oqGzYaCn2~bc?e-Cy}`r?xV|Nhnk7_SP!g$=<0NCJjr)s25)Ek(oRy(nF2S<7u_ap7zwN(WxkK-PMlj!g z&vC(xA!jPwvboQ_!Qy%L#9LI0=ZZ`=oGD5^+p0nhCT%T31+)r4F5Tz7~hcAhvT6Sg8WfQ#1i;HytA+`_pnjM(JDZK9@v#j!p|3jKrln|T3&$P)Ohs`pQkj}W zeZ(qD6f~px5&Bx6wKo#S`{iDD=2umI-EItjp&h3=7ueDVH`m)^cRU;Xw@fB&*7!eS za;_JVw}j@X<%EM_=;FY`{2M?-H!Ztn#7H9>08E&u*XI52a zdX}u%WHoslOu#HmQ)3fe{D_byW~Z1_P~9cQ-(MoajQaU76qBLzhp9X>>rcLL z5_a0N7Ma9XoUz15Dax4r)aVA+Yi>-g>%8cjC+LdIf~b|(rH5Gz|JPuUt1yvEC-0Ia z%jZ{?U`pms-8zj>E5~O~p`P5zZA^K$;5*j7i`)}_q`CD?%>A{g?F!qPcHSeDlycQP z2aTrom){P}VnAKUj(d7M7wp+62b+J>WGF)zE zeYWXw`FjT_K3|Q0@5Tn@P1rIgIfoTI3~3b&sxU`x5dp1#3xRrW@r60qVf12IrjR1^cNa}#?`qb%~rUN;DMyi$+^q|(Cj;QTAfWGYxeRQXRO5>XYse^gJzhDZ9c!JS#CbCHr0%0Xn7MT&dF@dDhGtExOKqu+!IIpvo4$ zdNC;iDkQpym;kRtm^wL%szNvR#kdmly4=V)&V9(?g`B)B)LNULh5B&$_zD-3rKcF9 z{(vy)fY4hwwgPEE!^Av6_YB7>;p2^bQHS_~^bi^6DvKj|Y$J*??kD_JBs141w3C0_ z5ytr+27rYZan2jED*j+#rFdzT?cLfgHMEvJVw(`)^uzDlQs))J-$md3l|Nfg0AkP6 zPcSRjET1ceZ)(+w7!5x=!In#=PO@!R_@Zq${^%EyaMSZjS55@$T`rKNeNu|EDLH$tzs!ccbsQn~0CU4@K5TNpD+jbU>QSE+dAp7%s)*CE?eiFCGw^sjFJ^C*k*N6w<=2dy(5 z;r!>C0OrY#&i0C6CRd+yF_LJJQ3ILSa?b`Z&~)_?aj2SE8~+x7vU zmgS$PzM_&X0Kbv=<^TpKnrEA#|3#r#xBT_z@poTE#hzO|rzMV3s4#f_`_YuW|m>x z@!RtS=>qKry0Y#N-kj6qUO!dXjHM7wl1i!fMLWvH&#Pzo7X5fD))5-<>B)j=&+8_| zFZzI!lf?8c)QFeQ^JS^ETJ=@nx`-irhJL-V!yd;C3k@@NuqZzsC6Nr1?WDUCTd^pQ zW&=7DkeGfx1nph2%5wXDlWJP~Y4}(GeCNCfc6lLzdcv>_y&Y{nB$7VtzWy_IN6YWO z4ZFADjJ`p+vC!rfb$8AX5K?>7Z*WvI=KrYH=R|8?RPvvWI=LcTHd!Ga?a@I|j`_#s z8ShZn_#XEo!8ApRy~JpDuFKq{?_~~#>1)&d&x3{N6SVlq1s=pzbL&*4SLmx!g)hf< z2xk%08^&4>YM5|5JTrXCc|Kt48QJG~h$V}86RqGYbxwaCJV@`_Yu-QB+tH4Vz>OdPxB&ir3e zq7ZXZzrI$3Zk3*X75UZGm8ZE$vl4X9wtb-vE^ghv&|tRb=I5SwXs-dCE<nA4HnfMsP-d&EfUQqi<3jx&1z0jG!BL@YwnWCAg9!{N{;!@>aBb=0l?q zf0lZmnv&dQ-qTX6kJ^PVYUfKQJ`3-nwjfZTDpaID?s=o7KO_neVaj2mV>ytfnW#1E zGI_n0)`*-vT?gGIET2;)$MzWwQxN#v6Z=B=Wk}Xqi!4g92uQW0hoO6DWs|HARkR0; zKSt26enbM?#6B9zBRzbOUQ@b|uqc9e1Nn9&s9>uJ6|SaS@Y>5L$sLcY!V zLS?FJeb3=ClV-hMRv;hB)}Y1y{97~mh%iF> zIOT`I&4DkN11oy45c*r|ldJX(jugR}(b4BEYQvuMbg$zm8V7RMtP(EXcYBH0Jv9}i z8{2BW`W>yu9fsGvn0VUN(G1Px%^IONxsn3}v;EQYEaA-u)MrY+s~-5~N|?^F%vy!D zpVH5dgooTn5}u*H2kfO@yzlZ8vy`BnBh3C(s#U91t2bMnq4pDSLPGeXMo z$y2cX8c2N<^c{Zl>vwfd;#6a{ulTe4#=7C$d92SBM%F5dYIgl4zaYDlqUa=gO`5f$ zS0O-R*5&+F{p>sPQqpfUCx2DW{4C)1?CwncdX^}FA9kV{7>>Bv3mof>;s3LbxWL+Y z=H%*fjCDH#yC&~g*GB6&sy8_JF@)UsB?FysMO~@EU!;*YFBoa+Il>-b4(g8af5)wcA=og)MZ?Z7T=nHfsi{910M5p?ygGdsn_Zn6YGCv(#GpG9B>;HcG<*0_H z=jw06kFLnr)kWhBdgGT z%c+`fFQQSrXa!E8i8W<7f;mX($b9IEDjMz6mA)2T)D-+ z`qh|yb@4zQ#zMzeD@&Wl0$j` zc0&mp#?QaxH)(UvL6eYof@9jPt6 z^0|meaIgFK-_U#Fp%_fEg`AzQBAxpaQVCzxb=Bb8<9FgD)j7XJQ)H31(t_|iKh612 zdueyfANoHB!JQi|9o+{f6IkcK1n!mZ)$W&OHANkYMz)A6rTv-(YY`i~gv;QXxKpMlwnZ`|k%>taD!Jz#hNW01*eEaL9OXeN5`Zs{Jc#*5nWKyVACA>?tTcmbRRvSn{HCyhH1+zTPut=2x~o!<6<9TIy}j4 z`&$^{eFoP&elX@AioE*-85sMAt9h&=eOTwI4*S&;syvqCjXC>`Z*>SFOz!T3!AObmbruey|l)Y$hps7^=@!lD!~thL2^n5Fza zGD5B}*!;@I@D54ZsHd|Gi=j~=01nD(q9nauNfTF*I&ViMh+<A!0Rsp z@8e$U3AB?s5ND8}b#ZrA7BpuhiD|)bc51Ye%Bjm#cX+Z}w7Fa`=IJ!z3AL2Uajt_! z*sRwNOAK9XAC2V;(i2jhKtUe>7+ox@2(;nPQ*a#{jkp-!TeXp7Rn{nlH;{#n5!*(4 zqj}!8c9A&}#b$Av_yQ4+5I?Z;qZfXktm?g#NZdvRxYqIa=e}OJ|6ECE59Ysav%8p` zk?i9LI6xj&!A{)#wo!o@F~^iG-@oJj7;$?J^G?ahzeQf(Ag`Vy&KDxQkvjiq+}(S# z)Cv* zmL2^arBGbcFCqf(aCgmWi0@nRG*uJY!jsJ(+hDI_6Aa75CB@lYLWSYrqYG_8ReoNd zUkB_TVdLV8D_59)?J*@gp^BR2JM;=lT;ia@At5Wm3}y-r&bOacswZZ$!{jowJZd4v zdaTAw!9?@mA)e`{uo%UKycY@=1hv8cOVE}6IX5wPw!2Ex7r_CXe89&(r&h+^fAh0D z>hW*YFrk&@(3D~wM-y1ayYiX2YSgB?kD-1ic|de>shQI+2M9lEFCB<3>yu$ad$#$2 zwl~Ay2xVJkd6&eh)lP1Jpa-Dmz#CTUdwAJSzq5v?KGNzN0J`{y&w!VRg#@hteLQe< zMYf-y((8l?M>lwMRcwT^1?V*lhtt)5vVfLG=XYILK5(Fk zE@H$9evC<{wCh=p^sL|5z1uPx*+U6?gaEBBv-x2su>F7-()7AXVQFpO9CQI~?na|8 z-f$2XxPoosUrZ_g;wplWe3<+7Tl&0p}qS z$2G97oP4j~8HwAs^nq(t-(6PjgTw&%>OipqhCy{vvP$VdiBp=mxYamZy^R)q!&USs zg=^U19f(5fSgVi`kKN`*vdcrX2-J5I9<^+tOxb&{*j zcagx*2d1q!qfpj7<@5V*fa;oEnW9<(COYkV6!?heQeWvR9iiRUB4s8#Br)>T53YFD zbqI;RfuHyNeU)BOu+cPeM_~W63%5{W?@`la_};*$fqO=5d0FKr8h^)p2(d<}$;CFF_0CRlAX|4S3@c6n9aoKFL;P){mCgc0} z?*pP6CMIZsd0a|%^`Fqs26R2e6TJ)92 z;|AA0sUqKp=LsePg6iUH)yfTY@hYrI3M9N$iIGb1?F==se*y!YZu!esWWD0tklab% z(GQjz3%T57I1%^G{m?^$7`WUht%P3ufDLH~gi0^TsbarMffSbA03nB!)TJni6FrbB zP#}~T?;!yeE+%9k%hKRl6yw#P`~ssgP&LUOJdEkXjo91xsMV|BmLmpw;_$&?E zVRkpL*ztt%riabVi>>0Jqsm@Svw(Q(Fm1f*hSl@cof>a$1-Q39Emnd#VB`X|9ON*9 zZ_&Vxmw~;6%`964CTKuan&C2ok*U#G>y5Zq87xZ^b(&R195nHaF{FTSgRVSqC|I?Y zd-`_yQ|i0l+copH+xHLcV+~oOGe^HOMa}od=ximcu}Af-oV7H+B=LfxxhujdtG~lG zFlAiB9rBH!?swI>3Z=SbK(nvXb(ns1cA9bsI@z1WvvrP(@r*!f#0_0wPX0|+{$ChS zWYPHNFcRGy&2rs7!tb3&-0h(*4jFFIr7ratRwXstQ<~e?cx%x74mz<#B_-D^?tYMW z?2i_D+Q~Gnpe+VmbkEHXmHetXe>h3q<9`3KU7`lt_>(kUp?HVcnnLc!tbbjEfRmu; zt^?E9Hq_I*4uCzrCR1R_(|GtG3^yVK==2y;46e4=f?FI^vo_C&yBKg7%kF)y$S}ow z!2nEJc?osp$YmlN%n%G2rWY?}6=s-$5d3-Y8yZ0bR@ZV}9!&@By}+LwA8Y?-%)_O6 zeP^S5g&Mdk7w(-tEtVowP%ikXYq#W#qqC3SPkVtflbWJRnnSPTSDe8`*3<-w1QBmQ zbO-P_(DVtvMSy1T{VMckKWM@Nbn|iq-S;6G`Ovz@2f|`=JyI9b z$g_n4#c>9UrrgQ5(_kyBaj=Ak(C6vn8>J>HY{fI%Zy>7DAG2Dy{K|0n4H8_gmXzva z<(?HMbk2>7NbWorsx&P#Vzt8&h-^Z@)DkCe>auGThZ5mnZ}G^N%X-&hmj6 zi~GEp?ney%`+En$nm4zB>m1S--F}m94C`5t_K;`Nhpe@Mdpp3|Q}PDO3};lXnrLH5 zwb~4yciP0%p`Fl}H1L#mA4u7I)-35(sI3WP5An%Qe$(t+@jr>F)* zDj$JV(jtRY*Hm&t#ic+PA(*%adCXMinWQZhxKHM%)PIqf(Xk#BZbmt-;{LSq_)5H$RqJ1z>Gmqs~EU zpy4Za|C8tro#kQkZdYh|BwxyGqmFuwoZ=HV%Pw*0*gHIcEtbL{#pg3Ed?!u#1DqZfsnruW=K$SbEngE_0wAh9 zlrMIX?L;g5!6$1^sny04(y@E*>yAZN%{@+>t}kMlLy|vwtxmHZ{V#jPnM1L7ZW=(2 zb|wJG0w6zpT3o8k6+;A1eNsS>j$Sianbipw<~gH|IaZDjXjRGth}LvkeJjy=*Md>2 z^$yJT&wATHXBYcY^H^eM>VCLwvP#sxG}7a;I^&UTO3OThAvf6`-H*%3F(YhR9avr?iXr-qQ4aPcI=H|>|Dx@ILfe_5S+l|& z8g8liq=N-SR2;0mg9tbJQC@X@GE_KnuWQuh_SXJcfg4v3NrXoBw2+%4PU-8KICos~cK5tKb6pC#@d_ zOEFRoi6yH*Z*X|J4KUd^-*;sxBr6mDBEqhMrIU{1?|)}%D1y+=b`zcz`&xW>)f(QE zYcE~zx*LU&5nGyatFK>{Znj~M6#sfC#ct30Y&GsZvDndl#2yGxP)g-SXU!`VPNo^u z9i`$aKm<@^uKLvTN`+Gd>}{U;^Vzms$DT_x4>8H^*qW(vI?qYj**@nY}aXrjh0Fp-;<^tVREUTf`Io8tW_zt|@7Pek6GLymV~XZ+undWX<(M#(Z`j`6|jO5aSwHW>Vl zl+M=^0v?!OVSGE@36e9}Nuv@~OZ%;bj4J;ROWCNLLs}x@s^}bmZ9g zL^#ZL@!Mevib$t(F~+z&!=;T=Bjas6do_^xLLU*A`o$tO+C$+*GRXaL3~k_}~Vcr>) z4j3a7%Tjx`_=0&%6j6X~fTDlhH2hx7R^%&w5gqz0(qjQH%dAVAGB&5mz0hUSI2R z;K*%ACT!h!-v~UZ!sf1^pc3{&Zpo(~Q)#(1Uk&@*re*rl}fa*V-@UKr#5f^c_j|3xHupZofPwhKT~ zi=m93NYTXeWoNSPenA@b%n^#%J{`sGdT9Q$e7;QxHrX*7p8mv_Xh65AvQ+?jHmUxO zf;0JW&AZT#DM`7f_5ej{Bx{km3aeR9hePc@`Y$QhQPuodLNW7zfMZ=2BX zxRmiY5)moZrSlRnN)AntE&^!tXE?rT~$=bqWa!gH*ycIb>zEk$tAM} zcNRQG;~iqAC4@GoIZ>ve!w__N;#c9(C5)w{oLK_scZ9buF!QCA#g>&+_5hg*?F#S= zLB}W@60*M|EF&#U(kx>46f9-*mir;#msuu>G5w?*g%rYc9eCBRL9!Fw0TA}QH0A$9 z*t3Qs`tyg*e_Op3r|D6be(1j(l587CtSq4clToJkC4rf-ypbES1HpFu(JgeGif8j| z3B(Zo6@V)inF?D9sY;Iyr|YyQLC%NQBZTc5`KlG5VZIrEB($3V&iYEj3!v4FW5SkK zSLbc|azO;hB2nZ1 z+$6jPQNLq{|AV<#HY!-}N9*;*RBms<{MznnY#&2lZuuvlX#Tq&83%cY+h$;E9Ot{- z{u0eaU_uD|2q{6z_xB1(Bq#Vj;;S|DvxUpE;u+ zWxL#(fpPul7PJSPU=WdvEK(j7Aep4rj$%d6M|7+*Ki;1K;y}_X94V{~IW4V8z967LD4c`32TMwBh zCx%kKBJSs&8yjZq{~r-I>_>11ov5hhH9iB*H#^;Qm&v{iU-%oS1eYqn)9Sn zfNtBkX36ePet<0eNjEFsF+)8$;FAAIs8V#9|0M2AM>|#zISif;=XVr+DEK9d<=XGNXz47_9jxUWM;PL z2rmbZ%m&sNwzQHuo}H-oX;zP270AVl8R@Gvz=S(sj&cByS z{HnwO?~JECS#>}yQD0NXdBwVsWWkSiCXNMX!1?}x3NckeUy{Ow??beJTcw0He!nw4 zWVaLIbRQvpvcJ%>M#sS5i;W$zII&!hI$6Glj4QA8acV!Eh5DktK~SS~$VK=Y9`4D?rU@`j1}?b4YF9oZCsS z`0wlFpGh4bYWn1RZO|b@oFtAvNqk4b#XDBu;$kQC;2J(HNFUI{;V83q|0THS!tp-s zt`92VtPP3{U4*aPLry^>7K^X27gMm67FVwN7H{UU7vaX(i(k4Wk)snIAy*b-P`9r; zaM9LvaQubCnl=K*CO$!s(;cX7I16(BumjT8yaE^dz7CgKINYa4dN&i+cta9UZ3aks zuLLB6FA_+>>7dD{+MtRmX?g*d{`_7_^$;4L1z{~aCvyL1e6 zUP?;Xi_4v#Ab#!#U3-9?BbO}3#Kpu8fMDKU4DR^3Ga~T1_#X27d>s7xBt9XbZN*q= zaUv=3YV)99TukDOkchAyJcNauo+!LK#=adxw0Nw-!KwR*_C3k(ka^#gEjdtt(x*~q zh1iSpP7a0EF#@{IrGA2G7*a4nxXe;i%hjeZrG8%@LXqCBXYHUPQ4#Aw11v*}-Y?gM1TGe#Xq`mM={u@inD2?)noW~aP z)MN^B>3T;O%;F#{ppP=Bq@b0J^MyVuwU#n?ypxzzCA4HILWVsL z(wUn0iu6Ic&Dmy6ZXSX?`B$1OXN}q)2PF4 z>FaL4n;r8t)LkQD-8k^t$qU);bjZ87GOw16hPWa`T&4sLN#B*hHkrl_T z^3zWFotByng+e@OoTlLq!(e5T7i#KBTIHNsB-=)~N(qTiY`In+S~rj!wO|&V`(5_I z9^V5Qe55*>*T(aq-bQNItmid(og)+~^G5Po@=0XxKm6MK0G-uOiZv}+eVsecbJX#O zJid0Gc7Jn0wBH#e(3h8k6%RS4H5o{OVCKdu{`uYi`YAQb%jwa?Cf;a`^yHjUGhJ^l zNC*+kJ4rLZI)Mll@DYlA&k;f8>{2CD^;u`gW?+sztXe~`_?3sdt8H{;)vK>q+~4GR zzi7XFM@A5qY@_WaQfU+w%(e7c@F+Z}ij8xdIX?G?>c}gNs?`%#Z()@ukG0$svPI*3 zG)lEZ?8(%*MbqAD6l;AOu(MJ14)GC`Yfmkn{5-MqZ4(7OxiY=qO&Ai8b6D4BQmbC8 zSFXh+H1pxtJAGE^D&rN|s*;5<-_~fbRsG`rBZ5ycQlwtHKVG%5HT`nfBPSM{ z?mk=$t{>$%QfNQ)+wFdyYq%$udUq3JvV~_eK%+_q#Burhw zuw>PulIwf&kz+*zTzDGyb#&?p=!V8s=5HH#A56Y_waOaJ!}wAq)H*elSdR3evK5A& zN+CBFnP5DtyjBluE4$?;X*PH9JG`54ecVo8o%O~r;51yv4 z8#0V(xqO&bl>BC}?samcZr0%)?+azYqfSY#7$5BW9^lf0l3rLlkj+?mDQVXFd->ci z4@x=McK15X4yyNQf7RQ4`ft;~Wq&{zKdj>?@Fdw0=f9tHocX`=JKWRjIG7fbKJrRR zpl|lx@yS!#P?doG`a6*JG=cBQcSyz0E57FEvo&t+Wxb=aNkcIT=}?E(Q=XRUDCU=u z+ITW*#G3NT>{zh(y2&JL)IhgTh)PYACr#mWB{foIjB+6}`XQ3)ypx8?Ay{xIXNDI272zv17umTa^;h60s@9X zPweUsR#nHbS#Y^-QC?C z(k&sdG}7HE-QC?SE#1;34fp&0@4e2Bpw2ityYu{>IOlUpXiJ&-h$qtqI=Y`C0lWe* zE#!-<>#ByPy2!3H!Zm7%tDN|MWol7Rn6sO+SzNlm$L+iDI$3q?nKDbC*%ltlSTb=l z_YFAXxp45arDKSIB%n0NAP@f@%q^{u`0tM<|3vba%Qi2d^j9H$rGt~~MEUO1gdx-Y zN)0&DCZXu!(E@T96%tRT<-}t|&eaioSRA^!I@F5v*yd1;8jbfVs&n%|r^0=GaxuH~ z?P8GR4pH}U@#ksA)4%dF(dSKX^oP}leV3I_VSX*wAG{yDpNO6o_?`k?+n?BPg3G@L zkht#V@VGq?o-{k9)W#{hryZlho#tW_|6WDZkBb>+NW3pD*5JTpfb$+Aza+~OQtC}` zwO*o3k}^m(p@J_^D2#mVMEnwT&|{q+A2mnt5|h$j^V`cs#iaO54UEtN=Oqzlbu|Xr zBzff?nmHXT4^e#WRrTbnO4sNGS4>h)zf!3f#R4kL*X}q(is^l$l(tn~c$tY3{=ySj z6D|tKPb(!q7FJ6cS6QeUKq(}YsS{yK5q*c5tMFP$y1T~u(CWi5?S|T$w4$LSKQe}+ zgFk7)^6I_(8c7 z&WTrTIp&!f?8Mjew9{H?C^tEgBr|$v(P-%;7Y8;L35GZWEmpF$WgISs5);ZC=ebih z|JcL$wX=8fe{nIpDSj;OgQzpR(Frfa575|2h=e5PDKN*>oMWP^<|{Mq$4YBZBx&#p z_sT;|DHe@mY`#c0TPV^H#%hJ@%ow+6XQ@Lb4%qgcm%s;TXZLPo{F=ZqIc&GdQIqv9 zjqp(=+$Kk;Iyy%~N^v+vi8x$ABtJ5qY913uG)KM0Ot~73%h-Js^HC*^zj;inzOzCz zYkFX^)W{r{me4ImWinsaVSi3bZ@*L_4@mXos$nrFw2U|#TH7JRvSMiA-y4`xo)t!Hk1nL z7VP4C+@o^B(h|MD7^L-q`m%ylB_3qp9kLd;duvL>#lAY{(S3pEy_FMx5OS9Z3k5s2G6r-A1c&W z0wF>ILSjR?hzl>(3dy7K1r;%W*#j2EgpxTzqA}X?%dwEuo;oE30b=RUXqkc_;eyH| z>_&lTBLhOxsIDrZ=t1@T0vV<+P9Y0P5ED}wtfVi}P-bZ!Tz;`W@tz!VEGF;V$zY27 zXkIf#3T$x^MI~(Ue{=rmuj8|d6JfCYpoe$Fc@uK z*V5|I#hUJ=H11ZZ5KnM^3N*zU=5SF`Qc_vh)OmMD3FOw3wj-{L28PCI;oDBIH25R; z6!$`r>Zwd%%&>OcV{I;>En{R)El?!8+lEb zn(L3;IxJaPmsQs`jwO|%tEk4$tLf$~nKSXR>p2*P>(qxI7)1)fPft)KprGBocTb}~ z${!a){_ff9xgH??9v%+us~*RN3)wAlCgt7)>esCQcs)|o5Ir;ZJ&F-ddQNV^YK=Vk z;whUNGbeYgCfoD`8xs5HxMt6_QPYQsx1M~u_vZz-qtAQg=N|31=ubcS?lNv>JxE{zpI*(U)PD)_d&Q5nB6+9d*p5*Uh zR>E3$SKU+M?&M@o->%oV$41}Q2j!&tWHyb`7|&>4A;cR8pk)>naYXo8FL6W&GA98m z*G=yfmWZ69(#9nIj6Krlm^=mQK;wn%NHW~u=*sD>_n`|5>e)=bYF4-&2yjlE5@ct@ zaAQK7xsBJ&aSoihRwDC!Daf=LSrpwRm+m_1MRcjpO{@$M~f|?^Ugx z>9-4GDIC89|Z3Y2ZN=t zRnnnri)V==G{yGJ8Z*bkvW5o~Fqv@PCbdT*#bO2xQW-GAigG7vchNHS&G18hD`VL%f z7mHPI16<0gwPG4;*v7Z7FqSsy*~iN5T+Kt%!jWd(S)J<=I9j}5ImHLWIvN`r5}`+S zX%|Ee#48Owli@@>4Gw`X>)*INJ~4g!(lAKm!f zhKsZMj59$J*P)lX9vz}9u06BouavRnjs0>X&*3v;0g{PaTv$r{)nLPTa=zzj!JxR5 zvXCkcbjEbtQCdJ5OD#T#c077ejC=zF?US!@UQoY@o%W0A5Jr|Sy(9bh(*?3jEZ>tC z2)qNNbfMsZ@tK1Bo#LP^Lq2A%zh19wg?(W~G}$TbZCL3Yf*GpK%L^Xs;f@JqW^>df zW&vl0y=!K4bYa}?3{<$RBC+*Nf~LDxxAO;wn*FA;X0U?2Z3I_p1j$gE658@xMV=iz z^;AtgH?QEUURGRW!@JTCpyZjf>V2jBf=Qd-mT#xfCyc5b83WB%1{b6D(TtG7fjo1 z7)}2Q5d!L;q@aM4Bj6_2@l+Y=l{-#5aQY5$bxIlyXRRBzvcH`|8cX}q4T@n&d1(b> z`hQj@#&lC-w53SHO%*+TTW|SdVtenv38<9W!D>)*YNG$osFNvU#F!F;v_aD8Lqj}Z1bMz=$+zb^CyrT8#y=+=g zR=xMyw4Xv_#uOZ##!6-zTD0{&O6<+QjBc|CYfyy$h|Bt`0^xWwYLT9&ANsO>{9^s> z;rUh^OG{0AhpU{yL>bcuD84i5Z&bF@5Xt)V0&OR=coxUMoM5V;n9EifnJkMpQz8Dl z4MkEdPIhAZ_KDO`p^uy>MihC_lHM*Vqm3%e*)NL+Ygn<}0@ zvKE_Gx{FZ>P4J=>nh(pPQA-ZX3u(v~=@gG~nNDmHpe7JjRQOfplXy-crHvui1O5&S zW*<_&+(A$-DN(VBV?-9Rl%4lkiyez`riw!HAYq~xz;?}SPSihDsVM$8e{8^MeuU$Y z8l~OQFjTg*_GZ67;pS?*J)_qv`N%E?_28l;qRFZ}VxIV|I?0tfevKNjle+Fh3f#!HrB{|xc0BdR^y0|dA3v>0CXUrz#`+I;pp zR*TG#Fz7YB`c$M55^0=}*sVfDtc3KIjy_q==Sgh%rHKmYdubH`IFlvnD$MRGL?QEJ zDHXC0DZN$XP}bg&OYGo=@qeRI(k$FKrp_kd!v`~Sj8}7vccm2oE_;es15=?2#k6?> zFnS8|ND2()sEqR0H`QoZf)|fU@bjo!6>v4iQ@CX@eNbqsRkG(8X-ehyMsI`%gv`&9 z5Glb=DV2g9_&%ab%yKyU9v54;yJke_qG3CIwDh##d|_a&pLCVS8s9%0c6SjL2-NvZ zeq%l|)q>5F`5Hw5ua^zlgxcA2myZ?bRqY&*9J}51B?iF!YgW^tcj~DTG=6?-fAX;P zZO_HSap}E995pah1AfYwUEy328nPExy#^$J#h6a<^R5XPOJf$Qkji+Y@b9c$}VEifU z`KkT>+imOWWAnoh!y_5rQ}6f%*pm8i*RS@2dghHHmPg2(1pf*&a-^qU1|5-mXGjM| zw{3}myyPoy#@prx;{MK>k%@c!8$^Fh)+3f|j{JrK{2@4wFa93Px6aSc=`moE>V4@GPbe%U94unkV<2u&iC8&Ln~&SA zl3%ek-5`=Gp+aFPL1lorBxOJ}h^N*LcZ1|3mvB{j^3U#pqyHjAR7kcmlRTDrco zd-C20w#8rUcy~hfFT$Nk*|90vIuVMH9x;l7hpOJ#uM)9h!I)LqnP$|{CCrE1TFpv3 zi^hSLc<9db^CfgkX71R_P)0P=;UR) z>ADm7O6w~1lolHMD}^Y(1LVMFWDiw|-!#+)5*>C`H7PhnoN?6$IRDCL-JX|?bv&*x z=NK3q)(=qv*~=Vk9Kw6`<8Iq}Jy)~WB%m~$$#Jw-TD~EM)5SzkNl>pOTel|4cFkg| zl-`G{4CcpzQJ>3LH7DxI_$U=3H(CVteQ_lcti=jdLPO@k3L@F5@(^z7yb@R`N}>d& zaM1ml6vhNLJOxhYEasL~fR@H*!@HI0wQf$s{akb$#W*=dJ1L5Q(m^A-wCt45DROdB z7&T>7G!vSzP#mV10JgFe+3=6ID6G#+tkNRNihD(0A;p`?WLK%e1&0dbrjxzo2DC$6 zuIU22fq9k<`7$aJ@+#ziLj)9YU3;BwW)jLOx#boPbLS86)XcWjZQ>fM>IQZ)Lvsc> z;=%H@(ke}=uVYZdXzFQYP@^G2n$kMbVS1~YAf(LCP!oLpyN#KbD%m+W^()p~sR&A~ z>|V;|CzHTmFkG>8(SD4+cfA9UIpi^g!Hvs&jkoFP996NW+YS)UD7TqN3>HTWW$DbK z*USVs;vss;2qBogjL|*WiapuWSg>)ve6ng5Armt2kqH(u3F;;5*_21@WTy_zewVzU zEQ~VOj*7@C{CafZ^R@YKpWJtE-L(r;pA>5X()rSlbJXA%k#R=!#;lfbohgCM5k)2*sGjZ? zQ7nsxOG@b-u7)VatgLO14++@VXF0%MwbMsvT3-(YkhBbR{@W9y?w?{={Sa-bA(0X& zK?2lL@Gp5AGQ~LI9QeOTRmf2Kyzf6-C=+-8M-E4eGmKqKaUOu?u#JG1fZN#6*!6g@ zr1fQbb7u@w_T=zX^~1^rDv4X#xc3@w``NMSEra)Nz3YkQ>Q3u*TW`kGVEcB)Q;c`d z>TT)j77^d`+|8e#k5nYC7f#2(xfZ_sB_0=7u)|%U3ta{7pNtIh>yB@Qa$ug6qmFyP z+<$$8y7SK>8OFTNk2aL%r2RQfCWi`T(kxaW>)ns9>haw_tTWbWA}gmyq@<@y*ac3E z8`V%mXQk7)!Xw21-PLZ2AjIa4xI%F6rkMhwWKv(WseCR+rCF>R4?j;lIc{j?puChD zp&*a2NNBXYK|>wPnkq=ZKa2u1v{&Hvdi8}*(`_prqBs#XfnxV8P89*s^h8%oTfX@^ zPHT~vShf#2%D8bJ*0;MgOVTJIv739J__scWJh*PYd2)zI>SCmQhPfN^{`0hF3y_U! z7O(`_2v#>ZBgn2a2S0-s*(AioM3$61KT1LI*OWQ-8FrI2%Lpp6 zVFqHmh<9Ef$s?QQA$7qg|= z(u7oup`+f4@u;uMbR-MB)? zqBKU4l{#L6^;5JwRzrSJDayPCinc^{KIXt6z5=x``R9jIehXYp$w=8^BWWb|QbXw< zg!$|3B%uBzC{hWaX~u}9pvY(xtSvrWC@JDwpoj+<{2I?Qmd2Dp6ave&eU$9I;n5?D zh!DdG2={M$wj=uw+CikBv%`?J|Aa~RK?f|TBghpZg+r2iQXyxJ;YeNwwkhpri%4zu z-(u351_g?Hw3>%{^W5qJ-&>T4=Oq^`mP~zfB7kz$Xrcp6k)IdvPIq_BlOVT)qu$>s zvWrK08dOxPZzT@S4t{X~Oq!O(smp)#+W7P=tl$7E5pyTdJLuoj;?<4YZ+8io z=`L>%^EPMsXxhn)m=m4aeI0fZD#}#mJrJvFt};>-_C5y z+Rg6P1y3Y&1bt`!8X36XNN%M2>TXN^_}s1s>G9eY%H?a7-1t;XlIc=`bHJ~n2&$n5 zn{?-9$#V8re&oZFG^F#I+B$|%_J5x}E*~O+MZ%beFB^E%AaVOnO{rfTV56h86?Miu z$vLYB6Gt^&V{OjG{H-ck%NC4#E(AY!)U@z#AHU~t;^OtwhV25OPpmyXY(v+TV*#4x z9Fy0}q?rP)4Gi{YU7TQutZJ(2S^R6S2JZlVEpj0UUbuL;z*hwtx#TO6flF{J_)^F{ zsZ59HmmMh}M&8{TdoJ3IB(5(W9cj#&8lfeWi8e<;nZg#V6&JCbs}tUU!oAyW@nLIq#eH)0O(CMDHtxC)20S)#vfs zpWcrt4}WwYA-wlF8SAC>D_j3c6B-=X$#NQRcX`_dNDtZ2csx5-F~!1c?qx5XrN%UgI>%-cIp=ka>(ITZXeKNpq z4?HH=7f1@?zI#@Pg3}o+i8c{hWnam01+hIdGAPC~B>>6i)ftc^(~9$82+IgpY`ucH zqG*QeiL>k}{J89?BMW6Rs5F~@iSN(dBWmf6BGx21iizF{LFN3#1j$uE~p8Q^KK%+(Z) z9kqqom7v<$iQ^NN*oC{+LodkC{=XJrF^{%3Rk}DfN70UeZMY;X5Hx8uWsy-7RS@57 zDg_)Yt9%^Z+NsTq7SA}o+Yafc^0y@Cfqegh%9qtm%JUtZ+J?F+M5?uOk1Hqk znO1FB_MFmX5%K@2YpbK}28_K$wkj#9YHR6QD5aZCQ01s@>s*{-mds%yqAAvz=LI+R z-T9@)zAGBlg+|9D%Y<^<{XcFt??2eN8fLuZ@krxlXzfWEPp@cd@S&G93kk{^R?GiU z7L4_g%21s-IlhMx(NX&&xPN{~Ny>ErM}cghoX4yrA8a`73Jgq?AS2&w+l9n=!r$yS zF>I#9{8)PDBipgyAV(F@z5gPgEK!p14+&hy*K_oLzRwIXbps|=;G>D?)_H<9-{vr4O5h*DzsRnbUp><4L-hT!XATb9bM}X4QD4Vc$5zwn; z{7~J%Xu@$gc~k?4T)@3Wcts5y1HijkzVv3g4VZ#}$fHyvUui@Uf(H(s&=jZDjAe_P zPb;{6BUeq>7xYc}{w(H}Gt82qhGRD00y-mWXN>FE<~Y4=QmU6UQ zd=e2_H`KOP>-F}44=bws8Nv>&-tbiXdmUTzkdXXez~)OX&QKu%FBU5dDbZwd#QOa0 zZ0pYW_}|Oa;@Ac@-Q9&W$%m~3z8=3#I-P|j6H~i^?&4k7I`25ywzHt;jgtquwu}B} z?&k-R$L~*Lt4}GO7ph*tpdBm!Pg)qluH!uvzI+h| zCVNu2)(9RIZfMre@v0KJV`XL5OAciH1Te%^NBd=pX34#R*DIbuDF`<@bR4LgrB*(- zp?~l$j~x>FB%fU!^^P_kMHnSQvQUX%p4G%uHip$;ehS(|d~MBAsrCwvf;5Cwlrh&F z2ty>(DRDBAFWF4wjDVN${3PF7Hou|$I=Z7(C5^ve(6jx$!T~>~g}%O2`&`yc$+S6p zw|8-DDE2x1w!(+c2OgMO{au5}MpMXjc~PTku@`UBMB-FRrOK6aw96-~XKkk`h1mr; z6G%-DwpeiES|nTLGWT*JT;@dq#M^_YiM3WCHWBu1J}E#PV)dscpmaDl9Ijz65q9!v zIFXQ`yDQqMCe}Y%EK4Twt90DMTRwGxC`B;^OldrD`g4jliW7$CkHqi?v#+_qr1?fA z{-l_HQj$4Y<$w3DsGw9zUWX8)OKgFS|CV$?LK{-DEwK@CnaMvV%0wYsIYIW({$?M8 zAcRgS)uvTi^K}s8&D>hr`0eQ7f(F;w?YlgLVTX8zaSejM%6`jfWX*HuN+EX4$r7EF z9M#GO`r>_zGM^}rr07I)3=H>~dbZ3RDMXkG^#39>(PtlEHc@8MFhT9&YtnlZkkEv` zM)}KSS3{As|M53wExnkcG`8h1&)2mpcq$=|2UuK?Gmf)Xmpg-Cr;s#=$pdG*479tErz;-(fbdUol}ge^AXxSlQChvyF<^=z7dE zSAJa4+K5x-Vai_5(Olaba8zBwQ11Wr^v^5-eMWmn=kbU8IhRJSZEEmk0TisWPU)5B z^Y7`ro;^fAGfo$2%1>vf3rgt1#1BFka)?6S-bo>8OJ-R@(3Z>X#d}PHNA3!j7m}uX zva56b{lE2!^M>(C^PPFdS2g5JK;zxPB`Hx$5qmHzx2gQVvRJ&VDaV^ zL+#LoyFu9LVwS4fr;RU+sgq8%B3xn~078b@?JblJW4PlVAH_iai}IUCug+_trjP?8 zfuHLx_dGXvPM~+XUj{V?Xw5(irW@&czYHI)5tAD8pQCL6XF+W#cWFOr91pCqXu18U zAnR6ZaHpf=KliT#N6>fGb(i%(&D!q80ZdsCCm>Ra!OZT)4v1vg%T|*Ij{7wlqQ%1xQjI5@byqxR1eW{G51rObUSU;MVgNLwIvYC@)UiL;a;f^W zthRNvlyIBna(o_q;vGO_Dw;}E)8KGM%wYZP{4no(OZ$`JL+9$%%_AsQ53}XZ)a?(U zeB*O%cgDQ8!9Oqh4nSzd5%qtXHOG6>O!N-rQ>`E3L;+g7h(CO#h{^pNY$B}KB-v7g z<*`9jMHOuztva0j<{3wwwIRO9{By$it{ripL8TaF3_rGTNH3Yq>}!I4S17E^A`4r) zSV^#b`*I(WU5#N8XMryUX?6obL76cM%p}Uv{(%7&HT#kJBH^4iMB<-hk6pMbw~?7$v4q&Lm!u9s--(JO7i`i+KR=;n)k1zXb|GkygSFQp++l zEnR$_$5rMs*3!1bbf5R;}#mU)3CZ{jMCD%Ei&+ z`GwfT)JO@=tpe@Kdh^yyd(eG0%S+1kW)-?XZ&C0}QX7yjjRj9FY*bF*Z>+UQl4ukI zzpX+C6!cWvT7PQ7Q-Ju4g`+MYr4G{c=GF@4*_XX#LbXl&?7?CV{u#WxBo)33U-Z~y z2p3AArcAP;$$L}A!x_8W=oJ&}CaM-*}UGVyPbq`G0GuM~3;eZ#Owbtl9rG06?8 z&D{Mx`N@+KNkNuDrO=-+0ctx!=?DdSHGB(VNm)7iyh`iW-S4R4rpz=Drls`NG4qqU zCZZE15I8wQNk5Cxh|_ZV8j2Y?VX$)gMJMu0h&%{Y;AfDZDWOSs&MN$tRBx&!HWn?= zsra>xM(7sm45T0~g>h4f`TqH#UXNi^aOxPW z#=-9GH>MuSvv@lk)peb-=Uk@oDhoR5hE6;?Lkrbf?T*1jsxA%o#|R#(&JAAsD9x&6 z_Ml-31=4#Dr$EaD`s&t70)%#!1ENEn<@LVWgFg+wD8ZP`70;e+N%s+D(1H7|01Z9L_VK-XAUuA+GYQq9qLh zIBZPye?*rruo_v#v5`L&pl!O@Zj#^Qi8X<}`+U%vr6T(Sme(T6+~CI`26#;dM6Ry3 ze(}H8&&2|LPR#T181AoLu$}#PCQjk%s8Ey$A&l|fpH~n6brn0(*yMMQL;EaiQdvf{(tY=UcJ~CbU9g3x_8s@&!$fkt1|4{1Yc9GvkCwwk3lXi|$0DHIu?s-Bk!b9G#N>2pR77GOdKxPlRe zgVnsKzoc_$csD=iD$%lpn%`B2KAy<>dv#=XgSVLH`Q!1{h6jCNwtCp!jJMk;FFfIgIjB|H{ z`{*31Q!HMqmdNPmba#Xd8nnsGVb^)X32WxL6GryK!1SNDjquAdp^f?(Kobp&wnX+s zwRq${aH-CO$`*M%aX*O4ESN+~V+%lURu)&7aPF1lP%K`pktFsCM`M&S+?^G%aa+OH zfK-%pH*%a4``o5ss*d1CZ;dq!`F73k$Y_zNVU^)7jxr0CVE9s>iM? zCV;v0FR$Ooo^V=hor5cC0D?^+!&@FBmEOm=!4V0}UKQ<615wID+?_$>bGA;)$s;?UOX&^i&Q#CVW-XkVx(uXan^kFS zaDs&rrKDW&aEs?Xu8R)W&c8`%G~u3E zoDuPiY;sBgJ}cYxcdq6yD)6+-5b=n-+%;Yk@ODqgVZT<#jWWhiR_@}Z8?F-YmbO*4 zPWB>XhBF!W`~2i_MSjBq{bEFnKsix2GJ!`7*8w(GE5qy2N+pOy2 zc)ShwpO?Eg;4wHh3Oi{AXJs#uw8INjUc4U{&N({9PR79(0N$phssG&==wyXe;_(2$ z1??`4QB0vYesG>Gxk%59&}|OAwfmx*6m=6LbW?s$SqoGho3-&*$2HtFl+m{OT`(kj zqmEQ0dkgxQUU5^~DT4C|Nwye@n8CC;kWn2BD>lMx2{fdVAnoRwOO;Hpux z^z6yP&*ja(o8OvmZ++h`?;f$AoL0W&+t|r-8Y>F}OZK7GO;~zB#*r z-SaI!2x-i2T%8qKx4;}a^yn6aG7ZsV8Y-w~hL2oD8#8JG!I6X#qGO&R)=D@jJfs#x z4o6kel1)!Ti&^a>u<~P;t#GB~gT}@TQYd=?O>X76S)!4wEap=NgB&dv)kewcb%BU@ zZ%$7(*gYXms)f1o{3z`G{+z+=S1MZJ#7B!M8$=Z%LwTgP*W|5B%TJaLmhRC~DC9`K zrQip+2R@S2SeKMmw>rW8bFMYEbLv5uh| zk30PD(W|DBYY*^3UHP{7&NrkcNC{YAS<>B!wVf~Mtg3GGOA72|l{ z5Sip=qpg&z-kr7E*(%T*iZJ*c3H-Gup+xe^eeUM`^{ zA0aOX^DLLB;QxDoUk9JB$(Gd@I6S*PzE-RUS@pRZ5P8}y&;07dx3Uso#g?Ok4sTGa zkiGB=U|R)}vK8oI(IU3dC@l$`b9s^DinNQdG?Z7#2N^fScuUYpC06L~&sdeOoAD_K zWFv#XO!AoN`MH0@P^@Q73fN~nK z8-vqobwXrJ!p_kebWO-19FooJ24+luXP`}l{Bfps%$V^}A5W-DXlwTB&o7hd9nugS z(s+8ULPYp;?w%{IO_-v$ZojX}ki@x&hzRM}?S3bTy4Fr|Qgu>xQFT$xV3}TK`LcWb zr+=)>IiZ=Srpmb%nO2bU;p2X9rq~cN+A#UYrPHZ*R`^xsld(qXo{`4*nc^|oVllt% z2e&;R-VsdB(D3bvhjvo?@-fqtm*uc*+&@3H1(GU^=E-B~Zy3B&5Bbb=5Ok;h`G@wE(R-SQQ|9$aEnF(Fd_j%PqEUzi^n`TD(bv#p6LKy;`mT8 zgIIrJLEKNTqTWTx1<3(c39&n23oVM6!S88O@$9wzqcIlK-A-K|deT=>tTzrFS;IGJ zBn4n^`xdTg?XV@Cp)ul4yzlurVd-mT34CT5#E7=r@JMUt#8W5?^-0Ti_p-RJr60-~ zo>lyY2*MSXdB5^JhIpRSh>f~^!j)Mfm8X`aRir>03lKGcBBn9QR=1odN0qftIT$NI zMGVp>OEH@frNg!Sa?uC&V_SJUVMNXF(&5J z;K1&ww;K#am|_)8(HhvETah0@0ftyEoPcIVQRpi%`vKmcd z8cqJ`r%~@1xOb;Ar|(n33M$Z0nQ$pwImHG@NcXNWUirU<3D#)*GaY_4RcU><{6X|( zpcS1eC~COXoFD>7f7MRb>2Q_>+EUPI#+HPR?D*H|P$S&AR-!|)eQ!y+=?JFU^JR|@$j_nd*?`k_mI=eP}Ul-*=dHicRsLCy&Mn+c5ONX`FHG>2O(Q zi3k!aiS)K(rpWlb5$#s1Z@Q=f4#1}kmZT4zFOuZl8n?tk1^lA5~4PaoB}DDa>qnAc9q>>6Mu7&{8+(2GP8lz3uT0tWF>7B|3PDDSUVcS(kF)s31l>hTb|kF2^S zlozv?D@(3G`{JHBrVHO3nfQUgGe>3vw)f@mYt!PB;9JYu!Okc8dk^lzBO3?TihkfO zeer7Ur*$dY7yHi9kB)54-(QxL5ez8UX$RCrd}4CyX0Zc_Q(ajV1#S-9UI9*}Dfppo z<8i{TnQ%S&+%hD{GwhbQ-ss`5mPUmYi1jIwZ;=ZuNCOHcO|U2 zrG4|W`O|e>R8o(FB;gga&-F7VuYQ~EBu@1?Tfav@QgJY-CIK4 zhqdn?zIgU{@)k^*MUL+R43bX7s$1l4gb|MLnZ?2ectac)iSD`HtRfEjZ}e19q*5{_ zJjNI=Eaid-4S+7h4A#R(hUvS8Q%~CV=qpHvYRz)i-?7n?_GQ2M2t}98NgUR&(sH(- zPYF-1S07cA9gGp+73J94+z1#a?PU||Wgvw;B7Wyb@cr1 z&W*{k-udc9>PBUpwrx20SL2)Oow#@jv60sh@6+unm`PVf5h@XXIPH@D!lR$rE@j^s?D@Hn;HAT zC6{%1^r(&>Tl4be)N0`Jn{Jzz%^HRiHq(}DNpAy3U@y2vkvE?dBTbj+zWx3}eAy!A zGg)yGo_^mNp~|5H;fDK|P|Kq-ffO_xfcm-?Onp{;Jrk@` zg}E*QPMtnA5r5wK2lb;hBKutA2&&^^2*b;Vk@iz;yiO8gmf<0dkt$u4#l^^uc%r4} zrj-`}j8x-|Dj}_SIfd7F(XzqXQ8EVN zdRNENQAu{>)DM@OfBsHb?n3aO=LB)N#1xj0fgc$PI;5nxke#VlQK(81gs&H5TMeRP zALmPX)D`n*1`PHwM>SxcY~t1N`do#IrBuYnKa*rE{xr1-x0alb?dlrM(^RCgF06h~ zp#P=j9`c(Ijw{J~9HC52B3Jz-_hm1t6e7hiX7#USkG6!f8% z|CpY_4sJxh6F=BB&pYonr^)=(D)TYsT&^mOA2ow!Em*~j<4vN6)?{M@_r04-@(S&Z z2IU3B9D*ux#6>z5QJE7mOx1Ko?_3)30nsS{_O@Rc2dKHCXH9{c&8?VVH_(U)4y?jwNc1d7Va zqK0)Gx#UplmFY5?+LpZ-svFluulvjm!Z@;3PHmq^;Jz?^9O$<+_ zrOvC`LQAbCS9m5|06~fx*7)F|HDEfJD3fsp)?y0{p1xu|q5@6+w1}^65D>wC6rQB5 zg9}BZ$?**wmoUMb7ki(v(MW}aMHizLFn%!ocp8>@&?XP#yCgV3Ja%dVj9@P7rKPk+ zl?VI6t^L1$^hN1jQ9(4vMDVs%zSEPr&*t}jiEx*5^S*Dl zOu?uTj}i0`pj;}6oZOG%U*OMK8Mn_E{5fDgbT*qQLgSLbxT#ppn==PoRr7j65CkOa zJ#WLxqw3f^bJ~Y~%=O%Sr(d!A#&U>7c`M`=C*(Kk+B}*W}yy`?*5Yq^0G;3a>GQ#j}1vl(hNTS+QA# zHN>-s2%8GCQjlRuq$$IS)F6w-V*ZHj2)5ZplQ67AZA=)>Rhx{ps<$MqQOcFWALtJG z866QLG5AXZMOt-0jWS<9x?ZXXDU=AXAk#`+H#>1jcsREtzv*n&-b>nOC)u^In6O#N zLp0PhmM)O<|GyT1kb*SkU5=VXNLX3SB&(D%zbvLk~vb~K*V%yT*8y+KA_Tk8o3i4a2>y|TmgX`kNoKC}j zbcX`-oaO5myW^*VP3^O!b_X&H?|e4uB&i3>?=AFLE?%jJ2w(6@8hs{P$C2EUlPMi! zy8p7dGz=p}=Vt+9cW}ejqc`1F^-5W@+JM_?AZ;(BevTP*H58kZT2H3XsvCcgMN?RVS4`O}1R#M`_@C317@bgu2O?|jp+xVU-FTw5B*d`y3~cbFI1$*8Q5jss={r`=YUN}MQBkD2ki2SQZ?{Py~-r_?CE_6 zp8>))eE8P-cds$tXj9^}AHscgdm-E=*3-@pV$rZsFwqc${nI#T6xoCNqy1m-g6@4? zF7fLg%k1mJ5bI%ze#CW)l|S=%E<*be{LAG_rO2%^De24k@}(2j^?P-iXie`mET#2w z6!O2-e|ev|{Hr=KY(bkY3GGgXLbiC&kwb674!?Uab9~3K%V_kDm5BA{qk}rTOFi2j zH*&nrT)s~El+EniVi%!y^AUVENafBn{ zKc}4u?S-;*wxzh#r+~80OpfTn@`GyBSJ8v(&KcD)OmDx9x*pwH>v-!Y1hV7(;Yqfu z;?}oZ$pQTJ8Eg&e;N-9zN+C4Xh(d~rOT_qeAyp&VFXDY-3Io3qHGX)CP?$nuQ7PlH zg=>xE=@Y@XqZ+R%Q;y-+Bi-+2+cLD_S{4#e33_qjQ1zOY`|D z{YQHbVOYlap#yxn$EqSs&K-u~*r9ixG&XT@L`46~p}2gk+M6D0*M@TJr_nMGp9}Ob z!g`#D4Ndz>>iw}t+B0}GRw#{lY-+n$9k%@>g5+45GhlW*aX$U}>BlFNV8!;l3=*#^ z)&6a0NU``;nmmwm@*BP1`EvlI;DI$7Y~doq(|5{4GD=b)R89Sxemz%BN(AzRO&$K# zORF)wkv^7F*<4Qqz&X#qJWs#P zmoD?UTFZ{!KdTNSEon-=dHb)y`RayXcKrQy6Wkdn8y;4s9#?2D_8WeBfEEKx?||rB zx*c*fgWIqAhI4+^m^Tfa;R)V~>L88)uD9|xpgM-cNsRk^9j@Z3F#U@xK^-0~;gQT& zfGKk(5WhU$qv-RioYjZ0$)eu)=P`z}l=eqW z&m+s#wc7sii%FvE#+kzNfuZx{q-~oo-K{h%W$&%*?+=mR9`mh*tLkje?xR~R^+Bb7 z!aK5h<(mVC_Ls->13Bk$c6ydQ<@r)$s;bnl*xODl(f(9JD_dO${4xa?i15lz2DX2% zxJsQ-Nil)JIHs0aNdi#XXbos3sP?Y^EH>r49HX;SjO?ZB^R;6fwkrG4Hdx8i5FL&ohl2i-@WTx|0-_)M58sdL zawT^qW<&SvwxazdQshV=yGyOvBsS^lv(H zWXjV|T0{3(Q!WqLmdhT)h(>Whf*|X1I67XxI6c}-<^LZ$r&;v%#f3PwyeD# zr$sQ&1Aw4b4NgL*q8{vC+0u@SqNf;@D>Ki@%5!m`!!9cm7c5WFP)L!FXep3jbEWTK zpL+}0yCnHlFJ$ig5(J+A_PvKDdl{;9wg0CZ8zZ-7txO$QhD9Svo-(IETn zOkx2m4Vkf2DWcXUd*>8hZ-7bbp8v#geu*$M8||x`9^X|qc2)bV3MH}_T?Q?ocpNOy zT#=LzKG%(bkB0Xj70;4&`oM=vx!Wbn&y0zxPfLP_QA$*{t>j_am2Bm@T%4uIaiR&z zMm)Aa;UXx}|0_$Ew|Ujh^iyl%!^%ttJ>J47MIAE4VE+8Y>pjv@0E%@hTX4JSW#S#f zF|~oTxnM&u@1xy8Azr3bz51L5{Iut)eJ+!p&AlH&Cq1x%2}G#Az*!UX7w- z31@zsAUkk|kvJ_K0SMQ{JQi(xW}OM*`HS6$sJR(7Ii(RS%haQss*_oW8$eh3M})#S z2e=PjRuPz=zPVpRb5!ivBmozj{S%uQdH(FHj5=#C;JKp^F`5Xl4Akd86{*X$ zIX|)&7Zn1--)vR`xfrTSMheLieXlduFbU{NB#rpgqyg9$q6cn2SQuzOVY0X1G-^$W zEpE_Ky;>fZ7?4L{!>mu+}<6Gk5i|In3?%aNS1H8r|}=akZ&~A3x)#j>Ys6JzJ1m} z_68Js6lQ9pS+*W^fGDd(e{ALlP9wykGoF1?K3Td}yj8zUdo+34vf(FFhd9CHL@^<5 zwWX=Wb=fzP$iEw>r6CL(cKgG5br~cDOsTNb?kgLX(Tca!| zqQ-_}19ncRqla-Q)lz=sQQ|67(O?fs#{9siqol#u#TEx38cLMZoMBa$ShNJ-YjS${*HU^JbVwwum(;G2CPZL{4^vrVoJ`QDf$TjtHK9=g#gm)%LZnI8WWcYwv2{KuNc(B`Tkr7f>Y0$Jz&kbv9(yb{|t*tV_dO{;tQQ83^*y|bY{#AlCf7uMrF})pjmPXN7mW4E@L1bCPRH?d+}PbhM)Q7K z_fPQfs9Jyk)ek_f{lei06-Z>57W7ZByE6?u3K{sF!H9EC zSTEk|8l<_+xW;OIwtx{9$z&Fk;l(b}m`Ik7`eBppM863w8u&YMIxxHJgpNiilCUp~ z(un%YGs&bSkQU*S#Cb7gtXy!=%h8Hnl;jNO7s&n30=t z9^u_&R+KX#tR5i#VS_yY&>Q0vaMvc1#&JMa$h+)tR~?iUCdEhaohBte;3JL%ryH)a zmN0!Pq6!#NxRG{ixQBEj?OG)|xXNa-lO0j3+^n$m%ox`QZu@C(-+)_)uBUWQTM^r8 z3D;6-7jH#d=akcZ+}WKX?FibUp#R{@a;!pq@9&ozwrfbD_PXE1$&Ez?PeFtC9pMgy zg{|i@>qg@5g=6N2;_ns5*Bvsq^yfPZSdT+(4_dxl zrrIu*z9q`amii~VbF<_seF|%=tS%~rJ!P3fSeldq2wgE-5|dC>PAsZ2Ife1EB_VB! zoLaF2F;shuGG{DL57%UfGLJoq`qQ8ruFeDmdy|Q3Vi&qD2%nhvY0AY^$Wk7Yb_}>gEJF0!xfK{PKFDXF9w{6P522Lvy_(B^_z6< zd~`BmAJgjJ0S{h1k^91n!q>{a(ZKu9?_c^JkVQtO0r7@gPHU^26cvRugQa4NdER%> z;9t|USjI=YnC~EJTUz>EY0&(-S6=l@qQWAqh z2&PQkQ=*?JVxT42f|$ai5yedZbSCN`U|_%?G@`3gM4=;NAUy*J+c0tHKU?Hm#!=cD zUKNgdQIg4~lxhl+afpVs%a5uTXa`sM)3`4t@E6^r7cUFUi>|?|kKH2o8!8JYMbAE- zpH7aodMvYDf0i%}bz?Lm!v_8v=_kwlS~>gf(5g$9J6T%IUqX+SfDomY=cX$)`^k|w zZyaaT@)~IQbmj}Ueh<}c73W+)k-yOjaLlpx*$QL zx@NU#Cx3so0gy$2sstozso=0Z(^Metm~vbBwgSN8(v4H^99PeOkdRIw&GPM9S-GClXpzOk!$ug8*`#McBI>uwiU`b@-1irUk7ZO(ZYN6L)Mn;XAS8OMl-J^!s7q>&6Qh2xeq&mxY(ZsVq*f#+j2+g_rH) zEeob9EHgh3cvp>FPLDCr&enF;^Sg-8&b&8)?xFYZsX3_52(-59FUhiAbM|MW3-LuR z_30YR<8T^kHVTvERu(;*)&_I3qt0n=Iex;*wVI_Gj1&kkk9G;b0zQEE%3?`k`|{F@ z;;6R&efQgt9CN$h5hf_?MCxPuS2*R&6D4jIqwc}s^6|kE6F?u~%okBnfo`T6`FQ>D z;+f~-ktH?hh5kzF-=LJ*jMR-rkQ2EqEB;m9?=6)u(M4r?;A9*4cjc_XC%PCItX6eH z024IF9HAo({)*oLuh|=(VQ-APY~4X?Srz}yA+^el{-4jk6U5u8v>c)0)$Al&lpk)D z8a^CIrx@XPNou~5wLGPKOXYkkRt>J{OX({U%4e(s9Rn}B+~cz!PYQZ|pVc1lb>3q> z^B5T)92U&2Y4u$XT zzKmVl?piH?6zWqpy5$0{<4#_1J08E>fVuwlBOa~e?9P*dmt&mFu!>v7k55t#Ns|oL zN`0=v_G@_>&jD{)h<#3_^YBU-DqG>;cnMY{z z%W&q?5{pu+Uszn#XC;i+X2K;tIcsif z9tU{yf!Fo#D81LGeSh9x?%(MGb_!qA15U|aSp1&#Hp&+4Rhjqxwx;0?e;NK01uk0P zIdxNtOrqR!muU^EE2qb0Z_$Iq42mTN^zAgjm13m3B%9Azj8T^)L$OipLJ6_Sa&`t& z!$l9hgbidSl|eNw!h_85DURtd@X*aD)EI)D9@vlE;;jG4@Y7&oQHF^tjVthClVc2g155U8Tpi?qNK^oSnfxbz~Hh>Y6>8?Kn z4%;p+wL9`9^Z<_2+ZfEr0W8dxSOX6h77Xc(Y2)8qI$$0Z3gV91*<7;)!}XJa4)?-Y zW6!dwZHFm9idojLbG5FVsKA=`0&q2ey}cc?B`Lz{+R_!&=K2{o(1UU$J{j(9H`@Y= z%*mk%j#!|VjrK`tB;n49I~%Ai@$Wu<@t{oV3$V8R{hHiTqbIAOPL^@YXFa#X2ReI*N#OW^SJ*g57 z1^Jg}0%R9`ucd)w_kHgl-X0xag*TpW)Zg~V{1QKU8f}|_Y&2Nnzc16et22@eN1S~EVg5XhVpdY{CO;WnT zTUIthI&h>pqEjKooLM^e9c<0n?sZ8ycdUM)uhSLsN+cW;o|h?`G_H%E6GK0U@bCf% z!MTBA%Ie1g<2wDKJ!+TN7NuBVkhVsV20i~q;QfD`dDn^zZc$-FrTJ3sex2o@+K3x#r ze)@Xudflq*buqQzeYNN4dVgB)dcRhmld}M31f78n1`f@0t*|u)%wC8>D z%5l81P&JhZy7O%4)WbievGk3$bS%F2pr1&nVyZV&OcrE-w-J62uvJ4Bhdw# z`otopE~ggzJb--sZN+ZGH+HgFD_cJ>8VoY)lwtYXb49rWsb>}PM|s}GI8Dv8F6@?s z9Ahmn7?%1!c`x&W{RywNoJ<+zN^86s}Q@Y$l41XQLMl&jDcn;d$ zj+>u1u%u&YYJW=_n#9Xq^_zIO!^2+Pj6QKQRuI5dn0trvtI0fEyUj@ zQs#S4<>M(*;(I`~+_qln{e*f~dw*B}IKSU~sc73Ub3P#1=P@*Mhgdv)^t5JHszSXR z)qE~%5tJMHGd3rSFE#TB?@|$C{%zjQIJ{j)np-|fH@IDux^6EyjmeZ>g3|;&8X}oW zE3QvRUx6@gBd(Ss$|NVMhB$@7S}tGF~x0CUAzan$f}s{hN^`B9b8z0rdS z_rMl$VO#I5%{kL(pK|G1wIOze^U%WSeE>yj+vnuwf>}bJBu_)1`PGe|yJjvWzt%n> zvCirCA#9~>>LI)E$tK|K;0?F$#pn$)^7-S*=}8lxk=Mt^OQ+o`gLXz2c}G>b)rQLAc>5U_Hj#-zr)!-|EU@0k$;;+;6Br~(3J zv_38FHI1baz{kUQIA;D_p3ecO!L${zX09eed!aZEa*KF~gwp(i`_e(D!ityf<=O zuplwQnPg}xOXuxB@z7U1DR5t|d`0vS^&g0+mFJM@wr(X2IRa(K#Z99V@7UhB@SiO} zC4a98G=Q*U&{1VDU@=tF3T*;qN9AUsIjbad!t$t@X;fwjfhAgy^`Ci{p?Q}*=)NJl zseQkxJD))aypZy+#Bgaa-gb9StGTc3UVOm4N86IFeVwBKQ;`6rM{r>-)?q@xK{I0W z5diKRwqpli4`TJxUcCRsNZ?<*kP7}g`{$i?5z=yMB|T!W;>_H&Ic@O)V6mmEEt$cs z<+PI3CCp;a5#b5schexPyD=#XYndN7CFWYSdB680K1TMv5xrcJz4N_~IKGhvUL95X zoj;3gUf1`Izd|ZM*(&CctS?&-tp9Sp^${O`~{Fx-;SzH1-#Sm{W3jk9Fg4xmY zl+~MD%5HqvG)FMAtU~3ibq*HTCE(|2LYF}Uq$#LFAp>A819_T0GZs>~b!#4zG>-r~ zHUefW(!XkpX(-cd{*IqR<*|5(a3N_(-s~BTQ!|rh*_~RylcK)r10|?fAe2s8w}Xk+ z4lwOoT3q~ne!p{VBpn5`UHhUi1E<(RshKHYUr9gUBZWtWmB30s!}KGF^%bVzlzx{2 zl}QXz^-e2cPh7@2x}NSOwqFis^7-%7(7t_GY}cHD0nZBIRm44mHgf|h(Y%~fmw1E^77~;_AQ9Y{^&_MV1^eCQHXl+#qXg?;D=vf?9)_W!V z-@PMv3{3)_x%S(D^6&oIZapv-Jh_m){swa`aNf}VjH)*sICwUoya+G~hI!V_yHSOCD06E%RtD>Zx8D+p>NS2nbNKUme zb;&EMPM$}>vrJN+{A;hL@fWV`@s3@S>I+Xng2xpy72g|oF#t& zD`|ZGeC}S%+y0JO7O`?_2>eCX+?9^KhZXE2q6Z3<=Q1{)-&gBRp0WsKd7c5 zz)MI{Vocj%@sG?Sg2~w^!qDA=jHz41I9tTjP^sjgB|*xRIJCsQn?a(^p(+nBIkXr^ z4(QPVsNawUO7~==%vWWEsZ_^o>5q6ba4U5cX6z5mZxNcDva`@#IKvwe8m*z&2qh5! zG8vqBKYH+{g{f(lET9Xn*nTMYFQR#c8vt|nwJ0M+09;;Trv8Q}8Ff-4AZR$wMklz@f z7YOdlKTWSZ&sCCMw_U3rDGmNeov)x}_3s3xuWqdv5GfJF1HHL|4~tyByp60>^-)C| zr@jQiXD&Jtc*LDLA+?sVGo9)SYm1#w4Qh zWnhPJQm^~&Snnm&=y~H2_#A@*Ux?o60)jeAvVcDq^9M%;zT)2Au`|}0rmmtLx|J&) zFl@d(6sh2-J+DD0!Ag;piZ0%wR&NFW=d|H;=j7yC!LbK) zGHlBTgB;-O5|*m;Tc+H+uIw_ezOsKVzW>M31D1J$so^I5R<70>!y$kOW~YN_Afvc`5IL+b|@ z-M{< z#X(ntD**|D&2cHxsWPUpzV4x`!(X<@i8m$z$22)XdrYl7h_<+t5=63`+Gb8%HJ>fM zj_5EZqRvLPDXth|T`jMlP-;VX)RH>68{==GBR$(cTONwaY9fmQyErjzM$Tt&420-nS2cKXqH+y z``JA31dQ(ej$#WhWZuuoE{}lTN~OqyYruAm(X~f%yzXmuS|CrM9Xp|~Giu%SPav_X zp9dU)0F97c{jbH1wQD7KhX#AbWNOR=@T!7<`mg5^ssTs(#*e{AOgL?0tp_R4>M-*vgqOADTnB7s7 zMis^pHd?b~yX1g+Ohc_-V-BF7@3;MDJiopdB5WecP`ew_m zJn8q4l`OJtggD^qzE!VBEcj25z;&Gz4xsLXEUo~?BXeq{W>s@*&p`YvhhgBULBN~i zJ7(b1QRPcw-&5k_dLa<8?xx>a4833A7d+4oHL961KmWR~Z^-(2$SFX4LNe2wZ{7O( zYB1J{6jNb}A2G0ATOT_FSaws!Y;z>D)RD4gEBH8=+&|#O4&_~s>TYOH>@n;i{gbyi zPCw?TQLP34oU>_L0Vb3)N1W;M;c6hhyRK!>I35dMkbORHQsXC<_|2K{SXnlpA{Xa2 z<8KYNrTshiZm-`v3be~$U!m#Lq|w>ju@v3&#}NN)u>xk9g@K`>n=nU%@C-+;^v)ll zXa~uYRl6DkkqYM(2AXhP#D{7mt(Q=fJjge~)Lm-tH0^DouQ2M-zS- zUwz)xTYbG)5qx}_zS`D$``{3GDUjEF%V8(-NEnMJY~peLf!4|q%;yvRHpTF|m8K?L zX~}Q{f%BPU?2%3%Dw_PcVm@Qj(3;hx@4#V5GGl01+UuHmHRaz)r;M-fo4$3cMPT3` z4rjGQBx=eRDV6&{p@i;FNVq$mEynpO-NqpO5#}4*B54UPZG5 z=J=lHf1YG2Yn?Iy*Q85B22HVDySSdC6H^VeJfjK@N!jb-WQC>)b*Tiz>cnK~#Am7} z=W2(iDK?X%TKxYA)pOPis#CF=QX%-wdgc|Lqf=)oxf@h%?aB_fl#iz}=51uDOFnTO zeo>8nLBHA~0R$<(Fx6U@^q8<@og+p)i>!w9=n!*sNPJ!`*0e_Q4P}!dIl%GL_#g(3 zE_YAyiO?3OC@1(45ngeWRUt*0tbfl^eHbCfODs0$CaEgU^C>JUhzV4dBBus|1$;T! z+*~T8_zQlkXt3ublpl?Xf8xq^xgo5=&am(%b5oq{M(ZP5J>nl&6;xrb6DLS zzEyWL5E9;cI7E8x@;$M$Z|+&XQi6?LT6Ly&a9}4*JaXd)9D}bq1UoB$N+L?Sl=LE% z8c__ryY6cxCZoKUkVCvQOjrmJf{92Ix;VmP(jYnb(1J4gD{LrU)W`tv7(L`iZxbCf zok(r;rv-Mlz)rLRx&D<;txfzll2EK0%}LehBQ`_cQ`+y0P!~ja8RNew=@7v zUXV`#o0aYI%8$7{NzK~)3zJnt#f&wi#at&RzQoe`z>W78q!y?0_dK}I`1kz;65MN8 zNP;G~2Nm9LT5tm{_RMt^Cq7JA;N!&fVY#7WK$~vutaZzeIl}d7jqgBPZ2I?>W>?2_ zjV1(WKi0ERr-A^_6Cm8-10ODdVZ45ac5xPqYCShF4*=+~%ZjDM|Qxg4vCz_PG8 zC$U$jAYOaNZ6Qh59`v7U8dzZJa`{8KZMMR!t$+ZhYsa9CWDqU@5DR_CW47fvL3`sG zcI3qO$yNPW<{`9skdV}spYV}%Z7)lVRw2U7vXt%mGHl6u;>W^>182VKLC$NnmMtKC zLWANrTMs!v_ee|(*AGBJZMNN?Ciu8gi<%otvrxab4N7IXD6fCve81gzetyaCd;a_a zy6>B2dA(w}zIe=R@AMU|(YN$`5323)mmVM>=^A(OjkGKu^I|n_T`p6rA*aKlua2p% zGJKA#um$+Pp9VzHVGjhIrqH+NJ1y7=&IKuAwtbK=X-Kia3rCc#YT44|^3A%XI<;W? zR+|MPH$8j6JT6};QkGi0dFckqxJP&3uNyG71fZ5S8`@UMoyqENC}fCyXRI|4g*EZ1 zDpPm8PGDdF+)P!2^=ZHA$Cw=xuxp}9%|(x30gG}6*R{|^i9lxdZ_pK(45+0Ps*p>P zUtmMQhf?@ahy;tGv-u$kz447{MwKwQwEMO{sRr)9$20R31cvG*u3Mhp+2-|L(I{;^ z5Na7dve!JHH+DaBU+WcGor6dI3x4|EuS6$;Z{#e+6AgcYZa_L z(#}5dC%b7gSI~QN{_L~rSIz23v$ng^TA&+c`e{d%m0k%OcVt(;5aIR^HvWEmgCYC^ z<4<+PxAmoHbtb6FY)@KXeyzX!GW2&8h`xp92T)Bk7BnBnabbwsTM&-vm2wT3ai7(~oQ_enh zz7nwTEnBG$O!M=Y((g{TsuAq*XNp2MD~Itk-}jBk6eaMl#dd*dF|-J^_foe zrbm}*Hb_gvCV@ecOiKL8Ey88lOpQP04(P9HOdGR4!QDQ;vb*u4Bgm>Y&|fA%IIec&qT8<<2j}y8*ssv#D8HL+u6i_4V zs8g8*b7IDe(NP3OX$>BPkaA|@D^81LzBM7no9j!cdNc@NpZKD3?y)bmq-vOEx{3Ff z8w{H?m-6cKadOR3o)?sxbMGG?>I#0GKh0xCVeVUSEn90ShGfG(-DQf!j424 zGD+Q3vPNm0l-2QLfhr!iIl}K-hHM(`eJwTlSv}V|cbofJ_Q0WbKFL^l_tl+Wh%i0_ zHX=QKwoR=HG-B24J-(XE0+^!LDs8&N0|s}MYXCzX2&=4J{+6kHuLT`dj<#~c_JV|L z`GQC$q$tlRw>6sbZgCm^_Lbel3EKxELs@FSF(VWu;8Ijx^1_-{Q4aEaXMd^CO7TaEsgIE z9gZP`51vFX(GpOi{VxWb;nchT%91|MK(Zz(kR1&B24Y#d0jlPyJ;1SfCntM#MQ{>C3d2f8XA67|W49Oau z!t5CB*$Ve!hDtm-@h5TjOc6`h05TC_YiD|;cC9LN#)WrxE{0?LO+~JLqKsT6CNCGx zkjZ~ak8#T%X|bB?4(mQBwdhBme7m|9?YUuu-=)Q|X)%FfD)~q;C0m;IgQ1ynu$~|YDZIfBWB|cs?+$s@ z|IU6j;O_M2d3W$_PbQ!D(Mxa!g+7_aKHM$ zeIAZNwzupP|H%eT7C1yb8wy3k3IFQTg+FF)b9gDiv_ADB*~}5siy@= zc4R4M1xd&GnD!(X90}2$N`Lj}sN=BM_qkGfY7W=bZ`KJe&j_NY7%uOi5qF~EyyM-@ z8IRV#vA^1yPe95dE2%$f$=)P_yKGH|g~4}7Ym0Qt`snsdQS*3V5MWIn)_JuRIf+ARkv8PMvZBo9?xZW2JtGJS}9VT?HhIGM9TauHoFvM zKmC@m`A&QD4US=bram*Br}dE=Vd1n4ZT|52eX0WOrH_Bu00s>7*NvU)XSqr>a}I)# zV5mmxxLwOIBBb!YJDNvr8wYf`pd@+PXel$Iic8g{`(Ljjn9)TL{%p4#ZE8TFS(3#v z>g>dwN|D*viGSTee5#pi*cQ740dJVw-*yVs7*>fGw`w=_={M%F@Cx*d?c9@HoXk#N z{BfPW{&UT8vD!TCa(_o+=(CgiP#Ey+`P2D)!1e7$`7P|e`&nqU&o_~-&?^PFhx~UR zITzWiqAS?#U-MmEff|KaE%5RQZaWP;)Z%`{&0S?{wo+qG2k-D3CXU4DE+MVqQmu=U zUmU=+OVPJM1#dfFYR5Uz%l>uj_9%s%Mt6{(@!}jao@v4e@n0$&;61T(Yok~$E zL-;8EkgwET9V0V)(Vo|Cpro(#S$p-=V;fi08JVe*6DPBxgx3xeHoy$_rSKjQ!HF!K z=D2my0y5vL;TG!Og(hwmi_N32E4@9swZNVt1MYZYi6Qq-lUm)(WafBX_4z+skS~10 zwmf>6FY%FyL4|)G5F_fksy4B=o@y-(U?iZgo-DP5EuXDSUj&G=t{_WpOk(TStgD24 zA}*&&(q>O<1vs2*=X$iPr8EO?L+7M+3Z?^Mi6Ad06KW>WpH7s>MT}Wrn->6=V?+Gc z7>R}um=`%uJ9a7lY)Z@~C{4!XvZP5>hHn7oK5j(4&Y*7+dAcWgW5zvSfmVX{S{4->HNw0#e*;2=u~4ODi(mW8 zO@4v#n|N^1Pjox39H0kd*X0`)N-;Ks*pOXk3_+-V4*l%) z6sg&&)pA#H`J}B-vBxv`_{*2@(JkqwSToE0nx|f|ZQ4gXI%7lJNwT}o8hhZ+UdI64 z#Yp-Z*Y|Ale*m~e85 zp<^mUyPrJA5o6+C)LzcuwW14Gs;;N}(BUjeTsHFpHY3+|)u#ba9@tH+UZezUJ!|(% zr*_`F*}G{;5ZI@6SO5qmDz)>#bGt5Z-cf`82FhbGMSuyRaA99jtU5^yaU#+$g~TCX zHdKZwx82AaEh+x}rh1OCN+U*}IdTC~uE7XO{^?}*=qF5>j1W*bZ3_Pi&0fU`Ou!{q zP0wBo3s=|5QyG^2q9+cM3Kc4jb=5&Mhg8|+I0@5tOjS3(xYP}rYEIz&R6TVYbLrT9 zc*r8+ad7hR7{0t@laZ0p@A3JT@cn$FWBfF??Y}ImAn=awzx(>bFwa#5Pfv8Fp-=RE z?|qNo+jZeVtkDZ)ea{_X-^+O4#C^c|{na02mWvZ0l)b#eidw#p+-gW7t5h8{c<3doVJY>=rwqid5aW`%giP-4+`nPh+wfaGbF(5JC z>z^Fu*-$yZ3bBL6fd!`A$Evjau(~Z3X0tZE1nxEndsUe@qX`v;7Wkim9XF9jB(TzL z+W^gh4%}rpNU@q)R9+|Gt1QPD2^kGL#|ou zW{eVOJh4Qq^I`iF_pS?XeJ}1#(ZrSLk*e1Y@P(Ey$xDro4JToZT9ql>(g6}S5)EL^ zFl6eDHK37dw&Bym;D|-F?N=vDVbr2Mpc^V*C10+eT2yanukvMq`p}jK<*BE4Zl|jp zOo9?IQ8BAXx^eMmRFl;QaLNO`TWWPPCUWt&0%!)>PFL|x@_3n~oynVD;4K4Zl}v2_ z?FaNgKUDKV`I_Af+cNvQ&EIn!%ZA!gvle`mXSGuLEKw6ior%h;JNwg;A1qwHB>blt z|DNrMC>YDH!q1WUAbv?pqZWfcOj-SE#S_-X-wq7;dd8ZkyGPento#<*dQ!Aa!cR{e?1)@~=yvYlbOh++2=!J0p)FfA?zd>yMaxz}AaDJxNh-DCAZk_ZGfd!o+hVCJ1E7 zK3K|@-I(uLi7RY#4sej#?vVdT6O>&}Rhvsusu>nU4@IT`dIWEXI{0%o%%Oq zDCrL#+W|yuh4H2{_qSWHhQu2d9$vYie#POBJVz{bW>fWGd=hn{d=*loa={L1fA`Fn z!#IuiuoiE5OD|~;x6suS=8h%*v1esfT_Gt4kIb&v(Oa)>8;6^!)kXs>UGazOyIOoV?I=me@IVYPvx&d}C z%TjfG)}Wg~d3)ylqr_~7*{j_F@t4M;g2csY^sHp@*(lOCy7v61sDLR5*hzt@LY?tj zmePR&EeB!l+O;`5Rr*-c|T2xEh52(W)OJ}EJpwHD4s@ug#q^ML*Ag0RkSrRqw{DRB^Y}bC-rvDP&b$(TKe%R+5q68z~N{jDkF=tr+J7(I?fSjD1#0hwwIUU^D*BNw8 ztqFK~JylhDon>2jy)7Mh4Is0O?UeKMM)UL?(HI6iS_oeRqg_NR`-N;g_iXIkE*Kpk z8$G~?+?k0CyG{#@{1=jXeDB-+pSi89tbS^K#*Kx04JZV*^!u#TzG!g|ZOd(AAm@ck zP>2(4(q#!iZ^9N~Eo|S}bE{}jg#$#RG^jO7Mv8oSEW~giPCp150!zOE^~w=Noq3GO z4TUOyLl;W78;phzT8Rfdp3PwWd|~~O9OkO)ksookF?a$JL%uq1YLIy4Wpa}%(~!EG zwVgK|H~|4@+xa|6fu8!-Af+>=;>@_s5voX{zxV_rn!XGR>8LE(5Ln4j1r5|^QaG;S8Q&v%^1P$&;ehA=` z_vqq8e8G-9B_jO&9+zp__`+AbghiwZeKojDJv?yamZ8tBT%}#1O`klz%dr2IJpvdW zgB=K4h~Vd3;*a4GJeCc--Qp8q4QDUIjuvBdb?P-S$?dfo5Q8-Sw=oQur0bmX9o{n^ zJ`GxX^0Jb(dfEleb5mJ)_$E#eRe-#B&G`u&x6Kt0kAWpRSZ^4?n8x~t$D)l?eo1Il znSr-(L9t>TY;yO%=YSS&*GpR?hOqWmUIKy&RSE{|!?-2sQCWC_Zd{}kwL%|{F?$Xm z*qKmQ78<{u<=VK(sC+oP?+HiiIsI19>yv)FI72@F-QsNB`}cS6C>vDZY?`Pr1AH-tlyjBw>9afX0`+bc5=e_l+~9h-SQYP z_pY_p&w*qW{I*%Czht878oDSo%1hR*Ku(42;*H$}I5EFPb*w=B*5-_}cf_l#81ge$;K&v=7KOCOwjZC(M=Q0dg@%=NU+HB20MS?89(x#ErC=ed!wkaQ_;dDe(WL6 z+Ewmn>mMW1Ql5K|8*0?Tfq9pVdFRK&HJpx1#Jxu@pAj_eHUAIsj|8`u42|-I#=X%( zc@#;t7%aa)-0)e~W5P!kX1D}JISW=~n-*K$W&hc#@B7_%C45*i%3=_^_N ztl&VMw~g6@G3<-{UOHwjY}TRc;^Okhn04?3t;5G7)o0*0S=3)he7pA!bIl&bM+nyN z0K;<)7qAJVP0buWRYKKl=xCY~in5Zq*6yS(Ny#?O&<04DcAUop`n)+TX9@gBS+VS_E30+Vo`$oD5=X$C@qkrRu?l&*ya81BpUKZ2T>ZvLPNPpfVu7OU!NQ4| zKzp1t)~Mka`GVl)Q)PuARvGdQ>r(}3tfPmAh4etL!cCux z%V6lUr?=BPbD~K52#2x=h{({dK+7;7x~=<(-O(3P)4g-*xHqS@KJmP9|K(*+`31J{ z^~CCNa^pquZ4>P+XxeX|qx<3yGBFvMtDoNl2!u#SM@LLT;_T)&7*E90?he5PqElW$ z0ej&zkV63bc=3=&)2he2%O8IQor-;Rg2c9BaCPyDBeCm_>`4@UlO>tqu#L$Lx_3Jy zu7=ZYI}1ACb=c*|@&;`jh^ybL5N9Gjo@(M2nU3tV=vbm;qErqf=&6FK9BzJybGA!R zR$yG%E}kZ!K&|#emYSiAO%o;crQG$G2T6DvKQp3QBx);AmaZ{rxuX*U^CXT`C z8n6f!RZQm7jxnX$^h}BO9Uas!D?wUn7w7&ZQ@T0$!;7H|hPng;6O7NGWw)jW_3c{^kQ9NQ(&cfG!ZADagH4O=*gW?b%f%n3Nm^ao#B12H-hTn|x>alL4xL_t!NP90qxoD0C;RG1ESBlYn<% z&pwE*aLbr$pQL_uuWS7slg#^|hM34cV~v@rS-Hn>@2uyeLgiO!v(F}5#yx-qBnLtK z9Q0OIz?6CB_H!Irxv62u@OYwu zc%uN2KmiEnKmAGnScgm5`1UYUTb+30R!%J)@7YQy;DlOaI9t97wtW3-1}z#nU=rMm z0`-p*=bP)c=SuXG2ly2!I_T-Pv4ZRA>+ybyyrY<_n}V%h`0-}g{%+jxL)!60keZ`d z1t0mh)0Ce%hpo{4YK2br(m(y9)`iIDL@0%L%No1;x96{kSG_-k4&=7rX&sWSRj>)r z=(1f_KzRSaQNo4F2g>&!sU}F-(P;`E@EGQHKRr;fcy2f6e?K z5hjY{ArUR)QJBhAvSz+Sn~4KI4k6O4OpO3IQ9&L~_ko|uyx!Zcz~}D>f#;b4$s3QS z8{25_7e<%QeecgNtJAN<=Yj9f-h1g|S<+>CF`>nf9 zh_j0%Q-TJ!0ps=@{mS4^sljj+uM@9^9cscJXSwo{VQlHA}o>=7Cbsea3a21oqg z))R94TjW*eDT+1Jri=lFA971fw3v#1STn}#i_Y26A2SCBg@!p$VYFeO8c||*OR8zf z(iu>16TSsSNVJw(BUM*yUbZ9HS5sg$X4#G2pdNjiY&knH zoCKWlPAkM}z!?(;rIxohcl@-{U1n_lilK%hWgEbnky2KImCMVbji(LQGX56`2Xo0c zNv>r#K@+yZab`n|2_~pn>qQ_gsg7D5xue)DqyL`hoHic7bdc`pA>En8_hid$%=&_l zHZs3Kf|@l=i%E~9Lf8E4LjpQO{H3(&aL12d8_{j=`|?@3rzAk>g$Qri2YhDtoaV_veKXeP)?P?Xv%Qy>s_JksO_^kxsV}Dq=e41L;-$?2vWq zQ4305wKO$$g<&nIDupyrjRB|O^whNNRE=>TsNi;+2mp1z1q{RPk8g~cimOx1)e;o> z3UUMqS$;#5s@^0hdR(5A*MCh`XihxQ(R86$ao1_K+gbuqBR?ntnN~c5-UEvI{b4@rZL%ak`FT{tXpE z0>xZ?;#GaLa|M_aZHNbYhd80ybCh|Y&cF`0_$XF!ksJ}P zh(JOzXKIvy_|uPG-GjF-V;;r@GLN!!>*dujJxR2{tNn#7o_hr1Uy+J&TTSzD9pfJOalZC=h z9HBvomSmz!pFWV7<@~eNFtLfnaFSy=J;58GA@H3O6|0B)%YeL&q@Vy^kn?$lPH6rr=Xu7JPxVmPGy9al7cPF@O zfDqi>-Q8V6aQEPD!993z2*F(k_qpf$t8Ue0F?g}3yk7?_PCI};BbBPiElRuN*1=1{ zMs9Ad^TBVNI>Vmd=}cd#srU&Kta)=Z8F2`{lAEHzWa1(R>tM8vLC-r&of1bN>+%t-s4L2T!&} z9d=0dJ5Uii?=0KX|0d0DlASstKX2c2z4!)YITBG`8UC&!5lFPtj~0_D!FxeLsMWZ^ zX5w{j;>F*%#zP#7YVepUuWPm&e@Tw{1;P8G()7GqkdMk3R=TyMvim8(Gt~v2VN;yb zkqY-8Mb4k`a&C>TFuC#06RtL-Egt0!;yPuxqO;J^oBt(4zrIf{&8AOk!656@E}pb> z-wDz}yU~Z}uN<3rzT(#=wgx&t4%N-4os~d@02}edd(_^vQ!Zk_RJetf^+&U(Yf+%G z^*f9;R*4~IJ*7^I_?9_8{v4n5s_WN77ZsUL1cWTEZ*b*46oTa&HcqPp^RN$fW-Zil zbPz>rXU2dFN%p<0@@Kt7Bgi+P@wfb{C=iI7wCRcH)E1GLuw4*MDsu+vLR zwlXQ;vu^&Y0|LVBTO91IUx2GJUU^b!ezJ!RX-1B{AQfaWM3h7Ze$praFPv>P$|nN; zEI`veQ!w&91gE19GO$PG>tWvv?H8m@VVP={s}0AthO0Gd0*cWc-@nOx2@5uOtL9B_|JB$`wJIsa8}~5EKdSQmhC%! z0xf4?zqJP-_WV5#XUef)=pGXO)$T=P;UzdJ>aHvD+^?mJWTgq(m7hH;F*5#@wn8?_ zUC5#71Vu%wM7`S0_u%_b*pPDl{`dET*udHS{o_oNpwGZ8%h|&?U(RY?^m)a|R4i+B zB$ehQP91T9^ZR*r%_pLVC}vAVg$T|a1FKgb7#WNQFUWgbeh0xC& zP>E8M{KRMzl!#{H^w^YHO1qxj>RLGM8_M+9sm$N&&Pr3063r=9m(h3A@#(nV_h7p^I54f^wPa$QTOtw_)MaLVf7zcYQwlat_fDb7f-ZJ95R z2rs$e(2klG@ZACE6-}~~l^AyyJMNdJ%^QsydHnW%Fv5Pr&}dkY358=S{nfj!46DSv zp69#|*zlesP;N2dIra)PRaYqrtMatD9h==bBhwK>CI(Egp+5zk>2aYmM(RKHV z1!~>}uKJaPF`L?=`E6DTFwHK7kfU<*4fx!z5^dU6OXJ)+8#!Z_{B(S4 z=oNz9s8WMon?n#(PMcjgaum=!0-FPrB+cK4mKRK&e4gU!xnks0EsewWk* z6q|M9+Du&i4+sy96*vw04{nl`$^f6RmJO259O6vL!-WW9X@rp8ans)x3qT~)o$gxH zBd#Iy5Cga!%hj;eYv02TLIL!A?uzaheU3+P>PU~G_ZBuz`Cx8|sUkj#s;ZIb0iO9t z5zsjcGc>x?Uak%xYz4R!8HN>1-|B|$2Q0_z8Y8nbf0X8%iW)TJ)*lm!Op>hFsx#xd z2<9Dku|h`Ar2`u|3zM#CziljWBmVCL!q*j#;uL^Pq!)Qhdxu|DszRGbo#$)rh9{)Z z7$T`=U*yUcum0DaWq!a50cjsN_`g>B`aKabDQUA| zeU=g}cg{5OXeN*W6HEbI0;frH&OZrxe>(=-S_Mow;$_Y7l*o;2FxD)cr0Hz|p-2n_ zoq7jO3cCf{B~AdLaAyqJI%?Fni+}<+$*!GBq6HcC0YKja;1bxXV2=P_jvmb;!2PZK ziP}9BS$=_WFCs&2Eve;|Uq{|v`QqE`uvcmd_VsS2){nL4%cBX(T^+AtJ0 z(SY=|V#S3@4ZG#46{5dgo_Qc|nRUuSH(ehwDSKM(-f%%Miy zuyZVS&>nni+;sVgX$xk*)UVhq5@l|ZHplR!fAW1Bu}@sPkZ&r}X9fly4iNZ{(F<2e z+}GjKHNIh?P5b5rZ%xh|C<0noHXnfd!1q`mK%wDTKT@|f9)OG6x}y}`H0qauYa9>4 zk+N>m#aZwazuBFJBEcGthGHF&0hOq*=%A#^ zEtz2}szW#b3!xA@qHT{3(H5O9+cabPNM#SK1R7q*40xqc01p?uU5j0FAMy22YF;na zuGC;#%0!`^s!%LnU|7?~%~+9S#vQUISgiISefY@^2E>WxTgS8-JtzzMX9T*=-q`N_-QRt~Y zh_w)#wb+L@;O`ukGZiFoz#4+C!BqsZmGK`4c8{E8TSOSBV{&v{0GfknpL36U;F_gT zB}IHZ>T|+r+|^9=lfHR zKYHV2u*w#I^^p&;<_A;O8%#|rXt{DepdjdVWK%xjUw9eT~;27T1EX4M+4}* zjYY`{-`*|wFLeK#@CrH(18Nx2->N_m*~SySm;ZP*`jGxOae5O3zlwpa-cIm7SdNbB zZ?E5Y;x2@uR%T~?-rsm;d=i4*gWj0}Psf77(SweKo({c!CGZJ9GCu;=OD`u{iOcZ0 zd4>nSK@7K52M@JNwtq0F`tu+aJ-?(8$ z0c7y~t6Se5tY0TxD)iPpE3py86H>$#Uy3wX0ka|oT-SZqZ-}EKZV56a-om8Z)AIB+ zd$)QZF421Af)ywe&ymQcche|M4RO_uIenp=#w%%vW9RdtNv=gbMML5d^69X-uxH26yR}IT8r-QcMHJmkL#k zfP3ux=y@j5ww1$7#DJM#K1YErj}0KK`D{Pn4~PV3|KWqbn-&c-Bx~L%**MWhFvP7T zf^JTlcl_<49q$I)Oh@~9q48k-%A-rWz_CQWd#$OLkD2@-{abKY;1wH;e`uE8R7EN* z_SyTx#jZa2=rR;Sb`KiB`{4{U-3RDCH9y=QzQ!RtQ0>is)?SKPP6e`+bB~(J9Mou> zz3rQFI-Qz@4P^x=27rfG9-3jsY~(^Kau%vT=j%$!b*^2D2jX*A1q8Ul28 z*P~J8(LIJdl?=<00eeB(9Qko&KV~c%;B}%FLgY(;>F$C7Mq*dm?ON`yg1LY*7bf2+ zU}xX^#*CPLkEL1r-lWS+!(pcU2QC#8yT)kc7*I3?0AlY=QlO!}$N+RafR;FGMeI*8UhR8WX`QzoH0Lzq&Q_!U9xby+ zA1lL|QoO{;OZEo)I>{4tMg^d(ORlKR8x@AFu0_n7e`D9|#e4oyp71jzBj4v~ zQGr5-{ReQbceLcdO+LrkcG5CAW#2DbwzD4?JB+~V3kd9v-gBwc6F2M52BvA7pY>(UG?L+Ixr~ zg-HT~VE71f#@L7vWx<{LEuL+Fe+xWdW7_uB@Gy+bn@sE`CJ9uf`avB8&iEh-JX;A$ z4|-M&%wc=m0Z-t8?~(+9E);Y7J_vJ%o&|nAte@c`yxnAM-?QEHy*F-iDFA zBW!^_9&eVv8t#l78Ev1?73_ju(L3CZ5~nc#Zf&(=T`*~N8YAH~TT8EbJ|p$B80tYD zw<*rRa%E3j9#B$@4x0|NjM6nKGxp%fCd<686rKSbSka?Den>i+FXiG%`W#e zrY^gUnJ{ZR&iGndplAOaa;GcUhk489i8|$^mAI`VYV1`S?1rMBe&?6#jTbibXz-AI zdC5U|1!Iv8SDb#l5tE(~n>`}>>uB@IVc|g;#h0b2_n3DEw8tA1xC?T_o7RbA&g&PI zo=i|OOMm$_mk7P+yQM-sn+VeFbqa%6$A zkqwS4l|xsQzh@5wNtVoqO!1yc;z8rUffdd*_9P4Gshb}FpvgxiyLh2IIb&WzVW`L? z+eKPH&DS@tPG7O_=FGB0X6sym59H37+Ui6}q?XA=yH^C`Ihe zZ&DMj2nXi{{OsOl1H%E--Td~Rh^!GMUl;e+9J(uG4a$*#`s;UDXjv62K$mm{Hisvh z-g6LCjpGp`(x_HPCUU26r@Q6k;t?Go8Wy@wG%PU@+%*^22Gs zYcCmy2AKTJmTmw~96(Y(({?-x8a!k$$%Ih=(DcR$WtxHlN8M^bOkT#?8GFG@DeB)c z0Rl9oM6?wk(wK_o$OVjj*orqM4;_J0Tt zDZz>0W+;8Lhh81NRLMkz!T(gKra#8l)uKjkp2yCo``JVoqs_x52-CJR&!GjCf8>3b z;%~1JBJS-Pai_gXqC9d06d)J@WGq#h#cB=uHl{^b-75-J@oN_@0Jw{n?-S`1Fzfep z{1}i~@B$(`$oSYW+HU_Cn*{~E)%T5&fxCl-&g$P~`GXQ}Z&&z_JZ5~x1+HHNa+5-b z^#7j=P*8At-O6^mUhoe80djgH6nktBj3s+nm3^9V@*~@NOKb<7P9{NYbE%53+cKK* zh8YS;cA_bf=rc4>=zd3Y9}Y8{lANA{zt#{tIL{){8-d1!8~5!HS(<_{VfXRX;>ePl zkQNge<64MCd#=v7oq>NzL?VPlqL<{&P{?xwjko)EqJhP%<52Ad7HA{-nHBTVNCsWt z+RwpT1c|ggaEzSi==#PEywf!^S>cxxE;OR0$^fyQrQz3ZBqGO~CKg0$Zs>JL9|{ z+8gt;S`C+Jz}7N2CV3x#XnZ~T&8<@v%j7FKv11wTN>yqN%hXtt*}l@Roazho01S%K zB~Esf$&OS7-EDd9Kw!d#by}XAIHmAQE*s1aMx2z(&urnb=vPE8Y1(u^6o0|CwNktK z2NOSOnz|XFB4^nHWLRk|%nKl?Qz4?(E@F5gd(YFQ>~l3-Sm-LL)J>9V$p6%7Cx9`E zTLAn$fnd!*;^&FjoD>4Ek5&b(!;{!wl9+=esIvQZ1@dJUH(@Jh6qre=(NFVXj4AzS z^V>9(fjG(@rtMC5(?k%JKecIcXAj6p*ViEWMNo!x0$NwX!21@Re=F4JcOK#Ax$yuV zlH-bbk7!G=<_|ldJ+ikGZU|JB_zSizfK}CXQ?W+@0LJL(0?A2 zKe`MXrCnl}K9B*jMgf>T%vkArP!w>N9;g7&M^a*uK(HS9_Ze`hs%CR8p{UgQ{l|g# z_;H^|C)!{HO%=hiorf4?9bYIGtmszEzzDFw%In8?cZQ)#qtzRuaSHQIejO2K~mv7m&H6@L3QxJSE$Ay046*zNWO)iB^0r}uW_->eaM z82$QI>~-O-B!U#IMHt-(ObHYlkmw;%MB8370>H-y#thkw6?jMWX*1|W z=sb-?Lp^U5E-zW0rjO%x0@D{{-MD(syr)b8l^3b5&b=E}|vMchcJ z$_9DP%=n5i5dyNOn;!}@rGb=l760&KP>P~XL&2^efgsJrISMZHmn`PKFrUbrW>uF(4wNpO3p7X8Ug4} zZyh}JzYW58PGu2{ufAnL2?_txcF3~XtlbWnkRnYY%b1M&SqbDD zp0A{6V`#BmQIcyk#4c$ng5#w%>dv%f_IE+R5RJ5c(z>W7d~9){4Pk6~u^`Ld7$1H= zU=}~mu6>~k*v|~D5_6oR0Xf1;q9g6dP^w%`~*Z6O+*I2<9OnZjr;45o#*-j{Gqz2k}%Fz2y*`GOfFFex0&ab8N zEh77=C^MuilxL+7Yi0?-0=lf<>MZGe7kUoMW3oV|;JDHfPcSW*)uJMiB)2Eus!xH9 zu=^($k5U6Bg`7Kd-WjHSfd;aGzkT9XR#dflt#swgB%9WuM7dTY#olo`w7=mr?OF#KHx72*FwLR7IwJLTM{RYSsMb#-Hn<``WL zz5&9wII%vnozuI0pnZH66$VQC$XQr|ahLXdi-xdEiMg_nAv->F9-HnbWjV3R-=8ER zEt1T}B(*YUb{hy9%s)WB@7CFI=A6^>^N6ytbh-J4W}-$4Loxug_}zZ@@7E$ZG(6mGp1-te&Ayx)Zn`{%KeiOel6c0gg3#U7Ee=dz!~>tJ z3LH%mxs6FeFfUq>pp%J)D`#ARU+IFT$lfM{2988uZA9 za0PxkIw%MO4Nm@;!*rg#sF190R+2S`mJl&z&J2K}h|!|nx(7c~eu%-IbvO(+q7bR9 zZBx3E!bW>^>g)IV6ZElt7R;l;Lj05@8#87K;|~c;5*0%d%?G0vY(xe)MTv9|CT_Yy z`sMmbLGc!UOiG3Fz8S*D+HwSTqn(MOO(zbS44rAmz-{hpPzayWaF3Z;pQ4?(2P^$H zeNXL5aQ`E&(LTY^Kzch)YPqBpge%16j=6O4jY10H95=To6nFy~}LGIh?32IKefqZ^=M5y!v z*u{=rW{pm zAw*dDfb^o^ok+=mD z`5XiN5(_mjK`3Ns0D&|EPvnO&hn}medqj8pm5T@0GEU4DUlsH$P3?a{#%SN-kM2;@8U+R`i8SN1kg|SpCjj14Y+q z#;auWSE$y@Ij-vX=(07Bk2Z^T0EgLh9;2;?GvtvIj0sY-FAaOI+O-k6_Nh?d8G~p%$_CTFc_e>ak((P$={ms9}4?O=_ zub^l$Fp=2s)_X+3QG3uC*{y5=m}~A%C`g21!3oSF3IZj8F36rBuDmxkd`=Rac4J=A{~K5Qa2@GCpBxXp$ZO^wK4WO{ z-B8+m(4oRykRN4PaaT}Hjy=Px9%NZSS%0DuB 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 av9D1sK7K}%>F_@I(9tx!T7LP~gZ~4mzqpP7 diff --git a/tests/s3tc_crunch.png b/tests/s3tc_crunch.png index 3510b83bb1f5c61208a2ca0801fa935ef09e307b..067be7aa4f8935a175b25a3c7c3b5798b65ab0a8 100644 GIT binary patch literal 271258 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 AtpET3 literal 353677 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 pW%r0ltbH#U; z>+IM0m$|Wo6EG|FirU@#E=lumVCY%Q zUiPSZ`j{#GGj8qOp@#b8b}!dF&qRFryXtv9vWAip^?7)Rbvew$@J<6&;#`PVTqlv= z?{?D_p--!^cHRr!4tL^eGJ~aDt=1T2JRM=*2&oggzf`ckWlj@9qdpE(^ zhpbm(>!{#!)H)Qq9tG85vv+eH->!PUWs+~P+i7ua*E>D3Xna=~_*`E0RWbWAoows1 z7aK*aWKVZ~RoQQ}`a~op4eq21UjxmIb9S>7REi%eKH4ATN3GE#8xT965?Dh^l(MrM zr0+(W93^y?J4ZCSj?kL4R8!tYgpb#hx?hDcy^)%7IqT+ld{%0Eqry?M3q#>y7hO&Z zHaZLf4FOM&2qpvYs}IN|34?P=YjrB8!-4D&)}Lici|oP#Wfna*!%NXwbDR!bLY`%E z1Zz)#X00AxXGx;4cjk)BdR#fOxOfcB?R=XrIjbXc(?i%1%z7eigD7EZF%S}%(k1@PH zGr!|Cgg(u?$~9wO2z791e1-YeUqkH{S}eSH4nH+nxF-bL)#yH+JT(z)UB;yY6qau~ z_QvOUm%CS8Zri$!tqHC^yt*vRtJl-NGE9Cqp|7UU}Oh`8vl`+xgV?eN%&+kQ*hk=7vM|DEN^Y z8Flz8pcN|o;PW@nIOEMRe~}3&v1}z1yIt6wiOuex+USoZXAl2Q{6U(Vf%eq{)oT{s z^*v|5!F11HjKKokOVfhn?n8O^A$jns0*uuK*=qjUJ-^xnDeF7;fL({nVFpO|y>fXh zI9xfA&L4{Vf~5)qK#H5t{AkGVc<>Q_A>dkLpaKC;g(wd4Qzh~j5)v4c`H_43OBoz2 zosZY62#pP$K$8(yG613}3_Y`Z4C@99oM9YwhZ#D4pP6u#*bc?-CnKtEA%bZ!xMcts zbm-3j;lMC`VanfxL>&4J6iBzLgssvyt5GEp>}<>!QUiH>kO4E+T;C(6^1UYWgvJYb zI}7>5SPay!H(13tXGJ%b#qzi6`a?~&D1MiLn#Qf@;?3f5y9vabM3xS_qBKH9nuFpE z;mBmc;!IFGbM`xn_4;b$JW5bpEYhUutzj!rMcjkYVPC{Q76>wVGZrdc=$44AiGDC^ z@0Gyy7$=yc6xq@e(9zC;)}#Q0z<SPYibjt&5?!2!=O|*EwoH^cg6DrDVXr%U_~4#|-7%FY+n}BHIYMa1{6X z&4mPD+;0rEMn9Sk(@&J*!n%V&9;}ZAj-^p_>TOO|w_~^5pnf-y6j3nPtHun?{l+K#XgWX=QhQ{e=C_y=xW)sSMMbGw~y_|Y=1MPZgMmJ zp54k;-Xy|0?YMq?j>I6xi%NBKa%Q=A7AwLL7-jy|ijGgLwT4>4} zGj{m=eDAR`l}Z17zrwSuBBcg#Jd>V#=VkMq1i9^VIqH}$^8x8v)s(D4ne7N$|Fmpp zKb6KJ;l96yS@KeGY%O(mwxLIdM?{0;8{$#(CFQN9*B41vw<}UH#`QIvdQ5y?5~U>4 zNTXD(B<1q(K2|$Z+H(3B;tJ@hNZ9T%Jwuka3O8R|l;_Q`;=V`zo-PnEOsL3x6WYcM zS-@GblfhveOU96H__e7}!{hqaxLL`XiD1ira*j1kib$7U-R*c3_qxwYZ9M?vs0^t_ zN2noY3R`ZAcbs#;Z(NPTwfJ%~P;3pok6h=iU-plSx^lVxDzhIH#NBYc17z5apELB~ zB)`k|l%>smjJjC?)dNeBUE8ed*^5E9=^^T%WdX3x_i=X2Rv)r1S_3F=UVq$W4&7p( z$>Nz-QA#U}*b2+wTYV1~l{{?e@VyGF>pxOb5qB;>rgpU1Vw7q-<7aK8>0$x|M>L3Pb^%o>gsTfoy_7{W$m&p0N5;>M}X2@=1f^-`LGgcaGPb6_KPWHud?d3 zd^~1e0M<66&!;Xcz48|(6JncxO?;aG=>N29%W7%1EONHDYi?F~xBDuL5np8!T&Z&< zyTIsfyvJW&H0z{1-XFEO)?`~r&QBzr>p?RdX-R5aKfXb>uoN1pw37g`ynw(G&$S=gQ6`!EFJ@?g=H*$K?kO9W9~oS2`TO#DP4?49J9q~`EEvMe1-kz zbI3ESg7e%f_*>*2uj8Ys7M~6uqevZ#N)2Y;Zd2`RgpBR!?6}t?zRyj9D^17;{5%al z$Bg~;89rtwbAaqvkA0lCfnUnyP%eB`S_X1`I^Tn4vS0;6*#b(KDkxyb{BBWF7 z23NbBg{g=PO7tJ^=k*%AQpAhfZVe4md_}a`FOPjxqtB1mFGr0}a}})^@_)^CaiYo~ z=W)89>z^Gp0AF|B3FBL*T8H}JSU*m(8!s|O6d4q^DML4jxx`k~L?qoiXugD4zwqe1 z@OxwKB^qmkdMM2tE^_ld-ox5tLThA_CE`CJw9Q>97O}iX%+ML$*WZx4fD2Y1$9wq` zGdZ5bQSzf0^37p6kx_NGu$7ll%dD><`GPLF$c;bnYi>!SPvh~YiG)+MqJu<21u>8< zf>*>N=p3e;O*Dt4)$GZwKC=a(+awu>HB~DO&H*t)A*doB zEEhf=5OhwWAR5aR74S((5NQYeMnkp(P%;G5FGkYf?pnCVhpN5UcG_z_Bv8nAcjEp{9Y z$>NpPj0Cw zZCI-Hgp(ZHj_uN3|1XhhvNv=tg{7^CZU}^jv4$aO(qQ}tdKn>=cu1W!jakmnKPGL7&;Ld8Mhsc}-uilqVI{2=Di7DIs(kj@V!KJtz?0js z5qxwk)E)|M>Z?)__C2N=o&@?_hGJoNiUz<=eRWst^y`?jMT(-Q)ALBK@AuI2I~_sC zMf$9x&{md#qr)#lu|xiX?;Ekgxxu|XLn{wLo!gNa-+yxWyy>lmrx82LkLQW9ms`7I zq)o=^)Fj(lZS&m!lmLtAGjeeC1qus~6S-2DQ#hq7-4b>6knyY# z0AGLNeK(ODi9UEES#lq172(6F(@~_Uq_?Z2OkIUzl}Fk$=&*ZZFqDJGon>0JN*WV! z$(yL-aHb}f{1{o%R&Xqrn4P$pVMLu8ANg)ZgL7Y?-ya0&Ea4i7bY6rRLuEBsbo1B8UkmKl~WsIdHn=aQ?-)p z^tn&Jw$b@_nCUs0i$LN`iK3+j_Xx1WDWY8dH9kkJdL~m|z>t>6RLxM3p`u!nrXWvL zs>}Z`c3JwEf5XL}to5VK$?==>2&QYCyYX3mf9je()Af2~7Z~rF@4Kd`t=X%+ZCDfw z->7rF4L>g$gab}okH<7V17N1<#hNnd|E#WmW1;#wo~sUJf6j?_)ALgfLYG~8yTrOU ztV>Ls29AvKR$yqVJS(>YOuLV8_&qwmLkn}&pDVYGFViyPnQV-c_XAyZ=PuUchR1vC z13&YQlY{78d@`7wM<=rPd}5{ka|WPX&6w=5KMj!>G(D#PbTiQAvQBV&-{?P%pEh*D z<`7_0Ifgl<7e(>3fBs{wgpCw+rhM{haZCGqZ`Gi5zqvI>(A{(2(ZRpzrZDj z)TEHxl$RT=m)jI5X@>hvX1X}B22|P#5OF5hofae+a2h$z;Hl2xR(N|FthGOci)qCe zOm|3(sNxO78|~i}KdkwXy+U5@fhV)dvS!``azDqgdq*H&bASI(s`N7EfIe{hGkO~q zXOK#`{#&eBD#odT<0!&*0~8?xI><(-$X$8#!6N<;K(t!zr`m73hTyYt(5p`1`yGa|xJYmY%cR+g!#LC|GLRRn#3V3auX?N?Xp1grsO;UJ zACh6BAfx^v`hq0-LbUoqLuNwc`+>^g`l^uzbK-ewH~A@!c`0>7$nr!-N`#n9L?mhQ z5i7Iet@07ANU$7)t&?Pd5z6CMYZzoN(oidlzEnRpMM0Fo@pv?;M_18;Dp3x8pCi>v z?kvC}F~GzbqxF^^4^-?ARQ=vrM)_-DNNO2;b8bk?pguu~OPUGAh6*XFV_h#vwaQSz z!I-pxvA0mUBS>8$Oj01&9~&CCfFtB$g#=wiq|XBg3dtjqpf@M_;d!_+`&%Y-+zG6F zje{{S8eT=i^kI~6jyds9tTalp28Po_bG~aeu1XvJ!O zTxj)N88P`!r<*)Ee=u*DU;pTw3heR=A(kLql$%-%1?q4Is6er_kA!oD zFx#73@|ge;SMCT8)2^)HJzwtOFIwMB(pPE`-wHvS-_kM=kb!lA&+(L^KA((@4d$7 zyHd!_A)kawX;_?n-)>7!i-#A1@A~?vic-0C^5~4BEOuu&B10u-qYy*~JKcuGV!7H@dsNrcb*L>ar^~r9>Z@)4#kTx%!Dv#A3B?+tI2aF5E81D~nt{?R2|N zt$@uUt5wu$m73`(S&Ny*R0r4W2aNblf3E{Zx(v`UEQGlmw7MH(cV~@o+SBI&h zlC-x9?-vnpV|RU~M`rY$gqMQlP3%3ql_!{lO^#;L2wJEGY@xE*X6$Q^3va5V_!}Jw zN#dl?*X$pozW~)bpyz`s!r{M>CLhQ{9hd_zB{KPjejk~e$z`4JcpelTK1?q>RmWGi z>t1$1ut%Mjjshf?qQG*)R-R){pJFp;WE7}QCzlppVz(+WecN86l`l!EPLkVCyT7_T zPTA?RuhHtR&jDR+y*}TOu`+yx;yqUPT(8*+kYiKK9%FX7ZerU=RQg)i&v}ckQ-nX) zAi12Mp$48_*T*nJ;S5A;M531tmvUg=o6{mmhWu?WJ6_KLOC4$KJtT$Cg>RiSc4xg2 z&EY?n_%E7t=p1mKWDFlQU+jf&-3@ysVT%ql8+ajBA~N7b zdW5&S9EP~8+U>8@W+kI@qp>-Vk>jNHcYTxzrEaX%uiq>1~$gQZXqPFqYPgD3_`W&A3EZ%p!JkfnW?u>eD zaJS(*HC0PubUTc>T>gS+^yp`MFO67(vS^8kq+KL5OmNQ2F;6185~y<1Qv!5 z6*#r(;$<1BfkH+c7p!au6d{NQ1H6(Pbhczyh{RApV%8weF)x{c$TsW8c$;z%k0KBb zcrOmtI?4Yt9|7fW`zSs{sS1?+2$3ujvgS4oFq{giLrwIL* zC`3lf1OafEA?RfJCB5NWZ3xQEbp@`TkU!BNaqzkr-+*obOe1rHe)UdpwD3mC?pQ`# zqBmZpEK%19{&PABjFm>j!_VV`E7izwG>Ca6G+}EoL~s;{1$q`JKb@tAN5`Q=*_MZ7 zPO^iKJ&TN_TcCzrZBiX~0}eX$@Wg39Ra3h8CSJ;dyy zE;0iL8K7|0qe8a55qTov(y_?8g%AHFwarC7kny_w=|1m=;bjqX{JV@Ux?YgKE^mdq zwDxM?y(L!O?yr?nqOvqOnmn8UO1N}~(Gq$`?}vBUEj}N6BhMzv8b=d_y3<;mHYTPr z5;EPQh4vGN4y6mnjgDp7#j@o}S6g-KJ>Kswxtr#VZpG3Q7x`Te233AM%{GZ0wmZGE zdu54W28B8VE^U9V0W}FzS!`2v##=mE?VE9PM8*?u?_+qfo*%RmtLTmo@8bnDH8Ys} zCC4}2#TLb2B~e-PzWO!(U)w%!W7yyKDw)Cpj1~I?>XwmAa4kNqhE?U2lAQ0m8cWZi z&1s=aXvK8ca}zGRa}_L0rPOYZI^{{c4xZ9)x0zzx*IwJT=1cV|r#+i5GAX-{I0@Pk zCD({PHD5lL7R!N=#}|pA@Gzr=&oV7f1aP<>mexNuwV^sS!~^)Io=5_+BgXN?b+WlcJLJy8#tBJPu)23vV(pU{(kmh&B8dVY(3+puftW zzS`uXM4+JuS5c`Sl*r(iIvX9xmD1kLgyxro18Ugm;q1~{1j+TGB4+TpE7n@BWI6&I zw&mIFTi@S>wI(abm#FCVIE=PfTkB`q)oPd`mY11i5mqP(uugY7 zpHFQT79(JMKBJb#Kg4}@z5uyc(Ly$B#haB zS+YB%N^_;pdd?jMwTMYOS6#Je@pHN6H4t_P6c?MzXbNeuG;Yg7?Dx?_T!On6S76eJ ze>kXh9gYLGWi!~Dds3e-4Ti=woVS#P%Wqm5#IhE;Og11`gQ;%0JE}%pue+VBzr|AD zQ(ezV!AYBOVdaO?LeBzk#eu$?vWIvkmwx|}o zy>t%Do?52Q(KwW^PbyOyk$Y^hTq<8u<5l{z-X8i#O;-B>gU=1=`MTToyBNJ$T#JKr zK+bML^94#{5GqaxT-?A&yzzjZlwbG<*_X%K*B4gmRdl;zcrS3F8 z2)+Y+G@(2)p?gX1ur&fwOzYTW(yc#A>k)E;4{~98!?Fc3l+X%qvor_S%n55F<7`oh ztWk)qiQ^0~i57kfrf`$}05hc&*N_4k)t~P*9<*G9!hj$~Ku5s`GvtFM#)oA>Ca_G0 zf7?zmOJIANfx3?6f8>_ zC`1($H}f-hz|U_aNO>|;NK%04w*VBdEKC#T4mbJ=_fN!HoI{xciYy6~EXj+E1ss=) z2=XT*t|FByuG7Yvp$O>qS^1Z=FBIQBv`!tufovA4foqLz_J2MN=vhz{lR z$x!l$(q^I3875x;S`FQp{{|vXW`sI)^df=nHFbkCcw-JOzQ||4V%FL;dUqCgxRlSa z8dd&_{Oy=~uCxmb3?}Q}v}1uMF7EgO9EHSOfl)h1@~W!x(TYO4jj($;0`SGdgrk9c zJYry^H(CZih-(b+Y^=*b3{tJ+(VLT9_D{7RU!|3ejVy0<+1zccB0Ax;S_Jb~&pbk}Rp(+! z8m7#Lm$EZfeA=ySj^7EiZKxg5=Z|yqGk5IL?ll9kx!&cS2BpQSR6!lkCRK- zkj(^8X3Z0g8Z;Q5+uhzW2!X-|%qx}WfJ!+<+@+M;rcHP;)yd`Vm5M*#JHRc_8-yc@ z*yBYKj_*0-x&Pa<2}wnHE6_iFnVWX{K#3riiIVc0B8R=xte*EPMa1Ep`uxbH%>H@)2En}8^@ z9G~-^^0*zlPhzsM$*Babgf5SZ!sB^rPXyhC_x9suIBJYB@A_Ypcl?TzC%JZ=d%ZfA z%By~j`C*!hmwN{C?B@)C<(c8|)0mR??vkW9Sib0L^~pu_`|Go-QB(8r~V_gECcY%>b`iN3jtmGu_~A(x|dq3zRy!EimcXDftN)MA;9b3r~|PWH2( znNhQ;>ciQFl&{OT&qP&&7!7-MHj@bOtI*^vk8}XMJ;u-ib4XlioEbGOH0(YfYsQC< zxT>nfhbl0y7{ayg)7+e3iXP_}2-nnnP0lq1?L}Ot|Aqg=siWF+$kdaK(qrrMRC-sW zIlbu6=ILfv%YDQac&UpyJu}$xabOi7+avc?Q8MT1rC>jX*YSBpoUv@o#Uyh>(-oId ztP(ioAhZA$*OW5k`84rk-Cw0X6X5IfHPv3%{S^*c#^y0lWOVX}-WYP|FvMZ*&L84# z<{hCWd-c1o4UF6M`(^wEv)vB2R>sL|0>^;(v-;ufaAN)=%4=-8iuWVOw>)`G40)tEbd`m+J)`r@A$n&>RRdZN!I#eNw^IL$ zt6sUaFi+07?`+lJ;m&v6aq$(yfm zSX^?L0p?JxI8sGjWEYt=GLa!N(GZQ$EY<`9oYrrs^(L=l^8>?C6Co%OZ6qPKAVd5j7-(Z+d?4VR;9<~g zL0RhTwVHz=K~jNfGX7Z$IF=yjlDa%eoo;D^(r&E8r0K>txF&xoq5pwLtrSIJzE6Tv zKiU2MMU^Ck@e+01Yd9Dk8W$J!_l05P%ci zu{5rFcTh0P?=SvMHyHd)M+}to{zrRL$Tbo2b-97H#EA+frKEsG9B-LOv|cFME`0l6 zlD&Qli!I9iV+gZtICN<7IC}pd^+-&y3$J@5drRf=^4mxD>~NV~a@5s}&4+YxP#TrnOBMuRgR~FeZTjDgz>tJpw})_teFkg8hx7H`?9%H`UiyqocCcDxT#Bi=WI4DDi(c( z0BSwC)ZT8n2jvK~X_Xr)8$24Z=R?s)U^*E-AncEyG~PP+x0|Zcdqf*7p2#lCQ%l|? z$P%M;xn%Ht9ka8eM4Q%+dJHWHct?9U$|_z$yGhS?c2EQbzR5du$|c`CW?+^o?KjaH zN*V~BFP+qQn z$K~dJaNM6;>EWKAon;wSaJeI1tQvh9&w!j`u6HxI1KhBA*ON)TKZdmz{$0dC+sV*5w&G%Q;y)~<#`64*4iiN~Zk>}N50oEj}` zIaBLo9!>p?rG6;0z1TMYwZ$8({q-i}(sy6_k9U|?T%E~9!WNmHw4?Q2MAB>!=oRmyG?A7+8A=LQ5HP3 zVy`M7>P~bD5C7WVimn0}^uKVN-1< ztstP4ZyUG4>#26h_U zjtW?qFZge`o8e#_vP6?glcdN)bH1JiyU6yqgV{r&djXp!Ep5*(kEgywxXHvG=h*{+@l0sW)Ir1@b zlNR<)dN-g_a?{tYOwb`lurixd>E*iH<-0if5NY3nDVGR_*_zmRWpK1MJRZ17H$*1{ zV!cZO1b8siFT64-7-mdjeMG#$aS6*V^A$GC?BnbFHjG5_()i+8^1}<~Hu0Sd6a>}( z2cTc!^gz{J zRBPfOYr~+*0#i`=jXzA3LiOQcn+bIuUB(Sqe1%x1!AP2n1Z3DCiBW#4lL4~*L4r6P zDkyN`Zj3~~4`zGK6p3t|b{*7}p<00sW3EDU;2Yo!*!DYhr%14zabqw45!SX-f2#j` zw(q!}2pu**NrDg=b?1I{=Pyd{u_Ix;guo3a5{%nUt%ZKWzn!{0qQkkoc!#`{+P=b; zfH-tSN?-{j7J)MtgfsLfWtTJa9^o-F;qDyafqb8tl3;C_jMkVYG$slHI*sVBw1*e< zL%eKIj6znoO4Yb<^Al|pq2mOgUXJ!cl*sxg(S<0ZHW_pR4HGGM^50XDTFRH&vDLq9 zvX2)q7{4UhHY^c%ENv4{`-{hh82c9_C^yt9%=pe>w zfK{kMb!9;phy82|gCQzKhjT!Xmc&=YvpgV=r;utYDDMqkVEbdSO-G$uJ63&XwYJILNCB;Cz=UPIe@c~7aQEo|`@R!^U*)UVrUF>oq;?%+ngO|z$Tcp|7P z`SegusBI{9Dx=8Tda}fs5^ooL%|FR*9B-~SY-cppkC)fW63jPn-R|>Vi!I(F(xf6> z{H1c|(P~a%z}xDX$WNSzwh6F_x_bvmyUyU%fB&uDns4Dz*zDoW^tJg?FUW1|T_;*J zxLEXYY>&d{T6;aN;&&%$cUkgobgi-a2)k{cj-M`(Yq4>-zuu_t4|YoarSnBC>0pnYg5;=Pvqk!RcEQr+?x{FNAoDo6VCK2?bNch zT&`CuA-_!HA851Q_%Ra^+@Q=$;3M7U;0#5QuU4kNc;fgVl25$4+_G)!ds-@$U^0=i zDrc)@w%TBk_&AyGePjh$ot}b8b6lLJNIcg7`MB+KlS3pmu5!KEE#9-OO!(^;g-PXk zGVOP(XIZ0N!U~)FbpY1zw@8fwq zi-B$2#!PnG=1-5y40~V;SAC=>``R$VKUt6B5~0VPt${x3(ilXqCbO=`{%^r(noOdZ(;Iv)nc4K9gDhKr`hNZ!-7T@G(~cY;&_>BJH@4%GQjm# zyOy`%gd{zsenNoxV&~!EkPt%R0wWQQU4zo9$I;ZnL5-drV>yoUyl1NKES!%C@BS0F z;{%D}yOf3RNB)PaUeEV@L^z*<6h1pHOOLa7Mg{^C9tu!SEk_pQg3N@MK*n@oSfm*o zmKL6(ZdjBCA$c#Cbf(7DO z32}IPA3GyB%oU{t)7z5;+Zcva+gv2^gY9-P#pS*sRfazh4nz^GLlIPwEJ%eYBugwX z3>{Li-*IP7%YVik9yt>RNPq|kJrO=QI|vT~o;3ypa777#h3NH#^D0_WIBf{gQf|RC0 zM3O&Z@tLc5*ea2<$rcR}q!od%(ZJ9-36ZfFB0$l>^RPhx0nY>_VnzUGu9o;w4}8+h zmhH@){s$BAT1^3A1hMi32#2qNq@K>=jTJkt|KiP+`i)ZhY>)=3F?!3;`%RDr3Q<|I zFYiwwpm0QPDj;sC-2bBjLVPiDmsK+J@A**O88he0AQp2 z`QR^gR+OM@GUHdg(L1d;)L9aKp#nlf(H0)WcFfWOu~0ZCN^ucjCf6)6F)HGM5Js_c z^oetpZRd|cdj-UyM)<$cC)PQ}_0aiAES)t7h4jp*m{p%7W6}ar66C{GKBp-e(Uzxt z4CO}Hyv8a5h;)2o@F{T#7GidN;gZZhA(?*$O$9PZsUw)XC?s9;y+;GG2ESGNKFKTj zr%=mKpS~mzqic%Pv^gf-1vM)_-j)hWwBCIuDDRwpDI#C!>YSacOMND{n;YlGZ|dqj zdAz%-^<)|(Yw%X6RxwR$vB{CEMqE1615WGf>kp_^E1|Ad8%C_8*-=OuqV7P(9NGfi zx4qoZoSaI@i|~-gdXS<+looxGm^FL*lKeM3+q9~ouK!! zH^4ldmsSOB1#z(HIC2@T=)XD^m7vOLz~lW9=e^zReN`SNjM;S;{#a3XUgbiv&~BuN za(u7R1#x`~IbjJ?4%x$_Z&3Q6-=1Gzn~=6xlk2kZ_IMQ|f(PG(X9bTyHuQ1YEMwav zm>{d&VZhb=Oz3X@cz#sw)O9OvhIedmlsoy>Edu;^aSc5`MV|hDFaGj>}z z>;nC>X)ijHeGSwy#^pW(y*csSRfBD2-Fltds>X0Cid9za0XVm-wtE_#m32PQ6Z4dR z>hiayb{DIEok52AUobs33dTO<`Jl-Tw(Ep@3$NAT;02!4?iCwDrJ8eBx=e%Z<~L{d z!hAt5+a=}n(=GJPGicVM-@dU91TLQ$TP7O6z0J-2bR2FX^xZV%G8IVY>2X@bksDtX zSNOB%Z1h?;H4}6aE*jn+AeU*JZME+rXjzM<*E;S*94-sSJZfAhpBofmtqg2!`|r93 zHnKUul7gFQ>;d!D5zpt_sXBa)!#qawaIX(UyopaWdWWr!uTihNpYKajDeni(8>CAJhbxX_=^Ji<;x~9@>aY1 z#Np<6dzo1e%Q`_Lu({VL`45FOmyK)>bP!jnph1|HEzWh&|oOGX5V8Jqn`;y$-YUW2O`Hh_j2%wyO?T zNA>j8$!2DKznFMO+z^vslHu3?hw?Y6>GW)YknC8R5hJ%zH&uL1X2q&OJ^YE<$S*1y z9Ta2EVi{wO-*pWR2*|{2pvbuXXh69AYai`}M^F_j{{Y2#AxIJpRm(>;-l|3L1Y@QK zs6+_@vwsN31_QTyL$*g_HrcrRy`$4Z1rq=l-ni>RUrfl>lPuOQd<>g|Vy4XV(gEtD ztg9yu&EiPJxQtRr#KllpgEyzaP??8N8OF7g>GHSx`U>{5bW;(XG?1giKP(VP5WuNj zsCO6yYAuj}`40!|IHV1AFvvvEpRCPI8 zxF#j4B_p0`)eqecoUw3I@GjB~)!#g1jGdxHC^E#P8l>XQ5=LaOGBklR)d&5g$9;sy zg7iT4g-8s9hf7D=6Etp->M4b{I9A{D!O{epdXREX|wKB8r)Zp+UgI z$ixAX&q4wt6-aUZOVB+Pic6)WKnuX)be$4|zsVd2*z&({qMq+3jkx=uu)Y@7oDK66 zUIon!{8KQn7BpfTJg}BfyB=U%f#H*g0z@|uRJE!R!ZsTzoT~sjRu(E#_9qa;vLHZZ zkPIz2Fyyxm2{m$Bk8 z+eaO>78;0!*Mka6Aj3(bk=7{x?vNYI%kd0OFLR--Hpf`Df5Tt>RmTGyR9yzNOh_k` zjeFT$C&-BL^7x~rp<#hWJ=7eDNnh^qd}XuI?cGsh^c)ic+@)!FY6Kd(e4~8+SLzDP zRPBiE=~#9I>J&N@2A8+Hyfof6U+)hFca1iZfB%;FU6#|B8++Y&Z|7}cu=O_I&+}e< zICvx5Z$mO4Yz65uXARthyBy7+oLvI0hvOZOiL}(*UrF9UE_vbDO7R`W?KDf$V_9^*Q{YDt31E?jK8kZiRc(z3vGBfmL+IO)J)j;T62kJ!D;Gbu~z@# zYKPvXxh&IVw&ZbMytyuo=OsBJ{w3(5P?c8a@R$8jnL6?N=EGWcj9v|*=DAXyHiK2U z&-yd=j$N(0?)a%Gvdc7@0QKwZ?)m5~eP5g3*HtwA_?EQt@`k+WXx|m;t)G3Uk2>}M zbwv8YluZx4v+e=@xTu_N+!@w%UG8ezM1#w|?7ky#JO1lu&%u8++6F66E_xabY99N) z@jg6Y0Z%fHl|@|Tn{C!1UACis zMg8J2RK0Db@PDr?)MT*qAAQ^v)9QJIzV~yY3wT9UF7dfV>OJPq*#uc6>+KrgafA{T z4&x{xQ{bd&rfCq2gBu=3TB;kq|Jz&Nz0mnHQLFI+$3Y8Dr4M-Wclc|p-7velhvvN1 zY;~I;ZYSM;eZ0zjb(Y4!_ZE08dQn-plsc|IH(ipz z!NFPF#yp|;BuAaaR1sFGQG@E>2IZiZ03pV7< zoy=A49+X)ag;~>y8-X$`42q@11O8;he`5|vjov9kHH$>lYAl21YJg^^Ay8JRz`0n7 zw>lxwz^puQ)SlWCayW&#NkefuL9MccxlNX|qW@$)A~YqN?K^bH1jkFAfXJ4GOdPZJ z=zM*sX?yYH0WoIK44jAwO_K|i76?@p57ia`_8vXFsOl?f2@jeG$krN}ed6r0RMZ+V zQ|vHP#{IRBhtZHD^Mkh6XWHwP41>&+07;ebPZJK-9JLNmM*f?we52{~H$92LDrj~r zJ?>6ZaNG(aI}4&g^G8L9pNepAK5D;}CFkWmPBEbhc#{GB1EMJgYe{@*Y{iIYWY0n}-!3N$Exd2a$N5U7ER9q4#0P+W z8x&#kVs;|*+P;Dj_RsHz6SOcWK4lnAD11mbODiagsvYL>_`TTyJH=i(D&$(LxGUy7 z?+A2vWNI!`4TV)Q(Gh8sHV|4N1lCSd2p|cUR7IXLGLJSIKGgM}7zb}o6cTlLEQTT$ zgAobJ%v?nYa^ekn!n#nWMBK!J)IjFFe-?3yKxv#rGkj71_@1gb>Sxp3=6|lQHtzZD zmgXD(te6QvRZ_MYk^D;fu#paB*-_K@f6Yv7=AMcqt}{$s;U_Mz{;%fzj(U2Ubx<(gQg_pWkRv@@NK zQ7cd8gf^3(2QQU?wZSTF6#*HGo$^IQ2<*eFjm8;vuQO~d=H{bmc2_QzEW5wSxz~$a z2Mp=tk5qHH>aXSP(J?00g+|yFp3X42pEs3MSa9={+u39@c$#K4=L-5gTt)tUdfT~= z8nX0#YS&rgdRk4(OMhRwi>2%_u>}p%nL2d`Hgm7nrhVL0ALn1j{KvEUla>*ED7AIh zR2#jo3`ag^WN}nw@x^lpObinpzw*?ped+Kz?%m%`BuNyuY5ONI>ztKBQYe3siM)Tl zKX*S3-3A8o`M4I^jT}u)t96)^eYZXq8xH@&zPL!HXV&|6LcPA9D_qL-;Hg<_H8tYA zpE>MIE$zDCthG$G_SwWL4Z~To%jsFw0JKbFYoina9?vg*zL%hnWHXAs2ev###Z;bk z2I8c7&88o-=`4YFdDM^VQbRmjKx&onGDTqOmh`Yp*k>iO)G6(~l(Bw0eA&@Cy z`p!|5nchDcBnVF$wvIh|UbfD=zpXA=Nu^aof|wi3zI{CHF4aP}Te|u8@fHI0364Uw zt`jhirWnGWCLPdtX!Qq@4eVm8c@wUE+eUnkW<9Q>!mHr8F=XK3uI9N+W}11gU^7!a z@N?I%Gq_)hdrKs|Wiov^WIx(%I!0NnLoL;Hl}7ByeH^&PYF+Jz_R=ugXy;4VVwPO# zF0&T9G@b`NTdv$=y*tVNnr_S5>2|KvwR^JZ-D(=Ghg}ivABplKF)Kb=)2D~5H|y(3 zM80zm>Gn^2+-=fVo-|Wn`FyPK{qxrFco|0qNYQ2(>vA^oJDuF5PVB*zZ(x(W6&>O( zJz0yf^%U7-WTRrdJTraCgL6GAIixmdq3{m_WKy=d#uy9m;ekW2jcG&brvZq`=vOMsMZ>Y z-99^R4%gwXgERaUw$`?Pc-Ff5p8Jx9rhVUVzP_E9ysd3A1w&%Pv3Rmrn6%*>I=!5) z@Rin2;*W~sPfgjD( zRC$tx?~VN@rqRE=!X@1GnQ3SF@fQX0idB2X9!t(h3ZScJQQhLj>kYSmr)a+c%?Xw* z4w_9y97`3i=TI+gAN@|`(TzQ)XtMWAP2!KWOP;~bIwKZDs3@O5Tcgk(tkI$@v8_e% zF35Nva4`{mtqtsHt;HW~g3ahXKf4DGtk|5}% z0TD`qWf6^$6yluXZQw~lAeth9s&j-;piFIWFicD-he>m@j^K-pSmTz&RG0ur%5c!% zsDebOOVCXvCXe|FVfn?RvlRzONe&D_;BZ9#suBXF#DWt;gyq+Ak_ElvL$j2JwKtL+ zPQS7|@KwR!{ZsvwM1-fp3>K+&*esFGn+ca~{6{K-)n@uj3wIahZqBh@qTxE(e(F+# zH3;Zp*)b^SS)$q-X5$1EvZbiWx_BSNf2{IG-1Og_Tmz3 zB$RVOoxj*&?z={(TnO3M{Y8sGSg7C$nTLWVjZyc&aKN=`HdJv;vr$B8A!x+}CXn^R z{&5wWNNQfUS@uD>72q@RS~`tA=W7}KFp&^FfV4mhGH02X%{OTVxon_0iL(%{aKgoe?!QNin>Y6{`S9AN^+o#Xz*RvW<3-x(Ml25VU_<|-K%0EKE8-u@{uQrYA=;_(C z+wX~&mfFYN&87i=h9t|@J<^0b`qbGduFoJ<7=}r-cnx%FceSfCxrsYn{{DQt{ z%_bUE-@x|TVx5^h7M9gE?7FdIW!5no(_amyDmYg&E0GAZnQpLk+n947@L+w?Z$dGH zGlSxS8UG%vV2Ou2wLzX==bY2 zG$)FmMxB}jXJW&2{W^wVk=@VRSvfe5*_QTC!pEY zTPsTSfl}i2=8wiBe$Rv8nf1PC-;ql>o4m0xcPbvHusP5wUt`r^^4~c;9aUZKd+U`# zJsU5}n;W*4+3U!a>Aal3Cbyf5b+0BJ6n}-+Wpm|?5p5+B5yLK5JZ9QQ5_8d$a&8cr zFV*XotLhcKxXsM>Y&XmPd{etbB+_?Xcl^D|@_8`ZS4cKq(%KBvJLd8&vL5~-b*#&6>Rmo97xgM>hf^5YU3?RJD-v7d&$bU zuW@px$X2$iR*g`@4e91t$LX@4a<&+jNWYFbs!GzPyk<~V+P`lFmaVB*2SqdK{q$`# zw6~ki74{nZ3;#HJG2Y8);WAt>J{%~j=d*HK?q9eE0cN|FicvvI??Ru+Ouchc1QX4r zojG@V9H;Ks0b_45xh}+JlxO2SSN!#nZ-7Ucs(?}7mFOINUtf-AbRKOPk_%cahmGWp3 zzEXj(P=rnn-ijU(2x&}_0bkkwIiMOzPfleYrGaY{kQ9F)f&IL*{Mr?ld%SgqHAs&T zOHU{hE01`KNZ{_JAn7d=%dcqb?ZYfvkg>OjJ>EyP-HY9yBipPHRU+B-an8`Rqec7H z045iKYLkJBrw5np(+o2*3lH1zpFcLJO-qs_m8UY&TQ<^-BBUf7prn{<4xgx`nDSpd zq&X%MMNv>@tmyXyKl1z@g@-(~uuqZyXf&Og6u+Z=RvxGrBtcTQ;#mH{F-;CgQtlm4 zU}l9sRwY+i_@P)8>z@?SJ2tqzZ&(Tk2l)rlg90ot+%K(Q8(;_f7ZKK77WOaFH4h|L zBmp7-PM9iuZ^*3j0qd{&V_ra9PZ0dOl5z<-xv$KB zR+v4fAAH@~5zn!>qi`O^COEMm=`3G_>ehk5e3d*XUj!TeHj8@1^*ir)cq0b-tkO?O zIo6&Nl|CEwfTIH8xrgrxi*MuKNEm!=%wi)0v}mA9;urnpC<4W6^$D@)M(Z5r{PcP8`akje5 zfB4Vl`<^*@J;S-=;(^6*;OUemKp2KzJUgTpMqcS zj*I2&S4qW7)CQ|*!?|p+am_*2)-h02ksx^s+ zV(5wXH`{$|=~hHFE$)ksx96^|@R08>tN32e97e}liaqd(soaKKt$qP(>n}yuT87&P zlP+DcyW^J2E0e5egQTQdzFFUVdfDjPnGE{n2LCOrUS$_)Dp03F;y*37dGkXydWH5R zm!vCN1sVR{h7qt*Qy6qo?G78*iq%&;;^&Hm12e7O7CrmbquWxV>0%}u%o$>0uIi8( zq8cVX@0|zDy1S`}n~WMO^;>K_7Kqz1LrS7K)v{kD8$e;Kh(OvlqUDEC7;e+qx6c4> zskOtzkVUmfIHHvX3EriY0)^;M^(M54tXcUQSPI|rmpLkAQzo6i%mB|v^2@u0hL0-N z-AStE^E*9lUs+d=vzzTm(t|qv&X%5qZgx_vICT?gKI$6S*&K}NuPqVG~9oI78T&Bt!RlrY=yO{ebGk48|M9TEKkD=Ay z@EHxahnTK@@ylBo9F$YGiyY6T^K!cHk3$_*cg0lMYpony2Sve)BI?KdIdTcFwV16eGYvNT+A`ZEB70eUjwadx_@yaX-Uq6d z>W7uWUvou)ynr*xdw{yCHNU%uIF_e~7srUXIPd=)Q0Y^N$+GHsPdZms_dgg`jfo2c(!?y3iUKMoY1w_N zajDEaG>qF;RzoxBk=129*f!`vFA1eAf_U9@o@W`#Jar*2_FX=3a2KK*7a~%GK)RO@UUBPT!eeA)=HVC; zr>Fa9)a2h|cg;b+)Z{a{n1Xl_KE5DE=kn+Z9OsnIec?JXdkbKL}=_ll}ZDa?SRqsf!FoLvKo;fg*hc zJ>~n;cJQU4W`c8w-EdLL7v@PPLM1xbdZSOdo?Qr8pt=%oEF@fd7?p&F6u<{BVu>+S zs)!O^`urliQ?sP@kWmTk!!B*eP93dU0Fa9iw+F|gfL+jC2FDw+ibLO>ZipNn_0FM$mqheR)BXM| zbD72j-1mBZ45>aSNWpJ=y14v&PKZh9&$lywI9*8QjyTc~ks@_%+1xnq^lWK)q7Sui z3Y}?RoTQasf7;CdJ7h0l7D}=4#_=1LmPpVki~lcYt<6iHg1xEfV$T$VGN&A|ku+N< zVUpQ5cgF!kv(ur$`MG4(+iUDK`Wkfxl7CdMt5na|#(JZ!2$X%91&U8jXX(~);=C;% zD{m-4HP>uzdKfhLpA;o~ExE$D;(O42D)=n7lRZ7w{;Gzysd!r`c8|syWvQmx@;=#m z|9mBvd9FU%1XUs1?$6bwYSs2gfWSFytbE7WVI-pU>V0(C{4*h25726~{i>AQ>~n}DD>pUu`gMelVWjLYdG zly-0!qSq8bF60KIX2YBn27fx|(gtr`P%_9)sWH#+CyT?~ZQWI!32~#{d)$YP%&Nia zV7Bmc60h)F7r@T!J*zQ}%#VdqGqHr$)j*ZShGCsZc35WOtMZwdmXcz|{rn*Oc)B^6 zeJ#JmJKw$0tP5g$sxRGj9eauM^;Ww!&N&OI4G#DE*TbT@q0h+8;{ykb9cvkSLMA9c zk*aDiqq{CazdoT&hv!4Nna)=9C|gN1;s#&SaHm^e4-T&w_td%0mA98o_t{u>(`6XM zn9c=q<}VLl9cph4B{Y5t-`K3T)8rvW__rgu?9A)A7Qq#5OiYu?%2WbGE^v1XDT~%E zf)8;Gfcww&^j0#6k9O=r>r~!V@B2Mxj)q%?SMkbVu4b1KOSzOTf4vsjG2t4-T{zU8 ztC{kU*4tAk`87(}pAq9Bl+mX%?C!u0mS9@R;ZKi4h2!=>VwlYwZqk$U=m!5EtEQGk zW9k&Dx-)XpG6>;UTiU9ziLZxQXIs9TU8S;jstv_>R|H!%bi|yDfWJV4xl8MIQ3`j8 zIJg+M*whIq*VG2J zz?D6`u5Dnawq3u1b#3Trk;13WS@inOIpbZ-<4;3}e8@n}qnC++|9-zO5oV1=ytzlq zQ9Irme-bDSFZpXvnP9j;HW`law(>aEOe}()4zFlMA>C3;IDn{?RMxu8o8cUQmI>r> zAmjGZB5#KxZzszevhd~P_`nB$?vTa~OU#SgDT>o<2st*hRPDpt51Jo|n3>)hM83 zR3-B4l-wo=470#R#Rmk$s-g>x>WlZ#DuH*svaCYlnMTz|D?MU^m%h@0Ii0E6 zogH^m_%;576sH8I!xohv-(hEg)m*T{Hy_|`ltj{uMKcl}VdydWWx!c(fPsOkDvycO z8SE!4D`HSI&5CA@Beie#9DtA#FE)Zl6Xg?(4Vx>?_(zEri~@6s)K6MO<)S(|I6gG8 zU0(&+LP-e$lctQq2gK-w#F~)`Mc9Be!+?*Vo&HDX5 z;y2xc$r-LTLxg-D%w@t-5Kozdj`SNIt_{cx#FkcDRh|4BgC0Z8qmEu6kws^)HoMID zfd8t95MS2J#TJ3Vr~SLBIp`05oV}q$XRBxL7+=bIvq5*+EFkB3H9^YsbRB)R|9taW zqwRs2HJYI_RkH-SccxljSMxz5MQ~#~Gs+|((?$3gUf#~RkqMes3b*}%<*kuZf^c?w zb=67yesN3q)Jll|U~T)GVlNTRQA%lKgL>!`Z>#Fh#whcqgqh&eFz@6hf`mYfeHgK) zmq(}L;{ENwXXjgqN{5c&NvfseRpCnm$AF zfKltdrcoKk^>*iRPM>|rv(L%5J*LYIw2BlNyeqvwulvcAIyUi# z7~~wm?J4P-x3_04n#_`o_>gh4R$4@p`w)|w851OYa`jOni}uG8OAoJ?%DeY$>q`xj z<=g9h(W9xTHSs8F{9i=Vm74jwq~n=OWhsZBlXFA3vJJ8|a$NcJJT0P6Hs<+xSIF24 zIg=j~jXnn+8~;=n^$r%sF2mbYoD`nlYjx(91`Fr7b*4qLZ5EG^zR$DR(P7>hZGanfu3qV?PadASSvNxf3!dm`PqCfIiMy4@180l=ja(Z*S#nIOIErY6AE5Ecj z>QffR?5huKJ298O(~UR%Itf??E?M6m9b-=ILaHw|Ud}x)LP6yPlY4r`4Q5el@yjg1HINyF!E*eAfkOROxxeP9dt!kg zZq`EP!-b0ajt8xUm?G3?ly9&r2CHEKSqZ500Cf$({Zo2Pjkg=GYcp`%2({eK@idTV z?d}^;X(|$hM8_>LRrN>%+E#b8Wfn15r{O_`rB>RVpPKwZC_Ja%F^EOvJwG>g0fNRm z7*83ICaPNW-4eDwJTV|yA`pbc9~dHfG{HUNxxdJB4<2%h2bn7lrW@iV)oW?-w0O|K zr|5F{ZNf1`8EcT^L!o6*ne70PnfZ@Vp<)F;^djM8m4BNjnToDC;jfx-O$*FLn2vH_ z44%fG7{%dl$6oBjT~=1pJKZhtwgY2N4#?=xZLm%lq0@+(UC4C^lnMZ9+98No!xAMz&*fbfxcMtD=^|4$7IvtH^JMJ zxL}$a8n}~WCr9+^uwvC=wQLKv5|gjnGp4!<^_u3$G905cR@?B0KwaWgP2qEv;Hx(_ zCqvhNtbZlTB%jG$o8o-fqqj)Gwi&wB;w);nb}ME-zLk!()M*{jC}6E!7-gYvIO}xbZ#KGkLn@+eMSb>{0aEm^vrumJDN5RcyKvNT>y>b+iZ7@jRUGOA3QE4Wu=dYy%x&+hUz9@-W z2^2LGZ#eeonqp3j>z^H1;%!R!`b;x*%}mJ@J4>bzt_lEoTot;5i~`&5&JJbo&p(`w z5dXyEbQMdZlm|3vr3G2p1r^&G@o z@e2Ao%MNkX9#3*`FuPpy$BJRqfV%;g^DFQ$oYTN37KwCx5Spsw<9GMlOO-&2qtaRpvY zRy&!wYs;elJLdN{&nJ;#ra{&#}NDhXm*LQ1Nnk%BcLLM&3-&YY%C!mkg#M zGE$MMHo#0JPutb$#7Vgvc(~r?U^4xB5AzUvxiKeavvDD_=PnT(1ANTBkIw=*Pg9kb ze|!x`*$;$YLO2cnuDkw!?q^)suaSucwb3Tc(@aF~e$wGl;C~NYA{ERPPLGg?4;1al zia-&<55Wm(Oa8Ce?XTAN)LoxCrD{s8KUEhPpS>ClckP4_sdNcuA50&~$ zLJ7>%TX6jx(*id?q_8_H)j~60QZfhy z$;&QBQK129xKRGpFcA2EazWmtOq_w2NV_!v2q4ae?WlCAiBX#mOit*lEHY40R+wX* zPQ-~6QQX2xDiDdBV-3 zz@Oi*R29N{(NNJ!)ujw}$;!)ullI2xs5P$yh)ApBKO!W&iBnAcYc6gOB!Gj7_BQ zUk9|lqy#&AUnY8Qeq{b}9ZA>Okym~2=a{S${$f|2)?MR0KHJS$kPmIxxAjg&ee1sK zG@HQ_FWSc)VDTCMl6KO1k{!;CnG8it&-^8G%Oo0M!*CwcC5ZhKdmx(up@ib+=@vVK z*I8T5^vE%zZygg?t;Ev4$s8pWU`l!%Nw8xtyeU2WGK+iP+f&Hwu9GdKLzA-UVhIYt zDSSaWHFFHz>+ZVSDJuGjL}zj<#mR?Hd;OQ9#0s4}Q<-#*z`+Un(!<8eQ2NHzd9)O! z5?gc?7uI`?51B}g?|ql2PJNG_UZ=uZiE12M|5%&8b^6gX+IRiu#U%l)ACNu*Phxg9 zVq&NHoI?~D{YjhOGx})STxWP4BugT1Z*QObD(Tm5FhToaIyo6Gr`udJuaMnnbLJ){ z?R_!O`2{aKM9c(ujndg&MAW_(YYO*iyHqdq z{xUa$dX2v6N`^0nJ3ofYg^`>krZTI#Z9!7>R)pve`{JQ3YL3{rcaT=H+Vxabq0Z>* zyBbLorOv45cC`}*oVSgnli$D0bj*6QOgTGz${_JceD-0XYxXGD_H65@YCMfORyP-t8{30zP(0X8$zy2|qI1ySB+} zI?u&6-Zzy)O$Z(s!d-m`1}z`5R<GT)o68TD& z)8Tv?(XMpe+x|{M7hFHgVARC|x75vZrQ_FFi`T~5&|A83(ZITwuFN^XV|vx(&DAJr zHkOE3nt%1HYZ3($2avUSP9a0QtZsATu6k#7GX`R9)064)5ZPA3mDU>Td?_DbrUP^- zTf<_AQC2To$e`>rdiA)$yC9CxFZfz+YU$DM_F0L82qBWi0qiGfTCW}hv-!@}o6XDZ z#b5AmWDc3aa`=8Zh(rV9X`!m}gf@ z?2)5O??zE0o+#iHhz9y$rP)Ah5@CT3J;s3f3<)&}utuyoBqmj8Jx(VlsyXH`NmLN(lV>NX7to3yUB~s?0n?bzKPc#!FOT#m9Zl$=#UQm>gPb?9B{h zxS5OhXkr>;S5Rv=v05MnDJ*<=k(B}(?ih`Q7>y#3(x^xvBq>4aQGgcZ1PF!wI*|O! zF1-wpW|juWpa}{8E`;(U3lZgYcivt{QcMh?pzC=Gz0IOZqR>PDh~z)XQY!=!h23k z(h0hfwYSV=#z66-S&(-0JyjE~G802h4;r5-P+8{tg6$7Y7g%9ln0BEaYnAT?2iq;> zJ5A<04e)k28aVUD1N1lRdPUM|t{u{&`NC3XUw_sWXFU|uL@6TH7rpdIqe}gmHuXtk z0z^myq-m;Le#x9h-Yg_?<@3>sDa?UdO$QG>)MC?)4jKUX)Om-}G;?MZZ`e#60Xn31 zka$G~id+rWLWSyjjrvbQ+(whNe380utRT1Gpw>c_*=oP(3t72C3lIw0t0OFAk?*$) z2?kZC1%SOBxe+XxZU4TcADtp$A4w#eFkzllEjmoV_L}TAQ!(;q5my`lTULSZU9Roj z;mjM|5C~o$0PY|H?qCGD58Z^LSJ{_7YQY7Hl=k|tF#GLQg4n+{n6H=*_96@hmG^Z4 z{z)}8gDKJKQ}p5STcbJeMuJY@);-6gsa=0V*7a(0W5d_(tIsiIiXt&3Wer{%b9Eip zCQF5B!PoVR_bY*pN(4&n&sml|M8Z~v03*wAvFj#p#}ZeCmyTgXU&q9IP%5-HPqVBx zyQld1@}{oR-(goBR6eK6G_DzvFN3l+danriucfC~8h>UZuTJU3d1tNL5c+dOe zI8X)bz_EI+_FPzJfwS5o*pG-psu09g8L%<>BL8~Ou0MY--*b26_e_i5N0UYg;di8r zuJfvQ_nxRmc1iPOztU6LG*dA=7)0O1=C&~O*XF3P`|zyrk#~j5j*7shy3|%e#SrY;f4<#j z^uDv-BR^4=PAeCSh_vzqqW<?$&>R~u-AHDdDVo7Cb>i$)LkF#N4=Qih? zc6I0$ABuzZSEy=@ES~8>Vb#=3;AM>DBZDs}8Ao+h)`kfxGlFGKdwq*_ORWYgTt_nU}H%>{DLG z_wm?vXPTF(*zEKwI!?$6A~kyssCoi%tNyWyr0iS!gD|%7anUNgLX*lIUdGy|jWYk4 zPU&~de#!xrEL!rIr{mrj)mDt7lq(K;Mz(3VE=Y8yLqgZ?HY->`uj7u^S7#rQt8X-- zZ7#Cyo9vP}jf;glSz0C$Hd!}QL^Fa#A$ ztW&$mpZjm-h;BpXvKh-6Rql2VHS@>D6191G;+}Y5EUw6|dx@c^V23oOFH7}!A9dkb;Rdfce^32G_kTxvBTVadSv zSZH@)cDy0;8D{Z_J`FG^7GNwfS}gHA$=bN;)Ag*Rvlu~x#pRJm2EP{}c zImm|9M5?OlZAG3Mg@Q}^nL8$NAe?}d-CR){$(VD$Z&+%GgbdJRHON&;kkyA!kM1ZB zJv65xq7tGd$wDC1B==b6Z`ZNHwgM#K@nW;gh2`ooaiv`LO*~Nc7W^qdN{09Xn$Vx0 z7^Hqb09+y}{NE!3!b71&!+K~b3{>MsN@K%=qtSW`6njP!?BJx$anPjyAOa`?0}@5W z=9)+_$@d+&F%rQ6!+wXFrKxyOvHywD2vsC*b2T?3{U}orDN_nKG@m9wN;a#2%f-MT zg(@J=RT?3^2K=Kt&QKLaI`NZ_f?bD*q#fjth2{G*ip`ot$^!SRpa!o7iY* z)2%{+Ar1~MjwS}ET0tg3LW{#gko^fu>dm9v#-je~j4>OCRS5kXmK)M-lHi;N9-IMO zbTK42xu>w$U~%3FLnc=(v?8lZQDG$iOo%2TKuN7T9acOyo__Q@efosFvz7~cAN=qV3B;V zj61-N#hw1nTPm!k5E$tPed5DD+d;2XL5HTykEo;rPy%^$`3Y_VwGsyq%;SnBhJPcp z9j?qU0Hd36O%o|j6;NhL#>YuFCKq_#8{QYraKOOa^I%!u!C5=-?th~0z5CldKV2w3 z?|oW5f7;1U5T&b`F+Jt@5WVNPg$E8=zuupqyV_j{i`t6W9{lCldnU}el*D~lEq#A} zcC#JKgddL$Crxfwbwy%mYpNA=zc1+aPjV9E@npWc)NPo@=yKjz%4cSp z%QFo}O6-_f3VC{aZL-bsaRIt?KVM=#{d+A0wl}j!C5|r?d|+KP9iRvK6REYdsA~K= z@l;$LaF@RI4ogqfHZ&-Hw@>I`vxqN$my$T$JoG%gsTvw4%=TT@Cm4%Ch8F?<_<#}> z^AFizcI;pu3FrT3rJUZW)pxqm-b%>vMcNQ>{NCs>lfTa?fhc8^y?%$ef+2UiDR$*K zjy+hV^{CdjHYY)W-{@qac~^fwFh4NSz`F?P!`Dv6Z2R*m^<{jk)`z=`#@oV8W}#!| z&SWR>X-=;#yPPu?sS)nzL_oaA9U()&!}?)=L4BChdRw`gR!Tfe31?Co4eJ{u*(MRq>@C*@j_ zqkgN${%}Uk`RXoDtzlrhjD1R_vOWQB2JzTvao5`-k*<5oz~I=uYj=0W70UebThvwV zd+BuX%kCw-$#XlE&mmqx28(_0&T5$VW}faEWp}%|slnrjUfn_G+MsqL*7)lVVdTqc z?ZarN{35<$P)x}hAaTrZn5W~5-Ed=g^Z3XX*8 zP$%J4R%xrvZK&OB6R|%4E-+!0(364sv*Vu9+*l)JI7Gyu%ge)NU?4Gr);vQo?a=Mx{wRyKw@Y-h&P0>ra>r=t#(Ow0QZjL|K1qJ& zx0<8a)w|83e;|z5$K29`uTy;|00h=@Px}TwTH|)i5eKx92PF{9aVo^-jKLN^PPb0Shkz3LdJlx43i^L((T-o3hOpTzj^rAky`_)A{g3!ed!x8-r$ zhoq%HP|A_;@uV@z^vO>BRmFwJrG8;x)Z*g0F-Q-%yBU|HDz5iLQ5MyiZ_+n?gLllL zrn%0gUJ84s$Hy~XiOn(r8aLxxeqec&Y9mV9QG4JU)F9lD^2fo7;c)*`ZpLkRbn zraA2$ltG=3tF@wmr3Ygm3rSBF&I1)o3k3jDQ!i|MemR*wMlLtITNPNP7DCk^Jh!k= zo|5pOy#j*P@jZ_@6oW=|l`0BU)_CR(W!#lP4j*8*2XnugjP5ZQrPY+0&0v#pADtO3=C2&X3{G)zk}&5FZ~ z#z=--;vXm~(VtJ*i>AnY2f3RC{<{NFTosV1g=Rwt)t>7oRpHk&ma7<+rx->yke<}j zCv9LlaD65PdUfUN-vOMgaUz61Z`ZYT%W#(L-%;2YI5+kS~!i@NhRK>d4|F zBkOmr1h=dS&Db!#Ja21lclP1nmXNO=vo;z=i4~MxF2^vf7sB1sudAOP>Rg$Q-%e>; z#fLpny1#DH3+wj6f|frRu~(n*SRS4}ZVNfcjOm{wT?}X7w!*}yyf`^GKvMei-g;(g z>fe$Iab|0P{0j-)qp^nO)3{jK)SCKKNVb_g8V|A(#$b^((AxOlF`S*Dt z>=KJzm4FzF*Kh*w?6Qf@`vgl>=S`C^F{{ms^wPmaklkp4M0CxNpNz+Gh?guQ-`Drm zs$HA2Cg$}#!8)Znho3*n$4Su6`$;S3wHInF5w6CAzeX_W-F}7I%EK?qj_7CgTLDU#S#4F ztS(q?67OB3DV1ZDyEjxtQ1b3J0Dt%La`e)v{REG%R*h(*EkFe@Gj%t=s2uGbM28;I z;dT`ByhuoDBRj)-wmsLs(t5M;9iF9>y&qbVt)IhYTHNxOm9aS&l;(X*l51|}=3b1l z;^bMJ$iPN7Yv6u!J;|AE&<4(rn=$d4MdG1#n>{#vJtSCp_qSmTM_!=CrO(f1M)x)Efx;m3r zOH2y-9?;*kmP@y^BhR=Q9|ndlqW@H3m!p*pKaS})%_bQIyY9gqz<9Si5$ZaZk2Tx& zuja-iSd>KJ5-oKUwwk=+&!IDAc5R<1Es_+GP*VCh4Ij3NP!X$Z;E?<3aby#1+Wz&C z1d`&-&6TVg4M(p$WNtqEt1_U?rhOg14&AJtZ;YODQ+P~0Ok#qJQ&`?Y_Dc9i!)vXi zf!SsFM>c>aYYi;k&lIcsE8pMb9*IqNST--puk!k9Uo)fEma*n$v8RWigwp~NwU~De zq^}>%2GuzdHhvO% zvOLjIDU%#mCyIvp+b3DO{W(S{x!#98&Y?!4A50 zvU)o)fGUd8dYrFon?%$PmF)tG}TtIQhDgKRLqHkdI*CAXg7cOEXB(xSd9bKSA$&ZmfvZ-pZ%5lgVDL>i%o)PL? z<il%3kQr&4PEoq!+ zQ7bKR@dof`8Z5qh0HlOMz?rnnc&Eu%0)p*dNA&cBqB>%U$^_VyyiLj78zmjA;gmz1E?ch>ZRNSe z6fL+Lb*yqmjjiO*&*9y-NN$Tsi-+Z{k zsya?r>MSkk(G3wdDzH#CDi|x2f>c%(QWiB3ngtgyO)*a6jpB86!{-QgsN_2sq-8D| zHdB+1u@WxXB#<8)%9D_Q)oc66f^NT&LE6i?W;)hb>)+rj=dPH>kJNAV#DZFRCo7A? z^aKLb{-Am~e0Mv0q0PzUc6ZwY#6gMxwLs7O3df7-tM#UH1wAfO#+c9>}+<_WnZ#xwf2)^@k&4!V4N+NgQX z4dEP@vZ;?g7j?JKE03e+3D(ZDRo1Z|sn8iYPavpu(L5$y?_K|b4orv$>0oNHJm_#V zZ*Uy&BZcx_(tNK@kym_|{j`4ui#I z8^s>+Rhbp~q=4(`cyVbLs6NpLY>&?X07Aj|Z z$-Y9Hs(#U#%+A)2(y`SwemgaNGkJSi#Yw@2D7U(O|Mw2@0yt!k<4in?tw)#1eFH(t zg_8ACRcy$b4>t^1QF(^B?11?ew6Dp$v<%iw41+6QU>RFz{8ZS0JdTh-lfRS(6;caa zj}-h($1(60>h3=ZPY$ih4MOrCsA91wVi-c2{HZjk^&QX{gDX4x`*yeR%j^IrKBVXf zzh5}ah!7Dg;4R}wnEj&VxxFV0%$}mx10_9#=nz?x-{SX3%rtOx^xV*tc0#3swy#Bo zEJ&574VpZ-yugmDToeEh0kMHfu?mWDJx6#(5Ts$?G*Qs9(zzy*8j#S?51=u6cNk9l znzJo2=ZMCNB(;jo_R8H&=1Y#{R72)YR}u3((FuPALy<62p`JWZKO+xzE)*?u()(yI zBa%EKOJLG)Oy-o)(c{N9L2AOf?->CB7fiBKx}ZtUWg`0m?{-m ztul~_7STKt2_F7IdrX0EdWH+f81f%XL~2K%w&xZ8fkm>{YQ}Fa7qVUL8%Go(A}f5M z2&1H(@7d?a)5Qk|)1RP#fbmb;Uw_X9;e_aGPu_g|`>*=dVHmap$+{o}+* zm=?igcgcDRFat%U{KN;qT0;@wX}&qYL8E~~p&j|_Oh6=P!D`_`ORs)Kfb}AP!3}{U zi27-PB8F+NBld;gYR=ulyYuZ27oBT-6132qFHlB`0* zh`jfccS2iy$oCfK0r`*&fZFgt7ey9mR6w{&pZZ27sKue+_H>Nk=6Gdm=cCO_O^5=< z5O4As-fL(@JE#A+VP zwSnuK{tX09`bH`|`;WHSo6BS*vIK^6D#{_(wcE2+!st-0*4^GkL*do_tUiPk#@lQz zthqM-q+M)eJ?aLf`p6380Y)yLoJ1f%%NP$0thu2E4(IPKUYN z0sD{h9e#p6E%9=6I^Js^J)VF$1mR<*;KSJQp>M7^ISVP4%gn6q2jN9@OI13F?Y>J> z*vJ(%T&oABlsm3KobstF0HKb$@K>Jqc+?mce6f@MxNa;U*c`__;dMX3RJuvC>ceB5 z%WN>;wo3UHeIMw;pK!TZ@4eb~a8QuNYIWG`o^Xx_=*SbT)AN7GH2PYJ=A{+>xvDIZC32?s;I7Vzfz5~u|?{s4s80$ z(S}qE6%hu77wR$vn1`UvcC>kX`|vUTcm97OBc0g574p(ZwxB*pHiezx4*Jj!#4{v* zAyI3r6y*9>eGcUk@X)MTC0(d<{gvUc zplUvMp_w2DG`L2Be#gRn`1tU!ApbOkRDp!K#~=ofW8;9eZ%%jng83tm=fFS$WBi6+ z5OTP?4f5>16u#b$kdT@KSjaJ$$sz3kkdWrEp|x$2>>S5M)Hpa8iLCGg7+^SkU|?fV zWh&t0QsDi}1{@i^xt#w=&GhucqDW(sv~UUG@A#)iI^`C^lMEoD7(z?7;{C9Mh^6I6 zktT%2)Y=Zi-Ig)Vjkpb1y?_=O`j1h_kDM6=RxwwSFEw4!EK0 zf*C|%*nS_~tFejTgvGl(dL!AnTD$OH-)YN{*#L$C5uk{eAl*7pgkqV$#94^oX=%VM zhivae5x9i*K9@+u`-Q0}g+LI_6>cYzBB^*WqRxaM7o`82M&G;q5DVY>@R{{LG+kqG zWL?*t*fu7%ZQHhOdtw_MPs~Xswrx#p+qRRhpRekzTDSYpz18PO-+lI3d+ohgh@lqH zksjDUoiVAo)WBENLk%le$!2<`MZ+V4vXMp;Oo%uo5V-4fq}*x08-)q&Qv!95TfCx` z(01mKcb1TMW|Ma2lpZ6QRRC9oA*KYc%AR9zD>eK^TOz20sNfQ3_=6FtZ_*#%VaJylErou9moYzCjpg2g zz@XTs^90jXImWr%`_$r={;(JPon~og($+M>!qd~LvVKqEW_X%^Pt&+H5RIP5^>`Q| z^d{WWUu}^$Pyl^D^_!?TFRd!_agW?;DF65CaumhlA7PKlmZayxzK+=mlHZ#A**Z(` z#z!-u=h}mugGh&1?z*R{fJsJ>tH!VRtPLX;&+m!P(PIRGWsR!p`bJs1LjlhhCzp1mPm5f<6#3{z0SQcQQE&v!3t1n%)TbRR*n*JYkoqOI-xJnjk(86YS~(TwGNvf;GZ{i`XAHvl*!i z@yYJsy!Jrj+@?mH>GbMy zm>}zuq_y~Ken}CQTy~;_C!OKz>N;nQBZ{jzU_0xM+*V>-Tt%)1!^nX@$aQ+Vxicv!i*W1~x=l=;5A~y`KeFbs$MmU>(dxG935;hY0dow6iD4`?@$XTBwoiCZ1<5_3 z{yM55@vlXw>pkANZ%f0vdod#n(E)2swEYz~xC-`y=G>q6*5?b(`+C&O%rK?R0hR>= zhUOgdOx_d;R#oy$eh~q##gJ|Hk1}?`xxuXulgI_v8PgfK>9{Sb zmF;?uzdMKOZ=M}7jJtLA+r|-|lBQ(`XLCv^+3HU29!w|J`)Op zNExVA4hsC1)u{b8SrC3yGW-v%kGOxJ?BAN;mv!?SO{9jL;ky5rle#^m_guq}| zAVA}QK~F&u2L)-7LBk4VPa~EXLn}Kt$!d`a1!D*?VkXpqty5djX&UBQ0;JGD{W9(5mahzsib0Ogz9yn5-lLG%?1r&g<|nQu^GX^rG9(` zkp2K;P3uPr{k1s_wHpBv9}X7PAS`zyGyqN9R}=!CfM{k?O_&6Snu1YmfWh)3DikEl zHHhL9W1eRalmYO;^u29bDG1ZsPM*edE%GfQ3oQjf=VUF8>}X81MH8gefL$1iKB!9$ zz{GBNQTlN-WSg&F4HnH}4?rmk_liL;j7uT{mMavR1e=D-D2PPl163a_K~83q07jU? znW~@}4!C!PI99l_qVrm~uxMs8bZOxqR*)=REK+b}k6!j9*c)O9>QEhhF=u^BKIg12 zzqAQ_xAfqsQBZF(|9(UF2Ha*eSSf%JP8`cTkc~%sV_3tzW1OkLsURR3@Yf<(=aro& zSuJ2;{joA{YWdf--W)5hmQ-IAbL3+n*sl4q$=N_@DCpUqY!Hj5;^wkHD^L3~%=$L! zf|9+2Bti1SVGQ4UJ(M{d%rHR}3z(Us&x?0X!_#Y~-iF)qcjzzRb_iE{E)o@$BN1yW z<~a>Z4M*}b@`sl%s;5$t_mucheln9ZIC< zYOMW)H|=si&GeDBw!UbfrTpox-Xr|!GlF=sD4ms_oTB6Y>UQi8_AY+aQ@hRQ_{!G- zTEm_aM|kmAE`ECKQR#+07=zFaHDV9fjf=`&=L5HFIh6A|H_xp(cdbFAO(1vBkaGOj zsyOB7hc3RlPuWPbZ=Z|2arDTj_tVVR&eYE=c#I70^lj>%Z-=p$rV7p2o?p9ql+IPt zwccys;t7R?zm3J?>|-!nL=746#(upHAY~fM$1arqIz8Jo#AJOgN6gZw(rf!&aFUy@ zkkdNt_g*qFcWNjxjkmrXx2$mv^=P&0^=ZL&{s;9G!-&PmODF(Ry*8kF7HwDG_SS|lr zVzvjqYgJDU#FJ-lMMo&2uI_%nOESPI{^T-Rt#>PHIO|7oE!WR;tM)CsIJ>PFmXL|x zI_ap`zMBNs9U+T(9UZkuvHoYRkoWaDV4>b45e=Z+6L_T_&d9NlF%a-B?sh(ky-fG( zS>dGHFd`H*u~X||xFi*{-X!rpT~MA<>kt4=ogwvhvMqWUPu1)D&5eirae`5BF{q;A zVM1-KiDO6lmT<$ssLepIQYYWvUNgdtH^fsv{)RC&8Ozn;ZjhS_@3U$1lux2wzMk0f z$1Z0+F!{Ede>uupA1=<3#$ReIO^T&jzs!3>>#(jw&ztn4#H^5V_V0ovPfmMM6nXAa zSQT1=nnosGD}9tD;+GNjR<&{{g5RYTo+z|G&T8oWX5(~JeVrl7KV31m*8}N4*QcuY zH`VmX>y%k;ug(NT8kK+Wyt+=`Icm-~d+bM6k_w9W;2=F0y&gRVqF-b947vntcB38# zHxh68>fdrcw*CCR6XNv-LBrvp!r|c}duMttXNbI$;2@KrFkxUls1X^$kP9Et2Q$f# zZIi&uVa)P#NJG71m}=d2Ygh(#iwS@8%@b;MD)k*Ch|z)|T!0r#yg(Ra%Hm4BB17pm zpDKXPWrG)UlLM|yKExKtab8sURRp3dY>fU8jnUlobSFSAnNFgM>3)c1h$EY$gcwNt zz+m#XfF_7U!9>15CgLs-auEsI3xnEj6u07v4D;Gl) zk;UoJhYhR$Sj-W6R|yRb3dBRTD}qEQOjPQfeFg;xi3T1-fW|e1OrW};z?y&{F&S_{ zqi~E4itM0(-#~-Pp`aMudka@K1ai=z=pf*O<|%x_lDNVN0bit8a!{!OTaxj=rFY1=*;6oD%`wPU#v0Rj1bu2S&S*U<52Tr{NH)p0Q10 zA+S*q$%dab6~Us2(Z?$y0uUd%7z+*lMR2AcO^4wN?Vp?L>od%g)|*=B2PhGi>&5LRXt!0*6B;DT z-pqO2D`I^9B30A6GSKE6ypFSAecpJD)4NLLA0Iy=;|Ohy$+KGn zOD0Tm4bKXnDA&-`9!5uu;nGr0G{L+hosmZy^Bkc)sEk;A8fK`9y6LKS)UM+?QER>YSQ@@Qdhd2ku6rWOWT%ko?Z${$G*u0wfv=r;e$IVtw*v4QfmKjKLE%uW7_J;AE|RJVV$c(-Js zI$FZrg}z*qN489tXURyLL!yWdyBMKyS)V#do#lCZoJaZD+T?Ol^{G2)iFj$xS%Sn7`OkawMKFiEyo00g9zNZPPy1!q(}y7a2UiL? zRbOt4UxZk|a)eYJb5-wmZq|U>CgL1j|AzO!^tnn7RtX0&SuX6I`(E#o3 z?xMAR?^2h42+0HNK7#SLN-Gle&sjISJkoKNx_myG!wgqjQswXcb$*vV0snAqE?3#l zV>O&_RNMOL?&GqPT52o<$!4>~@wVIwjjl&b?x(s84Yl^`FCCs&YK}U!Tpr59B*Kql zVDXz1Y1Hm^&B`@1cxz2I>1yt~!K(!YDn3n)*IR9W2N$}WvoF_c!XtH|31IO?aBf_A zk(5W*TMD5x6)IMm6eqEeG}{?8sx{!R=OhgI?0&cZ^6*{@8+d=0;r{4U{)CixyV9%g zZg(D`urw{H8IEgslRyBZQ5ib7$m!>g>1yD8U3X7?pOTiYfPi2l!Vf`8{DTPJdvS!C zN#i{7aNPvQ<5ITu4D!x)TR1PnMPk)J1% z<9XP7+oN$DuTh-IfEN^Ljvg*Mqi482w$g*H0#`91Xn&&{z2!Xw4N@?A%buHLq2RD^ z@R)4@ieZ{?D>w*d4d%fWDVUo5-k2}8B|HQfQa;!h!iD&2YeioxF0lS8WC0qgdRet3M5DbitmU&QV*$d z3LXfupH^V=@W}ssLRGA9oX^0ChNMC)W@L7J}|YzsY{Y zvB0XC{LAwYaT2D!rHs;QB;$(P%l{GUVclzyFHC;Foqq5Rp`q_y#~^U6Xup#n__gCI z!uFs@?~VF6ZMUTUDCKXZ^x~Jj`9a)wEc7u=EHV(hSEIm|gpH&`hCc`jFUEC82_j|6 z2iT(nz-SpIn*z*GMB7zitr5S!FL^+I-}EtR_I+F;fg6ctf!-BjC?VGbTENg)B^HNU zz~EY;{|R$z0aYO}L$-W$92ns(7Dmm1FBY2tTmXa$<>7BFV1X&W7noQkRV2GAz>f5M zcINhL&29$}vRodDIgAX9<04+}&Oi9L*5IDxrvsJa8ilW?|4Y?3UyU!3#BL8vnx=|a zZS-|i9|vsS7nJqc2Y@zi&$L*y;aGzm;FED;g^c@t^+ znD4$sQ_SI7q2#CJ-~H&iFFC}+T*ENQGuA&v_e>kftgm*9?(igy5Rf=$^%L~0^t5Zi z++uizxf|Pu#98*`SGfFo#2U-il}v=tobWmpoEY%w`b6mXbSHT_h)Awe44+O}(5qIq zF=x4N*mmH_)7(yG%-~k-^0RKc5Hdgf%}6P~()9IiK6G9p@2q&TA;xZh0SzSi@8zOn zdPX61EnpRIo3vZ*${0`m8RkuT#vdAqfGZ0>O#PR@HA*BhV4XCG<#y35fh z7)jL_KWrlXwAwXKzCM1=iM9o;w`GcCe%?mhY&@N^)csZ@!4azh8$ zzs_Ijp<&tlYZ%_6FqBbSpG61Dmcv#O5yyJ*93x!c$5VVE`!93T_@vz1XWu5p^0Qs@ z)q3qrccEGKaq?2e>~xK~j3Gb2W8=R!d{T;l@b8759=FJ|Zl~jx`9GYB*-8h0j?2`u%Ctrw}eU>YuPBQZnH&}a0fBQIe z*v%iYuz{hl`QGh({aH_+YMJ^X&H5-NS~Q|aWywKeMZDtGVy)fo4TW&UY%R(}P;tDxTjIw3X+5_UOawIMhp4PESSEacGZ#HiMMqF?#ww?gu_LZYt-K7taAyCKTa z!9WB_^pZWACKl`{?I0JR28zt!jR#94xS7lTcV0~s>4SG z#qB_Pd>2aVmrDYf8frqiJhD}3DK^tb_|ngk7I3q6F~DV_P!Sa*EGiqasfCbqXow0n zA|?)`2RVoiGbmd>D2yP!Sa$CQ0V<+N3Ir;hkuScK4U?2|Ej9Ga9JEyEZhmT^QOa(9 z8d1J!sF8Y9h^s#OFr={2M0)=UQ9l=vSQ}x6XheV+3>qdnNnbQtKVq}d>xGigt6nb* z>vA(Db1V{9TZlipAgA~BWxL0BM=m0fyaVDhnH zslq`OcKoIAl{T(vBlCksxjd}8)DU`lO`(SDHjf2jmC*9-h@1qA1Hpi`S9lkczgGC@ zsNg^>sKCR+f?%hD)>?}po2H6ZO2gJk@I zrkHIQz$Spu^!HH;c*U-J@yg&#uLy*zH{J@BRAXYFE%Bnbs0Ywye#koCxpPXflE-R4 z1sA*TuWpG%$@C}$Z{*$nil2IO27e6h~gJm{BZ_IO=t~@V_Wox}-h~M5!P-3#T`yArc7WdcNs_IV~4*L^EVZg;^*7#2(g>O4{ zKsJ5{_}Hon$8wuZKen!Qy2q0S6t`I z>uRGnnZa7E(I!7B@9H|a%xL)hQR`uUP;q8>QOR3crN7Q5%jNnJTlF@M@t$)Ax4GTz zyX1RaK;PU)`sR}}OOtbQN`GJLKyR9iAHJa0wW72^uFqKBWr4F)Wqt8+8-gz@6MY&V zH#g}cGeV7Jwkp=e%G!pvwI$MQW(jw6P3pAS7Ugv?oBl>9gJpT`)DZ>^S65|FuOnZt z#qlp9Lt|R6kYoHXI$074F^lI{e?kBre_^Njz{)|PR>RXtyvxWfzfWw1j12tJ2&Z@k zOUB9Vl<30SDy@2UK<5HFnfTyl*RQVQjg0M|<^x$nf>&Elt)|HrY)}RjBZPuW{9nJa zjQi3zQ(dN_!84Bi!k#s~-)z)##j7ES8FEk#bgVagocE z+D+81hDCS+DPU!R%|uK`Y5dimbiZ9oYPtKAliySCr8`e}9!Z{046b%>ZmZ*SEU$kp zCfR84fz|@6j4lKHVIEIaH1~r+qNI|~XSnno0V2u*){&1pv&IVvI2^-!_x#L@Z#ML|Xb!PTZ6#FXAo#k{QF$mW|bFwEUP3_Y5z(^@{4h2|rJ)1lW2 zb}Egwi!@QK?poABvl=ZG(@4&`f8so=UO7xQJFTy3D3PLUlD8yym_bN+v-M*rNrTa| zr`Onx|3yx-GMGWTG1{b5mey1n=s89{599GPou{z<{mx%W!B!0k^5gX}$mJ=-6a1UE zzfiDQ2N$D1m<4h9YoWt)u4QqtP@%?wDAl!u+6K{HJ@?%@YneQKg0sq?>T0tj&j0k| zHH&5`MKQY0XTBm})lx8^wm*u$&C*P;nw^b}w~&x=9O2qZojI#X``fe9=)k1gP>>yr z{eN13mnfk9t@mP2kJy1@!Z(|kEeI7xg{pO+ zyL8%&#wZIXb3vdFR^*G4d5T0>LE=rZ7W9bm9$)Jfzec`bD>k1VNNH@}Chr z)p6I44_bkEB~dTqKu9dw6`~>~K-8-cO#iw1*Z;>!@ax1EOQP7pbekS_j1)As|rF%SX157HXwG0d>{ zgMK&&6E3g-1|Tin!$^V&>75BzXF*J+1taAuB^b?^@)0J@i%|B2@ z{eDCy4wh@dt|v7Ipj8EKP`%~>bNLAHBzqF6#w7n~A*i3|0l>qOSf-Q{9<-BR;JT1V zV^FzdWokHAgdw=Z8cwYi`Ak1HsA>nU(ewvAS3MurxIj!W!&v$MGwQE7?;SG57#S6W z8tWYx7H1_MlfZdEOTszjMtBs6msr%6?{YO)8@1%^7uKn|El+-4=NfPci@#ZX`l-~9 zKVn~aE#uuTeh+oQGWeIY)2G|s#nME0l zHpf$?Y-oQrnbnm@IX!J?8|Y79z4P;VJeSBLL>!Qx6HH!-4=da47u}C!r^1!kXwYe+ zzJFGp&dOvqKU*(P{oadfsMc@dIGTMmRVaDtKJ2^IZ_d?kAI#zQAGVl3$J=c8FOc+Y zEZxn9P}QGE55P-2Q966B)<&Og(pC^zJ*eB#xb+z5JyL!fPi55~;9-kWuxKr3SEW3W zXtb&nRDb*9GBsN?DqNb(uUd*GH)j=Uy1s#Bw^58Kb=@ha&EoCix_hr#O-_2pEq|YB z!Pot$m7SVrax7Fv|WjZPV?_Kux@AQ+{`2h|=w0+9*7OQ$nx^7P< z+nD$J3iEAJ61SVSa~+=ofhC!*-lFAZJ2x-qq*M;OeP4#^h=LkEfBQ2###1xDx~^$u z*RLU?TmAV5I}}HI-%9KP*{>bmLy7C#)rm3AxXv->p{K8dpE@Q`u zm*x&`;an7|6oKurUeDu0v_DTi-;bR6p(LJ08Kb#11!P^jeG|uyI*JU`S^AW^dgx!> z*CT?lSnV&UhQ%gBGnisOmb-lrycV~E&4%v ztzlruWqhg)W@*~-_Hp}agXE;3zjv`gM7G0!^i5Qkxgla*YXc4Xjm zx5>bGyfARzBgA5KW-YOFxz^7nK1s=;r?&Y_(dV{I3HE*L)mfmU{vLTeSI@?}MvuxB zTb+Y2U+>Q23@BJXaOiZOyo>be*s8Vua)VMoXDw+fG`arTpRbJ*j~fcP+7SNUTz(Vu z!%jlWZcBn*CBmo=dj0JUng|se2?sw`9ifMf2y4vs7aG$_41Y%2D?iyE{1Zhk5b4S^ z|Cdq93-c@=lk9h_^f*{i3KT^+lm!kF9SgzA@3)myDlY`^K^^MI24!SR4B<|c5cpDX zSd)brJ_R@&1!k{B{90yW5RpFWfnE~vKKx!P;XWb>VZ~cv`Pxq@6lAnrAxN?4*u90A zZIW7KA}35_E<7bNcqX<^gQgf1Vxc`dA^|OIK%y^Gg*DUPAtKb9K-4$l^FhO$pYUfj zsF0T6uXep$bV94UfwcpH)36Y+6Oek5pbTO`3Acd}w?DA<0*#kYPlG>7XIFuOj+HKx>7AYlR)S|Mm*-HFB?rAPbfgCzi-2Pl(S7K}0Pvlj9W}wq zW=-JrUv@5~UW>rnja$sqT>X#x*PxMOxxS;8;5Qx;0c2bP0oP0vCQ%0e8pcp<-Ue%3 zK+p2UV-BtTdlN&XY!lA@p19Y=sKn_Jdl4^9bKJkwPFm-}05khth4qxNON(P!-qja5 zO1wOr46{W3&kLsGm$Us19-s8ffN!6(pv(2-8bv#K9)ErzL7sqrWfooa9Eu(p-8tN> zSA)4#xm*zgYYo3#ldoUzBV{F@IufBc?M^;p((WK!^=#8>qNHwyiv_y_I${7nml`e8 zmz)P6AEOoI+)h@X9d#`d@Gw@Jv<>q}A zMyHp{{I@9An@yoAJo5xLAeXCAFoM~336TWQqG_r#Js9<7-R@hq&1tXo)0a`tO#3@n~ynd%Wj5jBBew;;m>KlNjX2O+@ zkjePIWuisMcdKHwe?Yqzn@ajTcxL5vG3-&G7R~Phok4E=>2;)d&`T=1ei=OO4K@56 z3W*uQEht%i-5-hJb~HfL>ah^FE;7|oNSNYg-u8X{Q&pu}Vz*u_z1EM_6VdYIJv7pC zl?or5OuLoCKe1uhsT1_>`<5D`$)mwwaB6ksbb=L|c_zayNq%VvR5cj%&i;3Av!AXF z*R!hZ?Eaa6*=2=t_BP>HHBXyqvZ>p!Bv01$R=>)wSYcH zW7XYD`=4fR(qReys&=C#m{uIbsD5`lt@fET2cVgH2bEX1XW7MZ-RmIGWo#`P0pkum zUACjPnCx!U6HSdu+mwbMt2mR*#3C7Kf`wR%c3R@Ixfzz#C`W=V`>xpWW6l zT1Q=z!J4a51~7rJ2qE1p9#V}W#m#m_&D{d_;Y@q%kxMqn@C7U9q&cS3?1}sc6QY_G|A&}#*KT|F=Z!?d0j<+ ziy8#FJ1RWxf|4G94-!FPC!J&Ysr~GHqc>qjIsk_|=yy^={i4%E7=oz!eU24O7~P#9 zUhq%@PSipG2{Vm!Sp$#zhmUE@%gF5Gw;5k8(iwjCc2~6!1rrirvrv$ChN0dlKCOgQB_<~^rS2BQx2Bnw6 zhXFePn;kfg0L{DR^!;M;hd+KpC_qu5BDz2pS|KLd345gt_+TOeIDN-%L#46_@GdZZ ztQ7QGzB-!fVFJKmL5c4`{6R+dY6FLiUyq+dy^!HYeh9w=n)m`6q;^Emm12>ghrtNO zAq2*uf_{L3#Dj$2{5Y%w+5Hb^F`YcOBQP6Za3G_{;h=fP-vs$mQ~*#8DRJK!CJ|() zBUW+Y0Q;g37fz?}%turM(C1JJNn-8(`}P;#zy$JLMk zJ@Nza0_Sgh64HaI zCmG@aVbOL`_)|pKxg3(w$b6y+`XIU%a29=)QAFropui<_kS1Td5D^x&5pbILDoK>h zR_yZuS}R|VxW+aknuSiC|mE_NmrxsZtb2P;TZa)ES7Or$U_ zI9vhd!0XQpnFJy|8ruwuFkBUC6YvXca?cEaM;-*pfLnOUHmEZ+BQY6rN>8VB`%6^o zTO0JB{eEaJ3{R~s_6)Vv%=kAN#B-0IuK?j*-B_Gz$C1r{H2i&Q(dG@oT3Q z(d}^5&E|gHf8!sHW1H%gon)Kl6V)M-0?h&Nf|N$s6L=D!^M<4Me%+TfRmtdT0^ zwLSIw-{(fd9=9s*lU(anTs<9~?ki9yCR+al(l=Vn0pXTjH6)i?>=UHj*bmYV7tTc_ zrU$>RCo20gX*(umTX$m-AeSE|YANKNx{U&qhcnOQX@k1^fJmuF}i zwts3x9c36gOnA_dr^jtI5hG?v-)fP@buB8y=h)6n_PvJ&TxAmqh9W+*^4zMz-xc=b*e<;~o$X|w;k%)j zpQ@A!?x(&2rk7DPs=1Wp1%?$8)cX7MxDyk$nfBXhxKnEJNzIe16kg_fePegt=G{K* zC1Odmyxq^OW=<{fTgL~k8Pc{kO!jwd*Tahw!$!|jIJS%zoC(*noJUJz$rdfq|5OrH zB2MfGE9c+*UaH5h>&!*hX|Q6?%6IiD)lz&7NUoGtg!$_&r(0M3GXMH|POT6SR4Hj! zE%5~fYN~MryltEs!pD4Fo(Uf}*8S{Kbkw&MEHh<|&ddqPj$hha4)`k5zIM2@5Mi=sVQE2*$}D?VL|=n-g?L^Hj90F|;6m1e#pgH&Gt4zci;L=M6169F=ZnuZbB&%fvuZDkK9?wILwBW*E zg`uZ3!Ih8P037inOaqOCE4&VQ#Hv-DRiQme%^&OGEGp3mlL8KhO$SaEboMhWECd?vz9qDdiHOMq znMP?AP6LeDqsyj^(18g?oNgy5_8>?jIs^z|3h)>ea1z$Ln<1yF=KrPpN~ z3O=W2BIOxHJU}00$B582%VLFJ8ZJ?1BXv(hG+6=t4@`!LR|QfYbRRKn%*JX{2}&L< zWrocFCc^-7uTrfG*6`=71&SE1bR;|K%#4h1vK04!XN7k&dN&zmkqAf^tMq^1O2Qq$ zl_<=KC^X^%eIy~pqKqw_S@<@W2zG=#xdiF)O4vDst8;GO`DMNv!0&qeEPU5=GJyn7 z8vJ>_fhNyZ*T=dxN>fXXwy&qdiq6pi*@BundrW;tvKVwyh6#u5xAVS8R*azicVm!# zj=})pX-&1>D1Or73{Um1N*80S1hZ(M{`b{h@Ct9z;%X4Tt61TM{N`%HaLM8L@yga% z-iA;5=VOPcrt6vBMsgOXY4tRLgvCw3A3vlTu7wj?+k{}XfpYPC)2AwZ%rZ)3;IM@_ zdGLv2FZcVB`Or5yoozIH7G;KM#VGeb?lxOw)I&wAg^Jg@ z8vlOpzM8D$pO|9kW{*r*T5Bj?6%YW)dAsT0h1RaP{Tuw~dbXm2qt9f@b5Riy5f@xW z#2#+@pp)BPh{6L%L1b&rmA7QPX3p(qE9>OhOE~v)efH53YczDA?lGGBA0wL%G~C+E zqS8v0A*a5LaCw1=toTA&hAtWZ-P~frlLN^}+|Tz1M^g#C@KVop`y9hPob2B=d}f9OVbY6I% zE1jlZkNX{@aB6-XE)A@8F=@@z&d^sE1MMDQ2d+M)ujnayn{?RuctYxg2f>zgIo&6L zEpDPMfg#`5Tug+gq=r5ZXLG>B#R@@=tBJSg`4Rq1SJC;rSe8zmBlp<5d8zO9Syj>^ z7#s$#MS>@KhW?tY;AI^{2KVA(jb)G2_M*?QMVgoVMCe0kK~5&+G$s)w<_&V-~{*+HReOGN~%Y z#~W#^%xkUaDF!3B(o#}CJ>F&*2a-&ZlO{A7oakTPDyZ;|ShqTKOgG}qqr5lH(VoV- zQNNBmw(Ee^*$+YYVsJd{VAVXKM@B6Wverl9wq5|AAUKj$Fc^H_7c}PR7!z<05MDsX zVl&x-auO!pT@a-;4pI0Zs0u~U$$ak)#zv0Qfk9#;6mb<2brq7l7m{@qR&?zXf})8A zc|g6&dr{SGR|uW6V*)~oJKxgF2s%IgPH4bMm=^A1%qhg)t||q}1_mny9jaKQXA>$a z6f!IeK&XMV2PQ>^FO_omTv~AtauD$vwhaaSQV@7E@I(9~qZyhL{>A-r*-6k>gDPK& zYX^Isk&BrFI?R^{8l5Qx3f}|!hKsIO3Ec@E3?KM}SMPCs(6l*N^oAq*v{{}R#fW$hK5gOtfuLd|iGhNPi3mhOGeCo3s3Zcw zNI>ug!Lg*W5kyiTOhB;A$UsT55gGwduqeQp4A7XV;C8swD{LxEv_turMfvE&`S4c=>9%aWMPk3NZj@mz@CyQSOl&cI+mFi)y&E}O)j?OE3Hqk6Ea+@5X=e?M3}Y0 zs6uo`L0UUKd0M@&utGAupeR$Iu*ZR9$kL^$MES`?Mw*E`vr)uL2MH1rvWb)UP3 zpR`WTXDBNzznEjsRzZ2pBt=H(uo|apg(@H+sUnv}_N@@i+HgkQWQphL!{}PjSvJ3_ zp4Cdxae1tynxlxvD1ycCV5k+Ci`%TEo|ynRWq&1$u*un^l|&~Xy{*!1!V#@0P5|X0 zPYCWa?LoLY6f_0SvB1g-P?Q5yWmhA5G`J?Y4Cl*BIt{ zm>^?-dfiPY`yjHUFqGURiF}r=l04QtADZW!pOnRO)FnAnc|B_ME>5<}d{VCO z^gn0sTqGNc!^cQFn&r4Uyi2^Fvl;1aOB6Y(bC^X80WQH(G_psNAMI&z%K{vFI_eaC zegdBxQTy445#wcLuBAK?2zZ!&CnGtcKUsvAx)1+6F?v5I#4TsAj8i1s^beFehwwD3 zH439Da6+Ct0e>t_n2o?zF2bl-r~~4D~HWPl=1)ioQR_9^87_ z`*;2F?;XCoF68I=r-dDN&TvJYpb!`Dfi019kh1*(^V+Jik)`d+-1*p(qi zuK9Ge#Jf1Oh=lIHnvlVuRp)jpSpDtdvGTW|h=jMr zmY~P!DRy+twv+(zzA6)E*}esSY(lEp{-a`i26*Z354|DxMC1K%F8-+h*XVVDt7 zxY^&iFv<}^cM+1P4enQ@zT4JF+V~#X@{wduwX)wx$vz;Xd`vkgewGlq?xLpp8_2VS za)Hq?5bHM>jDXQmXe8=Z>p8UL(`PVTZHo6E$qM`aPD&i;eeJjHxcT07{a(dw%TG(e zEw)4g*k1J!oQ8ym51uIzVZOi-k^d0l)hb6%LV!nwf<%=K6$%ZO z7#g?N$eqrZ#?A8(fSCB#zXf~bff08SV~zy)#p|B=+vDl^IA7!~3eA^Wrf-A05MJ)k(r z?BD;V1qfLIlT(3wDd$EuCofP2fOf~QimXFwoTQkAFpPPetc~KevpV6q-5Xo0Z`xHzK!>qGL{IJKb^e48P1R9{yZ7s81rd#FT$A`JDa*lco}jB zlspdYkDU5oDf;&WOeQg#BqU6}spq$Jd3K8Pzxp^j8@#Y?-N0EK)g~$a zJ5r~F@C%V1YozE)f~eXjCoJ2#*jnvjg8aK4jTF1V&@j>TB$P9yvCzP8{Og^z3cagI z!fU_eI%(iR^2zaLyUs+x=+W`HtK*LtPS~QOebSkYZ74ct7-}T(re+mItKL9U^hAyV zKG&0}iiKQd5V^U_YIm>=?5^7#k4Cbo?E%hz1-#_K(D-9xAThs^2O(qVe zhsy?iQ`nZn+?sw^oZlz&{UPAg`EbhqIT4ip+bQPjrHb`uXep}1IABB(FK<&hw|d8^ za}Lq0VVgjo@%82X`f2d580j~o!1e3oalh;GG&Kv4#mU?Abqy;veA?OZ;*zWG6g6lH z$iwQL%j?pdir?2@r!3lV?3er6;08Tb!qs_UnZHdVNex07Oj)@`mCkGYI3D?V4!W>& zf*=~3CdGWEO_~U?(A<;#7PI?pwz_4g-SaEeou>6`(y0LJ$bnZDxsChSi9i}c1r)a3 z`nqW!cPhNPHLwY}nwnLvUlZwMRc%bXHQc6LCnn%6v#r8&YpPdoQ9(IDSvh0|R9&`Npf~N1H`O-23QYgT$P2Jbrjb=k{fBUkow^P6U z-zcWO@0O2u6Ef0~Q<3rU+RWD3c@L}FuO%7#^jI7T)q2qX!=wDjhrNZF{fEce@A(>t?&5k)R&MU? zy^vJ4FR!euJf_K*hu=RU&_ajJI@9B35Pv=56LFcXNSN$-u`x6n*B~SD_FA@7smFGA zka&0H_k9sVpTQ*a_%#eh{!W#}<$k1w7^aG&$!K`V{A{rXOE6lvP=blH1?ud1yM?gN4omYBr;QxBLh&N|8~!D?kI#VV0|5OZzD$q zN0+CrX|q>W1RQ8ompTd+W|}R9$g>Z9P)ONWMKrSE0RiuV=w-;qA_*PXp#BXHUj zH0)kTX3=3FUyN_LogLlzLI9JuPmazAWXv3N%(Oigoh?3CrXQ>*_y-Vwe#4odG;pW_ z&aa}~>&AZpPUyq1v%o(dMQ(tzN+^egh9!fJmNPstNQhAUfkiH##QTJyzX(cL?ICIh zh?v~4#u})&5#|3!(=`S;!fnB^?H${;ZQIzfZQHi39oyU;+qP}{<@@ncH>vzdRjQKe zb8dH^K81QBI3}fF!r{YzXRFjeXfr-Zy8WEcsSUQmUKs3zw-xjNX$F|hl8-^h@YM-v zzrzNR;6v6*c5D6$QS1d}9R{e!1gcLue)}yVk3pc10h3LGgdzclLIH#CB_x>yX-|R} zun`#bSXiJGg=5UATOeBoVeDzAW53QP?8 zi6Py@iiG5bN!nwB$e~$S(kp_XiRxlRw9^(qGL{0vcR{`nL>HmGUZlHtD9u7G zn}G{w<>Rt8@7`eC`rrQHca2hEG%ENx`|7GbdA4cOg03~(Je}j;;&FX>`h29Sa36^S z_Ve<+{FW;nu*>I~9ibjTWx(Cs5QfPo)`7^HEY^`2jf+>HkfzVbl!*5ghG~o=#(^wL z(($tq;>%)+JEs`B-7zxv^t;^{7@lb&wOl6^1FR+hcm~xfrD~K%xwta1vn$ugW)@7F-fO+HO)YRc>4>2(KcYdBB(A7-1B>u>~1BG|C!mydee?6TlBo2Xg**;KJl;hKQ0@ zU0BhKbZ~G&GpM>0b{W6Zt6_iiecm(oI2IpivB&d(5Iw(6>s18v;_T`zEb`E;+Tf=R z|L8b#6Fi^dmYPQX>_qm8p29PtS4bW7DCK%f3v7bLPHV5x6Bf3t7HhjsB3Z<{HD159 zAil^}=10)ur*p5mZ`twq>8cVtCkwyVViV5F=0?`)dUyIc+B0X`?_V5^^q6NAC?on>y^9MPQsv+jY1__tg~e?; z@3RLkThZki^M;5=$?KjXT%&{eq!4TpNpTxV&9@v~&!sWuGel5-D4uqshFZX-3Yw>_ zHruUZ|F>I)9-j4_12%u9rnMMa&KEIy$1R5J|uD0a&wSfn-1M^$8NHG%SV_teLiOs@!Y5NGZfX8+41>*=2CXm zaiYs&AG%uIlIvn6&Q^=tX7ye?+hUOvm}2Z z?*|CZtvE98fCz@N7|*Ja4fa6@hDNBBN1aCGSKx>h_v5v>0xLez0aaTozL^WYf^Yh2 z*{UWRfEGjvpG(o11*M7qB|H#}$P8el0d{mX;tz5mo=u>f1p#x2Ni^Hb@Fv7J^_oIKV!(Y6P+xJwgRzV~xq%Y&VErjE!O64FEM6Kj0*WZ> z6(v4aQ18GL22rtO!(c(QC?{O;!#aT{paUou;M@O)k5`?Kk z4A4!3jL7MT0BJSvsU${x0+T+?5KxQiC`g47qCpRmr*`_%p>Y+&pE3_f6a8y&z{$Xu;R4&?sa^B4DvHOVG&?A81+p-hZ5=HOo&1lr^HGCmqWyY!iS2B4<=j4VXlL z`b&5en6)2-YtHjCW3PAWASh<^BxYDp#7RhjlzwcW>~t<%)X>2-u>1&|Oa&38N& zwbAMo{PzCFQj_c>%xWHYebM0WYUMeOA9Dkb z+kXt)f_$&0(qgF*3nrJk<8LK}xwGImzdWsvcfavk3hhH9h;=-9Bv4InO<(OSrwB2i zp=pS*+gxR(qLb?@akpOx`;4XK;NWO`LgaVG&=$E9dy_7-Pe(OjNmkh0&}qvO=<;M? zyb@&Z;?ol&eSgL3ayzYze~Lus?R(SB$jOm)$6wUqv6*DF6%q<`n=D{judGsYn&U}) zygut{6zdR4MaI@omj?)WPA(LH^LSk7zjTFf(G@vL4K6Db342Ee zKpX>|4z-;6z6-?EUvIF-0u~*U`3X!~C_7w~)Yfi?uW!8#_itp9uWC$^*;b(fs`-$djwh94V^_y#@p)J-Lj;gC-w^iH^xw|Tr@F(Z8=X8M{|B3dK6+V~dHs#l|r|7{0 z?>NL?Y>(xz;p}yh0=_OkqYEGD+K^@(Pa{A^=;fHuEEUw1Dzd`ezeY-p0mWenbKKSR zAx)a&NbZTRVQvp3Od%l$A01<(!*XGiW5hl)FBNlQriPA9sm^Z!;|PHxZ-Y<6?@Ut0 z=dFYFI8?8Tbb%yhGhAaPTY%TAqIE}a;*9%`wZjjfXr4^xve-N6Uw1O`X@6|&>?E6W zSfN;#P}=@HE;=MHibA!<>^~$2z1AGmtfo{$j3@p3C;qmTZONQ%u1wPC{mSv6WC_7~ zt4yCQKtt#+8dn2YLc~-`la|))>q;|ma48zsmc<~hqOwiGzH9;%o+AxfIxsUbPKhv@2{Fc~m@I%w zS!ETzU4|jj3>Wzm2$UQGN}dI3M)g84UW*pcCJoh#&HrlIfnbpic}_zX z5mr{{Bnh7;Y*mk@9Axp|y9GrqR(Lf*?RFS#@ry#+oL}n{nuW$mh|RGqBGDcKlF@g8 zgMy$T+9tc@n8ERJAlcZE3@uQyF!-k>!iq_MU=LHk7F?Bz-XZrcuu;H|(lPl-VXT6n zVK$l4Y0y16{cfNJ)e_UW7`m-W`n3wkGw4CnvwjEZ{{v=7h4OJVx?N8Ao#H4&|L789 zz6+-q!7C)rsAsDe3KmS53>GF)X*d$V>7oA0*G)Se(shs}Xt@C-*+wHM10y8z4Il7R zAtD!iu-~-&&#-I+)$zkfC!yd*R{!aljf0tlEx%zgRKO!q@_E^oX zlX1&$urbR{wyI`zlvIfip>byNn7U4%4pz24T5NHGeLPm8Zh&jt(HP*WVf`dpt6!#X z5(_VIO&4o3SQqQOy@X$nBRiHiAu5LFFKv1**V*2(hsE;7hHm(1Xy-O7hnvJ;wu$#@ zEUPAojI<6UFzZMO=<`SzW{?~wPGnQdMai%gu6V@w{zGp-AD!RjFOR%JEC2KP=6v*U zGLt&#E!$BoP2L5_i@hBGOVdaN+L%&TtG|SBJ^z>Dp9E%~(b&KJu>%S!mrP<2Qvl+hNGqXSf}?RJs+oilWsk)PM5FqrEPr_sR=P> zbvzmxy$_A08Wnzm{2%rbgQ~;b6%K}9FpV3Ykp%fmU{y4vpXYP`Qh$|R<_(gqr@smD z880G%D}PBFlvbb!aQ0~wqC^tU&RBFI4}|SpCnT=l_iyVp9r&as8jHI;D_GC=D=2>n zG5z}3bxlXa9_+5j{<|QutGg3u>kmvH5u&F_P^t&zon$4?qt$v>4Rq&xSM6; zVme)lCdJj&PbuKfe)*c+c~mMbdCooTtT02kNH*B;v4!&ReuSsl5~H|em&cbP%y7~6 zc|BP@_lkV@ZEJQiz0QokT(vYx4#9CS^e)*ltE%+K5?DIeM9 z?Ox%xm(8>H)07#gAKg3s(E>tSsQ^kc=>NU7=bkR|+6NjyOmPXlg=fo>7!LbsRT%_B z@w(*m`lrtdy4YY6`5X1rIZx-I@R<%v)#r};o`EKO2c*Aq+LQ@Ke9j*asD%}V8yj2z z4O54TaamkAQ^3SM5K%ZVT0S%g0;q?LxG#_iS7BUe`=F60Q1TfB)c!G;(98NsF3_kj z@^7b%{(qW;gkXefl7D~CgUTiMo08PFW6}=;L61Sk>VhasL*e4%kQ(u8KB0M>QO%Bq z)OHK3$dcw?RoX>4@=H3{)vQT|1SK5?B^d=Pje`P4xX6DIG^5~Kkb)>G^CleNCLF|Z zVlmC2vKq0!{sN?7N)e9B3YBCADS`qQLV$p{f`Oe;K`}+?!LUaWDJlf@r3EM^gY91` zOTw!PKQPjgntRVzI@2pU&La7Ki<>1oV z4KqXOh-dY{_%I*?I_Pa|5Ly_1tRr1UDi8WI0BA>d6chn8@;|UZOM?Osf^3mNL9f_A zY^1O$oFGn#6r&Dd&KvP8k9g*sg&lVFJg_O#(M*_7QCjlFsHle_6r<25K6SH>Rb?53 z<(f}Gvlr)cfmT%hW%(INCi+EB_${-C@5w-%Whl9!u1oRevatGJrvC4#FPqyZldl%0H!&?PoIiPY&k)?ZY1U<9phlB7%NX=CJu5 z?IN7*@xV}Qv`Cijoqd%L=YF_j_t_^_zWcO+?9AF$M0lx)9i1F``UCQ;<%b^BueEsX z*TS1Nmdn9(TzzM%4KAM^@0pC>g0#veOvQ$$Xdq7G>f|W+Q+I^h+R6uWgG-|x+c{g5 z#um0KJIU5sYb8+$u(26icUJ#IqLSzJdSA`2!s9Go`MkWY9QSmZfyMt=Hj~){TGxjY zRFJ0u^W$@pa@zmeZiR{a(hBjs=k>UrH0O;88xk*5@c3U$!!J*36T`?`++he-Yh<@q zc|$HSG1jL$%u_eJQA3@0uoTuGY~ED7SU%}`35LhV%~oa5EtZ24D>q3wI_x5Mw^IOz zhoInME8fO%4BpE_=yxor>&_75(C4FG*Jx-m#fPdux7GLKsile05=!-1CdDG@$wpw#(F$CFj6-P9y^luv@L7*4mBAQheL-DKoJ7pXVd#f}~q9nCN8qQ{qe zdsW8@V)OM^%S4=&+L>JbJ#V!=z}*Q8)xh~-9$6&)QS>6efc>)t@PnQUI~{ZrFQ&G94_Di$*Kx`*Bz zNS~>vitmDCFoA$2X&>xQ8DVkrqyLZmZ|MMG--cc*@RiMF)lVy8qd^d}THCSI$&uPHHcRNbn6BRb(gC+S=Mzk#?9M%P; z5Ym-^SrRRiLxPTh*C2sM!$I1^!<+ShSVSU;60<9!A(o&ZD-z@Xrd8;F%USRF=UN#+ zIe@phwHYuVoKrXrRi6n}Fp4Rx^qV=e|2Jd*!UAv%);JKHDNx{p5bf~a0u>-R7@>YM z;QXUi3u2PB-^xmWBM8MSG-?)@g%*@A4>7l`ZGmwBS(8LUI9cloOgJPWNc_9Q?Ko=n zn$V~VIMg#hcn}OAYAWaPWB>*VCOiN(8A4QML8%Ab`O(nds=EcH;J?+BknC23gbR@O zeJvvzRglbx2p5F~>*pFeip&gLBLV{`i)TwE`4IPOh%GK9gcgAAI8x6Qgh&jaN#AB& zNdrjN{J?=MIyA|Fvt*NSTSjxfHe<680U3oBiCAPkTXT7 z9j{&k#Q!<9?@28-s3#u#d5f#X1gTGg(TxGsjN&ziQ2fa~uE3^}A|K7gBKl8zq? zgx@^d=zlyU-cJ?Z=vP@N7*%8a@xiRafcjh~CqJ)@XCRX1H)S;F@jRKkc_NH|4E9~4 zN?*D2labnUrC~VXKVO?Lo*#;??l}Z|W^Tmf(XJ?&D3?V}Lq|idf(f(ilUc~%_Q5P0 zX|Q5BInb-4C`WvytTga&m3d?u&MqnY57=)$dmg*J(cg_PR=oA<+P7_=o7X1du6WqH zEk$KTHbJv?Iy@TkrDR!klofXkFu(s<4sLRd|M~K`ia6?eEyw_-QxQ3CnPT3ir=IWD zZ4%$wD~9iII%)O(xREG0vE>u(S`mk>NSerM!0Q^;=<~~+ADpqOx5Eoi(_1C$sJG9* zU$3xMRTsy|1GL{19PZ6Np~{84w6wC%-|ya`h2w@|5w`5Z^icb`M?m^0b#W{dSX>Biz;k1pGjpTR1_@oWBF`zCFAVsG1AQ^KqY zHv()JlQg&Y@wXaM*LuXO5(dZ<+2Hk85Hgdo3+3UL+I?Lf%gz5Zl<{fY*Dj@OSwvK` zlC(Tqz0uL%MJCF!C)6L=zIXj)9E`3-rq2-6grCpER1@a@z~3QThsB&1XE2ehta7q1 z*U1Gxt`5Os+UxdJnk>cP=}gq+@Xv4j8NxY4xUrv-m4UwedzA!K79r?>XqiiRW2m{^_%gdjJ2u0Okr=hnNHycn!uYai2Y1?DD&e{OfrJJVu#3E#U$e z&r%iXSPG}CCtyXoT=KJi_P=i0cBtWaIBKrmd}f@7(oA8|KFqFE=(AgCcaL+kL9@x( zY+2opH-(WelA4cp@zdV@LCRZ3c_Em3I>8bkF5Xo0}V7!`TFM- zAd*>y-}nwCSh&NjuE4ERyp0tG)`28_sv()D3kReH05w7QxFR6IJUDW)<=O2XA4A9vE`SHxgaH33H?P5h10Z?;A(V%g zS5SC3Bq9FO14M^S_(J;CHG&TYY6vbG6h5p8DWnTCa)z1_BefJ@3%X*W@T{~$J>?)0 z&hNnE$U=kvz#Qnrqg~ZFDiInf0UD{m^LmzW6s*CIyMFxbcR>f?&>A7xYTU{$i!LTU zfM97x0e(FlM6xX>oIDTcQ-lR3B1Z{=Cj~o$hGI`ZGAslXs!$IDw!sfdqGfTBl+*yp zDk$O_;)rJyp`f1UUKukO;use^sor%iJR79IzCa-Rn%SqOy0t{xgx?4f&hV2lUC`cxnSEnt^0AdhH})yxv=#oGUXQ?bBvV{S5lNw~KK>Tbr zGrfy>K0E6r*!kIp0*_dfA#Dvsm7w|0v+xCp@O&!ZP%lxuuQ~&o#B=#=-fHAOG-8}w z?qW_x?{n4BsywazPzW3C{n@$uP%1Mx5e1X;^jJa5GBCo~uF$wWLd#+l0}!}2M)YGw zIBbg7*;t#Q*>S8Z{S0|U{ViP!i3T}J_VzoXF(-4lotFq^w%yLMwn?AYuCn#0<#8wO zR;rROf_A0`ysx%3OR41JPBG(gP-dB_DcO0L=6>9i5|3|7q`c}tPsC<&=y#I8p@VwA z{4nXqHDF9R^jE#jSZzD~ma-t0Ye4H;sD!s4d-c=|`3;$a2L(+`P4*yy0~y6KN~+vy zl}lUXlEdCY#_VkR3cKB3^F9F-3G=5dI$w!xr_udv;q!G(HiYl@txgqqlX-rg0prit z`B5oFxh$5q``|1QL74)+zwLDlRXC*SOQ#m6wRYl2m-$Xl&8oev&F-0 zM#qUF@Fv)}%dIB!lT2gCFco4+?H-%<4r_5Ihq#6)tUp9U*~5o#>OEa_cpJPy?^kwoyjNXdg^@gJL(;_m%TM;ylgZ(OeVLB z(EVzH|DmAsme~m|919J0xw~YaNW2}D^0jkhi$ZgZe1(En1Q$g^wxV)GSQVsd^v&n5 zw+!(_ya?%hy|)lGnNIZcyj;U+b~{XSBNJ%ra@TKLFRb(KaEbJ#PcX$FW7ZUBs&!#V z@*|~Qex0zNTfkVapE{CkZ!JKY9o6 zX<*_X;(R{8>s-9@`_d+Vu+G`()dMM{jfpm;>I%JJC7bz`b4Dg;k@SllxW5g6_P(69+NwU=zTBd94;Uq|suOV!FR z=C38^2nvTxxZOsq04CnRaBf+0UNpzg?1A^n{ZV5cGn9*{Xb+%`EqG4+>wXE|Kta4E zfus?a!5s&z0An~LM_%9&EJ9Sm0wN_SX61xT40t*mh@d`oC~;^U8*XeLIjefB!Ch-_m(su)7S(y*YJ{CKY{#TbfTc^v z%n_RC!hq%*Q}BEUcQ%?U?jbj!q6qhDH|uNDYQ?*Som~n*VMjqb6%O#-ym}#6SVDe| ziOEW=wkCix=YYZ_!BUUUd9_(t%uYb3r*I+yeorT02nZ_ZKr=Sd3rDOxi@g#ssS zp4DwK{7%Tz!oavNNiuNZM|+@8cLLjg|7bzywZpmr`z+#cCe-EmTJ29}KHO}t2mpW2 z%QNUZ8we6kBIbG3uT!+Qa(9Zu74P^>|DKo8o_k{q;%NjUiW&UrU#)g{CtHaAjQpq5 zj7wBQlac7m%T>h^k&VbCA=pW1=?wW5aquHkTwg3M%D7B(s}eFmaTx=ale`VqEWYrs zY!CBii8$qtS170hZnkS|R_lY77t3|p0!yT6WmN5#%_QFA5;iVBMCDo$j`Kf8z zXC?j%pZIN+1Z*g{+4c9blajJ*QrP}inJpS-8NY6Wj{Vmy@Y#H&)atsya&0EB;XnJX zwwuj|xA>hdh&N^A)H?Qyi3}F4|o&Csysf|w$$GzNqfPymWpO^wsP;N?tAgj@5gh1O=fd%_}MT;)7uxqzd%6T zX?yz#d!-Q6-hYkV^6lPJ-+r67$RZ1296tfCr{3XvxueNE1#OBx!`uGG@MAG=%`jCV zAGuk~89U6qELGsOI>8~&oh1p7x{3Bl3m<|$5Y?FC95T}IpYr}6IPqtDa-Mxn|n zYY3TZZOhl+`(3Aw%F~mB-Cp>g*!j>1=IN^g@X4vKgbcD}`@JiJm4XLDEDil)j2z;khsAXX3bab$}OhztMEz#*{ z_LLip-=~FoUn^vjZ-CwC}!$k-6@PVQ87 zzOScRi=GrvY$^!Ap@xP$M1z$@Dam_eBidnw@uI@9k;V`Cw*Pz_9>(g;#|PwT+rGLNHNSHLA2PC%ufuyyQ5oaow+5poWPo1rT@>T@5d+f zTUS|3e&gO{;)1}j%Q@21b{~y-F0H_hrW@Un5zB|9_y1xl-2CZD#zMjN|^#ljj(w zNIwTd{`9?vx<)9=W#`zpHtmMyndbie>mus&?G12&Wwji8MVaaucsaz0<{0lHV@JI) z;8xJ)^vvO7Bj?Q76<$Ceigu^Z>DiqsYkUefQ<&-FH#?jiw^SM4nabzAe%|%#$yb=b z=|cZ{P;&-IiZW}DbNmzcPCk(@7dZ}%M3PhfMLYbyzcSXro$AvwR z%txHtpPFxDp~=J3KHc6Q)9HO%?c6NEK60gD8v_H2R!{#3IyE!v=uh=GHUF%tqR2#1 zXE~>X@gKNL+ZWgR`0fbaRk|*zwz!GJ<5y3X-7$s2!ZJ*a=DV4H9LMTFyj;%q?_^`P zx{t_4XU=H!akp!gukxu`_^VjzxA>SHu5M?l2F26+%^dSR9{+N_qF_&3jlx9RK)4oI zy%;?|+HSRyemQ=nOWwIiKHLWAZ@+>+)}x)maR_p`s(YI(yD6*R%i5iT39k;`9z4Ig zUeX_^4bJXIzDaw0Z`=mr^mxQ+b-Nw(rV)d$uXSH0+W+FMhhWBMB6(bFaxEOPpPhHt z_Sh<@4>^Py664ny68>y`m(E9<wgqe{8748z*yJBX z_LNHEo`e&l_%Q9Te#w1vmtx7;}x`KzF1Nu%)HVn#0@AH=_lJh+sr#aKhDDWw#F%{xJma zBs`dFku4QT~4@cTtK1E!on5zZkdu{BLRfrg*K@Wa~K zqaD`ZRv;3yT3m5k!;Re;HWo}tE7rtxS4fpXy$oQ4aE%zPj>h3dal4YO?|&%yQK9HT zz~Z4p0Lu3uL`MdqI2m}a7ZYprLufOYK*YUTa9tX}4F}=IhFI+c=hN(SyKsPHQ%E=~ z8l*=D)Px3_?95j%XZi2Vs%AI63c_0bCsK(~%F12FniMPJP`BRlb+;H*us{f?kQ_Kf zCj`**3ukCS^>QO?9`epcukFO4IPsU2D>5!hPC}4OfhVV&WWhFbx@)iG7`se=FR6Yv zmmD}YmAG9M<_QalaKhmNghC6zu&pE7AsB?T`H{SwqmW2pL9&A&#U5wtc|sf=w-+`b zXzc=MEX%61sgu5@3j{?1P&?EI#h?Hm{NqTDMTxO`sC%mf`&T1aBts2at0qgRiX6Vs z(FUu8Ehcby4jAd8+?8rv;tK%9IPoVhHxp?LRJ5HQ*Ms#2>a|!a#S(}-L_|h3G&IGN z+D$K)hM=jhd3l=xJv>DJ5fzkxl=sHnVPThl11y?{;~>{5@O+vW7eppI-(L~c7o=(L z3l!fGH%*~D(#sQh`8<{Nzbfg#lew+GshzAI`MRtC zlMM=UCtc!+{L)2Z|MYvRmnGs=K~Ye9j!teORPz_Bg9NT5)whN8J)M!==kfWtB=IbD z^EucggNe$Jv&=sUo2BnBFSR_c<2#Zx5cLzaerdhV!^?=Rb*v?Ae(FlC{bhE1yLWo} zaK1s;({WL2fw3Z!nzyPb)RIg678i3FIgS-E=xLv8_&p9ssi*8^|1+&;dN2(4!^rPG z_>s9lzJ<@SU)~n{@#Lr3YI8S{UKan{(d^oxfu&U=p)bI8z0_#xyT{n z4hQ@_@&nsQ6!|X>jG4w7{pAV9&UmTkPYdQB2L|{ZL8VS}#JtRea|$ol3~f5j&d?ps z!DWXj2J7Wo&BkgU+p{QxOEXuA%?CYUX_1`>ij}&H=XCU6JpTMdn)AI)ZZGF#L@#mI zq+TYh5#2rhea$w@Ala!pwiyD>W$vO5qAuYI+}qtbygOvYIgt2Kh(%do3u-?TR^=Z zZ+||WXtv3>s;9@!k9|+R6PxFQY`z{@N!qfXT2Jp&X-=Q^6OFP&4ooM^E6wHeD&i2M zIHqvfhMLW{%Kp8voYd)dwtJXeG`9~<(WpaCV>6LI@-X=OwhN`MixVrwFY=%KDE!d9 zrbGS}5z?$X9{?d51_KUj9~|Kgi1!QtdH^CiMj)O9g{q|hbjC6UHm;Bh0Mfd#xlBU~^Ld zPz4(RwI7jb$b`2$V#u|;k;sc^-i$Pn2|Nl!e-4Zr2MP5?n=Uzt*S$yzrhWK3ewqlb=2XD7o8Ke*@zv>YWXcvX;$W3b>$lwz^|X?2&y$HD^iI67hsSq^bdl8 z3&)2I>-D02w`QNSbv8l?kWKJA#YvE%B6n#a5#fvqEk@pG7c8#KW5p~hf$id zpj@+n0%;Z%>J-YX$E{9(61X_z>J^`g9c$2LR>=YnvS)y;+T|F$k_wI$4bugMKf{Fh zRym=d{H>sj6CskTplG##6wgsox?9}|8TF78_7Dt)dGqaq#3WERARuN2C^Z5cI|!Z} z8t~)u8_VvPXBYs z@F#0&b7)3ddVVVY!-aB%NdK=V4NVV^_OI1{g-MA?u{l>fZp?lF7UOGXkcQUL4QWG_ zF=*pwQvI_02;w+fE-n7oUI(==$M)U{=9lhk_pG##ilxWKf+S; z1YbFT8bu>B+7S}~9JnXhR8r=@x9gfE0pIo;0uM{fealUT{1%9c?!!i8NyXPHt8g4bu z{A~@Zt)_l?9QV69R0HB?)A_vi{EB}47msrb%h#D(Y*2w%G}o${6BzR9FA=S?O&hUj z?p9l@5eIvT9X8iVauXPzPG&<%Oa3YLTMpeS+6U_9%M8zr50x$H>}c4n>1Z2eayF*9 z+_c&iRol`vmzOku{Jz$2kJoULmBtp|%ipWG$J#mH-}D}wDW<==T_={0V9jTEKTq=g zV~%`2d*&{72>dv__eHJeCNtAgDyt6f7gZy7xA}O!-pKs?Yzz5*)fFMyZWvF;K+oAQ zP_@FJv4}PZ_*XQ`6q6f@Y`h?3EJ@OH_jD|-v(qy>EGvM@q3g7rt1Y#i@qwyHja^h7 zHVquz^JTxx@}r5xzVoY@BDRJjj^iJ;I6aNO6%WVwtaex`7lUprBhnkR51vfb(3Hu? z?k{Fj$TwlYTgpP>=?&koHNyMbB&B)1UU*Jy4Rwf~JmMlEas1`F{*ldr_CKqIG0 zWopEW8}3#ejR|VC8*H5AcWROMwmZT68F&rH5Pj9~?eo~Cp}!*M1XRgK?DNufdz}^e zyHyB&OiWpOc-{YG`9{$7`v3UdY`EK-H}Ps-t)$ju&l4~GxysD^WkIqN(GxTO=bo&z z43mMr9DVB4PWJsl0paD9Q|LG=Glx|y^>L}xd+^S8BlUy*rdS*SmkPrH?0Msa0c|pm z-TUM6tSPv71{k`i!)d}mVp1vgMTQX7|9ce z=_4HZk%Zx(h#-`SAgqEArI9g9repDyiEva&2>|C38~hc^v>?GD0L>#PMp#JBS(iMj z^P{AX%lTzUy032e)0Zf>9f6R$%G)3`AQ=H^A(1V$TN{X#i)dEXS@+hwGO{Dl>8~W$ z`Uv+XXmdNoDP?QblgfCL&UtOY&@=?JJQF}npcoGdGj4=XPedm@q* zhDeAS3^E4QYvn7FWvWn&9yAj>m#B_q1fvp?VG-fD^bf#cU3L&JkT=0zLxbagyDOAC zTomc~_3jFaCMJ?K7^a0^hp!NuVsnUAuI_al@;zwLR>g;HkP=?A1ncQvDzmy^?m^`E zaO_!jNNad~kvpQ#Wfw>2-Vb!t)MS1H>^7*&Skc5zKWSj_b=OfU5)jI--ze#6{UH4G z#ixVD*5s$)mVSPPB6QguTDK7Ukc;3UPa|6Y!Tg!vBf4AMK|m`hbb zXjphRYf87hNBI)C^mSK7J8P?%<#Jc!YGcFvzZbxDy2H{50vSC77@eiq7|eOPn3Gc+ z4l083mrxND0(As1I@3vYaR#cm1DcYAO9=l>d|9DTF3-zW*K&8;@{NvlUC{Y;QDD)k z>-3s8BJUPy1njRe#{*{7Xf!!lbLFPnyGZG~pflLlG3zAHJa1j&paqVyLZ56tZiZy0hhll^WR0TR#W0`{B+V7(Z`C-#x42b95Pg zi8|eTDl$jgsVub#{?Ge|YL2(eiqNe~Gy%#O*Ul!gUvBQyZR^-j_H2)BE$dY$b?Z6& zUh8S{1=hY^uYc?Wx@>QMofcP;Ek#Mg7#)pp43E#0VK`*vYus-CC~^2|++9y;C~Qt` zo*S;dsa+Jwi9Gnt^_WQ3?Cfl*9H?UoIPwbsGH>!s$GjLw!y3 z``VWE!gT6UC#${u0qy5J_>a8->bDycC1*jRW4~1-mhpT<89M>`jyO<-hf4G+95p@? zHgG~3k#9&8Xo?*?<(BF%Rt-oxDV%sIF#22|+$<@JASH(~+ldDz@$eclS}4LkvC_|) zsNzyr_;|69I@wwse0yu6Y@ycM>;bKeLlkY}i%FywBtflcp;}LfSzbs=J0n&M<~Jr6ro|VpcD}>XmK#`co1!5SXCcx2Mdqi zN!5WtHzvd(bS5&RhQZ}ccrFi4z&NQ`xV9;?QycJM@aKRP)89zD8{l5=AA$Mt9G|Nk zV8`;f(9YyB0lnXOvjYPdAig<;Rb8N*XNS85se!@j5LO*ni_A=aN{Er}6p@^;2=`|L z2FO9e#em3{QtpMUA|s9Gp!!V{fePD7k`*KStsDIJn4tm`YXZeuK`@43G@IEOD{_Gf zwOay>K%^V&z|+Nn5Ktj?F%Sl^pwWD=DPI>`sq_1THeJySeI|732Amglt#~Lq&=T52 z;j;|Yld}s4M+=0h3if6NM@oZZ1E96};hTM|Xk3ILP6ugcqqTlh7zXC1zCImO9iN`JC7Sx(`A_vyf^W2She?i#d` zI3@PIYqW0jJY#H6KGkhmGnVcCVs+?+z}pDp0XqzNdTR9*yJvs-Qo~y@G4b`9tkzEc zN7Fe5SMok>IJTXQZEtMb+Su6G+1R#i+qP}nww=7^_pf@Zo~fGiWlqgGQ$79MeRbbY zmIXUje=r}YE$k0NQqiS-dYtmlQ>rdfI#{)NjUC<0qVcM#HA@(mEpj$HO1O2MH?Q}u zLV{;w6^iDi%htRcS_aBCN=Uf~!fG=jO^qV3;74E$k5J(tNL_?*&uW6-HCTK2b)Me8 zO9H1jdw8ohTOP1MyJ_*!XNOk)IO-UEnyWZOMx8H+8#eNX82G22@h$}hL*Q+hFRuT+ zRPo++a5LCLQ8brl@5?ZY`IyiBYp!atl{&#y&8#8xh6 zHew#a&VK98gjG%@3^{rd@;cgFlU~N?{hRs)9V1+gA@#bR$*sT-c$UR_j<{sZM!0Y| zLp(90{=jNmwkdYDHEj7ni;b0FI z$9AwcZ)}8P^QOqbzBvBnn4!wvRJJqebNZer{t(jQQJ$J5>D2P_W(;>wq;f1Y-#br)rs2}Lt$Q|?ZD&l{}nspmbyq-pNLVCDQtD8do<|59(*BL7k1yhOf&;r!^5Br|EpGlk*=JSu5QBT?!K`BmO2fU z%GUGF>G7zZj^0a>^sF-!>cZzE{kA1Ssu6^Gu3h#>a@b22=m&Tgvx799hc+_VC_!7LYz%zHuQ z-J>?LiX}o64VM`ZH$D>4z#ttW7m3dHa2|qp!iyXJMTN?Ok*~EUfiahXDTKG}8de1B z^Xn;uF(T!wC`7y>p&$Vn1tSLF^YJm3x-xJ$+hKaTf1srEeFB>VX)tnHF+RecLwp5v z2>njmeI5741gvlXG%{>8{`gcPdtj}{`whecFEz)tkkge}!;@%W(u zF~6&8J1<6`l|{DJ{$-cia3W6r2am(%Bah?rFl4=S>cWK-R!et&Pqi~B|RRBk>pe2f97zrVi2%;Sbgax}&+H4DXEvK6!C@y89#sx^O0r z4TaPs!Vdpd465bwQG*fT#5-JXrlnSM1Q7MmqJtS=#B(;?i0QOdOH+}#gw?z%H52jb zK)BUf1%F!z#7yg4E_(B}uRhc6sJXW`wl=;$A6=wf9ISMP>7YJwvQmAE?!Tw9OOs%J zrloay=R}HPol4j)c60U29Iut>KqwkTB`dhfyZ#(|eH}HVT$zKVSBux+mqU04zyp(= zUW7XD!!tQ1b;{3NL3GeKCA6#E%i@ODVy z1gi8iv@m35QZp@Agc3xJ+b|dJ|2d-0@^{v0c9)7ZeU#^a!@@a#d@!3#apPt>5`P|s zWnrs1@L1*Irec)psnTl6mX=w)wUPwl^Z^n@Nt<> z?7S==eiGq%rZ~-I@SZHPwZN^u`43Rt?BHIpemJR0DXf&d%jR%4>;?Ql$9i4=oWG+i zF)374FB>!X&M8vd8iHF`%fDzCjkricXOxhaQf-54U&0FIi4J{^?nC3OZd4Z&SmerAkXT?a8$<^s-G|0ZAwF(r03 zwL5)vA&$0HJy(F}`|T(}(FpXShayQ|V3K^>Bly@2%Ld#k;ql1=vZ~8LEZAeS1@j|# zT}LJpr=^D~Ds7qOQ_0r+m~h}t$1!_1s*j}5OQ;_ZJ^=ZJY*8q$m;;Ki&}WJ?#MY;Ur7oDrpr8X~EEV!e8KF+~ z8BBc(5}~W5z&x!2tL)T`c8y2^>6?k|Z0jcN)#`qPfqpPCf&}kMElV$+z`Frzyvj(C zSC%M4Li?QA)Z5y-TuO)WSz(VvxDK?;P&F92((f?7GMDtH0(<$&Ayo3%bER{;19!wd zeX)Y(>v`z981C{6*0K}}eL$!P4KoO59r(BljbRAOQ9+Y}B|aGyciSj8gNJh<^Dc#7 zS5v^nX<@#0*bHw~#xZ19$>ee}9;>$Q89FvI`%$ZM_xV7-y~HvCJ;sgls}pT0?3{!fBvsUWj*ScCsr6;+)fpeuypJvD`I_28lZZ%2H3I zI(il5zEU>t!MX#K1)`Ql3;~ao2jI!IH_?)2AlP<&oy`jm&$2X9_uj6xnfh2fbauXD zs@Sg9!E^q(-L7wKD}Z>Vj%->Ft_ZO*cV6OZ+{>=6YgY4ke%0s@cg0_8Uu`dijK(i5 z?^HNzB{c~%6nqEihWVL(?hD(Ro)CXhMnr>}os3&p`(Ur^4a^Zew22lA66?)EJDelC zlsOub&6sEJ*=#GQBw{msj@`eUgwvx^)bRLfCtnmL!g(@^J$Zs1OMhMCx4@W6-3!LX zXWJetTrZ zG9IS+Nc``hNtCKq8N~g3UG%;*H0bmnF{T!KhKifQU7NAg&*8&gVbE>dnzdzK)>+&7 zI$W+oSn$6hbAGu#8-9kfTT9QW>Cv^9Q0_Di(@zbjyK{31@+PJbpM38(oV-(EihN>F zmG=2F?(zNkR$8xPlE%bDBbSJAY__D$Ri%T4QXZ+(zG&aZPd=YNDEY_| zNxlroV<8L&-N1=&f&u~{D=MU6MJXJV1|!4*IYg(^_cw>8CT^y?xRFKML|Nw)X?{FE zKE2KR&#CbHww}Bhe5BF29Pi}L{P=gpHY8Pquvb2Y7S0X6$i9NALDIi(!_hYlroV!0 zce?P@JDWJZUM70Px7+SM4$Tm!H^5&1xjSMpvI4~(=ltxkhL{4xRPY_>QaaLDxq2H_*K|6bbyNY|+OlQqpTNK5 z%%Mtv%YjXSA({LE?XR_{T6WIF5y5^{+cz8LC-Xfn&uPQ^q^tj{f&H1B1s4(oiGcGn z1C^Twmam5+6M@`G1-m3fIWGnjM%WulXce}HLeg3jRm!b`GL?_~usk19t3y2QN*(QR zX(?2&*F-6$rCNkGd#6DNfSEIH!w^$4!c0y8=(*g{=iZ%F|;8-k&EiqQb8++pSJ&kIJ+3q;Qe_@|XC;IiS9 zf^b1`81FLPlJAROgHbO13WU0&dAR&x>t;Q8L4?i?mbbKiItQ0w43$ZutMc8B2BKy} zkys-yFeX~~h2}{v!2|=9woI7o3Ig4LTB=~FVDwLcXgL>kRt8;w31`vsSEwQ`RBD#M zU@ZuzKPYPmkOcxTsTHoo+UqmeEl!}`P*G!fK$14|Xj}0i5)%$2aWZS@S}|K~TICq0 zih@2K6yZkvXWH?HF;w2x%PN!OpXof`OljMoNMTU)5C}HUUmQ|tyZQPpD81JR%%_G( zeksY2+wOc$&B(qb(XhJi_^oAiKS;elK~L>_&bOH6k1rS~R!S7k$5EZ^;h%gIVC-K8 zv`3{M!sBc9-<4X*0jc?VLx(Jw3|dK3&O_WYX#ot{dJ>3@E$Y{y5eag?)`eMl7Bw13 z4fBatXGE(=SYfS4r~D6ajE-7dPo)1#W4k!Po(f<`gsye?*xkJ*-vcbwtGn=fxV|MU zgrwf~ygt;9O-<3z4iC|ilB{&ZYi)j6k$aa+z~I$f)7yofo|LWTFzPiM>^a>Ox+&{K zsEMstNO1g2OBIc@GbN~QyvGbae=7O$dwi5Htr_|(x2h*payy?do|&%WPR}xUm`};) zj5p*H7af=H^!oapR;bska#y%APYvFvPSHq8T7`KIk7C!a?KKpInSRp1(PX_0P88WeOFo`PAC zSz2?m4$IGjG4p^RHjXi3SKP|V^zp;$%iI~`!@!`mF?V=;?DkE6T@b;ZggZGy>)zJl zw9`=hV!P0Sd1!;sbV7ZT#aWQx?V0zPXSrgdYGV1=;%cpieWNq~JTIZ5A*rDRosvgA zsZBgi6NWiYO~b_ARJ(Jn(;<&>h_M+J6V^7u=xwLPGnn?!e0>)?o`2OoLh)Q0hB!kR zK+q{h9`#u#e*74B3Fs_!5i>8fa@gsfr?X7ypv_{RNi!lX#fuUFe`9sRU}duqf&*Dw z_>g~+9*J_$X7}mdlaLH^8G7C8@0MzQoCwoC9wd|x3Y0V3V4quih6{E$s!Zy);oE8l zUC)D~k^(jzfqF_%XtWLD<0s!4~dPfiZ;9;jFr2T45Ht@`NuDe2=5Rdi;${GNZL zxpT&%qau@}Gcv%_ls`f-B7Yt3PnnG)CMI*umK8E#Q=Kue4OV>}jF$~8aC@8wG@CLw z^JV-ZON`Ck*cZT2F{xDNUO)H5-{!n|_PD#LhXoJ2hbI1ovUwPFxmriUN5XQ@Qtp)m z4d#n{w6TyG{B(1}X)KZJ)VImllAeJ1TXvZtgtOzJ1JS^zcq{5+fDdaSBY|%gluk3Q zH*3L`W2T}mj>qH>4ey&FH9Ic#)8VOJ)yK4u^lN!YlohG(0Di*fyQl#ae(C9EiPLE< zlIiM!BMnkPlMim57Vz+=i|SoZI_z&-?(2r%&EH%- ztNri&ku}*5@b%_42k9r!TB8Lftcs6WYV{^^cPpmLS48zl`KgixRNWO`T7UY8yb^dq z|9~OYL;23#_L?jR07T!=2w#z2;I>dmi!dN7G!#1pnqJi!U{`Ls)eF*G<@?@|Erj65 z8}RLEHl)QRRL`wT0CM45I7A>9s3aJwATVs=8!r#)H4&K+DGdxA0wYC)lSs@a@djvZ zfv!4?5pIA0#z9n~zq2HMk)KQez~EKB5cEeS9=o7UfF;xi) zv{;mwp43AT>NjB;QgRyC0=VlLGyh)&{*kgk$O9r6qB0lD&E-c^z3O5Ic%$VSoR!Cl z8>&}OCVBFaLla57aFE}jAZsxcZ%9s^V+SzI z&OKzf@zhSsS&Xcpk{Ig#dX3tbxj*r>P`bh4#xfguYe3n|NP80OYh7G9YZdc>F6(Z@ zx9w&8E-{<2YL_YkafMXDTp!Uu#X+aiLuXQ)Lnnj9&sn9C3rj8i!^$KxH=|Z`U5x1r za159^{fv~whOR)RCl#T{4AVk(HIu_7#mr z%C(p>WS0zgmG|pi_yiwuT-vJm@odk}LuaL-qblK{If&*kLPP4f>7%6z!%7Vmp0nXE z!+iSz{ZCQRjs|PADjM=Ion&MZJAXO)87bFZb-vE#t>50MFB9k=w~&WecPU?u4QtbFYh{09g|r;gd_p{X6Ev45}54#@?E5qZ09GvMoHo?xZM9L&)3^v+b&kB z-ZC4Bu8qXj-&fA4plg;#MEQ4=l`^+V8jKWb!}Bm$m(AybJ-GT8Xx@W8UYuO3cj~?l z-UynBWeT%8Jge)^4U?2}_Pl<7nLT1E?eI49tHd8|kEmAH@O#86GkXDA!qO%Q9!zMP z-W*_NHkQdN0n{i5toUbJ%M9XPQ;Y79mDD6(PtW6Q(AN=Ub~ca0>G9aOSB4U%tZSRk zb?f%OlRz%hGpUsW59LQ95I;B%t%^JJu*NvR7M%CXecVwge{gP2S(GJWMTzmEc(28V zZ?(4Rv?bz9a*TZ-1P&_`6`jmm`NMedeyss-yuSXiDWut=)Z;lf-u1@nf?DZML8t2Z zDwXijo)>75x(oUmpjBD>=lNP^>a*Kxi{jr)od&;ECF$mhnx>+XVawk$?TsQ-@r`ZH ze+pHCk%koe;&0*J-m6IBS%&i3xbK8NP|V!5HIG9Pn4Kvxdgbi4(=^)6mn$i@7Wj05 zFSf$UDGUyOTb;Ly>yEQs%#0KN=}M?qz21q=ZQ_Vy+jpb5{9T+G1vmufDwQ(PxBt5iJbEnWwAYk$8;6&w0T zfT=N5EX&r%2ZL|{t#}?4DiV3`V0s(fQwshDuJQKv<~EcO5spo&l$tto+T}S1l9Iwe zP@&4)C>|OSQ(1R+6qw_E|MGTm%NBh6?tQ60i4<+Q;5?ZY2t{@y+0UY-^v9!FovM}A zNyXlKZ=kR#%vPON%YJG_7Tf*jWhX26o1-zLIF0l@uj3)+DCn%)zy_kP$IJS4L$u&e z+9-Y-M3-m5~A88|n?;~6PvuwY);9>VuD;aIU z#bod@}x@2w`= z#*ge0)B6k9Y~~ZSp=Lm=DA1tLW&jgauP|2CZh=hfEfZkPN(JS{!3dJ=`6~6>1PM(- z5Y5l&hJXkK&R;tM3jslgzM~ z<``47Te%frDD-T(9 zgl$Nn|DOc_4w!bqJv|=;b>)300D0xtHZ%+AkPO8)O(zo0m9oI4Gsnlpbb~tZeWVukQ;YRJEeLr8Gddpa@ z(ecOy%opqbPh0J1sgZ5??aZf^czj4fUV0GH`e3VS?JA|kvC(B`Qdp1(<_E*ob)^HoWm%y+ z_m3TOl*i+0yHR}Vn#`Z#TuERX^pca+eKFH@8E!~?y1Q9esp-)5_&L@-uhoC^$4RrU>6GBp4plifqA1wE73^Pk@@0|?HAsPtfu6la$yG~Is!>X2U{IQ@~_ zkfSAPBKjZ8;s)s4@r9+xOQL|8ikRY};a6b`EFD)n^+R91&pe<2>S5-2O>6s*zy~cUnn4srTokr=W21q6<~69t zOIq^y`hE+V6I%l^hqpYYMK+ce${?a1i=?H|XXDa% zl5V%gF+!Fv;8@#m!gK$b#s3()@|jwh>Ydf#w+C7?vWVe@{UH`I7%k1N!dM37I73|A$ zk7w6=i<%=866|}J^u}0u=}(Xar&*db=p@TC#X;~v5sBHFvOuzInZgN&&Gi+awKfJ! zZ?Tu@9P5?|^%DgA=VeJNx2Ax=jkPto%{5he-H}lriOJ2uij5H*JJd%TA%G*Gh!f$M z9p|BP0I4cYA}(7f@-GP{2ni-G2}Lfz$tWYlC?{>KJvO1WpZ^R9v=}IG1{_MHDX}jI z+i5G@tp0BWB03>VK3HRIE(yk8r-PInWkI`DdjT73<&necz5K zNOyGpfAT?}13HNF#XJGHNmq_i#xmHfCz}hAPuf<1i%TZICGG<~&Gj(p{4KH%%C9f7 z!kCSg1e=>}IydjPdL3sC?2!S*!lo6JM|5tOBJeQ9d*wImc<~V_(FFIm(&Jz->W{VX zrDm&4TS51G|3~;Svb&0dn!@3d>`2{TUXH?-?M4>|`{isV#+Q@Zt@b0fL*Up5?QBUm zX;*J@M}Oz!7PgqW-v?yxUV;6#qL$2@SRf%hkbXQ-?~U{sPBQfh7NtQx9xSps6v?>x z6Z&HdBE!EvMi-&OB$VfPl6U9qf0G#&=QC1CmIE|e`SKh)2naY4OghcL>Ch}c{BGw| ztrcyGZm;v^!Z*c+(qo&b;>KE)-?pPjbMbe1^=<|M9h9qs-5G4Ob!BZ2j8BJo392D&&d^^<{4EQ+cVx>SE8{Zo#maP z;G^DMeL5S+u%O>}`})pDY6vzEak&&aN-Sdbzb3Tgirgf1A@H}CM>L4F_wXXMsp&B; zFgIp1!iVc1oG#d2SH>0~7^_B+zq|s(m2t}A+Qv9frZ4%G^`C-~T;F%oB0k1nx=Lwx ze)1h=zE6VO-eO!aj_BRpABw+^+i2eNc)t!y5Du|_M~bPIcGTP-%`HSP_HMybz30epFows%aiq6nxN31S4RreK~2Q9hAo6XN`a(I!AuF zRd%U6vLLp73%qu}rZ3WbyB8y`Gj+cdF;I{7iYZ`5Gsl?{vmFUT^M=U1#n8Tv8ZC!9T}FDkJV?ZnUK- zYqU==(7QjSHPuyI*J$B*b>&xDWpyb1LgMU|*L6K=?S9*a^>z{o)bTmu-eyRlM`oA7 z_hZfCpP7=7yJckieeSXLq%?)iD4@$>TYkFzjdHaC+mtSvP~s{tD^b3knz`J`#Cet; z)8NGbAN-Vt!PhVU>PJaWHPdYG;qi+`r!mxMOaF0fe8V{D*)hHSZH`27ezC0GvV@+l z&F;GY{xERRa-<@}SKd8L&Kf{TSZB}8Ww7&dF>W=pYw zXTEl&_W4oWc?+qH zEI0vh3cHqzT;EGb7|;+2PVd0hI=Z%7-q*Vo3`x(0uv&&>w`BicwF}a+u{jzUklQx@ zc?(ZtERREazNaiOkIi&GI6)fr|I`bO`bLR=>2|7zObUlMMPF~r%NuXcNEvkSQ{?~a z#ITe$z+K3_pf*A6s5Gdk96TQK-dZO1=2pS^kfUh6sjs1>a_Uq_zA*Q++ZKE1))e_V zh_>GE|9d^+7=PJ$=*f>6R(QcsK(WrpZLiqQJ9y;7!dr{KeX3#PeB0#Z}c|Bc`p8zSpx!z^H5&|2-pv~D@a)0K>`;kMy zWq0d&-oEM|OyS&~MaF$~90Qk>wUP99$L^uk`{|XeUjC$p%Qz~#P)H(_u~aKIpOHnm zv6&`-cXg#o`hDGb1@VU8fsTf?!r-CU--4gLXM165>kYwBPM#_IM#HgQXud!0M@FEF5@6Au;*Qguv$ur5=%wz?c&NP zNwZ|y@K-y#ne5lT@2n0o*=w4v){@@m$!coBqiZQ0_DZ$ghZViUv;y%0S+f}jf6#!B zt8Jb0T5k6iQlBxNF&KV2wKl5h=DT67svdyIRFNXuwV9f^*~#>GU}Ep<1M&~MH@>~| zi%rPC6}_|z7NaXxxB_Yq#oxAflS2U$?P7D!$JbZ5Om4}?`kOFqcFIBHe<-y18TH`U7+w=DvUw)S}X@MuC5xp7>;0frzErdxhs`+ie|KpDXe zKzUON>u^#N-)b>}6>QFT>?%1{?i2}rjiO|6BUZMc3l@Z5Ss0Hy@tp{y@gr7a9e@NME3=b%z;gLwL~o;s#P4Lgp4kC>yFMMWs|bN#Y~G zG0~tzu!ub5z>HkLtBV-ONOLg%euLbag9(JH^$xp&a81Kds^QHV9?KB@0nRdpr!5b1 z?^G4t-ewD(A@vKF24&4b5aI$x@<*3I;wj|-l-AO6_vY4lkbWR65}_cts__<~&Mb?p zAnT7Uko;pJPIto|&@X=* zo?`F94?sNm1M`0M)-G~4wU0(sa|ANW#QU77FQ=pXq0}8 zJ_Ki}Kz!w+>oAFCO(`mSb-paYivZwvxlY000Qkc$p-Di5KRf{M0_e26Wk+8jK;MYV zZA-j=f#-42Su$y5 zmsZ6Y&Z_z^s~e&;85CCpv~zaTZYdZDr&?Gc&Tj zO)U+!4=NiE)lIb6ZxS2E2D}yKSxGjF#vh8-{&xq8Mgh}9%c4>93ST9`@@%@gy1%G} zSi!)-&q{uHbUdEU|F(R}UU*Tyz95W5qfflX5Ezv(Gn3AzeXY6&wm;)vklAO&=VW@g_>6Tkn{^+|#Mtui+5NL!iWtxO(AD8^-*Y&+9xpMA&TiAz zP;|R`iAZTlMl(L4Vrn<_m~;6E#3nIujlQn)`giVYAbEB8{``15q`e?d5REXX49;X>?W>qJj z6>>jJ@jlCT=WHzfI9Wz|2Mg9|2BWK0*AN)fk=dCs)n3Y=X(nukoD!sidCJWxAqK}GrAlR(B z0Sc>wBALf{Bo&`!L4jAR?PzAn3I5mZ-v#I6L}X=m6#m~40WLSD_!3i2oV70k^Yug0 zk!4|Hh&H-CZJ*Nx+%7rkzl0Dnx%4HZr5!b!jFa+@kG)1rSjZtRrzDTz^LPa?ULN*Y zdCN{z#D>RTMCH+=5;u+16A7Nsn80Bl*p66j>1aP4_Ez%->%QEdi}wDqDG$rvm5tJ= z71w0hz8t?xrXZ7unScK;iA`D*1T)0&Z`?530#+0F8+Ml;&jlPc51p!FsXwO~N`Qw* z%Z2~P3Ags|a<6Hl)n5+%h1+7frFQt_oR-uNVig(zb2ajgG>i@GKpSwVt@8}9+JawL z1ubdH8Sv#j6bOISt&LGMgD825$7D2ni9vEif%qcy-&Z&Hzk+>!5s;*n>-_kFd7}%5 zpa94LnJm##s_1Ev<8?y8FgoLCD3nEQ?B8+X4a93A$^zGGU06;381i#<*fMg;-mKSf&}hW(xwLvsy`op5(|#)cC0?Jhf+}0;i<< zbI=0ht^l66@V8lfm7gFpHm@V)vTuB)z#yS-r~wKhr2?}#hm(SVN-Pm+EU`!eCUFXg z6n&AX*E$556bK&Z4gw4turU-eU>#B-qy72dl)@GRCX0ci<|{*&!iPTm0|{z|53b@# zT?+ntHZ(OCovBaPPY@9i2kO2#XuCUl*O~^TD-@242)j{;SpsR{&9DST=myC46mt{a zzuiNKU0&R7e!_2p)E6)^6OIV9pSTIc1jTov7dQt{h!X=&^F@%N2QP#|1}su55U4Z` zB*seF;R(PeC}a^R=s`;GK`3azNuU)o6c*qfNRb*O2#wXOpk+GQ>zqv#Fh?AP6#BTrMqh{Q%vB)E|zn2+j!2mtMRzmN~|P!(h^d1d3-KO zXNJ=?txXK_4h~Q|E^RMq>h-YBD;i5!&ks)IoqSwMH%)y@3TzQEL#lDqhSsuaD`sP_ z`I4Sxyh8(t#IchCklgn>s{LIv*r0>2BS_Urha@Q=oRuS?@bYAI6DAj6AI)ET?VRrR zhx~6v_b4SrP~HGo1}ZU1EA||A{P)Y2=JKBsf~}FBk;AsbU$`9EJm;YDS=REul#eV*j>8XkY-AE z(hz(;=BLkY{c~-7frQZuz5B*p9+0X>XgAPVmcQn;RrrPG(rNGK*Z=7@KXKb2i%jRR-B&?Wn_B zA98s=joVRrOEjO};mUf#R->$nadiIv`m)!vrW^>cYn>{&w;|&$0c#y&l$OM_yU)vi(i-4_Et~xR*;-qRE2D*nXa!_d6m) z$w0CqA*tsUpDnB2y$aAjWgB^7qyVfMEK8Y)zJh&kt~1E+j>>&Ecx1FCp!%xNoqfa7 z;xZLukF9rtPylz)OietMNNDhudDG-Om#jfMp&`K1X65A-VFHIp*4)enj>~+jV0iJp zEVb(cNm=)VrTyRJf%jmP)p?NN`gRJ|mT+WGON6_YN<&R+Lom7#_L0TAzl3`Wf|Esl zsnXy?Qh)y%q!St{3rv#wr}{xsp(3(jVXIgXa~RRy9vklZG75^2q@wVg{@VqJFa{`o zGHj~WQ&m1}Z2-7~28rc1cZ716THm+A7nmy&;a4I81U?Qf7;f!egJ86hKtFi^NI|no zgN(=s98(6E5?dY~DJ{<^5^*Vq$}H@kT|&V=#ZfTO7z8c^cqiOn=55F2_hG39Fk*lVWlLh{o!M+^{zr258fd#z34)|_wt za|Zz>@_>OkIndC~@FSoi0_10RDv<4IO{nv01pH^I*j!`frL-_eK2S*Qh#q*piQfel zX;wyV5A!ya`Jfz+&vl{1fpGoFRT^N##;zPEw6YUS^Xkov$K&KRMgniY9X zYqjfyg#iVrz|n>f9HBDVet{-8B?>Q679!E5q9OLPvNpEc zbe;0)A_Eh*BqZ?GsDSwBr96hiv$TT>pIwH+Y4|k#L$w18#$VAg7xi~Ve=w!L6?!&} zw@z#l5{?fsJ@vKATyg$Z-GtGNID^&~t-;m$L|K?*3GBneOJNZ?KBx1(zOkTT`#`{h zy0s1Nx`~gos~_mq5?w~9A76Q6QNtEAAZ*2-$l5>8!+>G141wFQuoBiF;e{LzqENYFfC2p#}}NsGg8&>9-T49j*Gaj$o#r@Qj z+nNSJJqyb>H5IjIXO;Ox!RBORJ7|YXV(qO@l)ZRVd*B^WJ#U(&4hp86BPJHk(|^!{ z?zC>Y`iw5N`S0}Y?QLCv=}7s_QbkH$xkZb*kdRYLiTq8gNM(8vmtNvn6#)Dj=Ia=G zE9(Rri->->GCA2RJ}y6bzTWiMPmE+p?B{hxD)NF$B8M$s;)iY?6$>F#T1KB18lYUc-xIEJ6$zB3JEt1 zR^I=7oPB-q?&$Dv&$c>IrE4oo(Mjo=-8#FfkMr@Vk8blQF!FcDZNRK58Oc@^zX?F_ zm%g#N3iH#kHUFi(Fg})?Le%My5>1t8@Vv`kFExSv;jz!9rnoHG0}lAw>cA$*Y=H(4 zdzLnvvo@MsTQ1|ieBIyp-=D5#2@Rd;1N%f~#+`m(CDbql)ngsik=2NnU|0*B>&CGboRPYzOpL$+m&U{_}{gWk1T zT|@u0XbBFB`)ciO7v~s{Rm!tgv#Q53akdq5Skg0;l@F z7_m}~5HNFxz%(hFO#jaUNRVlOCN0*zo0S7;PWvf_EenvlfWXX+gTu(Rg`8`1n`_J!jXFdy~BP;eST6h zph>CFO7wVvP-`l{CP)G@6uyaqAY@XY03re}1sEm}1Q!PXRRu)f7*_&YM4@h!FdxNN zeh4_m6kfZX6$*=Ecdp7$xP_T2b4^6yfl{BO&<`&MMh+K-!;xxtxWq3d78u_UEfXAy z<9=;-)GQzX3D^S~<{1U-GH?=uu~%*u0yGC$lOC^8+r6U^9$gBU%rIPk!5+|sA<(Pq z>zfb?iXepc=m}BUhNfUIk!$hyOiBS&=9!Bwi7^mP6C3iggQG8(Z;NPl2VTVxFc<@E zb{ts&=FD1kGkH@7I0A?V0-@E(a(BMcPnu<_{~l{ltuc$6oY<@cL#PH{_txk~;1qoq zybGjLV7LG@#t)KjA#sI9KV$!XlAV{Q_{=uYHhRt|J(RGARW%3*3$RCnK}a>e05n>( zKHmfhg7F0a31Q3`16dnT8J7utC!e*3i-VKJfH*9wSTEh5kr!CugAZEahOTkU!pM9~ zlFq6bTYPZ=G#$d?0QeVvMY|vNi--Q6%9-c~v#YEp(DI5+fg6XWc=}LWF`II}iM-CX zo5DP7>ug+}(X(TdS&mclcEP@C|MZCtG9&l*u@it;i+u_vdzqN$Q2AVKY9=^c*<_jT zS`!xD-NxzYDC#csUZxtM-X#~gV@F5tKD8BJ)pI2yFUOmaissR;Q30Qd!6Q@OQagLM z^;FP|IqraWH&czhsaRn1wK-hJbH|B<;$h=uX#1c z`M-mlQ7V10rRMkhgO}7*omW1RN7X!`lEr^w`U>phDS%)uZ7FCe%~qNz`%s{8d3IQa zL&Tc)_}T5cJ-QMvpFkgR6AurE8wM1R42b-IiFDc@r?hj{9)^Q(fdV$bRN`6yaCfCL90jy|Je=j+r@CE%O=7+i)s2@OL?}Q2O}$5t2)3b8$CU( z=bJzls@v$^Wo+5jdVhT$m3ORM$2%6!#5LULsL1xi#_n|AV17S0S@s7hr$|pHWpTT- zmok#@{N@|QDLNna#N4=+(aa`N09dxmWQMKK%k}GF6iZo*&linWc#!vHaJNe`F^zlY z2?}Nlk>dUwXiSQf>83xt(N_HX5Ua|OE9tw|Q^UEcNorD;VkO%9PA%(pSSwk#BIm58_~odyL4>*dTtAUpmtWWu-UEmc^vzA!ldAGZ5Ycev9e<{25 z;G#S~jM#&KvpBVIimmR|u)gp;qGf3un-dZ{bk9hMR^FEvfc!@u6api^S-SIML3VEC`>5#9YII-qZ3qXUz_)o$oS>MbNy8e*8GYuga8j_A6<1^iO*Ph^nUzF=Fs6dKBA?Ja3TGjn-8TM;c&Aa@^*x+ZR0R zf{%p0hp1~BWTc7}b2fTEps3)8EqgH$Da4j4f;+p1HM&Y0t1pAZSV}mA8>$F%3XRdY zv^P6V3c?Rhuzqf5UNIm@W9*-1?57&(8v_@_ri2C}0VZUO<)q?}TM!RQ2Yww;MJu`#iobTpGpJh5%t=ESyb+poX()>~`$UHAU$ zU;EUlUAt=1Rk7bhAsEes33J|rB&4BM>eNRBaBfks zAPV~|Y3>qA3Oa5W41A3^M2`UEcsehJ^xavg;bA_YSp~tF1baa5cRh0NjSuX@+p*VoVd;+{s|MPEy#yuOYjV7c9u}N7TPsVpAA>LuWz2`$F&e!o{t2 zW#^j1+%w1)z$d(|$>6N6gprrc$l3ArwZFKqAvYIjTb>KRvnJ7$Lp5i@82a^GUQH@Y z$%Uw#37v19kB_{cAhh9&`{AOwdOIjTS*_P{dm7jP>61KV=~o7R{- zr#6QI`nXk<8j40{A5y&iyTYolFai<7FI``O{pPWJKhJ0S*ygo4e=7ewv_!nll&w}9R_4a2p73xn(KtH{he>X< z`5!X`GX4S`kLK+*vNeS0TYTGg7jw^pfyua;ZTgz3?(G!?6}O%@H+MkbdyDVWDKxqV zQ+B2q<&PP03bFbB8o92Ped?+8DN-+AD%GT6^&)!85J0_z#ix^NbWzjo>%`CS;0j2` z=QudKuQ5`mKhkdYfNF2!+_qAS&h_i`s`*;JrgE+T)`MiNsy`o5(M}i8D;rbQnYtTyRpZhNo#cU4 zRpa`y!r8SdH)`Gfa=ZO5ZY&?cyW43mRI8y&quj-GuDtohGMDxWlvkC+z5V5i2sZLI zoR4kA&u?j#tni?|zENX8xREH2v&lHg{KLR+=X|->4!aDFSAiIpq^hLdb!fUgiqmSg zMz$p;T)iSyAeD&S;`?%g_J6;i?#+fT~=N1c0PmmtBJ`^Gf!4Hn&nX zR(OPK*zRm6dwbgGV6fEjdEt6;!mEBt=x3FnVBWk2LL|l)5Pp7@Fp0g>%mqRi}wntS}&WH;_RB>HiK-8KlEG+Ps+o;_$ZJBuYGn0{F9+eK) z?#I@7=O93hQa(mM$E?7!J-Y$AV5AIM2}1Rmv~a=$MsvV$&B6L|c%nmf6@gre0emrG zAPYVbxKT&&gdLa?m%im%g%A|IgdH9ddp*vlDAU~}>0iD{Yuv>?FOx$3huF>u)e>=I zuipClru%T&2aB$ei_YRjsRX*rN1 zKgozw%Eb`~LsdPI0ABaiMX}!u6;batMCFu06*xc(=%WSfwge_zz#v5P)9_pZj#`>u z`Dx&&N?O&G+4Xe#oxnMp@#{mtxi|?0_GvtAT8)y(b8_2*sM8@-2(U~l^};xfr`5(B zbBsl(Yw0CQQqXdx0Af)hB|*^Os#x!X5Z9P@y;OY}fXbS1WtMn77Jdp@Bq$gvBItTB zaQ5h+l^3tE(;UTsfYH_yu}L?xd)e0cYHH(544OTPoIYN_UTxZMmVuP={MF&Y!0A+U zT96Ej%u z1Rzmbxy@P{(9#axKM0NH!M)AeEkuG-w?W*kHJKsBTJ5DQLFQQTR}H;{0#Z33AZ-|m zGrD0_vVx4LGchWdiw+&qjFAoTfgGzr3nc)BWAV!Io*9?z+q_UP^ZlOUd@-Qn%qh2E z&h$M2+SGkwBxwCc9*2Ra%XjCt{A6v`rMYs;-F4*r8}kx_u70QW%P9Xz>CZvkIBqQl zeXgs=a?2Q4#S<;$G?BCH<`==X&O>B5ex+5#>fY=?7}XWyi>_f8_FJNrj!)=PVjdIvY0+#ZN+Am!|X`+WEZPLKWJ% z8c{C@tmS@W=3Fu!#qW(<42B$xy;w>iQ^~e(939R?7$Y?8CU>FNiVF$(b@JF)zQTKc zJ~5zH@$NkS8f7<^95%!`BL2*;C^?@zF)gN#xQ(#iYV)!IIz4XEl#B7?d=3VKKfYmG zM5&i`x*a5q7&t7gon5@1e3&E%@o30bRxc4GN|_(Dx=590D4(&U9p3B>Z|*qY_1Sb+ zVEo{~xhVTpZnl8yaE!^>T@S?S?3I3aufmPNuVwPa1ZW${N?VQqUg=)lK$CW?^BixE$zlCmw$V?DB=7wB;_l=30$j7lMeWL zLj5{8yX!BH%S0ousN?1_DO}vmD5%=eQnouDQYb9(PaLk@dotu?wl|kcgFlmH+v-zg zls@-y}=uQ5yw7|{V6?W%0ZFzOTVrqpPl}v2jh5ZO&Q%|_iXX`*|b!KI45EC>41!)VdEfTlT)R|I4 z4C&ijz=V3AiAU12vxWVbT6awQpZ#xGMF2d z{O}z{(rF`Z=q;=MMHDfsn7~@rNX34W~l z47fb|N|cVUf7GB3d=Wt8$n;G~&Vh>Pq`Sl4DQR%tUMTEP1b+b-Uk9xI3IO{!0$Xna z0Q&x}CpRJs65Sdph|{*FblC`ynzOGOVAc{4B_GJbi%33C|FjV6R{d7BxBLpCQl4B3Dj>wN&P0o`<)d8kKv{Idz{HU$Nq zl7+=j1=$u$gg1G%!CGN5-%kyU@b8U^^0mtFKI1TP0g*@ST}ia5N1)oIClcB%Ui82G zq`8i$e)&nFu_D3wbsR?I5>q?!UJ$)M1gTU{^j!y>Mg~U)%Jn~i<)NQGc!DEwKdy6E zeyGww5qQkbaZI8!daN^u_u&PYu?LD5gJ$2baiEm3ykjff9ME4)QL@3N&hOFA*=0=+ z&VfhbV1%k+4QZpTo}mp;Ee0cyLF&K~s~Lf>8S&cA-w$dI+Cvk?c=_L^y*wq*;5>xT zR96?b;dl`FK8y$KzkL=WpE;TeVjr$MfWcSNdwZtJ;;~Q3Bd6BDpc!l=fhr=aKD@*1 zy1MB0KAAoLb%(pIsFUUT=(%}QNsm*}Qfqrz*H++m=0H^`-o5d;hDkQ6wW1^RcCdv3Hw}+V=OT$;u50UoUZ1UOV8xyf(@5+bJW#wcdn|V@0Q97)!UPDj89)zbr?nSf4;+g&+liMXsPPQV&ESe7j~1D==_v; zIX$7jdwf_cOr8W89xyW;ZKf|Jd+;+e-yg0t6IW$)I}3RE-BQ;}u-$6R(kljN65?zz z@)eZjh=eU^z~fJCg^!|;K5lZHS*CyZ|62JxEyb_)%k9jHH}!JA&~x~^He3b#NRq3U z_9j2M0e=_de|*lM6R;w{v`(C%iz)v}YCwPSbX8vJaOyUEgo4@ZP%@zPG>u3F^*xsA zk+i?d_jLJ*cCE?Ipx$|8Zskw6e~Zh7R9|LuXM z&!*p#JR&03R-0$}#JdoMx?A#DWS}2}SEktNF=Du!9=p_c^m%MjO8hJQPw@e&uKgK` zlb1MldVNB@VajTyvayL(L%cQ4rmF(kdc zwtaocTr-Opu$>F}WV2F=qOyBw&0J{lP9Fa(QILIhr{bt^>{r=#kH62s%WdORc%$y!akZH1ti02Bir#MOU1IeYDaX=f1LU4*VZ`T!!2 zKv4_2$Q#QZ7J5kkX;!01YD6jBR2Jol0B{_Xd#>8tcJN?4Mg(IyB#1(yYfNsf&-aYo zr7-3{fl*dbzj}JsArNmKOvia(V5s>rE=sO%W-NC0$N)#VIormd0vzQ54tOM$0|Hfh zV1C`T{1`XqD{{!hh;bq2FCvV&gT^a7;b}rAnQL6Qv?V+A49-b}&$0Xti}xH;HQlVm z0p(5D3!oNJa2Acu2bj!>9G_2NnW)EJYXf%bi39^c`l3k+Q;2*n*(|wnXmlx9roq9P z`Vq@O$#EFSz<@x<5FYwW4WZP41Gt>SdXaDn0EKewZWtuVoDfQG87=mD9c3XS*Tn*Oz-?)7dZoE`R+R zE6)lcKc}GAl`g*@7klZ?`D?}IKhwD}W2SKSKKdXMap#)l7u4IUINTa3T}G8x7V3+K zne-c;-@^y#t1Pc3Cs*sul|Dyb=(DTzyB=j{)7%z*w$CZrZPi`e_Wi22iN?iMyvREv z@AUW#|6};H?D(KuW;Zg`4;eJ5-oHB|?pyqXpoS8Tf}F;~QuVPCPc4Wum43wU@anpy zvFG2^v~>+rec2?2^$NGZ7=D?{n8KaFUgGEDeA~nGPi_8UR|4s1e8@>s!{>zId#3`9+5eVun?Xa24Win=|l?bisz@VXFJk{6da@&{tgH*yNP$ zRp(_PJiP7}RvKj=NF(U{E-I-#nAo@8=ks*6F$F+x-j4X?6WnjRYW4Pk;8GJBT2xgu z2^cKYLCp-c@b1PdOw*|@2fnBtnLeth8@8E+!6T{bu#`1b_7=U;9#S6+H{R6#j*b<~O zguX{LnY)pt-zq1YFs&(|T6^ixw>9a8RWv|!0>=c<4 z4!>5*V{+@>M=K(Zn3#Tadb^3gMkmMG&CALl=};!mPr>ZAXXZ4q6BbitKrKj0ZG?2At$pXQagACYGC2J1;vZPD8++X_f5|6*~!CsFsl8c4F_!bdv!wuGYLFIBr80I78aTG)G z?Z5iC3h{hMau{IZx2xiEG?=(L`a}N!0j2h*m`D;(?eW5};V{c)IP{s0` zhMa`VoYrE1=a;H}+hG?Oclh*XRfNUQMj$|ej>Ll=w2U#6c0VrUSM0?X0)#uP9!I#8=4#C=ENc}AFIM!opk@_A^01CiKB#6VS) z=ZKZu!VCX@dr^E#n7Sy5~m@Eo0oF!IV!W2X)*iQnipF}7s@?HRH z<(^cm?YVUk`aVEe6oKyo#I*)uPOt)u5CPGE01SXbI*FpUC@@k)lyNUeZ$DN9J{g{k z1Tp~%5|oNik^!+y;~Ry!;7yiKE3DG*;c@saPhk$UfeJx|0nJPc>uaW0Bg^w2cRt8T zK^cPaFJC_T8?$CNZ<0I%DQCFf=MREft3yiTVlJuAiCHn(na79OK(bG3Aa5?o{ga#R zWs2t)BVoMD;Z)|6neJ?p=}}B(yoN>b|7!sZo2_@s=*w{`UR_LQhfenk_W60Wd54!O zwco5};((ggA#vBg!(nzkrNXIIJ(fJFY$CMGRf;a25UClIlt{TPD-8}g-$^&bxERvT zy4?p&w(#eQ8u4FafDOoR09BZy1$33E^kp^|A`jPM#kkV`&`^dfwnBZ_ za);`afGWQ&p*J6YMeobXdApOVIS+H+(e?Nh$HReCMCdm}`zr-`ujiWART!QA_M7yh zuhq$?3r^?3>il3V&}ykNv5ZOF-7nc)K&!L{z{}m4?qXt72ziP zdPWPA3cJ^>@2w8w2 zWRI0>eevMl89FJB2}1TH=nI$>kph&JX`#dph;PZr{B+ z2XnVV;9{P}sz1qRozuo{WU``R9P)**x|C6f#o4y9bH+Op_m5ISZMTn=(R5tN&qJ)3!QDbBTh_h69l^9Hb&k7V z??hw&QXYlQEEJH1fDav9LnZ3Yo88G+k!9KJ)D#AKxfN@C%vC8as)pq6qu;ue zHaadmKf8is*gT56w;C)o7Gg{6rLqVqn2cS6beNLk(LX2#$}@qfzHlO{y`~; z6mO49BHSH2v^B#{Hpb_!a&o&%b#gKWo%Y)|iNUqGk-Y7!xq+$j@+4IuwI)&_&mRB7 zfj<-=zr{zqr@5ABZ&e2@Wo^jg%W4P#4Z7gYs>$ms|BdHE$>J7>g^faZsfbZS3I&X1 zO3$iEQ8cY#Ww^{$q^Q|(+Sc*HB^kbhBYO2RSmPF<4^@WIjrA_0`G(b*&B0a#A3 z(EZT+uDG$FZZGBpUWLhv3yqNrDdh%@GYHM2j*B);gyzZ}n+sxfta1*OMf(eb@QZ_( zPf&6ZwBWQ_14!4P+sc1lXZ{86mb~8Xk)X|ZE+%RkLflz$%^wYPM;9z#~;a!Qc=<2ZOyJ@P@8nt&tnoiwueDj`1ghn~*@52q6?;X7od_ zhQf;_fIO@bDAQ3evP`q9GI~U!^HF5`tpFCFBhZ+OY*6Kzt(45)$ne=~-3s)>!(;UX zxLTP)2d5xAce$)C@xJ$3@@_Kx<$=V);3_E~QVv&%z5W@XLM#Ym;0~S6jkMrl@Ib4> z7pXbvF;)Q^KJKw(5129rC(H#G^MEB80?U{HO9itDa(%=f^`xPJvYp;0nnstI+pm@# z1t-2t=~=|2!IQu{c1+4gU@#7p9RZJzgCucA5-_J(-p2!#r_5J8r;TU2V3$sg6b`l+$Z5_`4q)E#~1Kky=+137XdlmvXFL z8FG?tbWZ9jRkCM|$<>p)DMe-mzl#Hjc^fu{8tHwhqX@8h`23Zpl|byS3XvB*9Z{W* z7;SakIT5F5vzINm{Z|;=&F)D20tTNx`Hn2*+L9gaWAvqhH(|%1U)v*k;(p@4T@cIT zPvW2E!Myb+d6H;~^k&KbHAM6yNHvKO@f;lkV`K7|6Ho@aBTA!Y(tTfvdt`Of)%oaZ z@I!uMe**God0(m@UPd1MdeOGTt9s}rC|D0nIO49zg=nvm58yPBur)hA1pyyWIu8wh zsK+8eeE^LZr!o^wSoBH%=xW@gX?ZMj=Ms|`*G@aRPLZA8t7$b%^`X?SO?KCEVpp0- z?ub;EOJRL(Yzy(!=rT6z<2B-VeBhp#pII*8*-P}xd@EDf{c<%boSqvIb>EL^Quy|E zbcG%px)mDLeyb}pvEek^09Ah0EuuKm*5e!VAp3g1c(AHUCg>#Cb9m4~jYiOT*;cRo zn2^s@DNygKs9HRO7rUVD=h*VND0}{Pi96U&h+3JLnE2`MpGBf{C$A37YRe^9$xW~2 ztC!(*nf-436n1&r)YL?G7ivAY@YmPX`|EQ?8gXo{ylRuz`TlxFj)FF&g3@+o4Mq`r znN;s7WgS?vm6)+X-n#}f6WpgdqGT*pc)lU%)F4?_*{yB8EM%O@pC@X_7e)}!A{+J-E zx9O@!ymPSwJXmj?k#u?rbO&tk-UAH%+<#^ej?TN(9+j+x`$T3TT0i_!b~6j65Z)ux8lN{p_!K zx+%QGZ1@`Xa+6QJ7BwTi2*9lVu2(9Gf#3TLW!UPrnGhShJ+s>tL5RT5)_-yFdMjJ-E@yG+OaZy*%ZEQud;Uus3?B>EXzpjgObLkoX^ItjazNbH zQtO|9`1iB+6*0fPVU?y&GV{ahyT>;BM!>KmG}9cb=sE_<+(9|Ext>LYu4cqk`sezC z&B_}_!X}cK%ciuOEk|!j&%t!yST5vdUTDO&YT&k-Xc)KFngq{>Ay!Y)Y$&gB^Yb#T z1NpgOej!*m3qUp+5}i;c4w`br3Vef4!3Bq~#aZqk(8_0<+Ho9kz!AtY5K z2|Cu+6)D-*F%GdR@TKan;cXC>))Ky$Hj&L?0l3)C(bV%)|Bw~+)1`s|ue+50**hco zGXD>vb7BVjtF^3zyMz5ObPDyI-W>v3rUifh>$I(#D{7gw-=XiK`fU>9#KJ-i@yUit z>EqO&4}0A>#N!MtU6wvWZ{zcRr1k7|gyFXlmj~tt8ym?@N4@p1&2cQF#ZIQM_mQg{ zrPITe&+t{%KoLThvOmCe7ke@PCw z#}-<#TSrN@ByFIXNl$J$#K=EpD1=gz#;@|QXie5U2#v6;hX$d3Aqng2CHP$IzhoY1 z8isi~eH>(!$v01C((%4hF`xAu-I*U%=?l5Mh>bobpz3?O;}`q+h&vb3(3f;dqLY+K zxqWH^ITsWcUUWYe1jX{zoj$!Adp@P4>(@9_GK-29mu$@O6fn)}ON+i(RP1q5+?uPm z9uFOPnk4&yi(e|va*aR5^6X7OM3m@-Pdq#I1lD1}p$xeg`Mz$|PmT3EAX)n9AtPEddr z;PjkqPLG*)JNFr&K0zqB+I+ZpAoPTYXj)ZJ@Rs#(lN()w(bob0f#$QIVK@4&os_#_ z>MPTx?_{s_`^G}$uP8_adGGInVrkGu$?zjKmmkO?uF@jRUwe6Qms%Wyi_MV6-_F#g zZ&lHAaTg%VYB0K>Chciw*z{e;rF1?PZHu{}rbfBbf6}$|{Q}W>HQ^_#T-WUK@S=2L zn`>!@^)SlLm2Q)xaOaE5{^f*jcy(r%J2~^2(M8_MA5s^0JLJteGrMWWJ4b^6K9MCK zR|j(Q6Na%%<9_82*ev6bf8TBkNaF{bVm7a*&SkjvuO^sf6cwvBo7oRiLt-Pn4d49x z)?jfN>M@3%hX)6t-`?Il;zrDp{MMSA=Wfu{`i^I;trZ$`JuOJ}jHSP)#vjrUGF_l8 z&c9Ej@*3M};gjhaIBw^BEbmZg02c((Rh;h4jNGM~48J>C9UUMR4LZ_d#S9qtV_gt_ zKkj~e*ej3d&-44(z50aSI!1r@CSR^hJZJ5Wm68571JcjY1`_?2FE86}7Wr=ui=s>V zjl$JKB&E{0UZ*O@#U9X$_eGHLMH18x27U-;$qshJ27Z(;0#`%j35DCzf*FJeL3Ttq zI|QyeV2Awj6~x>vz4wHU7?6M=A_tEa#u7W~3DCL@j9?EytLrJl2-5fl6(kGJGzk67 z!41&HQZ@qFU8~3DtD~`%20UjDR92Gv=ceb3+)Bq+avXD|IxLDrb zLKQ9Im*aXcDXmD?7%V-8AtE^mdprh|P;*}h>Na7o)PF7C~%P+Al zh!v;SQ~j(a;@p(tmu$W38NJTpiFKPnJ_vHHwWeo9qZBW&ns&NfGk3l_v}y}~d?U~+ zmw=$2PIJL2RZunb!{4gA(v&d!y0!ZqgXg5!xc8&`jAXT1>w9QQO%F;(cye6FuXeNK zxyP5wRIV9E|2rh65i;{JOia$g)Ksxd32NR1FPW0~V@d%&C6l=He;wlj+ImYojbPZv zbaM2R#t6{E9iw6!0zOSs%r`g0(gTBTw}8gr5TuEgdg`k4t@OA%I@6^tZeAZ3f=A0s z2Odq&bLZ8nhAqU~`pNRb40y45JFAsIJGhWE;Mw6RR2d`=%=WcJFl`Kc$VHpRv_S`qkd8%_=9`iLPd1rG4UVkF(oGn{S~ApF*0-x9_{D z5!iz-gHMV?f=(7ULBJu&v_XS8|8v5}G1S^X>x8no5my3Wc{d*&hup%Chx{(D{QQ-l z);@NXO*j8Mc2R}@C4bha`ybsBpG~B5f7Csm&!F5~7!?>)Ybr*(OtLhoRrrry({_B& zzTM=0gpNka<+DxGEB{o+Q%5HwyM6qY8|jiBU-2m?-Vwt|_qlO(r8DE3(3Jn;xONx{eM>wo@T#w%X!p21Azhq|dE9AavwVOV``9(a& zyVoSb%*BQl2MBJ&=6kKwZ!L5@GYV7Rz4v+5e}104k+!{+QEoAQkcoBuT=XOa&73#Y zwa(gMyxmu8jDv-!sWoODF9^I|k56hc`iTDgvYzQ;U`(WRzm3xaDSk0oYQU*cNEJ2e z4-ljGNvgEFO$I|hL5ZV!UmH-q)-gA9*oNlIUcSZ8zQ#qR{f05IS8ES8Z}mU%n7!QV zcrRZmK38aod0Ty)m8!Js4-Iy@&ZVbF1k<@ou5y;^2W35DW5|5xq7|A#3^CrRm9mIV zOJ_V&THIr_nwdwkG&8uavX^0jo_o=pUfWg=^DIf*#)n*@H7n;2rz7PJ;;?rYFKNRfniTsF7!u@s;wZ5CA&?8gEB&Gz(HunLPW2BHHVY}?N$Zc;0AKM^a#?k^pasOFAd^7gG>~bdmG)x=Y#2?-B>=P5 zz?2gNj3j<5M=rc?P@ZEFM%ajHR4Ia#0yU+Mpkf*G%Arz@MMw$Azw80AW6>@D?Fi$? zpy(CxbD(&tlwOMDss^k=ApC;3#FC2#Q>CdA$>l)IN!J}aYNF3U^62RT4?Xd`Fk)X9 z4FkEC7YE@uL}gh?^?N`vD#BLAg5u-hVK5-;L!SP(yDQ&h-)~7h7&{oWrKZ<;vKln` zwcpQHnQ5n}mY$ocj7^Yt+KbKCkh zSsqQM`>48WnHSje>%X0^04Ci~a4>OZ?0sXJ=m@Qs=s|5AQq>`6ej%0WgM)#Gfu&|H zZiOA<^)V9V3};11fPA2PZsr{6O8Q%}*(2@uA6h&BwqH&Ap-(G%g^u6so!SjNVpQ! zMxHXB>i*g1w#Bc-3l3oJzKkItJfGEqhK7H$215MBeSSI~Jb$w4!y58yWjPhzpI2RA zy1V(g98D}n6w}d-DP?&2?K+N}{Rh%D6EyS`w=zF3=Z=(Y?6dgRcMfZVMa5Q+F8@;? zO8k;4b!E$>0`+ukY=Sa`C3J#6od%ZGl?$^O8p0J_25a;T%B|L;VyS6mi~0gSGyDPq z>mBaadG_wzJFl2y%~pMqIxaQiy6e<=sJg$(L*)Ldo|xaO5@5k#2cn;TcD{}!RA14d zx_SR*AZ71S`&u&mbOZL-77@CLdt1L!!>7N+^N5bO&=E^9FW2>s#q5ukD`sICFm#s~ zb{jQqt*UGsbVWAr|BAz?emz@q`-Q0Xt$8fwq0=ePDqwq2(6l&@d@|HfSQQFR(Dpty zuuHbSNcSzY@y^G_tEwGKriJ5mBN9xfudkivS9VO)y>d- z!i9#cjpn<3(m!c`T#{LOJ*l~QeI{0WgT~SDm9s{O=ViCs{gI^E^uo9%u_ihv=e&!k zV`L#p&oHXd9OXm@-NJ4mFE%c>e+ApgF_(-=czidZkf|%(mgnpGXSuP+el8{I%jJIG zTSP&*huO1+O|~DdCp6!NG+Rf+49*4VAGx1liIFbH`MZ8b@i8-A-M>DZRiAIQKOHoN z%cq;>oBGw&H~)h!(QVckDL2EX#m{os>LQ-yrG#o0ZaLwu^Wb>7IZ>Nir{SEbcCl1| zrQ7oSX=h0CWe>kXMl-u7G4sa-bbmyR*+2M9t+mjOiTCkn{HhxEKt~|?Nq&x{^!7&Z zHJV5MbKwu>!2f~ui-eNHFx=+qXeYv$P+fSy1ETi(B8hRh=@)&(X~}MG!=Y}%Ap~AO zGE2y-!m`X6?M_k+x=#7pTL1^n6AsQ(rXC7` zu-p*^?hjatY8|#1>t)F-=by};Kqv zbqgV26B7{W{y@TK!(&7u5Vi5wWL~F$mX}yW#cz8VaDxpZgHtXcOxh6t;WPDsFlw+A zIA10T7D8d-JExeF3wX4POh`dX06}hV46$EMdpEkTIyqX7>+n@nI%1B!J-}kNr$@Xe zW?xK~6~WkAD1@#Bjr>RiWI?d{@7FdnMVeJLx@e0clKzDA@kwq7UOrY|136smU5|8R zU<@84kd<&%ChZ2-r6+wq2*k!Ldk(D8xccH)y)dv~;Qf%md;ZrlA+x;w%`Avo5t2|8 zmR=DyK5Q;TgAObr1y(8u*&7^zAQGM~VMYL}&on4y42m`e8i54DnF+DLmWsv`&I)=0 z4~{DZ4h0Vi4^+n>Jg-dmPX(c5nS*7Q#xqXf8sn}b?1W#^IihzHX0ivwS#%F}!43%~Wtlf96UYs)AW zN+vN&xkJ(x+TO>%lai)0dM`4=2a3NwoTA~M;^O14a@G0i>Z(iH|GoX*%lcBZQonYk zm|@0utxNg{GASEn99#O?k@CHx_Eg#?NA{b*pO8%v++^%TS!pDa+&U|U)maeT8`<^u z{Q6_;_)&V{bw_Y7uV@(c%8F`#YpFXZHCai^;>d!;JGS$vXKcMe_8f+A#Kd;7EaPp z&m$Ip|I7Gc9Q{7jO1M~drXkc1i;}E**;OMrL8n5T+O23>?Q1r+5f@>b(TuK}(xOam zhNuyx(S5z`DET$5tZh;fq!)qr-}_9!SW0($%1S%k7? z*Xk~3e%J$AcQ9wr$xG+c1zh}Ot#=rn6rc4d>=>O`|B{;&9a1BCx8G@HeFf2lk|cPTB?)fvPQ@sfxz_S2 z5F{jYGY{dH*gpiUh??tXjM?LBm?S3mFX=U3}?O<_s5d~Nkwoz20pKhGOkymD@KZ>oL_!Fy!<8l3lwjp;ow+wJ$kKF zZ&tFWm3;96Duk2rcrG53wvVT<<@fLZjUUP03zaOe*CpT;6f)3maCrLal-(Z60wgGc zg9>MY);|hECLbbm7lA_#5xk(yA3F2&IUBB1vS>S5LkwpEzOnY{$_CsF7(65_j*b9e zc%pi-fhYtgECic$b_fbp4vga4HsaWJI!1Z1Q32ntPX%oA?9_oBaZ+s8iu9O6WRF3S z#2f^SS$(!(!(G47TtlZo3L%Kap^DXF!jr<$qWG4gL8+o|t716Pg3=$6LMm=FkwV^W zLg-GG{tZ^D{0mV2CqkJFP8$zSn+#rx!9Oh%I4>tkg&6=+rPqr>SO~)Nj6uWwCUms2 z4`5#pkg(b&`<9a_3u)(uz!Iyc43aZiv<8IjKoqz{AcXFq&}2ezgcB;S6G7};9wIO? zMeCNe)7O+%iOlMW{81%SmK4EFC+HJw%-PQEDQW>fJ%nJ;!Zm7X0n3&OL@Na2(8F1l zu!W1=Ln{CPWJE=Bg204n!MRkyK;_Q{0kQ83r-A_ZP7$K0gYG)}2k@Oa2!Kr*r0xr+ z?AV(w(HmY5I+mbN!7(d%Ah^(R1wufpxD3+>DLMV<(>tJJ0rdXE2rylw-l}NYgjyEIULs;m_OOumeIE?pWt_BJe%X9`7?!tYawvv^GKOxQ|N*jTC!l1yTnAcTAS%Yiz0waXAu_ z{+#>`8c=SM%&yCmYBPR%}4Vx+M3?^Q!CSi)Jm0mxu?xTw-8=e%m>#6(96OjH>*5`ItR--OE zba&V&z3A%9rqEyw=etd?um96V`>69;?DCI^^5W|6|J`=xs6jKjwhx)4Iwna|pu^M2 zR%iFY=h<7Df;5*Cg?}U(b%mlb^Ot!ZP<)s2{pr+t@@hk{_4ixhyTV0T(r;}IT zc-B;zgF~0=`S;PfKzg5f;W8yUdcK?e@jsZ2*yhFA1~kzk8_~4 zW}2k0)0yFVsRv}ln>+S_kilbEYScv(MUo0+%IBgYPh3&);6Oty%d+xHPHK&W8oP4}r0ZlY}fueXv%Gcng7svd%z2)MB6 zLFqvoSSsXwh+owWpIS?~e$|hdJA~fySBZ9P7E_rx*OJvjf?127Fa0m^M`P^lY+ra^ zJE6Uax+p6sZYgws{O+KH4K0Ge)n^s(d|0Zt&NdeXV3%!nVXk#^ ztMj6f#YT<9s^f?V%8Ik*5b%NL=f)^@y1$UGQUB-d?nf!TW+n-@qs(qTd*Y{xS@6wU zZLogo*kLWE&?O$xKXR(|-)dgvNj%P4m24FBd61d;hf3KMS6h|IwHCt!Zi^*W>Kb>`LLS?$OuGt&7@UK3c-g|=T5WEhZ}r&&I0kCo1 zgxhEh6(lW%)dwz6QGya;pv~Cn2C{wT8`dj(V)QQ!Fzkt)Nqa0dA;49x)jHiQ5;;_1 z5UdOPx;$fkJUHJJ2^1ASmrOo|vpi`Xhssjp9zyb)VZqN=h9n}`#XvL1@n-P#oe zY=Uxwh%6m=u_M3=LgqJ=sshAF+t0FjbOO$8f=5Oj9LG#Tv1)Ko$xXGCdrp)DF8{&dPB|(nh~pt5hr_2VL{J7uL-Sg>r$}u5C~g3sP7?o zwhcsj1Q3xaaBy9)Xuha`UnDsgK4A0@5K^be2)%1b;6hV`o|^`M{k#96=_;GrV7DL= zAb4;s5TLlb6WqPH7I$}dX>q4`f#O!&p+KRyySo)A?%cc|?##juNG8vj-Lq#G!n6m= za091&f{uX_;u)xSbi@H+%!bX;L-eB>cM~VW9@Z@0fgL49R6H{kw zb?0OtU`ifn?hGtQ+cI^otHd4W4;Bd@>mtLz35#&Pf7g|xf2iEs`o7i`4raoDA|x(t zfX3g2{$WSmxnd6_TLgl%`C(*7%E!vHXFAhAB)WQSP|zU2v%nV_pjk%X`a3VLqEIpb zs2Bi(5y5GRp{(=>9VoDjEO4kSa3mj*NU8y-U?kD>;AXJr5#a}vT(e)`as|JmYc)#u zShR3DDtK5lM8quMSutrS9hw0(3YZI#T>#NEmg&KT;j)me01rD6r4#b&-hLX9a?hu| zHm0j9WN0@8LIG1AjTAjhVlIAvT>>|GU^MWfl{#%~wu@Qne4a3K+%CSV@1s$H_yhF& zIyaW_=`9qRDtLKEf%f{1{7~AZuQfD_e0rMsW?VCq%dS`rxET1d7CN{(!=r7l(|xjX z3{S9Fqf>XjGxJ!PS7V&^=BxjELB=kF)i1OD^XvG}&`>IE<@`7Lv2A;mOXS(i)YPfi ztX;0GSs6P~WOF4Aq&xOAXi&niZIdUNXrTWm^_F-CQz|$d!GQ?RXeYc(z6xW}{0vMZ zSD#aDnLXCGh2(opm9{V*XNAK_Ue7|hm%eeNwU?}GdaLA_8?y`Ww8h+ylW%kFJBDqvNYoxDw734k{x1b80u$s{g(3@^nMb!*V#)8>U-xbm z79Bh$PpVK4n5Lkggm`v-TJ2ZNuPw*GT+RT)_Q{i+`4ddUKnPF~uKDT3=#24HI;&7PPpW!l zqfvC)TFkQWP#H(}@Q_vyCj9oppLZ;KsOHHZ&#Uw#{&jj>X5uP$zj5ar^_}R0-{V=1 z$fl0pR`IFoAF$9b{6a;;q>&@K+!_skT8Ch62(RmwEK9irlA|KUZ~sHSkJaaXnm5#L zOj@~J(?6}($`-7CHkf_T+Z1CZ>u-4;#UR_vYkOVZsxf>bq}x;u8lz9tvm-O>ITtjg zH*ETHk~}4)(czT;G?WS$FKmohJKpi{vHsatcRj?k8S7Na$6mYH!Tfh-a1A|J5W|c5 zG$`k9wn+i^XiwG-Z{SgH@8^m$nG)3g!JbuEUPS{j60pt+7l(qS!g2*+bN#41~YA(w;R z)-@I0&BXUyF$3nIvj>+-!<8u$=x<#=xzjxcjhgvQUS*@TBg4s_Y3xsr{`<}L*-K+% zS%lk}8RoI2eCTWoT55e!Lj|#Kjzg&Icv9O;g z`?Hp)<#vAP#vUMYK5KJzDWW!+x88DhGSA2XW+|)=rS*KXd&wlzRwlpB7WM0XGv7c= zuUU?`ozV}#r&d|~4IcbbqyiUB_OJTc-Fkg{^y-(PlV?V1o-EMw&hX{0>1gZcUDHG8 z#q#@VgTApFoo#K0$LLdj;D^UiEYwc1fonj0BBm)UxuicUh}Y;s7O=tm{Op|-(aoaP<%>3p zecp-`o;XAet3ZC)Se2n9ZWt0nHQqX?j7Z3W6bd0xgAt>Hp{>WK)0Bs3(iP0>ezDpE38w3{Z&mrHG5fSEYehJ@8^93SKzPR;x!l(uLzQfMW

|inoYF+UKp1bN{10;B9GCR+R0DL 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

>%++1e# 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%0DC@gWF5n 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 Re;oKvSwU4kN7mT?{{oj|Xy^a{ literal 154012 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 pI&L) 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 z%0D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 diff --git a/tests/screenshot-fog-exp2.png b/tests/screenshot-fog-exp2.png index cd5e6a63651769aee0ba6822af706f995a3e8e89..4737a536ceceeccf579d312dfe679d75203195d2 100644 GIT binary patch literal 122164 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 literal 119847 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

MQa2tdS0HKe|p~P52`7uzOXnhW8Ht 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

9XjP3KSuclzMMi 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

0D0Lx+GFDuKvI0 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

|=(i<+)-Bn5+ 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 literal 247928 zcmce-byQSQ+cykKOG`^gNlL3U(jna-C0)`bAcJ&wcOzW_(jeU+0wN4UcS^?$@AiJ* zXRZ5L>-+m#i&+fJVK{U4wXf?}CtOuo76*$03keAcM_x`!9SP}?KN1r13I-bZ&8z99 z4J4%JNb*wRnqFB49iNgI!nKww(#s9#TqdKUUeUY2u0Buxsc7}_mdP;uX)XOT>UC|A zUJ=0$4Ei8^{Yr5R{CZ@wQ8a3kTKwnOUcJ|+*so1quZMoDt&6Vv^qa@pvUP7;jE=tb zS-XGn*q@j7xhclw`WWlA2@D(LiiyniUSumLDio^{p&HJIOVRDL zD$~WkRU@K{$4Ie>&PTF$kr@kkr&l*srrhUuoY22LS*Rwy>se}j_)xx~Bq1-nIFMqDmEt0k!vFj=!ruagTazY*ppPej*#$)nn-D7)BeYkFPAy@WsGhx$87mduau={# z|D+3)kcg27)%i)OY?%oCe3r>vDA_En%*P<3XByT@Wp1Q=gLiK8I@T{IhA!s6CL`;& zNY)7yO_NWNN2&4Xl{b_*(U^?UJ~L0r3S>&yj=YmFuZ1Vqg{^qpWGoEsb0af$1a zF?d(x7p;^uM;a{2n3!~<{Q>><6W%SRqS?+KE+h6ljLC6nQ6*z9T<1n{W=^AS++^rT zwl{XtX4d}|n-!DJ*AzQN8I2e`l^yq6#Zp)GGQJiAWUbkF26DZW@P1Rdgdhfa^9DT> z@wX|5$Gfe{%tR6jj8mHAqkOfBkEK)O2A=j6awmOLoEZ6I%4OF2V~BtZl#b#H`C|37 z5_!?w(pqBw8~YgF*MlPS$0ceNGnH@1a6%3~YA?ATV&REhBh~objDETpH6D1se2><7 zKiqtJVGP&uh5K|y;Q2y*Zpt7hSKq%o1=GFLWMj15WSw>jGUZT_nHkO?sn1|wSeED6lZ*((N1;*g3(dmD z$2g$FAV{dgAO4L?{!&hqR2KiJo91L4FX$Bgh`}zT7Mmu7gnp1chqwXjDlEA z9{)1*A!|Q&dbtUr=~?{zxVOwie|QwxQ=E(kEg+YjCf^T!98ZIe^PhIJ`{CE%P9wL> z=YR$MxWj4|JUp8iyfpjjDavY=rqT_4jrwTh;5q*ZFY%69s}4~Uu8cUj3ckh9GJ)hX zrvXM*Lzaz$pxaEF4B7KoHW;~pezUO4EgO0V_NnXP9(lG*HheZgp+%98@Lwy7YAmJ3$1qG{9q>F(p;(TAP&Y-IpHfDRh(TULjR;)cI_oqq_JHytZZ~43WNtnj z#+Qj<{qh4(&D|bLH?{dCFvQC-$Q7$s$Ej-(8_shpB}#O@ofuJPNglRx6+Z6{)Ep%i zta_a|eO-d&yMt_WwWo7hGH5h7qtc#y<=3BjrbKg(1iJ}$+H7<%`AP&{VGRw)F6yii`{9IA> z#4P;-PwPwkb%KYNk5r}b;eDn}C%hL(A$#Y1NZ6shLA@U&^6}&4vg8;f7zj^M z^8PgvzkII+_o?1oYD+6=zgiUw7ezC_;DLLr*;9g+tt55VD6L)fL&agOwqLhqB^5Zm zr$I7>!}h|(Gqz9V<=k2&Z#%dPdy+tT*w$?wY$WY^{V?aVcsBPIIbS=ASgWVmi*a0RrZu=zQ;Q5GsAChAOVzZ9d%33g zP_^WrMhD5gFx|-rNJyC?nk7~|wZ_(J60$9^DPWFZW7jB45|S7<=OK!e2GgfeA=#y_ z@9`D%*aImPjtr{#Kg~nLORVP81)JAmYG=Hs7~Dhj@AB1&j_9SDAL8LA^!}u@Gk4PO z@?rh{=9z)8=LF}&PtLzFrOOlhMpuGHe-l!ju0%N3uCLSjO?&KL7cSVVvy*TuJvE%4 z<{O8Xvy?9)|I!+#e!MRT`npZVBC^{+SD7Z(X#Eslv;=KvH4D*Sy$!brnGS_A-M2cg z!2G059UMv9X;t7OWME$kr<2A&J7S=_RZaAhSmXF&g3)u_8z;?UL-3M{j__g?@Ad>$ zT8cZ&MusceP*FsVXB8IFHKmP#h9P@z&Kt0ZI+jkSE%O_zdq^8aCQRldG8tB|9P1Wo zC`SAL>KCdxlp49YYMEK8nUrc&hZ=h|EFL6ZZ(b7&Gw2*~86C_}DV8;(V-K34^&%f? z2X4A47aB08D`-?STQ>=ww?5X7#?97F1*@HMhB|r^u;4bf+Cx1ki~g@)__}qwaGMEI zI?XSz%qoP(J$LyI>7MSP&792uXh27KGEK#5C}GUD&U9*@mr5l)YJl>H1^|lCJM^W` z^X@UYxamrk=YpR#_5RH;P#xNKsui!~7}U*qQiRY*P>|&l#lWR6Q@2FQmMfi28G%OTpvc^wtL+96hwLpKGF<7;t zAiujH3t_w0oISz_>HTnZW7VMN(n4t?PnY^?n2ds4vT)&Re%YmNd)%l7D-jqW) z>2-^FaXg5i=Ai7x;*-CJ0ymdY>Q>6tqEb8~DD*r+5&`;lQl4DJ`i{JmQ8s+G=iXG_ zP~3|CgnqA>N^7DBi&m)UxMikt#k+=OQ|?ShCCZPumv1VY+Wf6b2aj?G;nYm%cjrD- zKUu=T$UrQMf-0Cb9rm_~6xGrOBVAF(46Q@7VK@oYl8bf8FKsyeGv92DrADYbj>2s?9Bdf%ctEk$HqdnPQcCG1Pv# z^3Be-KVW=O`+=cx6OnqF!s$c*uO56?INLKFA9jp4&>!|ZPwcv`8?tgAkV#1=d-_qg zCv(mYbFbeC!(&RlW}Yn%RT#rdQ{~mMBDNW=YwSC%vzp-OaERRF4AVu!U0d-MsA_W+;k6FkP`kylqQ> zjrjpo!cd&ZL#>ER!YS3HJ2VF?A?)rH9VNgIndL}Q1w|f=o&q|AiN7JJ3Y4K8wR%gW zQ4A9c)5{$l3<4}^jBq;f52@|Mw3!4$>2&=DL0K&Lk>NoS0gD%rgNaAVc}z$m-sd}~ zPx?ly1E~=k%pRngcWkzB#>V9=b=RPrDgt@i1C#;`wQ%(+X~*v-uZ?H+aljH{%SZ}B zISQx4+K&BbdwWpyw9B;j&%GZH6ast@aO(5}>~vvDZt56-`~UG5gE4*q(T%-ijg&}o zxN>F%)8MxZ_qA!V_0_P%b+gMiKFx=Z_R3`%mQ5P;XO1s-nuI`qP~}Lmo_khJV9rNY zZ{#4?mjJ3`YX)`JC0e^eiGh$dcd~H5RcOKu8+q9L=PL-f)aB(;bOeN$izud+Zu7et zjXcaY>2l0b2`PpIUu`H-ELx6COZT@iy4?gndd`~nQzep|p_XrAbtunMBOlZJoeI1< z3z-)inK||fsJSWU+%7zZa6;hkMF(Q(7-=JXN36T3H6R+-eT(&nSUS@czBHqlFId)Pi;+G{J3+csw0 zCQ@39wCFZuTpo9X3W;k1oL9nCAiYY+1vNW!tkz#r&D0b&e56m8=)u}`hscZ1$z>u z8G|odZh@5OHS|$gxM}R8eFYx~PnpRj>2n(n99HI5o-=9yuE8hm-e#L(@qr92#Uj6a z?<4(+Cabg{V}6l^n^qxcycL>dI(FFJpJOiZKK+{pbIrcw#y7+&XZbaEww-XZ$&=l# zQ+dDJK}gcW$@?y3(n;qY*Q{KzNms}Ty6@tkSdUPSZ-A`vouJX}TI$J4AfB_Y?}&Ft z3DiM@nP`bD!~XR+a z-=UqaJM|twcPt-ve&X3P;@zz*cf|=ZV}7SZ{sMRi%jFMKj`+ivC%QaSbS7<)a8_$2EtYAREnTFVI>h-66WX|K zY}0$0g54%kk|@wS9c9@zIlF)La}PIskTIf|2abrFHc>2{wdh!y`gqku)k56s7pu@R z>M78_v+-oA)pM-vT39dU{FGLj)weTzi(2;9WUUIt1`ID5Sx8)xMlFD< zv0y*im`_{q&Vog?X zf2<1C@rc)Nag>nLQC_yl;HzQNhWV|XBI)t2M0ELTGuT0i{FSLq_$l3Kj4!QDp9G9@ z+*5-g@PBCocCibNv=$~Nfp6#Yy6;jP#wGJKJlPy+ik5)#S7#Y*98scqvpY z7tQbTX0o%S?g7>$st*;7*A1{OR&Ja9Aeb|4|1Euzr$OtzPqA9)4lP5+ZDWl}RXU8Ak`-FS$78ykWin5_mWTslZh8p(Te5;JD5{_F zzhtZ%ixRpWw{mS-)S7{M5nCg(;u2k0NFUNm+ix0g|2on_&jEd^p52plid=fTL4Z%1F+0J5w~C)iv6Oxf zMZt=PJRzKHQ~is6qoOcLzEOp0l{PaG7Fme+>r81atpM>aNeuB}vhs|DC;_5tYBU)e z^khr@+oYJ0ZF0k;aTs?eH*l1I52gfPtgS1qwgpo?3UC^Swxxb8&MT0@~(i%V*>wH9PgORNV<3AU};1*ZUkw zCNS_Rxysg0uL|b9ZU8d?L zWEb`mwUwE8zD@6JAic9B;R*jc{@oBZ^-yXd7T*rsL!RxUr2xr%c#)JPh zViB@=v;7bk8Tn+QW#u01`BfO4gvR?}{_l0}9goq?5Pkbe^}a!u2dR#7P5pxXjz=32 z7OIZFVByCZzUH;p+Y!1-YHC00q3MdSB|SGzi2cG1P=bc1iUfFVTlR@_)=m4JCdm$n4uo0chW(5cmki$%hGZUyJ8J<-!c#} zB;pbfcn-h+0Csx{OPm}kz5{{(mps_(0CQ6t(voc{Y<-pc-%Yj!e#uz&ePSyJGnQ|?D93b;-IVGI7gL! zq)dx)qiQ~E&&Ahk%!&UwWwdI|ob{^=%~1>QL);FdSna|?tnM4Pf$3Gznc*;lIdj3f zXxfU+tl_-LRmwDTfzA>q_XqDsF|yMiEE2G9YAxok5uc?QDj-_E8I4D$6# zREtw)R_IgQ!9ggCIF&5rnV+`9azOKqfn+<^KJ8Bc;#1!mgQ>G8ioJ!RZ8EFRK92F< za-Gv7u?LQvo1xH~>aNSf`wp5LzAl8T*yvdx`?oKl;Zn|E$ek9#qYjQOrROSl#|K;!DMGu_hFL zfAt6qp|n<*eP(p4PD9W;*Lox>vmpz}3o%CnkJYQ4>B7PP4E-xrt!&%I5!=SKm6h&^ z$o)&}H;Z7G<6g$-a$f1x;PMM}j+pb68rsb`UJUJ$B>Sc-cZ^%sZEfrX8P&+@E6+GI z?YMjYVtsYz+$`HAlsB{Y^P?yEWhmv*v8%UBp9^>4{Kp2Pg&Y5w={Ubqr83<-P3Eb6 z4;#Kc?7PpmhC(W}`qlW6GP*Cffyk>kASrnG;%p&EioM6QX=RzTGmNd&N^wv_CXn`2 zH>%&hC+|(s%-+-=G`iAazIdlJDPd({>SiJTGNN#=0Q0qyRoZmL0vn2S#gIx1^`Y&i z7EeKP!-njxh&>ANgwsRRxT-eodAF#;>-k}rYu5LY53zBs+H>QC?4<9qD5+0>?;DNI z`_Ah8t%9AaiC%n$^^4txca3);l8x8aTyxj&@6onNNr4)$y>>6)cV-M1q`6tS^V(1C z3=gI8^0%|n;TI8I-AlH^zJ09F50FQ^X`NiY>T{pSr@x&akJd-EAKtUn2hfe0yFsb7 z98s&xa#%LbnClfeGW&Uy__T_(SrVfLzv{64Vzpr1Ojxwg)Jk^Zk1Db0Tl3iQ;31I3 ze-uWG{IWxmt}_zGxpIa%lt9A*o_6(S`ys=QIMTn#v1H099VSeB4C_B?r549_Q27x| zhY~0*^&!>wwZt6uA2fWZEG?;ovTRt8v<{L?0eADvKIYqhbKw5bN&S9a=)*)!$0C(}G)cp7)~0D}zi+P>pVezaZmP-M=DS}JTCBl5y~}YIrsKP(>7SF$ zn)2qK;m0!VerpBlA6f@(FCxsl5iFUxsNrw=-=@JG7ovBWIHBl1fDJldjIe-(UU2*2 z#s6dEcm9uP?_}?)AC?{FJk+4CNHrSJQp9kP;~B30c6gOG`9f}(uNN_NWRPQ!zj#!a zrW8I{pg8yx2)={zV{V)yFWl-SBc`H9EH=MNZ+tGMuVSPJpVg_|` z+}>&sZ~@Exh>wp-T3fD^p~!qM_Hag^VD$I$u)ANUCiBnAH{ZAa7`ESB#GZbs`HTm< zN$pDSf|ng{lR~y=PTPPWWFUN%1%(TBt=tdba5xB$cHK7`Z_(5E(m3Azd~=o%YCP7# z=}X`Vbtkp5vSKHB@+Uf_4Q6Gb2#82;w$^OtU8ZuWW1HXF0lQ$K&EP>nkpaI9i(aB_nG_F2p+2)ZTk>#b%AHS^ec$^t6v=%2y0n)+HhyuG6~#gg#YA)EcnF?T zT@jqXhLzu%&mT)FTn|^!vRYybxT9OjFcivSpnDKBQ+=dmASCf6D}PH%N@sGN&@*gT4jNhf{Wz7VMMl3MORR+*!{BZ1Lq&E*li0yZpI zuP%Y-R+~1j1S?bRz=Q`)e&5q@6DR>_aE`*BIMYslx_3Ye_)~?}u$#7;H#pscoUBgH z&CHbtKLE1FV)s>K;=pbbQ^T@{q|MJS;1+1y1 z>a3uReSZk%T>EHzSuA|kb9L5{dyngPd+ZwmxnX;VvJ$(yGZ2PEA_ zOSeFvMJg{$zDez1xd(g|u#?fD=Zp!LqUQNwHcJOwBlQPZZ%Z2}Fi=#rl6Bc-SjnGf z|6M=3JGqnSGZp`dNmF3*Owt3646vZLZE6OwET+9bJ9SP`4Ln|;K_ON|FPNtw`9+(Yv5ku{(gVVORlUpmO@FB^S#X_ zaXM-Dw`l3y$E&m$tAna5Fo!K2kNt+Z5$y4kTVGSy z_-x%n;9ow@4Q(y45tqb^r~H)aCHP@FgcI!1>aRSgtn=#1$^lS?b48BKe-UOK;bYPIbfEOR*yJu>#6b8#C z6WKYzNpM)mW4U3ff)6yEZ{vhMBh%#@CiUU!3A`PScpBY~B#le&0Cb%oOe{KD?zgPe zdAb;87LSO|R;%dwrTEwhJqEhpBVS9q;%xjk(i0mr)TwEs{|Op#;`FagFa8g|X{K%5 z%aY3ZY?TIjF=f#Qf#l|VIAS=q{VrqtbxAs7vcl8wJ}&G;hvvyzF;n5J+AaYT!5nUK zrG@v$GY%eKwf2Az1jv|zeld*72^c`Tr{HZuDGv^Lsbly>g$vR+@ndDuqe9PHKVH6O z+iJj!TuAb0kOqb#|4v<3^Ogyu*Z1}6iAk()6R`6dvTD*)NEHWp2YQhM{Zh3Xl;^(5 zF(xEoNmDeo`jn4_J3CM2+6WGN1z0n9FCM-(Z1%j-)N6Ukw?H7%>@h+qZeyYNcOgs2 zWn%lxfim*hh`m118S0h&A78=sc+i`5{BCA^@1Nza%8FgQxtTS-*Aul*F9aWybl zLRuLR$bxypz}0&9oyK4=p1l zIF4I=9Xk|VDkSxwSYlS&$8#K|^atw0C?VAac32_R35`5b^aMKQ88QQ%ZuRbZgQncT z>kOCr;cj^6D|%IzrA+ru{LvSxd(rqf{I?2FdAhy9?JL(%*z#dwVjJ115VLtfUtwFH zDY8_L3fFT&B07`+I`JMAhK)j9jKo)gV3z|~M}k92nBoN?CT+xGgHwEM+taViBe@?5 zycU9C{|TqG;d)=^u8-_$DaTF%h*Ah^q}P`Tli3$0Qk$DcNy&37Ii*MEImom#pC@}LJm+W{)fMx}6l(bWDqhivXpEI6ztUU``oUWjeX=FuD_x zc?34MB7sI)K3o3sQF9vvsD=ti>vZ!iXxnUypJl^9+)~rA5FG}FYx&Y6DFu`hbdLqh zFqB6^%tMUMQC4txB+e7@LKj8^zKa-%}FL))Njouy#Yy87NM8X)e09g;?FlO63RN2I{H z-*xj&QXn?hlg0<;F$+aB3H;+64D9oUKkH5pVTFNaz`+MYVG%8Uc&W3Sn+)uDu5Z}G zUJ>AJ0WrVJ6j6>jz}0Go0=}lfkrEa{9~JVM=qM6^Fc|h&B)B&l}Q;9~IbaDaaiW0>>${Zmf zOzo-kM4czN+V*I2sr3n%;W~1HFxN}u$WM2-GA#x#awj!7Qp@J|0m&cfCj{~_AeF<@ z+_4>7uiB4Aj#m>Qn~T@GkdwswJIGzl_wT3dz{GKNb`Er%X!%|%+nsxN09oY~JNfK; zy}vvvl;g!_e7W_e&9K|&xFfZpf%o$2a@W%b9RV#@0! zSmT#Et!%Ij8L1;p(g$9Xax4GS8NMo~m7_He{)me15+iji0j4a*wd8dmT>u#!Ga4p}=deDl&b`1R z)s!FA1Pqk8^fD4sX513ALeyLJVuiV+{|mdB0nQwZeMkRieB$-qX56f)QrklQ%pT7{ zEdOtzjhubXjh&S=j|Ry)T^Th#0M(|gvrOv%i?gmv4?!?XgFBHpW_>c7N6h2t4}nvl7Y=2g-w8kiivWM z;wwsI6YBOug{yYd;cXucMw~M0R08L3thY1;%!IMU_`%Ew|F>Ms_(YFTf()_g53s~S zGfba!tIE|%8xJj`5=l?*|6hA%d-Ok~oj*$%2EsR@hP6fxWHsw}oaSfuv$737 z@R4b7=uGnk>au@f4pGy}?lI{Ds|%1><{0SI|F$(~0iL`$HC0+t{W7?tR4$hA&V&39+7%NH%9%YG}m)br(9bPJ5CrayXuyZ|s}0TVebcJzHp zgSf3(_vzYCy#FzYz|Mu&bPWP){_^_j#{|;1Xa1!3&9Da%#DtaT_+ai0mrBRs%XY-{ zpw|VPaeptKXdhVKZ3^)$pWzA7+;ncJujF9bT9_yk^}we}7S{4gAjY%BX)#8ZjDS1= z9W|rfLN!d2b<;>6xCy`>!|wflcy$B!yXtTsm}nCcRUhUL!0$Ugi&wslOKijFq4My3 z1b~|PSZqe? zjIe?*GThJ3ODLWHozrl(*YvIdm}Pqi_#wbc8;*2K`fw zDRJ8#sX{Z9?>oDj*wRcrJyWIJNEtsd71Z`tiw!xveNJ+jUvwm;bbud;c6##|C6ItF zo8+5HZRXc+n2Cy~!s5|-{ zpjJ_6W)v4MT61WrRR|*)9k9AQQe~=!t+|#d*z7}(0g2*%|MTms-6kKmMG=a|7Z zfsVTv;520>NWPFN^`h`&o_nHYhj_zu-mJZ8I$D`IC2t`xKcOPs-iC0`wg z6zNE0vHxu0Z3|~T%cv|r>gv+^Es)(MmVvWlfaTnmzg{w~r#By@{!&MmQwLCmlNC7L z$*-p>Cpa{S=ef6;uu%}3nmoIAg>>KCG`vT)USC@hMZYpeoIy62Am^dieQ!j2bvn-u z+YxnxUc>(~nQhfTVIJ`nE!D1Qd2rnRWIHmhoJ)^HMX=+Bl3iCtPf3-}_Rhw1nu}c0 z^_b2I8;3VhoJg8593@=pk+d2{u*4BD(P%yR-rPR{a?66*1IJJD_Q}olB#0#XBt*ac z!mX>tGk)H!tja+7H^0b3Em5e?Ox)u$@_i4!1hb+rH4{4;{^KTVMR_%s=CrrUM4f|&9FIF1`_wwhvT(vw)B@r- z4!l)iidv(Wx*R2Le{eFQ%YE#=8&$-mBosA?_X8Aa+p-p8dbW@SosD2JsH11p0POhD z7o_~S>?b??mc`~Hhg^bfkY*3KL&wRg)YuX$R(55(1cwU1FrFk=bI+*#PH1y{@11jQ zrsmHi0Z6(B(Mb!3EJ)0@qi@W6XXkaw3C?Rc3{Hhuw(?6;@ja(+zcW-h3mG(;47?KS zUbq~2*Qnok40ovU;*Z&ka#*r_6GS8nRxwVkiIf^;djN4N z<7urXz(84IV=dDhiS~Ck=x=Ll+i5-Wc%V#F;v(y-2d-}jJ4?{xwy$M|>fB<;J(J3B zrSLt})cwGEhwI{ZiFG@uK7Wn|cvjIGZ9+Vf#0n|{p$GoAWX$iR;=m4LC0LB{|41*# zO!$KEh7Kd>zq{{J3{W%dc}f?Lz|1tv*BVLX;w1@}icn<^V6XU>Z&_!_R-QcE6S(u8 z@PoMtyHfRn{b<|L1l`?NdpW-Z{h?5{H_*wj&H^Nljz3O9L0}UPTPuKYzfc0;-8eoD zuQI@-EJ-8)3aEtWs2dMm;j=Jt6> z>~JX=#C3tg{)YLz&LL&DE?+xNKuX+9**#m zh=K6(LweK6Xok3AugV0W>QC-@Ov-R6driHGvo~EpaI_Fc)7s{%JXkZoJ7eQ+m_L7v3-FLbbB%g=>l;Wm zT-5ND93umtbg9wDsmf;HZh~+#7^lGW^z(cx`aUnNL3+hkuyocsJ_@Kew{CxwKp2ki z*{jxU5)h93miZFI;H>$9!7DybWIM|PRL<#IFx)^`25vMM9k=Vg2xO?aQQ}z_RF-r) zhOn>oYXhnL+1!J}`&qoMS@qRs+6sxv@*YWw?8@wf?&D15mEYHmtPZ^Qsg@;P%PxN# zq9BiG5uP;-cc>T#QU{3arwX5QsfZ#_Xl`$>PT{aK!+-l$YaYq88NqQ7y6u6xa(sW; zwaMfMy7D#X%5AUf zO0!&Uy&Xnt2i$^3)_Mwy%2tMqgdoSlPNYXi9r;~CFU0~yyqgP~eH0-A?#YNK$mF#q z3)#m?VZbzeGmV2I9Y6e)!d6`>S?V4^<#A8<#h*qGtKgkbQKERCs(@yU}^kFYl=c08}g+5t^e~DQAr9z|E?8r>`*W@QQ`_ z3~X3$=xd-?Sr*Dv=vhtes*YL4&#)9}259mq&y7sk|4NGr1@8832X3I>JQdz#i5Un} z0yKR(P)H`2nQjO5)fEL0gdNZ2ZW+9-}axdu5D^yRBpzE?~S6kYd| ze#0c6N#CseAo#NF)iLQY>zJhs*0d@x}F(UX; zzr>e&4;WYBv!m-jd^~C7PbKFaV;Z8d=Th|OB`3ady`nNyo3=oeRw#5}8MQI3V{Wa^ zcesLQ%{bPxKgC8fL{1ys1VfoQ!qoG@?XhIDv_+Rd65b-pZMlzxgXFe*~?X5o`a2jxOd1!hO z_flHz{Qm{rMgNmtcrnl$zBtZ{;da!5k+qr*5Yy$#_N(F@P#ZZkoyz8o8_VHonJU4HmA_Pc~{+Duueq#sNQv z!|vztf`lXA!OVVBy0Q%W)=X7}*CN%y<&JwRU`3jGz~6d~5>TX(;4?qZ$8+@ieD0dm z$~;4%cnR9_zTqqjH#L2DscGNpNjF`;M7Tt?97nSVa_Ttujz^1&cd#t=r=UR^NY+)y zRmDxUiXRiWivfYTJ(=5kgX1*V4OTiZ^4a9y%&t?;>$=H%4A^-ztUFZ<&KKKpqz2MS z$RLwXc8RX3VBtAmr^&27v{}dVqO}~lW$7^h(;n#ig;Ots_U_G4I!Q=DJ{xODK|zT{ zQc@7>0y#t(T}?}Co^QRKbJ(2Fa2`72S-@=nuK)_1lpQ1|wYLukuul_==CP@MlDo#ru$L+zb zNMre0Zs0r1r9;OfaL<%5GVrTqV{`HT?ekg?1hAfaPvj!~lOBBq%l|2d&)E%uKzEuUI|Up;@Ky zL!{W?shwm~6F@8K?_Np2hMKoNepLk^Fanyg;@>mp!q;C8=Hj+{9;P zHSg8WW<35Lc8PNQY0~F9=J;CMZ;J-;c_J5<)=BZYb6Z}rpP3!jpTA10Q4WQN^yt#U}j^PW!aWVue% zt&Jy3GVxIeprhgM7*JKTmOrNWf`pmy97%?8M1guCWc1Ie7u5j8NReEOxeLQ5;kH2` zE8og>%wgc>*@q9qQwI6vMFL$KaJ4_HyjExm_cIG4`5boL9Rnfa69x6Qc(aXqnmSf>o{llE9(yri+_#|li+R(hBO02UW*}}>yzpsD zI{2z3E8LGY9pOP2@5dRh0CD*!1P^?_xJ%RNL=RuxlDX|2k3N^pEIYqydb$hobYz1U zqG#@kwdBe@>;_8R!nzuh5oePy#fNJ)&SJ=Yve2&BXSnh$3<_a{TRC>bBc}IjN*^{5 zf#+QvK5yVPjxYsCeMd5axg{RKl`aQq2aoz>Ifx@~4q{n`4*r2I2l2cv0l`eJ0!h=A zhomVKb+v(G9NFR#=0fQRFScZaH9h#-WVx=~uu?I_7e8qj)^_m{*}!9T7cU`lH&*@h z-17|~`1$l)w#@6+Cv*5bblB^*6$-mbemgOKW>-x9o%?>3Hud{((6$gWN4<~ccp}F>sMPdto zysp();}Oinkn4ZvVa|4OvR;MrxeNTujX##RZQ!a8F23KTS!#_(Ae7*pG>(o%4<`RP zO7k|cDmwJvFCbp7cdJ)5A4?u)F9&*$9bU{py!QX}ig~Zf+#17LQxHAThv#?T;|FT~ zUG*83x-Hb)TfGaH`p?hJ>ukHRuhsFy{`^sdxE%iJ#nX7U3u$S&ISJHcg>$|EpRzVy zu`5@x2=?y9PndGw42^veb!Vz#k=SoJk$Vpb$e1J3+U`}t?RrOQSSd`Uuj;Nnm*;ZW z{1&ds12^IUMV03%-!9yb3JLyRo$igo%3!3%vjiyt5St0k@9u~8?Ig^L77knPOhiOB zJC;7|J^5FCmxt$&PqoCq;7@E`g$F!DvP?Bvwg3pwf|jT#L0U$Q1$fS} zhF@^y9yhO_o}-uj z>dn3QbVBpy^CHXD*4Eba&z~XCBPk+_0}m#Twi$(Ug#de{W3ruRzKS^?zkVz#Yz(Y! zQbzMecj7m2bH7kE)R5KFL%q2P-q<8oeg9rXMTN%DP~=+>(mI z#F!=ziv4G`cz;g5QYg1&&uv-S2f~w*Ni?+e72n(Oia@h(J4^TDv+SNpxd=G7QOXr$ zF6VF@G$B)7iVOaEZ}YW=(eXhP>&f4*%$&s)4R8W4zN7VTi_X8#{e&B0CsE`r-6Izu zRv|Pl_4Nyx*}cnI9o}SpJMFxsLAnV}&ZqP*rkDe&E6R$ST4k(OZEbD7mKT=Q1rLP0 z(9hJbT{y__*?jgtSpe+lD3{B7R7=b47VisI#}4<@D@4EJ-^8xl8sFPpm8oriG9~|9 zL{jekRo6zW-w8M9q8Z3YIxXi>MvvELg@2==*?e@UOY6#BnN(!a(a~1ZH<0+?hs-G5 zuf5tp9K^!XnATblAYsQUXLRIuxph!nUOuAm7x6IMwPoG%_pghKt7}bYjVw{Ol?189bW0oqH zMlM$(;?g}F6bhG9`YpNT1tOXx$0gOTGb2Vse$AODX5Lxf4n8nHepo^i7rm>D)lvSW zciN(R>aBMgtb2Z&M#5;xm@eJlTQE3UFgO{&)R({{CA_j)Y(~56$2yitD%|dDwAr9? zcfG`mEPCe__l6V23vLjn)zw|EVxgv?_t#7Br!V^_@Fm;_7bWzgDU16dq!V)*-9K~h zeNP7q%ieNTp;FHAyzUOXNo_MEP8}B>@UGu6pv+7 ziAps02&=3%RV!DKE-wN5MlSfVJ+AZu1(l_peNt7OT6IjUle>M;{<@icY)q{HB_lCz zorqxHoKsK*y`;UAWaW((p=dC%(sOcEy)%}|P~l2+k;>3^dl|Sr4(e~ppT|D%ZVVmS zLVMiM-%+>WK8y*-(b2W3(Q&EKwXs#!{@-=z2vold60HpAhCMU;@S5I_MDxvA#84#z z7gNMo_@jn`Ougy;q|u&shWfoLLJeXPzGPG-i|NApo!KjHB};9Rv}9CEhBq1ki8ej` zQ5%*rF1$>UW5aX}1(D=E!<9RhM#*7igsu@|?W|8{G)*&pw3pYU(KS%xfUi0MN>d;9 zk;~us&3MtSKBif(x3K7ZIA#c)aNbDVK{OZT%< z*-vL2bO64HWvsw{b)y0m4mNGT0V68Is|cMldqjw75H8raMk2eu8lwKT@oT% zJIcp@Bimsw^SSbx&yq3RM&4Y(g?HD3hY>?Dl5i%W?;8Uz{qXH%077tr!cNAGo9#)T zW_nsl%_pr7M)B#1#FiGM+)8T^GZXE5mW<3?F9p-wT6A#~Dp80_mOMCw>is3An)V(_#ciqIZ$A&<7Fp}qZi@xK}uv-l4=q*B9rw~Cq@Qd0&<{$ws% zf1T4SZyL}>^FenKSUSJL`}zBqgtWygMn;PRXy!X-XO_dm?DGqpsf7h4&t{`n^q4#W z@4gL8UR<2dz!p_}?4DgTx_@i@Mu$nq5t=xcLZYAX>}6ARQ^`oemo~vg8%MkUL(^3N zwGpLZptu%yN^y7BQrw}q7uVwMg%&98!Cgaew^H1_xVyXiZSUr0-oQ@SWipxM+t2=& z+~Q)CP(PKkm)a%A1$fLAB^ZBJd(gX3zu3<2BDT#2=tRVaB^BVDx`MFq%P(o^L`?6k zhzW8ki$P_IGs9khKKD{GPB0l(veV*b*OB2YZQ@E_3Da*A`e>lVd0J~L1 zd2xMiTwja#;-bL*{{CkiYIHJzo>G^+l+1Kf7r)@vO2a*mw*}UV4{s-T-`~cJ-mcXk zd;`VVms)S*0XrC?4`c^MFSw^`t@0GVyIjT%H@7daWrAdsweC!z9E)-6X4g`TlQPH0 zGoJL+RjlAd70y8pKMZfrh6~A!K%T=xLj!|@xdjD1@qu?IOP1`p8X6kMYaMHcBwW)S zz-uJbd?Z^Y*AE$B7dyzJ^*E|Dy6|^DTkXz@B;nx9DrjR%n0ls-qB6_))Sv;InVI=QK=9n0iS)eq6LGFj zUGv3IvrRSGPc_+BtO%BOIxn4H^5gDJ%{od=&QI;z`-L#Nwinm1#;h-1FF_-E%4NQ{ zgi(#zlb&07p+1)H>`BccqgD`IlC&8t^k1r7vp6qFj*0|Ge~PnUDzNYjM&#gA;^20vc&F_V zrh^i^BuxzCnAqM=^NE*A?L(1?omNYW7TYpw8OZaf&)A>59U{;0@8RM=KNhkmTtk zv75x6)Vf7xn0bDAnKEK4{oLk9(PbO@uFcIRtWv}ys8TU=4?kOQREs5ZTdQdNYV;xE zdG?U{wYQI}qy3SoquKSB>oMVKJKPsmzp%MgB6>p`Jt%?E7qS)yz%60GzQiw(4BdDWKTz z;?PDI#xW`hqL9TU<@`xp8cWnO>!jqM=4&z|-j4qkyLZgvmkKq$V#-q<; z_03ZC-GT}%p=9jA*=c@leZp)AfRl?>6}EY;IC5olq4m?P<&ot#wyKr)GR=@& z#6o(4Gx^K4vM-~lva>1!O<_=J- z7?7f(UjqjKTUFQ6s1o&HrSAR7#q)P^Zb?#Ei#PK`fYSQ*B6VwHWV-?hO7Xqb=rcE! z5%%8{Qg0f%k@0a_R@N9lejj=kChxYOLP*fBy>?^Sl&VC&j5RsevTq@oYkYOlM~$`5*`$O8c{9dDG`zIWpOH^fGJNuaZ; zmYSY_xVgVU2@uc&E8F72(gm2ns2j98p2msUDVu75bk*6|xIf!*I193J8ij_}ID;9= zAU%Mi;X}{NTu<;PC^(GX5ZDpZDJ|GqxX45fd|mx@iQAYd>O#=#kH#>Ru3 zz*3A3qY;;)W!!mWyin|Xb`8DSM6h`U5^uXm%$^&6@;WjJY|OenpDiSBjP};P{?)^U z!5#zh(l9l=;wZL?@z>PQ^o8+Imh^i09Q$O6YbaWI@#w``nR#`2m`eVu3ixDj6qk(H z8d~5c>F5|MX{KrcFwRk#fp{^5^c}$x_B1oO*=2b=e7rZ0rnbPk=LMRF0<$6p{c375 zScuOhWp0dYbG7uG{cY$hbM9awfzKeS`u=LwLV+|0ttC{-Imy6q&MA)&$$D;TFr35J|^e@3ff05~lV z%PueRCnhC$Y!cX}#r>P(sad-m)k0EMmERMknAtdI^`Mt<<(6zIX1?)SPo;Ph>C{JEAX((hx7-$a*mJDmZ z3~TQ_t&7_8-nL^4L%cA0imULk zic#H4P&!=90Oa`VBqIQWY?TKf11Em%+p-=ZC6*xr4Op#({BkA_-GMIFs*oyYgDpQJdBg>I4O~74k47K}{ky{c7K@o-+5oDt#cM3H8 zMF+>(gA^=Q3@&~6!O}6s&%RkgZ)D#jC8@c18#(yCcH2|=!ZrR_$8kgxa6;#E#Au1l z#EKRXY$p|VZE&AjT~?A8M`;it{xViT96+0g2xE3N5g>SPCx5sm_i5{%Y7F zuv7|WDkcvQDZdzQTcGTur__>Z}KEF^@B zCn4BpLo?Yw#vclb0p{!XzVoD@wJaDsTHnAa#jdU7wLrP|BTm^71GctyEPt?SC>4$;;6*(-&0~#aATb3AB0> z5FlhklZ66rAgux%n+&l02sE|Bd-fM zQ%A=_Q!|xQEIkjy*#zLC|#=3*A7%C0UFZ9v&HBxB{mWW0M*3?`*6Re)lPcH5A7E%6VuicEwql0?E&Y8||-|lU}a8 z+>E31P?l=q%sn4sXZ2A2p^Z@r@%E*9!QAv0J&Gge#X!CKxu*np0w}&-kFXBHZed3V zpY=(9IlugQzmzZbMU3?bQ#5^&oLE(~6u>j9KmZP#*2Fn*z6xWR2yfC7-qsvy$x1#` z!5}+T4(a|GwxIgNQ4)vhEekIUc{JC2Au5f{R_7b=rjp?}o+j+b`OHv)bthX8WcWo4 z!`44FDwYMoA;iz_hcEu@6gSo278BPQE{thM-mzF|Y3JC7y;pYn^ z^ab!7<|8Gv)p79De;y(9%c4o@TzhNZmN13E$SUrnt&O7?ir$&0Vq^)7@y0}-moIQW zcSh;hM|ycVnWTVXNVgw?^OyOZWASOw9iP?-<}grQw$|wYRe$l^X>1=E(#%e@z33P_ znhPaQ_A7pBqpkAsqQEv za>$(VBZ+iu)X4B#v_wql7mG3i#H~3DOeG91HFnTdk})iIES|7M)PnLNzhptda4|h? z6qgw*eFaNqPsc)*E*BXq_5*F`71~&p!?CH7N7afsyp+H25Hpe_cFh*F<2xt7OeI9@ z8VDXV^Li8Ncsf&evYE!E48A4x}%Qc-yhrCwFm!0JA~tFx0}hCRY^-d+EFxS&CiX$ z8@{h*`3nfPTHDzbwG>6?ZBF$U{g^*dvg1MU^Lsa2_r7@L=eIvf9+nupYZFT=ws6b> zOM?3+r@2MowAo|}#>}PVzh6fandw;yTI3KyxM!07xs-;QpUou+dnMtv_jYs}4-TyQ zXXl1L1+W^%giEU-!u$RZhi)UAF@e*N>^i6tra^0LtXDD65PN+U3P(o%V7liXZOi$N zxQNxUm`mS$1d4^3B{xsu4jB(0|47(dilL#P;0KoYXYPQ|Qv^tHU0dW(I93bMQT5#| zJ06nr#y%o;KEt?S%KEXykAlJNFMA!MbHAU_Jq+7MpO;aKl`^>b+xmCl^_utf!J!RsZgc5AuNdRNJ%&)6C7S zuA!l-r6v9CTlvgRvCpd<(^>wYtFGFY@bCd3=W1z5TU^vFyXI&05JhvlQPKh4AgM&yK_T(~v*wbcDWv zc+{{W2OklBvS2o+xbmmE9-($dc9QRd_{)zf`OwzlrpIti4cr$Y!)_K`W7O$U@;t=j z3#3Apjd~w+T{g*4!lTS9qcl3AJpV{>9Gfujo9I?K^`7vE$hdu&flzRk(TxlsYxO@b z3u5oC>WJQrSuG2m?93XoUV#(56agk#wSIwFOJx~%!k(n1WF^Fx@AwuuGEB>5uXL|{ z3$Uklrbn2bHp66JGR+r?$}FUdN4O+jmJ%U8d|4%(j`%=9Vn|&s0$YUst{migW zOL$q!jzf-nS-q>JgW>fH0idc3NFAStXluc#S&}~i0nMG=m8Sgh6jRoddQ;@r53P?I zT47J>c(~tFnAm7rTpzS}w!cme25nmOQr2#20Gv%cNL~BdipfhIkK3Rk6WgH2EDlb? zVlW>I<6c{ZD)Rsv&H@&nU8jcN5C3FrI$D61f(9xZD@P?_k6%kDC+>L_CVDLDV+#I? zLTiS;DBqY3`JW(gO5p+7;sD> z6PL(DQ>PFoL!C=+Z64^nkEH2ytX7Br^#>;{KDcVH1l&R+u%t(PH}s2_Hadf97k+W| zxE130UEbjl*plYm{#ckFvAe5jb3{bPxxE?`MA6dfLr73%T+0vXvO=*VLNda3Ttql= zZSa^_S&($_h=G&vZfS{?;3ZQOi<2x{s%$R(J{HZ>p6!qmvs(n8Ms#HT%{s5Rb(+EL z)XJf-sU&bS4`wJLqNEI5P}q#Ag9Tg~zi&ZD1nh@(??CxOFQ>$ORK^IETGkig9+^_>_cAsQU*g=muYckNhL^91eIFA# zcBYjBx{TgB0tPW&XZoLK9efjvp1UlYZ=TUCifH-WHet6+0iQGj?<+U8{`8q;O)Aa# z5+Q1}P^_C97Z=w)^%VR)=iV(I9$vh|HF?_3n53j+A_$a_ovkb-1@GqOhKC5K@J8eY z#gNK8NCs{8yrhq9I&M6B>g?1eR@VK`@hVbc0KhPN%FYswrZU{xmb@KNE5H;#xg0a0{EwEG%>{ z&(=_&no8)Ii0sDW$K@4#%ucg-x3i>Q$-Wa>hh|VA_Dw}?P1}Dj?N5%7ZG@(Y!l2JA zoIpFS4H|)vbDX%dpSW}EI6L+lZ-sZ;FKcz2;DT0kL76-({P3yHOR1PABeKCGa={~v zJVlbkAOqm>6#-9Ni6Y6ZcLTH+&vEZPqMtl(BD0??yO;UN%(%&`_LFqZ2?ABGYBn{R z{3gaaNh))R~(k|nx5ZT=-D1}+99 z8Iz75{pfiE0r^-4L!`~|xPMZ|WaC!$U19r++$|GejKw%TO%ODqD>`ni6CiaAS*V+H zQqOa6U_26%k3RsJBt_bFQDMUwa^;2tTeKWRqhl*hD$|L}@~wJF6-u-W} zkj)sOjE3EI;EY{yc0p9pSWGQNiwdtD>k5p1k0<0kZ!uKfp~bS`T6LGvUD4q%au==l zMp5*(WDYI5GF<$0<9c8a@HR$B)r34p?&EMAe7F#e%g7`ljXl>KS!zSb4fuV>Nb?xf5b>*p|F-Wvv(TFy&G%e|& zh4A7h40vyo3zJf|^4OWA->z@mO&ihHUFWY~MV6pgD32$B^TZXodmp?2iuOfAM@h?4 zkfoSZF$r+=K8uM0M2)T~R-#b@8XNhs8tvAU__+VTabhmNHnHg1Hkms8XHQ`-b<1CC z^{$k9>fKdTiS4s-N{=&<+p{%gL&L0{cT9|autbVgGb&oj2Bz;uztz*7jFRBPg)Fuhh=82Pj!B@z>r+<-K8?>c*A`0+Lb>%%9}nTH!HffN_Q%M;fK*3EhwCq|imtxNO9g;sw-$SV;#a=9EZdYd~w>2#9G-HFOhzS<4Rhto5SP>S*bEDp5{!_g9kPf##D=s766<4T)i z-?Deln3BkXd*70J-Ev`%Tj_L>@>l;^Z9x`phw>d15C*G9rQ~6$xvj;HF_iS+BvC7x z1F`S%r1q_iAeH1VNkwBrEHoVzDvSHkq7@|zIFMVWS9S`;!BpNy(=lWUH6^jN)@6m} z6@_LvniUu|`(M_LYDO&h2}<~CO5f>05sc^v2}*)m$HDqeDUk4BKoWy8VG@)`WBXnx z%0v*-yJ40PgqVEbx?@V%c4oycW~!k)#w7qW%l6r$guqgpq=9rshbsc{O#j~n2$~b; z$h#OCBnQy&{E}YOB|Ot>rW=x1UGl5Vb*g`58kx6`JDDrW+$dHuW?U!M7ld{1Fn$%r-|-l-ajxW}e%edM8FK&i>3)-Y45<7913Ng(Ml`%c)| z8M$t@xMK!nos`4}YLkO)+h(emOaW_o()HUSSKQekxA)B@Lrh?-VX~i+8fL1vI=6HX zPh69lbpFXf2qqJIYM=FF{kt%_ky5OSK+tIJ`@x)kn82eADB=w$t?24)H%v>PO_2)xkBmmLc z%)`-l6Q^1cwg1P#)H7@}&bR?161c^PFQ@Pg0FY-FL%Mz&m%l9H`$Mo_+41Nc(@@Ae zQZE$4MCUY9c$l$R>FSnq9Pk>HuWsgHvfEvMRrcYL@1Iqy^}PX%9wz7t=nYjdjW zfl)~jTpWGl*nl#U{mND&WsmXiSsLwhUhEclw)C~?>-ArG^1stq9>xZdBhvbt^lPEM zD$MNYxm0%CaVNKt{p0P=B9z=OKr{Fm?e7)w+RkbXJ_371X>74>ZaF32mS=2 z>BKrM8qmdu?Y;1B7JaMvuK)vZxZK~#MSb3jOS)DL4u!S(Q2@*H>q+k(`=rc!Q$K@)yQ{}( zt(QjZ#D8+%mWGQOC&8P>fPL}4h+ z_J6vbVUVv-<~ssJ0edSTQe&}$buNwAZnhi;KS@PHZ>Vq*vH0onoR^!8V}2+}&6upM z?a$AAG8U3^j$@Mb(vPBA=;+n_H>e+8X5adh-ws8u97JBxJ8qN%q8xlrhTC4(H7dS2 zuycE*UR0~Lr6GX2t>HeU5fPPltf4v{!v+fKh)r{98yPt~+{?+!GdDNp6_Z;Abfi!{%YJPIkSdqAtjQ<#K0H6Aym40-o_cw$# zaT^w{!2Nw@kcW{j{{ z36dr?V|0fjd9Mznh;mHUSXc2&Fo7;1&w`XKPcl^rSlLoO~ zDl3z0?_3yHM3b)1&STogC^?=0%^ljlCIOzls9=ObHUJrC}YPP0TtkMLP97k{EGi+V)QvFNXNK3ugu zTu--g^7n!)EglY+g*y0zN9Ro0?G+XF$u-p=HXvzo6*EKJ6uc9K7Sa}juG|l5S{dj? zXpY4Q(o`0aaz*^I#<~+RrfP?oNz@SsoZUp;@p{}?EmG9O=sL5B){5uF!|g;7WUMG@ zeL&j3eM9K>DQ)bYFmN2z<5=HCkZd{;G#ZYNz0Z7n4{S+!uLyb(88*GI6~TBFUy%S3 z1gvTdf&Vu7Hcw7Y^UDh})4;lmdV(corP6WgEv?=q<>keIV>VTT?0mPE0MhzoYugHU z507wieS6C}AsPmRfbrq$SO>tx_03TY$vhFwrR5d5we7(`Qv{Hp2Z#GrQ0eqHJiOc! zQ_EJ=0h#FO)MuxO{y-7s#>xJj-}TMSKQ^cAK?@+=-&yrZb)(QF`|h)u{e#njhNAGU zAR*_w9TnX#5>atP?))bblpoDxs|q%9tx~M0eyqD=qKBwZ5q9oaR0RYAJ9PuT9n*wa zQJ`Y!yx9bR17z}dfJ=X9m)4mKls|N`_-nPs%}`LTP)ZrfiptBs_Y6{!l!49b!12>H z!HoUgkpA&1%#MMk@sN(nV6~5;{cQ|d(WF!_y>k!e9{!nk{#PG6F3ODd7|(pOw9bBy z>`H}~4h}~~qi$Sz9vmIiLzN>{jO>{xEdsA#eP9kfcKYCY+944GBV#E9QWp*cjF(JR zW&^^xDw8 zHid8(57mr2D%@V>8qqyjXJ=peHx$cTvLBnn8$?TR)U(=#=+zL;PL$6(ZFoa zKb32JXa8K5g*~4he}a*a!LKR87BncF%s?MuIRwY@uU(UYz7s!l^K%@q_0yhWGpPcw zT1XX;l)6PrLmi5igGUg9N5XlER(Ogsl!`LY@wo9zOaAPZgj&m<+3Q`{+L4`C6FIX} z&!^zQCO<1_1~aJH^Cqw$xPXIaat45UMBTc{AZ5*QLaO^x3Mi8*h|DBB0&Yf;V!NJd z&~sq8?U1JE7n3KINt%oTX4s&;1zczrYVr!xfPFHztmTIlcMD)Gqqk#8xe`KR(N*wp z;>=_)hNzyw=uq#7N^?S^VnfSI$dZ3qW4VA!IKSt8(odEdU^t5J0ZB>UAAVQOx*J+P zA8I2P^x}k^4~K?&?F}G$^yMvQ5$yHm_j_KPvl|NeCJIVNUq1K1dMIaYzov4wxdT9^ zoVnY%aJ4MzlKiwccG1^c?AiPE{vY$oH0^g=_c-KYB@^y@aoO`ad4@9-4EXM2Iesxa zJ$?>!46Y(LIeove^v&(Lo!>>MskL!>^_nQ+qu#O>$!X$m)$KPhVI~O9CgP4v#8gTf ziVVgB+o5D5y;_(99X&!k_!!)pG%YtMD|p`BB_^0CG4)1$$%PUa3NahA- zGSaF7>ssEN=?{tPPyJ(cjR#MhsnQXt>bS`-@F`sC@Ck~~I@t(sx%T$Of4+8%GU%NG z^r^MBKdpCZby3XLg_!gk(2cvEUR<<)c)q+u8C*!0cXKO0Jt3~sTd%CI&s;qfISxh# zgeh>A-g*tthq%0((VUx@`l|r=KBsR-Q`3#;Pvk(a1CWz?!u}SP*@OFTb&XR11q1k4 zL#ID%BetyT7EfQ}&5ips@Tj;Svs?X)tA`u8JWO!AuxovzPRzn|`8Wm-c5flIq~=}r zu(foYq`D*p7J4277MS8=3*532KG4kr0L#18hiNSjNk-wowOB}B&mccWt_)lRhGc|q zV);1$!qa+gYU<0dp!OGa1#2fHjie+lb?%8p{c)$s&cPbwv6)#;!rQnO=WxrhpQ+xb zP|Bn+91MblNs{OfFBu;`?7FbpT|SP&p0zy+bzB1|woH82e6`8^rIbpG#mK~r@3O?X zxE`opC-=8NjqaJalbxEqDPZIvwOoVKIU-gV85r{F>i!-+4G#~S0z)s}g%KOjBLf2y z@>xJ=Yj5AcQVBp;1vu^S5*c7v3okv`>O`OZLW$mE22J3?6h96 zSCEqIft_9+Rn(2TA2~V?`c!_H@eSxsI6$CmbD;)RVxz25fCa>kyDEvJ8y~;Ku^n}* z#>XKZiFX%7+JOG5{E(oN5hD1?z5XU>J84_R+=q~B9m^{^k0+d_k=AO)M$Zm(M4)Ou zVjMC}0;OL=&9K3=j{)*bCCFDa3G~PcEyoHiB>L`rUSsxKI_YCVhBauH$2pmMB;L#e z)ajXwO0=Bu5rl)ixS(Kbv9Fz!oRx?Q$nGX-12slFHKwsT3x)5bjbl@GO%_;PdbtPk zw5W=jQ{#>yus9Y}f~6%f)Rmt&HmS)}v^gI!wO)uKzypx=x`K6n@l(CO*Nf?9pUg*D zYY#Dh`AA}k#Qo5sI?$R&Jc69J<;@KPA%aQJpLnWjib061z2TST=h~}&&nuO%rEWv} zA20f($kmvWGEzW;1;gcOAJb68KM1(v?u|`SE(3k!)?y{6vk}5oHtjY5h@9S*`3*Z9 z<9M^Y)1LOmucm$_w0Yl>ux9cNehbEJ^SdT!j3L`enlAQo+<>_QqWt;@<%>Q5ycT;S zd~c^*e4U)*J!ohjmR&&i$Ay+&PYae|gA@@`mDxH;oaXn&#jtbv40xPo)W|VEX@RJb z{oG8GGu3>!w#EvoOBzZA!Ee#jc2ee2giJ^k_0t{V^C%+&N?ItKMx#3u!JPq*Zzl~@ z-TbF30$#sBcw(y{g=r4p%09qQR0a_%v?INa>|OtldyU8v1FF&W6e>X2pdIk~Rg9KC z0mgqO>B`?Z-Y=Slvc{@NsXF}Id-%FvDi5xXPEQNV|9wn(bkmpi?auOQ+amzMm`1Dz zxMaEcuz#{YZX<=Gh2hL(1jZ#lcQq_)C zb~650&piW((5bnl(XSn2LINi|$H6=Ria81zpk5zv2DJ*b?z2&C2n3^X?#LwYbME|2 z3zq{AF_th?<}`rQhQj3-7#K<*B{@K;BYx8)93_H|g{cTq5Lpxd1&r2YJGAD-Ng z`~u(zkB5iIIsYY|b{rg>gF}lz;+cHrdte*~Io7|tiYTG0%xfx<>0sha zKZXF|=)Z1=ywceCN2q^qb5=6ZPI+48i>_+ZHqT?e#%K~_pJS*w^hlSRKPh9d(T56v zs6o`ih&+fi;u;$L6^vJ+hXUue&coAJU(F7Lw2lBno9pY-j*)VG&j(p^HlP_je=(Ro6+6jNXm9um-YqsEQeXENtf=qkaGmFlAEiuqG`T7L~} zE&3kAOXdf6ysD_}#(PG8QIxczxq}qcf~8*E;xQ(r=4FMJNY{p8W41v13ce2p?&i|E zOLECX!%SGe{}owvXzUt=`&1O=m1y9IQOJJDHjc`b_q`C+<^@N66lL#~*eR$MMc+$aE;VoI02_Ry{wD9 z$WPAGmF6P4)Z8Q96B^SSjNy{uvJP8JHrRRXxChns2a|+zOPco~x(Kxx`bEA(STCZJ z-+SiR(w4Qat1>s7O>!I>0rq6}xIhue&rmb?wO?BhdtWC@m2!r7`Z_#iCNP^{vZg|h z!?%ZBv6^a~I{S70jR59h!H!w69G=b=C~E;)&pj<&_n)bs`#Ub{)DUQtS=rd+)__Ce zr<|Q{cjMF3rCnSY-@W4j{!+D+`LBsPJq=(k&@f}}13o{gv%8vQLe0fx>9?~ywpo?k z_Kly(0D3iiXUX9ah358mMpF&IB|if+fL#F|*#6c^hP%F!U_8~jJ3qw#Px7u5FqyD_ zcGQ_q59>=NB-I`P)Gpv&egye*X%saU4m9Q;3hJH767wR0alICEo3|FLDvX zK&_!T4-!6f$zXG2V{Kh7O}uYhke^vh%3^QSG|=}Pj7o2lt(aXmd^#Zg7g_&JDKDHqm| zxs;Qeq~uTP8%<5kFKTM}oGFEcfamr_U0crh`)}k+c_!8zLU?)x1`1KpwM(S580!#$ z8V(NN1~6;X`lx$&2p(MOh#84ospI0+g{lIo7cGl6x4UKu)qApK$R*&K$TXXFDqVz< znM4p?TxL5!w*cfh`N&F}aQtubp>|+kgq(8g&Gbyz)O7Uj>9@}vj&q36aVE*_>eKbA zC11DkS$l>Qy5)RGJ80VD?zFwt=gjRiiJX=VRnO^|E_??+K7)>J8|x2s^*h*xxSlx7 zo@(QT%lg8X?cO&pvP;OSp0>=p=X2CzrvY)HE8(@ZMj;wr&eR|X0*;w*0Tu7BnXGs%!KQxoAq}&PxwfW3YG| zA?eo41RHR)jE?3^c(CVgrILEo32h&W(2N}F#mUuUPS;~@^a0<`Pe0^yhG+Y~1rHNM zdhN}BiyU(P_iT@AeUIsVEWsZr-Z-{OcuIZgF8!O(0@IYGTrnUns;@(ZcL;%RMhtC2 z3{AXqrztOTfJdMTQSmPq!5kvN+ZX|DBS#EJ1Om7>G>NLbxhn3S&hDOPB{pA z>~oO05YqB!+}d#5_-O9jXx!X*b!CiS<6U%pwN9ejW=N-udO)!yjxH-Siv(&|Qquwh zxBEVmCRH_UbEG2AdLq^a?UVJfHS`k46dldHCWP{?= zCQ0co>&D?vG=Jtr~#)Rodiy6#XqJ;+C`TE6q zo~4BbU(^uTDyLXSfrW;Jg&L&MrL19~CS|f@Z#j2hHg|x-l-AvuwKSSL-XFI%9ydM? z9LTZ_0LRrvflsw6DrOt9-u)>$FupVq1skn;9rn5sTcP^7?t69h%Pt3LqA&qY5jt_? zc5P$?yHolnd@8Q1(1zyT`ivq($VD=jS*&!^8XDvBNg+bk{u zWwDvb`FRCvYkq3r&06d1dCiv^AOGdrn^GY2JJ8%9B1*FY%4e;uAfV1cbVzgnsMg#H zRdz3+htDAVn^`eWHb1|d^qVq{BhOzoWi}b0`x^2Z#-MB@W5X?E{l(ib6%5Lhp{zfeFFC3E-Q;0Y}6ct=<4`Oq0a3n^rUDvsCOmimo z4<;nV(X;!0#z@Idzl&Sa|_ z_?4WD2aFg1^KmN9&!@p{K-YJNZmwo$ds{_CCC7{aIn;s0tNABDh7;2DJ}D{v?s_%1 zv`hejq?MG=2?+^t@bLaUdEg7nh@zyNu!{>tFcoa936pSl{;F%mU*CUBCA5ZlpKOB@ zWdaoTVm=6ePI^uOUa_HJE*yMZ6~iJ-h|{l-LomY^wRq3-!MlMWPX+%maSpWvRoYV3 z(!W%tWC@8G5}Mvv52+Y*1CKxQGN_PiKU`2z!zJlP>1HZCCZJwAqtLN1kQ-!54Q;9a z1@}`?m#P#OsA%gyuLyuvP|=-d=lU`Bc7fjeP}v5ieP~ECDbX$i*2etVmJrFNg;gN0 zDdjRMx+C7<*62RsT%5m1WYmSRZw5BdI1l^!RMBN@Pl0KOhVD#=$F#1&H?lN|IR<00 z*CHo-PCR%S_1XpdU{4n&fcM?YGOC0pr$CoRLAF-6xITtN6DiR)(_h+88hkx& z1=;dQsD^0Q@=12aER?{hNSeFes^`jQmoQaUDB(JugOPfT zCV*M=j?b~5BV40KQKxqBNGugIo>Jr#y!;#Yoe2+S0xDU0jr?B=^I`iJ0{s*-j}oEF zaFs{L#wA(4A4Sg7b{0!Em@E#hcG}f)i^?CKSa=0_(kC>%^+}raNm_)vMko(BFjiP@ zsi(&)R#<`(s6P>@rOBY$r79jTjx7IZZzFZQ%6Afd>-7~CH9Fn{C5PNQyT^{xQtID5 z@m&b=U-K>0AWsh#$)bFzniO+ zdtGTysu3HQ)2k*gvxOwl$KcbHg%T^w-lzIi7t*&> zlzY*;!uIxr=x7!O#xi)di@ z0Px3gz8shW`0NKQWM8a(a_gQycd&nYoR?poSrM%SBn6W=L@kyp&fuA@@L~b>QhGrw! zQ(vZmiaiZ2BPgB%?FKFCK7-|Pga^Ky=N6>p<>%Cwo{pV&r0mteG2VBDWbuNhL?a#M zc6$jair#Byrqb-2_ii4T+#nMaMB?G)Ny$q4TsfzvrBxi*0oZVbarsqMDugCD5f14$-Z&C?ym_%#WzI+S$q+!4;9$A2#nDecJo59~2nlyj1`sWw zML`=P_6PuiUAwFV^h2$pqdT&EZ`Y%){gyJ9Pq~baabaQhW7tu~7}-2o5#Fj&N@Aqn z+DIj^_thVofV$zbMHG_qh2`-P_A4nFmYr#VkujmU^tD%sa`Oon!Frx3)9iSz$k=DG zpFa}=wASE#EaOXeIIxoIenP`t54QA*BT1Y#XAH^R|JIbVkUyROP)6~)!)4JQmF9OQ zf`=%L#4B4z1X}Yu7H7?s7pYj%&`i?eOaoBxkEOxrX%_C!e6mfMRLl0a%Vg+nBGE5m zO2K{!*~n^dNnHYymtgu)KGU5WF)c|kt+LJ zKV>J>g_DXTZ^xqF*nElRjjY@QN)aXynY^`ex811K{m#J)VWQWqY=1A=&3|p`7AY$8 z#?ax+Z@Qn0KYS|{M178ui ztPN~}B}EC}j$S(%C{`?4Ic>tVUpN5zmmyBv98TO`PfgEATKWhAV>zz%05e+ttS66h z@~zypt}*ZAq|a)?n1_%p9aSzOwEu+aFMbZ|e*c~uBW0+dk1z`WIxzl~U5EmtJV>8x zfUHuia>ke^E%EMKeG06~$;{Nk>URKafbB?rGAAy8)6$6kWpn=*Vov;njtFmK{B#Wkg9tV@*##zu0 zYYWI$zo@F_)_Dxrt^lZ0Q&TfAHm12Kw=LB1{Ol_yCsFC(?cLJlZ((kZg2z@F`274C z89AJefk8De+s-}iU9Q@fFLcbzg$)hKySo-y1qD;uYk@^gKU&gs;kJeEw|&$TL0`0E zLyHPzNbQ&o3Y{c{FV0w{^f3eDUR2P3`f)5o*JUqF)dy|9eED0VVUtx*1TV!5#L%Vc${V@j+ z9eMI|Z?-%Fwe6X+lL>O(;CDg466*stVhfmYbR0O?+DO9?@oGdz-1wNR-$@>i0@q*V zOhg#`?1mwii`+90NSXfn2?^tO3j!+ZQ+LMCAGhauqL6)@O8Cd-*p&X--{i$uPac@) zP9#k(T-mZ|U0Z?LgxRpq$7|Ct_5rZ(Pd~exLy^~hx|{RUi*ij=s*7E zk3tfLVP1RP$^3iIfUOP+Pmm{0tI4#s+SVi1k#F8bK$edL<}1JXUSq_&82NocX=yKB zo<28;M?YAY4EW~^Sl|BZ?EX8wI03J{T%vkpdu7e4{(QniPt{`4FZQ(De{n0Ij&>l0^#pEUt+%-^24zP_IHb4P708_aP^suk@B^LLhZk;&%>nZ}P)W=(RcKg-i# zL>Lk{f_js&tZ5nP^8fsXN$Xam6zI7;L_|?wzQ1d~4{g7k4~Pl8@NMtExWF$%RJ9Y% zG%Bh4+*FI8Axn>E`@xdji1N6eg^#UcyN7Z-RTD1~X<~I%!P=S*8yi~&DGCV+5di_~ zCFfWv6<;s|KbijcG&sj~aAbs)qVB&aN@b z;rajPKxzDP@*To&Z=(hKP=bdNLX)Rw79fW2D2gV=xd0-9qzae4o{Ue|uu}MyQT&mU zu;$cNB^-Gx0lMvaol#JkQg~Ul5n5FNb~V!T*kdpPS!?7qBHZPRRaX4S>x$(=0Z(>y zcs2T8p{hLm)-wi;o*Rr1nxppQ_XOrJRtY|-5-VCWR%YF1Dt}&YPn7c~jwNCw54iF- zDch!BBk(fQU{|Se8~u;HptDe7FFao9&TtJcJzjYmk`S{{6r3iw#mUi(nR!IW@r>IYgSsck-~;24 zqcZf?5X7$axqd%@6ptGdww2Zz3Q)FT5~vSL`7?F zL-^x(se~tXz-_Of$i&}N4z&M#&nUr@mjVgGt)r3e;D9bM{3yZx)`Kz;Z zaCj(LH4WZmEv0b(k}&#ISiw%-?oZev@B6re%igHruhU=Rg$gbz%c{CIdF|<;D92UQnS=^`qqQq-32%k+}zzvCJt)SM-~_~ zMkG54Zed;)Dm3I^DPXfn@>j`NQ&!yE--p(gHf219`qEF5s#v{F#SQf5?h|ponFmsH!5~q$Ztqy^l_J zXy((*Pscp1WT;88Qk8H?VJodDyOnen7&n83P1XBg73n%KtRMlDpMrjAu!kivG4Ydz zAh|GqL~ywx?MT2U=TouET2N5FgHS6~D=4;z&(lasz5UXf_0ffWYCt-$C#fG*xis;Q z?p|%#0EDIgf6Df|w@%wP&iDwk=S*-;&&vFyP#pgAqA_K* z+-RdU>*k>eT#X1YJZTh0lwy59=DTzHhd&EE5Dl(Gd&NZg3ou+0>xd|6Q!+ z3)dy?Dfh_3p;wNQhhQnoc8`id&Qy(F84O+N4ILF7IW?O;pgwh~+i|SGfJ}xFx?_Q&OdM&y=EZn|ZxV^49K#6pQiD-GY zTg^;gQXIjg+(oI~IHlN)sU{@YGBf*JcR{7lx64D4z2RjR`7*%58kf6=gUDQtWALq_ zJfplklcAiDD#(lzJuSOKV{*)8v(9DZZ1+YfNHZj06$Q>)7-!=qoCT>3Y(2N!J=n5j z&bjiiOOE;@bgQp$tH0@Jw05vPakATSvIz>afs@^V6ZEYMm+f1Z%^TNURHxOwJqxlC z@7&zF@3~R&;S4_P0zj5CUIj5A0e0!~NuTZM&K!?~-Y0+TlW>cY-Y1I56LMbpZrbfv z)iQ5l+-*i}@f(d@SBTAjxgzXrq0KR*DSfd3f`>O}$23(lfOwkJ_0nPSbZ+KOe{ikR zFG;g+De*t?SiVHag5&#@nx$ki8*R^$eblozseY4Jhis1aEnMEp!rEG$>HwAWx{*h9 z&3P4F-Ky#Ud3i>+U!KOSx;5Iz`}MFsE%hKCYOOf3U@%QEq`q9ikjGXz&Aj=E#SYz-{P* zro~Mb3ZX-qnDMh&MK02-*XZyd!K|Bm8$dqc|hf zAu|{zofb7yODiGDjw17A>P0PeQMbRjKz1$&PADvD{syd*HU%SMO*J1;KBTfknJdvY zgbmbuAm>-gFAtQJ9s0+GD(W%Qmd5uNun03-o>Sglx$j@zu94fXJl`~5*W>)mmlh?n$>SGN6? zM+&1+_ zayAW&UL$C#4!3>_99t^nTxIyPeba@w%207-;T+>ReAH^7vv=c?+(6H2z*u?Z;~i4g zgsV3uv}b3NvK3(-OQXSqr*9JImC!Q*<=Y)a8M?bjm}44fl-TwPkFlZr8#?6p9o!;{ z_`>yF-9d_|Mv#0%E;t&eheKEVxlvFFJ-C(2l1e04T%0qLh`BR)<9WS_&p*S+v?z9ub}`1sz8g_7X_3y z4+Urklx42iRuq(F4-^3fg%_dN!Z)X^`!+pUm$0SJkPdKpzZRGGfrp6PY8EZ#sg+pC{G2{XxxA`!cN;oM>yEs3gB-Yg z{$It(+0NzQoxdIojjhz#br6D_6n1 zT@*7FV~;@|otfqQmpv=yPjPb-!@*fUF*Q}h6MS?;2r?ifxxRrMovE1xh68B+e-PJH z^A%XDKt33#0JTPOqJ5w(^5MfqV+V~2ipvl~45CJDG&I`SN?aEzKx<9FVUN`Hb|}T3 zsaPMsOyU}T*m%-{j!Tj&cHhT0rM}LfENO&P=PL}@*MzZ;_S%x4G!5OYBH32D!x70@%zpvX-VRq%u!V)A&xuRM`3}xUa|p zYJ-I$AM= zc4A5`V$GC_2!VxFXzYF;Pbe+(@zIB>OA^+j7FLPNZ$RB1fLlRfA>GCp+j&c18>l%4 zVHif3MO5`ZnrnZ>Akqh(QwI-}uP`tG(m;Fjlf6A7nAKEMS5wi|7Xx)GNVQ2$OHIhS zPQPSBmiYRRY!gXG&-kN6$&E?a=RUr5*$y}~O3G>TD}U>Vcc`h;p0LJ|2y9<;OBECs zPAM76DtN&5N<5fZ6d>+0YfHG)LIgEw4+1IaJMA6hgElJdpk~5Pm3)n2T7~tQWSSC{ zBxz}B8hXZ*zMn*qb?ODwftR4WmVJ#J?*zB#46|?*x^Q<>cZ6KCcV;<{Yr#A*9#Eb8 zV)Ui^52OMGMV5plZ%nik2L6T!lr~KWlojy}s`Ik&$Uz6*9>sK4+?W%4eaF#*`szs4 zhkj4l@rUZmV8t}U^AO7;zu(WnsECRWEN{u4?8B{@`nxa7Y^1xI_tn)yVPA_|GYxmT zH`#@Bap-%w5t+R?@1loGu@(Aoc!~7Q0^L4$Utpv3Yx3ghZW!5p?KvlJ5xY7@8be1_ ztefQS^s&l{d6nKwu;zlZ;7#}IJNTGrg_Jszq(`R9d=b{ zU#a2QL33I{}s$FIk1!rT?Jt|@#e z%Wg^E?r)ae!n?+$YVYvHHVhWbb-R^AlnPXh8# zNR?aCN><7QXl#9TPH;ji5ESC;&r8I+xJ%jWW( z{+sNuplwf(uJfR6Q__x*O9=_X83^}(Ce!62WUYgslc`Vd368*SNT^dHb?onNA|}}# zUBJtgA3r~s;m92yx#Z6c99wH_+sSb1ZYf|VCoVqCn^16`Am&=p8j6YA~n%6&MV!vy%df2T%N7rhL&!LidEqn5H zJr$uIxSQ1t>I;nKvIf2JG6NwU3)gyJXy`wx9r(eYSW{E%h1IJ9wRNt8;5O!}b%oYk z%})vnITOx1yQ*4hAB~M`pm1bmhv^a>fNT3ld3i7p=?@RV^;cf>vo$hOWuvd0p(?Mr zHni`N8qCQ!FC2pk6cmkIQP`Qik%LAZRul9LxuR9Qc5FthgxF~NE`PBh_C0t(=Wd8k zE7m_@zDpwttUxYFmjK)i3Kp3U6t-G>1a3aS{<(jEA@^OhxZjQgDC-l}zSyuTu#uOC znidfCf^9O4dZzv%YPR#@s$vuXG-hUJrj#_RqLCiAb=aFsHRli`i((Lde)vhpTmeF7 zqa$l&4vz?&?jG=nNT>-`wn<;Q14ozxF2bJc)}H2{JGs}+-(E6>ja=+L3#BDh7WueY z2r}j3h7AUR0iL6pEjKNE5&|ird1Tmq9hc*(>v~{1^$dY5o3JVKmqN9%A zr{?RM#jN=gn+7*(cBZVYEp2N{KRP-p;B_7p8p?mJXQ(R$9yS=4 zR8m^0cKG;#erN&pu<+_|Q2zMZqn zvIdL}=RS0OJI@5Th(~%ORjxH?J0`4sy;Ibi(bX4OZ~6Wqgnk`p_L8rIz8!?D=l+e zg#Pp#Od!GehuHD^1KsQR;c>y`Ve$4W%(^Qa4B3V&#gq+~McRT;Srl?+ zCURL6XB{YDvpJ)((<}&War)bwFQ<-8MvqNajwx+CFzR`<8~C*A__P|D!~Y5*ct!IH z^w^VZdZ1>aG!$I9)-jG&PK$Nzn9m;=FP)k#fl}JRavbnv8oXubxHRa7Fp8=)F}fv| z4L7I#8`_Qa;@2RoU(5Y}hDU3JJEX}5e#{TYcK@)#G3TPQ;Ht52aK=D#;zZkc*?vb# zU3_oi5KB77e7=>U9&qxUwf1sJ|GF_A7%>jU3hivZHJF;VlHhN6C_yyLQ&50UcV^G^ z=eBP;AbD7jrbLwp|*0duQY)>011w_t_dvh%K+4UTL0cP=oRTMrwwzHw;5v5Q4AQ zxE*4%ZP?d`Bv_=_qk$sVM+Cu=T;~-w%SiAP}w_!0|SX}ItK;CmWeqz zrORpGzV&VO4;B;^C8VU}%jxLA+PHrxEwu*s%Y1wjD17;kn?Eji8S2s%abS3m26zDS zf=v!>2`6lC0Ms38WI{ayO&%u+a67Q2Q03>sb+ZAeP0dq$b9Y=@hyb@kzh%((T&O_s zO8%Uig-Kf#ATKE>83LKq8LsT8w7{S7z>XgcT9rE`^S2-RFc%9M<}*MZAOsnNw795R zh+u-XR|DUv-P!lHdU?n|Ho^rE4B>B|-Gwm3X}eY#OV7lhGS{1z)R1~OL;&Ef6yWjC zTG-<8(e?B97YitF>t}D6uPg0O6t7@Kh30dZH;x!^zDg+1XB;dLCiP0h|0inq_q%qZ#WSL{EXTE3c_o72&6Jjs1W!T`EHEfWqp zKKzVf6LI*4s8{VN!EBjufg)Jmv>xu@4GO>79vLKcX)b# zH{6s*1~-|cqWFnM`+3tNTsT@fC*6{#7m>#-=6G|x2M=acZ^L#!eW6)^N2xnGvRnc( z+9{QdJG$rNf-_tMzkd&r0oO`^i2^gB0ym)oDr=Y~1c!7xO_jks0~4!8G1ToGBMMhJ ziV0USUKxvBkG;nx7k?%fKcNP_E=utP&0k^@JCxtV3Y!{)&QUS)Wig<{|I-hI!`|5L z!JH-et{s)wCz3doH!3)UC>-Pl4ic0$p;-R_aK=!WZ1UT`aNfRg-M(@rKyo3#>NuO& z+F2l7_c02}>=bo?4J*(a3VKiH(Zq{<>%5A)NlEsXe@x6cVDD=D;jaCK`=J5o%+Ifm zFI<7%j=2EiytsurTQ1-Y;-b%OytIC;%E_Gv_ysqZ-W{S+prh+!BDj(u&?A#s`uh_- z`DNWh>wW3clY%X{TasEfF_y1-8}OoN{!#doJIUakGoia3p1U}*PF|?NZwA;+9Af9F zSjLvm?qb})(287_>KmWnpTk&|Di-$@*t&?rQUr@rRNG_9s-vLO z5*kZ2%fBbh7R`DD`;uKWVf+?u-8%lR zk8zh@gtj8q)S`2BH7>7dt(39qyZQP5IV+s#n5N>Bl7OX=#M>LDKz1Z|@6Jt3% zHy>$7%PtFSXL{JS+kET_fOZ!YHmRQt zEq&ouvi0}t`Q%{pHz86-Nn9A@6g`Uvppw(uPsfK41f4MPsp*40-QrT#r6kcQUGuMV0`;RKC9V^>~$JR%eK9jd^yvlr&)SJLPI-u82! zU0=IN{kz|;s$P+0UB~gxVfQO-3-a3#)7nv^IwOBqAQq2?iZW{)Lbjt;7)ZIh*XO+? zu|I&ZAuRvg^0Z0v;8)FScjfidI7XO;i(IX?^yrQ{l(2B$75fBW{&Y^%l* zesgmpL*}V3&nO*7f_Ph9@E*u-Ae|cvXIoiAr>h$d^;2M?q-r#N)ghJO)mNa5STo|4CUSIlHt1J<^7sc)Xt|^kk2RS`v&M zB>NgkvbSyQQll=s$BI&Ua=rUzyPBa^nfB(J43^h#hH$DhxxCwmwoZnq9sgmQ*I-%G zUTa3+P|E|hfg(#dKs%QdUh7Rx`VW7jTH%3*~Xu^rdtfjGUTG zpMrh`j?_al2Ww_hA!w{o*9zmJr6w z7{P{2;xMtMmp?~t^9S13;0T;rrC~MCr?W5f7PYn-cG&ET^UnwDQH_3^11t_ECszO77q}K;5!3M~2 zPJ(13O8qL+{o2)W04P^uVy=u`632^*!O!U$U5`(;Ul{*AD>>t|*Oi(*cbC1`bwGdc zLV4a`JRw7-L|^f>W%1Wx1c5KG?k}?3U~t}6AN{H>nyxcGq~2hwr8^*NDA&2whxM?d zh7`CFJl68zbs=ng|9A2CK2=4|#5T#(an?PiFD(4^dq75N8uG{;X0=k6h~oNZ2D zst$U-J^Vq`pL;J^*gwSATcR8!KS^Y&rZLU74?GnGJuE{bd98V|8PRLmn7f|$Dh39n z`%f~U9;Gk)-rAaYc{wEPp`T9&Z1WVt?eWXYevy$fv`llf8-MWewPogXMMV>!o?Ton z0dp%Z`L4yv1SBw!R~4(w+>v5Xrm9ilGEsZHpJJ+Q=2`i>fv{!tW5-$V_xY*mm55$D zHH|-)_G~;!pL3Aj#lU8>ZF05cT_km>5RgRiox5F*3O_h0%CFFe|B|XL zhW~s}&xbVS<_Xx->W`r8%PF=)+oNP`CsTiD5NL{UURGABuF=W%M6=NO;lps*1Xh}g zwt)mNvY~_}eI8%|>HhbKffw`lach3vYmY5&;llTdfdj%Xdv7$uSL5$n{M=@^jcRn9 zy`a-?xcGGV&zt?->Z1%yx<6 z8IhxcQ<_6aO-lvKlO*iTv197pIcB;2I7X3UesOS3{{1T>CI$@y12Z!lL7NRCTqXD) z_B+KO7Z9$nJsm{@n1CQB@VpJFji156$)Tid@N))sZdQZ-vAsX;%d28`IYt88K}K?F zvWi|oLe@|dVAYAq$>J)&#Pw4VQ2{9*G#8 z3Tpn7CpBEb?@iPpkC)45V-Ls07Zd@%eaFV{svcZ@xu4z6LUWH-E{BUr?-wr!1N_b- znSV1spb2iAM2Q&)%bweqXO=a&R~Dx>l922yY;DeLt@CZ~@h$hO(+(_k1{k1z@y3P+ zowQ_6%%s+D={qJS33a8#S#pAVHbO(ACecg1cnyeztvb;zyjNLEO}NV=ZQCxpFx;-= zO*z^dE-pDyHFO5@%;y$1IpDU&9RI$DZG^p~vMfcx9lJ+f%jt36Y`?yZ9(I(z+z)la z&0VVlY)=%!$8nYMc-kh8UJ)-pykjMIc?rI4SUG`d6zkjWd?Hvl9^^O|A(qjD0RcD) z+2feXYT?J^kjY}AXu&O`XWlSOW{^O&W#p3mGU$FwJ@-jYz|!*>za_uy7^SM3y>Y<9 zEOm5(GV_P?@8E8`N4SMciEv*rJD(>?sfx4M6W7LYUOl@efgZrVvK>71gFi31g3Ecx zXjHmuhuVgt_Q(yLUH4O?o*kZqZO?D{nf?=LXLdLTRDO-jfm7G!1#oa=EY>f=IMppJ z-gzxJ^ZYy95#k%SoM`bw;L~KA3}1b~h|StbYIC$8WfqgiF^b2r2RLIWT(n8_S8DQ- zJiX|B=?1>vjgPT7ip`L@>ip)C&5)7l zqL4#4%W(bQ(`M%Ec5h>mQd4{Ld%$t5NmD0j0y~ZbEDz#WELhi-@0Q(GDk8Z~=iic- zCA6y=nJRSiC9{oIk@z;LL&8fFID(Z;nQb2(xGG@ht_AJVe;xBMlv}&^FbW=ff9a(B zIbUZ#?Xr%eKX~MWc?8SY!X+5SMB$49t*npA?Bia36fN$q6WeAn_7tsmv$WuuvG`kS zv8H9QzGb1Ff1&2vV(oqezHbD9k2d!qmJ?nQg#NM#MzdH5M5wLLiBw(XyuSeKq$p!Y zp24-ctkK0%Tnxd@|Ki~F)XdCBF)_^1(F(AWgkIHf?UTMfG%~XM5NJx!#@T|l#_!(- z)<|G&Nx{#bp_i939N*X?qc~+^^z`KgIo0dIwL87M0A`FC?HNx%Og|A<%T(6nA^pOamlbSyN5^PJn(xU%7qX2V1NWWblQJOVSy(2Xh1Akfs&*Ur(7nsG%N4x z8l~kfbF2x(JK*p_fWWd{wdwtjA*2`Vd4eYz8ZoTDq;B z*l=NWNqF8SdErZbV?jDl?Z8kEXgNT=TV?;UZMFxZzofjqd3$@IKABrsB&McH>gW*g z;%6jdVX3HVD45z4kKQ2v;^3H?n)qaCOK2}Y>h}A$vaYHuPyrQl1b!42NwYWrUni;K-n7@9YY_nvFDss$5zwSPy(C~44>Y(b5ha>Qu7|L;#(j5 zbGId>h*?YX?wF@w;iLeDK2_@M?3T)^mP$+U|fb;A|+VH9S&ml z5Gzq75zG;p6$uqk?)lE76e_8HdsyMk^}jJms+#w>x8v+fBMkFv^6o=+Dz@hwbW;&2LvcSLG1l@oeloF2 zXxpH=g~eSUPB-Od>sK&Ktr$SkO~ChnwOEWDspjVBe?2FHqi`jPVR8{@?zlLIf`hI* zMv<%I=b*7LO3nVP?E$y9NNj*6;^LM8nj>RHIWAmHT@OHhR2|NWWp-lY>)%+XlnU7* zx<++Ii*>@na79CMp20O)BQ+X7qT0BqF5<2}yKq{+sowK&C3;`&FcYPLRP{bW=-N9x zBZlaqO~yZsXg|}5N5ZgrcBrU#DD|EAZ@b&LYcJ5Ffe$m<#z27!Bl*#=^m~c-`T>ht zsoX!ihY^R$?eW#UiQRMlfbz%n0UvL&NKPx1kdyC%Yh>k$SXKBXFEVVQDQQ(GXvA`j z6(_0svGVt$T39})O`W_LdBj$wrr!HlXE5X9KA1S7w4hB{c`W2yZxr& z9!~g;S6JJBC=LgwXDdzf{$dD0SX+OmpT5km{?|wvV$`#h@#lX}U}GIYI?8C{P3qQ6z#cy&vLf?V&cpYY7XeX*T&*f8Z(Q|6gK$W7Y(~9 zDM$!QObE-!nx9(oM~YYSM$qotO^+O(flWP7@+kErxsZJF_=x$rh~XS4oRebRLlWG@ zz>aD`I3_{(;?JA_7v1>a-+8#Mb5-vh8m|@7*z9ic;2dioZk;v$#HVoI1Q)*PXWZE}f3VZhVKAuQFBu^#$1nk^uSg zaq)bG*Em3m831A4QA4ec^C=fVM>}y#FE|m@9Pwn@~Z=YLiG>)Ryrg@ zP>Q>Yf_idJ6~KTb2o-y#9g{G4TAhE!zXm?simu&3G9@r<1Q_PrAD0r)ycJt3%WtcQ zsT}k8_YJ3qN?LuVl_-3Fm%zA^$P#_JsIwt1SeBPB8aGPL5kei3vwF(JSNO>1{o)He z&J@rh84phjSSoqt;bru;`-l5|W*pO`1ZKtoDfRW7LT{axe)s42?XUBJ*|~31;~7M` zUAFa;Dym{EXnng*`SZZ=X4ALfHl;Nm)N9pc#sU6+d=fSOZ&7;@Ya91F9S%C@w?qsM zDgql@8#=lV)a-&{2MkPL6%#Xe+HApsg^a`LE93rN2sLGawH(LZCNP^3cWxj87$Nw8kV`%h1kZ zsp_eT0L8DA&PHue8pKJesw*o1RIKMzpHYii`|&=3Y44&tj8ZT_4rqYxob^NFN=0<} z)$3z1S>L|N)XGS>OaWUR31Eo>;T|xbaN@0AFLLTUc z$heTGsAs+Y!^JKvPnH&J)}w$J(CR+XYKEi-bq4X}gr) z@T5YfiNq~HSCnc}cyzUc!8gS9_RxMuASBUp9C#y6c|bj@vw)3LgA-`&Zz@lj5hzppo5T9rv@KKkj|u zu%j4;FVup)OYd3_rRA($fJclP{5K<#&BQG#?Q5vHZQ9@ENFIFDK$&e7s~Zd zm3Jn6yYLNcw?@+52`n(7^_bON*$Wh9TCWm{blt3^1)GkA|ig#di|4IS%gi|I$~1 ztl%1H(o6r%&tmUsGUPzRvU|s_9{1DRt*2%E!sxF>f9+aaR+dVB*3` zLYcT-3`m`?WwzGM+eztPAv8in%ilpQ#EMrFMj10p-af`A(jE71F2rDHp1d4GkRTy# z25?1jGaL5#ayxFi=I46_`Vo;vE3UhmntJU$y8CU6QNErYwL=T|hQ{Rz_6xu6OWkKL zW30A0W9A0DxO=pEUf~E`Jsx?T^&z*qzQ783pAf7zyI{wKgv$EvMrZ zeIbeQ$)19Y+j@ib2#xh9{`T@63Zeshsvnn}&b#O+oajt>t@HN-pf}?6E;@obIs!@( z1_cv`BK6sV!N-fihXD^)u5r{E4_iF?lDy9gbC+0P&QCx?5Y`UXo9IjS!hx$aerN$I zxCXk|)E(P|M)t_8R>GA?0DwWN$sBdqEofcLqM0|Z|`1s7^sE!lW#Jn4VC7Nk>K4>5otCTF_#i=!x zF6LxQU};y9j^k&1ES|Uiu0aP5va?jt3KbTXf_O`|!^JzT5vZ29*g)^G0S8@1@(_W~ zTUU}}%z7;rqGl_qJ4u|ZVte@AvwQoi); z@xVN@nWE?i^|cr=)|^2lNk&XxaELj%hPZFKI6_BDTjR^&rQ-MBo9b#Qxg!4RkYhNw zfC;~&qLQGcW0H_|rjwDCPCL)YBcD;vk@WZePse7wqvZ5{_Fm5SY8Q*7jq7vReBZ_H z(X^L~D?(VB!{+L&GEww$&)9^!9ZG9xMQ5hgxIw?qEnjLh-(g}F)EJ!)t@Ylr8f}aWchH2F>&wmddyOqI ztq2q&D!!nddkBprF)hV7BMMh|-NoSr{Km+N5p#zA+H_P2R@`W#zO}FiBfP6lmei-s zg>ds~5_u!;gs#aBG!5UU>h-HFvg}S{zNj{Fgv=LoyRQ_D!Yp5QM9^ek$vjM*kNY+O zTGXsA#leM$X~Bn96TLT~!t0V@`65w;ib!ITu66lTLx5mRg-7{)o5I(5E4ZUCUz`y! zQD3kHniqZ!r_Dfa=>%Nn)sypKS>s_lA`nR$^m9Hw3!gmxI;83S!g_a-?#jbz+F%M` zE_x+aLb@sQ_g|Jhx5RA0T+}Nj?%gb=(%Pt2uI4ML&&+#Q#$!9=`6k?-+fyJ|9RZdx zWAz)M@h8xpTCjl^9@I}k;q~;Fv(j}VFpdC_fyDOYwdR7lEHO)oLj`{N*=`)1z!@1b=v=r$E^I9NjV0B#xD)oD^KfYJg zt1a$P5bG7XUT3@V0NVKeJ+V|NhX*;j-Sw?8<4nk`5t?kk8>>6J;bdm*Vyt@APKdtH z{p6K_+IfPH&?8CZJ+#^Q)JDgz*-+~;c{cs8SC~(>YT!cuXNG^%;1t2^4aVT62AbFX?B;vy1 zC%-7?^p_a*(K4GPa~sdmk?o;Z@3TtpVYm*ZlNrgOu`+#g?zihro{h!N#8lNV5#WvX zbwayYr#t0%nIH~<)KLrV%ja? zHrxy#Gad1MJ0j_LuYs$fnrwf!D2nIekRBvnhn(WqTY-5eVXb2z;|dt+f?eLwbt{5fPGs!s*k(HyDDqp9*`Gf@Q# z7Z*gHy({dsR8j#qm_P+_?!c7L^T+%}ES_|}(Cm5d; zWkk;#JUT;FUdUw1=#QNV&0U??8mt#g>n=M;uce@$RD0`SVt>vx2kU4`J_;@zAN9A{;V3d0_GM~TuB*;hZT)+% zDAT+cyE(c)K3Nh!ASCSGqoH27=pB>>nT!~Q-*WoSDk?Ufq@;kD{>l~bcun^@j2aj& z?0=7z3m#l-7)X4!-1u2hzde?_O0V+;GVkz&27^bYxP~;!w5?cEg{uw8X^%+ZR!Dg# zc6AJ{`MLjUR)i0w*oOA21Hz%K5GmoHqPBgyYjZ(DH8jBI({za`!sBX_p${g}+!)j0 zUm@0`W4fbHB>Y#(^?QPcgRSZD;S|H6s7GPpm&Hd~81Z)G8yVk&bNVl|65Z=(A_y$; zXn3MsJ@V96s8l}z96<64PMXYzh-O7E?VAQ#~@%1M4#QvH@fLXfxK=#}l^h zNUaQc_&5pT6^+>nu%8~V?Xcp_vQMmR?L%eg!Zh-OB`e-pvJovE<>%|?u>Y|-ix;6c zOkh7mW*#Awq!7;u>t&E}W&<0N{?Rm&uTp%sg?Fyh(CkG@JXl`SH3Fi|b)WuAVaGRO zMYIzrpZ@s+kU(|YiOIQG(2Cd%D*Vxp^=c(2W9y2jTDI?%F4>iiL^KkN|0jqvB!prg zwTV@bFFbpP)h=eOPe~DVnS4<+dD#3@&$JU?D+>W{36_i&BRSTJ3-Ij#L<8(h3_y_u zA8^cwn0v$MWa=)A+gsZR6}?L}q)qyHcqr}g!;ENtR2naut=?!Q-F(5!sWaGLt35=3}aTvtmr~D6OG0R}D z6eWTp?)vkhtKGA#A$!a+h&2~Am!Jas1|}vZf`WrTCSzrbxcAawz%p_MCuh@rl)k_R zUFmp*^-XqKCTi;VsXPodeOeLyMY778n3T}KIlM%bXN?W;f|&{4ZqXC=lxwM^VaJ5`&$)j0X&k<6**WyOmJ41M*iCK ze4=(DGjCfNHXCFMqz-w?Kq5g#F|MciBHe;b_~OqqBr`Nqh<;3yv>;1)u|33T7n+~$ z(O69=yLn>E?G$K)hYBaZF*?|_Tf8iakAJ#r6RSN<{xp0Y{*?o_hS-03UETs(w@<9*^~Q6eMmC-D>vo+deP6636B9R64H0mE->fmrJn zj;tgHT8bA#XE$k!C|v5 zzv1E`!r9N-2g5KYqt9`4Y`x62?*8%`>rYc{w6O2>`@oln@vXJM6WjYR;d|)kSvb=5 zkO+7I68z4s1oT$t1B}&1H~6?vP)T~>IU2TvD*m}8SZ#HI`G=6;m!0|YVpr@uwqpWE zY}xLobe{jy@K3YU=eQ64Siee>zO8cGH<ga|;a zaWs>~e5X3S7$O!?G8(>%6(Y+sGef3v8$13gJiYb;4|4<$lVQ76AnZK7!}PC1Uu}OR zRRaufTDW;!kU4i)MLa%#8&~-wk(OIa^}dI3=MDhO2(Sf=^9uvqC)C^E{+CRmj=)Y? zP)4f0fCW!r&OBmn&cp53aJUQ2k)&nIu_a2A9Hc}8#w8Ps8Up9F4zwIB3T!sIWLre3 zl266w454csV&~4?CL3Zd{wx%gLP^oc*Z|%n$QAu;hC0T;aS((#N{$-!wIql#Sb`?T zBxVZb2foE;I7hZ%b^<(xsbdkSZ?Ngnd|YFrnuv59E&#YvCR}NQ{@}e47&j1WvK}mC zoKj3(aKK0=DZiN%Fvf7wtxr-2qgEf7Pz*zikhZHB9b4I2t_(6Y5JE$DpYuq_Ez21B zKER^TI8uC{?f5Y-#`5jEk{d;WT(^m{2pXdjz52P2-hSes5srAO@+WMr=0LC05$&1z zxf&hG}== z5fKsoS{g!2MI{<=u;gq;k7B0BTjaAz%FRvGr z+c3j!k6VmesY+9NSA5qtc)7<%)?FkMCcI7`@|YAWDBDRMl-dw47J*>j3^BMVbpUFEqu_uye9ZaCM0u_vd>Z4VfSJoBo3dz+`9$dROFd zP+`NInE8Y9)nM<~pckU3&b_SOc}{CH__U_i@H-{TY)wwQ2SBzZYVqDPNt=jTwJ~?p zgb}MNdL^`_l#&D)X?-*SU0}q*Ir-B@lBPkos6d2w7~<0;4~YewGoGSJ3v=+S5-Lg} z-AL223atw&bO(MvB1C~m!d2q?6p1+8Bpi(Cn*EDU)w>;8-4XDjJz3okCfgtAf)ayLBmn7L4Yifh#el#_CCF#fvw5~xOj2<19aO^+`dLiLdf1&MV zl4V89b1NsbBNaac*INLanE#l717lTUisljopu4=6d_e^fR zVb9`X>B{xKPX(pDp*eU>SHF|=^klRB?b!0%)9{Vpb^gpBHSlfaY;%$SY(2BA?0)K+ zL&)`siv$^Ui!7rjq*D~u|7^82!qZ{7;~$j+W$7&@yxrGst)m0ub16t>!e z9fog8{y#Kb1yGdz*QGn8J6=J$ySuw3q`N`78>G8Iqyz~8Nu?X4q`MK2ZkGOj{Aa$I zXJ=UUS(s(n^PGF`x#uRj)(5+)ca@|e^PRrM0H)uR%VdRNTFK zwkB{V7Up7Lo>4&8JW2bwG;ME@Xs@MD=q>~3i_{ugtW88$^hTTzI18KtP6YE4v7Uvq zHu#fhtz!efylvSy;b}s63tKC39IMAbAmeC*cz0Z0uRKE`IY>9634<=;8fY}At~EHG z!l2;KY>M2GT#Y>vA=A7q*O#T>C3gQ~r**{c%c4zWi}BwWWyyN(%acr4Lj2c%6TJJ4 zf6CL<=>H~pjeJRC)E#67L#bWG6_l%k#daS8quAP+UEYp{!n0(e{&Ppb?+zXbGh$Mr zW)FH7Eiw)jWrVqA60Gq}OdvI)|0sBJ2#8|cX84nnYZ<&cG$_>Z#f4`+&qw?ps+@zX zic{OkE8vX=lwm*p zjLv5%$60x;%;eQhkQSMiCI>~AEuo+=zVSgG+U~cJ^zj|cOy*MzUGT^zZpM9z?tZ*! zA#K9lXFmJ~a7WSPn`m^S9P!~K8qb#ARBrCi@Z-^URqrB`VoTU@;!Jo5yCs})FGEDC zBDNReXk3!U&8V<@Lq$KyN8v0d^ELIdlTvf?DS<|u+%{eMK-dxG$=9it-0=;%?4CfO z1X;;2Z!WG+h_HGq6IN%#^WQhmhuB(Qj_u!{yO==vO(KzFVr%^n5H@GvRtD0zed6BZ&4ipaBpAEEq z8XI(fCh7lpMRayW^n5NGl+fw>;szPtrRm@hjAd0)+2SlNhU{FEcpom=D?$5zyyIwn z8YordQ!1^+!!U1e&ioeSE~OZ>=aWftsY0-8XknbV`;Mih^x<-R;>GW8n6Zf5xIn%x z2ArH!!eIQn0s>A9!H-6mI$_W{xlNO@Gjs0>C^YdIbzsCVct7G~6?pw*+iTiRi0BPB z>1s&t&07r>d>h3c(i`4ox<+F%H~#ui`OXO$fz;^ISXQH3R%34MK7Q>{v)LLmP_)dn zHcH6EI0xX!QOQX%+TP*|(=hqKG5vy9GVqCueY*@zZN5PO#b>#ld@0u&=0tv}f|C*O z791bRq1{xLtQ`XX)yfftXP66SbnZ`d8xO`R&7o&kk!ZmmooI-aP4<4_4CTB)+W`bB z&KD<4043758X6pLog=%V(O||x;qfO?Di?jL1T!mw`t)8@oWg!vC%v{9jZpz|)l zSbbxo)?m|BaMP220g@f)+@Y97ti6AleX288o(`Z%ml27~c?ye~+g~jrp1grQZ0)OE zq5d~$>mAeP#Uz!|LTwLoFLN|rnHAl(eDQ_x-XcxO4JEZoExFPuw%8jXDBM3wAF)6$ zkq)e%p^u%pa;@tKnJvv1bi-#>9z%OWPde4!2iQ~|J^i~*Sxp>!|kl3*FkPSMB{aK*M(Pyi(&;iLMcEGRv{!sxtD;Uih{{&=Ir{(Jnhj53ie z{I~CXAxjq$VD0gj+S*S$(B!aP8hP|@p>(|p-*E4#yx94Ft)_{r%^>YoV2Yj9#sAqs zozW{_C8Lpbeq+*e(oGgcaJb3mnX0!!LOS3i6wz*hV317cX{LTOP`t2z-0#^!;iYMN zBvZ72bZs(uI9M{4kp9X$Y^!c>Of@wkd3;~Xn|>oE@giP?s9K6d#p@69NBu=`5WtYU zEeJvT>deIjDlrnlHA!iMF1^q6Z31m???Svx?a{5d1a95pd=zaaE1*McC)UVA!i0of zflLX!GBNzpZ-XR#iN)g^j8ZK5?`xE=N^A2Ua0Sf&l%xwdt^Yx$wT`59Hmgyx+H{ zK^YfzuI_(6PS_zJ7=QYmW!uky1hVv91WE5j4 zy1U@CPB>w@^xJfe#bnZSATE6{PPvaP_R}&<;=Ir2BP0~KUHo<(YpSe?^F?#$8iWx6LTvxfGJ6fPlbD0U-`6jXeN z3#E7dTv^$~irzSgl@W32Kpek-qIUtos}=Eg8?rUrcJHnP&>wPo%KMo}EA!p>kB|1$ z&Zcc=0cje%fg|%gtUKq7P|Mdrk7z@^IQedl=c@2Cl-p8`a=0d9-mhlL6z+S2c0P-9Ev((w_@XUeCT4}n9Edps?z=+`e|Wo0Skw2{AR4C$aK zWFv~(h@;_i@YI#!Z2dYZG=sIud}wy!Al>|-!uwDxz;QKpes<>5{V(FSi)hu2l|>D( zNvcS3uKWA4zC3B1!Z)$ae=xXt0`Z*hO4;_W=sMLR0W-pfomP9F2<9zrM0mNm>)6lk zF0Ea^@8BN%Mpf5z#ZI@Z`SSe-l(nLQ+_P~vJuX4Umy#A-X=!*mdj2p@>4eY(P*3%^~x-zddxcCQF+=R(vr)t@Z-cqkyPO z{H^#BZVLSh1?hk%b>wviQd6<3P=`C7-!Rw5XUY@Zs-e5b1y$-gvS>42;z3gmW@y}y z(qlFv9H*jm1e+-jMOdQ$ z-{ZebKOftFm>;BZ^;lY=W=f*$y;DYwB?o2%%#25iGKRftQ+a`pMy$J}DoXlQSwHln z3#l-}FAi7sj|&jx9X{AKo6o6?QCp}cGlWz^Yos>eL~qEUSUry(HlNM@)O$Sn&C${N zGvV~ud0X|Ae4}^}^DMK#m*nN-X<}2<|C$j}BMK3D{!?~t;6g~CoK;W6wny14 z>l0G$D-=bPi|odOW5rB5!1v>p*R;v3$F4uC%M_3xB{tI!TyOWdsrLTX?QGZX;MDDN zn@|0ghqAGPlEW1jfZ46v!AZJIviD_rkYc(6YC97ljyFQ!b`f3o=kzv=e|P)a|D!+6 zu{xDe3Z)?u-!04ytMw5ZHF`}FLqE4ELi-Rb-f0eLqhX^9PysRo%Cj9q6o5im@Udxy zgT1zHU8aq_R!tH+aD?axgy_EeT*Uhx`q)`j(>>+$iovqD5+M^L*Evdq0`A|Ur8c~E z<_B{5K>Msob|4pkAe)x!2nFk2bI6~;eQxc${X5)y2OUljcmxhuvBYKMN@NUG3qpGaVExcf~>hLws{ zf!!t_JZ2{C?ED4<+Wz@wV6vOz>QRoU(@JjV$h*S;kBjoIDB$UhG$R@URf9fv9tNX; zpg!S@I@`fP8aw=%Spe)ZDigqkOX~^tcS#*GOQ(vf-Fp-HgFoH&)U>rD!0IA8TogJy z1rX=0JBF|GvezI8BIrzJNKBej^5pbnX=fDhNT7kA;Y&*`l0ZDZVLk^B&3pPZI#$6% zoSKf%ir*grWn#as0Skt!@j%~`PRKC$)$-8L0vF@NZ&y)~2<-%n3?zuWhSU$SAOi^$ z(^7hiK3ebdWIgo$vl~&thOgbC9?wh(0QK7RD3XSjly9gaDyq7nCknS^nR>t`m)!_T z(4FW!l6NWKEQC?txaJ;uvRr?$Gvu)E-J~QRodF5i7Oay%+i>!Q!bFg*oh2BMDaXte z4&YNNd1W2N?!+S@P$zPC)Pr?gJ4zNSGs?x-firJ!!h&|;m>TBM?N-2eihE%n?}{J1pNDB76e71ok5TLQ zD9?M&fjBP^+8`JqzZl?->K~l=3_Ve>T{cm$SvK)`YkN=iyff$p^SoI0_PnNP?)>_W z-#^eF?X<&_%-OIbPF7MnO`3ui}eT(R-P?r^<6UsWWMc41v~EU~ed+&>=% z=@Q1t?d=9-%fm>h6GO)iZY08Nkd2%#wXH*Kh`vbE97gIChsl&iXoL#*WQGz7l_Xh}eu(%! z?t~C*7l9y?pBz#kQ)-ET36!BRv#=pl4a*!do>+9NZkW{Muwk3fVUtjG=U}6<5mY0d zx;gZ5n^2u%vtr|VvEU>IKM)UVB_1x#)k}SStZ`c|Q%YlOkNio!9v)tN+ye5mOE#Uq zb*x8A>|kXqC{Kcd%s}%E7qPoqC9cwWF_rOW&Ypj@-G3V>>`AcTF+6i4#0$slB7wa4x+yiVh%A$;gM5BZ$+?n zn&cqk~sTdYUoQCjilEmpyJRVtbI*kNG$Wda5&>$^M5Vr> zZ0W+9-yat8-?wa2C=%fSARpH*5)AmNQY_|AX?ZTQm0OThCH^5ln_oT{VIMCZ|dL&~Gs8Zb;$y-4$ z3=&NYc~-~J2$7lyi7N8=U!nvnzmyGXO)jfyQi&xN#5DSp+(2JnvVbTH^o4{HmR?{j2gyW zYY&9&F9;xbd1f^33%Xye*?xhnbq=ULZ%v$^Ph)~xSy%lY zI3WL~%cy7WiZMgVD7Gj%p8O!rYk{aiZJklhH7whV)0_|!f0%-RCmzt8i|ucJZLtB7 zdPTVm;P_zPR7s2q4By~{fS;bq`UHPMwiOJthI8h;bslC6HSJ_9a(yr$HHspvr~yXE zDU&Bvz0vd_`ldZViP`W5u{Mi0^y}$u3mwO&(Fw}Dre*fum!nsb#4@1r%4Iv;U}yQ* zGImb*7qrIUK%Z@NiC;;NKklOpOmN$$dHw`wVj>8}X8Z9=<-_;YwdEGQ18rYjBu z;ka2(FepKsFwc7(L#=rGM@fbCk^^rIa90&p=~G$F@?edRS29_TQ+|HI`t+Tgu{gM zW>zLNE-Q5kJa(j5eB=oEpXozb*LCRsvJqX6Dl3U6%ymrWi=u?#9@*@mY2VqDpm|(r zoE2{y+zaFCd`k`+=mlMRkZk>s-SB-JV9}v#o!I^(2vUosJ3WY$DFytF%BY+uTtYs; zkxcU|9h9fXZ%P-Tw2$vVzYj=LWy(^@+IS(9dazRU7z&2GOMl614l@di>rtPC+u4Ye z)hfB!2+{r=&e)XKyec?WN9A;k)<6B-_g>eUiBqm#GXmZNR*mz(eEqVpwiKCg+87HZI`d;bbP7S)httsZ9N3&8G| zh6lex8d%$LFIa{Imj64=C{&ya0X8qKG~=$}_o`pYza(|r1%7|4{oz||wm>x_BO^!& zijIlln9?r z3>v@PtD{g&Jy=T1WLazmbsOhE4(@&m5pVPOOT0$d5snBeIhDnk04x7*DUlX@^0$YF zELSGbOaNHfw!(Tb=^RO!FC@NmN&CGK=m~T>`l24k>xjBZMaqw$=F$m*8|i?uB4Ys! zuLWdT*Ce^k;Zntx%;Bx$%6ZU6lG8v=bx`t4k~8Z*?k>qb(mNgm5b^HZge~>~Ru2Hn zLaZzxJX=OIy>V~7q&P9Kr563Sr`S#`r}*Rs>If3Iy2bD-yD7oePHl5meCujF(24@& z46JhElk2O)K?dLK2NhYq9Gt<^CV{zRE7>%UpyqH!fJS|!1<#kRrmW_mCQ4{%ZIo}= zSp~eZ9qVHqi3zO#+>*(7PU{~2v227cOWweio=*6Dx@ZJa)jP2qfecvaD!4FEuhkNx zuyea{*v6PGEVrIJ>j>0d5Qk5 zLiPu7VrQ9~3IQkCSnH=;kM851xZVNZ%rZxvQ329Xviy;-DSlgYQx#uB_jf?qvvg62 z=c7*2GnwRYcTVH8Bg<;aWoNn2sIC8moSY?UP&dey5*H9G<7saJO>>H=mzB{Wb?Yri-^pN#4tjDXP{@GgTF@16Z&$di-0Dn05e#N zsAQ1!-tBDu-_-14{PzSFcdy^CP*OP~!Ti3rgj1qyMxth_yM!Cum891cE1s!+5=qy9 z^#SdAC%gt?SS~wo2&XBaF>D0s16q6G- zrj*-Ena@Dm&5#f>X>1hBK;LH>m03c`b|*4;v63j+T%l@T*k~fgI~D$sElge;PxL4h z475v!QIO{4vU`W-%RKrP6BJmP)8jdEbaGRM;=h7y{@5=jP?8ZGdJyBo7pF01-OH|a z;KJFexxS)I<^D4Ty8Ny(%m)n2(Kf8=cx7P2mhqFNI$)iX{Jt;KT1DpggJoz31x`}j zg%q<nv8(Uj(N9O2QdH_N`h^pb8`Oxvvbw%Tcxuh(*WV4Ev3M$diD8T61wBU5ku=1m7;NA z%)@Ki)~eR$;egxU$Cr3r&!8VO0pt8A)p;}Mu?G>Nx_(ddTto2;1%N|s>C|r^!TgMN z^)|H=g7v)3+Zob%Kk5gW4D*A8jd}P7m>Pw4BDaYOM5?a)k`?$Kb0Y);KaeY{;Gm3Pnp(gi0?Qd`X><`%Xm`)q2*-j#Fhh9_{~^f#5V~=#c1A)VjS$Al*t1>qX_J z&tDieQc94~fmD%Sdz+?FP0tK|9gz=N77F?2#f2*4a82Cm)Q$%Rq z=NK$60WH~tjnIUPxNy>j^7KIBb>3s#SPX2-$RWx7qCvO#0{6#N)HQ&_rLF@Sn5P|1 zQw7Rw<3^(2i-uhMxJ>eB0@H}_U{AN&P;1ux{OW9UQO`6VuqT4Rn{3#uQ1a^SLmPWp zNy8_0NQd|NTVPOBGcr;Uh&rs8)D6Jbwxm_pykoFqj8W6q3N0#c2#G$MWkox zU)+M3d7rYezjT4~ssUFP8YwLv5fU)#Uflz;8eF0*O9(^Q!#OpOOc!E-gE_%OkhI^f zHcEU|g)ipV1sA9qI98}Sq5qMBa!T&2OB!`#bfX$8&qL3`Nuo)68Rp0{rB0YIpF(Nf zEP>4U;b6lo3p{eF+wHcz!_Bq%FhLi96`+d%sdk$(xkpBoVonlxL=f3nJ^|0jBIJfG zy)RHG5-2lszM-!WkfvY;<}IpvLy#xqX2ssT)=06^uDq!|#f9PyviGi8N=bW3FtLdm z@;nS{@zSpXvK?J;yEiT(auK0Z)I;*6Z}t|iWurnD_4VcyR#gM7Y?>JBzwq?X3~Mqt zrt%+Y&OAfwh@?1haUX>S;Gt8kVrR7NC+s0EwX57yYn$e34Rr7v(=78JKHFto`YvW= zG5C)>L%EfG2jgk`K3L};v#2+hfDCj|iTkf6Y;JxJ84KWfnB-R=1#N#fbl6WRYLh=Fb&A`T8@ zr_tV}bIJe(;gigDi z>N2%ha+&?M8cY!l=Fh~rbb^VP=0T)^!*KH?ck?tNhR$^{(14OH6|;p2mKo*e1E#~T zlpJ2Q*@IbPTHX9nc#I;nG}2T==&>|RcVrGLxtC`tBw5zx8}QBP(3IR^YVa;AX3t|7 z8=ZfoEB^%Zp0T-E*`(|5&kB^|*$r8i)W5HstMeuRtfG1Vu00`alCtZ|o+%d!kU)<- z3A~NMB??20oT-_y8PL;E@M2?Nt$|gfOa~6=2B46yZ z?7or{yZ4bw81}d~v#d9WkCAeQxYO6<2ZDCt|wQ+JV6O7@=Mysx_R-?lO zr4bu(Jlc^ZpcLhmgFiW~)eQ`L<0ycKP^LZP80xd2AO36qT0Qw*Xo-GxZYd_E=q)Z@ zp3HW?FaDhb;|3^lUcEQfjYMTC9Wk1;D!|}_PYjkQayK&V=+B9d@-=vr0%hh$g36C| zko4fQ7#QxeAHz0;S9mHNZpxxH~;g{Ld+b!;JeQV0N66KSL)69>9f$a)_q7Lt5 z5cHkm*T|2gdV$HgmLS%wn)cJ!vq%+Um@Xzfkd9-If{n zMBa`qxY|V&{G6{hpg+419X>oi%m>@QY7C7Z>iaW zG_#LePd83GZaf|{DIVWYhz6*9eEb{$C**ez163eOWxipp3bd8Ym*;7Ut<%mY=Et$j zj!&5DzBucmLS4;sbD&Sf|2mOT(BXsXY}BE&dg1%q}V`{fELWu+&PKIvjoYzBsDeBox@^YIu80 z*t#vYOzZh6WANR*7%2~rB&>7MKtcfsmA9hPS5Es7((@N`5K{831m}(=>3EBtGLmq7dqn0SmUSFVpNubLBJp2h=}<-CsLP4e7=0jbzNqjyCqT zvVQi60?U>*j!qFel@UrbVcjOdt4^|PZ=?boh3zU2|IGXekBpQ7JE#H2fIU9W2a^{q zAIJ&OED+VorsdB$mBF}(=_IQ%0m&pYmBQ-c6lZxwxfI|Ub-n^QPxDhVaX&5zTsBvH znl$H^RziUgqx19?xcw?M5#kllL5Hs1Bx2SfYzSCuC@0zXCO%7o;SC}(#S@!q{V+{h zP{C9XUwn6R_rNwsjQ6Dn<7BSt(E0{BYKGb&H%<7U(^LgtQu-51JN>Wsb-F6ZhJFJq zKn`$9V+;V9Y_#kUYVK+ZdYm-PsTdepzWn+@Jo`5t6iBj;KL0T=g7bH%V`7JfG8;nE zipm?_L`e4oKeddbG?v|Om7=dl)CY_~!}(oaQmFW=Mna^d1FgJHTaLDSr;{6OBTZCL zSv^+HqBq;}Ld3+~>M1RunNQFwSj@m(2WloZpc7|wfv)nZ9NM8U+(FYl)k0Dn1z<}b zpP{S_odA=19YG~fHK8T$b>bQzZERKF+A5_9%bO2-@&-@&FAi167U#?tjF`q&KZ`ir z+?q1u_UW`x_|?&2q#_^Dn)R*b%5AV=4F+WAEcn;+~e^Yv7k4~ zxidnv!!P{Q!D-_#HWqR*!zCih9@1Q6)UVDEk?#TrG}|gCCut5%rn^Tb(L~ZI$kI#w zDJy3b8z(B!zwsscPdr4|)9S6M^p#iV^p)xT2jJx}okV<#@DX2QWen8hA%PV=xEVw2 zOgA|rY?x5oT%G12G2+c;Gq0~7$a*)tQ-5^JX##38m*qawINF1q6kwaoC926)vdBy% z$VT;E`%e!2E$LTB7#eEpbH~qGU06`m2dioQ;XbX%ZaT0Tq@)@7Fg*UA4)BK5QGe{D z#_h$&8O^$TsrK;L-oeYiypUb3@BdGP+0-!93%j&t1v8QSAY@KWTRk4cpKGOQgU<#& z*qGYlQb?+;&0YTRvfwwdFf{$B z9nLRC=BS`pHLKIruCfxo?gOfj2mPPfQZZFk3fveYcdy&DBLqwgbjiu-*pu(%?!Q|p zolnIK6iEauK3;*#uD`odFfSN8M?u!AG!+hXR|~0EcYc$?4vW|a`KQOQP{Nw5R7z1Q z|3TqWAtYzwFmiqyyFE5&(5B}pGMLOny&)J_t^-Fu= za@e!9tikRfg)G(CK59g6g}C@Q32t`!@v<5$5389=O0tje(B(RdvZvj)_+ICja9=oTt|?`+_KvUOk$mFiHcr z&X=EmbIU7R$AWFN(HVgDtgRh(aKNCYr417O5q|74xHqJU5A;&L{0Sm>rcfnuV(sug zL+ZSm9E6M`CZ1md;o@Qa9*$s9Xzk-0Z^Nu!^}K6Hz}{pOi(t#|CRvZ*_Ueaz;p^#pXdqK|H6#8GDof$XGqt*v+q{%$n8nVv8e0IuMjCLlD zUm@j<vsNRd&+Lo;zQ)9ty;BlV7 zfPZ*_fB$JdUeFe7_^E!bz5gty1=YdKqMVv%D8$+&94iiO)9ho)t!VzxcSJtB<)A>w zXL}ZwfL?$}B2wc`nwgJg!>V8X?gvZAsTb`o(kDeh0(#5GsUC~Rb~Rn7XXR-3c8kW% zZ#q$UQDLfsK2pfHJOx+957$~{gPi%~s5CgR;Uc1Qq!?|xQ)ilC$OQ-4Rjm$|7iSg9 zQQ9QS1V(KC&R0yjI8&3I!5Gl!5DbOl)&(H)+`9Gu&X#O@GDbp~o6$*FNOZ{XnR2dm zn@G-=?0Xq2)ocAuJLr8f;U6R59$&`3HT}Y9ob@QLaRi1pSin5M?weSUfv%PI9&D2) z2PsfszmEh6#1^NDn(L2k zcA5Y`dnElVT%50PoNt)!A!V>E>YKEq(y{ko2cmATmtsb=VR6_v)rQPR*1AC4BNqXO zw=3d`R5Ms|!HI+tw!T?b>v9*RiEwY%(erJrV{XGNj=b9Aw~Ni+x{KA@?1ZI-g7B0- z46??mqG^&;gxU$>{9K{k&;MOrUq^p#|M$-p@)St-%a_tVwODcvS^7ODVoV%#gRVoZ zuEQT2_pH3UaQ*6muCCy$LMr^Yl0StZ;{RPvp&-@yOpTeKSb<=_m_Xr!f7416pWIo6 zG0_By7gC$Dsz6GpS!|0WjVuteK^`es5gVFQVfSBDVq!vc!1{9s`O41#ROYdGLJATr zJhmC=a#C`sAY;tSm(`yU1Cau846=XzON~V#s%R{npnnvv_fG3NN%In8v6psM#k3gv z*uc$G^sR}Md2C(E+?oAH>?)=~b|`UlG!0wLy-wq`f4bfWb(R2-L>d5oyQ$ z8FI%1gv$S66A^OIOAFcRmh`{vrEMAA&3<7`@3v(K%U$$Y86A&(Gx%dQ1iqL^u=`EI z7INNK4ha?!l@gacB~wx2UY%g**i{!e>ue^^UMvTfe_s862jm&Tilwk0CJ9xhtBkC8 zajgoIrLbk|_^fBJ`6et}vM0{39MM_}DLo~{9pE41;uZT`Gvw=B5Hr1-A4Nz9iun}Z zxu%b8F#s3g+eqb3%n?r#ojgw_K?eu3vF#owIywvE6rUPYAAe70^7(onXr%Qu^MHu; z=M5~8&LB)<5&te$gRW&C9*~Ifw^x@miXFks*4#_*4PA0DuaME^Z1Lr%{-v#m5o+g@ zzMtLpmUADJcByG%f{~!p-t&;)SL=+M=$%bD3@G9#`g5=r#?R*R87`pQyQD^M^HKx_ zQw*3vmMFS@a5!ZAzZYOngtY?)b6Xbk64I!8vRPogdOf+zz9EfaUTD{Y4=X5eeI6&$ zZ{K!FatmqUTq)J;1x`^~+XgJ4M%0mPb(21~d4J{I_@)xI2bRhRksqCnINy8YCCx`E z2SFKxP-f(-2yyP$TFjcSn)c-Ye5oX7dXX;NMFYt!IMH@&SoZVd5p~SrGCPrD^X*qMxHbIrE1p zA@Y|D2-f`a^Cw<>{8)L7vy`$j82}Zq79qBxf*34FDD3FK0uO=Kjik9b=hE^Hh-j0k zDZ+eeAEg%M;b0J>AhVmLrWuee%pr|38o{Ta8Kh-f5DiW?Ev0)X-7?mXcvFa3tus_R zwR6<^(7scan!%Jxkw|T123u+v3Rk%sv=#f|yzZ|PLsqQ#q(nha;0L$0Ni z9nN=I9>mOAIH`n0I%XES^fZ%nS7J*4-9gh6DUITyMxvS8m=IF+784Q^4*cn2LqJ5F zoSTarA6G#`M;9-fE^Ji{QSl)FEQbhkNP>GA&u zG?K=A1&@^l>YaZ8Gm&c0uCC1;EVPEY$vA$R@LJDIzl9bNF5QLSz~ATcRfKBLg1Fx=1woKsFF2ze77^^^$Iz;Km7p2P_<>}4-#OKZ!IT^bODHAr3efj zaey8?$Muv{|3I+onm1~~O4@60{D!sKvyCmM?ih80DSN;NfYBrA_a8oaeW`p2w5~&% zoy#4R2}Q0)2t5nvGPQqEO-2YdmRnTX8g%=mW>Qw8@ybx`oiLli{yUN`;#1*ZlP782 zTO?J{wEeKVP%-q*n1KJUp??%R&5O}rx0Vf)#2#|qdU$`&Ao7Cs&Zxsh7#26ZS0qyD z1I%ZG4yzY%lW8sDs5-(M0COOd!_2F} zn;xvAND1%}TJ*S6wAb;JDAbr6-eZ;DJ2~^kM@hleZ0m2=hlxL2L2P07n40`efZ+pWzYa;s#5_jJgt3T>9#EU}CkOLnUX(7j@dl1zL z&vTNIf~~Sj*0bqZ0?2iL;`s>0*rqZ|$e};V{2gvb-pKa6Xkh62^A6SHO)BP@0RS-3 zMg5+jhW5xHPtS1CcD~+%yw6*h7#Qadt*sDD9-cFMP@Nr|n}67K<5QrnrHD6UCC1|B zI%V-mDyy^j8NUAFRkq%jMs9sihuhQj1Cg!JwLn%KQcwSi*^Ttso-n?CIR1bM`x-<8Xi+1= zc<+k&&4}S(GAGqHoFPV-Mh|TZH;C{M%lYlzl(9Gh8fG0*t11CqveAmwaQI?!Ry3Nr zyN9?QN*M&G*tkLrdr#OoGK8vyMqRFYHEiV$_ReBSp|Xr4o*R#LWK;xB{5Y#NwiF=; z{KBN5{mwAaQ`(Dr`d_|%ldH2~O*}+P%YSX`Qwtj#$zF+yjSY5iO|>#Yb`|VL9|8eE zy#3>2Ys*Q0`fy!l`hD{*X9c#v9HPek=VCF$>lc0p&vOaYOsv8;*J*Mm3a}KXC)Wxg z6xwZae|61Z|2>p*$mrj0UAMeJgKXUTYIjjXkwSFfT`y zRFqNzpdsBy-)LyqD@ePCYBl^tL;53s`Cc*jvH{#Ysa&)P9W#sYl+om%mHWFr^^5X2 z4gogc>8+0tM-^_wVzB}O6yxs^HP2g~$S8#Hm&AmSXCrry-~ZV=_a7Uqi&;t&{c06p z^;k;3;W(1Y&zIWfv7>=t7k#{M0|V`J62g zblLtIf+FwR>cR9TR5fA6?vI>Lw2Z=0^hETl+ZD4~Jn8!}7J{CL`TnPn6NrUidb6e8rliH=B#aTNtgfWq9LlZof85;$e@2tIl_| zE^g*exVo$xdIG(%U#1=6slo6S7ekgJ3X8-205L;r8W_U=z4f4jOhD z67ZV2tug0q+Iu!PF6z-0c{0obY@1Am?FM6dBRmM$Ed$#?;tT*lT0&6LMFTMHyxK8< zoL|EGKW*YXp8a!s+}Kt<6MddL-Kcpv!#tl@|FFs0aZC0%K8GLZWsf83bB8M$cn=+T zJ6i^+b`Aji<}D=N1x@ri>WpL){Clfzd5QRhp9&9cwkGbL{e9wpw6MkMtZRx~|6tIo z`d;U(n1J={Z?P<&d}%Ei+Oq+H!oJ(LM+Wq^w$`e*C=G_+vF8$WTi$+gGg<6j^RN1~ zqU*uVW1sH~t%&)pgatlyB3{M;=<~oGO@?MBO588bG%&R%gQJo{4_+DM1$AKO7!FqV zw&hH#tiPx~?$|`k9mUCefdm>RRpXa`2Lid`p5zFD;Pc8W5uX;$e%N-c zs6JVH6+I7WL7l&Hfn@F4g+qNtU|#r z9c6XNuIF2#MWoWk>rg;j**rcx&=8|J6aytse*WtIAxYQS8Pfd&BD;`K=;S23(zh8i z4wY&Kg*G^=nF@LlX`Yxm^>;M117ET~a`T3wXwSRax2&hXWVtOb$DG_;u20u#K^q4~HEN51pR<{k8nT3T^N!)|q zLqwHgv=hoL8YV^|2qpum+*yPqgI8(4ESfVzaWqpI=zjg01Vc{W6I7B9O8G^7jnrPK z#@drts&$l+tv#wM{JD+r~T7kuMsuF;a`}`ImCbFnI-M* zxhpDvtEtP|ZlGxC=oGg7K*Pi129=SN-}Y)jB1;!5g-A~(rfAplPd~ni9T!f)s8kE$ z`8z#QsRgO!_Y@)nwgU0q*hW5*HRp?a=aM|KO_$uKM-yAG zgb%78Kt4#Nw$WDlQ$xoDRld3aXaTZIAXnt73odw==Ls5clZC{-S~4V4T3jm%AJGjX zzTe+ji3bCzBLe~jG0oZYs8d^pI11LZ|4SSZVsz}t&g}=H3I4OU3ueJ;?x6MU-nnOB zLdZ`E6|JsXs*(GrDWVTni&ZNgg~7Rt{DA6Mu8&S^T73`Zb#wFPD>Oen*si(!@?^&I4vrJXFOQF%W_D(b(Acr zKth6rYz2}V2b@6}2VD_%UY$3eF{&19A{GS3)QI}WjeNj(m@J11>iZ-Ap1;IIjX3Sg zL}^NM1E(rObSKGY({F|hIo?z%l*tk~U=^Nb6>d%a2Rop|v_ ztyu1+a|=H~1s^(Lem-#bwq;Kry?1oMcNW|ruv|yA;soE+Wh1I1LD}NU@5@+^$~S>( zE&Q@ixpMJPOM!g(^Cyzd5r%)!)+Je(ol zfN%nBVHjG8A*^$(U&ZgP>$P8JHE+6V+r=2Gt~7v$T2QUKLl(+9D#N5Z>TTI*-oM*d zu^Q@FgLmkOV?=bV%XVEkWTtAhNM;P^Tv4qXae4i&bZ$eBG>21!?cl5Z(R#{p9>SW<(JpENmDI9R?;t|KR2(7GJ)TZnftL zbYAGNMb{9LId&96q;7j09Ma?j#SulYU1*&(=o%$8HfF-kX4E!u}-2h8kY`i!!wv={Qd2>Jc3iLtL;pWY`4P6xTNn0rCD7RF<1NqUSPbUV){# ztQ8JwYVb#^m&@%qvzB&-BxiACQL7@9a!PRN2xA{wN>sAM>#Eaoh8n5GRY9SDD`C5l zzC%knl$qRxO<%Fo@&2~G$+?3Xd4(Ch_=6aR2JVb={uYiacb>M+p!K!UvF%DsitSex z^M5pb1yGf3*Dh>2q?=7Q(jc88U6O)yiz40K-AJc&`BF+F-3?MA-Q8X1<~#GxFe)lr zVR%+twOpP=mxdR+fQOIO7wbNrQ8_{GAf%H&s?Q!PvYODi4YQn_?--NEw8Oe1Z<^jk za(<~;lfxy$Cz)O(iop&m(v$(O!-l^TrzpO}=m``d493J3NGShmH?#|2uQn+eY)^;}4D0BPcGV#V`f9uH;)1(Xk=`y{vNeS*);~3+Rn)^|1T{ zg(1-lbvq5+@{#D?HFthGrHVa{J-W<TW9iTct9g~94&tAnENrEE-kjw2EnT{Y%y zV14I37t6KcN)%}_z1v>=kv03XGZ;&ZI?OB*YR6)wB7+xYVhO+4#L9At@sXTrR9cFU zi{o&>ij!#_l2i!&(ypytKZb~tUvZ>W8=1h|HqM7_TO^D77;~A7*mO&bM~Ji$3mKrf zw768v`*y%Q-Dfh&g5%*Rg${Uufs#Z}A{=!)aE`cFx{qVv(V|;JNvX^&WjWO-8aWQ@ zJ=N`O?o@{nWw<88oJjLDV(17)`8>6m!EOsFrx2pPea?ryA)040SkYbM@qHtn9pl>6 z)hZoh&WyRk6)N1?3HbUcgvtfD`b5~a_mm)Q1Gw$F5fR};;o(I2fs*f^atE^fP^R1+ zoqJlfzg7bj12`FB%?e?YT``-E;h(|~3i7N!o>4X?kz3L`$Ap=^8R=1qs$S|Duuqz^ zCI<_Snn1*=F&!AIzH2!2#s-QfMBd*a=1vhCair#IjTt#PLD^E^XlS~iFc{~i@2ku< zWC|Ae^0Rxz4aHuNl=2`(M@GL!5g z$s698M5Kg;Q-9$21-Sw++=Y(*{SN+5Ss(=QejB^l}Por-f-rw zw)xfHF~F$;2c2?S9TCRK9(dHk?4i{TDlp(sBj_9IhMv_3y?1iX|J8`_Qp)P<#V1&0 zB)wV7n3+|zw7_{|W(}>G+?pl`zNRLi=%v3%3j8HGdb_0er^!IwgVW)&=qcoM>2&eH!};m!XjY$trTWPk3)? z+Twl}SabkVQt9U52Fi>h4O~1LJ(_M`l~C21-RiHt(5_FJm&gu=t2$hPUC3}Dec^a$ z5w!Df2i%hnud*%YJ`dPa`zLDP^qumLaua73spa8pu_SK&VrNn%RR88U#Xn|YpRK&k zmC|L-8+mR`AoJi6gUbTzm8`tVlGQ24)v;-a_@FK4M8YsYtE|qXH%0(vt|32D`oMiJ z@|1ZNwptxMLR5fo+Qkp7@T7H1&<-l3bKMk%daJSQHYb%n zm$N6cz7KsjhEKc4>(^Ha@DKlGwj9_Y%ei%!_2$h7(3QU$auMSFXJhT|J@*Q+nhf0oV2$9V?b@uJ zRy!2_!!PF^Hcg|+?3W2Uv^RM^r69v#dPE8V5m_3kPM|@3J&$+YIs>5GKW5-^;&*D$e%v43*2<%N{X*vtM)0+ZhN>a&VFG#ntsFM%s}t?NC@gnMh~-m7Qj;Z9x~w3dd1_UE1chx zq_p@>-r*-sz|>Aqrb-nrVt}Fo3K6I-fy$Vmw}X!ZH72JI4Gbs6i?HC=ZL$P+mjh zLtaxE!H6@6X>EaXcN8#FI#f!m>s%~0? zIc{oK`;RBsB~$jSfbG1S?AK%2?vN2t!*=dqtRI z4uU=d#(-G^u^D}GmW3?spL5__y61HUS*5kh3tVu`LFthoZ_0<$V~{G>e{XyR@ye71 z&`K8*k~R2;M<=c97fNkU7zwsv;#j@M&7g43P+^A^8UOfNMfpru{eDMVBjrESdS={t zqM$yR;BZ&Q2#gg;C5@;G(+dYGp1qPK5GVl$YYU78OK@Y8h2}uYTz_YVXiiX1LXnl^ z9GZ-M`~X;*x-^Xmascg8*>;Hn2;SnGt3aKHJ-{Q|`d;WiTmbwef5iD=wHNVeV!h8T zV`yFJd;9z_5yrZz*YkSu&Dm-w`a>aiUi*DhT%Q4d5K!39215X+29-7ik2r#P`Md;dDU)JJ2#- zr?zWjwV7$*lE!)MC*y&=z)y-CKGvjyA%UO1xt|Q9f5J&@UZt9ucd3VtVT$2|pDN<&^9j*OGePXxAGb9hiwWJ8i@?HZD_ z*zy1R(ntK9o3TkT*6;6;&P2qVU0sZ;e8o9P%&Zw2Bk#753x-RkQ`0loM8yP)g5JH( zvf|#k?98#O{n%|&?$njEVE_rnb1=&0d*dYdiidk@+=}Vod+$3?9wLd(lAU-hzMnM3y?Av66^-*qyBTpe^3)PoxA+J}55h)A&evXWsfD}h-#O!L} zBk9r{Hu3H5aYt0a@~}Vxvk3|-W^!Lp@p`&!{B|-%91?b5gj3}r9lBeZMor2ufRH2~ z9gc#pYnk>Qr8HIivBUvA5KfYah$ui!U=VnwLOHp(q9!Jc0eB)IP=JSGdUmFomuADh zC_Qq4-ULEZC;#X<`0k3v$BtQ4cYdxD=N5t69OnSh$M5FPK|#=}O}m$j=GarKl+S zD6)tOizs(@czh`7`Gpjm{^=o+*H!0k+92E6-<1LxNiW&0REcQGRe3cDaP7<*np)q% zjPYjr)u$4s(289)GbQt5J{Vy+`s&SdZY!?778~2`V@`2G%iLY&oIZ0lb~7bnKZ-`s*=5R}dZd4gv&3AtmJ0HtsCM|t?=Wcl ztdl;}1rLKVyvbD&$&uKrNyWfyVzZTc;MEmK57rrFH54erT18O0CpHS!Cm6$`kLIkV? zEDL0Fg+qveYqwQ&lM@wOmZA5wDInZ9br^gU5!Ti)giX3 z?B-p04|gjD;Lu$HU|X&@DJaVY&WzcioxGJoCNOa#He(kafQX5J?69^`$ehA!WwFWi z(H@FHf$=PKP1$ z7fDb+(Z)_K;6QOl*T-NGX5;&(OsI#!km-U1y;2jG>4wbQI(tIZ1XOU^x7r7NA_+ z)F?Nn)|#0yG-C3+`I6^CwQ^eGNBUc!{17xd!x2|#{(TW|4eL_=>hm-n5ZZw}%)DQP zD5j?J+9UMwWkr2jLiyM%J0%YAfM;1d_y6tl@2;0`eDYt|>UV#f`4qKw4H$g`7o<1S zN$-_nB8RZh*p#%@C)0%e10Ugb;sy{L=e3t%+?&xw^cQ!MU90TE^kPPV9M{R|yZRD> zj&5@htXcTV;2!FqKRmf0Wuc}>2(cz^F3J zg(a7}tx@yT0b`u%%}QdL#JtLZ(ExSDi$!}cUqN0TBim}y^GG~Kz#H#v>I}M z$L7`_2rG3ZvO$K&Wg9UtfIf^LnJ<;bgPE0ClwcyYK}pgf$Lv2OT%P+~xr5KK)@`Wm znl`Cjj*BYw9U>PInj2KbNDK!b=^RnojUu;x&Q=DYPqgi%68|3Ds=e#ZI}D~_iRzR% z)BFvXXY%FS6>PS1VlC+ddsFs}9)QB)5(1Za1HK- z0ZUSiiw+oc93U?q-a@CLItU7wdlgz`#I>sa14G5xqlG7}`p9LSKOS#I4PHl>yjnsD z#;L2TEU>O8BN)cu-isRA6~Kd0(VV62__u10!!$Zj91+G@+mWcs>_UeJRw>6roDu(BbOT$i~q-riG_5i)h|T# zGAqR>72|+FQ4^H#S5R{Dj&Urw0DXPbpY`=!Mt{UhpJd6|NG+yR9hFbfn zQ`&1<^h26mZ6s!vA^@Fn!PqpOzw_2sh0g;|e`jA4K#;oq-M|l=s-^_QU8V>Vl9CXZ z1gPQ{db}qfAHnnX|1rY)GP;-NCn|Lf2#rrIM$gP>{T$l(l;SKtGvkku2A!U^#)whs z)cl^;1eu<`d?7e=yU6;}2bXMN8h|L2I9a8Nv$wK6@xR*4$D#0CxLe3Po1M7z4BNtC zo;KJ_JJIsvJkE$_ccH{Dc(163U+2(ZU&;ar1AV9Rf0SY`C!TTSiC5t%$Br??dq<+Ivigd5ULaI$=3g+vsncfJAQA1mqz&2EG574- z)VxUC8kjb~L}SuNVMgX4N-@()ZhZq-!qBQiOcQpZHT190`w94$J)aHLJ=0>6dfpo= za?OKxOq->Wl$4y%z;iJ{R1gu~HIS;JQP0Fc3GZWKacr%>MndcExheawaLgArJ_DVv zpioxRn>X<@78RmHbpN!vVMVXeCUxr22i7Wvc)po;^bo`8DT;+1G0(_KG8NMA)OAm` z$esY0Yq3+o+;uj+I)6k@^{48U#w9=2-v+gSh>@rKSoeM5N~5w*Jqx3A&-kI~rb z%&&T-HHkGg_HNT@Q z1s*(C8*g=|M`u^(FiKh14@e%KP2YEpx?lKBV2P=lu_&SMn^>BGY@Sel>*~P}muFMQ z(Vm!orK9VKLTUZQO3IbN^ajYuclNb%%kyy^8qrxSRD)U0yQ2e!UKY zM3~Fw-|0Do6FuxvJlqH67Gs37#CZG|Ugw+lu7%N)DQ-6{5-wGlbKsz&grt zB=(rcAiR_1qECy{>>6G>d=LTZ($&L<7NZ+cUqEPzH83Pg{)YxMrv!FVq8(l_Lq`Iz zyi$urY~dI1GB!ViA4zj092~9AT0-HwA>?YKt_UPA%xXlHZ|Z9Ll$Gg{CC|v zTlfian`a<(IZ{!J!^4t^SI8}UbS6a6N5V1W=vv`s08 zZ~<0KD+_Rq(<|y(1Zea$&*TL3I*yG9`*K#NSw_gD>^e zk>1&T!wAF+-_u#x)W*kh^H!AIk-)n9?qi~vMQMS8bqWuogf#`{7bgLeh)+yG?G&6o z@Z|mbFPVk4+VW<4@`q}LQB%gaRG8&G@U6-;78{>bgXlNG(Q|ac9}SpJx?s9L&{|kV z@x_vqs$h~^J)UW6d0m{y5a&k$Yw7`2M8svGFE_d?;n4ZPT;tFEIXdp}@*~_&5|N+W zAglnfg#Hh}@a%bAaLQ2dEvbql)M|NtRA?nV92FNwT*pqfda!!JiQCeG{tcv|E9Y*U z`PtGy9o2h>cBaP!A6h$n2agERTN9fd*@Q#M}4fH#9GRq9L%Q6^^V%ndi@&yzl>E zZ@RvI4@^dbWvCjOv%n;W$QlixIun?a)=O9%N`WY;`8tqdn5dE9K52rT2^uHRG7?4B zR7uja2A~Ob_|0`Jq9DGD^RFiC>E27ukxMMcV9+8%ALcx7jBIO{ffu69;`cnfG+ER% z3w*cAX}Cm*;?%Vs|0fe3L3R!!?n6`nW(99>0Y9SX+cmCxY-XF7b(Wq2GcBerGx4$z z0l-A`z*50^o$C<{pAV+C%n|+`Hn-RBkBlHr7PdH81A@vSub5B^qULu#wd?N^ZkcXp zm2u>t?@Vz@g-0Q1!k?-r!p~wk4^GY4VcQ>Nqn?G-YVxR9wS7kBCF!wcbmCnpgG2@{ z42Bh(fBWK`LyI6POO~^4`chiy>JHvTU6|IdtHrtbE}=UHf&H|ESxyvUZnZbMzDE> z(OY;27lCuR4g&c|AOSa-JdW~w0R8nqhC1^U4UOZv^HaNHU^c#}W3O%3I)L0m5B+j( z@7=~thsGe(&8w6^g6K8)=syz-4Dv4+BIkI2FSUO?LSUY}Rn+qsZ1BoXQ54IIay3;XD<|HH<@?)6 zBOOL%!-@TfW7w6-(k9!5AmBr;nLV^mzbd>2j;9GA65i@9N?|NH1TC@BJE1kxQujlT)gt6baAqm@y}jCCxsXlWs;C zv*E@x#Q&x=AO?<;Y5nyjpFHgAMVEw?-D*35%zzGOfz0vIPvh@Du$LL^eCdX1hAIQ* z@C8|aqq}l_XT((_KJoJ-0%)9jpUYKs)q_Fe&&0iq?Wa2rkKp2qD?Z!rbxi~>k8%G3 zXvOagDZ7pfXjOe7`PX5FXXN%f%eVqy>v(tn7q5^`b)G~sKV=kstF)$POdKB zn`_as&M=&uog$vmE_y@RW|@xtDwHtXJwXCv`o#1^^q_;*vzm^M|6n@vAC2knrN8w! z{EmO1dwmN7)(MLWLzY3}R{oeomQ*lHuXB*&%1zfQqV^4#Gytr*7v*?fXsE!RD0Y=L ztsS7nV3rP@U>uzq4s=acT;+NZ7WR#<|L&NgJwGDr!EG4a>_OZ237WPYM-%0gK*GlG zqaLP_&2sZxMUGjskB<^wHO5call@O9s=8oXE+JSFBaahmzk40DOh91qeFatb+DIbd zoA%?}wt--&Yg9xIdkyiwVf=>rSP|);%AMr3K`?((8img@PRmlKG$IzS;9vi;sCBB4 ziSahu*6g0#?{_W-3HwfGh&`i=S!?`kaN;uo(NU z(J80f07xEwYmwH$!DgNZC*wW|nLkb8rRWe-($6HD&7XraXA*Vs3Xaxa*a%%95z*mn>4K{zrTK0&E7|aI7GxiaB;mwLgdL&O> zSl*F3T$3-93ld^=$na-zeL#1p!b2iFy?>Hf91xyn=-SL57G;z&bPs>hPcN=^QYY4a zMVYv~UZb0}M5Ghr-NPm;f z=sx{tw!y_=3S*e|%GzhNSJ>~%!_ABT;oK#iB&U62hv*M(;&@3>uDS~M3g3^8i$6Rm zsFt}}rBY|#3KY}N)Bt-7Cc+mvEf^Dlx*x>PfTtoB98%z!;miF|n3T49Yr!&Y_5L}7 z$NH^bU^|sRG=ZQHod^~&a)9N*+oo6nhQs95d_s`HaJO8&PibzNmyZUml6N4GHNyn% zl@8#%|5X3Cdn_07W!EEAgPuL$&Em50Z2_g~pjU$M!+&FwW*jJDMFwBm{}iNqa_O`O zzJ->BGd&6Y5$FDa&sC+|1(PoU6eMhY5B_@zAMx)pX^+5kOYJ$3uJDXQuOzQk=nz7lD@bZ`Q&d~wR z*lVc|^(UK2i;aV^YvMDqHwPwfNq_poO}(lxW{c|g z;%fb5gaw?S)elq%-WR7=^3JA1|}l`RnnZ_8eT2|YCA zuftD1P70$hkB2W4wL)$9P!Vs1AlV#74dM5EH}v9NyqHA$Omj7UrQ&yLmjI!1;qU|B zQGEmarjMOePzIg6OF;SP&__o)A%19tvP}}VFb%I2aYWWTIyNxj*#VNA5xY;7ntrl| zVF3OrAKeLuk~UXzV4Vgd2*VWpCmBdPeifokL>rICvSh#*b*>oFN)+13;!F}FOVpL? z7GE%kcPEQa##3Jhz@1;S44--G;G%vA%5mk^5u&cMWMQ-azK`bsQu>E{BmkJ#1^Phg zOz3bOD!Ay!bc$PGh*IV=8FPw$o*`7u2qDg}q zzNTIw$}#SPQ{(0dmYs788}gjR=FkkCEn5*~+Nw>3HaQ6#>fX1hN1kO_IEeDz#^?J< zS-X2$)3x1|K1A0<^5I5tDI`>ryV`?36vpo$4n~|iSbSKUhqTIMniHl!7Jr|esJ(5> z>a!Olo#_qFp4D(k5yuJ0~^Deral1Hth5 zB4+~~hYZ{R6>9FLXTB_)K%-I$i5FHJCaCs-Pe-z@DRwrKt8+gE1c8`IF1Z?`|DM)l&X$Qa3zy!$RWcq1oPJQP2xMAGmb zVhwTs-?cszt=d-viTLz^DD;78wKY+j>Pm`9@cbIM>Zz(}vU ziNMndPM}9d35nGf{VQ!__1R)c?1{b<`~isf!+0pDIEYRa zEBm+u$|vJO>*03ALzPQGmegoBn{lAy>jYgSg@BuY)uN?Fry9&CzK*!hc|C($ zzlJT27GB&$gzQ&CE=b9TE?SdAhTXDv3urRcWVuEV(>Cyo9muQ)EDDD8RFh(uP966V zu;VU8f+z^oYGwXdqzoT1mo8)L&;UjHO9UY4sNIj~?yloZl#$f)i00hoA~7|1eWXLf zbi_e`d&X7BS^o&z;YH4n+9C^^>ReBX6wf%yZ)EH&$OH>f5qRyMHdOmJxf5!G`qMj; zkfKy3UL1PKmR(rOuTVXX1ZM_sk^rS85DB3Zj}H8q@1|E}<8+U#jqTa{;4n-xVCE!R z&S2x4Tv^A__-iL8b2EET2gncIgv4U&9nXbJM^YQcjuyK}MSJQ=QB5aII`VoVvW((H zlpj0>KDhS~>+F@A&8nMWR-z$z`5cQT9=W@1bLI5Narpx?XgLVMQ2n~hbtJCt2VD+#;GB4z;^RCwlr@!m~;)n=8i?asmE1u{^(U^ zTKg5ePUY?ZYLyF7bok;nkSKb#G@mTKJpq$HOskU3kGT`K#%^83h)RVD;>yOa0RRHa zC=6vvm9!0-StPHR1Ne9oz(5?^e!x|>ini4JJyoZAh%Rtz;=cAld&bkw3cxyp)r&uVp_21d$&Gjzm&noMmZLb+?Qse5gLHsf1QBE1`# z%WE$KJ{Aj_C`2+I?$59fb7!)gZq!L0atU->kuZ#O$qKlWg_Np7`I~;TFp&e0=4p(K z9>nr_)Wi<-{A_=b+6f4FOYC52r$F2I^v+1~4JX}aLu4NLjvUo7uKj+OHR~!$VC?DA!pN?~&WSZo)4yfy##4t0YRQ`H%ecxdoE9Rl z$4w`GbLV+KuD$FRQRASI{2^?&5x5x#kGPEHmKQ?7;ZQ#@Dc54;ARzU(-{#$a-ap>& znA>3li-@YaX7t`5Gr0VOGLsHb1bZ^bt*Pd#t?w43hCShnIMd(-vM;Cq*wB$$ooMYXE{P!rzULvgpkn z99NAj9$3-g<{0!t7H+oC#L7wscW4i83$1|vlo_h$LzAt=wjCgW4pei9I$;!++qE^F*fL9y3tlC|zB^TMN(Ivu0fLbA(4v|1l! zjn()EMhU$>#|{)kO|%XYTAr2IY=c1{Tj-1<+mfr(ltJ8>Hxl>){%8C?U7-?fdxilG zHg@b77$9yvZyuh!Te33xwy%%Z0f(B8CebCi6CghWGFCJGfiP z%awsK#~x7Bkdyd}`*fs|In*$U3{m!M(hERZcYs2w!223_d7wR}d9}6!7M8z-v&bU} z6zp$5u$FzbL%>*XT#!12`oEn zjU7QMzg}qW)wI#}`rwxb6j%%c2&F+WMywD-*LK{gKH{k2=x2vnX*(}1*7XPb;!D#h z{f-TknUEdLZ%O%0HS&JV;PkXp{{|fw;Xvz|%lxwOc}cU4h5$7!w|ra8n^2QCsGM$i zOJGF>ZxBVSAsM4cVSlyoaWf87_xOk$Vj>njfMWTHGvR#0~saYN6Wim z$OHDh3>E0d8f&XGrL(!*on{K_uWGVPT&DhyGxY19RAY_UZ}~U`eQ^H2DyX$+3c=PeqnjK4#ldGUcQbXJ3gT zoatNr(D>3{M6gW%{rGocW->;o{%Gxr?>M)m0+N)pSyE=AZhttk8OOIQWx4N(3Zrs^ zM#YKp;Z_)vdpLsdFK9Fs(sW4#;xZiK!XqB>Lu(*{1dyL2W%}oXxCueAxc1cv9jM9Y z)cp2oBdg%qva#4EI!}`2YNJe%wMDJ1C<_iO0+!zow~*_mLVKtRDx#ejv_}~nZj?n2 zjVFpRsmM6wAn9@!jIPDohi?IQWwR}2A1!P&32-9+PYZw{Q%#iUf-47=UiXSk{TR#_;8=hsQ6;qF0&gZ=}@> zDMWlhqXrt}O{y$t`IcPO;CB(xW@++20Mv8kmYy37TL`4fcoj*&jiyL+0US1~9ORp1 z9>c};yXPj0hn*pP(QoP%3U=z@e1!Q(<}50+r#pZ-fnSae=!1+F*L#gwVgPJzpz{Mr zV;U|-Y+i=$w43vAQCX|b6me)$h#-JJ3~M(p z;l{5$>RGUW{00SJy;M227zd`GH@H++BUUpM`wK=EazMp%9@5G3tp=F6fgKiHcm7`b zUA4+%BwFch5%o;KgNKIu#Ns>x*f&eMDD4;yFY=GxSk31A98TTPFEgcDp=WiZ?;Wt_ zk(;ZbZhlAF;ZvzXE6t=WKFJ!)$5>_jD;1um-vc!|Zy|O@w4@>Z>1(}CaHgU)9s+HF zfe57B>A3(!zx3bG)^Jq7L}CCSy-}K{Vaw;~e=Bb*u-kH_HtLmQKZ&*`7ye@UCn45V z!iPft9`%ZGPLgh-XQN8XPtc>KG&L=N7b8ReA48xryILE(OJQq#{CgtUoE%#gq{z($ z=*iTvPVqz@0Ikejk2)=?O{7KiYw*?`_z_mja6PpYOX-0tU~t1bA7x7Y^Z(Bq$v=BG zITkS?)t`D({aU{rjmhf*SUL4znCeELpi#EzK7^vLOMxMr-;d8MFF4=}TVqKR9=<#>hBVd{F1|pO^GL`y zE&|(+Fiq!p=h6n}g+LZ%i$=#Lpt3HUwE7)`;0WuCBPCd>KUm=xpYZrwmX*+X9gMoI z`D=dMhwSIa_ixji2*WS)@9<5K#%?r7;BG5y6B1?&2~uuI{c(QVS*7xp5#Q)`&-T!H z8E9`L1`RXZ#S=RC8l-Mt3RX;hV(2H&nB^7XHK&L%;lzegVacOYp5GVRXKhDv?&7%w z!crYZOl}}2N};?v3=Ysf_kizeB|AZht0zP?;lpcJ9*_9$=7ynK8a9hC9NR@ z5`_OOz)dF%V?MlYU@p)Rx4`9BqD^~4gJq=XlG@_ULaeem8#1}3s4j#9SeU9 z4CK-e@u>B#_&&2=eMHk^7q0HBnFf~e6ho_-?oWG~5;@hK5FNUJcH4(y#Y#G{l$B@a~cwe*W?a z)#Rw4iN0LIMsv-|>DdmJdN}Q)I5oFFB^5}h=C7cL9{5rpoJSq)zWnH#Yyyi8;p5Sj zHvfqfUlNz7jU|Oc-u_CiGh!jSUYWsQ;c(5-n5&*UXF|7G-AlQzY>4JcHU)o(zMKtn zrj?7Amg1QB;&q*Bpb3+ILITTt8di>aG1+a2Y(W0fFZFEYqK$o3o*2`o_{qkNo@Un3 z^>av~(6M}!s%MIE&B63=h0&DgFadm*>+!5r#NvA*TPO&B`Fm2^6Oy7OWUv5r`|4=7vaRL> z5v-;fngjPmNHM}Yca#RgoiTNB=i{GAAh&&)vNd@=HOhh5`t-FYN28_cOGtb$lfB>UjyoFc0GaDbm#DB zRkYVYQ7J|Y#)EesPg*8~9FKQu)+Iv<_6)k_FwC$Mv~k(aAeRcw!AkrxSQX+tNUbeP zHzXs*P4{7!D~ihLk@zIBRkR_C{8R)Iz!s_-^yZs*oal!DkwU&Wzr3MUf+tb=8#R3N zf$naekMv*d=Af8I+`%@VvI50f{NKb5J+4&KaLDFni&t-)Qm>rTki>-H*qp(rQSndu&;9SJ^q!HQe))I@iCKJov?ilIWPQiYV@HP2 zK(FwCk+^srpP@d*v*Lk*9X?@#fuV*HcK4J~yI%U9gxXVD3>r?5EK-p`7vD)7ET3m@ zeXnzSnmiVp_)Z??%^fjv!NgckyJtCs$DEg$4-ZxuFNAR?=`Pa2DPu2*x z3+Qi6hS*JeHu2Q07knsGcBF5xw;sJzt&xDN3<=QEjw|?`$tu0cDi(g@?CZ3|ePs*5 z<|()g;rwu6qKH_&>FJ$g$xIaunRDOhv@SBkj3v)Z#Be%8Hq4n;?XdO@FnP_`Q$Efw zuNm{uYZ;WFd-4%=yZ9a6;Djy2zN=!B)82Z+wjezI>+l+F*F&tked%#8)KIZq^)Co% z>s00lIuyt13#YxJ;bdw4cQbF&qwpHer_%Z$m(L)hhJw_9c!-T~rp2I|?W}jT{dLAG z@NTnDWgw@&0cqXyU$~oCLFcq#>P(5QtM0Rj|CpR}ut{ZwO1wo{10HE|OERhMT`*Gv zh&9?3Ykt)5DHHQhsu0P!^R!A`hwquZh&R7lu-~XB4kPit5r_fd6WT@e9OKJqwF6PmToq?YS%9KhOWQ{wUV(uKFOK!nn}Oeh+|+| zMof&ggt5>dXCw6BvSU9v$WUeXKA&7H!D)AyE*5=&CK3k8`8J**?!RRlXXNk{oKE@D z6yf0O6vuFwq55-&jYFEE#CD1Spx917ov0QwRVYOlA_zyVB1DA`j*a{52@!4Ed3E8T z2O6-1x~WJy$v!84yI1~&kfp6N-O(YWuxpLj~(f64m)E?`W&>popGbgIcP;jM%Cb%9f~874YpH{q5}d5*1E+ z7PwgYnf2l??@OTVfn1{zY&moJdmT;xy)utK)88b^Jy5-e)IVjkbSt(`8WDXB0=*;+zUntIM-TG1p*=lsOnxLkO-Yn)s=H}x*bqJu@L~78G z7GIwh7>gftqpE;o7RrA3VmW8oO_7QiglW*2MzKAXBy7q(efrRK?SR0+D5Lq34{`1P zbeQR8c(k+7gczZn!bUo(C=SW;;cF&mVXB`t`Lnx?d14kR6{Of4;e@$6JgW~e*BFzH z)SNTDTSmEkmwfmmYBi+cKeBNN9Ia;H=3c8?`462IA{o4cSao}Fwtv7Q|DDk&K(MtM zyTEW%k2gdlJfbiutj{j@L^%I1aB>5)_PU&8qr5q7UCX}_^56L|H`80%+F^FL(fMvi z4EQm%>sDWr=Cn4dhG${+CgOp}K?tMN!_^vs=omY4+6|`IL)aIeww?PA+*ABYboQP5 z5&xZW-)Lu=J|^kiiG&4JlcFQLUnNZkXx5_%!HVVlLW`KRK;_16esPfZY<7dT+xi}B zKLJUmnz7D{%V56Z#_Ds#Kx+cwYa51`b@Usuo;-dz5RQ*(GJV)t2O=%}D0Kfx%Camb zFOS_{2h3q09`U*Av$cSTv%OOzAb4w{HJ)DYAV?|Uqe}}FgFHNwm3tW5I&{vRAyotE zt9}B)+`_A15R?`^cHN2HQYUmW^$lN4w*qp}TDNdIv)di9FmeZb`}IHf7VQ*Tkc*~$ z=~i{%@baSIrALOIzAmnJH>G@qJ(i6*J`O(>62cyuU09^SIJ=o>Q=MmprAV;vlj(z( zg#upql69GY^mU=Cc?u~koFF@=Uw6rbyL6~bHyVFy*wyt_I9oe#Oe`VvCp3GvF7EKS zJ<4v$YS;20WF;xGBRviFOt&edHXZ4{GPBBHZ z$e);?qFxUJ82wQ2i8-YSO)N~&wL_H%amtI$CYUCMnDu!&kBblb zXs==uuKp0prdVl~s$Lc71&I&la3NOJltDH(r%Ou9{E7;pg44Jqq!ix1V~#SM2E!R6 z;gkQarz+Ie>$GvWKV7U1c?Bq5wWb?OpnLd#AUWJc&`rBBt6BRA!#wMb$ooxg^=maF z{kV3&>Bn!tLZ72O)W1PAw{ATzMc?PSU&9|>`yLHVgQHz?B`#QMGQeLj>fLRGY$oA* zhFj&&inNJ6F<*F??}zekCIM!Q~BibhFw^E2QTQue7wB zBay3a@8k;>s1q5ERcUz&!nd=87rJq_m&4QL9^0%yuHy)Ijp25dk}AmyVvkhF^9UB1 zsSTK>@oe{=9u|R93|{>6^~T2|DShi~>D)@#1aeF~asTZ^hK*sFAQCEDLw$a( zNRl$ea_9*_M-CEWgJx@zZLgj!;Vhg*zl@roS>D$MA6aka9Wd9fIxEIvHr)@l}KL#I(M^>IyY^^<4DKhVT3Wi-TMPjDZY%E-r1OnG88R z7Nm{T!AXDz{Is@baMOTvi9a)Q;M_#=%0&OnNdL@aez(0yrPm;AU;?z(WPP^(N7GdR zRoQi2I;4>X>FyS332CHLx_N2o?(UEhkVd+@yIbj!4(Yf^{fBSnpSgn%&Si|bXP>>- zUQrHcqgS5r5M6L?S?fecicWw-+WnIdhpz=4jMvT?F(Hv}{Ayu8YsmZXbgKK5$*S*n zpauOK2_HZKqf3pLagP{;9s7pv|y`!>hQ^{i;*p6Nm4y;Uagi_jCex=Qx9-ycDD?Ph^pGMcrmgUrRE@l z&rNeT-BVKC;DDltO4YJ?Tr($WKtn}9*DEebprJkyLyIJOL<~^nkkxq07RA}6c9TDJ zUVUU}sEw3Dw(H8uzmlnibZ8ed|2gv)BZr%`j7$A36b_9J9~j?(owtPqhV*U&dQ2ck z=^378Uu8w~uEkdjL+cZVwN&QGEp5jJ!voZ6ttNKFDQFg=V^MRPicx@a3q#|5tGu~0 zk-+q#QrK25^nnWzz_R*hW-6uZKjR-ATPtZRBXlUjj?Kee^P_>{G_$e7v`&pxq8cdr zwOB^JQ~AD5G2h2QA0`;c)(Q?H)C`M|J@wtsknLmlwXCpP0qJ7i+h$-^}Wn zTO9_DV2CV3*8mM##j9zs~<1On=)IeGz71 zNe}Si#$QtsQ^RIT0`KL{vwKSxXV);K9D709D*)7$vl(|c<6OP&`mnZs3CI=J;G@3& zV7?{E8Rv&D3j2=0^PB7*#_Il$j~&teVST(bGPz&cL>>F27;@79XohvV^?rt9)ZHVF z{7o_qoVp*tnPq}?a4Ym^&&lqQ`Cd~Z+j8eg%htVSn;U-T{cFcM^oBrRVQN!V28$ql zWPAI|$DYP@x8ES4sVrSkIAss~t96*IF`?Rr%`SY+iOy=7uP;1|NV^1e`}g6$!93SC z`)Br&_&#j4NdKri6e1Pddh3Nxs4;OR{GR1DI3i^gBW!8mkQ+UpBO%i4gxjFATHt)v zc=rlO+MB;Dp35#K`z$7#wKp!Ej~Wk5;SG|r3cLdj5Do+})lcixOeiAYra!$k>|-(- z!tah{^Y0*UdrH!RdB~-A4UCRixkOBxKXP!|+#f6*iUL*_|LG$G`6uveFPGzNd<1fx zyubmfZ}wyO;Py7j3hLltd-yK8Nh<>QdBA1J-PUc>A_|_ZLZiKLr3F7#rY$<=+Jp@U z^hUjny*`}iltwnv%$SlZP^J*Zqc;-^3kyP`!`h>Pks#bjbVM6>Zau92JLbJvUfpqrh3o9+(fvh zN6Y(nu*ciaJ}2I?frw|EHs3H*R}F+ZE$1#+8S)Z>yE%j|jx4t}57pL_1<>VzPK?~O z!mG_o!lAEwBbi`XKmwn9q78`2>bcAMiSa=lfRjLi!iMAvi^3$v+$hld=>*i$?b3Ux zOww+ZS}W`7hAg)t0Mbfs%_&Fy#OEJYo^bhn-AUZGb2K% zrhT)fw)seh9#*+eWoaabwxgvFYLAV#-XsoaU-C0_Z<^VGv#Y&|Cx?nU^atiTi%ykq zN9Ea!b;#SV#cD>?EqgB)8+{TOtvJ5KZo@$pJ7!t@xXt){wC026PYh9%Jd?$Eax6*kf|4A~vWc$hUd ztFzT$($_9;e=`vJ*ua5peCLv-3!``hF7_>l%_uey zz?FL;Lu9mEysD2}P1cx0yz2EesyC)Q7cJaa*VX9Wf`5YBbh6Xa4Rav8=G2cK^}&`@(J^^ zrWLU!A$P2;!H6c}NY!T4dN%<`mkAf#@dSiKc=D7rkvonB_%6G@YZ9@jen*=s(x?tT zI^Oxm^%9Lv3L9Ta7ZnoW!8q2hek{*XLD0B`Uaml|`NzS_$;v7KO3+^k^jLp%PVj zX4crGsc&bbkrI?J!NZ!KIavJX7PS)5=40iH_oaO&=mT*dt!?tJvxGv`z~V4_>x4O2 zTz5~e10o!(3safTOo^@pq|eeatW}*xYlkk*FAS(Z(-b~6e|N1f$pGlV*v_WnTkiIM zg-OLbF$l2ZSy`5Ihd+K<{#dY{nJs^nhI_WQ=31#oL4}VjBEzP}t=!m7Te&Fllz~w1 z+_|G^vm-HeGoEZgRuh_OvlP&;ODd?NS^xLn^x}MQ#*xmvdg{j&6?BC;lLOsOF0xJa z=k?4RUr(a0CqC2LC5NZ)hW3djOxWSkLnwR$~lZ1GeVG6wzdkY{1bBQty&vw3leUX8Fo1?E(g!Co|EEx4`^#} zWS4ypTol0M79#|v&(lv&3hIiG>s@IuG5@;u|i8~R}J?q^**w6BJ>PcKUSh8btx zmj_RCgyIOeTXCajgn%Ukpim`|pv?1rpv>G}X+ecc8rYnBgh@@kx)Vxl-`j1}GR#VP zJdPWHsRXkEo(pHdtHI5loO`Owm4hP5`>*gPVT51h;uahQ9be3;@$g?1<2c}1OL)yh zNCsKY23O)uYmxz;0G8GRwS5r^GJC$3K6d}l1(3IsenjJfBEXZJXbT{B4H`EA>^BsQ zbyxCmpx(02Vr{Sea6Y)z3w&?DH|3tx;3ogwjt#g)1vMv5CKF6X;7j^Kx%w4K<-BJD?Gg{|@+#C&9eg}nIXWuP1Tgxjjt2K4u0=}M)rIcI}> zi>)v!C{cOBk>SyTYA3Nuh2pT9K7Vja_uwS7%X4y+IT0ejs{`Pye~!c$iL<-J_>8iS2l#c~U1?g90mH9NyzH7w1rn6TRkecBMS|%o0%M;% ztscsntlQrIPx(FBNav`caI2t?ZB}i>gaJ&Pv(V_V(qyMLEenRJhcPpdTHD|q!_uab z1_9p_j*Ft?qm(&^Q7ELEc4r?@S1?r8`&m8LNCCYCT;&Pqw8&{%;xuKl9Ra*i@L*eI zX=g2};6lT{eDj*P0TnMM3>tcZcZ3q)9{*$_;H<*~0?TGr=b>U+C7oXw@I~hG{WZ#@if4k0KaX8NE>x3K z)Io~@R$IWKw(^sn-a8##-Q2ljC1vGU4Ru@{q8!nxf0MicBcHE-AL6W2{`*&v1YM7t z`aoLHBIJGVPlFtnXEPJT;(>V}vq?|1ooK6}=JI9#s=d$lqkI^H*IuRhrEx^iP7hVK zw<%jY)`gGk@o9*-R%-iV9J_0*dBdVCA|l}koFca4cj~v`2yAnw>_`s4{iroIN#jU4 z;oE}RqQ~1tRZPBzxnBoHvhO~b{E);=tV~(&+;&$Po!tFeIdCbIQG_^08C>ywp!-giC$iYiw8jkYWE)3M6MzEKb;xb zSh@|yIxGqOpebPG)CQt-W6m>vk*KjllH*$-sY%J{K|4z+IPJpt3J9%qk}n%zL{Dug zN3sXkxA4@EKZl19L$KI?WS|iO+v%AIskjd#J-WhVijb#uj4=2`zhj4R>L*`5%F+O> zM8V)SQ6zx?Ot1)aef)?{o36e|`pB`dRyxGg?ppQNM$>JA$wd6tXyETa(Nx_3teN1D z-upm9KmMi}gkYfzcYbp(L}}~DQX&BUdcUa&0dfWz`5)-*S9Nmo^3qBjk$fS;83DKf zK(68%DF1IQUK{HcY}jZ&OV|(VbL=pTTkmWJUx_CTCe>Xf)8LR901pgOn@o3hV5mzqm5Wm%$0q z(h)OY50oaL@TU?%DxcO z`2KuMWAW#6w~agwm@m7A%q)zq3n%)ggiP>8=~cVQx}L8Db$<4Dba#O33!)1AP~eH* zn*Fdj)FGvcT#LMjB_}5uv#1O6sCJ?NrOa@~^gaj~YW58ZNBHP*qr9S!7FMpl=)Vr^ zWBHG7VHR^mF>9o8-frgu-`iJK2%vx;ST01>+oiUso;;ufJJ-2IXmP2`63^Tq!F;_v zMQ6A4>3OXPA%MJw*e{#8}PX1}+W82x%B~AMf-e3La8kCtKTnjXK(ag?` z2O$}1$$%>cj76LKN3AP&TzRU8jvQ)i!KDe-v40qEVZ3YY`UG!#mCKtuz(62rxyPB= z_h5sLe;AE4w|f3l&>XQD!|l5xZ9Ku`*a43${RjWb;tlJ%E{=XA2Rz(aKq$FJClE4#u%Q+nEe#8t#muuP%Ys@9aRE22r0l1piy7`{&bQo0D?-4> z1o>M*d!KNl-+j7vy)$-pS99K%A!W0{D=X2cQPgJVW~aC2OjfBgb9zH1-gj_#g!dzf z+SC{~LYst`a2FaiE}lE39M85Mq;f?`(5(pvh!|5Z`M8MRj>dOzB6=oDuk-({MBJT7 zl*0SP+7H8+)JA=*LYcN>#OOpz4%+;HtsX3}0~T4lrRjdZC=%S6?Mv~3ec(0xZ^a3X>z32D(>K5Z0^sDz&~MR0H=X#f z&hO#tj$B(Y&+jR`XtpS#rA*Q?NQMrEF+o56x|dcr`vC6Yz$Y#jqSyI)&Ng((G+1Mf zQA-#mFf^9;6@4>14FU9YAO0SXHnR9R$;PcPF&@PVBb9cY)x$aok207rhf6-$uw#4| zjPKHw9=1px(^~Nb^mw$3L)txi>^D zYp_uyT)hcjSGWtxpZbN9ohvA_B@Zgrtq}gp#P}cT1Y^$X6Z{2*fUr883csEH`4vfC zI;c~bz`{7qHGSwb*01%goKaUeOfABj9iia5Z~hE`JQ9gNi5M+r5%7=QTEdzA%y z#PRPWr_YLuLkj$Qo6-o$C$^9Oa49dJP3S_| zBUD+BHCf=j7m{4Vz`@?cFt)gdtC(3ExAfkdlh+3o$L`)iwmabbnK43nfQ%}IMXoYTi&?S&RNrWfMC{!BhrmAxOKcn!H}j^#IBGP&a6 z-+Y}^e>S8p5(w8%4dlmRSm|fcqa#(%oA0iv2Y>TLhlZ!=LlHs;I0X49cML8c80>?( zcXl8?qWik$sYiO{s(8@12X_)7>pNqQyu;##v4LW6Z)Bc}8Oe;Hkkw{QM9DdbVnuId zDV0xLTP21zho`I0;XnfqF?-GGS~L#-+zVJHMZhS<>O|C50oS^eDR-`P2CTv4$!{Lh z6+QuQ-H^K;<%P`lIYZ$SSgB20>s;(yP`%o?|5^?IIpWCuo~Ikk=w{Y1L@p@Y6%~OD zysiYV4LNW6%*+gQP!Ckn2wc)g@Lmz^0rxlxePe9{KZxKuaOUTJ|31H_28%J}4N(lb zr;mWA=RYM~-4`e*4Gpz?^}@1I5*>}JWgW&)KcdEAhzUKlpYY}`3LHO2AYl3LcuqRUS($Yp^> z#C2DcR*zP`*{P3s62DMo0(XQ=X7v(-)OcA2#gNB0+|o@#2HXY`=~>JJQa$vo`Wi!I zIsqFj912do2h6!7TBaYk(t1C9KC3l0r!CH=R)K+2ak>jm6;@3pW3tG8J4S3lqLjr@ zc{cY*xxR1iKq6=OYquv*L$**jl}H z1w!h2KJpFrQCazt5qy=;=07qJjP7?YZTG)&{#KLj-LVT`1d6-|yB@-e(BQ)Ie7;@I z2kl6Xa<5z@bdRlDU%uWpJSx6eu5_QZKByI@Og;ZbVEW`we>u;Az~Y}}D7{tHCemrP zLZ3d?i#PsNYWBEPs`n#zC}5(?RN^t|uW0`o)h*84sLYXT{78{h%a1Dq#~)7k<;J~+ zwdO&ZnI=StV9~UETZZ!n?Y!=i(}H-NKTB)39Lxs@bTS&c{meMbyPc;uV9kz4I%u06 zZEkiXPr9*l!v#d=$+hp!jpzt4pS#x#{X-<1G2;2*US_9)Hnt-Q_;fCnDm~+aOXsX} z?bN}?F}ihGM@{3Lv=$JUH2{UN9VTUWJX1|mHLfVsyhNAVa={JoBJn%cd=7Z;epD5c zfqwbm>@R+{0L&Yl<{z!;fRRz)rQN&0+PXQsFXb!LDp;ccXc?bEL$|=S`36o>hMhxU z$E8lYJnuOqP2v(39St?26^CY;3J^<$L5XmbSJ3LGts2^uq{j?3Ku02fFU(KT=uu3| z43nIY6BkH;1E>7&F}aMae@7wqvyroVbdUuC3@7>|fcAS{Oh#L`OQ0GPB^jM5od>ie_p2@K}p+VJSb{ z_t8)EL|`ltk+t~UE2W!gS=m67s#`a;;|RE)gR+Aq#8 zhxOKip4S3un(Cs(>iJ;P27vU8OrmM9RRi3YdTRuz!x#WhK&ciZ6U87P1VO)h_s;Ua z|HSq5vZNnouQOZb;3_mw8gy6)x`Az)vok^NTtjY^J=CvX4epN+hHPOLDQ)c!rHq77 zHg=}|Gp3w1>hY0pxOsR!=9l_6{zT0fj6B=FkCndx^CJ7AAM^NDrCR@*H!{GaE>@!O zo3}S3@W=ry1_&L9-WdknY*X3WmE3WFF1}xeI`zu2gzPSH0q$0)$m2N`TcUY(4Y5A9 zcNgp!0f{VzYH70R7%)+-EV3X#>4%I<)O~$U2{}A_i_n!b`7JbB!O!~OOxHdfT7du-78O)&3gAXK0^ceY$ zU-tLUT@G8I;=qYzVvQ@Qr!ed*m=v@_p}F-zhZ31$`!m*y9lI@4-YmEn?+vr4tUlpE z8{?MF4H6@O;Zm5xXz_HV`JxX$X!wuJy#|>ZGO-gy)PH?1=4|&C7!mUE$PQEla<_e_ zYJgy4gw4RQ*4`Q3@MUju@?D9|e&Z@EV*APksfEZxsN7&F+Fh#EqpqCs_J5*QUVY7* zOTg2l*H-AV*D+c`3r$~$^;^A!uO>6z%ChxSDlkvg1FY26^X0An+A$VJb>1DXZ*f|@ zm%o*#14T)pKhltYxsv_z4Q-2@s864dvS^-u>*4odZ$@f>1Og}<;e+RcJw@}pKEmam zf`UkYaP>u7^)8`i|0bf!54BRGRLdY1?piU%7M?!6VrBT|BX@ObME{XutS|m;M+h5P z_3C-Z+GNQwDA;Q97Cu1`UyRpcK~*16vbz09J>HlkWM^}J+OKe51$9owPq-`)O!rfv zDoi8aNVKZx8+7}qEW*FiQYC%;*vm*KH4XK=#zs6eG+?>=pM>03rh4ml{L859z*MBE z4TM(00zRpD>QCaeJyO(bG-Hq+3F`w3?q|r8=D2UTa4#hfcv;Q?QhLpV1ys7lTNdP+6r6;8UMV}Ia>jOt z_Wee6eQXbK4{|n?g~<WVl2baJP`-A{F`f4j^zIVFh?=dPRsmSRJvy8tRYJZUS0g>UCJu7;(W@ZX&d! zngbl7W8p^VH-__rk*Wi#t`{`wo}9i8vY%y8YW50JBkeIhR}oj`u*>VqXQ zks&vcvZiKOMh4OR!a{yw4NOK6XFX4fkI0nU`w(q!{qKHC#TPDCSO$;_D_>}^&Vk(A ze_cl&KGO5`x`4^q!#_t{#|LZ@d@oC9~O0js)!Ae4phamX)xUhA}$J(@(j;^3vz0FCnb?EZq7*Wa}*4jGevmFeHhE4 zRe?F+U?W?p5<-%y!H;Ao%NFquLPD`9_aIPh8imCMn=>An!P=Fe1z=3q-=ZazJyjJS zC=SE7Ugtv51H~DURuk5?g@ougzAyD35nBZ>V442$hJ*SE`lq&W0V&kY(xEXX-87O8 z{8-~Td`yZ2z(-}W!$5bh+O?w()^tVm%`k535Yat>ELmGnV1yC>r*Dq`8bb=+FM{2t z%@}ee|EBG`&+0j6gd3o~exzrLTo%am31VnDM1KBGTcONrEf{VFLb5!Ln}w6^|F zNmnzfHPn-v_x;CT%Yhm(L_`&Mo)!A2zueMWIi}y!w_Ad)0R%&WX2(fDw%pF@(bvwK4ymHXi7$-%>c95=>d?PjTN4jkz8oA#l*HC?e=vsh=4>Ah$;o(7*4 z7x}}-tngPRKojxmi~hd=l`+W_lp24bwQ{5k4H3{FfO$W+p^y+@0&2-314%=1(|Oi` zK#$^7`)Muk_c!xbnb}dzjh-6iw0VDtn{-bZZ%}UD4K{jzrb4Af0ZGC-xxJ0#Vp_r;rQoxPE z#tiMbZB4iTx)`!SDrgokre13aC>5b>Q7DjpIaf9iIXh$m(PG|Q*q=HNBQw}E$@OPL zL8aE;D;jvy4^%AhNV=~L#TMX*lGFBqF2j3IG%osK!DH{@p|-hSHl)}BlKr1dvaBjH zhYKcl8N|a#dA{e%B|9>U`gAhk@r+z#|9*sY>t1mG*qidJK;#0&zAI;h_ueL{6JrY7 zoS8$Cv~j=``3&IVpLZS7vj)Pvu{7sA8s|B5F@MCY?dKs0fKa(7f!%lh^|+57M#y9+ zG~a3G7SBhuuB7?ol-WpOv*b@Z5%YGu9{%2AK-3tww!dH@&cNvle9=mM;!|V~JqzUW z0}eFkc}Cx<|D0SQJv{PHMP_IR^0O55Z%be!e)%oD-{Ge@SN}J25BuwzvqXk3rks4+ zTwaJX1h@GdU@r!S2?xxWZR&LFtWYVA#&mB0RxoUQEV2?Dgi{10mL4xs-w!}A2b5)5 zQ^&UVFpupr&-Pe=OR$I`DUk#Ga{}}EOlayj;LAn-jao&M5at=*7O0O0)=1XYSs z(DrOFl-gwCZx0wcGVX-oYTqF_Rpl}h$e3YkrC;i~dYzB%^-rmieqniv_Inue3-!A? zMeiDaA;k}&`93wV&6m`p&L48OWJR)z(yaSP$A?y2&FTSS{T3r6fES(#6K1a`xBrtC z0b&4oEEtnRVYN`;YmPCt)X)t--x@QW^tFB-Y#hh#0l{IveXxNgEXCWT$2Nwsyf06$ z_(DfkDQG~n)k8{;tmohJ{-|j|R+vyw`j5v_gC}2dEwVAz)j5OTh%?g=ym&KbY)?Ph zyX8R9_FDr{II^~rsim59Qa(trCMNV^KP*CZikF(QYe3%Qp++$jD+Bv;V!+U& zoRPCqG7}A|?EC9%WNJwOnD^vGNvM#~z{A`Cit9Uc;~(~z`F$poDFQr30duF=(WE0y zcEyOoBN!u8CLpoeN9ZZACVv_4=!}Y8P>?ThIxKs}m#gO0ym9UHM%wDX07(G)WM2IyL}3{`t1lzlAtx!D z^#ac}6v0{_c2P;8yX?NE9>5n2Sy~&bKwiRI)LrGV)6@`xfjIBa3;}f<{+1yUZxn8= zrdaoWA5gsknjQz=G-B0I$Sc@UmO~yvo+L<@ z6qeNJ2f~uQEhdhsb$B-RPNtOpp{gjk@-w?ia#wpR+2}^=5igKB83x|W@t;%~RkCZL z1F}nh78A8xWhE^igQTNxBYx@1l2Ym-MO zGe;r$!g+Yx$T!9RVve$iCRy|68yFpW87yAVsX#IKvxpJqKoYmbj)#?G4g=*xdo%Ya z2-teKZC>x(Zk{v7`&|Cq{t>ooqSF`Yd-;2TX zKIHn6@K)USgjNh<|5C>W0lCA_FMAkdHE-{>8#V%7_U!F1HlEh1Ap24)TDNUA%q_3l zKgoC&?ZMcoxGaA#H)1L#a-4)dk3uniF8zjAU!t4)-<HjViyAv8TDV3Y4|z>MsldM&P3y2 z9((&Eg+Rdg@=@8AxkCktbRGi>ww>ub;A zMJd%cG0&->WSS(i$LtG@N|$p@c}5xeEhYF6w?Y1x*x%RYiCNg*Bk&= z0a+@d1%I8vapr!%8xs}gl_;ZZBa0}|fXd<%sI zga)0M(NWpgl2loV9usq8X;&Ih^z-P!qZ9Nl{u}y&Lu-PW6Rp`BD(zGDc)A2s~dfrxOG`jO8Mh%|^bs<42OD z(3W5?-R~9)6Kvwhn`}{2=QT>blCBve)$Ma}r3RLGv41ZnYvG*u$9RLdK0Iy>U_kgZ z`?VRPaN~mCg9`BE+YZLbeFJ%vk7`4o+iy?YBC8E zk`s<;w?z3Zz69*F`?H5Df^AwOy-UY41Epjddqi;?g&;Z~?T>Y^Y!$BU z^|hGD&^<0PgG`KSjY}7!r`=%u0^yn~J>hCZZ=kJzw5jFN?D-u?k z>bIAhb1P&uHzo)#zjD@1{CFePbKbsOI$@L{6B0wSxjy-xIQ;Zx!|DC#&x1}PL8X-{ z=x){EE%G^hqvvN;7si^_fgR`@t&2I8fp<$9~uN?`f zGzSf~mg+xeivD}yntnh1KD_6d0u^mFRYdhO*$wa?1x|7^kt^fdo+6qrWS89 zl@@;NB*0zC{D_{dg`swYk`z^F>5?bU=x&-dk%EdQg*ARmUf6fyqwr{lNs}S1f{=0~ zjCOu}^FYsJVyOyQ(IF}g%#GmNwZ$%J(4l=@wGRE209dVf&=c6nN`WW9u_(zPR#w-J z9g6b}%QzZEES#c#vgWBUesg+}zmc2QjtY`32uO)UGxeDs1HiN8+TEgF2gQT`BdSDsb!ccH?>RIVK&#$G(wzIJ_y@{|&_`@&a zwXu>a{{|Cc8$7|qw@u_S{5ZbI5}>WKJy+*VJOZ^k0|{-?YjXtVsEV;0U;X{2FWuP*jIB4x;iPOl@`t9Ac2n z_rf|5zz4|B!K-b%U8w=uTeVXDy+HE7w7MW=guXnXx682Fq?n52JPr8MhCm0@LzEic z6!h^VSbXvN;o|phf9+g|ZC8%^G~`jswY8ezq5m%Ykm^JBzsIyyZv(okQS<%oI2!K} z6Ug#uKXEF))C|%yElK|id*;wfhTNYsgYiv~M_(d81KBML!E5F z6YiL85pb@c`bgz1$_1ahrDiriSwWXUV`$7mKh|Zkv|ngnunC`RTcpCj94-+}J|8lF zGr@ko$r0Xk84p=2Awvv+a)qTh`2;M9;T^FpBv(%E_6Dc$R$dVxd|@;UjQrwaM4>gI zgX3dy0|PSJ!66O~;n;v@-!ui<8h;~B=e+z0@?H|XBD-tn8{=v}X*i*Oo*>!!efaZw z0Ae{=2vUi>&Jt6}cX=w_2-7bxC_9J+CctO6V@*g*k(ym>pGxVYk8eN3rM^LYZ8lP4 zGCNIR0?@K?d!iz07yvE|a>L=r3eet~;Gy2ebsK#ZzeQmGV28WjWgn2Uz|zBM)ziNS z_ZeT;s7^})Dumjkus9xuXlIG|9cd77EfDAdW8Kp6ThSRSH{|=&X9WgiE(a?QsBSP^ z0e_+zX*KD?>$A}fCYpd0(a(g}z#wDKo1&&J!+9?r0z#!4f1S zCGk`uRhVUicO8B!>nrvq2s0d*fyb}v1Mg6I#b_gAZyb#=>Ty~sV8Or+<}9FU=D61Y z9S^C9=QR`@_CxWn`rdgfQ9WCpS2WrBztUG5|5Mf^`tYJF*ZSkvdbBi;43@!JieX>` zdvzEoEhR!jQ<%1NwzRYRXi-e4pul+1B$L?%oDN<$NWYG9XAXX7{0AP4xHFX0)r06h zkDgy!eJCyaZ)SBhyr>8PjDoo>KcR~hg97jWllc0Ti-?G5dUiHiL%r{{Mtzh0-hX?z=WK(FZVYts`FW-iReymdUw^}V>RIb(9$-p@0lDyn^w2Ivq{ ziGkQKDbm6mBxoWJUNjDOQ(g^o;KgH)0Qxs@O(+MNVAs|fVx)_;-C(H6A;A-|wjqn3 zIJbQi-wRbhztlY>292+ME1>V_0oc*~cJ$FnraHrAVKvQA!S(cF+3mJ|n8h-CZjZIq z)U%z$i5OM3AT+dt4^Y>7#M$X08*oaUb4$M`xnl#tiE9wW-W7^e$cYaRS5(^{Fnrn= zxQkzI#jHg%p##70@^J`rR*x@r=wH$Jx&W+;4<0vKGEQo6#Pl6)yBLBc;kkqj9S#y| zgVoO>8hyQy-``;*_5)xFD6TrMDI&(EX9r!${aLzlG&|gDcJBb9X6Xj!Rc+ z%_*-{(!V2#yDH~}<W z34$ZCgo!OMNc02Iz~i6Zwv)0MCp1$Zn#arRDvxW%EAD{@tSD-%HxdbBI0<9Pn8*WI zaYafD>Pse4mlfxmyNdS&b0gH8Ka=atl_i9A1$Xb|2348gs$x)b__xTD-dMxlSO;l$ zJJnpWEkr0#51yI+*W6#ORs8Ey@vprP?_q5FkrH26Nl-bWK9PSXb%WV-CWbplm}?Kp zkrIl!w?R))Ne>|OfIoEe=Pd*To=@?!!`EI)*e@z>F0c{@~vB1o}p&$N2NI`o%y$cSn0;v&JPPoLQN`QKzsLZ!&UHvB7C z4xu)@gjr_RIB@x7+3?Ad$Me92wpnj(`Z$Kq&ld@w^$QOC^mfwpVLd9$&o&1qC+wu8 zB-G~}rw_?QJlCFR+>A>G+dO9zziDF^7S5eqLM$4DPyYV7`&`9I?%mc95$DzB-c-lJ z5wPOk(Gr`(cE&*kv9mxSEA;D1(&}qk$#ie(2wBJ^cCTxp2RsDWn$R6ST zVy`JY@Q@|sz1R^Q=k)+Fdtvl_x&HdtRMpk9eJ{x{;7w@H+vwQd8L)CgTWMC?to$>w z|7`Hvb()PFaSO2uasz#+uqAjyW59xn)3?OR4T~!Xg+aWjhBD&UX&Xn(y^-EL?ls;x zff#;L=Qj7&>hKMbCseY#+jFOeIDs45&XJvSTMY>0)NP-dp&=-&!$a_7Vq3pVXxe^p zV9oO_A{xbhr_M@u{yI#m=0^E^L4~DNqn)F+|Hq%E4_m8(r@T6RiN2i{a!hBjIk83*Ls$;uw z^&&fStK8g9>Dt=f=<0cx>gx5oKN9d>TpQ{ze;Zc8fBM_neev**Z+-~k1RkkNEBFT8 z#-iz>pea18f|Rrg|GY#fPAZEOUDtLsDRJ+887}z0+VX9RYMY?-rN_IFhJvcffCRqRyq75sr9JjNMg0=y{e2Zy|=8kw1G zvHXI2=_%IA2L8SbtkH^ebM&~f(ll>}%~hmnwviAXQ4uQe-sUA>dUMSQA{VO-gXt(5 zWnXeCXU+(a(fw5zg653+Laz4NowrCHpuv01+esll`oQ5PBE}$y6uk`%ua3~Xj_^}H z78rJ$9kyUhYh`X<(kC?NaTphE(AT?)gheZKVAJK%VwR!mM$n^{pi@nVh+<-)H>am* zhIeIa7|K;dD>Qm-IJ;jBIGok|MblADwzrk&apFf(*tO-SEphx}7TPgDC26RMZCc5@ zJGOblsuOHZ%eer|=_{iEfw zC39nwGyC1PIw56mAa_FM(-ChUau?g^Y#@Ef6d;6kzL?yKF8O}*VmVaJwl3|wAFE|RZ_54TI{&pC ziX>rUx9w>Eu^@DR@1lAoX|&4i{Kv|+EKX@KR)?J!Exy_C*I9`iEn$y#_PC)dq1DP? z=cYyhZMg7I27@uODJV(E^MZOhdt*jzOt!dD)x#a;nPYhdmA8&fGk>N>%Wf1%xOE|{ znL~F=?S_YY_zqoMLm!j8D$q$~1L7aDKCE;4cGV35BiB-w)r$8QB~9do{izLQBFvST<91{z6yhWoVLR`pDGg%f;} zF3W0mW?z;fanljn>Y1~nlKmfFxf6p8@CX_YqvDWU==REO4H2L(APbMZInAi7M;Dr{7i43=O6<_bw zdx~Y5o6PnrL+L$G;=!UaBFtqZUlwHG8V4X8i{!lZOzOblFu$ z#g@u|%lywwT0a3zVRkz==TDNv3sjW|RHt+p&Y$1sFWgk7zeg9hyb0xh3D2d1qW8}% zA+?%68uyH-KaxoqGvq&#ch@vY76ᐆA0#d1_&>Mura9( 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

+|c@LXa4+E3`FvBUiB(cRZ{Dglh@ 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 z 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 z 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 Z{U7W2?-K*ii_HK4002ovPDHLkV1l79O^N^j diff --git a/tests/screenshot-fog-negative.png b/tests/screenshot-fog-negative.png index 5b18a201e4116dc43cd742d34f86f519af2eb296..747063c96d125c6f6383dc2805f4d4c4f4fb7227 100644 GIT binary patch literal 80704 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

th%x=@kf7Kpj& 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Μ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 literal 36557 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 diff --git a/tests/screenshot-gray-purple.png b/tests/screenshot-gray-purple.png index 514b29a15d8970a7928051cc457ce143dd76954e..eaf08e6a2173a475e408000df210d74108b9ebab 100644 GIT binary patch literal 241235 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%0DuB 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

9zi*>WZ-fl(qDDQvDTs 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

+pLk*Dvy?~RQyw&yeJB{cZ1 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 F{{UEpx{&|? literal 203336 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%0DuB zoVwFkTJpQs(CS(Gv$>?Tq-C)5Dk`$EcBx|ck0}*Petwryu~<%;lSVzJcIgMqL{T`u z^Dcs%{aB32Sg47f0!A1j)G*|}G+HuwbU3*<)WAeR|7S`CUY~-ur_=ZHmpM4oGx#JJ z-nmRJE)gr=uIhij{~iN=l6dcr%jj#R-W=#oU_hDYj$>*FRX7)W3s$(7NV|AA8I z#KsnY)>0`lR33w1Pl!*JRv7<`;WmyWU>+{qw1)EYfLl<3a7YDhrx320wKyvX#$bBz zIM%wIb^g+P?$UDZ0`b@#hC8RM!)1ai;%^pS;V=;qW9inp;FIjm^3|j2<@k^_duWv& z{)5Avpr9`aNx9PsWAK&CY)8W3y*TN!WdBN-6^9e5Mr1U!EEpN_>U+jRa%Mb%Sbl{3CrBB|Lu5Jq&)Ev3{=r3yEg0T^}c0XLE39#Up5m5*q6 zoWyBbkDA8XlG;{p7%=#>fDg63t z%z%l;Q`dyrL^BU}e5GWSvO->*4l4K(icg-&OL6q(DW95MY&B2=CbvVoQbdA_yyhz> zJG}3ZZc_Wd)GU?{nmwKmV0;qW-sX9Jlc)K6<_UPX1Nv3--_NZ1EGnCVecz#c7$S1V zwR`Oq)1or*$fE`1OwnwW!!?w}tI7+P!ZU~Z7ryq@OZw?>HSdt&GwRXex$ z8iY&*^h|pG_PgOf-+erA@K&=3TcMO#6_ex4*Dz&1Q52xeR3O`H>q(_C$Vf&B&303v ze-ayZ?UhjFo45X1sc8-)9{ube!=7tOsM1;NNjTGCYYV7?EI0zB!$Hyq;MvsD;kxp0 z^~WN`JUJeSQQ&d?xAr;{7Udl?kZX>(rX+b;e)V+^EV;~fQY|({ek$;CHvf?K2`g=@ zoxr&~k@?Aes!@Wt=L=(20B@3}6I$*t{8|{s?!%6Su!x-=(mQ+#8e!0?)fUntpsVFE z-2aAi0~`1UvyvRbgn+gtKT&+Pf1J?RI1@iJK!)5)*t;%i$u^<;)zANW6Mct@>=o^; zQ8fsu06d6yT_W~I^|V&-VdMXt5eNrfGkQnA-g;jN`UHLj-#vnsz^`7{_m4qjec;ym zoyUJcWJYmCTd&>#$Mx*V%IG}^r23HrM(ukh3PSJuXb01N{4sh%2PqnTG(UmF?wxkv zd#_>r9~KG*=)^#I-g~VpjRsCnF3It9l!Kg*gZm;jKvM#i`$&5w_iiDKrmqUB60t&%~ALTZa- z%qBT2E(|HeZxm7Alf%f()ffyVs>d!TxLgsS6hdsbhwz+Q9(>z+Vusz7cghPV9? zZ>K8M_>c70`UP4HRL`b^c}gHHErA)H8?x-JD9TGhnF^GV0nArMu!J zL_#Usl`NeWZeHGW{8p)eUpT-0yB!!5?WihSu_>wOAn9Ohy-4Vv2b?E(r}&jeHL;^+ zh9moC5B4u_bs0>(oWS{Zx?IzAPPnl2Y2z(hVwm@4xgV3ndj>4S#lQ~acm#DxL^UsiGc%^{YRo=DS>Py zYR`Ms-gET=4Pbp=2au&rz|`$sFF9bT`>Op(^R{}H6n zJR=Zvm+4p$At4$SCtF{rGhXDR`$j0MUePK6zpF&?wFN^T^@nh`~PK)x>}XG$8I8%A4E#Lh83=>WU1Ea?5PFYxcVKkE9W z+G#t?sV~fH%LhGY2^WYP{Fn94e~nz6AJ=bJK+8lW%&22p6 zpqV$BRW;qcR4zeODuG`(9+=BgH}BDwZX_?#Nmi@}vdHHy0vU~;NW5*!h#3of8DTq0hJXw(S zW>u)!C5BEL#=NWLC4K;jAu?@rtmV+2o0K-@PS~1p^mA2&N(FLR?Po2!>leXdak3ot z;rk`bt%p+)(btsr>z7TetAK67pmVeOy=Jl?M$gD#(m)ViAgR&IJlUvM(8I#hLy~{^?R(-Y^w&AsuM6dMx0eZ*6RXrOZ|ALX z$VN9j%Vyn~co!ztG#e+JWHMMs$y(?KFbiFx8Iu8F>zUq;<{$~nk_%6w5z1RDY9@d! zHm|4@#za$YZnt>)i#=`kQo2q}FkON+J(BwH2~@ghdt9kp`7=_9HcB(Q*5g0}ZrT=3 z;TdaM0q))wO@kGcB1c*qn;eN5lA0+NBb@u^2#Ov-2HPBc4^&yIL6B zw;k;FTbspdDBlat-_jJUiATn40*Fd~hxU`jHqzcKtL--9GQ8&nj4`!@Vmm^Qn!2(&@9U zBLP2$3Azl&flYX?z&4`f4-1M|O5wma{7p}E1<8o=mN|z<<2xlC5R7xXkTI}$_4*$J z!c7pE;H0g1*u}v`JWf?=;YDZu*%?zPv?elTnumYA4;T1GnX_Fz*ht{3N3xIPuXz3b zZvMSxHdR(vXT%1UfO6dO&gJ;db8qB7>C+o1o=&J)5*K9r8;F*ufJ~Vr5Lg2b5PWey z$K;kiz~wZzlPpMk3iG}y?RTsq)GR~mSqY=8w$@~<#O171w^y3#>XM3I*ok$1O)9yH%e|-yV<^!2Tr636`v=8YsggC1U7~mN z^zP6>jQmS}iR(g#qGMxJN?YdO9{IDE?r;N9)@sQ)8t-k#O;XCBS*9W0scC7M$1xUq z2`KC=xx(6hkuLccZsOsr3->gbGYjHa84~J>8QbJFe2jV;USJV@|Htx?XY>U5_E$B4 zulM!SENFh^(fcYe>~(y|Zw21}CE@7lDNWD+ql9cw)gQR|Tft9XuT_JNf(EYMmc>TF zPefqUkISu>v!{)|m#?6ekKaav^=}bkNo?SazUYGIlY-%-k8wQE+N?hk*;~J!_s1PW z(lwQ09^MFpX1}4oNGg+uuSi-%Vh6KkOV=hVUI+$!sV1XKzHXz={x9*aj7f_blgXo7 zVUqB3zw!N?aJq6E*DL8*aiRnn{eH>f+#f&1tN4=T%hVatec(6F+)dCUg;Qe^mB=coPC zOu_))y12FYFntZtw9qVKL>bAPxFc(26$!NLxB1oquQ9ecJve;~frdzYovDPPdF#R@ zTN8GCp!NZ%NX2DsMUN=F?+YxXU@zf(eh7C1yvYNsuz_u*U*hD^w5IucP5L(yn672N zR~8aQc6V_m*>@6&@kL0|T?w*_Z%z)m<2#^o`S&(>Zf8ikMMvwBrfnw|%!=is4J+ch z^!M&6W5|Xj3pgGht0%O~|70AuWRcbVJIg%)6Z&RAf2PQhX;vRvy?^2f>F06ySNVe$ zod4se%Lv!TotF9(4uwTiB{mE<5tJd*J<{;KL;(J*jkZAW#vw$(vLIEWE!nCcQ{n4T_q4dUs#;~$uW)^0 zeIQ5W?#CW(mb9w*6Kvf4=jyR@GrI0<&aa2dgH^ft7_9jFDlPWwP1RoPw$yiw+LWAo z%fA!Nb%qYMbKh}+#C6jXud8UN303L?fv*`czZ>nJhrYk9;F#*K58RJo*{vZwu~&|_ zo7o`5g4gpX(DT(he=pciEJWUHIEN8;sd2cLC06Gv^#>6DKcnk|IqbJtzEo0gp8W`GvnrN5jx+ILN9Xhrj_N%fQ$)ACV# zB}%SV9$%vUxg-cI_yFz`#cZ!MSuzVKyg1-^(TH+zyF&+rL9Xa(0hg0#oIa-qZ|kxj z3AZgLE1Mw@Dve=lR}MBAzfHIcv1D4J7bi>81|TwIj1)Qzassvw%%lw)HbpBoLw}SX zdPm0+i@elo_fsYfiq+E!7g>wOZMZEEQSYIam`!v^5Zn8xcWv4$g(lai^ zTiCz5L=aAoUE#(h$PXwUN{R~CH0Q19D_3%W&Gq|$QK1Z};DI3)PRjwPI3!k-QC@j} zt>R~w>&nmZ6>#dJE#uDXT8y+gLF~EYL4I%sX ziyAP=MlCI%n(ZsyRCMija|`e|B$N9j_OiKnomOeyZs2x%bm1Fu;P3fERyb*;r_>p3 z&xX8q4Dp!u9TRaoc|3$yzlF37Uh*j)ee!sSG~O6p=08BC_T!s!Gjp7qu)MxNgU;ox z^}cDJm}#R9MXV)4D1bzSe)GL|#|Obh{Et? z><%}{{wxzuDJ?PFc|%Y#{*9Lp6#=C2Zw8=R~2SsklLdzBb2_5Zm53mow5VGA}vFP1A&K_?gg1(5ec z`0G0m7clj4`RL{4mNayU;I(hkzPWdJh-ShcVWMNrjcp!5tT2LPIsX=aWrZ$t-4pD= z#Nm@3FE^pDc|{0dH`vmW^;Xx2g?rxkNzgFj_(?T%_zC*%f+B#Cn`SkSXJZ|odImwC zblu{djYs1~LnXm)@Mg`AT=>Dwe`Z0Sv-kh243~~nLHi(*S^UG0e;`C<%k;7L5ZN{2 zN1ax`_F7b;2(roY&rW9wMdKVSHQx5TSqc%vX9GVu7= zb&A*4kl0f~Q1sSE?bcwyt6N`q-%Y`r?9&e02YcYY>KnP}?F9N>8krA{*vkp}9x#+f zTyRYcc$Zwi_dtsBwSb--!pQ=!2>$gN?bTX+^$rXgv=Y5Fc=~%J8pY;+`3i)cXHx&8 zG0{k?*?b^B)%kIcYNw-Xm1Z1z?lR7m1jA6pe@Gzu%t?%5^S;JZkEA+2*Hu(m<^Q-usL zh3{CPH&u|c*Y`yYU~pf{5!H<+NXty~WhXt>3DG6!Aoz)Oj`eVrHixaPOEj6ccjuWf znli=}3C5R%b!|yoU6ER2VdSSiPeo%iQA()?Cr^?yHKe<=ewS|kA=7+=V0(}CGuH%( zPavY{yEN--e;9@2qC{`FX;E~xzPR4PoQ6pyUm2 z;{3lUV{9K(8zDt{$DSTD7k2I4YS^d=k)fX5fQC7coEm2bphQveC&tNR+>Cdyd+UI( zG7-b%iKP#nXYQF}8**oT{E2Em9yUlGeW>QgfIJ;SenN%&o1c2FxR>q*)>cwKp-b}w zR3yZ@N#6nL$Mn6VKfN+i8bKeoIQ5liQ)1DP^sG&f?zQ~3OAx;zW0950eG`%#u1FsPnp{8p%!01^kh$2}OEI+muK~Lb3Tq zp>pRj0w(ttj^RTRMx>Ph*Hu&>EPsEj1)Nf0VEF5cupJBcPm5y`*!wORhKvyMR6?C# z`om-#E{t$tYIUjR)WB;f6dAU9jQzE=qyIn!N0oLRHa_8nhX$cRH{lvwreC0SqReT_ zTrw@@bT#^P_8b=W1k39&NPVk#5P!dK&j@uiP(L*2*KG5XGTTASlDIkJMSf8VMKIwX z@h0wXBPr*O6FcpSNx2yG5Z19I3;V#(HYFA%6!ibD#355Xax)bcixZE^hV9-&hAsqP z1tXgmJZvcPf$+7caSrD=FJOY6>T8*ffw@t0QaQ(jTt#oqc9i;hNBig!d6m;MIaQ|^u zrc$|%!=v|EE&A@}qiC#Z;EENfOzb)B=`85%YP;G9sQ6dJ-bLPeg6_ojytd#2!Dm-{ zUf{LYr<;OzFHpqQv*@q;J2W!yGq|tah>6V{j&!7svH|)&xNRn6>c-m>n`lnIe3Q_7 z-{JlR9Fh3H%8JG&1#U!v23EHE9eYB~x`^M@1>qq3%v*?*AFY4O491pPQO0m0w9s_= zxYH43YF8(y|5>l$Q>$N6XH8dQ#!k+l#=ceB5h6^Ob8P1zM&rOo z*?t8g?~Y9A9qFIgsPWMgMeRlU<@z!P;^A-QGtB=Tlrq-76^a%~Z92E_=jWa#I=JrYp)wwr9nuP zDqZH_@-5YCSAAAh(&L3kP>>s!B?=t zx{2X*XEe~d*i32q=u=jhZ;f#&BK`ijCIDD?nPLxTeXc4dx%aXZdhqE}QUuB38JC93 zpU(VPNlv7gUe(77-y!)$_ZziFnqtQH*AX1o8**A!A`dtD>#^@j=zsj7NQRk;(nG4a zsv&#qww(ocUO*&*}Drm1{qv0J6TtV(yBX0#RjoKkUU_T_ z@}8TJeXL3YRp!A6RVgbgg?SUboR7*ID^BdWlYL{WPxq!w$$T(5!nir-xMed&6I7D~ zEnM(7Zo3R?ZKDwFzF5Zfe#Q-oK^w@i_xO{YQZ}}oVkrhc-os^m7A*uy`_Ww+QGGUyP z9uRQ`Jk66~e-uec3i5_0JMlXEw5YvM{?o{U1XO6GiAkf5N$WZ}N`*5q`pU{z{DjD3 zy#P^;avb^?%}N!42ZROoP>W3Z5hg?5AcmYZ5&`^fQp^7Z zk|ihXrZaM$QL~l3@`Ziq<9M05MOuvvyyF%glowjx%?IfFvV~p2;K{hJ$?^a*k=3+E z_p{b1qJ>9+5g#Hptw08lPym_2iD{Vx=9*IM>%;O-PR+7NM_K94;a|pFSt!&DV^6`U z5EL1bD#>bWR`c`~MZdpQx;`9eLDl1;H@#I4VOCUsa#W$SOeRnPvJp5zI7wQ(tNS^d z_W1=5?|=B4DtJ^I1FnsO-sfiRo4}&V4R44-dvgJ<`XSEO;}*YTcYL-oAQmucC(q(h z#A4lOVER-==aP%pEzec*%rA9alaQS~6Q+<+-bgYR!^ZIe_@j!Ya~?;rbL5h1*uCqg zBW*{3l!Bp5o2g6{9+GtL8uENz)UD6D8o--p%A2su0Y=Ng+4HXXs>pogW~tm@Xws^0 zy8EibdWb-$RQ6!3%09qtUb;<>(wIBTQNR(g>JK!GcY+r{(VLcG2c{uIo^cnp5y0AW zjJh`snRbo&hCdiLcBYAOOisftM`ly149}X-X5%Yow{MO{3C%B}6B*IFCcEW-Onl`; zX4WUP4SIL`^;(p)`-u$9-FsIi7BLI%N8dRL+?jk@GkUUkTdxP>J=Jb~IJ_MOfs;UH zfOg>1s+T|1>{b45U{L=efeEkPcAi%sYEnT@>>h~l_5^F5deFb~|7g0(prE=fN_Tg+ zbT>$+ba#hHcXxLq-7O7DBMk!54I|d+6 z^+=DK+&iQ{D`88HE`>tnRYm13MO7$eRY=gj`JTi9HRyiUrE6!LW(pngzIAX)i!+W* zg_OzkpAIlo1s;Og73XiJ|tt~f-wr}h({BJ<}LosZ49xW1Kf#Wwxt=$r3Z ze^A3)j7Z}sHs(!YK123Cupp}u^mDR&NQGH;;W&KYAWM3>4gWJ}FBoRt)3;30?MPfP zyW_83t`}ux(Mw4sLi1c7KRcm4b*hEJ97N;ajd)+Myd|M4z|sjx$bgv8X^eiqryN zWBm~mAd2WIGsmejv6H72=y$V;crw!{;5q2TalU@ZoU>je6R#5rt=cnfiF3aF z(FU>EyYE02N!Lni;q_^^FCmFXe=+56gfPMNBK1qb_G{mJA0 zB_NaAY+Q5GI2g7k!~Vzj{puryb>!Z*S@}5jXY&x!)oS}CCi`V35j`Q&24}aAWvNS4mM<@q)HO3NZF5&COdPo(=M1w5@ZLwaTO#mj0vS=bQ`JQ`7T9fb`ie3jQ2MLh`XPQLO@d3!G+s(s&ux z66+uDsl0B*zM_U962DLL^Y{N+pIO6YEWv)SH$wD&lJ0Lo^e2fLB&>K0^p6~c1y{0P zR#MXbI(F?_?$ccP@S<{{(luq@WrdxWogwPwV9b=()B1?f(S?*@m1{Yxi@!LN_ca;S zW)j!p+ns{cyufFii|;pNJ%6dmf85Z)`ycN(ZC(7!?~R`hIv#w?CVvflUBDMfy71mX z{q5M={^zX8pbqng+0jMdA+`7OE)U#4t2pnEI9tvu17v8M0<2(#NPdPsAyTMM`|)we z$i9k*j(C2f0B2=pL&<6kEI$5Y95g#5WD7r-BjYK}w|@xt_Rp!f+ED59JN3=Wm4wY% zg2^dy6%~uUqIMF?*-kWK>(4aDLmKvngk_jUevzd2iE8ji?M5!wlLT9;RYj!XP#C`z z*~+?pZeN01rE}luTJ-1F2SQ=eRd+c2Bvy(T0h}Aye?&YdsNk;Z$R23rfgy{y^f4ph zw_}?b0o>0$ER8EGHcA~%>rn>lJDktIV2Q5ZEyxhn`NA!RjxN1ZCo37!kRAS=&Kx)NshTi(h~n-0OceYrL`fd_1c2eRs;)%Wv|`^w16lCIdrW1(C#H@FQo}16X65qw3qEDx^``m?h=f#3T zDG)fw;F;-&UT)s+C`TGS7 zqP~yWXTRTS`#^tgvtZorL{aCx}VlmJi2Yoc#sRGhtFh{L0w@M(qo8&1lk?eLq`HoE%O zuUZ1Sh$Wmdb_14AzkLeqp`+;}>|pd6l0_+3=P>Y7v`KH@G#tyghz8tbon`I``NF@) ze%MoBWY~VdOs4n;)opysvyFr`5^`SQXo@$M-bG)P4>P9~Jw{w`0I1Xfq8}y~-uRNAX(Z^j;|2QozJHH-6E4Y#LQ= zg0e8J$jdKF<vugZxO<<4 zlIXW%i3p$q#wS4b9 zgAtL3jt8*x-s~917L_6}s7>j0#0bA6k;x|N63N99v_N_0^%aKB;1R2wm#kS7Z&>d4 z=Lq?jef60ox>SGlSm1X0%;s>%b&BX&y%<4BZ5o1Q?|E*d%#;&_b_NF*mLbWv4r#f` z=ijxhz(E5GS3KFxN$cD z>7S>@P7t52Q{-3rHu1KzBRwZDnaEU4j!l;OvBmH~8X=pRh9e66m2wlsYBe`Ukj49!bj?Oi zm%nawuJ%uyOxsqeQK(LN{R~ako!yQG&!epekl;vlxv46VndSOyi1s^b8&O}NR|dBT zbwb4$JWS%9f5sYSv9E(;D9`Kbn*9_rl4mXpeC#aEE@2Y)YOV}6nDN>Wi#(uk<)A_> zEd_HUg;f39z@_V+2rx2ol{fz6Ij=bF5Oh!!&?s{xNCa+1_0!Cv3cga%me{HzNceMa zH@y3Md03*N!A&#1nb*%?dvsER-Fumr zsN=tw{+-{*B)<_5{9e*e3qUwHz)j(_$-$aQI`SXh_NP`J+-!Fw&?Y1N6OqLMY6h5} z!lxFN=-_^xBt`Y`;;$@qyp08jd*D;asHTh;Zb_x!A{6-0a22;YV>K<-u)H(IsrW%7 ztb)5}fyw%(&lfGs*gT1EfiYGIb-{b)iO^zd6B0PEyHYW$-Mg-*H+cwhj1+7L$#GDc z0=O@h!%|1T{+n^9Cf&X_(DX}w6;M&O`4XeYmQ8pu6tr2>jqrVG{G$-8!B+c*3o&}N z><}h3gj8_ELM}I~Jd}_++`N1Aqshxz;+yd=qS+@|h|s`uPqtl5 zyZ!SguYH94>JecVbB5Z@MjpTTL&w=ZWnFkZ^es_Ja0spY7!3Ba2oST~$;oWY=A;F4 zEh0jNq7%19JM~*Dv>H2Zhaf_SsPT`ucZ%Umu_IE&cO(AbI4otLRDzBg#Ds%}gIPOc z&6%XtJ|VRCBjD?q&(e9Dfth!ay5RF6GA2y~oI1dzo|;vF5)<72fZ*f7e{H6|(M+K; z4rnv%31l0Avp?9!O3TjhLq4{Q8Df35A_ZiVhPD0g2gYra4$TA*mS~7+rYKrALkZWx zChu)Xg-+3@;HaT%rW>-s*d&P+UyztsUA%V0PS#OUQe~}5WKTdXhgCVT>nebd3L(cR zjwQ|glYxE_B`2NRc5!>00fta_!ihdd$|Zg+QsFV_h5CMtrS;@Lw7N*;HCT4gIyM%p zV8v5aldtXH(KPCQHU}Gzo^TL@95U+f@p~jqNLv+HGdb2bID4$Pee#XXrpD!5ouv`3r0vhj zEu8wKQH$r+gLT=>0q;MwrBEMGb;IYe!)&g6k>cCz*ZS|>^@(S9Or@5FvE?8CzbuAl zZR~<9w-zoR+SbCBY>Mkn4iBMqJ0sMB`W|UZArgr<$8L0*Rxj91CUzRH7=)&WuNoyc zIAW^vk(kftOx~iW`E_-IqQNL{>PJK z1O`5q{qDmK))M*w^QJ!64okDWS)6|U;P2=3(?Hf0)_-|2r1iU9tyR}cAW*tgno0F-hOmC)*B{W`nG zO3jiquyesJsQ6;oE`jZK>~B+@gOaOKKkJj>q5&Kz#J=f8RdCO!IZSsxa(;<)AQ zPX!@9=|*7EoTg1y%H# zkit1dm=IJLve~N>Z%eYsee63biTv4jgWDTcyb=bR(cO zT#md*vM?p5B#1K1S4e<)SnwG64q0@>@-CPrgdOtZSHI#aI)mv#=asW9L03SG{HJvas&|EQpQTgp%cFHE+m{HzZI@~Sse6B5L0AAa3*)CUfMxJ7V7+e6=hz-6$u8p*arP`?gM-xgn9Qo2JExj$5hWN9wo|kP*tCTY4Bx|z-*!RWUCnN#bP=zw_UA%?T{HJY~ zzcJyZr{ZBrvLgJKx_D1zr zaqWgxKWIl!n>;!q<*WR8$7n94@D-_=X;t=V-Xf5QQ;MqQDd#vnN|G*|1R%5dX&2J5 zRGje}NWQq0#L%ahrp?O96-aTa(Nx_ocELUG2Qv+Pz~ya>oas_Tn6>7fIrIE)g+r9! zESP_Jy2|DLegdmPPp8NWwRwRT(3fxP`)}T{*ai3ZMIJnP-%PeO8P)>^--MOhV^7ko zb@;ktRL{qJhK~v7KBua#4oWru%ATw1TKJ|7w{`nS z9Kw5ic@)ZufD`b4F2Io3Itnmbk;ag50|pEKjS!^D?E>r9BMFhtkC!~XN15q5a}3q2ANhWdY0(L?FKBUX<)%jh zUt#+xA`l~Pc3+n*V})5qC^G=BX(tat(e;cN4m)0$&habxTD^a%XBrDXlIrHQe0 zR;8{~3B;WHI*X$0=9OPgUcb#k`pA`D5ri<7FWmXJ8`tvdTx^CF?mqh)J2@$@T=43$ zS_#P{w(>U@uR3b$vh2S)6&<(=8gI3W`iDJ+(Q0y|m|=P!q|AgK3R4&^BKVyx_FInxfWM~ zyzYltOJC0bN_N>>hMc+QKLihLURjZVJ}M0usTb5dSW@`{M){9#H@8>Vyp!t=?d+wR z6Vz-mjf!C=PMJ5b2Qoy$`C+?pvPl${T!x3@*rMIbTmE9@t9^UJut-lNk$)joAP84^ zt!6*p)RX#!w=Qiz81;Ve8)P-V5YV`O_;2Ev>kNs=T8kaYOa$%Rw z3?D4N_ihq~_JaC2el%d+BkP4%sp_?9oZ9U}JLqxeTMKO{Qf7TSt6)hzm8?W=%_Aok zPb+Mz5re!EZ4zu8e_Ik%qZFYMsv9~WiDzqIm+vx$Ktt1EKE^;G9O)l?=%@K1tSM>O zeagqU8IFdH`lsOU+NHcC3F-58(Y!jER8j_y5;=}B$F3i?P1`W$*Rt}S(L)`CU1abJ zFi>*VmqpAs?O!ud+SgM?`ijo_*iq^u%cW4h8gsZ~XUrZ9Z8|}u-VgrG_xb}87O^Y8 zg}Y?h>^wgciDMM4ofTv!a#O1t9nHx~SZ?SE1b6iuz)JU{hQJ5Lu1Ty9c@#bOo z=Rcyn?)wX8?@EadIr#X`i;XB4*n#UtsdhR*Erh1?z6RTP$WesS8p#Fn8?B^~{Mx-e zHTiMX)!ieI3xy>{BaWo>HadRc-Xd!7CbBXE6+0(ysN;c?~3|Qv`^Xb12`_?mfYFbN1NuYyC#K?C_}SL^a3CA z9wG5KFcg&i)6zC*Ov?|HnY?{jK#N=%zPlEL^V&0yG3ZuhDMw^ivj&Xizn)PeUJom^ zt1tKwkiP4@v9O3>gnxmfJ?WaA_sQ?|cMmb|36^7ztl;f1tzWZod0PP8YvJAan-XJ{ z+!=7QYuMrEZN8}H5&fU7BX={ z|0RInWn#0T`AtJG=wTm@opD4E0SP$KY6N{Ar@Gn4E^5#onlz5!2+2~CM8kmI8060B zBfD?PncRBMs{Ku1-z;33d)TvMAh6raBrXmr-_*U4Mz&vbH#Lod2o+nFz2m&(RXVkS zPRC;*B4sFFknh;4YQ7YcH@|EwElio{xVVD?{i6!Cq3(232rV}_8I~)e6?dMs3?1G8#e*A*a z@wZM;=@n+;%Su+e!ZD_6XgZ~O+T>k-iC+G~!-_c7+y`tt6OjM0F!JAct>7-m={p`oc8858v zuK+6a%jeY!DF?=l8P&8m19f|e;IKZ*MHPJ(S~}CQ{kX>fzDhe|$*N*2Wo!jwjWoSp zsY=QM@~f5@5O5huf--j(D@LhQjbM7tyT+wzxj$Go&2?|!LX^aFsbI-CHBae;L zHzlThT6A480s}k-CXb%&XIugVU5HX>_SqYsKiN4w3*VB>+c~@Ws+u)qxE*$*DV%>O z2l|Ft2d_t$MF%f_HnueRQZ+kMOZ3NmwF{3TZatcs;s=U77_dHA*hRA1`s_5UUk%73 z{Wk1UNtBNKkfKll3y=R1A8=^%vA^I|D|u!z@wl%E!~Ofpd|>!l>O%+B&j{umtsl^} znZ|RpZOPMMB$TYrn6+PMFUzS2Q6q5PW@gY5_JSE-*y^Abx%(CsfQEv&TYG?fx=ajy z=H0`C=eKdbbIY0qPp%soT-C?Q+3>Kb;n(kyv>kL|&46^|@L*rYZgreUa zQi?$NnWB7wM+qLOPB*nJ|sG)(Xv$rrHvzVl@dZFwGImDdd&`~+<)sQ z?z46+;3@X%QcbryUDTB=t&&hPu(lJnmPgJR=%a)bbBx2N*@lr5V}*nuMs!pJ$X54j zD&9!uE$`J2lWZl4i2;Op)6lUMSsXQd{u^Ce^uUpH*H%nO z0g1clIm^%{O)P5ZLgk!%2W$cxasj>xz})WwK-hz%PFApUy?_pNFV|JnbYjL~aEX(# zV>Z$dw_8PL1q*n8)3m(4V3UOvuE;yprt`F`qLB+Yn<|P}5h$+ac-3=a+%Xh7)vCEj zZO2sa2?3gw6;l7ey;oXiZdC7bjKwo5MX8aCRGGwpikmYR`iCbOJL@hz8CRFLQCC9z zCufg4PZ&^o%>R2g0fQEX2&Y|GxJd&b_jG)eROw74py|RIstvXm9DKLzBe#nn1ek`j z0WsfcBu2kp;3H#!u32tQmhOt_BPUg*yGav>1qoD-bQ|+O#ld?@vrDegTCgNM(?<4f zhyp9~hElFxYPY_CH-ENZzU$3SkwQnGf}}0y=z>3CHhPT?!~hpRekg7+x5F?Rapn(S zY+K1`wrf;%|Ag{$wQPf{5zar>`WWsfN zVIY?JgJMLAhg~g%{qlQ~2c34oyv7Z(Mm>io+3h4%ak*z!b$Gdm$R$+!yUUq=I&s_( z?wnNGIPYtk%CrK0*0Gkc!5fo&kDQ@G|4}_FJAz}uqmz?8B(T{JBW45*Z;dk$i2+SeqM-3{vQ4)*{tHl)wEo(L2qmI??mc!T1v0id zRUp~@j$Qw`8qDPggqS51oF5x$Tp@ISewvN;3DP7W-g9z+czgTvW9KTS504c4w!kL# zCpI#|F5rfOuQFXd+pVOkU|w4N;+{R4?tZA|oic|2{ESqt5NjHPtXva(e(#vgFYb8$ zhNLOA5>rFc#7{Mn+iR>=C@Zr#Nt)eb494pHejdMf{+&nCy`QY0?_5SfHQu8bOe7XJAkUaqq`IEo7`oEv~lCSNzb9ln6pv#&bRB2%OzjjepV#cA5-`p z#I^v+nJk!~lXp9a>R~E81+>xeO#JWHs%Q6^I<_m`uWEH?87NAiT^rCqeArB?2nLk! zIQ^d-l?5;qLuZOTe|E7IOMZe^lY7DhP;13?v2xAGcTXz=mgouQ*?BY8gtTN^^@-Tpnl&3W6)1r6Xusb zP#R_uH<8B2-hPD3ZVqOK>@&nnr7zM`7@5rmsi^arDhLt)K$M&r4rBczC&$-aEVSv% z`~GIUGzQVb!JSH-Zoh+?b%*ShTTxfwNX*o31Ipy_#E?Zmi|!G_5TVmGF~$N8oitn_2D;nnwnURv68G5qHk_ z57>1Sgvu(?G4b-N8(#-~$N0sEFsab!^d8!&Ghd_@_lR~z%ICiGFIIEv$42UF{V0`9 zN>=&={wcx_5u!UHc>m^YrFxD-H_F@}(x>Job)QYqUl3k7*u;Q1E6AxzSLjI!rHDe=TW|I3`5l9%3)~QyoX8puuZNJqnqpSIB5q9ptqj?tRmE|$ zl9wmTecZ9%Vs>ppprQL<&w_RH)~pYw&+>A8ZDBlM&@lgml%1qAj=NCJ=~OWGHLlO7 zj?ryK`9ieLZ?R$kRzawm-O)Dnr;9of_WC;?W9-dREy}%OI%3^w)CDP8o$#UJibb~k zjh8dHn&G?#r)=??ys+NB2MlF@#DAfG1n*Jo)u*fOd-kzn7)`PTImTXbqZ}~iN#iAjr zRR5n!U{t}Jxy)j|8?b$zIfogL%P!Ay@jlDkOh~rsIXQ1pY$aH-l%2^bs69y;IoSSQ z4L>&Kr53}<#^R@ow*HTd28aT94(0dPkYc{yzF^Rx<8{vb$*UKDPYj*{n43;&U{}kyUbmWj=YCITc%;GEfT#vh6|G>>MDM^G(xu+8TJ<( z0gRD+O@eTLsKXW3XBqN8qk}7i7TZlcF&DnNQ~LmOuLaj=9Xs&T@C?1ZLy+?F2lKfd z){m*WjNG-n3TUyN+Os!J954QaBWX^l= z&kIymWjk?Mj1(3()?4Dz{FofA5e?vfw0TopdIkAKy-4*Juh6OMV(UaNNtN~Vh>&gx z@B+Y8U3t@P*?HTd&CJqn`%Z0^?$7?+;+0~VZ?X=u!P?)LYj{@}&l@1Z;Hp|AMZ z$F^SZAjqWm#0%Bt@`o7}i|IbnikGlig?t0wTol<`61jq@oOVoFV}+|p0IEPe5zUR`;(`hVZxE~kAhCbYZtv2(F{ zc5`ASC4WJT#1TjN6OE1DS91OR0>l=TgYm0vQ~Y>PZSGlIgmjM3-n7@urm~l7<96Ew z!lDQkkUDMLPBV=zLBEk@k{w7V?k(2fx%8f%pWNA|5Ce^fXy){V3t(TL=AijPOrWZ@ zO|Ad6ZC-4-_dop;x2z`fdf0xOzv$f{t3Ua*7qtMHL9MzmQY;J^w`KzA_v&4+gUHm5 zRg~E4X?eO{Ciqe5h;M?7M|G+RLH0YV*Q!v%!x(YYHUo7C^5Aa ze?npubyER|Hd?9mG%q2(AK^bu)Sb}w_V>oJGlCL^5)9QMqs2ihO#I|x8V|Q)Cv0qf zj&ZUD>sIlnCVozzM0v1lQk!Jy=&iIgS)ZUj+IxmQFd_Px^deh} zuO$J0%vYpi_wV>8Ze;&dlF%jSMaWP$1@Un7Bt&wt=gCp2V2an6phtas&#c}NSqLrT zJ$Jef$_tjVUy_chqn4VHyWsS-qF|=uJl5-Kuz#yww=L3Up?33%Q|CZ8(wI4GZZu{Y zdU^08b=Ox?97&VX@rCtYuvQzFHysh1xB87y3)stF?3z$+x~VRn1$sPs)t>tkAl@bg zE8Y8=i?iu>V@H2m!Cq27GVLqSYrW|g1=b(#}fTRucO8#64gxf=eO0{Tv3V5-4q@%n_80vh7Owazn zljL&a_YNymjg~nQbB$a$YbC?}jD}tIs`8B78+JVNzI``G^kU=}BbtE@zH$9G@tbUu zx8-fDN8i{wM7p6xzxu)iz=T*r`W*b^okR+>+ub~%UfCG|#G@^Qg7^w^gTZh9-M^zJ zr+uG#^ooZfmOcI%9+^5E!}ySHZ)6AYakiO=2K9TH^dR9~-kcaGEdhPKDT{<^XLq?qBj&AAubG%Mq%w!MVLvhOf z3DD1#n^TE?QzX4vg-QHavTh&qfg^_o@gCuy)W4&Yd|Z6CX1xEvSB#=|k9 z71_-Q5Zh&blF~6rSvXB;LSLl$MJ)Z=xfz9o1zzV3QKo-pco-hZ=JjBN?sYqg{ObDl zmC0^&-74;2q!JzR0tV{nwAU;s*s+VcPf5^#PN0#hNr%rvvJoYg1`xUc&j?PW6%>;*A|Sf$E`+Sc zPB*mY|1PU*-73fk|NAoZSsOg~_)es{JHNJGwD?V=m~UKztFlW_()g2FEe-IgvYLO= zin=a1Ex_ZwDG}GmCkJd2e$81bvnQ=v9lVxRk)RH$jHPj&3DA6j59guB+JGr0 z9GTFvObub2;>0b|@&id$B%G1P&^o7wcRlKI6U+<#BWuY_)QK*;JMLFa>>6Xe>UYc= z))YN$+FUZ!XtNg{?1x?)r+1j`WJ2RI)CkywVFz>#ej+3zq2%qC0r>THgLn4c1<=!O zMT}#=+O_MW`!uYaJ6oxbulzS;aikGKA;d8#VyO-z(TwWy2^t&!#+TI9_H51~Ow3n*bI59`cYw$()l6iMOD^iLVA{bS)-n?Shw|^nt(d z+(n>Jl;G!_73xokITWp5b>oX3zJ0={e?0sx@5q$#Ngf`cP_Pix%_RxZLMTjB!n&LN zqr|Qn-y;Q(^ZbeladI)jzJQ%?*S7}-rXv2+-0O|`VH6prXaAgEon^35uoiA6L^cX9 z-F=1*miaITlu#*1`=^ssfb7bsg-a5A z;7~n8Tpnc{D(vV+AGfKh6q!88dlSVY-EEF{5_bEJF!Y8V2Wb=^nI7LRxms^UAFeeg zxNqZ@@S2H_h(q@wV|qV%dS9x+x=IyCpDttK#$u&K-ZKOuvA4)w61qiRsEB~F4;Ka< zGc+6+7b;hV@hASb$SnjSgy|+jR+pflq)EmxMXETSLsX8_Bp7~umZj~nbWbBC84VO) z>i${`nCtBi)F|W-I1?H))2{+V!dcz4oE1L_ zc=;%!w!B?O>}50NhlK<+8#1;YxP&E6gvCeATG+w-RgV(QnId&r@t*`OdV}iFB9bE znf1PE8r356U`U{kJm~}gkr@G1ELAwL`$8$MW@OxZAjrJk$z@9DLpRmaR(G+?neia4 zu9i^4Iqb}EH|`X%Uz2WIlf~gtty+LN9Jh2GwYmWhy&*iCBvu5?FEnz4oLdmHVl|-jk5N#SX))lf5CXx$zZ$SATA|Mx7<>U zG>6|pWF`s}bA(Ca7djpNZf~9q&S9^=9?iM&+inD0s99SY{8vEY8VqEj`k_58@Z60? zU|r0J z^y*CN9r=p1%_O@^_dcGxW1H5`2QQgz(@>|~Lc(!eh3a`DQ7l~)R0;z92JT!1lkRFHt$Odjw)Sho00{4MjaA`RCW zCtTuk=qHsoEhki5Ek*vQ;Tx?1x>1%C^I)h&$LPoF(Lehjjg%QjjecK^ zaY>blZc^@Z*K5Ueib+Q~gMO@Q%)hD@UmssQUsT(Ux&EZJyZtcZc$NEA%V$cy*nnn3 z3+u0`uU{L2V0e9;1Ei%2&Y9n#g2>Kc#xw~)`ege0nRgsUN@;}4UEin)N~u5>8M8ov zo$nM~grpv()-a7dH!%fH$Q$wXQ6M$xq=c|-vkP*!GgO`dvoA9accBK0WL&yyRlH$d zwsKLrVIKeaJAE|AaZ*Ha#Iqz+|DJ!u_+Y8?TSZGWjE!YC!H+Q%rq1(6j?5cr#s0jR zQK-sqd5;|j^Q%!amVwOV(EcXI?5!u0i~rsN)ry}Y#2S~6VvRo`4fh%`m9q(crg5$o zBE7i!yL>UE`FwpF4-5&#U&$WdfI-TjIQqJ>f@SDB`2!f+bsO-uH!lr|@AP3;Cs@8_ z8vxVqVm`T%wzBsOtLp}JpD7f0V0w_XQf3@^K$(5be*fG5Ib5BCjn)#X7qqV4<&X=3 zFUyR8e39rdz}-A_=LxK@$HPDBIUC_8?nKY*$(M(kH%0q)qm6$prvHynqc|@`^3E6c z;rRH|L=+>_vMwxn#vZWUppS(ck?SisfQ{avWgZVXfW7>S@#K%m$L9t0y5}16qd}9g zSicSwU=v>E36`dG$i+)C4Pv@HY>Pf>Y>8OL$1l}T(v0Hi*X-#+B;c0to*>A)&9mmO z0u-ZFUODh%%MVFp7M^DM8gBX6i^{9qATvK5B=YdsV+k>DG?=@n4^uRcOYSWKl2yF_ za8-JUD4{@rxl8S^bTNL`_DAUKk*EH0Khuymcb{XLrX#D>H*~!^OO~ivqbn)17Rg*8`o7({WCMg}657cWsW7lQT{TaB z=2FN5<@#NBnh88bpt7Y4n>Ji4SAeppx$)A#R9*1pm-svS&V!SwV^R?9yH~ z`b~d2ZO#RgM2oFnnQ@s0^W;ia|9aBhVwU#n3PH-{ zs>o=#ugTH73P#2FD8%Sl(lm1##x>`%V2UZ_L%gtc?0-DNv%rgeqMhG<%DW_+RY)wX3>#n(+>?qGP)~0VK`w#hzzjfP|SQ~Ua;k{~bb024w}FMO$3JKFs(?9~%k^SWBbW zj?rB!lrcRBE;#5XOKb^pKiM?%eMTjr@bTH41No8h)$Q8cNxzc;vv)yd;U}0t|0#7p z1+i>LoMOAwlaHLCF;8Vl%3X+SoI^K#O-lS3h|5iwk7Po09i#VxMkvpJ(HGqoO22tj z67q>~!w##_Nchj|MJ!|o*`0qtuN>=0v6r42@!FKtLtX9L{jJ39`}=2EuF%qWLh|{g z15BVL^4Rw5Zss4u@=}XAqdr7k|7m7LJK}k>`=d7O%~Z(Ujm#wIf^L{k%x0!t@Pwwv zO`^R$h>~P_{qt93J6j0AFDf$%`@RcRW>AD%ONJv;svW~wG;eCfVOipYA!o3&8@-Nr zvOR?UmU6KM9G=eh8bZe2B4D-vX(Kq-di_!RylKai%ChYJFdjA-E79hZ3KoxC zd^G+W?#P56xfa&0EwuDrOasS1AxpgEO=p4ychT4?6U1w{G1IdRp?JX*`s3?s=(Ni8 zLC(#2oF>6+|h~RP|){0 zm(Go?vpYoe1HY|mF#UT6b{1`%7@oWmWldX|-*p-}ISYuIw&<3uokx!)Gp#>_zl1v& z)ajV(Zkk=Y2exZ#bbnGzaoE%UwtPezHiEl(WryX?X606^bJ1ZkKlWir)IZSg$NUa7 zYbKX*0XZO;Uk*N)ghLCvV9$kreJzp(Y6Ej&UNW=>0kz^sK2%)9btj~3$tG2?{d+X9 zgB$(iM%6nv<4%y1Xh<73aYpLsT_UO&$Na2fTWnlbLt8^^SwH4&lnd zfi-c)-@-=YwmKn+67Uq~Wq5OCn{;K0RVAu4rR!+>A0$7dLJc-zL~?+tv=KxYBuJ1! zZao|LNhbAN{C1TPCd}Pnh&tZ0S z>S$|>#=lBo*p*_6FXLoIM)D&SRdF(wW0mO}SzFmIRwt(e%&Ed=;6FuexNXZb7sRWE z<6p;%Oc?zmT52egf&}-A)O_mqL$NH5RtQLlP;>D!hItM1==QJnoVa29dc2&>uisJ5 zKiyIBQOk+FpuL>!`$Bqc`mwreMKF$UoBu?1s9ePRTT|B_v+B(lDGE0LWM9P|3Vd+V z;`D)hhAx%sBP7yO7NiR*yu&KoC~)b>yYv>Y;69bCUQC(ZpNTe4vFX%%x0%H9Va)0sRuWykHOssh zH5x2eZPnKgn$|;NJ$OCTd4Wg5@<=17~u<)8SuBPYPg8X_jOG{-Oc=hf?2b+MG& z(q;)J+bPiulwoQsi!XDcOgm{A^oDOSU^(;?T1_9I*l^OV=dVz@r~H;od*5Sh-U0(} zP^OF4rNC}^{S+bJ0t}yNR7O7++LIm50NecsstY8=CMZW;HvH`(TI-Ga<-_J*RFyGl zoZ=*sl8EP3H6RLg8w2mO&pj64!NFU1t`Y0D32F^VOCAv_q%-Ec_|K}wE8bfm7ept+ zE5xzJ4K_Hg2AkdGbnZ#^Kwy01;9E?zn;GriUk-uCr|vc)B^S((wMa(Ec~Sx>moIiw zO&`)L4MPG3)71&H*DNPWq{ODYvN-2hXJFt?7(a;h<8X0x73XR}bT^E!0yJ1Du zxxqR;`E$&!;>wTiA$`%b1-?x!IpMxWz*r*GO!tfSiK-T9h0Wks63AP_<*4f8g;nvy{Aq>7=X=q95m{z3tj7m{Myq&`Uxgido~8ZCeN?0_M5EkcA6(F5*$ ztCqA`6;>pr^YXfi^1gF+JTh2nj6+tK`*o>uy8^Na)NIE`^*h|uKkh7^3wXIj^8P?> zG+5r(J%o)K7rxJmZC$4*QtH?rsEgtznA|M}}gA%Y40l zMhC`BBA4*NKxC!#|L`p`)R}nmtmPZQl6dA16P1Y$gPck$8R;lr_Ki_O#hLA$G>R)OtvK4Q-@tt$IHkFW7rs2 z;uK|}yYy`taBNdR!Hau`76rXj!;?5d{oK7c`pzLa9}%5)p2r`r-rW|4ekYmd*e+tFZPdA$0}-vs zcN5stjs60S$^EA|J39S$T?j8wn7Po={+$FR! zVNKBvSL+aa=CCd+7*R0PrjJdAALq5ey|Rcw(0vgkj{Y#`?b_!zt}m{>5X=HlY(L5M zQnvjk(%z!-~rMG;8EkM+Ky9=BVG@_b~>e&z7F@1XYbm09=CgSqF#fCfGH^L`7fdwuH`{rji$x536HrggS;n?S}3x<&6+kii3_oR;{%4;!_Gts1dK>ZnNrM( z`KnP~6n}j6ZX~^GaV;8pS5iP&Zjr~0%-}!Y>x8-Kw3@}iz4Ikar71RUc$Vj@$W8nKFVUWKTDC_;UqTWhxt>K)$Et#B=1U6FUx<8d19s`7ABggP{OuYy zlT%tE4T!Ao>v(h2b|mSVE_@NXX;6ZAv(4L911X^3x_kJ)F-)7CD)|b(I-on~PiHO3 z(Gj&_laUvM|4I5EO;-U_Wz)7ny1P?AKtMQjNOzZXw@7z)m!#4S0@9t*Eg&u3(%lXJ zzTeD0^UN8>aS%CYckjJ&q0D8kC{VXmM#ikppzgl;M&a|t`PTG(`O%a99}O9{-Xj4- zzLndNsyZDX)PHoQGDM2$!`o{{f?0uh_OREmk6$cO{kdy@J^3s*D=SI6ox3y-UYgdT z6@E-*G%^UDDnFPTH+1my=(1=KEnW$sno|K2i8s2%bPZHMg+&bH3_^UvN`#RJ8wU9z zGc{wDTR42O1dl1Enb6V}$TT})Bc3`=dnOKsHlTQ4+A`upBH1;Cd(omgRNH6aBe{Zuz_2)ahU>C|X@Nr1sDfYOW zS}s0IB!`9*ytiuPpWqzm4M{@7pk||m%`}U?yXK#3*XX@dHYZXcMD$h1z1wqdBg8--pSH0kmHV54jt-OL+Xs zJiodNc(x1P$PMrHi=M1z;VWt}fp9zrlO)8vSwL;YxxY-f*j>wHhJ51gyUlW|{1Ki; zkNAmT248O}c=yi17NgY)v4{oPB*YkX9A%v+dtznwknQB8Ht3uYSN6^NtQEG)ia05^ zN|_8&{3ni~S_UWz=xnC4AUHL3vcy7~1ZGXjJuhg!6+ttJ-mx(d_Y!9>yaZVa`M zFn4xO(%f-Of>8WHe0B;R7EyWY$Pu1O?kPC1ekf2sb7+H8UzRymSh0dy0`>)64<5B( zh7SI)*yph3C;+xImjN63p2=st+l*fv_ra2jYV!0W@eNk!i@I2*c>9^+m}MPS-fYZU zInHl#a9B_Rq*v=LT#FU(0ALCBBd9xv4J+;LWD6LhS2U@6qTymh+EPxw4cW_VXU(x4UnD`ephggm*`vcoWU#ehII8Ql% zN;7euar>s&_3z3Wg(Dx?`I$q{dG(-OTmQL3*VY!??z9X?u)~)|TQRU>1g3sgWcU zHGYjXzq9%m_M89}w6y_S&`s$0t=ij1xAS9{UEP1^=XxkG^_-C!?#cZf0U2VE5uLni zLPl(|w8PWqA^kRiJT{;UvtZWJw0+r#gRmW@USjI@Bay>>f(VP9fo{CAp3hm#_s_U;e#o z$7KrGk<`jKxzsM+9Y7FPr4WX}w?lhnp*J3K;@7=*%RqBmQpi7EI>okd?yY};<0=a= z*Bjl@`jE2e%xn>TxaJV(mSoqBSRv`8a?sco(M#w^*z3&SXY8a>t3VP}o~uzIHs|89 zNTyZv)k`7BTxVh?WP6GOR3dd<`bcvksR}?_w^|^Z#+!O01|epXbk(eh7#2*5wlmYE zdEHZ8+*3vMvz5*g<4S}wF-~xh1$RrAd!h9PeOUwtaN}{*Y}J>=YFmPI3m+}K%V%F9 z@v_;#t%o7A%R3k6=!_*W#hND!Z!3e;%!;`UZ^2D^(WYsU;_1LVk~2MmuRLK)GVuqT z^tGrvd#B`;Lx@)+1$^uvq3fJOZo{_J&&i)4)X zmt|7_7Vq#z`uK6ZAd4rHdtbn`6^F!>DDjc{2p-nu_Yt!yF?piWa;ht87acNrNt}c% zDKc#xH?|`TSgd#h&N{T8D>g_I!-r7X5(8fVd5hs$%kdsFx4PiFjo12pr<2>nS)xys z6n`f9nS)pJoAx@b!zY4s-7(1! zNm3wTF=Kb9|5pb#!^;KSu*!U_@KnXbh^oS$GFT*iV1|Vi4C)F$T#U$vQo$Adgp2iE zLLt|5shSA|ta3=qq2~`Vb=UbuQ1;!_1oAN8z_F^#tU)=4r^d+nZNz-O@vCG(Ab`!C z-eV~I?ovIOIJ{==+^>^Zp4aGtf3uT)?G1jnV&{~m*1b+0UH_055p%WJ#jw6Sbmb;9 zu3&c4F;ajAQHQba;4sGF`h*Zh#E#5yi%si9TBXmEKU}eJe-&Y{2Pr82He+pJ&O>KD z7S2-I)uiOaoAFI#;pxle#%OV(CTkY~! zP5=!7nDVM~1~^bB0FWC6_S{ki4u#;u)`|L%*(4gc(o(~H41y_K{^#--~m{xgo+=0K<5ru&Y1tOb5cM=Zos(0fmX{` zOyW-;p}kZqVu2m_`}Q{#hHuKF1c|>(eXv6Huo`5^TCKXAeZbq0r$mAg9`rUnmM&j3 znyFy7S@fX$5Q^-M-w?m)mQTbDIl}1MHFB9V zY3%Z<=>hIhzqUa~|EKSN(RPklBhqS^l~O+Q3-UkzF6BadvV_VLjMw)4QenVnnj98; z?hs_`?^1zA7JXN9ACq->h+!CPLa^h5kGY zdavj*$3^T2({W0T_@>V>h9@>}s1_0wQE4+0w#8F@OrsN>fjnKm!9%`yTsb8E4vOg? zxCg;F>5H`J;g5pgMe!EBkhi-=BSbs{N+mdVZB;onspHjawjl!E?Kuo*rOXKVnzPzYP;tTm;M zN!Tjzb+M5Nh#|0OGb`pEoqX*@1dP<4W@5u{!V1YpnCCSxmr|$w(dYC1oYca@gdpQkk2|V%(sGgqh_+&{Q>$l;EHa zIF*_mOU~9kS1ACP^sB<9+x6Uv^%>)2Y1Hmyja&4{_n>IBEp)IsDZDKr$Dp$mSD0aN zrB95Koau7v=&Ke24{m@ztF95hyq`a~2V38OEk$xhd_B~1;KO`T@I)MhY#j3;L9322 zG0LhTR-TqlIOEIW8*!CSnq@LQ$|AY_A2rLt(p%s{N-T`v!JDqnqbK$e3fc0Ar-5@^ z7B8O0Ax`w^NR?06E`@ThE$?yF$I4Ny(CF9Ueoib~2cS>|ZRBan`n0PrsE#nO4*&&1 z85tja9$YezUH;^%F^DA6089J6ON>F)2U16~WXrDnu!KLBt=tMLn9RI$HC5VSw0eU< zYE@wK_o&QDmB7^o3F2Udz6_|7rv0+l6?ikQbU=S?)^AXumY7`VBeHzi!jIe{o}u<( z4(#lyUaF=Np0Z_=l1(e1DN(X1ORd-OQiM`ipTeBd<(3wG?N(1KJIUtX#-Q^=;m@f1 zT2u?#>Atsqbvn_1G1(%&eFoq2XAn+6_g?(~_pM3jd`)aSl(yVO@Yq@nA*lXvdpJ8zN zDOqe758>IRh+2P|^yN#v{NTM0$)ZqOhX5H%pT8kFbI)1YNdWEA?VUq6xP$h2-QAxf z9k~nU#ESL+q{nKu7Rnyg-Qo|$$7!NEb6xm>0%+v>WzNSc^pP1y=OnYT#pFQ6HqVOZ z^4{A-E5#9cC`yDl@n|v>oQ%^)z!1+`sW4|p|B7>4vc{UNmd-Hgk-TyD{ z4)EUM+}5o{(a^tQ+>NjQf*<|t`jWuM^DzeOGI!^X6#ofN2uZA7hbr~|U{DpZwcG7n z$!Ic=$;J?_%Z5Z=SBJob z6=0?|HS3g5#**y0dRcNUo%JHlro&3GPDFf6Raon0m|Gv^H%npHpN?L@W>KmVrPyB( z1UZG^r0xtp_M+2Zw9(s;%`Ruq)dHeb+`i2p=JSZpi0z6LvHLx2IBu1yKl8LoK_t|F z=#9E-_tTHM3wn4(k`F^S2?<*d4F)N1Wuj6^x0;dGFeJX~Fl!0}s^h0xAX6DQ{YukG zIlwxs(ZUT^YB!K-(Zdst8>Ly0>aB)l9O8tWM&-Xv8jj@e1dDDXxyqny6NnUP&cgHP zIAXzBX3{}v;;{G4nMs%9rI0hR<51*Nk`|#GB|Ark7sXElg>*$VqOku|)l0fnvu)KK z;|*Cf2vZz+zmXZXW#612hr(XrMGtK|4Q)HqsL;c{=<|Y-I?oI{ zc@r9~hfH&v!Rc+Hl*@wnKh<(sHO$L@Cl)dc#<4N|%63h2SYG2k`=leuXNWbo$gCxu zdR}x-h@Ca*FtN(qxl83TN)15OcL8D>PaAW*kcgBWyVm-Y6v}q<?M}&4yHd+tu8oTPTal zN2HyA#9(+G+i=DG_f}+q#8w%>YMKI#Dr!_Qpy&kSCqUpVRmqFKg)+W|@C5>icXkdl z_+i$4_<&L_sA=x=uMYl=>v#Jvx-6P^5BDh9%yDxzxl%qrHqI}oceZsags9L3w69So zfBzGf-aTX7RZ#c`o_6}tky~zUNSCXfVn`)0iet*4L1VxQ(*K;^YE2ZGh4mU`@bUG# zp9m58ovv71|4z_1K0(5anKbL?lUMJH^4@;(C7SQ_{=^}D^zg(E$6yTpbBkfg zxkz{wcDK<+;kZo3N*t5-8%Vww@+o`V>e?$m(MEnO#X{1=yZmM`eLj1h@g!elSD;!7 z^th2oPW+kcK-huKT^R-bLHL!o7SI2M7+BO1c|Bv1a*MZ6<*9z3w7RJ_IDs4~O`OKE zlK+9^R8AbCPTFEXh=J#nHQiCJIsfO948x_~kSp4(Dw*SapG5<>84u=iOYU(C{$uot zjiZmi3jYdw6^hnp3=>Gu!$k%TO39fJYw!3&B!^NtWYW3t{DXKrwC`4A_o7H?Hst-P z?}mrk-Y|nTS0@#aTJ0)$;7WAe%B0Z;>m0ju*ORE18^PaE>M%LO9?W%|RtFoPBqNm%$I!Jb-Xxm;8yqi2VRf#_=g(41*d-s{7v;R3J)(4Z`=uWQ4vs<)lh}6Uft5s3Oigv$g)Rn<> z!F@Q>`^YO)shS8m1HI)SHE)7-g1w}yMj0rpxqrq8-D2+m9vBu9U5 z0fyV0`Ja>X+{F{$=(t&FbwCWbE24W-^?{g|g$GpjT!kr{qdDn!R|{c>W6^0TR>GP9 z{Atbio;`><~MhRr@Bvq02`Z6_o%|LcYMxdG1M`D)S{uoXwYqp7OTONeYX)Gy#5D7UT3tU^@?43Ip^$FKfrAGdA>lDacBLmW)t?hk0jA9h8EJ67d(F#=p8)F?CellK=_VeBQyaw!!0I?r=Hc6h&r+5}M2q7vYM{y!X)TPZ9KnRL$krve0@RVlluf?q64{ccbW)37|X2=KOj~MXsP|&DXG*MelVbpi4zW3Ht>Pr7$|n^?cWY|{sX$4UZWQ1Y?pEGm6ztY}S)O=W;yM?{-E z`tMo19nV0hZyerQ$-%M>vEYx~(@5DC_?_82NoK?Mi z?F_5cmXKhkM${wJnL;!vCD!W=u_m$P^0{hN@HiPqHF_wrT4doA3qR&_;3p`u?XH&B zYD62qoUm$`prA?M5AKHQ-N5Yamaf(^JO5Zw2@&{_5y4~j&TBC+K0?`WfRhr3!XrCz zdn@gCxjOMF;v!E3dz1yQAtID0)UdLP22P@;?MbYqRW_{oAUqGx? zD*Af8W8x7F*)AA}%}|{_O2!X2uxoZbtuoJ9-=A0Gw08n6V)VV*(~`3-AeEL^R&rID zkq23Na}=mqzx|A&`PB{Z)L>;w=rG{7_ko{A=0Igp_=np2{Rd1TYM_}}}G z-}^u}q{A+`sr;P5gnjEGfj3HVJ(~OlX+N%rC?Y>>zExQ+Yse!}(d9ZlQtyN2Iv+D? zFXlsMA$lFW1at4VXst1gl(j3~%l&C!rvRe5^JjNJMe`Wf8JM(bN9OPJ`$UCb3N&Wm zF=NpEcQXLfg3tX^)M@7xxg+yAfYaIu0N(XrlcZr~Q=h`VGHVl^UG#K>LHMWWwg0$?&C~(znyVu4aj}I@2Dz zi+c%>MJ5t=g}WOGdy1=b2uv74fIwxDe{1$H(a=+%*XIRK$PX(tZs zt9AQYA?Auz<++Dimf~38Z0Y#rt9amx&lqA1DyR`hoFG|$KrkZM7i!ihCQmU~(?%iS zAyo{)VZDMu_3~|Q4Bs{h9l6K)YC)2GOqId{*11coZw$yd-j#Ft=<5g_-3u=&gnfud zthA@NYj6j!U1dZXXptbPgzuezFbc3n0}W0eGREj885a1#C=VoTHgloJ zeDUgVD%4*HCUMo9KkF}Hz1^$*28rJvAEw1PKm~l$>3{w)5zIU-rmg8>5`dLOk1F8b zi^2iY;)%*~tMgg&1^MN%^Q!Icv;Se$hX13tKiTW!+NY@ z3IHPzkQQv4gjrCF)?oqR3@!=~Z}^C|sNG>cjLue>(~eQb+HUSl)BSVS2HNGAFkdVZ z(=esAbVl^-h1@?r<#C@~@5AL7u7w!H;~;7F`cVDn!F2M% zRHV`PUGos}ZoQyeSqd+q;)TjQ?&K zyh2f&EJAZ`?ZKz;CErSe$o{1V2ROAauLH>Satno6Wi!^>uNh>S`> zgD#_wlexRcuMOu2V{QOQ$6%*%V$Pls8B%wp2FBe5Sf6M_pW%U$AwG4q7<5HhgV%C= z67Y)ZWqQN~2<`03jMPvbg8k8VADeW_Avu4lPBt5c5EU9_!!dk2GiEgiIZ75XVv0Z} zz_8AJs`wCpCi5HmlO}|kjg6%##tm4#NxG;Re;7<1so=&j>b) z`t%yah@HpUyb>%aU^{NKEzl^_mt&DFnKMuL1BC8o+IVpaVYA+`C;%vKWZ+ykCM?im zirxbN^Bai-$`RK*_t*l;{wEn_TsR=zOD_`EJgoL(P=SbVjw=!9kt_a(HoEwC3EeJr zb}b!VHi+6p0+rN%$RmIu&YkefHg}6rvdJmH7_xEU&@*yLeG=!LsU$Ty^Pi)q_ny3p zMG1TlBf!c5qYser2ti3#k|QGjG|yd%m`2h>pEm?y6INfG~+ z%uzCexh{(Cdfx-zhH@<>$e`ALG~6VYKIbVDf1g(O!{7gG>5o-H>);v!Fm`}{e&iSG zSU=vboA~=2D)dTlcJmbW{DL@#qFgxxeizBnoNmB}zSRO1ktwRpyc(n1^L8#G9WZ3l zoJ8MM@v^rJSrEw__ok0}R<|~C{axX1`@f~n$f5xyxC;HZbx&xo_CT#Ft_)jLcby5L zEZ@A`!ti)HXEAZTM{gvdLg#nkr}zp9SVL7oL#4OHkdPATkEd)wE=_+sWm3*WCQTtsNt?a&Q- zmx-OdfD*Uin@eV`V}!_s&5d!La=v>Taf26(@dRZmWi>UFmOdH@EGggOb*4! z<(+P?l-Hr?1SP|IWtm~6Kbk_g^~b%&Hm%X*x$h^6(pHU!Fm4&t_;sAL1-!A3fMTtS zUsJZuI+<4ZbJdGLw&m77U{}{d46oEvE;UBMF5Y4;!yXX6f(0NefHX$4rzDbNLz$5w ziI3lYwwYVP=o{$Wj{%?A^Z%yiHcCrsYH9al7k(@zVi6wyQ`q$M-u_N1N?I(gj#Vx zED!BU0712#fmjfv?=XELur`{W020xm-P-2%mO%4^H#V+|3NDKZPn}2YGR|98>72=l z^eTlsaZs$->#&KGB2YA4o)hu1<~!}KWnPU-8wL&SU#dvS)>@bB2AdA|DAa_GJ>)HoT36AThL9;JyG)g zg$HUKOdEU##zYUOP&qlwcl(c;nX%q_f21s)n0Kk!1KTPHeFZ_*0J$4a4*K2GMc=eu z_%nX-7WwWp^y3Qr<4Tyw`hN4EADu8ck$&7GOmY9vt<;Z+wz1@A#5{^K1GB|7;f;i6 zw-lO~+fzT8_j)4mhHqS4u%#b)r_6IE*(9qGiH4N1ZE)-zmvbDJa|mIv8JlCdnls63 z^iQ=eR={*|b3+!lOZVSyvAxf}YS6h^Y%jFs|I*e8^i}s4FEOk~MZjIerU+I-aIvMD4qTFyN9vYj01XPF8~wpJn`+vpFQ3@^KZ6QQOtkQ!P-cQPIUgvKx32T_Hdx>m*<#JOvy zVsozF%JB47^y=itD9^U;I1a8AdktP!R`37w@!0+$`~)heCp=UB{fMSD8I;-lk(*lb z{=Vj3;ew(@2seuQOA3u-=|=vggjWJp7Nx>md!ZNtZa(#X>VXlx?INdqB_vXl^>4zN zN>vZ%-%0egF|2c|XmiZojL5&C>V(u+np&Z(x~?UUX@Jd`)(Wknw~QR zJEwUC+g}pk{ajYx*{>PX*=2YHTN2e2${9u{R!=&G7LQQ7FRQL6_;|zqwww+9l?eWf z{s}rCNvoKG`k_;$IgC))gyf5yz_CAFZRnFP?8)BC^bG^Ux1t_Pt7*!=n$^8;MRP<` zbjy42n(W0#5W`oX%gl$&5hiJbCBTDATVb980UG zfj_V>FfdBg7{DyNS3<@?{9Py(%wNSQjTxy#zn<-Sk5(&!?j%gk(>8dXcHPqP-GL68eA96Y5#!PHzIjiY_mPUDyW9_(i3X zS2^2Gxjv5SV~kmlG&O1CMw{=oB1(_$qBv%FR^t#w@qa8@-LBm;uMVmtCiPk9(RAE;`P}db9wkM|aT=%wybJ&_{(AxO(I|xaO-}V5(&2 zzH_-o$`O3mbjaxV$Rmj6{k#U8Jo1w0dY@6}h)g&BtSjipJkT7+rX5pHhz2s1a^~6b zbz>?Lsl|^rubrfh$(-h}?2uQ=df=K z0WP2=$Y4w>^tQ(CDiy~$)nJ=S{lged5yjdSDp{!4R2=tv=}D_lh?ddD7!awQZ(pLg zEuk^*;-Gs^zVlf=U1#C9nX_iv2~t3Xp$PV)_~Q`KVQad{v$w=$GZHjom1j^v;&>#4{*zZGPFOW2Av3>M@xzr)46=|5GQU+}N_O=1rDoz< zDCfy3C8Li*<&~i*i;D3%AqSO{!0B_ZhyFt};SquH`vt`yuYHrgDOuI}nEvSJPvT{m z8LlD29wGNO$m1ETcT2W&q}X}>O*-&TtX>p>q8Atjf20hE9g9uD-(1yGtHx|zvTa1f z7vzpBo|gG0y3}WVw;ELC0(!^jBKK*;BL8i@^vRRUz}63mtVjOx%BOzsF@y&ueIrZ0N5?64&k;)T zwZ_Cm#ZQC*yW~Ju0aj-elUAMT&mj4o*zP|@5K-KU8d+=?oX@{i5r5=L!61OhEFgbI zQMz;8`*)ydL67$v9MY5JO&)f36C@_Ax2%qSg(TiGi>W(%(oS3)II41CE63+3Fg5L0 zRPRTCt00Q-xPw4q{7OzqxAjfDjNYQWpRl%u2T_O*Wzm;+7dGE_*Y>uqy^;>KWPcz7 zT{>OJM>4#0i|TLk@5W`Fe#qJw)hz%R!y+!{iw-@mtlrMk{C0(fqu^mp-9@_uJxaEwMLfVPw);ES-#>LP@WU z_9_1j6nw{^)%vZyefblX3T{P@yTMfdvgu}?{cWxr?r70T8(*?pUFc(*_p-s~`1Urj zwn@<+Y6G*gc(vd#A$KDDC^nxQsWN3ZSC8T6AsqDQhNIryWUw`|U8YjxABxmyJB-uIp<~aOl@Alvkfi_f(ZIu(=;$J5*>| z)BmFouM?|_^iptXeOcViRLT+beW=&FL);;MS|ClJFxf_!m$0@eAZ+s(v$s#i`tt~* zxFp~afEQ?DlCBT~L;AafMuyOP-YV1NTv!ktHoip$vOw_0nMZNu_17Il8XMKLf^f zvlHc?f0NW|qDB1gdZ#%EjoDn&RCJlCn@>m!CJCqaQMV>xqslM(@Ip;W#;y6&b3fm< zl(8hu)c&K00#@pPjtJNr&f`bK>>7+M`EXl;BiSX# zYgzZM7pAA|I3`PGJzFbgEh8%%CZSp@^FK6991|;lWE*E7N{4S-k{T!OIYEc)eFgg9 zb#FO&Qi4B5J+9)gvhwXH4F%m3@>=>NKUCjAmud0~NR@BTjy1#wRe|2@#|>ybX8caW zd+1~o3KdMMRPR(&sXe++39CNc(Y*hX(D3t`A@Z||NH;6n#3}Xu>FL-*F!D)GMRvkg z4HBnjH6d8@wczP9 zRk@uvFIW9+->;G?!k9;=SE|is^N1lW1)?gh%WJ!Ypzv(%Qqe)mPE6gbGWUH7a*28= zs7ug0RcF*xuFz1anmfO`a(QSN|CnQtlkLb$T4PWNA&SKu73kZ*MsW`V2?7fqLHk49 zK5YFq{N0!PG0$GXBO4K8eAv(l9-+3RZ-KPlAPmuhnaV$q9D zs-tRtE(=1Y(5Xj5fQcgApR}2BE7cW5>lraiJw8C;b!C}nO2kwX>xO!fzYYI*3_PEv zM14GDS#5XFy0Xz0@9`Wt<|G~>DOHH zD}5l))`h>{@a3fH+`~^~on`2OJ^=g(Qej@-PdEbrAo@uL~14Snx{o} zlvgnG`Y0gM0nBf^OC?spPv)SW7_j%Pm0~KmV2*ZgiDY~YNKrqs19n!UO?e{aPx@h0 zWqZ<5JPWi9)Y~ENJ6f^*gpf<)^?Y5OzaEaFvAH)55s<$eK^u`W*MOtL!dYGlz35MB z1upImWtRd$JypZO`CzE%c|l2v*~bf|PnNMzh7Ee%V$9>uNnu6BH{H9WsJXjxt#2e@ zr9(O)2L1E4eY`h5{B+!o%rq1nu9uOQr*VGm6nSWQ)e~?hHhiD)Xl-lWb}=&X30bL6 z3G!_CFVS}V5`dvAWs*~hOH_)T=Y6BRPmHINk#8i=H=AK`JtZ916Ol4a6t|1=`Vn~m zvqW~Jx6ngn3GTZc$ho9n0Ta8eAfmD3^6%zj9Na?c}0p)xkjyt zSX=D~N){D!#<+|cUk#tm)oQU>a`*ciX@uoQiTim+czKqth&(2`6gLaG6ne8|@ zXN<>d_zWIV(hpehDB{Ke`lMhet40_5m8s;>lIaQSMOMXwB%wsfkVJDT;}sY@rR;(y zD;)196Y)&l7zZ^E6xiS@4padH_a4w=k&`lEW((6VSAV9ZDvn)*T(<8#{5EGG_mYTb zll3IND|0C|P00Th4Tw85J0?0G!O8~9nisWJ{}e*jHV=Tgm+g-?83H{< za3cpB%z5R-I0Tn9Mo{B}C>q8gBl`(N;s@<)*UX~+!%!~#*(Utiv~9H*L)+v=g!<)k zx_8k5pPYa|%9x+{a(L5)C#vja6>5^LCuKYb7)^!~xm=>DN*+ zwB&`}YN0SHYh^PyfsujfZKS&WH==HSAj+j?S>907YFIC%tPDPL5;l1@xbz@ZUe91}XcvXFu(@-*VA3*gsln6Y zt7`9YBdYrB&@1uaebgZyOfr1#y+D{?2zwn74uVJlgGJVodf*u(>wKNLjHX2rHsv zK^7GR!1J$jYfC=(c0sS?(2fL&tLlpZE0x zqU~VKeiD5Dr}-vAtzLfj_w>eSpnwT{|07(4H@{&sHP=`zR3n)35g);OaEogS6BAlrM}!OJIwwZ4 zA3&uX?f|S;c{21;&!)5of{e+Hg)`V2mxpna7tH&AYTM_2UI6`3`Oz%AO|uN@%WLM2 z&-=(}ha}6ZW|&Mq;6CJ{z6BM&sB#~qc5G?M{jMY`wyn+kpA*I?RN`q|kB{1oJU;nB zkUB1!laz$iK6hG!2~qfBet4t>8d92SqUMg`1wiGMHmhW9fJ(lzjTr70G#fv5I3O{@{1! zdLK1O3ChINog7~?HdTMpiPqwhg+tkL7#dx7^zT_Z)J%?PIwWJaHhV+65adP|ED@2@ z`3k?*`4aNqY<~XKS9>}#4fsLd0Wgg7>u28|P7EIb2(P2v_j7=ZHFa?>QCu+{X(K}U z)(6P~*4jwJF+dfXT@W)ZHB zy}M@bF0;24vOka4<@nF2a|LKMyA4N^23bttohL}Zr*h+FhgpX3mC(v?)VHsU6Q;LA zKzN*3_>+8UD_9NT%gILW-e>KY;F1B9B9@CXiF`vA&LG{%F~>V#Sp^6RF~bt9TIj+5*mT#E>;QS(3D5F2Dv*GnH+fQ*F!7D&0kRD)IAqenJ11 z7J77q0$o;lgkt~Bqf=OoUL*g2mTyi;%$0P&SSK@LB-@64&owPZ7_Urx;`M(%ByzDVe{wV zX*mmK^zgU^XA)I*m$Yym&Y1x`6$`RHnZsVAKLpnuAA+*)a|AkFDmqOu$N zH_5*aKZ(lI-u^pySg_kxs%$g##@-zx|7>-*WpkqK>^08ZGKIMsgI7#T88{t{gM)b* z#p;UZCYHSDf-r!xLi{~@@75!9{u%|r45=q~Ra)8pBkX%XtDii?Cma?6^dFc*#x0h( z@mVzVlitEP{>RgF6Ndck@}Uy^y<*(7?Pw;X({y#wZv4de>oCYky-KXAC3pfqR-+Hd zsh4xWxacS1w%j_h-xQ->^y0xYB)Hh#iu4L5-A1Wrf+?ajs>p6*hk^nztYj;+GeH-$ zH}!|PX-`3Cf2MxP;QJU&ijXdl!-aY7-_qv}CU>scawxdd2mize|h)ZHRLlaCW4S#e5J#mXi*ix8I@&NU$gx9-7&Ktx5~i(_{Rs z!h{>}Onq+M(zi0s;qDYVvQ5gG&N1~!k~=NkDVSRquZ7@;mhDDOx~~z)Yk;(F*tzAO z=hi8{;e#+Bm3;mNy(Tol=pCjq?~m7m^hAHJ{V{1oMyHkD+x|g#Oy}pZ?R!K+;hqZ| zOI=!WHfgOGfPt-r6{q0U`5%zO2fhD`Kzd8}^!M_tRXm*AVJuHPyX$~4-N8YG{pj}Q z0jGx5@Lxgfe>wM`fg3O_CjSIg)+I3VjJR&lv$?WY19*P>%g{TQu!7if;1-;)B;^R$ zp`o5ed_F#|p49SWou2me^ZRoRF&mmYG$4VIyEkwv@$w2tKY}8{+s^H^Nj@Y)_*a9- z$U^q&vslbpwM;~SGYLlPV93F{jYyi8Tem`1w|ok~@GK;gwOtpqQfr__G-bm#u0ueV zB9gp-bL#A4)EzkfMUOq++TAv!&mH0ZaaYjf9zOQ}ERxdxL4`54kpe6-CsNDZDgBi#j* zj8fRSMzt7Xew!x3iUm+~`D;oChBLx|KUNfC7m7Lknb zN5$FMBz{n~mTTEgoC@vyrN@Z|=2L=nuW;cfCSWU(Pl!UKLNn2& zR9yU~vQKdZ{RI`ON;Q&3zjs3PuVe4rpWw@b&~5(&D~2Wh!|wtl@x(X({NQ~B>qHVe zQv&E8G0%%;P#{GfUaWt*_N*AUJz>BUq_RPdD|QY$bquiJlKLT`sM;)MPqLHp?dxzu zs~n~tXBApR3P+@Jdr;c+gG;=CY~$c>aKg32A=3)b98M{9pGTpH z(FE)t$*-pkCorVtQ67aXcu%T_aHOXkVLEL4{$oW69Nxh+!c7d=gOkXD8p_Kskz56%TCRp2XO^pO^g84!%;ZE;eOU~gWzQogpzm54)}FN&OXbpaui>)_EG zRc^erU`{-*JrD1h2d^CuZys94bSap;0oZ(*To+bnJ@?1B;Mg z_SEw0V#5PC2kt7@UubgU6A-%4mHHtp8u$QbW{_blySmmoHkGcs&XVo?!NjVyY` zEyZ$acnUkZ3gGdPX>|zZ3VJMwq$uytJ7Im;e;zUSJBBSV4sSXF>MVZTFt8vzW7I?7 z#h8=+D(28^lz<&(@^Aw&R~O^f*k{EV{^>UCwnqDX(ND?6+NE)Br_$PQ!g(;|OMEF4 zZTk9_D)ecpUw;;q^Sc(syf?v5GY_*h<5ZL`o7+6d1Iq`>`ZKhG3Vxu{^HByyU4@7A zX^c-?!uqQlv@RpPEs35AoQlA^$CAL39Z!tJLLc9OT!NyjP<3@Tk`#!xx;A2&k7EhgaNJz{HImGlLp&0y~~I1@Q%_gCJio z$X+2eG%g%oZyfG!171Bq42Yh-KKpq`dwc)nUWyn_s83VnSXEPq~^__Wx+Q0L+(<1 zY;`p#YmqH!`$Bq8`EWpqTl8att}9sVn7Gc7lS{7U*?nZ3aOD~f%+5Ro4Yi?AeaT|( ziNW*IFR{T|8?VV^i3Iz0=K?a>{9x%aF1zp3Vukr4&2qo@GJabS^k2?+uOTEN(tH#!( zpkGA$et=X{IA_DA6_82QcRSZVvAKt5C=oMBkX4#P1h7j3efpGn+u$Epxrf9wkf{W!_aiRN zahgXIix26~{#Q5dU416qy@Q!XOJsdHAo9h@{5^+_`mh46QTu~J9w+^k7+t~@%(TBx zZ~C-@?~rUPDRan->^`8w^l&h-?h13yrq%R!Ee9*BoSF?M!`!2g#fr1f{0|pkTKV{> zsCMLN94{>*0Gt8{&ouB{2#J^~1(m!1=5^PXT7sl3OI6(X0$6ndADRB$(;drBmqK+> zd3lC+JEDLi^v5uqqIre6+xI?r!3K7v8H~LgU8ru*rDeY|LC%@in(2g8Ke3c?pmj-) z<19jaNuV2?CF~{>Ps1^L=K;RqL~~fNT5OtG?{u*=4$O|ey-O-kkXH+g7_n_(?rzS= z1~X77l_AHEaJWB0gF`_{`d>|Ol>L!qm^5zK@e86){(jgIxTuIp9_0NoNKlDUJ|NS? zdB@a12_#b*5c^16c}oEM#9)Fr+-MrrH7_3zfYu_i*>bM1b#TXq-pgl)3*?{@#=(JV zz=jJ0mEvp5IvJP~6alDhAvtjxFBx;s_GV;t%_3=B2*HtItUUEQn9wG!Btv*T3zL$P z&e(AlRKkV(T?8v3&S>D%y$D9oh_(Mc%c6Bv46%;Hswyp45n$w$8u@dDAi;4F@Osp< z+4Cy$N}{v^m>Th8%f{! z@>JB3_~d|%Nv#F~$N=f{XrJo~6=Zt+?KP+`ylE&o$TSi)zrjn-A;o;7kL z@zyDPwaPd83v5oqXWu&*+7y#n!E#OGnfh%uNWJIG? zk~pd_GK@!pm^pKk>V`EwE#G?CeBYGdq4i6`7p$dfQ!rh1@qm*$b)*zJ(JE;Z{lK%K zRBAPUc&tOq%0cs!fm8fi%K0NE*ZU}~Y@~-XEX**2BF4{zmF)AdOLom(E?vuZE^@7! zwvo6I@zECYTgcbhM5>Tfz*l2VvSu-)&~-y;#Hxi5WX)R5S6a;vd1d#LgYZ`K4d72S zeW}!QC>u%nD|8F-PH~v(E{4y2h3n`Jdl%FNm&=^8k?l{tvsFujAonnKo!!?gjV4PU z+csC5mb@Z>ph`PFPRsU70$%7#G7V%qQppC0OzZ`%Ld0rP5J?@7P2cOYvw3OlZv&u> zBNk@r$MyycB@7#m+PkLV4_g_6e*Z>#|GI*I{F(?u{}*Nh!|n|pk>~!6=qD%FdMXIe zJ$x1t`3Ki6_B`4OlCa$UeS&pa9FQmoef$mGu21y18uUuSoSn!dZk!p#u?w}x8|~Pp zxA7>Po14o<7zf6Cdity6*^^?63UK}X37&noHS4u!hKt`<-~^eE2WaJh+n!$9rxm}^ z`e2KOxQK{<{&fHX1`pjMh46%w_aEx0B^~;F4np3X?uvu7;|)5`W<13TL9Zz)b}B? z0^#xEYC@HHqdh{^PLvyTOEQ}UG(Qt_i6*^~!JmmnqiM{>Tof*Od>s8L9=0&wlU40i zAcv=`PRS-CY>mNtUl){ZFhL&k{c;Q^(eN z@5z5;hE}Q+Hc;~P^55xR3FFzz+xwm4f$+!PBpE+_t2&ENe;8HN~$#NAq zMVp8%4PjFE>{_W_-n;$#6uE62!K=IFxnxXIQyZ@}0ini9UJ@`My3}8a1*!10BKqm| z09}p0btk?|aPnu159p&n^8`RRHaF<-QVFd$ps*TO0c5bkXHCGgxo&;=bHhD;tyf=l zzM{TaVhtzX2VMmMBbu+!4YoZWY~Hm{j{dZ7G0viWcoqidGjMrs2w0GdO6j%Ut=GZZ z5e2?3-!vcHLdcH*_^xZx0!p9wI$aia5B;h%ir-@}An1I~I6<+o-yUo8z<1CZ=&I>s zt2g^cJbC-=yZXEWdKnQmr-c-f4GHB^lcs~p&)gb^?G7olnNrLnNt%y@28mT-qqd_{ zZCd-C2`tOMmQ2Vkt}VakP@LHYJk4&HlizA-Q%TpdFx3K~%3 zxQ8D5-5J#arvAS>TH*)IX6OFER_Mr+K;_=dqwDGLIcU z0LmG}xw^zbP)Pu)o^sE|pR3SMjbS{7`FdX|z-W%zZNsM!cjM@YXiFn@;Ivn^!PRhU zkf4ZaEJIQM%M{(0X-h#75l~}*+5k}T0K8YE`OU@pFVG16oK5)Y|L*7q&YyeF;0o7T z6yM_(0bifT=o9yt?Tb)w+u$dZ9m7`vf!?k#r&I*b$4I=K(0j_=X}0#LTZcCznWBp* zz(*_TCrK<{;N{a@uwrM}-u?b{1laDa9n;(VR1hCZ^vutaIfySWO=hrszLu`xu=+kz zFcl$7aD?(ma?GUht0Y%;JAaMVY?y?dN{Ncuw2FN(f*EM!WfQM5+T|WkX8z{LNyu!K zg{r@p0b8|5lt@h=ivp@wPP9q!b6>xm_zAcJ=g(Ja-{@%s}ve zBJoiCATzp+_|Qe_`VAVWQa-}Hmw24Ugjmx9ES9bjecG6n?2gb?A5jX{*zLG1BLV*8 z36gkg24K2h`lDUQ;J%=kZtQy_(NjcVJhf3pQo+LHLfX9S`f_S|5sfSCe|)2+fd?xLlNjrDsNmXtnz4+v(k%YVPY`I> z__loox14dYN|h5Vm5MRF#2n_#4geqB9m}*M%BwG$`w(wU!S1IwseHF}0%?w|tbqX> z#V{3oQC}k6wUtF&=^1^jn7?TI$xos|)lm9qNB-zsArm4n2e8xM@H+oZU^gJyW825A z0Oyc;PLmnHpIh4!pNppcTTwr8uw6AnqTES@kgwckw{~Uw!g(0{+a{Eyb?GXyv7Qyh z39mr6&aE{O%IH!o_@J}CW(BM0?;Sr)l^Uqs3lE!)Epzb*`0v4s{KWOQ)s)Zcs0oj8oIm#bum{ocZmwH+1T_hQ-}znc}AK-{23X1CE@-ey2e+ z8!H0rm$b5&b}PV5?+Xk|I+7LF(ZA|pz7kluSn+(U+5+X<{E^#VsFw%XjfCy(J6_@V zgzcUy-an@<^gChFk+G*XWzgS>>Wk$MKIt!HP*7}0zeR!(ejh^dr4OOuAQqDBD>BUC zKWf-qctNIMhfHrGqaU`8REfIOMF9v<2)5{=S;Cn#o8GY6s8wdWN*8=CA7%8`eAPFk z(6NxwztBTlxkd#BhV~9XW`%f%6}#@=G4RKASb4qspUVkF9j(#n$+)GjpU=?cTv*@A zLF=BR4PoRLWq9x;E=2W?U(^oFZ4)G)!18*ZYl%$TNxER^mzCjSuY76Lb44W)XSP( zuIoFviKA34SYT}uMyvYG*CEI_;2ag9Ihz@bpgE<$chZZ)+GuRZh)vN_LQVbS531U) z@Wll(jgJ7<002P!GO=?TJe+&i+Q#azz@(2_-rM_L02!1O6)uu(v1AXFDQo@yu0oGJ zbKv^VMS(DG#=ZrZP65@(bYD}J8%rZDo?Br`lR*t|(kxWFr&@-2`OlJqm3^^A{lMYx zP|E1e)G+>8zb!7}xeQ9ow28+k|JV7rOvSC7*R zr>czN0fm#Xl|?^`$85s`3g(!A%#nn93w+zESmo^QEoc#as>VbVnaFXj%Ub5r`;uc) z7>qD#DEriDHcWd~HvZgW)a2zYS4c9E26cj4blVstf{t#S`SP<7wXP0MV0*iyFEcm@ zhnZ)c`8sz@;sU7N15#~2)Q+vu3XJle?o`CRuxi%p0_F?RA0TPB*-PgbwgVTtZD2z=Nga5v zD$W9D#E+j|dKitUzlH$jD0tjE29nu7HDe){(`Q+E)p`Ti>Ehrp+;0O!61G=^%d5AZ zX|#UgheLyE$O2bBqln;dY#0i-TFuJmWsiJ+VzQBu3#TU?lDUH`NgR^-IT=>pftSF^ zN577d-dcxSe7nS0>7zH|aKtX7A!de_yt|UD3zW0rwO>6{E9Z57e$ygKTp>|{#`++G zEHe8pTp+W+R{P1n{@>*Wge7TVW0%qpAOwb{WVSFP?vRH;?u3H1tRlUhRi)(84FhiKcMmtwy|-)x3FvUhc0VzGA7qqV&l-&u zV950)PqP|G{Z^JwHlMCH_F%qgn5~z}@{{+uhkF(VOX_oJm7H+n*wGFN7~l=jY(&aN z6@=KbyXZ)D$*HF$dkD|gR{R01R{;glcn>18aGa1L-l+F6uuoy>GTp*0-h;ErmyqCu z4I+RFKk^J)cqfX^1X?Dvemj>HN)bCbp;@@;Z z=1?eyGoVAy*fgrtED%U?9le>a-~z1J(GyhudL(_0d{<7ZtPA_64M5QtGGRC{$1wmB z;jv9L*~3~Crp};X0=pJ-&}>v#Y#j23RN7KN?vav`H_(1)f-7)l(O&VnfuJv?w0Q?Gc2AEGoZ==wX`fK2#1 zWag^-r103nyFdY)Jf1woHVAKmhjSscm;QnN%MDiCrB5wO4!4NsIdlyB=xY-r?p@oB zt>(YLE8kt4FB(xDEjqlak6KZ2SzNlLfhSZkWI}M_9wFi0*rb$_`~1SDL-L(wlfSNa z_P}-NRXXouO-yfuv8xwiXqp)C@b6l~4(ghCW8VOXPk*hNvt~5n-ll_@sQm}2!+cE) zspq)%bLfib*!Nwa#$!?Im;Eq!;L88}Yp?kK->@6xB5A8lGhB*F{Frmn&iGxmDI(t$ zHAzD~zRQblr~c7z=Nn*OBx@r4baRRGR|=a<4megGF8~QxcT%zZW>VWxfdiTm^;%Cg z1!D@p82;X(0irob*aOt_Q?n^qBa_?6la*?Z&Nm9oZw5_NPt#%!FGSJ2XSN z)G>#BH-!OLHX{^@ih46yQ1MpGj_rC61A!)!m!ugCWPg{)topbtO4XjD!;yMC{b1I= z-kQ{Bzd~n{q;TJY#!gs;3S#9hSX7N2xy0gOQ)&O5&Fp!W`C}KzWX2n3?d5{|Qm~sb zL2r3`Is1UQY9;nng}z`Rd94W?p~3DS!;M`jWJyq${y3wdK)C5kd{sAwkYO-lJSg+x zWjtGS!}^v+y|WG$)ShD$&v~Ez-6K}SGbFgJUxY`(rU57O!~!`^_YH^|CTWYa0I?@F zVrjbc=~84HcHGYh!M^`}7=I-zwaJaVp!gZ?>$?+1NrvAgLc(-6TScDH<(jp4dIRH< z?0N6JEU48CEXTly4H5pebKOOrIgD}#>&5AqY!o?QRBx-DsQV5y%3w3MLWO6D%dLO- z2+fQ#8}p1Nir+T>^uuqE zKWiqt9>PILoy$pfq)lzlkS|t6DBCpnUTvDZByjGlf!v%;^!H1f#vfw0L`=SSF|eg6 zh{N$AW1dg;Pk|Y$y&rqC+o7)7I6R}$Q*b#DGNx7u9x2BtMS0q5T;IHbmD+dlb?B?V zs1@n8JESy-LLYf|1zRhx*;U^Br*<6?anaBSG@>YyiRJ__OM~j4aZP$wT{@&XbxncH z@rU45IzV*>awalpXweR8MS_2y=Id6AC24@$XTI_cr;Q@`dXyVx`QfiGRaF2hTQnI4 zS_bw-eZwvb7sywtYd8Rw35W|~U2A|%5mZru0x_48J85Q+Lc4W%P3r)rzp%5ujxKT8 zD=4JVXlx2O%i4#OcJqgcx}P|0+(6MQ^R2nu-+G=G=eIo3>p z>4S*E-+?iL!f zT+-NRt zmj&{rjB)EyIyRpTOg=}N7n+^!uuqji_ZtPd5gYSo<~yu> zIV^eJm_g%R$YwF8O_bckN>-0bqRE#!W(pFMn^JR|1fRQrNJRrjf6lCVh9EuzRu7h9 zi+r#@$M_wwu^_(5JLkK-l(lUd&16P{Q9L;gdu+La>7r-Dif{@v$`X4C5t(iWvPw45 zjhMA=D;(NmgGfcjXf(#l4a!rna2F??4*jGi{3Ltf7|2! zM=59Z^CNhdv#xQ=rapf4Gk^+!fwOIb1Iq`^3l&fpX&6>YpeOI{ldUM+5(R7^G>@dm zID&-Rl@Ae$UD-;a&Q4D+4(7O&KjO+uW#~f#@Kt}|j=i8->F~w&CsBXRQn|Pd4@FZp z7=7utJbJXL#Oz9_1UA@iZ z({n0EdRdaIM+rdoFl*ogkAaOEHtaV|;I0-UL2Av=s$Ow!^P!Rk%u@H;qdfbck38Nme;;HFM<_VpbeOOinMNrfAJdSe-PH3Zs85>A(IZ zHDPS@{`nQ*YBo-ryk|`6lMA zK{-kmzS!J;p^igABCEK~7`Vj};c+fLq#L#$4rMcAit?HFN>^ev?urG_-PmD`L{jzb zCZWh`P|Y%io=w)C?|v~ULBc{xNKBPS{P^q5nu7=Lsg$+wSW9D>qQ6LmD+PC2a}%OM z(sX<;9!;p9LlB590tA3GvqoL!^5}jFfb+JtTe1zh?jU?!Bp8sjgW$xF&U=lxW&$gM zLb^&9r01|plh-1;AMs?_7@OR-KoOxuuP%POJ-Mr=-w;|+OcA+bwsd?Hl(512w(i~)6iuX`9Y|3?tq~yHWj=W zU)d-5t)s!dijr&l?%%D)o#0&8e{3MF20kkA@E59_{!2904|81J>c#I)u#>bS-^~OS z<>v!2-dNzynTli%wx;VFc6H2TQR!gKhs7L=#t zL5J!3Wm{=^&6u`ZdpA?=?7mw+ICYr63_5}YeE4YL$Jg1kIP?I`4o~$B7+jit98H($ z!|{GWpSkP`ELm#n*r*-yAc4`ky;o&a%1+dq|Jv7iepMH?Kh$6AtOjagke!F~7SNV~P|h4KUafWTM~PoxeH9x5 zQ+g#aQUSGN!!lqbEWdgL|wu|lF>nb>K4U%&zBbhS?u3xP^;{`en#xq!JeQifwZ#`%acnrSjkbY6z!@n7NVY?>! z@t!ZJS+UcCmU+_io2e?Bf~=w3l|486O$P}O=fN>#drpel=2mc1+;i$ilWcCk1U|dp z+H=SCk}XbB%dWHu43vwQZE){j7cej$R}cC5rw%IyoP_OB$oR#I(t6zje$RFv`r7=E z^QI|xZlrm_Aeu~q2z$mL_m9QmY$GDSRxCUhEl<8EziS~#h=Ys#&~NmQxg3rqTUOqW z_ZLy?E%7FBp)1$8z(8W3^}aAL!z|h7#2yXkJL{`gPuN@Muybr9ziejYrGOl=QkGKK zu{_BtoQ(Y2!!s94F=8II~fa{xW09Uced$Q ztvcWY(YN_uN$5$U(!~#(kics8vk8LcqWpiGi`R${cN5tkRHe%H@_@btnBEjVJ`oXm z!t6;r>kFn<(Woof`EkC1?KYw|V-pWaw-t*x$;9jd>R1xTx#gcSjk$9MvYGLpFpjhs zQvsmVvoT%jqJ;b*GSuCVK}>;^&Ep+Tj{Ejl$I0!9cSx>z(Z$z<{{P_uP>q3#9;Hy` zVYSMXg{ZWDQ;|uOiv5H7xOjtQsuj-IeBxXS=V~+fl5GyIu}$tqU8L8MukRV0;Y;m1 zS0HJJnQ|udJ&{Ajdf#z=7QJMt;RrvQs@1*Ip4iQxUQ_fv2d9-H;XVi0D*x2Eb?Qx|r0RlcnL?HM1?EGd(oFGgbF-$zF#oM|* zPS9uYcL^lLSm$TCHvp-DrmU}WgrLrz+}wSCJOs=(T={MKS-zJqNWvS|XS&YT~r56vIoS^N-nV3qJN7?C-Wixw&9!w?ux*)~|1twA&Iz@D&=hEY?h?{UoD7xCM<%04r{yCwJVIP|X-JT}RXnF*l z)*Is@xVnUeLP_HHe#l|3luVfl7=tF5+IB0rUTN&)Su_mdB1XsS_4c(Nzt!36THNGw zo#qZDa4NHl*ArH=nRyd z9+bqCkSoP$SN@7w&5>lM?O(iihw}8tx^K;M(D+A?@L~YQZ-q((GtxpHB48JP3zg9h ztD{bSPT5N8iUG|-98Um2jQSoxPO+H+X0M}7@*V!fbhT$mW_DTJ!Q>{V>oGBJcaOOg ziNcNRN!KnsqYqrCip>upO6`q6c&9bo)D(-OxA&SGk|7GYqoBA51W)#WTRS~@&^AR3 zrkQH6c?QZ;m_LM6vM~WIM?h=*knrE%D9NJ(b+J?sf>TcME?-1!OtXK|{kDsbX>j?H zm&;y84m(Vkg*slFK@no$=*MHkT3c%0$IUM)V-#Q9G=O&?am#Y@s+!0V)MMTtp2WP- z0cke}DT2pFplD2RBj)G;|5UD1{8jhoTCM(BM(5%Q0WE7FPMZew^x5hdvG1Z~X854D zTa|&<#d}4P#Yg>g*rf&=<%F7xn}f-iL4s^pbA9y7l5@&bpCfnrU5f1{do>I8orop+@tosYwwW4 z1f;0oL`aTbM<2PFInq>MRJ1to3U%j!zR2_WJhVmmtXAg}fv0j|DnTHEm6TX)y(c%p ztUU#!F0R5m+it2T%(umrbLT=OHa-0fq2$>;?eqF9RaM4&d%YR3kcEF4UD4GO`E!? z)M93{tp9*yE}7s+dIXB=Yq$2&d`4tyCj`aMIxP96-&M>H_F;toYi;E?2o!R|wV-KF zY@(4?8aIBS+RX(Q97G03YSc=JO%V5_84tMlwl> zRT@%VBxDR~bN~jJ_ZX!Kf0^T=*GFbK+PGn3n8nlTSKsfq zKB0)F(6=ijq^GA&T`Sv@M|7QD-p4*>AMJilE3F;rFZQjNPk#bCO5pdpuu;o$!MAk! z7$jBnff@d`G)moi>Y*6@@m%JKIh5S(`lrrj`$S3h6^-I`D)f%^({s<)z(uqKJ04cW z`gpG_kEsvq$Vs#WxG_l9SrpTMPv4Cr-FDbkW#e`qQN&>}Wdm}9Xj(B7dR8?wY(UCp zv99`3Rdeg|`qs&ufS^!!pZn_SDd$wa3?m2hK?UUE&4X1Q>i&;=S(~y}e5egqL$`&H zX$AeXo$_%wsb440Nyd>1VkA^2bpd3a6vzl=M}^-B#~~+@iR1r>?@;gSj`YgbM<2uv znDLK*$B1_rJbxC@@zSC7-n_?;E5lc|*mw-IoNFYYvc%VaL(Ju_f{hZyz2Z)RfT^T3 z<>J?p=p>3^g<#=rdTby}2{R7uAbpVWdt?j9nFjs=p^nK}LJJLXqw9 zj_^&9eVx@f!5U}V)aDi(IdNIa74Sn7Bat%8XupO!$1p0AdZ7GR8~Nt@RZ&R*lvSgT z)bZ-|DV*Cf8-em?uGk2y^7?qDDFO}|XI4MO{2CS_T0{@bi(oDV!8H*!uNCf3^vU4| zo^bkHDrU&@=5fu{%fcH+5hK-cMQEPgZEL0-%U6Cai>)08frcNNJUav8Imb?8ff_1D7w9N}`pEQY5V+iB7 zO@;B;voB}dh{Vu~wCA-`xq`{Xb8m+eN{7G^&^}F3{44;a=c@0w7-G5{`;D5G9aW(8 z=5&`7WF_!*`g@9hWKAlARai9<$cio&|8SLiaPoIQm&z7bpU0u+_STMe`O1lXbz9y6 z9oK7&)WalNR>>dEf0YPh#F^kx;kdCN^Y{%i!Fvz^%Vk!?)_no>y1oWLves^ND+#_RN!tI?M;bz+Yo7Xrqn5q5+XQDWafKg&HG^y6;Eh|DODE+a09f7JRNs zJ=yb_e#atffxRa#8W&3v;o~ROEQ(novmIOK-{`8WO45j|jf-=$VhaQs!`Kh@y`qx) z(mBOTOaymDsEgOmA@$`;)#RB{KUz(n{&Jcoy_LnLx`NgYhqWJ;*pO^?kO^7@%-+1$ zJD0nSRUbPLdZhXGxaFgrW=>V-x&a5C?MK$-YGZxw*ja@_>@;HuOzQIbeo9_?%&=H4 znEiTcDdP9qJFqEwEA3)w#kGo9)hG3xQvAv*jjZC;F`ePn0vRrtyawTggpOSZItCQ7 zE|RLT)Jn6dI5$Uc-2G-a#yZUubhw!d$wN(-YZYUJ(4eNzJYL%Mr%G)=<}Vys_bWon zq6gUKvZ?(u3J6~ig0LuJDF73W+HCI6l=$){jRJe)!R z9k_?5#VgP=2+oG0i_|*r)M?8MZj`xjd+iz5lrXUmksQ-8DqKY_7xBZqJ)OPxL$IFl z5lr6`B@vU!gZA!(Po?@@f4L!Eb|NfZFHcc4MPuuP&cz^i^5<;tn8l`yBZiw26nzc8 z*M=(#*QUl{8t+xd&Y#5btd8leHL`+p9SP6hPke(@YTeral7Sd#=YTmV%(Tk}3~2>< z-%mxmUpEIU&$oyF&IzaZ%hv($gQ#AF&qE)>hum*R$By`fKW>#h3;lwp*11bODcZ;N z?xPKq6bPWcT{Bn*2l@nJRV7^IYN3i{vd7~1o1fz>O2yyOQ9>~;f1ac>X9OAdtg;U? z$6<{YMqfBWC8guX%%2o3v@RQNpUe^2EoS2-Q*%YA$Rqw)Qk^+BPISZ`WOM5{(!ind zj33vonL#rc?VxTVecxU63n!~WEY||T@7<)}dd=$EHs*>O{QLAtLTfc~RmF*2%2E!< z!s33AB&HKY9=rKS@q>4$-MUV{y7nlu`41#SF>b;P8o-h(Q;KSe$W0R5^tnA-eFo>Y ziGJ3DGeK|Vi1NcOl&y~w6TI~o6VL_oKq5C@Cu^K9#K4VP3}xxi6NbD0EkC!O#oYE^_%SO~)GG7Y*#Vg&w}NAgvmu^UZXB^qz;Ko{+Q0IgxOY>q)W^ zw5MgVk)Auco+wt|^#n@fv>7*o4^p8HFz5Z~)fEHmB-*(lb>tFiFd1n`PR)-3(%C{@31tYH4V5uj#7N*TVOo8Q^|g$hl4wdIY!DxO3D1BVLjisv;J zNXq;t1v(W%0kdRuF1TwyMIv3V@RDIilv`+zk8q1zTn0bTb#}@e8h>@KuDT8j8qhKvbPm`3ZK1X5_5b8<_5*f`th zDfbuGh5g>Ig<|ODj-3c|&iO>Ro?^lC9iDBZPjMiXIl@#=AJtJ7;(QA!T}uM)#dRRq zyhFu@O*VqMQstpaBst{GK=Ax{FCCp_E3w|@)*)uNvFHwLYjeoGE1XU$`PBuxeq`fK z1f``6rY80qJWHzI-Oq$CQvrX`&PTc*29|u!X_&|iwl8*ZC$}S1V9An4#n3%N#o)%c zHrsHa#>2LCR21Qpiu>!hK=6nncHad@YxSECJmhkit;@t|#+0(j|8r4HKS<`@?sTk@ zs^aZo)ZuCVIxE^nf0~Wq>{9vg=ch3~YZqIY)3AxbC_9K_%ACOSq@Wh_@0-AAkS>LS zLXA*BXAj94=kdm9?9_LdQP07)JH(|eVgMlzf+LohL5d3`*tX(rUaO?P(ja?EZIk1o+fF}nXW>2fn+4`)WHuWV=*~}|OZeDgt0|<*E`DXQ zxwD7SZ=o3D-~AHGM<)LM`MtQ3&JaP?i5A@=Ju;Q4W*ign~cq&H8ns z!^EbQ{%%Jiqog;ekS3QM@pI zSGytAMBnHlI|r9US6nkV^pm*GT_6P)!+56oAd{>58;Py5`T}vxZzfUu))x|Gdn`e@ z*3;S#O2IE!pej(G3@khZd7Tv&qMDpHLKR^}T|zpV1vYThIzyEy9C~{CCcLC#b8fK_ zRCm=8_pU#ijwW`GZ^sm$4iNBH+}U#`o!q^n9wS&c9G*@B(AHmX#;yM1W|D2i?G;$3 zTWO)8TN0xvo~&`=Ggd7Howd)9;Be@Ry(O4Y#Q4G(n61pdXPLNQA19V%PM-`Tm6reg z?<}J4mu=!b-n{Dz{WGlOJJd`jlTWA(4_0lt{<)G2DVGSunByJ@q)~jjO}5QPi`+RM z=I1;7IzfFW!J%Vx4tC}Ri`k)7HVv|WX--`)av}|b%OACJm!v%A7kGjyK`iC%6 zxcw$3dT5?lb9?q=t=ePBp(b-DN0QH%HT)C2iUt-jtLeKxy%&^VW2dnumhk^-@kuN0dt(4ps z!e7cj{A-?B#;=-etPFc#t6iAGUPX#%1TjM?FC>rQ<1gg9Rbl5 z9^|#__uG%-xs$wUIK0G)j^6G;eO8eNzHpN>>;!SD%yPJ0oCI+MO9B&woQg!r#l8QD zMy;%*Fv#f=--o|j&U-+7Iz)Ryf03Nske3QGd_HB}_Cw#gc;3suKw|n3V$7G}#Bm-3 zHO@{h&A1yCrl3a7_`$I*zKt`Y{2cv{{pY^Oy4gN|(@x^bIPi7r+p}xmVq?nP8BQmQ8J#%YE+sNvqP}(F?H&O450!q#MjM&oi z)xbJ`YG%y+k4?5_vQuWe?RF3Gi;>scr`#WZul_da(xZqnv5F2l@SJjnj$%LV)f;)5 zJyY91_ippAQcvIu8K~f?4r4;$=p6= z>P$wbI#Kc5?wJ=lbO~c{2lb_C5;Nhp=3@8y--qLPpJt{do5)Tw4VT6SMtou&B%OP9#^?06dLWOe0eF)nL3EYa2RHn7*u`ssF%7kLgwHQU z=6tn2bSy*VDwbzEwoJfNi8r3l87hZSf7y$j+H>m{)z%jjtn@lrfogOz_o5+kc${ zQ!cf5g@pQ)ea}3$1McDs`_7(A@`l!5FGb>C@6%u1o>s^LAlF~J3?pcX5ZvAv;2YhZ zk_PP7yiyBlMXa^nWv<^zoqtEc+QbxjJ`zdzGe`R6T}0_yef8K1F)bY4X4J*Hc!=}= z)PBO_DMQP2pd`NKFQZyjYO{c&on^X)9PwQ}wWW{${JxkP>z^kKs`m@}s_6AfD;?P%L7$la^|1SN+<)^g z&CeR9!`9S25Jc%b>O?nRGWd{IcXC|9i6%DCj7^UfIHf*uh%r! zLLW3iXOO!J9vKBEr{<^%XD-W=k+OWgbniwBTJXK;?*=N4Jq3Ue0Z z@x`hGwfWX?G0GGw7CNXPNeW%EN<7Z}CGwl;V*vcA;jd=_Gf29*dt?Ib6aBVuWA@S- z=z!_xUTPjRVDOw{xMjl|N-wX%*_5K|bD))ECKHSxmbm10DD1v5f9YFZfvV5rM~bR=Vf7UZzKov<$A z*YWC4@}IGR(~HOy#YgGhYSW+Xcor2p0LS*BP( z+UF)Hhk2ND(x;>X&l2N~+`l8i*^vSnN!JQh99C;Hn$!<=5)YE02uwGRY9vLChKV+y z0WDM>Wzb9KI@m?`tRbaM7HD=~TZj37Wu;b;&1Jo4b=Qy7?_NBTplv-=KmS&$2&Bohew_ z8R?C2HYQI4h;_70FGys2P^%>u*Y@r%f3c*P*&ajD3c;9~Vij0CU4|Wp>LiTqy^bY@ z6=Rh=_8esLW1-ZuYSlYdf=6s&l zhu9%n>7H(0VKqZIFUt_+CMSktYC?9=~D4h#K`N#NC!Ww#VPTCVw_VpxOqB<``9y`47 z=S6#l7}fvgSAIyx!)5lNBu@x3&|m#(GIrQ->8`_Z1JA80;{JGwbHeWyL0m)cHaV>h zH4g5clvp-9&5;M?vqlkHAUc+wn>`(f^XvcSKhvn#OZ0}cTRynn=+F8Q1Hk;NUQO~e zX3vN=%?+ zA}1qO@rLHq7IrKBw-ddKa^+@n$AxiBp&TUUjpa9ma78Lhf~yW<09$ms^$P4MPX_>S z=vcxP`^4Q28Bx*m=pMGH*%fEXzo@%^;GoN!_?kmi66HIen!@SCB38WPg|ZitvW5&QQnR#@xfj>{wQVCkF!a{8CQmgJkgB8KKo*Muy;0AN*p z3={)_7Wxjst#6~FJaiB00P4N~d#5B7KH@M}{sBa#{8`*#ZkQDNG?=x#GyDA}aA96B5Ek+W6=!Dz5M5@bg`hPn`x$DF z=n<(^eeX(McDItKVP#E?Yf9M-1S&W}R3L5Bp4C^FtJijuQfY^)dc4o|Z^;3$agSV_ z4um*Gxft&5fI#6SC2!BG8loWDt~x1+bl&_}c&(#~PvGB{qF%bmeM#G9Ie)%= z$gt&-oe58wtX77t7^&dqv20b5FsAXHJXk6D-4A3zE5`lpwKvLr052S{=w)o$GQ5gs zalgJF9e$S6H!(qOZA~jK(`@1s3Pwf%CfQ8}aj81BI@}~Qz0uJRLKBY)hxBx~Esla+ z(Qu3xKou*Dau@zCF{XzIv>oix+zgXlsh&mzth_$$3ph0HkUQU;?+!SbAloPQC)FPV zeK77V{BXC$wb9uzt{ql8aZRtB9#-7>PbiQ=hdyuhUy1 zwu)z?cJJxrZUw`phf)mq#3`$J0gId+8LT6ox^P4J6*)}S|Az@uvdR0s#mIY|0J zror)E)uo&3V|weY3%8pUTkMg2=(~@(!x7EOzRQF2A!PFb-NzKo#qDG^TiX7}lecT!zcVh&Ru zaAy|K(9m#pafu$>$NPy0HTFNGzd5pxlRMqt?T|YwsaR~E7dyp!(0RN=lU0Tmekh)H zTb6SF#q|zf$KLbHDaUIPD$7W|%Voy}~Bnzn$JKsEFaFT(i#b<9!Moh(!bYMb5ENKV?c`FFL9 z=&T!mz6@y69B+z`1(~GUO3Ri$XH#pSY*JpK|oH*(~?Nd?~jZdr{%8#SXb= zCYq_J?e;tdSWTo=g;JIO`gt2=)=_;(iqVL)RPE$#3q9B)IHlBkDf)nCmb#ED$U!f| z6@uR-(3>KGs}*J{P7p%1TnL{nql@uuEJY+dz~1O0cWi3mT8pKL@N2fsS$yLea^fh5 zzS_o#v2*63%`#I+l3a0=&M}kBQ>3I?8R867wR5Jo&UG$IcUiw|W2pRQgra_5f#HHD zTd4iM-IXDc?I#xsCJLTg@t9T=GN~aX5ck?}(wc{Lc^^^z_0dAk9scaY zAuNT3-PEb(!$Ds1a{wl#;|y6b&R&gQY&0nL?q1&DpAN4`TfjpwZ$K(3s-RrTUM`O&~$>n8l?fl8+x(=bYUkIvJRlwAlG}sda%a#NeWm5IHMtPQD+?dDr|$3%?vF*hk4sOB04dB7n5M>Fwbo-V5vei z4%iR@5^sKY$;j;BlV(HABks(z5VNNsayidx>orj#CwDp|-hBc~Y*m0+_%%4`mxh5Q27De$h^CLL*a86-z6FD9qbIgb8O0Ldwt)7kj5F%%vLdRP zE4^dCNd21Su!@B~iZ)mj53*d*vUtMyvHuXykZOvX)Wxa%QC^Q@#Uk4JAa7>Ax7)aLdkp!>Mu{BdVq+;_(se z15l&e?^Fccbj+)FeZMJ^!|+|C&Q5A)v8CI)&(0*m%}J|x7UWu|F#*1x_S^lvLvB2% z7nI-9$zCp)i=*)F#h6}T7mjvlUR}(0KBdFV<=@=L|3i3v9B|a^bv|?F+h^6wKfBlT zz29&PY(4Bs?AZ_eoEQ^gVoLuHXZ&uVf2`!fkqIGCbDMT2R%%U231rw#9BYGS$`SNy zZAPq~F04YrUvPY??)?M*R3E3uC&@=Ath-I`Xw=>V?&(v9QOkw82Q7YY`ZBm?B^OS&fc|~h$!}bG_tRsWRFNOq*xhVjQ5}=%w<8v53yZx(&y1YCb8plZzJG?3lT1}krZgR>!22EfwcE)@< zUCBtBRnS%YaIF|yV?iKKgFjOp_|^&Q^mvH}7i^M?w_Qw01ricGlOpIN1hB;J{bk+? zz+-oYPMW?E@aKu$C)>ciS+ftDFO|MT*v4mHH0)86HCcBaNJHa;Sgw}a1OFDIKM3`C zUhR2eR&RFZAr%RGGIAHUFMm{AQb!ixj{GRNPj7(?F*o=}djCU6jUDsa<^o3kT`QpH zxZ%6EU2_w;&T+g`S-$;L_WelI1Y615CDo0{y94QekOWg&WrH5AT^_CGs~_^`=VccF z+`C->O2@_QEx`VorOPkKCpG!W{fDatEEFO1ZSKO4RwuOT0aIi ziG@8*8-|GHkEQ70=9vv+{R)k@f|7j97>4VmCBVnbk|s%hEw2~4687aT7V@Tp6SCnF zC2YhR<+5ZO^=hm#jRJDnM$2zq2O=*A@he#JoP7NHmR>da}6 zUlt@s@XVV!HLl89pV4IzYB!kBA(b8TK-Wubp+6S(qL17BqN$NK0Z&v)<3s|H|JPY| zRo^`u#%(v5unGskxBb;$&5S>lPF5pN<#E-;I`)x%%wPP;uvyKqZ*c(IE<@z)e<9n9 z@fQ`!vCBTrjJ2VoXCiZ^Jb1uV=y)g3K(Q%jeT=e}b%vp=8b9t$3gY(}J)*CnN$ zP}pne9@8yX)sFT{)f@WjPQDw+N_;5G^%s_&gsX}C&;{<(^ZX0!%P+>~+&1+@<39>E z>80mG3Q?d>G6WDWB$sM%3;i?#FOv5*umLz4>vpSN+jvY z=|6|MPW2?#l0fT@4#IrA+FN`7-QX!~Uk;AXNx|o?H^0Ts2dIG+ZPJ>796VmW>}BFF z=}~}yli|va-^CqXM29O6UpTq& zKccs9eXK96QdoG)^C9Zmy3`}2UvnXY7X-i27jIRQb>$+0WpV%h5b({wL%39%e@TSn zftwSv_#P+FmATlVm4Ngf&6I$T_vFqHlkR-aYXe@pL3q{@*C4$u*`>1u_}bI>c^z&FjJF5n@KO1r>2hkUNEkFD!^Dfxq>X4N8RoK{vwsC7sAY(vJR39 zLWAVYun_pNxPG8|U_1#fZ5*}6-E?n>WjkklTglK^CC8-zq4tyRz}8Slr@)q;3f|!+ z8HPet^2AK^gUTaR3(giDju+^2!KCBWYksp5)2J`EpgPX&4`1G&q{2?94kK$ny;^uq z7H`VxY$#rpVEfMe4_D)#$IzKO1bIZ$BK%LS$e+>G+oOfu#pC0|;|u5{HAZ+rOG@{+ zXn+EX`M=18DGGi>SS13xkP$Op+VY8@6hH)mj>2%)Vd}S0+7h`pA+2?K8GhW9OtKGm zOgx(WY6mD^#4Zf#?Iezs5<=sebLHRy6k!r5c+B=Wz55rX zyfm4b1{13cX{1Tg+r5WmRkUmgf=d3E?C}v6HpxTWjskm~zeQRt3w~4KDGBl(36Jm0 z1EzzLsI|Zlfv*2WdWuH@ku!Tt>T=NQOth-aYe?jIe3h6fLqL)|n-0k( zTuAClL$hpSKl>ZQQ%XXhQS2I-9L)bD@x6p0Um&0@pED`&QMk7B>!Eoa!ZsxX$QaA{RDZO>HZElc=3^bUrzbncASaKD7zuGd6mstL}Sx{CdFjjH3Mzv%Km*<1Rb zK5qB#K;c%DM->5XqV#$*_GXI=i96{PK}?Iq0c#k9AuDR%DR^<>ll4H}2*M=zS1T;4 z-rbt>OS>PsYmP&RF!5}m>x5--afbpN4?A50C3zB^pXiZh-*zU<24_63Oc~PZ>nI?CNV~ru(zT$h+(9JpK*VJSYY2Cf*UW4Ngt0~o%bJBt#`0KopWyM-qY^6KflTp7s_$!vo} zy3LQL{Xl)d3TR`geq=34>Uv2k&*}#|yybrK&5CjJ*N3Y|@w5VYL%_ti+BXO`Y%0b4 zeAp!3SUy#M$GGqQ!9wFs4rc%Fqa8mhtdVcL(1oTJM(}O-H@yjARiL_S_hO8{%wKt* z?vyb2$1dL!5KG%s-sQ|VReu|7>sGFZ*O+U&H&jKv(s`d=kXt}GQ`f-2Q=+qxlI8cdnEfJ8*z z+N$3StW%E&3LY~d0hdTKm{xVqem;MQ^B5NMy=@+ateGPFn&We_BE!7H?Cj~9&}277 z`rAz!$i)By@p{SzRgSWs;N3r8q!63*NsVDtNB()!-t%hOWcp|ScWAje8<8K(InpJ` zyw0w2j;Cr~rf+~TI2X)1ib8s^zzEfa+<4bP4}G*4&rz2#y3G^AD^+>_{ttK*`;*Fz z+)njz6Rn?IG`EBKgHV|nY7&OGdxv}%nq)<@nW76rH_s#gtU4?Mj4VvzghF!DD$a76 zeK+$l%AEs0@!*8u9bop+i~c^t%tB`TDO_Rpl8Lx<(VrA(sGWqEQx>Uy#YPmn`89Q~ zQB-cm(j!M4zGq8z@>|jQk2L#@Xz`?OThH>^%~~GtVl%mo9DbB{9I_XWYdpSd z6^H0(bh=mrpwhdLo?;nj~8)B9V#wP2=bgmoT6&nxX2T=Tk0??3{SvAq7%iO%mU`gq_{ zay9Q(ZVXl#_TtL|g(;v*V{pcFaH>CO9DfILEiwK6&R5R$o&2QdA{{ zptzvJ)gHGk21cs&7B8!*d-$k+kY&r0DTT{&J)p7;8h$kh`z8GlI=DK+42U@gG5FYM-l|odW!Y=} z=X-NNrY^7TrV@Oq07+BI3~J|klF{;7AF0VlCjrg~iAmNoH~)cuQi7>ehVi?pJq4vL@3i9yy~#y*3t+kI>@V<1QvINmKpB_V%Px21v%& z8EfeJUd@sQ&4VCzAfVL`h{v!Iuv@7OR6~kw!5c!g$Ai>JfmL!Lm*7CUY*sNLa%e&!}*m`!(gld)BS#Sf37V>-imiD+TIS#Ww7>lp zOTBJ-D*mYE-w++JDy+@ysWAjOun983i~?Ze00^2Bs3s$Rf4zNAuQ|ZX8vz2} z#MJorsm0Dz*-x8IdL4Zr6Q}Zyc1bESTq5wLEjRCQ=Q+*m%IL5( zFmIUS&rGW(8`$a?UUA}K&>0&5&S6cm^SmDu0|kX#8FOCi^J!6wB=gJXzG&3neQJ&O zowc(V6sqPftGdU?39e{LZ>`QF2sk-i`?wg}7u+;(!stS!td&ojykY``6r#CkNkejNi%Ec4QFkhtBmIa z{m{f|f(;~|>=?NmB}?a6;$6tPAG|Tb>Z*ixDSxJqaG38hLe6X#X&6GH!)+CHYpoFt zy9YYYnVL*Hwk|?HGhdD|FBYU^&V@9pb_HfjXH zB=H#j{1LWj_7qPM^$?6W=uLy<5XtC6-}Z}pHHQ>;o?y)!`r>100yf6qKWfqGS96Gr zg)^R<5!zl?9KgT>qHbbAv@88N(5Pkhc!kDzVq-B18_usVMVfnh@9B<*X_6M%Dh;Q? zNykS`vLp>BJG`WOOH*EWxxa}XuMx5nEiIy0`p>Y^rv34Lwx*3-+z_$F-#y0sOdN1` zRLvV#D;jAr2O%=3q`zBd%I z=L_cllbf?+z)}VeDuvB}cgRrM!R3>9HSDrjF=_3ISnJpz-lp=s}`$UsI z2+R~KXs74Ge(_|wJ<$)RvhEzViVRLf>gHJiA#QY;$!8cirm>3#d}5zs=yi-t$IG=W z?+O|74B}^7MR6Lll9`vG@I5ERY&Nrk^0+j><&P5(vY4@*uzUt0Xba0^;fH3?Yk~(~yHg^w~{Pysc#rzmm%6@7P z%dAIIvBY;_z_G=CAn7V^+9qG1I3@0a>g!fAwkeL^8fd55cj>=O%EXNRkT=<`JXhDP zjh`0UUcG9&o_~@I(Gi-mOjP0-yf5TKP5_h0%xLd02?gslV>X=@wr0Y&yA+ZwD(xG@ z3Y~_$hYs0YS&0>_S6I_4P$5#m~bjGFu-5 z-UbBx-fO-XQJUK#KP4Pu?VgB@KutdtAr7Kt6<`vt4rf&dv^As;ZqW=H5oap4IF4GK zD744IOB(5q7jl-foOZLFHo_ZN3j+^wa&kNQ|8HSux7&91IO>u9B>h+rT66V0Y48MG z8tN0BqD-7O+{s@_@L)c_0dqNTWDaInpw4OzjNnY<{UmNm2@~)K^tV&MMPQR1&^4Co zYg^v-&JyZPIKKWaF3$+>ufZ*~3~74FUtH0z4N8MvyR<6ww6yd99)d_);&&(hr3MaO z2>U>PGS%h;{c@pF60P1+4DWBtx-N%S#TuJR6(Z1N>gcj32$rGl)^Fp-i1)ESY~uJ< zX#niL)B8IK>~+i=e!uG{?sm?1q*bc4Ye?~{0Ql2Ka$LeZ+RBv}7cGuKqR?CVzHa&2 zTk$0ZLt(1Vgs~MQKb3@aHW4ze*aiXI2ApWqcS%^BBKZLS7_f<6G>IJ?#4a9}5FQR( z#VgB;gGvLhfpe~(;b3<8%cNVSRU3nG+h(>{U`2Bbg6va}!_5bH-)jQk9r8}2*-s`! zJpYgniz-vKAEqD`;-)b(R+QUr%Yv<_AKb>mK0-_K7u2)yTI0a6uE&&!XLPgH`ZPR) zW)8-a?sVj^@mrvkI^Hpfs>+k*1KXU9B2IuLuI5sRVV^P$6xSdZmrZ63-@Qcuxuvzh9_5D{gflBZe#%?T6J)y9 z*x0y+wNUy(hFn@QDB(ZImy`>t`YaSG2MPG`M2m(Ru-#y>MevwU)dj5cJPItxWFlCX z@^(CK__yf<)+@k(TRFQ0sC8!_zlf{jEJShY-Sm%mfJ#}M%RY&9pDFiLd&x|84+yY; z4(<<<#=E1*dt6+eQdy6R?tmv~R|4D_rVH*vp_b@F#?!nQY1PpmcR|zf=8IKpPc4IT zk|1Ub8eVL!#ZzhYnIcSJ1C`K@pyj$K;(jFzkJG7BYPNYwD>73J*A}(;TAsvltneHF zg2SZ4g-TnuY`zl3NcX*|lSejy1r8JnfDB+;=AUrVNxT=_=|je8)ZmWMZ_idiCoIi^ zWut(oIg4jIY*_C#kjcJe zC+m^ZMOGxqFQd3QSRWUY15?B-(OH)F^B)GOa0x*JQZ$AOeu7umA~cv)p!mRPcMSMD z%&iH61>jAEaMDTl#U@^ou0RyZu0b=+5+5snn5CE4JA26(QUU(iy?e-QgY+xUuTb>i zp{i33P{=tXn>GA4ck&3D_KJL@qm|BGIHa6||MWIa;V#>KqWAjPVDG8dd$-?Xu@S#o zS^?Tr$;1@2%dXB24G&LANil-Rc9f3a$;n}o`oGfxT8Glt9CV2uhu|x(8ntvu*gyr1 znZ&Mpg`1@v+EodiW+A=NX%BoN=^mJ8gbz*dCI*Uhycw&fjw1jAcHHlB-Bkm7Y8GP1S z#sdYC(xYR{G4HoodwYjfv$9SD|HE73bP+%j34rTFOKRsF_CX>Z8XemB91E`V+$S?) z?^##H)$~k+zQiiZy`flA|IA}iU0~P=nj`QSa5nUr23yv2f{Essm}xMKy<{W~Dnl%q z>kQr(k=4a-kADs@jnxR`3UYT%rp#G2nIr~2;lA4>i{q8H%x{i^E!9=2C&~&KSg-CM zOu_YvtSSo$_y0r^7F`=dQftjs4$2B`wnQ~Jh3YSWbkAIJ;FnpJXiPd=RQewq8?q{M z4)xvx@4UWWt;w(|HMv)p;6}+RmYd=%9g@+0cn&M+0R4b(M0fH*Ja4SwxmIMh;?%s;iN$Ul} zBkF!TZeT0P<@Pm$=YNKjzOx^-mKRFR=33+&q>}oH=qd2T46b~+@Q_`0au*2fSLLA$ z{e$dZlJ5gI$D>5OM;lb-gZTgG6=fFRSh0%vKcHHGN>j+QLHpJjRaWqlM=wOVj_YD? znYw#x=lH>eTY!_1S-OelDm^str%UNTqsY9nAD0rm?< zb!TZRcogc@)5(X@e2=t6KhZLo7>YdD5}PC$O&%-iry1JL>7ipE>0=+REPDl@5A;#u zNABOPehCo~lT&scQw}GeHficHrji&ZX9={4czAI(K^N4!4dh*eis777cwb6cM8+tH zR`93CbeW#pZGlGEd~(jN9&dAA1c>|biG%-cMQhVwj&{OxM?7($ej+obWIJ}>YR+rl z%^Ux{Obn8%n8y^|7c)DLB!ulL2|n!UA%7}?D;Z(W60wl5WD4=dy;kAe4xF!%%7DTp zX_34^qUu8E!#~7*Kn*HSW!YFhV)i;2W}X>}JKFzFVKU0U93^Rfww7p_i7lg_c0+!e zVu@GCRW*xPp>UBIv0~)qyH&Oxf@VRqSv+N9ReR={M!lyx{Pe&rFR zgG2=^kCvJZ#ghMm5kf1KAecb^W#wfXcx=IGojr>0nPvPs^hp6hkbZ7jk=oa zF<|@4#JqgH;)?YP?O#l7mm3GR50JtgfrnYn2072V8HpDg%Sj8= z#IK&(rKg}~efa|IC1Y>D&y{ULrs|(MokW5z!$WGYP=WEosL!5Q-Vi^%rU1RBe){Ka zuh?}Ca_AAbMJMc2HFY|gT_Im*1D?c4~uiwOamSFjIiqL9p| zVw{GAoJ>_p-$6yI#(p*0pzV(J8cuUQ1?KlEm(Ws=+mjxPP|@%FaQ&rGVQOn@>sUN# z38|j-v;VCD%xh^|E#HAxq{72Mmk^X){3=sEr10sAcKny1sA-P9M_PQKwQgR~7@{Bwm)$rV3Lv_5dfEy_-oY|o0#V%g2>}|)gP@}3%o;hl#M;2k_ zz2=Bg1eg}rUy876*KXDE1*-s{xfj{ocvub8&%u}`T5lkVmVyu8f%#|`vmi>{e4=zz z3v1;l-)qGR$3BH|e{Fe`wESrhC6tsZGUE|;aiP5BF{$#Mv3S`8EMFJyMtzWd2~jEE z|fuX2d|+H71j+C&HUCZYoHOx#XWkv6ld@Z;@!4}wqn^-h`@O9(Dw-2mt#5us&<|uc=4$`ZbnK;%fe)DbZg8{(`phvscyBCp=QMwIB(iL$hKFc zN1sP)3Z?OF7jk)S`ET_piFyx7TmC^Yg-RuvXm+1mnW7UNQE2O=MjT(*`BtafD0Vb~ z;#A;k%VU}quJfD$G;zV#m$Y}5-!wMS|80(7;`+e!Xt4T!s=hXDPEFeU?!}v)-`Ni* z)8;LMy@AwDr_$T-WSMdEjzZ!W~%qPJ4=_+Q**$p3Yu|{(KH;y;$j7aPP$9&)B z))T*FAstq}p;8DfT_(~`W{+ZrX+`pIcQTkRnAQy?Srgg~23l?a+!oQ+w#pi% zxTGIEVHVYlc?h(por3(7cx)tdXcK;g<~h8P7!oJ_v=E-*%vx0zVpK!{ngCnizIOcA zX&&u~#aYtt;z0)f*)XtjPQA0E;pOWaG=a)+xPwcW>yRJRZaVOj{86<%tyU`QAPuNm zc?@V*zvHTVyZM$=Wiw&t*ES_#{_z$jL_vvLn(+CEO%4rDvPP-jv|EmC04k}pqg5FA z>i+dS#i1eLaZ#9qW8hg%g#DLD41|QBr5jkU3_m~+sUA{J6~RH$5Z$4&T0S6eWkUVS zo6gw?zVqP**XUP8%)WBhbDVb)H?w1}0&Wug-nm4d5R%0cS30RmFi^WOeUF* z3sP*v_;)(-cWw4ztT=yf}bBhFSE07 z{)Q%%qaAhd;9t8<;l&2N?j>6as)8L5U?!tl@GQ|H>0xH93PX(+IcD*i!ub48`o7nj zZ!MN-rslHCqxL6b>)=-&F`=h9=z&aLfX$Rp%Pdw>U(vZ0Nt(h@Yc$^;vVQfo0Y2lb zQkK$G`K0)7MyD1DlO)=nVX(VQqyTIqHKviEf5X9%CpXp7s88yPpAvmJP0*4kU=Lgq z>I|1Y^l4Jx1^amDLkch1@8SjwB-O`Z9pQ9W;Mog!MXhAgfpXuww**9ypfHWcP?`czFU@&!k>>_|C zB(7mH?$~`mp{lHAJi#!zOE&h(JLTRh-Z_M(W2%r zF;B)8eUK6_46e;>tyY z8%I`nr^r7C)w+T0l;lRp2@qi;uyz|gEb*xtf}D8w^~sqhe~|sly`0YQcVCI95cpyk zetHtH>(ntKq4wCEE13kI#5&0S93EUiTh>%EJM_9~Xp*3%P|78!v=3n@Q?;ukDT!|T@OKB^dJ-J}L(nz$R z%-<#sw;7zj=jMAYhWLDxJk=!G6OdAAI3?bmbT+muQahu8FCGGbvhmS({p^gh-LEn+ zPJVH#WC@Kjj8*eHdVw$^1)#yp8WuIbKJblNc8TMU)DsVb{f4RO+t!(X>5+Bj{xFkf zfQyi3LBSONfc0+T`J=CzEqHo^hj(`zcAX90+zeH-TS{kEu>$*mFcclZ*98RC$Np;2 zB?hhH^$g0BjO^2GD%3dCPBWZSm>a9l1sAUY#~(y{>K^B@W9u(zgqQZjh=WfY&x3PZ z_hFMdzBvsR;AaGKIJT{B0sUF@`|1;|BlWMgZFVtlHW_4-YQx1mdxcKU|%|;%(5~O=lRVU^fWo7 zq&VC+5a97(umNV%4Wl^>0>L`%#$zWZwTy3sv)<{xu5{|FiFsgX_;YXT577v3xs$h! zVymul^BC~62<;~xrJ_cafh|{PRy-F0@TTDD3VkgFcAZgWf%)w?{wZV7q7L%Ib&{F^ zs;okVG$5fNRM$4ypm$UEGh=wy9Z)x-O}X@EKBDZ;2I{&y#Y?Aj5oM%UG$DO2XvFhh znKABceX~yw9xrft-~=SI3RUEre`%a%0WLP*#k_msK$Ef{wXCe;T?W|Jgx@$mz&n&vBup=`!hdFlYK5|F^0Id5o26zCC+0>4{at9CH z&rSQJ$|G~#2!*njjGTDQmNQQ+ZYOiq5Q-wjh}-iq3NJ*!0|Nqunwfnk&DVdyG@P6G zh(6=Ug<{U1f^^$4+@r_DaaIf|bhidQl2%o5O^1AgopU-5A!WJ@y=!Cl%pmDmg+ezg z>;|2Jc0gXHlvP}L3(=j2F>n2~aMnev``yo{(frVVVjbX0z(@G=<7{lSyd$tfh-onX z`9m)a2atFX@p^5q`V}W{<7ZL9Lu}i8n9NR4?hj$R&samSD1#70L3@@RhhEZ_CCH6m z*&3@nR0;=t*cwDpqp=18DY~bm)%)~}Lrk(TT+4TC}^_Yjm+@F1Q+a(LC& z9wt9kN|Q5e-cg*f=0h@AqdwR+wNVZgqN?2gc{*EWV34(!YK$E}LVEGS2qdh$|LN z!#_%O+wlT^q%l5*i=a~F4$pU7Q^K9dMUIlmDs{c$Zwf3;#b{T13)|2uhrUPi!`Jk{ z0KYFAryS%Hw?rB_qGbzi$%hILC#5}e1lCg_P%UT|UplwVKyWbRxgle?Kp|`JY9n}j zAbnk~hN1pgz`u!Q!^<^>ujPsz(9}J`Su6_V%bs^fws}`_uu7lB=D_Hx?SfzfQ=R5KxF)wRhE53q>?yNLErzW7+Gp-JTw2{Dc)OF zZI!~TUw2uR?O3p-%}!CX9e+K535t(K_lmn@>%9r?31$UIHm+L?DoX&zAB9p#eor)o zK|4!(8KHf@RUy7~n8bQ#4&|z?eiEC-n=0aMr^IbL*`lOP7x}TFUYqssZ?nwMM882y1E7Vd_QCrD!vt2vi)|=OPE8T^V1}ov?P6^O~_d!Rzdj8hjOcD-U}2 zwDv-l=DUt4HZ41z0pBU`Hx~c1$-UzV25@vR6Nl+jWgh&uX)$9tL4f#-u`r|Jh~ltt z4izR^oZ(CsSE7t~N=*nVi>p1fi3q7}vUVSqWQ`>-@@(a3wpm`=r#0k_cbi2Udf5euEASourFFBj$_{*T2=WI}W<`eg z2V$OW&fcldW=e*I*fwVzLL}#8H>mO!aDfsG0AK@$E&%rpz#Ur0d@jW|95iQEKe$NZ zQMNS#wm1(I$9<`Aqk^H{O(wR+W>;KC3~w1aYdHX`H~Qei{JGAZIS(?RPE*Jn{Vj9t{NA^G=R;GCYT)OupKNEO^c(39SP>ah^&9y7K~??%k)R_6Qlh2{u*l$p+&C%? zR(O*K42#b}XlS2r2u%LPy$!JVfccLsDoyQ@>l2D0+_Wkc`?LjjqQ74}k-oKEaVBCG789N(*0x zCavk|g>|fA^MS(;HDMuIpu!mHHRT}M2=?n1&+#XlW#Ywd0r>!%rVtoG&vHOksbcGI zCGfEj<<{Womfj}Des2rjmK+X$Ie7?C(&}7VWQ`;``{_Ys`#JRo2{K}pM)r~ZbFh1B zJ{~XD05G@66q2TG6VcTeT>H`xjfRA4lhF0pkj-;=tLpkm42H@!SwP>jPEY8D?QRJn z7Uk0-W7S1+vny07a9HT7GQ__IPC{wlWer)T85uw1{S)M41hx`D=z>=Jt9QVpcYLGT zsmJ#lVAJ%{x*&|vg&oz5D^(oF6-{%hF$}n@1FE1g_hEoh+?gsodEu97VFvM`g0PXX zw6bJrmO5NK>mk`DNU7MHQ!`+@H-7kTRdYB0d(Zef&eWdEcv8wYf)Bp&&2J$sV*$(5`DN z@bi})ssA?_Q(|g_73*jnlU}%fe}6O)$XuEg6;=;H(c~#;i+x?rO%w=DWL^SAVDdI9n zgX4ic7Vf&M9r~Cadik73W9qTR@TrjRZC4!xSq@+=UCjA@`B|UuOXICVA)eBK1^Z_xZHu% zm)r069=mhK`G(bA%a<6v@qbRO*j|5M=FTISZi+wI(!KYqf{gK_+oYqrw7co(dmr)% zPcw^ekC1@{P2R5q^&bo3C4CGh=zD01a+&d4A^pRg+FZ#%?+e`NNYro1t-j;FPoqyd z38vK}0r1NIW@7VZ@#euex?9(^Mgll-t%6}V23v7Zcu^eeh@0GTFShOAn(p8kSePMA zi9^oHuhDJ^ZhK`ng+2a!_C7!HJ38($&b9|b*Wz9duIzuikqPePXou!L58slt)9d4I zEJzqDiq#1`XDcA5g_?Vss|O4~4Hff!wDT=JF%heczmZ)h?9ir={ZPe^Qc9(Bz?M## zidu&!MjE~*$?r~`w~DSOfi^{>`SgIhAP5lx3w^6Idxi{JYaDyXvUJrP;K07oquS!- z8{apMqv3g?w?Z6himNjrK(DSh6@tM96=m6F*lN;OuKP`EPYi8^lc%Q{HGlW%T|_tx zK>?@eoRk({eIJp@OgUg{-}xiy%8m5dXzkWoW+;CSalS?{}+6%{SQQ zwbG8a-zvAE{qooJS-T0nWvugOkK5lzW{bNzS%YY++a9ZrfiepA2feXC2GRA zSO~lN^qVv484b^(mGt=>HhmpuIqznfVdEr2>S7$^FNIAC4DYeT+2f(S@@$edim4)p zN6D7nMxnMdl{^taN(ZYH@7SOAI76~iLCdO{A!l|MfnWaSWbKHtF9gO7C3$RDSJcF$ zHvbCPyKn?4Xr&4;YXXpA%C)FLUbbi7>nqH923Pk=6CDsgL&zpCHmy)#5dSI;b6Ismgs0EQY!AFyFH9^aU z{b+;Rw*hV#i1u#}APxTSj9l@jxNE&+o+&VU-^rc~IO|NiBt6u}BN`6*O!GSJ;6trV z+EQ73=%v47UVAqNgzsfbDVgFUevGoHjoNsO?U1lO5$t4DN`plzvZR#@IIT+3fDVM} zd{31hs*L@ID{xb9%0YMZIbCwUd7YkF9T(O@_KS-B^W_JO<&KFT=}Pt3_5cJ?!1a=Q zbtgL2o}6uvrm z)qJP275wr4!=Jo%DDDwf8gcPU6o*<)CAdh4+84dZ`H3afIfMAE^6ZB zsWI!rhS6Qb(p{1Z4&lwu!B-Dd!=tXi$*JF#P4W^M_7c2!9K+I0@a$c9Aj{oQZY|_n zPurEx_Xj9lKcXZzZ#ec&rYB1ruD)N~D@p%tMO`@-638<#`P7s3ZhUDox|{yH1AkTW zb4qne&j9}WbnVtX4I@NYUOKO(O)m*f-JAVD1KWEHmnRtH2STh2^4A=$62BuVC<+wjc_^Wd2euxC^@7l9v(>@5vyL#4WgA%1%mXBD0%1n3w2c zgCmDYR_m+o_FgEj+v z62S6+t6q;!%M5J1TE=>fbCP@f!RAydccA z-yFe8xI7&int7%(izNWG3dDhn@e{8?xSp8I@`C4Y6;CBO7Ed9V)dD@@j?^p0gX`*j z3jUsm8#v$Q&(hFv0tD&pmn)M3zszh5TGThsyw&2N3FY3xAsm z31;s8JH|-+LHO(o7E%OgK>Fe<9LsiaT429+4oqzyUU|=tE%U3vL}&(hHm+PHlj!4f302(||=icfP~*See_e9+Ki9dD`~P^X_MF?-e8XAAyoZ%W|D+?C>vB=gR&E2u z*U+l+1m6#0<>X!3`5UZ}UCk-SXyer>Y%3vbM!uqnouaWd6TwUlA`S}#WJGWgiqBZ8 zvQz$oxGYU#^RK}}S3vlQ6Oo6>8ukTqIRS&plx&aehs-;gUe|k(<8v~kleg?dr2uD& zg>{DZGO{oQ&FR7gn>3$EbFI$qODM2#qiSQ}ztghWH0sV2zx;?2rq(AUT10~<07MR; z5PCHRSj2K2y;tuO`a9$IgZDK^v&c|i0q_{L2rY?G_aj#KqcIOY><+HTOcKq&hjBt{ zC{p+{y1@5eY4o3?hk^GFuKsgi@k{Le)Fc9H9^gTgm8++fBn-b|`FsPmnO`lRD}DaS zH7OEahLx!&`{sEHy4aRB#eKQ&Wtxue0uYP|51W7!Cl7He8f#VnqgHiU^@sS4cs^`7 zvw1EO1@1*p(>Qi&wL0DjZV9tv0)nxN5ATRtH4mtDwYy+CcQ&~O@AC`-c_6%X%OZO|pn=2?VZj|1pI=B`TH39Ll@=O{E`JkO}@z_3O{k`6CMVp1YNo(wkFL zBP>&rXm^okoOm9yR9LZ0xI77pu9#%k; z>ld_Z)~wIAhg{3*6!ja2DdgP+_eeC4LJ~YuVXUIzB~R6?opVilFJ>K^?BgAW1W%Gn z!r)NQ{((s24in(y2TUDt0-o>w5ofNp!=5KA*yPMUbzy7}Zpn7Cqb=&Jt<;M*^^ zlQ910{N;8M2=tT0y{8UXL3e;F#h62_R)xr;XU*mG{Wb8a3WIMeW9+xW#1Gs$rgZua z^aea8Lg>8M+(6}5x6an6>iCKPyXJ^SfS5H*%bmFv<*tDDtKVe0aQ!fu8C$%TCL;28 zpjr2|bP1fTH-U2&HGl7s-e+4jR%O|y`{T-Nq{&Vt3gH%3NHIDo6~~JE!<2d)(+wLe zJb}Y&$n7Tsy1E@~h(;Z9r6|)k@y|tvop*mCxYQJ66@m9#=8%(4u(U4b+4)r@b_+^m z)TUma(ifZu9T9Qe#er<~Vvx|4p=oWo{gpBrRy6*~e00-XGA}TDSl=n+l`)C>|KsVq z!>R87|Lwi9_dG{Ek}TsNfrHwsch1)vPp;NzEZM=xlw-fc3|=(BFD z5B%RgGwkKtcI)~M)y=Z&H_j<&Ul;qo9`SAc-cf)0;D1_xdAC5DZR;HV>bbvLeBy48I{}af-LiJUQzM*eUxl3w z=l?X_0uOzj&IC~==c3&BwS1P&x6;svU^b5Wee<)J_3Q6O0_HbZ%xb8uAiky?`EFv> zdXfco>!-2FUm**@6p*?@noaG>LNhw0nyrJCl^IXo6>LFkT!+ZsN0|0;pW~fm5$`oaD&&GZ5G7gkQxcr$sO*`4>?j)n%mCKH)FqR zxbB#B?ljNJVW>aZ92drfIMDUo&sMk<-f(1mYZx-bUDqO=nMDJmURt@(a+0AKr5Zm) z1COUcH*|O9O@K*HVF`ObMJaZ?{m!o$tR(n_8+oc8NKpYl+*NDSGh^InBR?l=(orTh{HV;^IG%p$GD(RK#(RJZL_xI$gg;*TE~8`A!y85tRk zO-=GpQ~j^0TA_Wqu=;~Ie!zdE-#yTq-Fg|}N`D{nso%tR#yt+yy4oTnCRIsOePD?{c zCiF%DWes_CQjeBub{JU(10uO&zBTkT-O-=GqAWvC1zg89+0nvt+!Ff>77mR`r`~59 z3y~xBr?sZRvh-uP(<`rGL3Mh?cu8y_HaM~EWd=wL5dy72UKW|g?;SVh?n|N*D!cb!a401v z#==tKs8#xNsOQk^-dA8+R9Z)so5#8>jmv|OtcGDCX&!+S3go>yw%CAZ%y>r+y@_q< zKx2P;OP@W%SVoP^WCaptHv&SWsGJ9h&^~V{=YfbZa8`YyzoCA#?Ozdvm-hi0bl5Xl#_N*ylf*hHfV; zw^#9~D$-P%PjV@j1n{quUrpmyiBe|OHUgS)u$nNsy3ol^Rvf_6(&SiuoMLgZZM3<) zh3(?%;{NCaub%`-t2MfwIO2FP>T&?e{XuOjboSxvAF?0g>8^l>i@O%jggobC<55mH zaucelfn&7IQeDJSqqKe|u(^Fic)8YIJ`p}G3hCE@e$g1?ulIaF{N^sx*Da%`{;wZ@ z+QC>xFABjq+8dBjQB&#nfGU*3cW9{@#-atk4wZTb_pZ2ST7t?Nh$Dv=f}0a-yFfgS zY>;#eM}~8~l(l`?-mK<;fk${y0 zVm|8p2>FN9I7NY)6QC|n-E_%zEVQz>NUYPtZ;S=3R_0+ACfClLC{20;`mAq0L#1Bd zd?^qVV%yeX*D6onulkr4McZ)z32DT02dTCopukQa4t$F z##+9`Xqi*C^Ye`hW*QnAZ8XcWagb&xS4}9iPe5yZ*aOM`(+n`u^dH3#e(l zG%JxjZ5FyqAHbED&0=#5vSbLcq<+NQ@Ykft`V&OrZ7P1O+LGU4P5TJBDBDS*%!+Lh z7*AoVGPY6w&ioh3CrqroC35no|K{sHfIp+AG=rPl(KPNjq2Pgg-4qNgf?Tet*T3zQ ze5!)Fh9H9ywyJtcGCkSQ!%Mytz5~7CRUn?_+xa|%U4S;90q2iA(x>>`D z=`V!P?cwv5@T;p(wzXJR-WX544|Y=Yh93Y&<<#mBQ4i!?wTx`lm{R++H6b(5 zRbPnrUBkm@Df@I3@$aqfa1`r2r5dQk$f01{6nY~x#2Zfl-QoaYpUy7^CkwO$vOM1- zSR2PMp_iNR0`KOSFo>&fJ|`yXmSyb63&WtKj|wG~IVB4|coZDXaypNDxKfx5w^YDf zzw6mo*M(m)7vee6{!xR2>QesuL`FtN_6^hJ=eEN1sGCe2n(P5vL(j*mjxT!uJClrp z)t&_0o=;9|1N~U@P!5&M8fZ{O;LoD5(7~i>^n(#Ywl24-y_H!5%NO9l7{{v6&8 z`)Ffny4ct*-T4T!?};A0Y3d!w4#7E}8Y02cvgsXsviq{FN2xwwyTbb2pR=*S%JrJu zS4fiah7{rJ+vHeUJ)Tn5=oCTx$l{dKaJa#qpP>U~1$O5B0E{ZjGgX3@9*d?XM;^W= z3U%L<%f@+r-?{B(WV=#2NN2D=T+7HsVbmJhLz{M?r7OHI)Q`_MQ^tM#xKbu9A@*G% zOW}v7z|f%0TOw^(Q!`~SihGpFs|!bT4ALr#vv`J_XsNN};O(}}gIRf&m#*D0*`m;7 zptW#|5=7p>{6a#PcU|JD55}-Npk^@VN%h-4b_T!<5O~;qL&a`SMg@f+5>gcfp(cR- zD#X-D^~=rs4x|wo=zfT#Cr&E~$yL`uz@FGCXr>yLaO4?vv37ANv(jgwgtA{ zU(E$P?vmc=JZQgws>iU)XU%8-4;?>0eL?wX0j}F4pZ-_(da*UrCwwOQniQe-dG^^`$7lP#avreoEZ_;cnQmOv#x7QWh z;yb+l@qE$TZkfYeuqQc?*YL}jkk3m*%8Yn18b_fkQ3HniwG8{~Ag2qd$|bzgB0dl2 z6|hB|JQxCKGBk0TQ+^b!dg-2K?RXwfBD)cLLMn#@GYs(cZzwgzNf|}R_8IgurSvIL$<`3m_aw0wYu#G#G+nYrc}h29o6ih8J7#S zf{at=B_0IX?F43Nm2K|NRfT@6$MROUevP_3a(8#{1wr=x3?D=Ez_)%BAdG-dwhIfR z0EB~oT$WOPnd>&m(lxT%b(f|W0Fu3vL>z_sao%kVUgLc;Qe9fuse!HM)2uPABs)a+ zNx~d0Uly8B8dl5en@k1%)>H#nqwA;i0R$XFI5WX1)CUaanglyzT$on0cd|70y0zR$;( z#~@WC!14>Gifm|F6}-qN-Pg7HB^fJ8W4b8goMg!i68av3s!8}clc$8)KtaUFBb386 zPlG7y=V1OTWtTIs;iIA3Z@#`Q9O;~e6i%$6i(F{Ii--t~7LKhM*uHufjzD@7z05J< zp&lPGxmH7`bD`=~XhB zns%y-1Ebbtmx{sh%UyoKKe`G_DTX zD4r~tJgWOFR1@5z`pNG5<7}(3Hvllyk!rkpDExf=YQkJyT>nO0N7eXWtDCNNqD$+JHCX6g+vFi&lz%YILYGDI5chh_e0W`P63n$Ae?iAKkbSIiS_|J8WPy@>c zY)xd?V0jMWm!}rVY{H!O{6@nwcih*ob#Xp-L3-Xle1V>`_@n)zp}jZveD{^l$+1Y# z`A+Vlo7nvD`JdsExKwi?T4J2Dp!PnTWKxq{#dq_H^r zZN!F$5wu&#vQTDmc1+>l?zdI1<)fGPoW%MV8(Ki31tDmW8P-Ei( zHw|Jr8#NMz8!%EOiK;LjOo+`;-$1!PQGn~N@1dtZho=PQ8&f8tXb$6I^f@ofRSAq? zrE~;d088aMtcm3rWod7BCds6)`@lN^M1f&gA2(mry6gVLFAUSSr4B2CT%qScI};KAvAl(bWQk5dcbt>nt5L`hk~21Izlcge)AKvKcA2SjLk1sU}( zc=$Z(WGY1Q-GMn9wJC-m9n z#dA#$G^>;|w60%U;V?|;;EI&Oo7eRfM1NnZk}3;|mbAdwnxZ9vqbt`3Ig(sAtq{ztt<`82TfSLJUj6e_hW%Cy=;!n?0 z`G#Uk223dAP`$pZIhMywkdPM0TklJ?Uja?mr}!;+YC0%;kjJ4czJNYDU|S`3zWw~j zf^{rF=m9mPFnvcg@ z{&<7hJYpko!~bx){p_wAV|4pre0zrqOJKw$M{u~69Gu|NFlb}pM|Sea%PZ2b46-O= zwtN!4IpM(dcECv6dO9b1>KJWyHs zM&INTzK9^gq1ctc6lS;%$Zd~q#E?fgH(qKVK3w6H5i#9(fM~{AVdX$Oi?OL-tW}YF z7!uEto*t1ZP#;`~Hy99l<{b@4u?uNG`6*RMY%ZbwP1DPduqk8>B_y(w8AlKk9A)UW zY0(wub>P&vrlabTq=vU(w1V3${}~h;y$sWwv0@e1eu#q+8(aRN4Xo54iR7f(CYb$0 z`sW0Yu#tE@2h+nma{F!e&!xDWX*^UKxg)PRbjWR>AV}%jlBL28x*gTFb_n? zJ|7D{g*P8pxYF_P+i*~nK)?ba++6Kj4DF%GGUv4IJCg0;>)!E5qAO8shGinN!54w2 z$5j^+K_?Bt3@pK?f_DshJ>K;^YCkax*nWTY-(v{R&i&z>Gx=dq;mB4PTBEsLYKj|w z9B^!JN;5=NzIfd6pDbb!;DEDL$YTcq<}iyntj&{ujC1(ig2mLwKot8IZ{IN@lN5WpPsyi(x;_ycG;3uE}~XT;aKd# zQcBIyXGG;Z5{g=31L`r|5o*Akb>C!KPHll3Y2Pgxahna_qh@pT&!vcE`Y&pdMKDTm zm*eZ&FY#OI^c2l1ZC&G5L+LWN2+_)TiIxZxZgY*@WCFIqrLXR_sKO1DJ=fz(Oo1Nw zH_vS4Tu;*Zc0;Xksgr?7**@K2e6V&uQsSc2wtrm6PWOq4UIv<(f$2+1{xd%UXR^FP zVK=Xh4DzNod+Ir@;6EqGF8jzX=mR3~&F8~MX%%0-&BZ#N5&4pp1t~yE$NIj^#uo2^ zpFq{`5>UMeOWM~ruXvuU?BmdqNtQagnUS^``S2>pC{jj@h%h}KJ$!HTytoAE$yDsp zar63Qab(BNf&qxkSO_TSB} z1B~q!>>qu(oo=-I-i4bNT0*l5tc7y&XZ{w9+UJk0LNFs#0$>I=&xmXXybr_0(qf!e zVB{*l*85g^xw%j~b1AXF_f2U-G8( z4NZnxXy94QTvGqcPbE0^g5ih+oMLN_IYUCOsSP0>m6ehV6GE;!1V{1av~2zQ+77*_qu(C5kS z63p7|KQ6fbznFZEsWLg2+0`ZYOG^(bta}d~wj2-~)L4(_RGYs_hR>+wM~PL8;rnb! z!dg%?cA~i4%nYJ-_V*jhuZ1y-^E3S07}L1B9BaTv-?f%ewYgx_7IpygoyFBqgBRRs zaa;Crc6CF=GjWb&#P#bSq^h4`z`Ei&6H)mbo55b3C`9*}&`Vdf-&zHfe&1r1dFEh_ z{!$4R2O)^CtAioit~GMXHak?N-vg#N%q+yrXB+167UL*0M4~~VkCr>Zw8z3EGto@g z+9BR4o=Fx5R3@oKiD{*BiLco_!J?}zky<4v>cBG?&~ddiY|C+$=xuwzqg`71i6Aw) zTQI9at43S>^_<7wiVx`qCgN7(lu9SxmjyW8%F@a~Y2%ruolL8GdyTyC0WI~3*SMwy z99`s@A)Jg+JXt@~k-I21 z;+2h#h`eTYTOf~b5H7;NQ7HRtG|>fep1$%C?rDb1iGU6Q8$|z|!56N<@fWABF6d;A zmaZPo$Fr~w(;UtooHL!TB;UGxQoi+P`w5B+bvPNS?yY-gpf|w~O$rF*AKT+wp|?y= z8(UfwD-0EyXZqa4pvW_DdtQvBmhT4L^nvtBR>YB0#JYFj|1>!=KPx8I^mUJ)cMCbu zX2pW4yzy2oHX#%$eYitz1L_lM7YJgA2#NrKSTnN}xZryseq}wm&sH;1_xPDAfmT5b z)vb68++p|0+WyN2=TcAcJr~3;up@0tsUIz?m>81g zLW-1#%tU2=5hAM9ypTOz2L5Oc1`1m36@iNsACC=9ANZyf^Sm#Vo*J{?)Z> zL^F`zJYtaj4NcKJ;@X45zKQnO>F(=JW1ao&I~!Y%WzO->w*}4#9yMIm;JN|+i|=zX ztiu^FpXwO2aw{BQ?7Kg)r2@0ex_9ai&gCk@GHG<*cDzF~Gqe0}PPNGskPYM}#z&BQ z|3*x~KubJ?&g@7{CJ`H4VU2xQvUM)+rMiajO3oL4z&LHz=1zNo0~EP-9$9pku7n z1P5oD^6LR{5(?03t@`wp-bv%OK}wKSL$^*ZKNhtKx#7mhi;AL_)0((8gtnm&fw3ip)W^4G1JrjP7VG&?xugPG~fCs zOU=w3uDMsgUZ#5O-I>7y%tVx@ePJKWTn{B zLD?_FlhtdF-{FqaLxwn_pArp)RQ^s;q5}m7HMF%6DCvQyKN>Lr?{FdjO_> z1MNz&OmNmWh-Iu?yFvG&=ooOd!9iY}W7U1m5fwhxP?cs7kq1>;ZC8Gb6IY{r_WTpTM`^IW9|oUu;Ht{^yR-Wh7bG{cTcB zWqmlFcAGKbza_Oe!&@l2OC?g_4j8iZ@ARM|psh(Mha)!byiLjQiHHCVUBQUJ`9mXv zn|HlnL~34iK6<}PRmVB;>VH~*ze$hExlJf-Z^|iyh=f13m!O;0A2wUAOu`Ds9|{D4b-Dp=3O2&T|vR& z$e4w9w>~4RnPrFfui#vf5(rsu)Xwowvw_42?fnF`ujYJl1JG zvuj+I#uyU0w0|27To?tC<#EX5Ab9=^8>T(+XmalPDptahVxCcCg%LmQ>EV^FNQNlM z(nYhFQLK`&dB1G&X2RdspxdA|%9PHKmIx~iVUqLS zr&l-ZLh}UTxX0V3oj@1^yf)+?I%ENw1VL1Vqj&|}wH?vL4mt)@1lFgXnLlan#v$aW zd$;E-Qg^-hXrf%e^%bynMhdg)HA5%GNc1hoyeJ#DiR)dmJy?$&?tsF++hB zNx(14EgN?v0#%}!;kpogBJ!CAoPu|hc-rjW@L{zjizQ6bB&Ts#OS^&pm)}rLKH+n~2Vh4Xyg=m-HkzFS-z36echvJ^2fB;H`w2Q&HEh zoEE)^?=CAIhgcHfSaoK5a%Q7#n-%uNn@2DD=mJEc+s_*R?$rLvw@F|eX4W2d2j&&l zE5COx{w%fJ31bbjZq{(&f|@b%2o%x8UMhkPuFT3R(wIfc zwLNM$SyuuDf`sYeFAc;w#}m^V37Zr(7|(Uu{#lpzt!IG;f8T5kl8{4;ta_3HQfvzR42|3W43p#P1xTY z{p%U$AS4%3xrX;4(agXQlKg)lyVwVz)Wz;G51;}7EdeS3QuGIs>L%^#P!iqX3pi56)I--l@h$@7!453N|czxO0g+_(328wG8`V^MDVBw(g3#0!8s_msa+4Eyy zhk(;AeBH0V#r>ZI1AgF7=?)|UA^%HQt7d?PZ$$U0@B4`-oDQA#KDP|xIl(yRB+84` zMmYF|EuI}S4s0-whs~v^%P6s`g$;uBWWPJrgP_V-fWdbOJi5pP_@)cUX)7`q3?F$k z`CDR7V5OxW#c|&MrJqz`6A^UhQ^%39Kzz~0)^g0aRph_!CqN(6?u%Qs1~U&B6#GF{6k@smw@poJBMWGtL!m~R@FYn|;; zdUq@>E?(FWyyr)etwqB(ct)`MEW%aQFH<%T-!yXbOm!f<$p8J9*rEs)t^9%O3*9UV z3GC1K(nN#>gRr=-4_*@yZ($9+j{fnUgXge-V|&-8|Cd>J-^f8zlvT`@z5!K~Zb+t* zdB`e zF}@T_^WJ{HYm3j;`+mT*{))CA4P{(FyBh0x(}hO)o!5FV=X{iOy&KyD;}#c^vS4!q*oqIZ`jc)1~e3;=_|tnZDI! z83&jq&2Y}*9*w}(>FNze@941P`x0b6_^@kKvOgc91|g8c6zShHdB=k7fF!BsV{VZT z{8?N3LPaC5J=pz}`eh3LMGPt!r0s%x)~fQUr^MkrY1|+N2=ToYZvAd^hD={3%KFIC zggL`VWGV{K!wz>0cv_vCt3ObRsL|t^r+zi7xY_vb9oQM75$~%_oyjuFe*6#VC z0O-WR`BW{-Xz8Vjfop9^N6kI4^t(}LluaLUaIm?ezWb&+ysmtn>4xDW*R>)SuM8Jv zZ!guSVF7oD%ZvxxxA|A_Ij;;c%T*@y^O;?w8So3*lIpjUZk)ylBGycmMpqP*v2GiC z!+39e3r8uEt|HxfrQc_gf$uU#r-;|V#Bg_MM%F_h6hiEW7-i z&vSW*G3xDz(h{-abq(M5Jr8e~3p(kRIo%z5bjdlFw*Qqmxn@v$XSKl;p0=I3p8?nk zH(uvwA{jl$LpoyZMW*42LjFnq@ZK`?HT3M3!60n`X(Gr-0ot6PM!c z*KmAR!CC0b3Sz-G#|ztC`I=Pj@P3_TVKufuIdQ23pkf2=n zLy%T}3EMa-R%(b$Q^AcW9u*woQkJ=2W1Sv!#;eyk&-)w8Y-&q`e7V^C3$w=`tkZ}> z*P;Q5XS6cjA4BL81tHvmImw=rQ7~wUZ5!jKBDDpDlrkoDTAqBmaAq;)1o3iQ*j&Crnd~7u zi=bcGk7h3xWzH8xgSQ{&4!|R`c=^b@{w$Nf=KeC{4bHi_?jiWS;st|l~rXrJq(OYg9CSNR{^DDOb z1eNuYgKxdg$*?#?!D#{>J_a8b)cNnk2QOX#m-&Oh$jFNbr%>fOM;pz^W{mSYh&QNQ zv%YzE4D>Q2;Tq`aJ+iN=H2%GtZF! z^1ce!VcuuYXMAI@h5}hA2$NSMIiqH=|KdW4aIiu`6lOxSg2WaBsfuMkkyyI_ZjA~i zb!~~ zT)0K3q#N|+9>2`-d^l;_W`%2@`i0kpxFK9hx1XNVeW?A@QFB_j#CyYP)Up23UOTax z5sF9LwubtRyZbjrL)@kYsaa{;Eu_&@@4-hg))8K+iWH`*HLf1|7t;qxuKgg6_PgLv!>7&KonZ&mX$z zc>nmFiNrXJg`P};SqoYe6hbHJD~{pm%XE1Mc5JyNo3w>Fzq7n570I5PZ3Y=3BORd* zQvTh44DX&@rW>H6smIv!&FTrjJMb!W390|^J^@D^E!9l6u(Gi5pQNL z9xW-I(#x}EA}Y5RIjr#x7B>7#7B!Tns=;8pZDu{@B)<05N_ zT4bS!#wdMU1(guJK-7jMI~a$ftH=5Th3S!@;&Rq!jl*d4C1~#?uu0;Nr-c36spQfH zyaw&GCn^E5X=q%{RJM_*H6)sM8jvrYw(F=h zY*FFNA~6(Ez4pkWOd7kM&u#Z>|2|bBPG4ms&{sqm-qKsi!Zr}>aA%)dcR3RGlYdok z^=j2eVAsIH>M$qCoXisNlh?xcSdz8MR9v@&!;JfYS9Nm@uerZ^U2qNaWi6GSE&db9#FmNSOe5`F*I-VKzfisI=8J=TqxtK!{fL$kb4RebR5Cx6y=1^Ishq{*#AHvLKs&RPUo(J zXnjHQo11l#4PuAqHQj?xh^pET8TY3-(zwA!PJ4smLy!MtxH{TE{d$+Mvjje3Iq7@B zm6e(Td(Uz8kWYXy#>KyV^XpJ`k!bL!^d6fZWXqH5t8b@fLy+^nT(_0H)Ltb4n{BwNVM0Dj%Ty9x}%wra9+DID= zRlSc`D0%%>QXT%QqzNo?tuJzN3TGRYt1RAVgTKmiifOm0YD#=Saavf@jZx*D7hm`1 zA~A6h)q*EnU)4x&Jo}`TS)h`I@WM{Qm05ttV0BmtgBgSru~r&qXmN;8req{DF%m_G z$Eae|S8M!zB`I3t=$^(v8VQ`gD>tE~BkNPj%NvTiw@rc|Cdl?G=ckv*K=26k=gi8qaf9W{wg6ab8$?W|GK%h-J9 zX;8T5GAgVH*mHM@tXK&_z_6Uy9*SO~)%NxxmcxsApT^EL0rPaHcIhl)8o!feIv ziQWYycX7KQ%C91JD+OKVN*<2{Htk>m#xTD|YVpeMh2~jGWq{gmgQwtf)4NlKFN9U; zgDk|SRO6i%q;%BiX6dL$Dot|HBP0BV%fMajdYBHkPR@8g-XOX6V)^LFe?Lg~;G(7hOV8#>F4Ch8o8o_LHt^YY|4g5669WjWmiwV-o+k_14tH z^<4=w_$1&cl+^0wCGru5vFdm;4GN|77zKVP>T@-WN(vB#Iy=jL3Ju!7PkA!N$%oiK zi)t?&MBTxW8>-G4f|NQNIW$pJhbHYnnydm_?{2FYrlm699g{*Y*DS{;u6*}^ z;6c2%uZu0Pm(d0=-)U!xH!)+z$?7GJAxQqs(!eij#60Sd{ZS^V)oU2 z#{OwwelKyFv+0-bsXhD)M?W2uSw@8;^2^+uC@P&hM}#F-V~PP%?jCFQZwWYuq@+vu zX0f_ij{KF5I>$pZ*M;8&Nn?+1yvcG-h$gbp&1b4t8oH-=S3p%o;K+M;i)Y1{+=f7n zKkT~Doo^u>?=Aa#r?jYTi`-K;HGxrBTujW!?Pd^|gY@1WxHygi@XbU8=>;2G%18Zs zOe;cN8nhK~+dr;xJPNeIINT%=h_kZ!Mr3jmtO@dIlny^%v*`V06>MD+`Bn_05*$#~ zi})ZehFNKH3oDJ)x@+4LTN8u1Xh9*(08p0J@-22=V-J57*7hMg!o)t2%F5qjCoe4( zcbXC*@?tczH}hEtN*oRg_#pYB1#g5F{H|sqRmL~u(w9t|;-rvF&$g6erg_o)`LIw;2y@MN61kX9^< z9A_Kpi}ibhyvrv?rD0mBVfuQbmlWxxH-?|DJLt=TMo{))tn5TrI;!)nRMY2i17bsQ z%?4tMs8YEf*d=L1bKWUYSBjGe%?w%N!Alj6AQ-vxG)vil-zN!?t(}m|cdh!v!!Rj} z)7_oii)?}5-O-HMi$2lwjcXCQ|Aq+j_YG&^ukX_C^_N(P=)eRq_B)JDkW4HmN;+U7 z{8uB$bztnP<5LkPcF3OgXzTD0RH4MF)?jM;)%C?IAxgoIp)qr4>o|S_;OqW1f!U6W zy>r}22!L=V#kfix&^aaYNn60p+an3MiXirm>#irYh<>Yj#hg#}1sTA5w-CPDU$@DbAJxsh>+AX-HW?CWC8(O4N@>Ol zYdN0YNqqhD&Tze%L?A~DoEi3IDmla8{(;FLpiPmSM!FU8RzvSa(bdfFXQ|9~c0C24 z=AZsM$}{HkG3=Mp6qUwDmIbz{pT8&gi1WBr=RcU<#L)Tc>8JE-!yudf_0_BQ8(T`j z^I9;?kS9YMih8F)(V^?R_R0~*MhR0ul}sHeJRI-2XBMG^6=OAOB1xY(;?gkc_!db^ zG_tnG68b`1D-WGKESBwo6FJuc{^v;f7uwwASrJCe^}TK{bneWqa@pv1`G|E@%j8kG zOz zu9DTlOmVF8RGhTH`ylgp2@pBah)uGiAG%+f-X|NjEe$1B(zj>+jAxM!K0hs-J87Le z>AK7_`rjjPevpQBR0m=RNFTI2qi@wBWt0qMfB$4a`)fYnliw zOmbn&DUnByh)^*~=C971q%Zn3_Qu~A*gE&O==nA4Q|9zZr$ZYHD1koZ=T`bo^H7=aQ?*?qN3bY(_2A`OY|NjHvJo5LOCeQ8uBoq7Fqk7eu zLk?9A&=v84%9XtL%}im5S3J}d6o*Eed64SQ;l~ z$-H_|+k5GhK$(ybdqtoUnwwuuZn&0&J{zJo{+IzXqpw8aSU)mmWo?@=S4&Xs$Ape% zf(qa7w_K(Z&Js+EzE`qJyS)N524n3R`!=0O+t#}u2Ka>+^GKMzCc!EEe7XlTD4_52 ze@@e~+8>iY_Aq#mH_c!vY$r&Y1QP?SkZI*%C~+7hcL$S|$h(UA5;ZnF&7%1Rznost zaRVn)^NdoJXdbUs`cJ3;4EUsK)ilRaFxuF6bi^qVq~y4lQ0X7+dmGYTmptTuO_3Dm zkQ!Y3{RQu{Qo60DzqF~zO-5ot#^eqpUk|P;7eX#{fX3o3#?|f-zD94^&iP8SsAppM z=`J00aiY3#5iI%8pK>Q;6RGk2{-hYHLK`I$wnx9uN8jvb2rI$Oihh4BJ-HJ>vb|;BJ{*Sv~I_irSjtE zQxoG)MqQ@;k!oEqiv^GoV4tY_gM_NFS1~L52>x99)Xm*DbC1UofFl)|D3c9$W?k^BBrGBwGb&GK@JU?sX zLqvT(o#$uOEJ;d}qa&-EC!LZTEoTd_Kr6QqaL_zgAx{egp!4Z>JUGI~H83R8uK(R%!3)qkly6!BZgUbVBbZL+* z-AIb+uR7Ker_CZ(s8jE_K^VH2uZkVK=_8gd-NE~(LFN0bRIgRNe9llxADvV`?x06w zn~OfRdBs;*;2^xp6gFlk4OGY?26mwF2X1e{=hss%!wZ#Nam^-F(ub<&<}Bacvlh2N ziCc{F|M+3}@fGovQDJ`l_qL1C4hodE3D59*>ph##FtYA-HNBq_bHmWcM)Q5bh97^T z;w{zbhV0t&Vi>ZE$Ke~8u_zM`w%Jzs+J5!bug1pm{Mp9h1yb)W8NZYh87oDTbOm^A z%kBXbQOoC(6O3lSj}$mNPmwR6vy(S!LufjikU$I_be8=`IUVE`^_i?8fuN%u@+i`{=^2+j2`HRf!FoSj4we|>avZ}M&sO9lm=!=2^y}&_{ z_|sVPeV?_V2FSN$-zn$F0KGe}_CjWBTh#Xx(JuOlV)_0Q2>Vr(a`Z ziS8->yKsgiT6mGnQ|4cf-GB5yEx?I>k9!;|-jygpkSQ^~67~_yR#tlDn#MtJnV2U9 zsWWhju*PrTB>$ckRuUj@kJ3!N-o3q?nAtw+Mr7ARjc-2~>FNtb2)-}Is_|s5bflL{ z*XA%K(l+gb4bootF7{Y;1bh4blp4BnTVuhvH#p;o0OC|SKK7OCilA5lmWEP|5N{Bw zt^rykQSUa=ILF(3hL)}76M3iJ_p){jXp_pSX(jTbrScd1XQf*(Yc3u)X&MdpXq3i9 zjS!}2C`>k?YZ_WUzo}?0TQv>7ImNnfJ(ftc8>mhVjDuNV2}J|aezNF&Wg^#@kyukJ_E66p7?r#F7v zsF`z4xsQ)A7x_yJPl`0En8ui}JHpx2_T}9Ksq6(Gu^+25`X6eaBN^c^&f0tMBKyVS z=`KdLAx&Hne8rwW*TioHh~_=8v^vk3k?Hqt^}iF&lY_GJ9m!;=Eg3O&D?sx@v%|4PD%G_T!FNZ@0f$) z)et!{c0Bn%kUjdlK_hl~_43x0dn(4qI@YuMtV!uzP?TNQ$aPvf)H$=zansDLsS18L zqPU2RXqCF7T>WFhGiNE9>T&zM9nivs?a6i~*7rwO_eWb?7Pm{ahUOmQUZ?9pg991f zZZUJdv{u`~XzmYCBQ@iayT3&(8p{YnmW@!pbkkW7OL!+4--)B%VRgHaftQ$8r}mOq zzVLk2*VguyfrOl@xcU1n{qH?`iR_zw zA8A`U6m${xrOMg_anC;+@%-r^46ZkKZ9j;7G(F{?bM*G*A znbWxY_y$3+0g>}0CrsYcB8G$Fb|z7LYF9KBrjFn!C_qMR99It&koq)yTd)gOOkaZJ zfx=D*Jf=j>Sr*DPH;k^z{mw~g9SWY8NA@`z-6di~h>IdR)B#md>d4dRGQanA zq{XGsD2s@kC>CbJn+lX%#@8o|KN<-Kq`tb*2t%(YStB}i9Tl+$S-9k$LeoveTbFbc zO~MUuzSR)4V zWz@bN(g-e|uFgHs*5WxxriD&eK;Meem{c`5LnV@xd+%tcAym`wqEN6VtyqgOj&7(F zrxbk{a+fM8HOI(l{&IMx-%0XWMI%fMVaXnc?I}rM&1d(JZ-?&Q7=|Q$;oMq5;EZCc zcdXwTL4_ejxEyK0fI>PpcN~$D9wtTuh!j+iz$$i$wm%qPQjn%*l{Z zo6+{cyXH=dO8;ql;T(pDt1+)k>0v8CcJK|S^a%z`6#fxb7;}*Ac@)T98^-s3^UpaQ z7~23QUl=6MyrSOCobk(uc3%Zf%pb_m4V)+LDtc8tWS=f$N|^SiF%9EIG|$Mfa2|C{oPknh(6xN#%oz#O_l`N>^sv&Fca5qMPZAhn6y%ljsp z2~x2%uVAs&lB+3{ehcUqD0WZBop2+|7$OT5ec6|uDNXJoDEzoG)C^SSFDYp?Y5l@G z@zxD-;q8ZIYmrS~Se;ubkm>A5{X9Sa`I~)BxF`Ghrfg#hCs+z#pM{GLXY{l`e}7XTNTvnHI770l3SWFuD#kKI#~w~D~Y>tgvyKBt3KiuY??w4 zdx$@nKkB5r^U&R-`=GXBSYE(B%H| zEc1pQjdEM!op<8tgmc8zFRJX#GC(OLjLCR4Z;pkUcg~x%Rf}bjP2nUfJ{|vgSb^7N zpB-KpS!t=Y(86kkMU_ku{H9kbM(s;&TT8pAqnBqP@nYse2O+uUe%gBrR2P=pz0^%x zS{yKnRv4DqoFuLeYfnkqn7mwPf_^d(azIV8XYa}2K_DsHrwT({c$zBfe9iwKdv6&Q zWxKWwF9qomkPcAI` z06A{DmiIr9*QAgGz#u@4Hxum6Lj==WT_lw*zgX=g^8%GWsw$AV!#)J;Vga~5UGVQZ zBOo9FJO~gFFmpJ7<289m1t?Q&uH5Z75}98{Y%zNm1O=-7YV{?a<1RiNaWA8cW|e_wosa*^ZCs%~j$XaLdq2RGG4cNhOwvsJUuzvG2y&Rx3Y(Kq zF?J9%9zGPZ`|d{l-3=EgoT9#y0Gg@!m1L2Mgjnt`quag~zr7nnZbjTaYgs3m}e0HqUq`BLq+hArR{%eq-Rb{`9Z%pb!UT& zAXE{|jr;u)%)X0?MrUnCpbh=s04*2?bA`Bzlx%v}A^89%PN}ui4io{uRmx$J19pj>_#bd$V`+{8fh0f={%8UuPFcXvkms*<4v(o8yV@>NJl^ZSEOzC8MdZs|R@;Rn;R%d%j30IJ}z0 zjGL!TQh4XYt{(mcqj@g4d+yk$sMQv1@rq{@kQiou)_c|C{P8^s+gn?k$B;bC>I9$Kn*Dh&FTOpO3 zy%RQ#0#t$Zah*imc0S5AC?GV_MYZq|(FEUQ;zUn%wX7w=IDT9GDRXiI9FBOGiD7TQ ztKT~r83qH<=52eR2}_Og(9-ki`E;5CkhLwyx|*B(Z$%9hTcs3GhcXOu-SI?K5a6EH z*|W_1>ABPRSnPepSKx30@(zHB!KzNAtj-egN(`UK$-AL-dB*ETAbe`Wfxl;ovLE!8 z1z!&4Ch)d4e8Pqlx=fb33x4EBQs2bofW&P(EKQy#xTEekLbOtJXVUR*i1j#I4nSj# zQ}C7A1FXmRi0G?)J{-P_@PYsJRL{6x!dREC`4rG034vqs7`~Bfx8dl{!a~W5M#GUo zTeuaX%v|ixpF7i(CS}!@J2I363t`);bKV*{ z`NT5S0J{U|y<8waj`>=W37gvM?|2_S$E(S3tqp>0X2hZBji8UxOSzfk6g9Oc`~jrx z%+!nPY%#-C5%Wtip zS4SkEXl*ozcUqF-qRl$aYz5E%|X zJWVoAl-s^Vlqq+PCXS;WZs1`EG^RkF3dHpji-}2qlBR>3PN{HmUlLv}cH(9LMi$J{ z^h^Uv>zSboq2B|zCPTErvJQvce|S_afj$hSDn$ss{v>E|axGG5+WtfOc=D4^TG5)h zNEz;=vvI}^}yuvHv2P_Qn+M_%EMHpQ5Z#?iS!5&u)B0?GZVB} z&6T3b9@$dcnrZ(vvpRkUY*pfqhRj77h6lRdwk3rb(1z!LUFzK#-n_XegmV~MI>20< zj~I9A`LlYVmQK$Mx@NE({;Wr3afR;%j=VdcyP?7L8(l3LY5hCz1Q-Kv-#)Eyu@Fck zfC|S83?*Rx@B65rT5o&|+KDZ6N&MP?uqBXwJcY=lJ_m9@fWm!Tt?C4wGHsT;pW3Cy zdJlxUhs8MknUs;uh6Sqhob%-?hrU+_cb;C4N>HvT6%E)9ds0Rwn-g+`lYB@rUeRjh zP!gCR;ZNE5%mT>#`Y3sZf){Z_Rj1_jm&8XQ4}~Ws!L<}|FTffbUEZSN@rNEos`W{> z`wM!D%H2HRxjH*&^M!}w8)o*GCv)FbHv8%%N72+V7I)1vp=9c{FK?IzdHkv8T#B42 zR`$*V-g_-ePO&AMZs!1?FcUQWV#6jVi;LKk&8h2XgT56#yQ0jbZgGQJ)#0nZYAI*v z>isC}M!8g`bA7dk22Wnr=~&wVpnP&w<2lMq7^hhHqjf`p!-vFlmwwIqx2TbtC|f0+ zyQn^%zSDMSxSHrRw*b)9@5#&PP-L-?BR6`!kG^$bua1>kDWBf>wmQii4Vd*Ws%WPK?zi$${8{gl#~%hcfl7gV8Y`>92k<1H(>Bo? z10LFA^qyFOQ!vO7`sdrXa6kzkh@({pfCMqjA~p$7nBJ;Ct_>n*Bf@oq-a>}WipAz= zPHgf3dU2Oo;%Gyxpb&pO>#AbDf5(YJWdJ_A8bc3$4k-ZKvo67=v;9F9j@XZw~q;DNc|4Z)*bu~@_2n03H^7e{nh^+WxmSu=knUU z=(GgDhUrh8VKo3u0ls*)&CF!lLrPFK-3!fqJjBY$?vD?450FVQxZ!${iX6&x=L7&T z;&}Fg8qwzGRa)=E@7**g>XgAfPUm4$Gm^RM<5qMs+QguByr zUsR;=jUO376Qc`ck2FWJi^M^R0!&=09wDHG3!jv9tH%OgA@mc5uYIlm8<&FbnS! zb_zTl-0R?%Z;li}0fq7{-DrDew0-l729lJ@xsLZbDy+oqoMInuL3ud_1XFJ*Xt9I} z&?I8DJO9YH6SNq7OfR(-wJzVCgvv~x|A|rwpOwdd!}iOvZ7iM@A1F|eVRMA5|V_NX{Qxj5BCReaR-BaWPrp z1jw@EnpvWy=!S#i7~{?UkV#F^K4MCY+yxZ`eS<%a&d$NbJ#;+0p!$J3@bmU_A5jJ; z_iM_@O{S1Ey^Uj$(EPiLqp|kJVM$*SEL7s&imyJrkTmtcn|`h?$kz+f+jc*r*QMr< z=FI^=8@f)--8_@ z`%k|8;M?+T9KbLDDH?LuIsyHMH2bmm$FP5?f3kAt`M^s0yTiVI1Tc1jS-U&mBxn3Z z8G#Hl7jtANo5cpM6q+F=RtM8D)T}Qm38Ja_8Tdhj67!6CVLDdO4_c!0Fia11=;!0^ ze*9m;@qbEjoR{7sCf+BIC?K0qQQ8|vOQ|4Dqr{K26lEeYPGJF(y321sIUbQl4`$}g z!F80+=btu$6ES`}-`+&flpt|ZH+I@quoNuO+&(^Rd9!3~! zk*FjE^pX<0RDstN$lk+q1``|@3P9$jbAx}jylrb2w1ZIH5lwNWDbu0{omsuhiZ_=9 zA*%w;OctoM1L-Otm;YlmM{By?z^J-)|AFl!cW(m5l#VhCeS=nH12{1dZ%{CwZ#hJV zdWQJZBTwt1h{K(djq67xGP18&2%J6j5JO)&-?mX#`)51_;Re_a>>s?xV0Tv%C_e#2 z?x5#si8Ad>IbWeg)(?Np82X1A`oF+pUZ&RWJlI|!qNYxgTK3$reeJaf@F>x}O_Uox=q@RKBdD=Nu#X zpFGy8#^B>LvIIe08eX(By**p@ly=&-ss|&OxcHZrV0SnUI0bhfG+xpZAwaJ`O$@sf z%=fy7_kSJZ)h{D#ojBBP)S_BIQ!+>#fCQjsqREPEkk+i{3(SH#%>rQkfRt|0hXi>D z3`{}WM}LpP5Wu@ZG7059wTXa@VaV>iDks1i!mC_0B0vSZGN3EYxQUTi`eN>3` z#DUfT%op$>#7QGl^J(v-@v4AM!j+G)$;~5Pf#bHf5W4_noycHXL}z3gs9}xS!uja< zDUY8i<*lD3CuNhy9r@yYk8a2I6mPfqnRk-J7fN=J$v z<{RYbCNbX}wvy7-3ISOpBR5mZf3GEW>jxug{^G@h@S&R;_!-bX zImr8;C8z1N`P1|1bqSt#3D}N|>!({lLly-|YEGNGBxrc!O9o}UnntmkJ|&jsIZ&>3u|6fmI2ti z(E_ub9IF+#^JFCt(P&)FkwW#z9Bj~d1US@A8q-uvB=Q?axBvku)ng5-Z@ks$>um+- zwd>mN&1G}v!a;+{rbP%y;MPWeNmIK|GI`08xS0bu zsP8#YYkO?|vUV!=(B)$DZ@dMfv-Pt-u5rK%?jTtDBXCLwQCZqZV(?QCK@jzQb+nNg zoz-J<)eYn<{)CPHfcIIfrq{Z*pcSQ>we+VK|5{jvZ(h${U0t;UZlUVT>6Ux5-v0zt zFRz`);l5)fqkyXex_s)2KA5qCg5wQH=k4GSt;3xNs>Y5}%;htTWWoGUUU0nRj;sM5 z@E1de9Q0NI1{D>;{}&g#1-s4(!Gc{R=(` zU`PGe#bQh#hXBAk5j`NIq;>&G;v4?j(Gm&ZmO5Gj`5=5}lXozRMEk$uHGx$Y@V6|c z1AX8{R=|gzfxQKe&SD}7;q~8*F!H%py;`7mxLRPBiuFeuQU4RQgGM3aMvtS5DnS*# zL!j)B=htTPQ)k}7{~sn3Xme36fbqa82VD41?~J~!H+sU+WZ zA6~Tn?XCklTkir~)H?khH*=!FtRc=r5J~PV{CfOd>><)$ltH7#RWyq4us!E{N17?9 zs#cFe1X{oRUK6|>KzdT;!9b&y41Yqsupmx)qx6ujEiP!k= z*f%qATYxq$TtI?e!`Ty*5hMmR5FuZX5rQ7Q(PAOcFDGOU`VCNq-T_rrg!+G@#h_bI z{ouDP;C+e%-LAO%GF128jp^6(X@gz?@u*J;>v{sPhw&nN*T16l%K#y?Tg{v}69YIJ zN|$62Tr#h^=aoqe^QpAORB!P`Fi?%yYU)uVJ1-1SL@AJ>;F9x&Z=`eO`QO| zChB%uSsfH{fLc|jZFIYR3`o5I_&~LPM|hohY2Uo!nUG!Tfuy7)0vwSjlpP2_o1|n@ zm%yovxl0(EWNgJ|SK??_1_T@U-|BMb+b(jZ23w;Y)1w#IFu}&!J z$-661c}28ygE9^dNj*KQ69F=-jX1wtpE=;`K*u%+BUDt75ffF;XTWfUWrti)HY9%q zzypA56ZOP4QIBp7c%JV2Tw!KTFSdR5My?M=+?y{qum79=yu5z8Fy3$Zc8@ybZsOmn z>cE@9-XR)H$+6OEoibrC(G=pOhl%R;d^dkmxQa`HM%M1i@EfZR`@2?TZx>dH6h2e^ zGE{%8l{cKMatyX9&_RaH(n#F^;vdtBoP4!mB0QksUjV#-9&2?9GlIfy$wvWXrP!83 z7N}T0fh==%s0V4RtEfiFg^MSU4OmsIkmi5@rI{jwBfRDl8CX$Ry1fF}t&R(K(*Z}p_udc7L z6?AfT3PY)=I5~So7r(&*#L`NRYuEZ|ztf0q-`z`xi(ews7xm5O5~rxkb&bCnn4mOu zP{z~4_cS7ZE>OJsVWyOC@J*-S)fN-Tc_KOqbcF-0LEiyFP|(R!7pun^d|BS}n_uA- zm|T^tA>E39zR{+JInn`b7f6x~1Bv`s>krW^#*6K9p_p9~;8q<@4l*4OasgJJxGx~Z z0@U^69N@=-X8>XdP^|))E-*;%?7PzWVmP1k_&G`$@LjJQKf0C0cokm~22=P^T8_(a zH=SQm-{`;phmQdIk{puu1arA&3fzx9FpKLRZr7COXr}eU#8OKb8Y1otoCH8~pjTs< zpZ^Oklv2>}P{e<@0K>s{Vq~89mwR%^Kioi|A9eJtFs+XOJECaK_2+usQ-f3T?n>6j zYMP7~mOua)75D?kpVThbx)*UZ08`zl#{GSo)<-2Zxk)nPeZJ}b^yFYz%IAN#LEIEG zZh{t5;R2Hwuylb2`pCN|z#uPQ>LW?D_ySJ$wW8?w_$OXmz;Nykv?nJ3a8zTHz5vI= z$w2e59R_B=Id5!S$hO9Lttp?n1Sl$CzPHc4NP_}lT`NAh^ExbrPdy*MD`PQ(Ef;J{ zH;sLWtP2FtD=NEQY;HQ2y3V>j-DAGqWiBTBr@V60&2|0q!?J&3*RSHq<}^K!SAk(` z*zH<&6lDPL0I0Wvrpna`fN?w{`9ezq-pH9%r}*BfbxJX{o>qb zdH+%V@HeX#vU?mk1ksD210N9bZHG@!-&LHodT%!#&t+Y$W;N}L`0tDSH<)|9n#HA8 zO$sWY08YIL_~$}5-C_z3PF-XwSXpO09P_>x2Phezn{kuV8ZL`!a)+aSCmC1(i*Oy zFwXkYnzwZQgmRVvn+5z1>j^*>Gog9dW6> z>c108SUM;!{NP34%SNS|$i%)b$0+D}F3pwKpYCp7ZFy(;92Oh-9s^m}qaOd0kpCV& zMF$Ql#Upg}=v&p*?jC0cV!*|bs2#{CcY=Er^51l$&bNL@5}!50VDArv?t4hDcfibF z4v{MP-ya>lqK4@QJU-L4OeCTduQ zJ=oG8$pXp)ZTJyV(Vt|E34hS_HC)P%?z3e|}|gCMGu{W&48cbKF_u%YZLr&q7s&S@B*f zTpIrSo%H{H=jjJ9QcuS}-RF38=$(Kq{on6%d(_@`^V;d(uWkPOr#!v+DZce__c=b2 z&Bv4C2fTVUQ_6}5?)79rCg98GKh<2i91s2vugNP02i<%O@xMP*?mxFufOT^#Pv89W z3IFrbKGy%?jUj--Of@b74#MSJhT=(J?+UF>sb9vj8y`h zJB*Adflw$lY6wq1&^~jp?@1*GYZ%rZr0p2ugX}nlD9Neca7(+Z=^$iH|kM)?zReT85z#CtzsI^C(M}) z#5&u1=%L9xdn;|XvznXxkD>aD5yx^3?qZ8B)G|$Hqx@GJqz3c6S99w=o9ERh6f?fT zSsoaU8E^j&ylB0JV@dx=cY9Tj%`LiZ=oAnYF~TI^PEOT1Q_ToF8sPS=7}KyN+L?)w zfYc{dIKOaij4rWoR$N?t<*qy^Y0QZ;IoalNa__Zu2u>!C-u?YsdX=G704Dge^J0o+ z;=35Q#5X-Zt3;gEw!2R312RLQ4d~{!d*e|WWxjTj8MxkiC9z{L&tcW{CV$$8H~MzY z00K^=Z+SEolW1*K6CGrh_B>m4w%(&uIkuqL>FT1t%;!|m2*{fHVCbbzt^@zY@%O|p zP*oQl{;7WIG1W6RrDFnvrR1jBFranjdc$%{xMOrPh;A;1M9873T&=uR1?^Xoc+R&l z{c`vp%*xtFGaE$)10!SDD}ElV#B==O_DBjYEa9$4^on;Zg+myORx1Qw>>6Mp{_H{+ zQLmho61uCxuwpm}b|gbus()eLiqp^)WD@_L{BnhXiiU> z6e(-oR`d*sTKd+SdL~!-nr7sgv`&0mxEf(Rf@^u&d8I#^oVA*mLtdU()_TGh+E$sU zRp081(K#Nw_D0kjWKKTzu$Ndo-TW-CN9%xovs8u5oa^&uKiP{|J`LQSS}5K|V`BWb zANp;ey)W9bE=>G(mz#e}xcBd4jQkQ%Ms=!m!8-6LObSi#hti4U;0W{7vBco*)np4o z6#tIC%e8x|uh0(?bZN{`O77aK)dWMS4H-6$JPEU@-xlBZ)Ak>FA%lNN>hix7W-P(8 zi#f%Gpz>z=0 zo-reTrXf5_(I0=Yl7v0;KXNC8+V-@#GujRV6*MAcSrjFhEN}MZQ;jDxvkJh1+mK^PRk8dKoWOOM{C0x`L#$x%Y{(vGa&#-rm&&)U5*i64tFjANC zk!>U)TO;<25S}C<>QzM)RrEMpl>Y4*wn(2iR@QQ2s3JSQ?a&wk7Rkn-oBwh)RmTe# zF@*0^y!tP>X~+d}QRv~~(=;x#y@9#0E`mmZJo0U&`@q|mm z@t$(iNeY+G?i1~ky~&u9%b8;msXfWKfH5-UmC7j5@zi`FT-0E5ehz~i6~DA#)! ztD~ndz7l3;oT@Dg#w#CWtIM%W;b!l%A~Q2RoZwPnX)VnOjtr`zp?tKs&likms6DbB z{)R>_BIk#iIQRTm7YqtTJS36H8ECJ7K{Q(7uU!o~D;b6a&!aZ?C#CiQwSe1iDoX*J zOY;&IF8nDx#DR#ko_q1qU3-o#d*9wdm1x|a1n2cU)2*yirhbi;$zz9n>hk5B-eGj&D+nP~oerAbSD&rLE&o zXi`;ys>XttIRkL5P#ArAl}2hjOV|M^ba!QVnMk@yDW9kQCF)txmLEkWc-Lr z8*kWAPV|eyoyyc8qNDn;S=IyRRm;1L&>ZchNH2q6G!tg-J!?2H&O_|-al16HTW*kA zBmD|QiSQ(u5yCtASTiUmw6LyywvF9C^>IWAzD?DA(fTgWL^2#h z3MyZRQD5cxa?d`&uvB{^#*4LOHm5P{c8-HAf*^Gopr4xggfO$zY%^p`m$q&K`o`cK8F=Bi&^zu%8^-eGHu8>wg=Tny-(v)!7R z;IN!Jq&bq2Gye;TTJ5BYNa*2nqJ7RoSg1ftd+;Piz&TVO3#I17$T%aklR?t>C(o$k zYpe(%nbQmMnwosM6`JQweP7b&F*?UZCby3CcQ62;5*L&tX|t%a=SJ5AS}uciUin+piq=` z@Ox6X+wCnj;NPa1*6an211E-JPg^wO#&HoFbo4{j7GA!>^A+4GvGlDHu9Y#W#6pp5 zIKVmvKYN9GxYQJ^UCOQ1pXCky<%}U0Jzppyk*SC9yNL2e@^4vT)!}ZmB2vphYjwXd!_SY$GeZ?&FiY(?@<#l72iLD1n zv{ZW#dbmWT&NlKkTLOXurLz`%@GvQ;EjJQUIq=|!$kw1$?Tu)3@G_l;R@#Ff9P#f5 zs$axgjS{YgjFn#TX@|L#G+p6Y4};^`|V9 zF+&3}s(=;K3tJHreu!GQ;#e$`YUq%<+^WA=*!qP2nVivgr{6YGcSdJnr9!#ClyPxv zN!(H;>#d7f)V{>zMy3>^5Q7*OtMBaGuTPh7N!-_)Odo^(t~exyt7e&a*@vJvUGyh1 zoH2Vad;Qwq5iyy$FUW5rx_%Pp40IkV-JW?6CK=FjA5XAt;JL=+kL6{nzP{Wa5?0~i z*=sAQ0%@3n$6yyp8232hMCUuJy0~O6toX^ST8lweM{*% z;kvXos~OUwyX-ugQ7rS8k!W2_hnJ^t8D|t($ZUk$BF=G^Io#0S`f07c>W(CAMS|v? z?@VVUk*k5M`oxdP{az$x9>HybN)X!#h*sNT%~!3bXSPobd0a zdgAa!V_ml3yc~MA51UocH3c%TXm?jDYgd(&*?l(dJY7a=>Nn31t1>=lHZ`$wK7aSC zFzS=QV_khbPsi$>vz#8&YD6AdRwa|*+tBAlr~Yr$vl4cRp=~U9P_W~fPnmzlRVw7H1wW(H0`$un?CKeJlR6}Mt4_)VI}c7T5u&}#q$Z^-^S9+C_sxpE07GyF8-E5 z5^MqLS8!{Q_H1Q@Lvs$t{pfbKgOLnL5EBL9%^beKd}Ix`WZ@&|9;#Vw8@W|t_(dJJ zN!)Ry%-gXQ(aJ|15*&ZYtQppDGH?*WuiRbVeDkN%S8yhXV zw{hKHYJ>4qp}>~Npn6vjIApzvB!(*4T#;oKn2j?s$g|+NLRHiHM2NxWfHu;3Yn;Lv zY+^bo4BwnTzhypXCO{`?$Pks!e7vj<68V$pSD#M{v)!3&)-J9b7g!k9`E-Zc_}`4B zwv{`$oGFEG+jx}rRZtkjH3SvveMakssI2y?yTM$2Nl>pio>0q3cC_7pv?nBY`4Mv1 z?ZP~R3VRsB_ahXFCGT+8n=L!<)kopj@3ZuF3^J|oALIH$$UG(JXqTj%dAI3JVpUb~ z>B$WGsz5)8zVvs@cIp1`F^}{93i+~1=G)~z!oyD{(mu$)jq zP@SC53}5v-Pvqa(+#N>#7|Q(O?`fTEZg_V z9{sqa*so9AQ7(H1Dy3)^$69pmlX`?kR`>odPx?Ait#;Fr5lTtvmdkv4QaH6VM{ zDqNhNC(B{bzR!$~)5-QOHeF_M{BtG~zH|CNlf<5-QFi03PHiJxs2ZnBwj{TLsRpko zE@~cVW~P|PWsOt}I9NN}Uz3Rri@Gw`M@z2+cQnbgH$j8<@nw38p z@^vBX*U+=BGv_3zTc|$c%&4RCJ><_9w?jrEh}uJ!Xv;u>ZwHEQaZj#`Jh9P@aK*gJ0@ zF_AJu+Y=O%YGD{QYPSOYbi-sAJ}`^inr7VELeI?wT6&z!(i-|NYJxxJhCT-nYBzZI zgRB96@(b6^Uu$Tu^#m`DYQw2lr2C^R15W8|z(;IssL(p{8_%C8oB%}>r^ttVEo*6OZzmlA6$tM;S4I7GF564Rhk_z?E!&% zaUCqtAad(GF1hqf7S1%^8?T<89icXwKMg@TUmr1oEy&Si8M<5z9~buw$Iz$6sM=;G zgIHMp?^w79#g&h)^nud6jYK>qB$TW(cc&sbs+TJo>iR?M3LA~BAi|Ov9@Mn+kEx?d zosiR9TKy3-VBe=z17BJeb3WnwUJLSbstm0Nt#iKU;=xr0>ER`XXK4a1c=|yQczM)A z?9yk|2ehQ7i3nQuQQVSfio_5W`6SN0vHJ&6<4c3la$9!}e3DQqJo`KIx9QtMTfZS+ z(Z0&RMQGmn6_tzH9$Zg6@VRH)nAV z*UeV!>JoqW^PW~BwIxftP};f)t*Wpd$;J35YqWJSmNBCv6xj+_h9a%&{M0Fd!-+cO zoaeMg@w@hxhtYv-7qZf0L={X7!Q6WXg{SWi`5YT3s!5!2n@8s=4L8#)6)67HX%1r7 zi_?sGxbd*CN%SPDpmKp_S4xJHDqj- z*xV-e0etc8C1KC&UHy2`z0lhsf_pD~LXM|B)7)o#;*rgV!rKi;;>X8Zj$pFhoD;1X z_4=8Hv-770{h83qlf8pI0O>(*AiWv&h}>z{N&CTh7W|KPkQQLaw zXpRuRo!!QNp@f{K#u?yz2fJ9*NEg1yaaLbs1s>GhpFdEUGPpxJbi2j_E;H-(F*?vD z^{aHKg9J@@fWvwXJlvsptP9#S%t8#q(fq3#Z{UYmT*o6<&AqXOF|Q<%Qsza(Q>jI% z%O>xO?&WQl%X$9!*NA=PXDBu&A0KUmi{ShK8wull_oFb$O2`+E2Sbqi$YF2WKBiH;$Iz{c#w1dzN$u1<$a_@Oxf}dBaz?XC&x0qI7|FM zziQo;*bWxW6l8!NxkyG!Wp`?+3FB3ffJ0pbj6;%!XZ`*g?Zy{*OmLD*b}0??NaVAu z`*?T(U+`POtf*66x`XrK_-*uC#;=kEt7HI_Xll-gwC3njb0n{6*j-a>I3LyX*+sjb zwpq?BCQutL1X(gWEiZ9zZKLOo4(Y+T8G|U!CW*&odCBe{G;_FsBhH#UBnHD_wPbPH zG}&t)A!<~7B|lz#yg4a#`Ebmrd{&%IVS@sP2Y_QiObT^U`pI3-)&J7Hw;(I0{y7qd zLarS@e)nTuCx32hXu_hoTsw;mS5FBT%ew zzNLiF7p>}@cqLmFS#d}bU243_cpKFr^m9Dc{+wRDK3{J3&DU7f4GGo{G70jm*)j=o zC6VVPD!~kTMzggc)vF1Q!94|SX%t(gJ={3rnrMzb6bjEVzOM5;X=;{QSeJs?PPX<> z*{U|Ovs6xR^Ah-ir!4N*H_C;3bXXi{99saEaHIYBMf%|_v)G*F6JE?a1q>(9pTAgr2EJSp2!S_tbcOd!vMVt?y09we55| z{|JsuU;N#vs9)<5R$qNwJ^oW2c>n%RmeQI( z`J0Bzo#ju@nG_c8$}=fY#>uhBCJyvH`3=d_UOFg>Gtn%E(mL&42wSQ!n44F&tj*uH z;WCQ`^?x6ipoGOoL#$sQrr{5=i#WYB`^PDIp!Lv19# z&THM5%`Xb~LQSfT2l{AU)3zJ-djRY~OG(avO5Q+=TE2vbSgfhGZIfPmtllrheddfv zgvV$$MWWhccTgs-Wrp;96-cm$)>?e{P8f+ks`^V!HT$XZ9*EYc<&bC{%JsoSmEynQ z`yV>m`x^Py``K1=u4u`+7$tV~cMq4)s+6|Bp_59H*THRQaZf{~M9TO5o~i84 zq@ydH0cju@)Mqw~XCzve>47s@jYd1K*~@E#aaFhq>yw=p=De$HmL^D|7fsVfZF%L8 zrh*$)KSV9etxpT-VyKcKk*kUK8jIvLKSPwMQXr9H@QPnYt50H(>7V|o9t1HUQd09z zJ&s5#B9=Xqmu$U>fjv_7IA2=AcetHts(5N?j-GJc=9fv~;7#LNCVMi>$=zt?xjXpM zpYL|vQ_3Qh!oE1hKB*th&i*T^hA0)*LW|WxL3VTw`jx**MyLp@C z^|;#f9%w5j@5g906-mLlv=bx?17^4&;Sd8#WDl4{@@#ZWoL49{K+pdPGY`&9&j}5E5Ce%&hzo@xe^q|= zxE2SC5$s6utSKNSko`L*=vN3Y%%F_f9nP)PQ^bK$rtnpwvHQ>aiw}8?RBf z&aT$pO#vJI4;SDgd^uZ(sczFWnN4~Ylmo24@NePTLXvE=-k2V5a3;B_R>F=1C-p2v z>uURJH>)lVn9p7Bvyc& za=L(!z*hKjQ1-#0PltH=sL9Ukx(Lhm!{*6WmA!b+57JK%2gV|Yh3hrfjb}oZGOIkg z5HGUT!P7jiFx zOT(QSZS3Kg^QynG5QLZlzfk*LMcRQ=+%2~$L?l=5*ET$Y2G`IGlJcQjZckgesqpI~ zYEEyv3AFUF*POPMRI;duw}hXK{kpAE_dY&qCqg#hT}n;03jf#_k%_M&`gv0NERim@ z2pjR3OdIl(r_r00@Vfq^Q89Qmyw-K@_A(slY~q#Ke7)Y>C3U_eHOG9}ew}f>p?aY% zJeu?^oCYyOb3l;Tb6e8FdWc_YM4i~^hn#3Ae-x=KO3dGW?Nu*%!B}7?$ zcHVvx7i3JQ*Kx;|s^iPmyQfS8^$>U=`Fg{fL^hKNPgzww92Qc3MO!3bX(DJ<=W`hA zg6p3jSP0b=_S@9}zd%Q6J9Ujk^C(m)3m6%8!QT zYA>)h$&h;pNZr&>3*zTlHAZ-uZ2UgVFRn<3QMgt#GCbiNY$JcTW+LkwS>8rauVWHM z;qDX=aDSDY^`7)Aa&yT_=NHu?*^`Vzn^7xA!LHtqJTv)dV{{lubqyG*%K0n=>7LLW z;QKhZHKdr$d*Ng{P{{F2F84bw^***YY;JAGMegkTpDmvp8l8LlU>vTHO78A8u1>$# zev=n-DMGlTQy@gTG{mdNUP@GK5MG|Dy2{^6U7Uy*J7-syz`jFet;EE~;Q_lIN(^_Z z;uV$dAYM7y5~DN$7=c`$J+GS7UCLgUcT6W~G<;58v*7gCyo6|QcpjYJ_2>B0{OO0t z8KXt7oo3R^Om&Cujap_I0hr_g0_WxSFQ z#Uh1x5b;4dGZn=9ohGe&HS_&_geNK?&>1<#u00PcIK>s-1)JTs2x?6ar!dB49ra-Pq#EfD6kku&rNh%8FDB&&km~{IwSnuYXT}pVY7Q%2+*kpr^My zHa@;M-`S(&j&xdEP*=$k@2|+Ew=F5FY=Zax_WNt&_#DE^T~*njV%i_4}%B>%Y>H)tkSJG4M5fc1Mw zl3$p;YR73ID-QGW}~Ooq5z)= zxxpt85AXu44Hsf0X9_q7h6EoWUFJpEl!q-MV(hCG6U|?10;w%lg=fvE+-~O~QI;r* zI&<0B#e*WA+}2NqBYB)JN3~I+uz6PYm@F${tLgElh@V{AV%0zU`j5n-?QJV-n_Bng z$t_hfma?ue{%zYAN7W}i%?C41dnfo*I1i~16l{cM{h3eOZ{E)=*>$!?m$pt{!c$gW z_oH`hk01$P4O64S2;rE@rn=zensXVXaK5!^DqHjuiMn36AVfnJ^+v~wUNH;77fmLM zlUeY^I^>rNwX$_QHC?9pTrzi&e%2jHyJ&T5$9Gi^A{fEPi@~bPQ>LRCJKr{^qpK^; zv9414wwd+xRY;L2K{+>8&!4oa;B_^N6t8_zgfKtxW+7&dM2m46qT$b(%%~rxAM(pf zsB~GpZ=k|_t)_3h)y;)rx;6gQ8mbJ*Sc;Xuu0!(%7x8+>E>IxiTV*n<hFk4d@=3E?(ZiTrrc)R&BYG6*f#M9_)N=hLWd>a^VstC-jScjpq z2UOGq!I#NJjqX72U+o<_ek1U?>yKPtI>ukOZ6SzM{HgZaBcrHRJ*R;Fv;v zP~W)pIXY-Av@c584UVj+@{R7H=5=!N`k)7(pvyHO9;1ei@nOqU3JLJ??z#Ug?y0x` zG3o>XNJ>u2M@%B62FtCD=TM&=BGN7N@)g>93SHmcw=PoSI`@FOfLhewK4gE{t)^VU ze0@V#SVUM?N9Vqx29be-)?brwWtw2o{*4ZT;em2);^E{Vs+qxx5~^@#Jmj$2XPLJt zArsc>S~$@rv&s7hiWCOJ{6B;nd%t9*S!IX`cD4yojwaehJ9Mx%Dbpn_SgTNZeJl;n ztL9U>C!?K4rioiJj?Z0Hblg?kBXGFn*W+`BSASL;Txv@9X8$M2XWZ>F2b*`eVC3(w zc$3r>ZG>nLD-Ww_-WgV_u%(!EbyQ}YQQu(*6peoIFg_|TG@kyECX-qMKE~vuSwBUM zxTpAf=2A+S9aC$?QnyA(i)O_pNp!C9Btf*~xrAt9uqEw=G2twY5mRt}c&Gs8? zP1p7H*`QJ~C+ALfF<>&sE{ip7i$oA94R^o{d}a_ZG#k)b4_o%E+1j9t5LDSQh!Nlg zJ@Aw1#KjYCgtB6h`F(SBoZ-$iGj_&Hu%9j;P8%z{VhWgg;}$M@|hM9(0rg%H0X^uc4=L|>}C$PQRJjB!{H)cz-b zIzs6iw>GS+_`Ve~GECau&MtkNJWqox zta>Qw51ktteQ&sCOiPmbZpfNB`?tjFPKIdym?2>`@%;mr2tWHA8@tz*bk?nTuloUEb4S zqjQaO7j*yZz@FxoZ+T)A#<16xD$YX0ilBV;gZVeq>b9+VC61v!_Mt$hnb~`pEl_d?$O|;Me8blS@GEh zr~4vpZU-!Ts*cD9X06wCI8CJ+rR7`ii>s57dpw0($6De?f6uky7KAa)JXv)mnXBi9 ze2?1h4Hm-Emf5sQKD+B>kWf^<;`-)?IJZx=ax7B)t$4-})K0b_m*Zph%arQJ`@)*` zU#tl-qQi5ntiq$sb!xOCzH5-w>(Lg7XsAFI88TkGR(pliY z+pUb{OE2gw#P&^mon7!sdLr-r*(uTn7nq4IpNt*ZmYOzKu4)rpR?1Lv{+J|Sl+7Ix ze-@keIVb=Fw}MS@{Dx|l4sr{+HU{Opt!T3~4R^iL40m=T)-Mh;>tE7&m(eb2k>+^K zA%zr5W3d|kQ(>2OA1}2z%Y;VfT;@1;(Dr5P=qOda#By4>J2*Q_jT*Z^8RaH2Dx_c+ z^WCEa5!38S7h41dU+OU4Xfg2EKgr>;er5?Ao9Ut;Tk(E_lx_4nC786V)-lvK^>hjw zSv3ELS=ku=H91)N!~^CTv}^Uj#J}YW%0b28Tgdw)umg#Er)Ie5ZJ?We7R7i+ghHUBi#1Q1XOd+rnC6}kE*|biaKoG$6*T0XxZ_}@Iw_xZi&<#6zbvcPBVd*+&Ju9*?))jenM_P6#r zOupJGy`hgF6qMd2%=~=X;AVe$u8)={qh{lm>@VIkh`1yJMzDHA-V$NwaNJQ zvd%sxQHnSTtO3wKx{5T5roogAh>(-SB%Qyr=s%T-LlrjS`n>LqpET!Y7SJaZEbtOF zs^m(|9*w*EDqO4+lR(8EqhfxVdGA*m@rryQcUu)B_bk_0h z(xk7~F(P|}Kb$8pCl5@s1Dz6h&tynv_W_BaIVlfo>4&vA(1 zsf(3^!i6W+72wp3eeKSg1ZK}*qx*B5z+Fv2Mk;w!j#j<%6%^d5Ez)!9)GE zi@m))2m_D*69!~)9*waLlCeb4Fow}EVgjpug&|TF{>xvl z$pre15iY(cFVvyO?Wt!X*~PU`ON8gD#CfOgRq6Q}*DW3B>S`X6zv__R+pS008CyqG z7{lxi*JO7Q&9DlXVE_C)DIXu7g@pzC{l8eAO{nF|o13z4g0{q5bG>f&`@yEFz%Jge zM+KmtPQidD-0*`s!SWZ*_L~PG%VNavcd`#K8)a9v0anwh7hNgbAVGs|{Bp5Bn|#Yy zC7PQxs;KelhsfRJRU#?lG$#oO(+6Jzz2vh#JL1V^7ZcGY1s5=wxV@Qz(1u_sIwWu> z<*Lo#C59I`4~Nchf|MCn%`+pk|4nb&SZ~_eN4LtmQgfl6J3Pp6E2fvD0#ka3)i4u&UFVMRZXO0WfD=hsJ?z2yX)UPXtx8j8jhI?d=;+^2 z3Lp+KF2u|CH#Sc&dxNkXtjkLa${7Majejbkn7En*DE7i|!Ct`(q07thjHa|^b?@T9 zW7#nat8T@Cz5@)n=ACc_mc5BqqFvi}U4QCww5Oite)5t<@b&>q^BK-vf%O?o048*H z+ze~J8T1}}lkS>&>5RIA)UbcvExzujiMw)uO?r0+u$PV=+<63T9X-9uJr{N&SpfZj z${avHbuFzF=FnH9rNu>dC*y=pu=M50!EOH2jknef7xdPiYaC7M&(hZ=ybz}c=~o#- zJ?U2zx~s-FXJpIUy0@-gr`M;8qGw3&Q_U;Tl%syPT7KT+P&Uo=jM3fQxz-6uG*zm* zKAH`R0e1e!$Bxv|V92EN?Z8whyR2k%47*$svw`O;E0QbXZc|lOWA({_mqi7^VCIM_ zn&QUTb{w9o6qKF-%SaQBclk^U6eD}=GCMjIB3^J~q-A9lFnLtSt~e@;^WaUijB^}( zp+VPlcoq%zzl^)i1`A7!d{$1j8qrh8i_xckq^)E$M$YqmC$Lris$8{B7#~sPxbz(?(_^m{3R>FF z7c|NC4uvjr&oaoaJUwpgQ3n^>rH5_LSjwQz@rUcMit_Tdwlwo9Na~J`~Lk_bK zzW%O?Pvx2vNks=Tp?j0CL;li4yphVpX?=`kNsTvNn*sBQVO-hL%5JR3UV7^a#lD~>ewhc7*t-Y;9wWqK>V$^32RRuNs6fiwZFejaX?_>cj#m%Qk80NyH=+*FWQil`DK+ zdZn>GY*Ar8_emKW*WFU9(SJS>?IX+zh|53SSjZU?56WSw6NLZtnfW(TKucHNfDQ)= zz(>L##&ubE3+ij0tUHnJ>`wj|KE0lKkj|dXC?)RuHdiiXWjtSbXLr}`cngx|d7@4# z;MQR*bgAwIy3V3c5#H&go=9_#O=;aFBowhW5wE*gYfQGku~-3MTJ6l<{zRcxy;E3Y zW22Gn*u_@e0QP@WU?-EB>4{)D`_106(1Eg0>y-Dd@mat3V)KIa^~7xu;!N!}1zYIs z6`9wb;GSUf<>KYl5cG!0dw0F5OU-K|@a&4u`f$`9X77x`az5F$JG@{TN*97%T<~6d zr56etmW#4pd|gT@&hC0%x@$DAHCJk15V}?D9(vi*Ht%RB>Q7iY<_| zebB7bV45W%5uMsA;!I+bD6Py3cCCw*(n+B0i^lq0vYn^#W(o-$wp*-JbKyv#%431X z&3i+2-j8#5lAoysw$&M(&O9MC{<d0-u{fvH>d0r}ww`}4kJhs9-yeG3qdqKG zql^L)jRFx(ytPgw-NmP+5&ZkPvN) zF@1pA0UO-3{+C;w9OF8NLNm^=;^`kaQji1jK{CqdXY+hsgU*CDN->eLw@5T4M}``g zS-Y+S35UAwE!@9D&V8{A{~BDQ?_kyKjpxk?;s)+r=bAhq(4fE!7L& z^2}fVgEt(nZ8z*+m^bWQQS8n&_FrF~*4i#Vj%U%;H#AKIh;QU8<$s$m;JP=R&8*ja z-iP~uy0*Ukj<|;2z7jn9g)MaT3;RERo@onu+#>e-ZV^*64 zZhR2=?6bw~29bT_92>?&lI#*tw$HdEjbmVEw#wkg2}cJ@PF<_vu?=UA zy6iTSucL)V?$?QHMYtwO)O9?XFBAjYc=y!f{Pi^C9UsXmXCWr&%2jb6xW@*s)8&~x z16TghNB;)aO;vixNG83EiXoOPPpH)fL5}D;=;j;rb?8S`H0^rDS2Vz9P7l)#cio$% zQSJzL<6TCg!O%aEhR7(Y2#L|}hP`q6dc9rYVPRYrzI38rh`VbrogVmQv*I()JbjCY z|1Iu2u1}!|`L7s~&o4#?8q=?A=MR(J-(N97R{0^;$4EYbxl?45_VvH@b3qsdgw-5h z%Q8MmNhE6PvmN?Wkv_C9&rEfDDM9v+8M@G(pHlM6oE>v>&Bqm+39NfRMbf!3o{H-J zLTSzPqXaw=uS?z20?ql_ZcgWR9J`&;6dty-8VIHXFxY;VpVuRDL3f=O-|)H_eC69>EdbJ6RrQqGSuH zD3>6pz%ApH+G{QCv=6B=rV_R~UN_`nqwvz>Q{5jA&@k|5_c+k3J{fUjR85@?KN0MCGJoo&J73$sxsQIh z8Oj~XCI;)VXzV5nkDj|&owO;z$uX7U>l<&aOkJoatu{sXmmEuS;6qp3_-2xn7Yo+T zPC1pk3v~-aAZ@H3?+mr_RX**turmS0O!d}hCA9p4Q8SgYP?Acc*kBbyd8J>gIN^$K zhn<6n3Hy8ESdyOOt1JC7z*jdlko;N|{B3G8hhtXJ2;Vs>6tlWo+baUMCFLp~K7pn8 zl50yd6Aagz97%G_xOc*<-jbC(`S&^9_O9~8KyV!XmJ%VNFtT#{kxt@t{wO*}U52=; zb-bNehEnlwE`~1`SjFP8QV_8ydKV}BDO%-N26j#QxJ1Wuj--Ue-KMxXavq1ax zUoB=HKECDMx%z+2-s!LBZ*Wi^Qw$zsT%Ne4%{RP4m)*Ctw`;n$&3k(>*Gh66!wM@49M#q&4bsJzkK>dV;nfo6xD`A)<9NqV3p|$2| zFdnVK?~gxjn;+JA9&L==Sr?=Eg6o#I`K-b_26dapa!_3A9c+EkBXNFb;`;f0xjX!F zmn2L~fWd_dS07>car|@1w|g+}nvjn@lNa`LMU$OXB#PThJj?;}@4_EEKx9u8jfIQ; zvuputJ^3>@H|v;p5VXM^0@^w>(a}S8`96k;8+GEfTEf;bwnrqD;**hTQ4oXLP;<$% zF02wdihf7|BvxEBcVxI?FOZRPY10&%kNfj*)%c%O}=1=5Q33=SULkq?>EaFt}YfQy`zdx zKVd=A$tK0Vg`<=mKneLfSVUQ$ZTclHjIm#{&0@ioG&u9=Gp_J&yr#+fCM`C@?d9DW2Q5AO%Rf2FdsQTMST50m7KKsvY&g>BmfQp?8RZ9RD^R#$*%up6 z&%r}jbBjCTQc&m|<;W;UL&)vu@h#l?3U(EZICDKMqy3*2 zz|m_F`xeuC;q-Gnoed*WoWLHNKw@<-5-SzVo^Yn#S=cW+&c5;#aH`d>CR>nWDyYcCDGN5M1c3{8bni}L_8>nYasF*xS`=SR##!C4|e!*LH%mI2|;nfOzcKw1FBAKj|vic6i zl1Uu|ZXxVJVnW}Dn+*5YJBAUnt<|P4T?kEK)?$b5t+c`A^&?Knn+|<5GlVdKOMaH7 zJsg(CYq9y;Fx09t;(*Bm^}4wy{d`q-X)#%Mbr3nXl@+MFsCz?p%jbOzyH&p#fL${R z9bS4RkexN5mW0l(jL$mEOAo^1bytRtnF_C|E)UVh_WgQI27XU6+Hvo7PW`u;NP>fDFN`+EA6T-5bOjYTImQTOT&53jh zrJs642Sd@?>n9af)fOb-ii&cvKKG>!-Egd{Omb`^-{uL;x`(i5Wf!Pl{r4&ynw2p0 zt@XFo{UPO+h-kU~a=&*e>5svDVrCYW+S>uoH18W%MWX9owdO>!8v#T=;_A&UlXcU% zwaejRGQZoS2p2FnpjGIm-aD}QM)%6l>s}k5tbU6$|X9bLK)-*1@u-=?32qT%!0=MZrA-Wm6BB) zNn!$Qgef0**~n_#Q751LH!A(HJI$x{XW^1n?-XP4%%lhrQMQ^?jItt-ip!7c`QUSS z*`em2Yi6;UszuETk3>ljF{TrzKeKoxW7M0^QxVI4EHwV-qL7IJRaLxww_;TajDkmA z{_Lg;8iwzr^>MZ_eTgEg0*jGv874ww=&P6{i@%!Tq^Y-lpu)=+sZ|n-G)9NOmUon6-wja~LTU!S*J&cgx) z_k;z{nM(KPbkF#`cZ|J~Zf}~s?pb^J10wuj@9o~k%ZPaoU#_OB(z7t{J?C@O%~t82 zw9sw$SrFOzTfys#T$gURuEG1{kY)-V^)R2k;uW`g?HB*&Lw~2|K(FOc!ZebdoTVFw zaB6;geB4qVXwbd|C5c;}|1+ zhTM+btx4RX-({9LttrG@s>hB8PCY-{5UkNTN~u-sXWg4;S8b-mtTsZ#_5<|}Qoz3b zT-a&UDJKrg&69rBPW=1T$2^Dd=xm2WcoQpTq#=*;gU;tU0pH*qwx0{tyX`+friLBL zi1oJ~hc9D9ow^9f%)dz#(wg#ILP3bdkLm@&!^3NwQKT%5M>r_AZoc!LK*51RvRk7j zq;ta%>U840Hqb-WT!b z4~6!ZJ=UE)!kwGWa3r1tij3@1(n*fLg8qbK^*vEkq}2ZJ4cpoIW9s&%d*Ao!G0a|| zjhqtm!K`hv6EUv;OG&=Bm=CnNJIhEI`&-#9_gOKwp|KCv`C4kl@=S^J2u3#@2#zkk z8Ary8a@vNIDY*<~E1JDTu0w?5d>j9y^Tr{UO1XSe$HoR~wFX78I!yBH)H1V&|sMGgENRdk8| z&v}`uY)bS~zbMhw>A!7bq^Y)jpwHVPjV@d`Yr=$h;l&tTM&kvt*l(v`%w$Z>1UM9mm#_f*ta+73(Z&3-aina zV9Z$f!R_o<_x{F+n(Nsf!&T|+2H63F_oC3c@lA{T!GAN|61AGzy0xX9ltHspe~|zR zK$0|CMR=9MY*_z{ZSsE}`+x3o=S!U9_T`OlH-qj0yv*Z%=8T0E>Qn}^y{(*>xVzoa z(?bYv@@vV>3Z+7vVci_FBA%f%#r1vg1hjU9gf+CfGd1W&kd%HuB#6-{6`djyD&a9w z?jW9bdPwnM5k9}1fmc#IzGn8FzX!9OfzM^=6zV6+@=Ldknge?=8lE~r=<3lOWC_&} z?OgqjRE^N54A3Bhs{CeVsp5@*X8t7XH&Jey2O$cUkuA=cR2jdhK2wL}_d<^9gy9iS zJzf_Z4(D+wP81#0Di$s$;$)=GQP*9}b7p8|&`bA}hcYtIDxpoOpog-h(Phz7jao^) z_=L%uI5;Dz#48zWsSzV>2rQWFMDRQSa4-*GxzT@OPEOJk?6MY$gHyYA6e%TfI<9Rw z)TSIQ`l&HQM$ee4-V2fR6nfYltn(yp#Up~&tdpxN#=cWpg_NFy8Zl?0oxLLfpMu?Y zzS653kbDmjr;S(tU^nk?x^!>NuO@HLSr$f;_cruSz9YA-4>lIxT%|T&3mwqhcEI-A zh0Y#&tc@YM7*HOsxzwh>RwcIdA@K8MPO;rqtfW6f9Ak+6{ZFvN12V0d5q4xXfcq{U zk9YPrS-Nfas;hOJY)}|Jk+;7ie0~idmSIK%9y!Wy#-huFJyW%CWcviXT4*4JqJkD( ztSw21Q%bgCJ2@N^>-t_T{ab0AcHxM{-`&3vhTIz?;i3S3gHOyjgsK!P(Z!lhnqyvQ z6T>Mn%j-EIiqJ>W;!%bm$Qk$7tTAV3cX6ETS^6hsW)^U$KyoIAO~#369SN%@TSgr& z%34`Dhhqd{%+RwnM3klf=tOr+**GMtN{bfL$&@Uz%@_&=Q z7uy#X)7KN_LofZMF4$bvgq`vaxQhp*?Oy4XsiWID4x`m)#Dh8CRK&nR979q%jK&C; zHZy(S9ht=$cX|+d)iQ#tOE^z?MpxjX=I9kq5&i8}NP z&xByNds8XBcQ!@K19jh4|vI( z*V1P|D=lAEHOv0!0y_o_)#3I0gpwthv{c~AayUKR5qMA-YE3r|fzW;rbBnIikSLM- zY?fL_kDF94gPW+XW*jq(iJPnr`x;l!A?II5Pm%Aqk|fhO`CG^QCsu1x=7J_hNt5)~ z*!=-*eoYa@zR#L=1+*9inM>1;e;7wqih>Q`ar8U8JAkq9^@`WwqB52EBROC*oE2Ry zIr}zPtJSeQJG>~JW&5i|_uC1nAogCohLji{O~=xy&0r;zMlp5HncdQ9O`|m!^I|BZ z_+-U3joi~!sgf1wW<8{w!g@$y` zW1D+QZ`*H!xaQC3vB?Bh!njEHS8p$GmrAdeygPJnYSS06uX~*L>je*q5ZAS^JwBmh z+otmg?1LL@usF;6M*USG$5?NuUTL=ht3iU3|GR|3c=hLUDwF}w{+m${r>)P;R$sRq z@<&nj`n)mi`z!QqU1iLZMq7BGIViAdOAp7LZ_$}V`=tfka0yLT0>S?QN>IXZJ0~?(Ft=}t*^0~VvGP~Ej^x8fBD|^ zck&)Q1!b-cO1fZ5<#~pT9-J(_^nH_$NgaTgd3?Qd2u+YzT-`y62)!^fBSt%_qYJAG z&e*)uskXoL)k(iT_i-y8a%(i=CmpkbiW$mVZ3^j}k%(D>xvh?#;KShq;%@v`c3$=g z0@%7SKSPxEk&UJ_vYV$DnAMwyy(Vq?oa1WGV zZDi-yS6tqU@n`GJH|AFvWEXQDYY!1Eh1TA2*mKRRtNj!@?ywIYQ^xbKc)?TQrt`T| z7pJ*(?bGxnWZ;t`H_K6-Pu9Qaez`8zqTIMuVv=PKI`*w?-`f(dvPIwd9?NgGLB zX0HF`CPBDiRzb>5lx|4SX~{}cR94~e^fRnHUspIRU+B%f^dxCm49VJxI-o3 ziEf~wCS-=VFt~r{xj0?+n!=60Y9nwhFQ|@tDb<@P~Ul-iOyx=;IbYXR~aj@x`>7{eF zM%lP}wH~kHPsOW&*lg!y*Ei8g1^xnd@Tgu&g9Uux4ocMy=ySfV)}@h!Qrh~c6#wpl zw6(OK5{tJBf(rp2oj#`?_r`nD=d`HUyqLa9B3aeTewxoK%T=_t1VLH1a_k_ zV*bJ();%t&gj4jE_$@?0_)Uvbpp}&~S)p6Vu~ipw$Kl5Y0JT1{nu;M6^sf? zCMSrp8wF(AdtPa~c?S5Vk^3~Q4~L7I70Ad!I@T+rtI@B&51NIk#WIJ)%YOn#1X-KUyA1yqhU%7X@R_8he^Q%}>dJ(ToXKUqG5m$=LCU!CK_=4;zsc)Q93 zWaiq+w6x%0Y%hQJ>(sznZIUy=GO|~~k^g1u$h#L87m*&E?!P+J-&W+m`6S$9R|W&` zMpbv0k~6Vfr}!5Ydhra7y*4oDxq}oJ@~h^nU`numJbM2Zdr+cm_dw3Ki^lNjVn>n? zDW3Xc>FAgl1F41c%zG~U#P5@3(l;LOSg2+YD7`a%*r5-A}1h;C7?f+-IP8 z{N}Hx7+)sPr%iO6vMD9uj$a8f(NrqFzz|8U#swv{_sL^LT)zr&VwDolEvTO^*bGyc zN&wa$oI0Z{aZ~F+5L3h1#8{3V?z5B|7Ob!R?3%=XyzrmUdzZ~amcpY5`$c4&MKZ#vV(EKg@5f}$tQmP<{ipw zH5F7j4v&Hn#5fvAbER7X$>bkZ|MRvImcwXUs!EzWIxVI{?2fewm-dhcf zIJ+Ucc`tYcGMXtqMElGP$MyU#rkNYOmc(O;wZ z2ctBtlz{Xr21A)bKV!w9hpy#k!dcbK01T*`x^lrP6TT)TChD7ao#QJ){89P2>Z znms3wIh;Esn;04hqGrbL>Sa*d$X6}zZ2%ZR6>?A-M9<(571KU=|H*dP-y@cxAszui zSD)c^1KZkZWAFedopZ-pPp@g5zWXPwo$IR(v&lr&Fr_Uo|M*4wG^qV)KWmxnGa<}r zgszRFYwPC7`{kQoaCiAK9ZPP3rj?;F*xu0x*k9r>S2$8Y@Mzw8Y3eo}v4Che|K)uF z^NvPbsOhezUymVH#t;`I4Jc2th0XPJJ+{;lS@%CkM#6vFN1KjrJ`O@9ltLwTM&8ZA zzd!#sK$6?Ixw*Oj)e!=S8pM21^4?wzK6mJH;CJ=m4h?w7sGO@cOSPvBGDcIJkT=yu zeSZcW*fMkIRr=fk(vh1r;v|Xgu*_LTZ5EWrPQ>5Y!Y_*Z zBwO;9fj&xUEfDR7 z=d_caL;idjqkJ{zvvt`>dZ8 z1Qjd3j7CV3)>J39$Q5~;eK}#nh0~Di{QO}r2fA3XqVm=kCUp7Ig)Mxo;*`d51{ZNO z>3$1cLrs$Cxd%oSHc^x#c@wtU$>e*ig9E(BDU3&o#W5i5sWg(NRp9yI>56dK^UUx(rWh9ia#h)^uQt>{hAvu^R=&C)1gO_oWN zHwKoNPG{-Zb}gSBcBnLZ2DAN7N$)$TMd+7(E&BrMhlw)OBEsxp{XCxYN%$jdCO1RDngT=p?ZxQIIPloxnxkOa=;y@fEy&`?k>@0f$J#|fcbpM-yAZ0ZNPHfq`0 zIW$1-q3ql|x<*>xCr<$1CIXu5Q zF~1g2`!9j&G52w-5HVEJ|^wIt|hm1 zlg_GC(`P3L#w)Yb0P)OY3RmdYGOL?;u*Ic25R<&U0>d+42L@35w};pq8Uh{q{v|!S5dWLAMaASva+Xuh-MCk*qiODr@y?o9ifwW(!Eq0 z{K!=G-C*?PImG8xLVGqya=8N_u&#HA;Gx^TCNE+NWryedvId zpU$CD5rx?XwR3W0%ej`m19wC`vhZ`ch;05h_QIMA<|cJF#z#tBAEXJ2L5lT*lA*^g zRw`ericxWvi9!uOl7EnCyc>Of*{_tObLkbUcN34^VC-MvQWm@sfVlx6ak2oHv5K$Q zD0Ot6IW8YuWKb#x)zjw8^;v)x=vRwm_^`cK`sUnf^#K~FYF=5{;NEuO=UMw&v9xp* zb6BB#vThF|Z>!Udyt%1J_JHyth&ha}F9)cV6`xgVl$6I`N(0oC;Z>cLu&S^7FKVrK z|B9OB_97SQr&HQ}e$Er!>o>Ue>+n!|7vUWT2J1Hq{fTyvT#6ZvFp)q<((2V}*a9^c z7B+ULlI*D5hT{e1B}JWSJf&PU3w+5wEgE@c&Q2IsftIrGcWl>d)VQ=^({5I!`|ruC z|I}L_L{P|PX(F7-fY{A}t*Dxy-CKI9n_A>XQgz zaQo-!9E}RG(lH>2$Rx+>lj95ZTZ(J0#Efn^M7!VLo1_w%ANPR|S~6+Mu9C#`9CRS$ z#qJ>s66~K9*@-_bW*fZoW*Mrb#;dS$W~R?S|EC4GGYlPs4jGppQ!t%FVKKxV+F>Ut zr)vKo9&z6(O64l?a6KuyB4vDy^Te$-Q{DPEls!YA>2y6)Fjt9g1m)Pl_L&&%4}7Mv z*X2{i{8wvhd5=&pD9tM^ao>zHey%qhDpZBYO-JR)LaNv6x&O4Z?NLM8R;AW=%)!P2 z>oc>Il>b!XJOHurdUNsEP7Kd)94{6eh`zS&_DGldRsHm1J1Q?B3O&(_ISaL#vCX}4 zWoLEfQ+38Tu!0E4Azizc>3my%j(i<(;Lk#kuo8uCIzP#@qJH{7k!K8b4CVSE3a*jw zyv>^zt_*pAYX%|j3zDTm>2N~o*I2_n&k7Cu8g+X+kDl{$Q{hMdM`3kmOl(8L+>pW` zr!dOua$$e5iO}IP13mwtePc>15HmjwYwWS z*2$h&vP}@+ulME5>oeGpJ2O5FXHYKg+u4o#RfrK_q;HZl-6>;O_O1H z)7|BQv|6=myrLHBu`4rHX@MhW3D&JEiREaOD9siQTU37@V+MnrHL*@kUcGOI4B)r$ zb0k}DxP>!Rn|n^VF9|YXtFJ&UGRO?*X64#$^t()^B_a!BPMm^7bZNi;Kt)l%M{-l{ z3C!Al%GSy$nFNUx0OKm^GxUF6f~iXRT^ac;n)$}LISwG ziy;;E%m9lE@-OYI#ANx323+5FtP)>1Pa!6;KRv;EZM;rQLTqR2G}Jrt9uPqNoq`}b zffraCBTSxflg3mlI;lXAMRXrMA!!??2?mo4O>?ds-M|hMao_!uNo!`E@PKb?ho02Y zgkzg2GZw8L)n9qj-X|NNyal!Y3h4&F83&9DNMV7S2;uAwlmOo@c)d}*xZ=;jDjJka zEhRk_bRllFBEj3##bxn-6RER0pBz)Duh;qyQxm}LYjw9(V`j24nD08(aaV_}*SVBP z6wY*%GZKY8E>?X8uQsjHxKmY;gd5^ssAqCvQh;J#xrK)iB_>51YuDj}HdZ6+(grGT zoG3~#X{J~_x-u2q3dVjMgOUj|!#B0X7C6kqR344N#cCtTI7vBRLvNTkSfM%0{=6|; zFZor0QkGJ_60>y7og69A3d-{Hx1PbuczF>`wX?nXG@A^sq?C5?BKIp>;-zyeTVkB< zx01xsU6xCh-!m(!0@f?QP@)&GDxT@0zf8VTuJLZNFOOLjH*n9G=j41W35(P&Y3=Yu ztzV*L)Qt37vpl(G2KoG;TkmG?OXJ+`e_F=UtmmE!08)b|m_kfu`&Y-_%_9j(sAdRA zH&7VW=UF?r^5Nrx{%dS(A3IH3+62tQz}Ttl$<2p<_4e_}h2}$Ya-9tez|6VbH2QXX z;5Zyce*m9EfEh~G)!P33me<3AAu~Sb4y_Js#+=&a&C@n6Hho5(ZLMnw$9C;Tjx8X9 zbqCTAlNphrY}wrG90v9mBcFB_sWI#u*MZ_5U=^d6MLD;rx+R{Zq>|b@)GTft?6j_~ zZvOvSR-`$7zRULP_nk1TeIQMy+_lW(TeTK5g(Oa}64zEfD2<@qn zyH>$6CKBnwZ<}D?aXb5Sc3IIe_M}1Tf`U;is4e50;+c1Q4>gKk1!pSce~yvDcXF1V zu9ha~^3#*S>pb)NZplXwAc@xq35?R5mHd~ZQ@UI?Q*E1+^GNt(Qd9PWwFw3{X$nmK zoM=XJP|5&MB-~O-+0e<^33Le19*Gfj+gpO4h@Bm?(f^xfhvJECcl%4zD7JK2lkT@5 zBil6S7+DO6UZ%L?2ms(kO@DG9 za9BiU_yzfKVAlsrDg7ZIN|-C+3s-%vJ41a3gR|O?ea~z1!s-6YOQwBX5ra0?9De=x z2FLv+(n)-hQc^e$0yc>x84a6lQc6B)|NAqO)3^00?3s-=+0^lS%x7TivP?3q+}_m- z`2J@;0kbMzcX#&~DXM}AdLWUkD^Y0mfW4K~CvwCGoG3=HCNIdQt*iI=vD;Zq*ooMQ zo`ZqDj>H;a)WM8n7VPgG9*Qa2kO1k{`|6I-Lt^$~vFvwcP_Rq43xRc?O8N&S_dsXlk?s- zuCA^iRrC5^s#db#I#P_fz&5K2P}n32dzEAQEs0b31=#nK_WEm*lasu0J$o`yH8L1# ztCdb3Y73_5J)?~+RH27}hEoMRG}*C^IUQm&efyf3JUz|F00R|{e6lulDw!N-mBp1E zdvt%C{kiB=C)|ul_C>c*7I?y7N5T56-wztAmxk&&TFlDyu?mn_N~As?bII!$ewIm0 z0u`mQ&tS)3ek6BrP$rn9iu34Yn0N^JPlXBIa>fcMG|&?6r}sIEa;XWdH`wA38$hmB zms%2nFiIPLvf+e74F5Eht{_#$!{#K*T)lNdL zsrZyMgMw+`YUSq|y9Xz#6b_kTEZ~W+B<7;PlWqee)9!8^aI_RE4c*%Yq|Imp$m!*F zikE%d(;7|Z{r@z)_g`ZeXu3IdTj29g5#4%@k(ghStvU;@X|;?4y;k&}i1=aP`s?b*9&$5)ZMk zCwEwk?jp|mnyO5ffa57Cbc(A1S-W1_*mQ15$%3tP2Xa7B#DyCN|9wPsvzBN7LyB`0 zi_sxdE8h#TMc3v9GjF>2DZ4WL+An45Bo^peM)yzaA7XJyWK!$_E42?sJ`Er)!iJ(v z(-2#Q19N=?ezWo4uxtfgJ%39y0?kU*T+!YB?>y_y^N#DUO;sLVZe1Q4|0Aaspu!-( z*0J9E2-$9%KfZo3bzH{yM4JmZK;Vz&7+=mJPfT-3q*m$q>Zwko@C%|u3MVq>tj4yF zO`!0al927XrQN|(i>@reH1jdDN>;~*%CHSS9#*Hz94 z`UOmr^a&nAB=t&F^o*gOAW9ox3V>oVx7;wh=!<5?i4+0vu}Xgtf`IqOZn$HW`6`t3 z_=!sSB6wB6BMQGTL|G>@4u#|#79{qXgwiwQmA{LDHF)JH7LK7#I#zUaL_d&*e_rD3 zKW|dl0SI3YuA`l1?`~i9+*=DE@T7QMH@^7S#{cHE%G6nScm!9@_CEe3T5UP{HX`29|`QszzN||0H&Mh+L(-IN_fT6 zF6eRx`GT&m)ojMpCff!!=^sT05TbPc7ov6*O3k5lRswlb$v$|lI&l{y5xF}%J7pCW z617^{Ab=E3JZ=AV>_$i32@;uroNrr?K{;ya^~HT4;=XvB7C+aP7!Y7;kgp*+Wy+cS z4!_8hDBLpSufO3|qNhc&OE^Q1Vabcx9RG|>b#n4Sw=19o2*_40QJrRppPqw%D^+u*d*SpP>{2#9hG!Qt#=>2w&UWT@FN~SE;w>qVBXC^!S zmwW}3Z7u!cZ1@*~ePT66zo(g_+s~3YSU!;+T`(FQ?yNct?T_4-2z(QHuc@(i>3ltH z5ilenhsw+>L)-#9OGlIypAHwqRr5SrK;;+66F|wuS4XJAcl{Z2HHk0C4`${TRtEb*tg^|esREIIV+%3dq;cUDP3u29fwoGRSe!eK zsV~-Y3{c5G`2-R61QCycKYt)3jbUE=IL&-{ni|Y*=6waC5@(n_+Ay0VKM->6Fl7wj zRka*~nHxrpZ`THAZ3pZU=YaOMZ(iqy_yl~j)~}z4X?z};C511$EbYF>ZmQHEiZjH0 zbUz?+PPDIFD*N4ANet6js&L!`n3`1vygJ0Pz9u|y-7O)&-*V=Q_^XeblypG!0<-1$ zV!e?=@_vkS2fIVu-fEHg_2rDX{p_pOU!W7@cmfUhxr(uGa`NHaLVSyB7g2mru6K&= zu3m4ACIMXqax;Lnk_)$G-b*WmL;YCQNF=f%6;43C1e9+(Ez;Cm;4NZlM8MES6@4+? zh5d)fKXdP$Q3jNID`z&zN`m-thaSA^8w&{)(e}dk;zRI@1H`$2{0l~KB9ZA*haef= zKC-op@N#bXEA;M&f}bY2zc7v=vxc8$0B{2nH&L4|?|P0w^#FlaAiGuuydcC7sF z$sQz8)1+Y3s0MHNs)9KHPaGcbPN;xKKa~T2Wln&hW&#+GW5T{guek86lLhMY5Y}Bq zQg)?hQdd*h-)qW+9L}4_k3$p$D^BnVzlfxyt43xPIF42_SUr**%b6Ls(M|^|e{)P- z(rDT!f|ar~VrSqCV^+CmUOz4C!3RSg5n+oe2U~fAv@(2oH_!AIaMva{Y>_&}RpxZk^b`3xTLTnn5&BDUx`ze9fFQZ3dKt652Zpfc<$8qHd z#D(BXri{wEe-fq~Z96v$LAi}j5Cv0aLD_{%jHC0(TMMrt|Buh|ey!uRxC$pbtCkl! zJGVZ^BSR1$1a0$O6mmE@F#tkrX08~lt}fYLOcl?1>xL%40@$-p=Z?jbFZ`!@2rC(%$bJ}h1Yrwpv)|Gffo)nf zpEO!w`P%x;r^o_~Fb!N~=+AaeV7^X^^vbym5En@02(W2VNYicI?HQC>UC9mj3Eq>+ zO&4JSf7Ebo$x=S6`|N;=2(y-(&zPN{TxX|ZUY9LZhVTd^ZM_Eki&sZ7F$#blp14uU zGiks14rE-Q0Bgw`8i>0#hPFKsFt+>wYx2oEcEDw_Z9IR^9u58nV8}p2#rA5zzD=72 zn{fs2*V-?NYM?I(3*^NE)b@`X--3eV#0_t9>YLC+*)@kT(&fdKTXWQq7s=pQ{r9OE zq`d_h>axDn>-u8u`oa@A1>fg!lw+FH9uswT3!sdak^f8{^hjOm|7-6%yPA5RXz9HZ z2_ zeQ{Y?ESCm6IrGe(y=Ugk$j2AneqkVwa83zJxcMfG<_jg;Z2@nL43srHAvKHsoaB(c zlaj4L(_YH%L~-O^fKTLicJz(3XHPjS8}2xbzIBNf`uOR`wFEXt6Hx0-iE0*o=9o2$ zfiW23(T*T$&TpTR0l`o&1u>CIKPV~oxUqS_1;*EIBUgk4~bWXv=n}V1<}*K%x8Z|grqf7%`*15 zxyBH-@nkcMGK?Q$-*W!#irzfFD-!JlQN!Z{8p4GZ>rzCKC#H)go~Y$u-;C#OW#PUq zBsycPl%@tfOd^^wBE6V`grEqt<8M;?_fPu+Xp?cANotz2lqihDZ1l?K#+6!dF#VO$ za`_H&zA}81oLn6JUK~;hvly}>L}DsJGyVFZ9SPnS@qnE(J1!N`A%~X`yJ1AeA1IzI zNsG4|MpFG4ehNAi_Witqf)`RL4ZrP!ksLezZ9`x-R0_X-=&{Prpiq&&7XcrVm_z18 zJN9B`85navX;@MO?GZwGpf&W6MefA1xLtieF|(nq#n9br#bT05oXXp+PTi zb3lK%LTF2@{SjUGvC`}kxn@sA>xp3N!JKaUIWy7a;_m^m?cjp@Q2K)P;>@o#PWr~w z!tYav<#MJNho@DT?^Gn(hS9Wa%-Xp!$W*KJTbFx7L@HwGnr(nB#IxMny1uiokE;>$ zOeK;O223H@YJV54%d>8-t#tLuFK#XeU!EFekEY-dEr zHdEMM7w{6gmg5%B6e8vTuLkByOq2y)EdKsMqOSkz>1k(bYqK|BxZ!x0_dik*2uG`| zMBCeiF$6c>Q8(U%@U=zpt_Ntc+JihH*63U0SKU4Jl0OHHx`j%3+`5ZU72aVxqyEi!)#rFBcFlakDls$CKFO)GIaVhll^*Lk6 z4s$3qG?K2I`f|{QY8##2k}Tx%RuNOVViz_4nMg?MNM|UP@pRJiFVRK42^ad@;B@2z zqg|0{E_Bc<#Jl54E=HR#?cE!T$CcmRv6C?(SN-+sd=j<|X-`u?85Pq@Uwr+~%5Gz^ znWwk6b^B5GC67Coc2BgyX7yUTBErVoU#@c{Ue8Cc^foguO_Xg-evC=uoDKVcQdVwuT|RzyPU;f_sfRA4bU)S!8mq#70~-vyK#hbk~Vd7#D*) z0b82m-{ERuiIPyo_u>FYTt}dC^&mZ$!u9)6coHFe(Aw_%$h%=-kFE4ETg4ApLgxCXqvHD-%s@EQGuw>&3RvfLZc`-YVW#&pAyV+&Uy_HV)Y|tPR;eULH5>wlsp+1Y zM0PEjwoH4d4xM^WA$0n=jEr}JgNKX;wcH!k?KH(HIzYs_C0;mHO6L zK1GeX86E71Rt+JlSWm|M64JUS47#=S;o?fZU1-$e(WQ{K@vcqg`-gG2*yqGF8Uvw= zw{jSt=H}+kfz8*W+E+f!@K-wx^cEhS6nrtIBA<4m)5HdQDUH0JM^&2ezs1Vy$3E= zisMnthh=H22F1JqU{M%B2Q~l}$CspYOFT(@#0ma83FN8~96)=J^i7o4R? z*#%`rWL9GzS^I($yWf1fpPJPY&EGD~*(0lWPkiV9qREe}iohc)J0b;|tYG5qZ)|Z% zgUNOGic%_wPGn*6Y&{=^H_hWukbg{h(~{l#~-8j*R9W$)H<*u?76vl^S{^S zFHV1R<>$e1pssy<#%ExP5lWanBBcnSF^9|1kBlLGNeNEo7Fa-@?W_TDva!#cnC+4^^|Sd{cvYoG zn5WULz4i)l8VaK*WD~~z$yc&(t52!$M281Rr7_N!lB%my$RXPm-4qaYuS-68IrBR& z2CS7}Cqzil4x4f9qoZVc$-mA&qbz(gdo<0&e_r#ty|+@vn8QnyZ>f(A`=~QRW4x3R zorD>1OCa_-zv|fYi4@DKUZ0asoNSp3Qc>vv={-M;wz}imlc(m$Oba+3`Jx@~G|{gU zvk?$!UfUJWpv5+1Rk0wS2%Hpj1%(UzBTUw2Cew)neZTHWT49z#tj)H&TMEf^EbdC! zE$qrm@8!d!65y(89h2S4gHnUmGKcHGDTeaZa03I3B6?xhliTPs<|JT_mhXozt*L4dT{&;0M{RG&yDvO`8L`4v7yzUv>;BLjkNjDo$%B(wqtUp z@-<|7nYHnBmGqVpqV%eY#FN~Eb1q?}BddJOc`g2pJ+V=_~I1b5GR>lP|oU>D%yb>OFq52GJtwLcL$^q?7{ zwThADw~&?Pv)-D9*YhSzP~;~QdpqS5C(_nM@~hYb5ByY7<2({jEncUd~ifQ^x@-#w(83OHI$7 zZj-q{F`K+!Iz&ZXK%xo6k<+^lqPQUGu#d@e%A~hq81?QVT!mNCs2bGUE2niT)HPa0 zW4gRKy|lfmlYHKX`_?eoE(-Js(QjuDC`d`uE2+0R28VC>X6E%hR^S17T~NRRnRQo% z9Ru4ob;sp@Z$sPNeEaR;HG8Fu(B{8hx{Ot}{{2*=)Mk0b?LfBU2`~?Ij z6&T;@nC3!vSuY%s_~sE6PlmPBcs&8ds%!f6r=%C|#-~(LZOb`>o)jIv!LC~kK?(O7 zV*DFBOFv|0CGuJ=ah9SOXBcOjNCR#2ETCn#ct${V{Y3ZBBWyT%!hIG%u7W*Cp$l$l ziFn8BWFzt=Qr|zG$e{OQ>*PAgvf_In7u+1{Be9vp@Pe^8QI~^b751X)xkx^u#Rj|t z^Dd)9F536GK{DNOr@J5*KB=2ucho$C1mUnZS<>80k)1Hjd;*gil$z9QK(l)1V2%V)9R1SkS?{S-?V zU-1oet@-)SdI~w8?6=Sg<&!AT9Pm)-xAlI7ooC^_kJYOEpw76sElGb4(b29WV2Zea z^oJKEbwM0_jQ_UE>G86yf=lQZudm50oH240P^~Bb2f=O}9s-7IWx;?SOR) z)VrN)qE(3?%TsV$9HKX1`N_a0W8kv{PtARD@UE%2$N@p^C4=p}FkxI+c}Z3bsiR(0 z`4`S)0~@G*@z{NuQ_h1NRbV&3PJp&C=CFFlwRW&T1rNx(G4C3)e2@(OB25WIzm$Q@ z*tc9ji2$o%e?DxPf6pl&X3UtYT{V#S$q+9&K!*t0i!mnU)WY%EX8TeY-2}%AJ4%K@G6-9@P_C-Iq z0Da-0%^KZ#y}Z2qu2d#i5CUE%;^|(`(qG?KRc&ftT?KhvH8tF1pK`er9XNa|CEivv zD6RBMVrdNF3xeBZO$9mBVQ_RlrlbT=WEpwhX4ejryn+%H6$)59Qh+aN+<&%5!&*hqyZ_h)p zk0MT*s8JRV_H!R`E}Z`*-Ej=xIA-eaj!(zzB+ioQ!SNE=NQFG%q*rL)wWHPAetjET+qvy+HtvHY3??ifK{nBtyl~8FJ~k2jt0P6XjnEHO=Ko8KZw>>A8IPt&w?&TH z>$lnn+SqS5KM-^a(2>As3a?JrC$HW#ad!F%o?ZBkSk!M*zgYojEa4vokqc69Hoa^9 z>@&eOLlAC9^3h^#)}M9SgCG8y`jzO1<@#ocH{(1SY1?tXkj#1QaiH(-h)JVAW&sU6 zvINxjggLf&Pe=@dqvl7id-R*v@^~p2&Q3@jPm|^ptL;zg6*3Tf--vMolDgAL@b%+KLVuptAON&n1IO!1MHg7m4dD<$436#RhUO*+D!>%oeGMxQQDOCV36AX`# zfjP)R*{+{cJqmC%6ahrMvR1TZr~ph_(g$ozXBI|GFE7a!0>P-v#i`jbNR zblOzIidI||RXLMUfRzKvxrw2{U3JDnnx@Hv)YZ$1ZXX?I%|D}EymJY=3KPb41~f#p z({k=p`a1ot&)l@Sw^KPSljio z?X~PqWT0=_P%Cr*IuIO&G$nv(!gNKIhCJT#+8=`wK-K}(+6A?13r9B5G_!!W-Zz) z;(zKpSWwajlfTt5qi)Ybk90$$+D`T*K?9Avj&{WeM*J}+6NZI?G_r#vzOY?}0iaX( zg7sBwkZD9wu@_zeL~J;|;NC~TkLIa0XZyHHYN*hf5rwY6?>2lD?e}dw`Ka#P2Qv=z z=m=|~G;BOdt9w+O3`#Hi>rjX9K!CJ(>>%?Sk*f}0ir9#^okGIq?)Bgqtl&|5u;Xl?4r>0&a2u#-=Din|D26uqwp*e*AjU)X4yn#);vrjweQP8%S-Q&RQ>C4U)fJh% z0pji{W%W_o9z7p6OfUCgp1W1soY26;Ug}c?m*5z6m`Hi1|3|-cNn&LaNE~*exN%jY zv2U+}!WD{JI7gaAcLb;P2*a2RU-yO3umKkhWi^3$$eT}<#?$1lX=YHYG%{(j47=6b zEweEBXlA8+`1^NMdUQfJ54eFVdsHkGag^3&x9CegX|e$ds}_q%+pJU%YbOrBY!;PK z_vWZ(f7Dp=c6=3-qqt2t5yNY5ElLZfJ+RmK@ETk5)nOr_G$t>c&`C zS64i~wz9WPXis~m!Qwzbf#}ho*a8e z-(mZZ^??g69kzh>UmDsIyh8_aDpFGP^}t+w#!TRGmP3!&kUET}CrzrQAnlRb9JoW) zbqhyzoldOj-zCkgaY6$?{7Ixi;zh7nH@raa6Pw;@I)d+AF`LK*3JT4T)rGx&KZifU z98pIeVZ`3SNa@gcnOFcU1tS~F9ly@lYu8jcX4OCw0OA0a%xsJXEo_0C%^gh@Gq_S{ zg)Ad76Ae> z`1;=}ThCc#sqfZg`2623;icCfaA9pdWfG8%36PvUpSDSq!s~;RgnyFa8mY$SP~d6b z>r=gb{kC0w&v~WuL(mAd(bv~^e#ptx&{Fj3L?-vIAugh~AK=$rC(1Md@SH8;6Hiv6 z#O-Dh(~*KZM`01-k6G%2{PIP5SNy15YqsS+Zw7#DzQJ^u$ko^PxzE-oX$Oa-fz3Fd z_W)-CN=}|z5_G?T$5o%I*w#+Gf{HN2z{@?qD5*8I_pK_^b@TjSveq{I4`iAFL}eGg z9qkp3r__vibRQt7@5s0u9^4SUEM|Y$$)Wr}I}nR5%bCSv+?AqIX^u%sMwMC82yPCl z7SivIOgcXh4-|le2ZRIQUIIST3k4krpa)Nx08s=8O3o+;Vpek;GUZ-t^^P8JZlJ;> zpw_MTFUQKjwt?)4k|+g!4NBo4;5nKgxat?kR#2@sf5#m0&dxKUH9LK(I?tB)N>KxH z(FcCaR!)!MYN6rN`+WRCMC}Y#`1zD~iIOy_OI8f6!WwT8!e<4{6az3n8T1^QTv2t~ z((0W)hZq$`UwA~uIXFZQjuY?K?`+!Obspi|u_l|@VbKL?dIho}T?KoAU2-4~IUdE2 z`h>^1BWi3MTE6aE-{SgTxRf4sp?o=W_SX+PbNE~FS93tX9|!U)#^m&(n#D9yvZa^D^2{qO>Um$<--@yFsf+<1g1L zhKIz)sQWE(z8|QQ*xx+56>_9K=CE?5iSjG+4&N=EF@Xd+E%i>cBNF=)h!cfxfpBI& z(~?=>trn%^L-Z_o+Cs6Orz+Zj_k0+MTssDio4p_Tm|qwNfH!u50w@F+e-yvDqxh(v@ocWC{15}shg#w1Aj#V6zK77QDunyI(bx&Bx$gAx4wF0Wpslo17E!f@bHNZ z$a^m7#qaqy&ruRWOki06s|| zjUB`M2A7=~N|xhC+rQTYeE?qh_Yd*eiJ^LnbG zgnGi%99RMX$_82Y&l_Qc?tc*G`vhMdj`!J;WdU8iovIbTx_zo5idM2>yzPXHIlz0z z2vD>jj|SpJFD7kEmZZ5Y&>?);yImy7`L+vf5u%H%0~vRCc-?kXhEcdyd!O7}z2Nls3*&zW{#c2wunzg8nLl~GrHK1PCwt?v=1={I z&uu_Q&2Nh{7gErcLml!Kwb@K$qI>mM0If35n?B=x-eV;-o(0R$^}BBiqz)kK;79_Z z1)$`9dCCA32t}Z%4RAEAYgG(ZDme>_Bi8`W$}>t%?+Tv5qZDwySj3uHQh$c!BwPLh zmaPJj2&y_UMO-v_B>c@sLPZFMei-(JXDiPv_|fJ7A~z65meO|rluw0S^ZAdk-f8Dd zYV4z!R0MCpi5z^LFJ&-Io29YmY?^6RqFX+<8Z{#{;8iz?Xlljvf3O615S78BAPJ)s zw3uY`me+w9PI}#*J@Q(o4I0NeqCn(6>Rcb??nfmxZEznnNoHWVrmCW?IUTr8Th{Tz~*Yg)vkLXc~ zez6f-TYjn30iX<(cR9-t>1*3n+f(_K6_i2bJ6(o%FMIXT;QEL~?l4O4As;zQ45 z{E1QN!0{5<5FkpRI?}sz1Sv0c1?2+=YlUB-%k*e~Nuc!{)a1}-+j(&Ix}WpJIa(lp zJpz*fDI)^ega=`sI9Td8`EG048RK6awn+u3^{ny@`uQM5hxgM#qx~>I&#RBv{&pcv zJMe<(3w;ehU~w2#R9^?|VeDGgAlqR%W>UUKydN6{K60Fk1Wj(@2Ass`p}|{$P5MM( zP@Tz0P%c7*^&T8>l_h}>snvT?8e*n#R0h_m3{;%u*`FMqDQ>onnz_Hek`Sz-e~=(g z@XR2bE#OAZl~}5$f0GNS+i)AXJh8C5VMHShz4o<;7MQDmAJJe1&LR@Wi)Vj=N2Dx1 z><(bCoa6?lxhJ5Z!?_0N4*mej9k#$$RWC-r`Oey&b&E<>Z!3SaT4%;atN*JO3jUVfwkBOXXgfGte=u`Q?b*7WUJ=x6yZOs` z)u+wQV;`i`jB%^ybLZX{hg+Z3?Z}nwD2UTx>GAx&LqMBMxNq(l{8kyFYh+Jm%=-F* z(w7hju6-&Fe@sa}qzf~gn_#ENXSN*$Jg(MKhF|Da$1_w^IL2QE*HtTH>;f{2Vk{#6 zbCdq;ccqqJ@AQ<{qN4g|NVBsQ1i3mtDBxdXKS7z zfBNmu52vBYo{H9u_C>3|Ue})xU7KGgZUko+oyZ%0{J(eRe?RvBzy0%BaR2_F|8}IV XwV1QgjBb`|IYj&){z{J% From fe1a6bbac46a4b1caabfb2e71d7680305f256894 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 15 Feb 2013 13:41:28 +0100 Subject: [PATCH 059/326] memory checks for glReadPixels --- tests/sdl_gl_read.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/sdl_gl_read.c b/tests/sdl_gl_read.c index 552eb8c027f17..d752f94d3ff5c 100644 --- a/tests/sdl_gl_read.c +++ b/tests/sdl_gl_read.c @@ -6,6 +6,7 @@ #include #include +#include GLuint programObject; int width = 512; @@ -118,8 +119,14 @@ void Draw () } void Verify() { - unsigned char *data = malloc(width*height*4); + unsigned char *data = malloc(width*height*4 + 16); + int *last = (int*)(data + width*height*4 - 4); + int *after = (int*)(data + width*height*4); + *last = 0xdeadbeef; + *after = 0x12345678; glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data); + assert(*last != 0xdeadbeef); // should overwrite the buffer to the end + assert(*after == 0x12345678); // nothing should be written afterwards! // Should see some blue, and nothing else int seen = 0; int ok = 1; From 29df3df4f2b5eeb5050653678a287cbc7e143886 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 15 Feb 2013 13:44:53 +0100 Subject: [PATCH 060/326] ensure no writes out of the buffer area in glReadPixels --- src/library_gl.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index 8f692dbf87a3b..1f6647177f964 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -408,7 +408,19 @@ var LibraryGL = { }, glReadPixels: function(x, y, width, height, format, type, pixels) { - Module.ctx.readPixels(x, y, width, height, format, type, HEAPU8.subarray(pixels)); + assert(type == 0x1401 /* GL_UNSIGNED_BYTE */); + var sizePerPixel; + switch (format) { + case 0x1907 /* GL_RGB */: + sizePerPixel = 3; + break; + case 0x1908 /* GL_RGBA */: + sizePerPixel = 4; + break; + default: throw 'unsupported glReadPixels format'; + } + var totalSize = width*height*sizePerPixel; + Module.ctx.readPixels(x, y, width, height, format, type, HEAPU8.subarray(pixels, pixels + totalSize)); }, glBindTexture: function(target, texture) { From 29244f1f86a71419919c5d0e850db7672ee38056 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 15 Feb 2013 17:43:05 +0100 Subject: [PATCH 061/326] improve glIsProgram testing --- tests/gl_ps.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/gl_ps.c b/tests/gl_ps.c index a8a6807f0906a..6ea0e3dbcbf54 100644 --- a/tests/gl_ps.c +++ b/tests/gl_ps.c @@ -79,7 +79,8 @@ void shaders() { glGetProgramiv(program, GL_LINK_STATUS, &ok); assert(ok); assert(glIsProgram(program)); - assert(!glIsProgram(-1)); + assert(!glIsProgram(0)); + assert(!glIsProgram(program+1)); // a number that can't be a real shader glUseProgram(program); From 0495b5b1b1b94fdcd9626a883815f3a2173d4eab Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 05:32:33 +0100 Subject: [PATCH 062/326] show version and git revision in emcc --version --- emcc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/emcc b/emcc index ffce7363a1c1f..466a1e9a0fb07 100755 --- a/emcc +++ b/emcc @@ -119,11 +119,16 @@ if len(sys.argv) == 1: exit(1) if sys.argv[1] == '--version': - print '''emcc (Emscripten GCC-like replacement) 2.0 -Copyright (C) 2012 the Emscripten authors. + revision = '(unknown revision)' + try: + revision = execute(['git', 'show'], stdout=PIPE)[0].split('\n')[0] + except: + pass + print '''emcc (Emscripten GCC-like replacement) %s (%s) +Copyright (C) 2013 the Emscripten authors (see AUTHORS.txt) This is free and open source software under the MIT license. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - ''' + ''' % (shared.EMSCRIPTEN_VERSION, revision) exit(0) elif sys.argv[1] == '--help': this = os.path.basename('em++' if os.environ.get('EMMAKEN_CXX') else 'emcc') From 13c0ad5f16dda77c8ad5329f198286d1efbbbcb9 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 11:26:12 +0100 Subject: [PATCH 063/326] disable closure if debug info was requested (-g) --- emcc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/emcc b/emcc index 466a1e9a0fb07..ce84773d8a530 100755 --- a/emcc +++ b/emcc @@ -182,6 +182,12 @@ Options that are modified or new in %s include: the last compilation phase from bitcode to JavaScript, or else we will remove it by default in -O1 and above. + In -O0, line numbers wil be shown in the + generated code. In -O1 and above, the optimizer + removes those comments. This flag does however + have the effect of disabling anything that + causes name mangling or minification (closure + or the registerize pass). --typed-arrays 0: No typed arrays 1: Parallel typed arrays @@ -886,6 +892,10 @@ try: if shared.Settings.CORRECT_SIGNS >= 2 or shared.Settings.CORRECT_OVERFLOWS >= 2 or shared.Settings.CORRECT_ROUNDINGS >= 2: keep_debug = True # must keep debug info to do line-by-line operations + if keep_debug and closure: + print >> sys.stderr, 'emcc: warning: disabling closure because debug info was requested' + closure = False + if minify_whitespace is None: minify_whitespace = closure # if closure is run, minify whitespace From d646177eae20378a379c5651d2150a81566a945c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 11:27:12 +0100 Subject: [PATCH 064/326] use registerize only when not keeping debug, and also use it when closure is disabled, not just ASM_JS mode (which is just one case where closure is disabled) --- emcc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/emcc b/emcc index ce84773d8a530..e971d9555037d 100755 --- a/emcc +++ b/emcc @@ -1231,8 +1231,9 @@ try: if DEBUG: print >> sys.stderr, 'emcc: running closure' final = shared.Building.closure_compiler(final) if DEBUG: save_intermediate('closure') - elif shared.Settings.ASM_JS and shared.Settings.RELOOP: - js_optimizer_queue += ['registerize'] # we can't use closure in asm, but this does much of the same + elif shared.Settings.RELOOP and not closure and not keep_debug: + # do this if closure is not enabled (it gives similar speedups), and we do not need to keep debug info around + js_optimizer_queue += ['registerize'] if opt_level >= 1: if DEBUG: print >> sys.stderr, 'emcc: running post-closure post-opts' From 1ae2a2654a84f68d4b2618db6ccb2bb8336824b7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 12:35:16 +0100 Subject: [PATCH 065/326] fix registerize bug on functions with arguments but no locals --- tools/js-optimizer.js | 2 +- tools/test-js-optimizer-regs-output.js | 4 ++++ tools/test-js-optimizer-regs.js | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/js-optimizer.js b/tools/js-optimizer.js index efbfa8aa60a32..f2dc516a2441d 100644 --- a/tools/js-optimizer.js +++ b/tools/js-optimizer.js @@ -1598,7 +1598,7 @@ function registerize(ast) { fun[2].push(reg); } } - getStatements(fun).unshift(['var', vars]); + if (vars.length > 0) getStatements(fun).unshift(['var', vars]); } } else { //printErr('unfake params: \n\n' + astToSrc(fun) + '\n\n'); diff --git a/tools/test-js-optimizer-regs-output.js b/tools/test-js-optimizer-regs-output.js index 36006b7c74165..fe7de5fb836f7 100644 --- a/tools/test-js-optimizer-regs-output.js +++ b/tools/test-js-optimizer-regs-output.js @@ -225,4 +225,8 @@ function switchey(r1) { r9 = r1 + 2; pp(r9); } +function __ZN14NetworkAddressC1EPKcti(r1) { + __ZN14NetworkAddressC2EPKcti(r1); + return; +} diff --git a/tools/test-js-optimizer-regs.js b/tools/test-js-optimizer-regs.js index 4802afa339291..3013e518851a2 100644 --- a/tools/test-js-optimizer-regs.js +++ b/tools/test-js-optimizer-regs.js @@ -230,4 +230,8 @@ function switchey(x) { var aaa = x+2; pp(aaa); } -// EMSCRIPTEN_GENERATED_FUNCTIONS: ["test", "primes", "atomic", "fcntl_open", "ex", "switchey"] +function __ZN14NetworkAddressC1EPKcti($this) { + __ZN14NetworkAddressC2EPKcti($this); + return; +} +// EMSCRIPTEN_GENERATED_FUNCTIONS: ["test", "primes", "atomic", "fcntl_open", "ex", "switchey", "__ZN14NetworkAddressC1EPKcti"] From f9b489d426c89d9cab2ed372bd0a16b8bca5fa0e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 12:42:36 +0100 Subject: [PATCH 066/326] default closure to off in all optimization levels - we rely on registerize for much faster effects on runtime speed --- emcc | 13 +++++++------ tests/runner.py | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/emcc b/emcc index e971d9555037d..027f25c7abe17 100755 --- a/emcc +++ b/emcc @@ -153,9 +153,7 @@ Options that are modified or new in %s include: compiling to JavaScript, not to intermediate bitcode. -O2 As -O1, plus the relooper (loop recreation), - plus closure compiler advanced opts, plus - LLVM -O2 optimizations - Warning: Compiling with this takes a long time! + plus LLVM -O2 optimizations -O3 As -O2, plus dangerous optimizations that may break the generated code! This is not recommended at all, see the wiki for more @@ -204,8 +202,12 @@ Options that are modified or new in %s include: (see --llvm-opts), setting this to 1 has no effect. - --closure 0: No closure compiler (default in -O0, -O1) - 1: Run closure compiler (default in -O2, -O3) + --closure 0: No closure compiler (default) + 1: Run closure compiler. This greatly reduces + code size and may in some cases increase + runtime speed (although the opposite can also + occur). Note that it takes time to run, and + may require some changes to the code. --js-transform will be called on the generated code before it is optimized. This lets you modify @@ -749,7 +751,6 @@ try: if llvm_opts is None: llvm_opts = LLVM_OPT_LEVEL[opt_level] if llvm_lto is None: llvm_lto = llvm_opts > 0 - if closure is None: closure = 1 if opt_level >= 2 else 0 if opt_level <= 0: keep_debug = True # always keep debug in -O0 if DEBUG: start_time = time.time() # done after parsing arguments, which might affect debug state diff --git a/tests/runner.py b/tests/runner.py index ee710fc9dcb76..45d41ace7d007 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8296,9 +8296,9 @@ def test_emcc(self): (['-o', 'something.js', '-O0'], 0, None, 0, 0), (['-o', 'something.js', '-O1'], 1, None, 0, 0), (['-o', 'something.js', '-O1', '--closure', '1'], 1, None, 1, 0), - (['-o', 'something.js', '-O2'], 2, None, 1, 1), + (['-o', 'something.js', '-O2'], 2, None, 0, 1), (['-o', 'something.js', '-O2', '--closure', '0'], 2, None, 0, 0), - (['-o', 'something.js', '-O3'], 3, None, 1, 1), + (['-o', 'something.js', '-O3'], 3, None, 0, 1), (['-o', 'something.js', '-O3', '--closure', '0'], 3, None, 0, 0), # and, test compiling to bitcode first (['-o', 'something.bc'], 0, [], 0, 0), From 19ddf18ebd642e4b01d7097c2cf92548f160d55e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 12:46:19 +0100 Subject: [PATCH 067/326] remove no longer needed --closure 0 from some tests --- tests/runner.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 45d41ace7d007..8c59442b14b22 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8156,11 +8156,11 @@ def setUp(self): exec('o1 = make_run("o1", compiler=CLANG, emcc_args=["-O1", "-s", "SAFE_HEAP=1"])') # Make one run with -O2, but without closure (we enable closure in specific tests, otherwise on everything it is too slow) - exec('o2 = make_run("o2", compiler=CLANG, emcc_args=["-O2", "--closure", "0"])') + exec('o2 = make_run("o2", compiler=CLANG, emcc_args=["-O2"])') # asm.js - #exec('asm = make_run("asm", compiler=CLANG, emcc_args=["-O0", "--closure", "0", "-s", "ASM_JS=1"])') - exec('asm2 = make_run("asm2", compiler=CLANG, emcc_args=["-O2", "--closure", "0", "-s", "ASM_JS=1"])') + #exec('asm = make_run("asm", compiler=CLANG, emcc_args=["-O0", "-s", "ASM_JS=1"])') + exec('asm2 = make_run("asm2", compiler=CLANG, emcc_args=["-O2", "-s", "ASM_JS=1"])') # Make custom runs with various options for compiler, quantum, embetter, typed_arrays, llvm_opts in [ @@ -9083,7 +9083,7 @@ def test_link_memcpy(self): return 0; } ''') - Popen([PYTHON, EMCC, '-O2', '--closure', '-0', os.path.join(self.get_dir(), 'main.cpp')]).communicate() + Popen([PYTHON, EMCC, '-O2', os.path.join(self.get_dir(), 'main.cpp')]).communicate() output = run_js(os.path.join(self.get_dir(), 'a.out.js'), full_output=True, stderr=PIPE) self.assertContained('''0:0 1:1 @@ -10594,10 +10594,10 @@ def test_runtimelink(self): main, supp = self.setup_runtimelink_test() open(self.in_dir('supp.cpp'), 'w').write(supp) - Popen([PYTHON, EMCC, self.in_dir('supp.cpp'), '-o', 'supp.js', '-s', 'LINKABLE=1', '-s', 'NAMED_GLOBALS=1', '-s', 'BUILD_AS_SHARED_LIB=2', '-O2', '--closure', '0']).communicate() + Popen([PYTHON, EMCC, self.in_dir('supp.cpp'), '-o', 'supp.js', '-s', 'LINKABLE=1', '-s', 'NAMED_GLOBALS=1', '-s', 'BUILD_AS_SHARED_LIB=2', '-O2']).communicate() shutil.move(self.in_dir('supp.js'), self.in_dir('supp.so')) - self.btest(main, args=['-s', 'LINKABLE=1', '-s', 'NAMED_GLOBALS=1', '-s', 'RUNTIME_LINKED_LIBS=["supp.so"]', '-DBROWSER=1', '-O2', '--closure', '0'], expected='76') + self.btest(main, args=['-s', 'LINKABLE=1', '-s', 'NAMED_GLOBALS=1', '-s', 'RUNTIME_LINKED_LIBS=["supp.so"]', '-DBROWSER=1', '-O2'], expected='76') def test_pre_run_deps(self): # Adding a dependency in preRun will delay run @@ -11518,7 +11518,7 @@ def test_emcc_caching(self): try_delete(basebc_name) # we might need to check this file later try_delete(dcebc_name) # we might need to check this file later for ll_name in ll_names: try_delete(ll_name) - output = self.do([EMCC, '-O' + str(i), '--closure', '0', '-s', 'RELOOP=0', '--llvm-lto', '0', path_from_root('tests', filename)]) + output = self.do([EMCC, '-O' + str(i), '-s', 'RELOOP=0', '--llvm-lto', '0', path_from_root('tests', filename)]) #print output assert INCLUDING_MESSAGE.replace('X', libname) in output if libname == 'libc': @@ -11566,7 +11566,7 @@ def test_relooper(self): print >> sys.stderr, phase, i opt = min(i, 2) try_delete('a.out.js') - output = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_loop.cpp'), '-O' + str(opt), '--closure', '0'], + output = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_loop.cpp'), '-O' + str(opt)], stdout=PIPE, stderr=PIPE).communicate() self.assertContained('hello, world!', run_js('a.out.js')) output = '\n'.join(output) @@ -11626,7 +11626,7 @@ def test_jcache(self): ]: print >> sys.stderr, args, input_file, expect_pre_save, expect_pre_load, expect_funcs_save, expect_funcs_load, expect_jsfuncs_save, expect_jsfuncs_load, expected self.clear() - out, err = Popen([PYTHON, EMCC, '-O2', '--closure', '0', path_from_root('tests', input_file)] + args, stdout=PIPE, stderr=PIPE).communicate() + out, err = Popen([PYTHON, EMCC, '-O2', path_from_root('tests', input_file)] + args, stdout=PIPE, stderr=PIPE).communicate() errtail = err.split('emcc invocation')[-1] self.assertContained('hello, world!', run_js('a.out.js'), errtail) assert (PRE_SAVE_MSG in err) == expect_pre_save, errtail From f894e88c3144aec452dc9827b3fb751f3e0f24a6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 12:48:19 +0100 Subject: [PATCH 068/326] remove not-yet-needed assert in addFunction --- src/runtime.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime.js b/src/runtime.js index 95c74647f3945..74d6880b70b2c 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -357,7 +357,7 @@ var Runtime = { }, addFunction: function(func, sig) { - assert(sig); + //assert(sig); // TODO: support asm var table = FUNCTION_TABLE; // TODO: support asm var ret = table.length; table.push(func); From 949311fde73446d011d2a04eab0bf06c519a405b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 12:54:50 +0100 Subject: [PATCH 069/326] remove asm memory masking per the new spec --- src/parseTools.js | 8 -------- src/preamble.js | 4 ---- 2 files changed, 12 deletions(-) diff --git a/src/parseTools.js b/src/parseTools.js index e081d0decaddb..c9c48b73a71ae 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -976,12 +976,6 @@ function checkSafeHeap() { return SAFE_HEAP === 1 || checkSpecificSafeHeap(); } -if (ASM_JS) { - var hexMemoryMask = '0x' + (TOTAL_MEMORY-1).toString(16); - var decMemoryMask = (TOTAL_MEMORY-1).toString(); - var memoryMask = hexMemoryMask.length <= decMemoryMask.length ? hexMemoryMask : decMemoryMask; -} - function getHeapOffset(offset, type, forceAsm) { if (USE_TYPED_ARRAYS !== 2) { return offset; @@ -991,7 +985,6 @@ function getHeapOffset(offset, type, forceAsm) { } var shifts = Math.log(Runtime.getNativeTypeSize(type))/Math.LN2; offset = '(' + offset + ')'; - if (ASM_JS && (phase == 'funcs' || forceAsm)) offset = '(' + offset + '&' + memoryMask + ')'; if (shifts != 0) { return '(' + offset + '>>' + shifts + ')'; } else { @@ -1070,7 +1063,6 @@ function makeGetTempDouble(i, type, forSet) { // get an aliased part of the temp var ptr = getFastValue('tempDoublePtr', '+', Runtime.getNativeTypeSize(type)*i); var offset; if (type == 'double') { - if (ASM_JS) ptr = '(' + ptr + ')&' + memoryMask; offset = '(' + ptr + ')>>3'; } else { offset = getHeapOffset(ptr, type); diff --git a/src/preamble.js b/src/preamble.js index aab50e9a9dae4..f168f5d5b0712 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -655,11 +655,7 @@ function enlargeMemory() { #endif var TOTAL_STACK = Module['TOTAL_STACK'] || {{{ TOTAL_STACK }}}; -#if ASM_JS == 0 var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || {{{ TOTAL_MEMORY }}}; -#else -var TOTAL_MEMORY = {{{ TOTAL_MEMORY }}}; // in asm, we hardcode the mask, so cannot adjust memory at runtime -#endif var FAST_MEMORY = Module['FAST_MEMORY'] || {{{ FAST_MEMORY }}}; // Initialize the runtime's memory From a124fadbf7fd210a7a6f6649dc7147438215d6ce Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 13:59:48 +0100 Subject: [PATCH 070/326] another gl workaround --- src/library_gl.js | 8 ++ tests/gl_ps_workaround2.c | 230 ++++++++++++++++++++++++++++++++++++++ tests/runner.py | 5 +- 3 files changed, 242 insertions(+), 1 deletion(-) create mode 100644 tests/gl_ps_workaround2.c diff --git a/src/library_gl.js b/src/library_gl.js index 1f6647177f964..9ee379d0db2c1 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1018,6 +1018,10 @@ var LibraryGL = { if (cap == 0x0B60 /* GL_FOG */) { GLEmulation.fogEnabled = true; return; + } else if (cap == 0x0de1 /* GL_TEXTURE_2D */) { + // XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support + // it by forwarding to glEnableClientState + _glEnableClientState(cap); } else if (!(cap in validCapabilities)) { return; } @@ -1028,6 +1032,10 @@ var LibraryGL = { if (cap == 0x0B60 /* GL_FOG */) { GLEmulation.fogEnabled = false; return; + } else if (cap == 0x0de1 /* GL_TEXTURE_2D */) { + // XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support + // it by forwarding to glDisableClientState + _glDisableClientState(cap); } else if (!(cap in validCapabilities)) { return; } diff --git a/tests/gl_ps_workaround2.c b/tests/gl_ps_workaround2.c new file mode 100644 index 0000000000000..e5bd2fd1aa202 --- /dev/null +++ b/tests/gl_ps_workaround2.c @@ -0,0 +1,230 @@ +/******************************************************************* + * * + * Using SDL With OpenGL * + * * + * Tutorial by Kyle Foley (sdw) * + * * + * http://gpwiki.org/index.php/SDL:Tutorials:Using_SDL_with_OpenGL * + * * + *******************************************************************/ + +/* +THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION +AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN. + +THE ORIGINAL AUTHOR IS KYLE FOLEY. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +#if !EMSCRIPTEN +#define USE_GLEW 1 +#endif + +#if USE_GLEW +#include "GL/glew.h" +#endif + +#include "SDL/SDL.h" +#include "SDL/SDL_image.h" +#if !USE_GLEW +#include "SDL/SDL_opengl.h" +#endif + +#include +#include +#include + +void shaders() { +#if USE_GLEW + glewInit(); +#endif + + GLint ok; + + const char *vertexShader = "void main(void) \n" + "{ \n" + " gl_Position = ftransform(); \n" + " gl_TexCoord[0] = gl_MultiTexCoord0; \n" + " gl_FrontColor = gl_Color; \n" + "} \n"; + const char *fragmentShader = "uniform sampler2D tex0; \n" + "void main(void) \n" + "{ \n" + " gl_FragColor = gl_Color * texture2D(tex0, gl_TexCoord[0].xy); \n" + "} \n"; + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &vertexShader, NULL); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &ok); + assert(ok); + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, &fragmentShader, NULL); + glCompileShader(fs); + glGetShaderiv(fs, GL_COMPILE_STATUS, &ok); + assert(ok); + + GLuint program = glCreateProgram(); + + glAttachShader(program, vs); + glAttachShader(program, fs); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &ok); + assert(ok); + + glUseProgram(program); +} + +int main(int argc, char *argv[]) +{ + SDL_Surface *screen; + + // Slightly different SDL initialization + if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { + printf("Unable to initialize SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); // *new* + + screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL ); // *changed* + if ( !screen ) { + printf("Unable to set video mode: %s\n", SDL_GetError()); + return 1; + } + + // Set the OpenGL state after creating the context with SDL_SetVideoMode + + glClearColor( 0, 0, 0, 0 ); + +#if !EMSCRIPTEN + glEnable( GL_TEXTURE_2D ); // Need this to display a texture XXX unnecessary in OpenGL ES 2.0/WebGL +#endif + + glViewport( 0, 0, 640, 480 ); + + glMatrixMode( GL_PROJECTION ); + GLfloat matrixData[] = { 2.0/640, 0, 0, 0, + 0, -2.0/480, 0, 0, + 0, 0, -1, 0, + -1, 1, 0, 1 }; + glLoadMatrixf(matrixData); // test loadmatrix + + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + + // Load the OpenGL texture + + GLuint texture; // Texture object handle + SDL_Surface *surface; // Gives us the information to make the texture + + if ( (surface = IMG_Load("screenshot.png")) ) { + + // Check that the image's width is a power of 2 + if ( (surface->w & (surface->w - 1)) != 0 ) { + printf("warning: image.bmp's width is not a power of 2\n"); + } + + // Also check if the height is a power of 2 + if ( (surface->h & (surface->h - 1)) != 0 ) { + printf("warning: image.bmp's height is not a power of 2\n"); + } + + // Have OpenGL generate a texture object handle for us + glGenTextures( 1, &texture ); + + // Bind the texture object + glBindTexture( GL_TEXTURE_2D, texture ); + + // Set the texture's stretching properties + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + + //SDL_LockSurface(surface); + + // Add some greyness + memset(surface->pixels, 0x66, surface->w*surface->h); + + // Edit the texture object's image data using the information SDL_Surface gives us + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0, + GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels ); + + //SDL_UnlockSurface(surface); + } + else { + printf("SDL could not load image.bmp: %s\n", SDL_GetError()); + SDL_Quit(); + return 1; + } + + // Free the SDL_Surface only if it was successfully created + if ( surface ) { + SDL_FreeSurface( surface ); + } + + // Clear the screen before drawing + glClear( GL_COLOR_BUFFER_BIT ); + + shaders(); + + // Bind the texture to which subsequent calls refer to + glBindTexture( GL_TEXTURE_2D, texture ); + + // Use clientside vertex pointers to render two items. In this test we have each + // attribute in a separate buffer, packed (i.e. stride == 0) + GLfloat vertexData[] = { 10, 10, + 300, 10, + 300, 128, + 10, 128, + 410, 10, + 600, 10, + 630, 200, + 310, 250, + 100, 300, + 300, 300, + 300, 400, + 100, 400 }; + GLfloat textureData[] = { 0, 0, + 1, 0, + 1, 1, + 0, 1, + 0, 0.5, + 1, 0.5, + 1, 1, + 0.5, 1, + 0, 0, + 1, 0, + 1, 1, + 0, 1, }; + + glEnable(GL_TEXTURE_2D); // XXX should be GL_TEXTURE_COORD_ARRAY); and also glEnableClientState! XXX two workarounds here + glTexCoordPointer(2, GL_FLOAT, 0, textureData); + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, vertexData); + + glDrawArrays(GL_QUADS, 0, 12); + + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + + SDL_GL_SwapBuffers(); + +#if !EMSCRIPTEN + // Wait for 3 seconds to give us a chance to see the image + SDL_Delay(3000); +#endif + + // Now we can delete the OpenGL texture and close down SDL + glDeleteTextures( 1, &texture ); + + SDL_Quit(); + + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 8c59442b14b22..62a35179798c7 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10453,10 +10453,13 @@ def test_gl_ps_packed(self): self.btest('gl_ps_packed.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) def test_gl_ps_workaround(self): - # packed data that needs to be strided shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.btest('gl_ps_workaround.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) + def test_gl_ps_workaround2(self): + shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) + self.btest('gl_ps_workaround2.c', reference='gl_ps.png', args=['--preload-file', 'screenshot.png']) + def test_matrix_identity(self): self.btest('gl_matrix_identity.c', expected=['-1882984448', '460451840']) From 3e0fa38db893f089de92ebe255301ff391f25793 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 15:40:39 +0100 Subject: [PATCH 071/326] remove PGO option. It is only relevant for non-ta2 builds, which are on the way to deprecation, and it in the best case is not a precise optimization but an optimistic one --- src/compiler.js | 8 +------ src/parseTools.js | 8 ++----- src/preamble.js | 61 +++-------------------------------------------- src/settings.js | 9 ------- tests/runner.py | 3 +-- 5 files changed, 7 insertions(+), 82 deletions(-) diff --git a/src/compiler.js b/src/compiler.js index 25c306cf56c8e..a615d9841c024 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -160,12 +160,6 @@ if (SAFE_HEAP >= 2) { SAFE_HEAP_LINES = set(SAFE_HEAP_LINES); // for fast checking } -if (PGO) { // by default, correct everything during PGO - CORRECT_SIGNS = CORRECT_SIGNS || 1; - CORRECT_OVERFLOWS = CORRECT_OVERFLOWS || 1; - CORRECT_ROUNDINGS = CORRECT_ROUNDINGS || 1; -} - EXPORTED_FUNCTIONS = set(EXPORTED_FUNCTIONS); EXPORTED_GLOBALS = set(EXPORTED_GLOBALS); EXCEPTION_CATCHING_WHITELIST = set(EXCEPTION_CATCHING_WHITELIST); @@ -185,7 +179,7 @@ assert(!(!NAMED_GLOBALS && BUILD_AS_SHARED_LIB)); // shared libraries must have if (phase == 'pre') { if (!MICRO_OPTS || !RELOOP || ASSERTIONS || CHECK_SIGNS || CHECK_OVERFLOWS || INIT_STACK || INIT_HEAP || - !SKIP_STACK_IN_SMALL || SAFE_HEAP || PGO || PROFILE || !DISABLE_EXCEPTION_CATCHING) { + !SKIP_STACK_IN_SMALL || SAFE_HEAP || PROFILE || !DISABLE_EXCEPTION_CATCHING) { print('// Note: Some Emscripten settings will significantly limit the speed of the generated code.'); } else { print('// Note: For maximum-speed code, see "Optimizing Code" on the Emscripten wiki, https://github.com/kripken/emscripten/wiki/Optimizing-Code'); diff --git a/src/parseTools.js b/src/parseTools.js index c9c48b73a71ae..ca9ad40a519d4 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1709,9 +1709,7 @@ function handleOverflow(text, bits) { if (!bits) return text; var correct = correctOverflows(); warnOnce(!correct || bits <= 32, 'Cannot correct overflows of this many bits: ' + bits); - if (CHECK_OVERFLOWS) return 'CHECK_OVERFLOW(' + text + ', ' + bits + ', ' + Math.floor(correctSpecificOverflow() && !PGO) + ( - PGO ? ', "' + Debugging.getIdentifier() + '"' : '' - ) + ')'; + if (CHECK_OVERFLOWS) return 'CHECK_OVERFLOW(' + text + ', ' + bits + ', ' + Math.floor(correctSpecificOverflow()) + ')'; if (!correct) return text; if (bits == 32) { return '((' + text + ')|0)'; @@ -1819,9 +1817,7 @@ function makeSignOp(value, type, op, force, ignore) { var bits, full; if (type in Runtime.INT_TYPES) { bits = parseInt(type.substr(1)); - full = op + 'Sign(' + value + ', ' + bits + ', ' + Math.floor(ignore || (correctSpecificSign() && !PGO)) + ( - PGO ? ', "' + (ignore ? '' : Debugging.getIdentifier()) + '"' : '' - ) + ')'; + full = op + 'Sign(' + value + ', ' + bits + ', ' + Math.floor(ignore || (correctSpecificSign())) + ')'; // Always sign/unsign constants at compile time, regardless of CHECK/CORRECT if (isNumber(value)) { return eval(full).toString(); diff --git a/src/preamble.js b/src/preamble.js index f168f5d5b0712..3c206def3c0d3 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -150,52 +150,6 @@ function SAFE_HEAP_COPY_HISTORY(dest, src) { //========================================== #endif -var CorrectionsMonitor = { -#if PGO - MAX_ALLOWED: Infinity, -#else - MAX_ALLOWED: 0, // XXX -#endif - corrections: 0, - sigs: {}, - - note: function(type, succeed, sig) { - if (!succeed) { - this.corrections++; - if (this.corrections >= this.MAX_ALLOWED) abort('\n\nToo many corrections!'); - } -#if PGO - if (!sig) - sig = (new Error().stack).toString().split('\n')[2].split(':').slice(-1)[0]; // Spidermonkey-specific FIXME - sig = type + '|' + sig; - if (!this.sigs[sig]) { - //Module.print('Correction: ' + sig); - this.sigs[sig] = [0, 0]; // fail, succeed - } - this.sigs[sig][succeed ? 1 : 0]++; -#endif - }, - - print: function() { -#if PGO - var items = []; - for (var sig in this.sigs) { - items.push({ - sig: sig, - fails: this.sigs[sig][0], - succeeds: this.sigs[sig][1], - total: this.sigs[sig][0] + this.sigs[sig][1] - }); - } - items.sort(function(x, y) { return y.total - x.total; }); - for (var i = 0; i < items.length; i++) { - var item = items[i]; - Module.print(item.sig + ' : ' + item.total + ' hits, %' + (Math.ceil(100*item.fails/item.total)) + ' failures'); - } -#endif - } -}; - #if CHECK_OVERFLOWS //======================================== // Debugging tools - Mathop overflows @@ -207,11 +161,11 @@ function CHECK_OVERFLOW(value, bits, ignore, sig) { // For signedness issue here, see settings.js, CHECK_SIGNED_OVERFLOWS #if CHECK_SIGNED_OVERFLOWS if (value === Infinity || value === -Infinity || value >= twopbits1 || value < -twopbits1) { - CorrectionsMonitor.note('SignedOverflow', 0, sig); - if (value === Infinity || value === -Infinity || Math.abs(value) >= twopbits) CorrectionsMonitor.note('Overflow'); + throw 'SignedOverflow'; + if (value === Infinity || value === -Infinity || Math.abs(value) >= twopbits) throw 'Overflow'; #else if (value === Infinity || value === -Infinity || Math.abs(value) >= twopbits) { - CorrectionsMonitor.note('Overflow', 0, sig); + throw 'Overflow'; #endif #if CORRECT_OVERFLOWS // Fail on >32 bits - we warned at compile time @@ -219,12 +173,6 @@ function CHECK_OVERFLOW(value, bits, ignore, sig) { value = value & (twopbits - 1); } #endif - } else { -#if CHECK_SIGNED_OVERFLOWS - CorrectionsMonitor.note('SignedOverflow', 1, sig); -#endif - CorrectionsMonitor.note('Overflow', 1, sig); - } return value; } #endif @@ -769,9 +717,6 @@ function preMain() { } function exitRuntime() { callRuntimeCallbacks(__ATEXIT__); - - // Print summary of correction activity - CorrectionsMonitor.print(); } // Tools diff --git a/src/settings.js b/src/settings.js index 23898195c8781..8e8144f058f9b 100644 --- a/src/settings.js +++ b/src/settings.js @@ -205,15 +205,6 @@ var FS_LOG = 0; // Log all FS operations. This is especially helpful when you'r // a new project and want to see a list of file system operations happening // so that you can create a virtual file system with all of the required files. -var PGO = 0; // Profile-guided optimization. - // When run with the CHECK_* options, will not fail on errors. Instead, will - // keep a record of which checks succeeded and which failed. On shutdown, will - // print out that information. This is useful for knowing which lines need - // checking enabled and which do not, that is, this is a way to automate the - // generation of line data for CORRECT_*_LINES options. - // All CORRECT_* options default to 1 with PGO builds. - // See https://github.com/kripken/emscripten/wiki/Optimizing-Code for more info - var NAMED_GLOBALS = 0; // If 1, we use global variables for globals. Otherwise // they are referred to by a base plus an offset (called an indexed global), // saving global variables but adding runtime overhead. diff --git a/tests/runner.py b/tests/runner.py index 62a35179798c7..0e31c895b9bf9 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -6855,7 +6855,7 @@ def test_sqlite(self): if self.emcc_args is None: return self.skip('Very slow without ta2, and we would also need to include dlmalloc manually without emcc') if Settings.QUANTUM_SIZE == 1: return self.skip('TODO FIXME') - Settings.CORRECT_SIGNS = 1 # XXX: in default, we fail with 2 here, even though the pgo_data should be correct (and works in s_0_0). Investigate this. + Settings.CORRECT_SIGNS = 1 Settings.CORRECT_OVERFLOWS = 0 Settings.CORRECT_ROUNDINGS = 0 if self.emcc_args is None: Settings.SAFE_HEAP = 0 # uses time.h to set random bytes, other stuff @@ -8123,7 +8123,6 @@ def setUp(self): Settings.ASSERTIONS = 1-embetter Settings.SAFE_HEAP = 1-(embetter and llvm_opts) Building.LLVM_OPTS = llvm_opts - Settings.PGO = 0 Settings.CHECK_OVERFLOWS = 1-(embetter or llvm_opts) Settings.CORRECT_OVERFLOWS = 1-(embetter and llvm_opts) Settings.CORRECT_SIGNS = 0 From 00f4a4148a96cdffa0a9606f077ff294aa3b1f8c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 15:45:36 +0100 Subject: [PATCH 072/326] remove PROFILE option. It adds unacceptable overhead, and all browsers have proper JS profilers these days - use those --- src/compiler.js | 2 +- src/jsifier.js | 15 --------------- src/library.js | 30 ------------------------------ src/preamble.js | 33 --------------------------------- src/settings.js | 4 ---- tests/runner.py | 36 ------------------------------------ 6 files changed, 1 insertion(+), 119 deletions(-) diff --git a/src/compiler.js b/src/compiler.js index a615d9841c024..0b43842ebd7ea 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -179,7 +179,7 @@ assert(!(!NAMED_GLOBALS && BUILD_AS_SHARED_LIB)); // shared libraries must have if (phase == 'pre') { if (!MICRO_OPTS || !RELOOP || ASSERTIONS || CHECK_SIGNS || CHECK_OVERFLOWS || INIT_STACK || INIT_HEAP || - !SKIP_STACK_IN_SMALL || SAFE_HEAP || PROFILE || !DISABLE_EXCEPTION_CATCHING) { + !SKIP_STACK_IN_SMALL || SAFE_HEAP || !DISABLE_EXCEPTION_CATCHING) { print('// Note: Some Emscripten settings will significantly limit the speed of the generated code.'); } else { print('// Note: For maximum-speed code, see "Optimizing Code" on the Emscripten wiki, https://github.com/kripken/emscripten/wiki/Optimizing-Code'); diff --git a/src/jsifier.js b/src/jsifier.js index 761a5fec1c65f..9fbcf5a89f1d8 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -631,15 +631,6 @@ function JSify(data, functionsOnly, givenFunctions) { } } - if (PROFILE) { - func.JS += ' if (PROFILING) { ' - + 'var __parentProfilingNode__ = PROFILING_NODE; PROFILING_NODE = PROFILING_NODE.children["' + func.ident + '"]; ' - + 'if (!PROFILING_NODE) __parentProfilingNode__.children["' + func.ident + '"] = PROFILING_NODE = { time: 0, children: {}, calls: 0 };' - + 'PROFILING_NODE.calls++; ' - + 'var __profilingStartTime__ = Date.now() ' - + '}\n'; - } - if (true) { // TODO: optimize away when not needed if (CLOSURE_ANNOTATIONS) func.JS += '/** @type {number} */'; func.JS += ' var label = 0;\n'; @@ -1145,12 +1136,6 @@ function JSify(data, functionsOnly, givenFunctions) { }); makeFuncLineActor('return', function(item) { var ret = RuntimeGenerator.stackExit(item.funcData.initialStack, item.funcData.otherStackAllocations) + ';\n'; - if (PROFILE) { - ret += 'if (PROFILING) { ' - + 'PROFILING_NODE.time += Date.now() - __profilingStartTime__; ' - + 'PROFILING_NODE = __parentProfilingNode__ ' - + '}\n'; - } if (LABEL_DEBUG && functionNameFilterTest(item.funcData.ident)) { ret += "Module.print(INDENT + 'Exiting: " + item.funcData.ident + "');\n" + "INDENT = INDENT.substr(0, INDENT.length-2);\n"; diff --git a/src/library.js b/src/library.js index ffac685b44ca4..4ebec526ad355 100644 --- a/src/library.js +++ b/src/library.js @@ -7305,36 +7305,6 @@ LibraryManager.library = { emscripten_random: function() { return Math.random(); }, - - $Profiling: { - max_: 0, - times: null, - invalid: 0, - dump: function() { - if (Profiling.invalid) { - Module.printErr('Invalid # of calls to Profiling begin and end!'); - return; - } - Module.printErr('Profiling data:') - for (var i = 0; i < Profiling.max_; i++) { - Module.printErr('Block ' + i + ': ' + Profiling.times[i]); - } - } - }, - EMSCRIPTEN_PROFILE_INIT__deps: ['$Profiling'], - EMSCRIPTEN_PROFILE_INIT: function(max_) { - Profiling.max_ = max_; - Profiling.times = new Array(max_); - for (var i = 0; i < max_; i++) Profiling.times[i] = 0; - }, - EMSCRIPTEN_PROFILE_BEGIN__inline: function(id) { - return 'Profiling.times[' + id + '] -= Date.now();' - + 'Profiling.invalid++;' - }, - EMSCRIPTEN_PROFILE_END__inline: function(id) { - return 'Profiling.times[' + id + '] += Date.now();' - + 'Profiling.invalid--;' - } }; function autoAddDeps(object, name) { diff --git a/src/preamble.js b/src/preamble.js index 3c206def3c0d3..349bf41e82edc 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -191,39 +191,6 @@ var INDENT = ''; var START_TIME = Date.now(); #endif -#if PROFILE -var PROFILING = 0; -var PROFILING_ROOT = { time: 0, children: {}, calls: 0 }; -var PROFILING_NODE; - -function startProfiling() { - PROFILING_NODE = PROFILING_ROOT; - PROFILING = 1; -} -Module['startProfiling'] = startProfiling; - -function stopProfiling() { - PROFILING = 0; - assert(PROFILING_NODE === PROFILING_ROOT, 'Must have popped all the profiling call stack'); -} -Module['stopProfiling'] = stopProfiling; - -function printProfiling() { - function dumpData(name_, node, indent) { - Module.print(indent + ('________' + node.time).substr(-8) + ': ' + name_ + ' (' + node.calls + ')'); - var children = []; - for (var child in node.children) { - children.push(node.children[child]); - children[children.length-1].name_ = child; - } - children.sort(function(x, y) { return y.time - x.time }); - children.forEach(function(child) { dumpData(child.name_, child, indent + ' ') }); - } - dumpData('root', PROFILING_ROOT, ' '); -} -Module['printProfiling'] = printProfiling; -#endif - //======================================== // Runtime essentials //======================================== diff --git a/src/settings.js b/src/settings.js index 8e8144f058f9b..002e66d4e144a 100644 --- a/src/settings.js +++ b/src/settings.js @@ -154,8 +154,6 @@ var GL_DEBUG = 0; // Print out all calls into WebGL. As with LIBRARY_DEBUG, you // option, in this case GL.debug. var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers are -var PROFILE_MAIN_LOOP = 0; // Profile the function called in set_main_loop - var DISABLE_EXCEPTION_CATCHING = 0; // Disables generating code to actually catch exceptions. If the code you // are compiling does not actually rely on catching exceptions (but the // compiler generates code for it, maybe because of stdlibc++ stuff), @@ -209,8 +207,6 @@ var NAMED_GLOBALS = 0; // If 1, we use global variables for globals. Otherwise // they are referred to by a base plus an offset (called an indexed global), // saving global variables but adding runtime overhead. -var PROFILE = 0; // Enables runtime profiling. See test_profiling for a usage example. - var EXPORT_ALL = 0; // If true, we export all the symbols var EXPORTED_FUNCTIONS = ['_main']; // Functions that are explicitly exported. These functions are kept alive // through LLVM dead code elimination, and also made accessible outside of diff --git a/tests/runner.py b/tests/runner.py index 0e31c895b9bf9..0d44541e28fbf 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7185,41 +7185,6 @@ def test_autodebug(self): ''' self.do_run(src, '''AD:-1,1''', build_ll_hook=self.do_autodebug) - def test_profiling(self): - if Settings.ASM_JS: return self.skip('asm does not support profiling') - - src = ''' - #include - #include - - int main() - { - EMSCRIPTEN_PROFILE_INIT(3); - EMSCRIPTEN_PROFILE_BEGIN(0); - usleep(10 * 1000); - EMSCRIPTEN_PROFILE_END(0); - EMSCRIPTEN_PROFILE_BEGIN(1); - usleep(50 * 1000); - EMSCRIPTEN_PROFILE_END(1); - EMSCRIPTEN_PROFILE_BEGIN(2); - usleep(250 * 1000); - EMSCRIPTEN_PROFILE_END(2); - return 0; - } - ''' - - post1 = ''' -def process(filename): - src = open(filename, 'a') - src.write(\'\'\' - Profiling.dump(); - \'\'\') - src.close() -''' - - self.do_run(src, '''Profiling data: -Block 0: ''', post_build=post1) - ### Integration tests def test_ccall(self): @@ -8132,7 +8097,6 @@ def setUp(self): Settings.INIT_STACK = 0 Settings.RUNTIME_TYPE_INFO = 0 Settings.DISABLE_EXCEPTION_CATCHING = 0 - Settings.PROFILE = 0 Settings.INCLUDE_FULL_LIBRARY = 0 Settings.BUILD_AS_SHARED_LIB = 0 Settings.RUNTIME_LINKED_LIBS = [] From 8b2067d8d74cb7a790652d7ef65756b89c4b6ddd Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 15:48:58 +0100 Subject: [PATCH 073/326] fix indentation --- src/preamble.js | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/preamble.js b/src/preamble.js index 349bf41e82edc..4923aeae20fa0 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -576,37 +576,37 @@ var FAST_MEMORY = Module['FAST_MEMORY'] || {{{ FAST_MEMORY }}}; // Initialize the runtime's memory #if USE_TYPED_ARRAYS // check for full engine support (use string 'subarray' to avoid closure compiler confusion) - assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), - 'Cannot fallback to non-typed array case: Code is too specialized'); +assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), + 'Cannot fallback to non-typed array case: Code is too specialized'); #if USE_TYPED_ARRAYS == 1 - HEAP = IHEAP = new Int32Array(TOTAL_MEMORY); - IHEAPU = new Uint32Array(IHEAP.buffer); +HEAP = IHEAP = new Int32Array(TOTAL_MEMORY); +IHEAPU = new Uint32Array(IHEAP.buffer); #if USE_FHEAP - FHEAP = new Float64Array(TOTAL_MEMORY); +FHEAP = new Float64Array(TOTAL_MEMORY); #endif #endif #if USE_TYPED_ARRAYS == 2 - var buffer = new ArrayBuffer(TOTAL_MEMORY); - HEAP8 = new Int8Array(buffer); - HEAP16 = new Int16Array(buffer); - HEAP32 = new Int32Array(buffer); - HEAPU8 = new Uint8Array(buffer); - HEAPU16 = new Uint16Array(buffer); - HEAPU32 = new Uint32Array(buffer); - HEAPF32 = new Float32Array(buffer); - HEAPF64 = new Float64Array(buffer); - - // Endianness check (note: assumes compiler arch was little-endian) - HEAP32[0] = 255; - assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); +var buffer = new ArrayBuffer(TOTAL_MEMORY); +HEAP8 = new Int8Array(buffer); +HEAP16 = new Int16Array(buffer); +HEAP32 = new Int32Array(buffer); +HEAPU8 = new Uint8Array(buffer); +HEAPU16 = new Uint16Array(buffer); +HEAPU32 = new Uint32Array(buffer); +HEAPF32 = new Float32Array(buffer); +HEAPF64 = new Float64Array(buffer); + +// Endianness check (note: assumes compiler arch was little-endian) +HEAP32[0] = 255; +assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); #endif #else - // Make sure that our HEAP is implemented as a flat array. - HEAP = []; // Hinting at the size with |new Array(TOTAL_MEMORY)| should help in theory but makes v8 much slower - for (var i = 0; i < FAST_MEMORY; i++) { - HEAP[i] = 0; // XXX We do *not* use {{| makeSetValue(0, 'i', 0, 'null') |}} here, since this is done just to optimize runtime speed - } +// Make sure that our HEAP is implemented as a flat array. +HEAP = []; // Hinting at the size with |new Array(TOTAL_MEMORY)| should help in theory but makes v8 much slower +for (var i = 0; i < FAST_MEMORY; i++) { + HEAP[i] = 0; // XXX We do *not* use {{| makeSetValue(0, 'i', 0, 'null') |}} here, since this is done just to optimize runtime speed +} #endif Module['HEAP'] = HEAP; From 49b2b5541557f60ac263e070850ee52bb91898fa Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 15:50:01 +0100 Subject: [PATCH 074/326] typo --- src/preamble.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/preamble.js b/src/preamble.js index 4923aeae20fa0..a5342f894c562 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -633,7 +633,7 @@ STACK_MAX = TOTAL_STACK; // we lose a little stack here, but TOTAL_STACK is nice #if USE_TYPED_ARRAYS == 2 var tempDoublePtr = Runtime.alignMemory(allocate(12, 'i8', ALLOC_STACK), 8); assert(tempDoublePtr % 8 == 0); -function copyTempFloat(ptr) { // functions, because inlining this code is increases code size too much +function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much HEAP8[tempDoublePtr] = HEAP8[ptr]; HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; From d9d2876b0b7370ff99c37483a5f6e97515499e81 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 15:56:23 +0100 Subject: [PATCH 075/326] fix CHECK_OVERFLOW --- src/preamble.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/preamble.js b/src/preamble.js index a5342f894c562..503b09f182909 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -163,15 +163,17 @@ function CHECK_OVERFLOW(value, bits, ignore, sig) { if (value === Infinity || value === -Infinity || value >= twopbits1 || value < -twopbits1) { throw 'SignedOverflow'; if (value === Infinity || value === -Infinity || Math.abs(value) >= twopbits) throw 'Overflow'; + } #else if (value === Infinity || value === -Infinity || Math.abs(value) >= twopbits) { throw 'Overflow'; + } #endif #if CORRECT_OVERFLOWS - // Fail on >32 bits - we warned at compile time - if (bits <= 32) { - value = value & (twopbits - 1); - } + // Fail on >32 bits - we warned at compile time + if (bits <= 32) { + value = value & (twopbits - 1); + } #endif return value; } From b3e9426b9775daf99210f337659a37876013d623 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 17:49:19 +0100 Subject: [PATCH 076/326] memory corruption checker --- src/corruptionCheck.js | 61 ++++++++++++++++++++++++++++++++++++++++++ src/jsifier.js | 4 +++ src/settings.js | 10 +++++++ tests/runner.py | 26 ++++++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 src/corruptionCheck.js diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js new file mode 100644 index 0000000000000..0616337b401a5 --- /dev/null +++ b/src/corruptionCheck.js @@ -0,0 +1,61 @@ + +// See settings.js, CORRUPTION_CHECK + +var CorruptionChecker = { + BUFFER_FACTOR: {{{ CORRUPTION_CHECK }}}, + + ptrs: {}, + + init: function() { + this.realMalloc = _malloc; + _malloc = Module['_malloc'] = this.malloc; + + this.realFree = _free; + _free = Module['_free'] = this.free; + }, + malloc: function(size) { + assert(size > 0); // some mallocs accept zero - fix your code if you want to use this tool + var allocation = CorruptionChecker.realMalloc(size*(1+2*CorruptionChecker.BUFFER_FACTOR)); + var ptr = allocation + size*CorruptionChecker.BUFFER_FACTOR; + assert(!CorruptionChecker.ptrs[ptr]); + CorruptionChecker.ptrs[ptr] = size; + CorruptionChecker.fillBuffer(allocation, size*CorruptionChecker.BUFFER_FACTOR); + CorruptionChecker.fillBuffer(allocation + size*(1+CorruptionChecker.BUFFER_FACTOR), size*CorruptionChecker.BUFFER_FACTOR); + return ptr; + }, + free: function(ptr) { + CorruptionChecker.checkPtr(ptr, true); + }, + canary: function(x) { + return (x + (x << 3) + (x&75) - (x&47))&255; + }, + fillBuffer: function(allocation, size) { + for (var x = allocation; x < allocation + size; x++) { + {{{ makeSetValue('x', 0, 'CorruptionChecker.canary(x)', 'i8') }}}; + } + }, + checkBuffer: function(allocation, size) { + for (var x = allocation; x < allocation + size; x++) { + assert(({{{ makeGetValue('x', 0, 'i8') }}}&255) == CorruptionChecker.canary(x), 'Heap corruption detected!'); + } + }, + checkPtr: function(ptr, free) { + var size = CorruptionChecker.ptrs[ptr]; + assert(size); + var allocation = ptr - size*CorruptionChecker.BUFFER_FACTOR; + CorruptionChecker.checkBuffer(allocation, size*CorruptionChecker.BUFFER_FACTOR); + CorruptionChecker.checkBuffer(allocation + size*(1+CorruptionChecker.BUFFER_FACTOR), size*CorruptionChecker.BUFFER_FACTOR); + if (free) { + delete CorruptionChecker.ptrs[ptr]; + CorruptionChecker.realFree(allocation); + } + }, + checkAll: function() { + for (var ptr in CorruptionChecker.ptrs) { + CorruptionChecker.checkPtr(ptr, false); + } + }, +}; + +CorruptionChecker.init(); + diff --git a/src/jsifier.js b/src/jsifier.js index 9fbcf5a89f1d8..21d34b67a5fd1 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1532,6 +1532,10 @@ function JSify(data, functionsOnly, givenFunctions) { // This is the main 'post' pass. Print out the generated code that we have here, together with the // rest of the output that we started to print out earlier (see comment on the // "Final shape that will be created"). + if (CORRUPTION_CHECK) { + assert(!ASM_JS); // cannot monkeypatch asm! + print(processMacros(read('corruptionCheck.js'))); + } if (PRECISE_I64_MATH && Types.preciseI64MathUsed) { print(read('long.js')); } else { diff --git a/src/settings.js b/src/settings.js index 002e66d4e144a..74176914a1def 100644 --- a/src/settings.js +++ b/src/settings.js @@ -134,6 +134,16 @@ var SAFE_HEAP_LOG = 0; // Log out all SAFE_HEAP operations var ASM_HEAP_LOG = 0; // Simple heap logging, like SAFE_HEAP_LOG but cheaper, and in asm.js +var CORRUPTION_CHECK = 0; // When enabled, will emit a buffer area at the beginning and + // end of each allocation on the heap, filled with canary + // values that can be checked later. Corruption is checked for + // at the end of each at each free() (see jsifier to add more, and you + // can add more manual checks by calling CorruptionChecker.checkAll). + // 0 means not enabled, higher values mean the size of the + // buffer areas as a multiple of the allocated area (so + // 1 means 100%, or buffer areas equal to allocated area, + // both before and after). + var LABEL_DEBUG = 0; // 1: Print out functions as we enter them // 2: Also print out each label as we enter it var LABEL_FUNCTION_FILTERS = []; // Filters for function label debug. diff --git a/tests/runner.py b/tests/runner.py index 0d44541e28fbf..aad97db9a85b3 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7185,6 +7185,32 @@ def test_autodebug(self): ''' self.do_run(src, '''AD:-1,1''', build_ll_hook=self.do_autodebug) + def test_corruption(self): + Settings.CORRUPTION_CHECK = 1 + + src = r''' + #include + #include + #include + int main(int argc, char **argv) { + int size = 1024*argc; + char *buffer = (char*)malloc(size); + #if CORRUPT + memset(buffer, argc, size+15); + #else + memset(buffer, argc, size); + #endif + for (int x = 0; x < size; x += argc*3) buffer[x] = x/3; + int ret = 0; + for (int x = 0; x < size; x++) ret += buffer[x]; + free(buffer); + printf("All ok, %d\n", ret); + } + ''' + + for corrupt in [1]: + self.do_run(src.replace('CORRUPT', str(corrupt)), 'Heap corruption detected!' if corrupt else 'All ok, 4209') + ### Integration tests def test_ccall(self): From 5c89eb1d5abd30e7ac5c8d88ab1d828f4ec4883d Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 17:56:48 +0100 Subject: [PATCH 077/326] print out # of corruption checks on exit --- src/corruptionCheck.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js index 0616337b401a5..ce670401b8d4f 100644 --- a/src/corruptionCheck.js +++ b/src/corruptionCheck.js @@ -5,6 +5,7 @@ var CorruptionChecker = { BUFFER_FACTOR: {{{ CORRUPTION_CHECK }}}, ptrs: {}, + checks: 0, init: function() { this.realMalloc = _malloc; @@ -12,6 +13,10 @@ var CorruptionChecker = { this.realFree = _free; _free = Module['_free'] = this.free; + + __ATEXIT__.push({ func: function() { + Module.printErr('No corruption detected, ran ' + CorruptionChecker.checks + ' checks.'); + } }); }, malloc: function(size) { assert(size > 0); // some mallocs accept zero - fix your code if you want to use this tool @@ -38,6 +43,7 @@ var CorruptionChecker = { for (var x = allocation; x < allocation + size; x++) { assert(({{{ makeGetValue('x', 0, 'i8') }}}&255) == CorruptionChecker.canary(x), 'Heap corruption detected!'); } + CorruptionChecker.checks++; }, checkPtr: function(ptr, free) { var size = CorruptionChecker.ptrs[ptr]; From 926a77a80ea1a2e4c0642dd3bedae520883361b3 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 20:01:40 +0100 Subject: [PATCH 078/326] improve corruption checks --- src/corruptionCheck.js | 16 +++++++++------- src/settings.js | 2 +- tests/runner.py | 3 +++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js index ce670401b8d4f..9c8794cdef136 100644 --- a/src/corruptionCheck.js +++ b/src/corruptionCheck.js @@ -2,7 +2,7 @@ // See settings.js, CORRUPTION_CHECK var CorruptionChecker = { - BUFFER_FACTOR: {{{ CORRUPTION_CHECK }}}, + BUFFER_FACTOR: Math.round({{{ CORRUPTION_CHECK }}}), ptrs: {}, checks: 0, @@ -19,6 +19,7 @@ var CorruptionChecker = { } }); }, malloc: function(size) { + CorruptionChecker.checkAll(); assert(size > 0); // some mallocs accept zero - fix your code if you want to use this tool var allocation = CorruptionChecker.realMalloc(size*(1+2*CorruptionChecker.BUFFER_FACTOR)); var ptr = allocation + size*CorruptionChecker.BUFFER_FACTOR; @@ -29,7 +30,12 @@ var CorruptionChecker = { return ptr; }, free: function(ptr) { - CorruptionChecker.checkPtr(ptr, true); + CorruptionChecker.checkAll(); + var size = CorruptionChecker.ptrs[ptr]; + assert(size); + var allocation = ptr - size*CorruptionChecker.BUFFER_FACTOR; + delete CorruptionChecker.ptrs[ptr]; + CorruptionChecker.realFree(allocation); }, canary: function(x) { return (x + (x << 3) + (x&75) - (x&47))&255; @@ -45,16 +51,12 @@ var CorruptionChecker = { } CorruptionChecker.checks++; }, - checkPtr: function(ptr, free) { + checkPtr: function(ptr) { var size = CorruptionChecker.ptrs[ptr]; assert(size); var allocation = ptr - size*CorruptionChecker.BUFFER_FACTOR; CorruptionChecker.checkBuffer(allocation, size*CorruptionChecker.BUFFER_FACTOR); CorruptionChecker.checkBuffer(allocation + size*(1+CorruptionChecker.BUFFER_FACTOR), size*CorruptionChecker.BUFFER_FACTOR); - if (free) { - delete CorruptionChecker.ptrs[ptr]; - CorruptionChecker.realFree(allocation); - } }, checkAll: function() { for (var ptr in CorruptionChecker.ptrs) { diff --git a/src/settings.js b/src/settings.js index 74176914a1def..d036822f23e14 100644 --- a/src/settings.js +++ b/src/settings.js @@ -142,7 +142,7 @@ var CORRUPTION_CHECK = 0; // When enabled, will emit a buffer area at the beginn // 0 means not enabled, higher values mean the size of the // buffer areas as a multiple of the allocated area (so // 1 means 100%, or buffer areas equal to allocated area, - // both before and after). + // both before and after). This must be an integer. var LABEL_DEBUG = 0; // 1: Print out functions as we enter them // 2: Also print out each label as we enter it diff --git a/tests/runner.py b/tests/runner.py index aad97db9a85b3..8f716719d30f2 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7186,6 +7186,9 @@ def test_autodebug(self): self.do_run(src, '''AD:-1,1''', build_ll_hook=self.do_autodebug) def test_corruption(self): + if Settings.ASM_JS: return self.skip('cannot use corruption checks in asm') + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('needs ta2 for actual test') + Settings.CORRUPTION_CHECK = 1 src = r''' From 964fb429de38159a9704f2c66fe94ac0182b38ec Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 17 Feb 2013 20:17:45 +0100 Subject: [PATCH 079/326] ensure aligned memory in corruption detector --- src/corruptionCheck.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js index 9c8794cdef136..ae2a0bdf41771 100644 --- a/src/corruptionCheck.js +++ b/src/corruptionCheck.js @@ -21,6 +21,7 @@ var CorruptionChecker = { malloc: function(size) { CorruptionChecker.checkAll(); assert(size > 0); // some mallocs accept zero - fix your code if you want to use this tool + size = (size+7)&(~7); var allocation = CorruptionChecker.realMalloc(size*(1+2*CorruptionChecker.BUFFER_FACTOR)); var ptr = allocation + size*CorruptionChecker.BUFFER_FACTOR; assert(!CorruptionChecker.ptrs[ptr]); From 3d6badafc2870819ae7c240786ffd5eb38ce1ce7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 08:34:40 -0800 Subject: [PATCH 080/326] clean up unneeded CorrectionsMonitor stuff; fixes test_unsigned --- src/runtime.js | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/src/runtime.js b/src/runtime.js index 74d6880b70b2c..e902d27b52da0 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -509,26 +509,19 @@ function getRuntime() { // example, -1 in int32 would be a very large number as unsigned. function unSign(value, bits, ignore, sig) { if (value >= 0) { -#if CHECK_SIGNS - if (!ignore) CorrectionsMonitor.note('UnSign', 1, sig); -#endif return value; } #if CHECK_SIGNS - if (!ignore) CorrectionsMonitor.note('UnSign', 0, sig); + if (!ignore) throw 'UnSign'; #endif return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts : Math.pow(2, bits) + value; - // TODO: clean up previous line } // Converts a value we have as unsigned, into a signed value. For // example, 200 in a uint8 would be a negative number. function reSign(value, bits, ignore, sig) { if (value <= 0) { -#if CHECK_SIGNS - if (!ignore) CorrectionsMonitor.note('ReSign', 1, sig); -#endif return value; } var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 @@ -540,10 +533,7 @@ function reSign(value, bits, ignore, sig) { // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors // TODO: In i64 mode 1, resign the two parts separately and safely #if CHECK_SIGNS - if (!ignore) { - CorrectionsMonitor.note('ReSign', 0, sig); - noted = true; - } + if (!ignore) throw 'ReSign'; #endif value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts } @@ -552,18 +542,9 @@ function reSign(value, bits, ignore, sig) { // without CHECK_SIGNS, we would just do the |0 shortcut, so check that that // would indeed give the exact same result. if (bits === 32 && (value|0) !== value && typeof value !== 'boolean') { - if (!ignore) { - CorrectionsMonitor.note('ReSign', 0, sig); - noted = true; - } + if (!ignore) throw 'ReSign'; } - if (!noted) CorrectionsMonitor.note('ReSign', 1, sig); #endif return value; } -// Just a stub. We don't care about noting compile-time corrections. But they are called. -var CorrectionsMonitor = { - note: function(){} -}; - From 4dc72e6473ba59d18b56bc16e0b396735196732a Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 08:58:05 -0800 Subject: [PATCH 081/326] fix emcc --version in other dirs --- emcc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/emcc b/emcc index 027f25c7abe17..63ce1d882d98a 100755 --- a/emcc +++ b/emcc @@ -120,10 +120,14 @@ if len(sys.argv) == 1: if sys.argv[1] == '--version': revision = '(unknown revision)' + here = os.getcwd() + os.chdir(shared.path_from_root()) try: - revision = execute(['git', 'show'], stdout=PIPE)[0].split('\n')[0] + revision = execute(['git', 'show'], stdout=PIPE, stderr=PIPE)[0].split('\n')[0] except: pass + finally: + os.chdir(here) print '''emcc (Emscripten GCC-like replacement) %s (%s) Copyright (C) 2013 the Emscripten authors (see AUTHORS.txt) This is free and open source software under the MIT license. From a324efc5ed5f638ea4cb6f3d26def70301d368ed Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 12:43:10 -0800 Subject: [PATCH 082/326] fix test_emcc --- tests/runner.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 8f716719d30f2..92f31aa86af79 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8178,11 +8178,12 @@ def test_emcc(self): # --version output = Popen([PYTHON, compiler, '--version'], stdout=PIPE, stderr=PIPE).communicate() - self.assertContained('''emcc (Emscripten GCC-like replacement) 2.0 -Copyright (C) 2012 the Emscripten authors. + output = output[0].replace('\r', '') + self.assertContained('''emcc (Emscripten GCC-like replacement)''', output) + self.assertContained('''Copyright (C) 2013 the Emscripten authors (see AUTHORS.txt) This is free and open source software under the MIT license. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -''', output[0].replace('\r', ''), output[1].replace('\r', '')) +''', output) # -v, without input files output = Popen([PYTHON, compiler, '-v'], stdout=PIPE, stderr=PIPE).communicate() @@ -8290,18 +8291,20 @@ def test_emcc(self): (['-o', 'something.js', '-O1', '--closure', '1'], 1, None, 1, 0), (['-o', 'something.js', '-O2'], 2, None, 0, 1), (['-o', 'something.js', '-O2', '--closure', '0'], 2, None, 0, 0), + (['-o', 'something.js', '-O2', '-g'], 2, None, 0, 0), (['-o', 'something.js', '-O3'], 3, None, 0, 1), (['-o', 'something.js', '-O3', '--closure', '0'], 3, None, 0, 0), # and, test compiling to bitcode first (['-o', 'something.bc'], 0, [], 0, 0), (['-o', 'something.bc'], 0, ['-O0'], 0, 0), (['-o', 'something.bc'], 1, ['-O1'], 0, 0), - (['-o', 'something.bc'], 2, ['-O2'], 1, 0), - (['-o', 'something.bc'], 3, ['-O3'], 1, 0), + (['-o', 'something.bc'], 2, ['-O2'], 0, 0), + (['-o', 'something.bc'], 3, ['-O3'], 0, 0), (['-O1', '-o', 'something.bc'], 0, [], 0, 0), # -Ox is ignored and warned about ]: - #print params, opt_level, bc_params, closure + print params, opt_level, bc_params, closure, has_malloc self.clear() + keep_debug = '-g' in params output = Popen([PYTHON, compiler, path_from_root('tests', 'hello_world_loop' + ('_malloc' if has_malloc else '') + '.cpp')] + params, stdout=PIPE, stderr=PIPE).communicate() assert len(output[0]) == 0, output[0] @@ -8325,14 +8328,13 @@ def test_emcc(self): else: # closure has not been run, we can do some additional checks. TODO: figure out how to do these even with closure assert 'Module._main = ' not in generated, 'closure compiler should not have been run' - # XXX find a way to test this: assert ('& 255' in generated or '&255' in generated) == (opt_level <= 2), 'corrections should be in opt <= 2' - assert ('(label)' in generated) == (opt_level <= 1), 'relooping should be in opt >= 2' - assert ('assert(STACKTOP < STACK_MAX' in generated) == (opt_level == 0), 'assertions should be in opt == 0' - assert 'var $i;' in generated or 'var $i_0' in generated or 'var $storemerge3;' in generated or 'var $storemerge4;' in generated or 'var $i_04;' in generated, 'micro opts should always be on' + if keep_debug: + assert ('(label)' in generated) == (opt_level <= 1), 'relooping should be in opt >= 2' + assert ('assert(STACKTOP < STACK_MAX' in generated) == (opt_level == 0), 'assertions should be in opt == 0' + assert 'var $i;' in generated or 'var $i_0' in generated or 'var $storemerge3;' in generated or 'var $storemerge4;' in generated or 'var $i_04;' in generated, 'micro opts should always be on' if opt_level >= 2: - assert re.search('HEAP8\[\$\w+ \+ \(+\$\w+ ', generated) or re.search('HEAP8\[HEAP32\[', generated), 'eliminator should create compound expressions, and fewer one-time vars' # also in -O1, but easier to test in -O2 + assert re.search('HEAP8\[\$?\w+ \+ \(+\$?\w+ ', generated) or re.search('HEAP8\[HEAP32\[', generated), 'eliminator should create compound expressions, and fewer one-time vars' # also in -O1, but easier to test in -O2 assert ('_puts(' in generated) == (opt_level >= 1), 'with opt >= 1, llvm opts are run and they should optimize printf to puts' - assert ('function _malloc(bytes) {' in generated) == (not has_malloc), 'If malloc is needed, it should be there, if not not' assert 'function _main() {' in generated, 'Should be unminified, including whitespace' assert ('-O3' in (params+(bc_params or []))) or'function _dump' in generated, 'No inlining by default' From 767553991644503fcc845a32449dc3ee147c7a1e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 12:52:41 -0800 Subject: [PATCH 083/326] remove LLVM debug info in -O1+, since the optimizer removes it anyhow --- emcc | 2 +- tests/runner.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/emcc b/emcc index 63ce1d882d98a..1a4dc4701a083 100755 --- a/emcc +++ b/emcc @@ -1104,7 +1104,7 @@ try: # Optimize, if asked to if not LEAVE_INPUTS_RAW: - link_opts = [] if keep_debug else ['-strip-debug'] + link_opts = [] if keep_debug and opt_level == 0 else ['-strip-debug'] # remove LLVM debug info in -O1+, since the optimizer removes it anyhow if llvm_opts > 0: shared.Building.llvm_opt(in_temp(target_basename + '.bc'), llvm_opts) if DEBUG: save_intermediate('opt', 'bc') diff --git a/tests/runner.py b/tests/runner.py index 92f31aa86af79..9fe944dd49d63 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -9289,6 +9289,26 @@ def test_chunking(self): finally: del os.environ['EMCC_DEBUG'] + def test_debuginfo(self): + if os.environ.get('EMCC_DEBUG'): return self.skip('cannot run in debug mode') + try: + os.environ['EMCC_DEBUG'] = '1' + # llvm debug info is kept only when we can see it, which is without the js optimize, -O0. js debug info is lost by registerize in -O2, so - g disables it + for args, expect_llvm, expect_js in [ + (['-O0'], True, True), + (['-O0', '-g'], True, True), + (['-O1'], False, True), + (['-O1', '-g'], False, True), + (['-O2'], False, False), + (['-O2', '-g'], False, True), + ]: + print args, expect_llvm, expect_js + output, err = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world.cpp')] + args, stdout=PIPE, stderr=PIPE).communicate() + assert expect_llvm == ('strip-debug' not in err) + assert expect_js == ('registerize' not in err) + finally: + del os.environ['EMCC_DEBUG'] + def test_scons(self): # also incidentally tests c++11 integration in llvm 3.1 try_delete(os.path.join(self.get_dir(), 'test')) shutil.copytree(path_from_root('tests', 'scons'), os.path.join(self.get_dir(), 'test')) From 4cb5e22f6182dcce6085f64dac4b93fe57f93bb4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 13:02:09 -0800 Subject: [PATCH 084/326] fix test_closure_compiler --- tests/runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 9fe944dd49d63..259d8188ad881 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11328,12 +11328,12 @@ def test_closure_compiler(self): f = open(CONFIG_FILE, 'a') f.write('CLOSURE_COMPILER = "/tmp/nowhere/nothingtoseehere/kjadsfkjwelkjsdfkqgas/nonexistent.txt"\n') f.close() - output = self.check_working([EMCC, '-O2', 'tests/hello_world.cpp'], CLOSURE_FATAL) + output = self.check_working([EMCC, '-O2', '--closure', '1', 'tests/hello_world.cpp'], CLOSURE_FATAL) # With a working path, all is well restore() try_delete('a.out.js') - output = self.check_working([EMCC, '-O2', 'tests/hello_world.cpp'], '') + output = self.check_working([EMCC, '-O2', '--closure', '1', 'tests/hello_world.cpp'], '') assert os.path.exists('a.out.js') def test_llvm(self): From 54ad85c02d6903aa575ef47aa48deb22289eb836 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 14:49:49 -0800 Subject: [PATCH 085/326] csmith driver script --- tests/csmith_driver.py | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100755 tests/csmith_driver.py diff --git a/tests/csmith_driver.py b/tests/csmith_driver.py new file mode 100755 index 0000000000000..c09108f7344d5 --- /dev/null +++ b/tests/csmith_driver.py @@ -0,0 +1,50 @@ +#!/usr/bin/python + +''' +Runs csmith, a C fuzzer, and looks for bugs +''' + +import os, sys +from subprocess import Popen, PIPE, STDOUT + +sys.path += [os.path.join(os.path.dirname(os.path.dirname(__file__)), 'tools')] +import shared + +CSMITH = os.path.expanduser('~/Dev/csmith/src/csmith') +CSMITH_CFLAGS = ['-I' + os.path.expanduser('~/Dev/csmith/runtime/')] + +filename = os.path.join(shared.CANONICAL_TEMP_DIR, 'fuzzcode') + +shared.DEFAULT_TIMEOUT = 3 + +tried = 0 +valid = 0 + +while 1: + print 'Tried %d, valid: %d' % (tried, valid) + tried += 1 + print '1) Generate C' + shared.execute([CSMITH, '--no-volatiles', '--no-math64'], stdout=open(filename + '.c', 'w')) + + print '2) Compile natively' + shared.try_delete(filename) + shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename] + CSMITH_CFLAGS, stderr=PIPE) + assert os.path.exists(filename) + print '3) Run natively' + try: + correct = shared.timeout_run(Popen([filename], stdout=PIPE, stderr=PIPE), 3) + except Exception, e: + print 'Failed or infinite looping in native, skipping', e + continue + valid += 1 + + print '4) Compile JS-ly' + shared.try_delete(filename + '.js') + shared.execute([shared.EMCC, '-O2', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS, stderr=PIPE) + assert os.path.exists(filename + '.js') + print '5) Run JS-ly' + js = shared.run_js(filename + '.js', stderr=PIPE) #, engine=...) + + print '6) Verify' + assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(x.split('\n'), y.split('\n'), fromfile='expected', tofile='actual')]) + From 3e3dc0bbd3029200a6d4fa3866444be54ec27616 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 15:03:00 -0800 Subject: [PATCH 086/326] tune csmith driver --- tests/csmith_driver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/csmith_driver.py b/tests/csmith_driver.py index c09108f7344d5..a244b73c9035c 100755 --- a/tests/csmith_driver.py +++ b/tests/csmith_driver.py @@ -4,7 +4,7 @@ Runs csmith, a C fuzzer, and looks for bugs ''' -import os, sys +import os, sys, difflib from subprocess import Popen, PIPE, STDOUT sys.path += [os.path.join(os.path.dirname(os.path.dirname(__file__)), 'tools')] @@ -24,7 +24,7 @@ print 'Tried %d, valid: %d' % (tried, valid) tried += 1 print '1) Generate C' - shared.execute([CSMITH, '--no-volatiles', '--no-math64'], stdout=open(filename + '.c', 'w')) + shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '1'], stdout=open(filename + '.c', 'w')) print '2) Compile natively' shared.try_delete(filename) From 06b262b3f17f74d476f94ff87af58c70ab070eb1 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 18 Feb 2013 15:47:07 -0800 Subject: [PATCH 087/326] run closure in -O3, it makes sense there with the other unsafe optimizations --- emcc | 21 +++++++++++++++------ tests/runner.py | 4 ++-- tools/shared.py | 1 + 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/emcc b/emcc index 1a4dc4701a083..ad729ac5cd8b3 100755 --- a/emcc +++ b/emcc @@ -159,10 +159,17 @@ Options that are modified or new in %s include: -O2 As -O1, plus the relooper (loop recreation), plus LLVM -O2 optimizations -O3 As -O2, plus dangerous optimizations that may - break the generated code! This is not - recommended at all, see the wiki for more - details (you can try -O2 and then add - dangerous optimizations one by one). + break the generated code! This turns on + + INLINING_LIMIT = 0 + DOUBLE_MODE = 0 + PRECISE_I64_MATH = 0 + and the closure compiler + + This is not recommended at all. A better idea + is to try each of these separately on top of + -O2 to see what works. See the wiki for more + information. -s OPTION=VALUE JavaScript code generation option passed into the emscripten compiler. For the @@ -206,12 +213,13 @@ Options that are modified or new in %s include: (see --llvm-opts), setting this to 1 has no effect. - --closure 0: No closure compiler (default) + --closure 0: No closure compiler (default in -O2 and below) 1: Run closure compiler. This greatly reduces code size and may in some cases increase runtime speed (although the opposite can also occur). Note that it takes time to run, and - may require some changes to the code. + may require some changes to the code. This + is run by default in -O3. --js-transform will be called on the generated code before it is optimized. This lets you modify @@ -756,6 +764,7 @@ try: if llvm_opts is None: llvm_opts = LLVM_OPT_LEVEL[opt_level] if llvm_lto is None: llvm_lto = llvm_opts > 0 if opt_level <= 0: keep_debug = True # always keep debug in -O0 + if closure is None and opt_level == 3: closure = True if DEBUG: start_time = time.time() # done after parsing arguments, which might affect debug state diff --git a/tests/runner.py b/tests/runner.py index 259d8188ad881..abd925bfd88ce 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8292,14 +8292,14 @@ def test_emcc(self): (['-o', 'something.js', '-O2'], 2, None, 0, 1), (['-o', 'something.js', '-O2', '--closure', '0'], 2, None, 0, 0), (['-o', 'something.js', '-O2', '-g'], 2, None, 0, 0), - (['-o', 'something.js', '-O3'], 3, None, 0, 1), + (['-o', 'something.js', '-O3'], 3, None, 1, 1), (['-o', 'something.js', '-O3', '--closure', '0'], 3, None, 0, 0), # and, test compiling to bitcode first (['-o', 'something.bc'], 0, [], 0, 0), (['-o', 'something.bc'], 0, ['-O0'], 0, 0), (['-o', 'something.bc'], 1, ['-O1'], 0, 0), (['-o', 'something.bc'], 2, ['-O2'], 0, 0), - (['-o', 'something.bc'], 3, ['-O3'], 0, 0), + (['-o', 'something.bc'], 3, ['-O3'], 1, 0), (['-O1', '-o', 'something.bc'], 0, [], 0, 0), # -Ox is ignored and warned about ]: print params, opt_level, bc_params, closure, has_malloc diff --git a/tools/shared.py b/tools/shared.py index 401a580b33f9f..0282fbb1c3d92 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -566,6 +566,7 @@ def apply_opt_level(self, opt_level, noisy=False): if opt_level >= 2: Settings.RELOOP = 1 if opt_level >= 3: + # Aside from these, -O3 also runs closure compiler Settings.INLINING_LIMIT = 0 Settings.DOUBLE_MODE = 0 Settings.PRECISE_I64_MATH = 0 From 805741f649cc0d1b505616a9f518ca6718221ff4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 07:27:40 -0800 Subject: [PATCH 088/326] closure docs on emcc --help --- emcc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/emcc b/emcc index ad729ac5cd8b3..6f38b32b1ab0f 100755 --- a/emcc +++ b/emcc @@ -159,12 +159,12 @@ Options that are modified or new in %s include: -O2 As -O1, plus the relooper (loop recreation), plus LLVM -O2 optimizations -O3 As -O2, plus dangerous optimizations that may - break the generated code! This turns on + break the generated code! This adds - INLINING_LIMIT = 0 - DOUBLE_MODE = 0 - PRECISE_I64_MATH = 0 - and the closure compiler + -s INLINING_LIMIT=0 + -s DOUBLE_MODE=0 + -s PRECISE_I64_MATH=0 + --closure 1 This is not recommended at all. A better idea is to try each of these separately on top of @@ -221,6 +221,10 @@ Options that are modified or new in %s include: may require some changes to the code. This is run by default in -O3. + Note: If closure compiler hits an out-of-memory, + try adjusting JAVA_HEAP_SIZE in the environment + (for example, to 4096m for 4GB). + --js-transform will be called on the generated code before it is optimized. This lets you modify the JavaScript, for example adding some code From 044edf0a64be1880ad4f681909cd82475a3ab133 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 07:40:19 -0800 Subject: [PATCH 089/326] notify on unexpected exceptions being thrown and the lack of support for them. fixes #856 --- src/library.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library.js b/src/library.js index 4ebec526ad355..900b3fee1e30f 100644 --- a/src/library.js +++ b/src/library.js @@ -5082,6 +5082,7 @@ LibraryManager.library = { }, __cxa_call_unexpected: function(exception) { + Module.printErr('Unexpected exception thrown, this is not properly supported - aborting'); ABORT = true; throw exception; }, From 1fc1c855ebd5b76c26f369f59e5876110e515e7e Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Tue, 19 Feb 2013 12:11:20 -0500 Subject: [PATCH 090/326] Use the copy composite operation when calling drawImage This optimizes IMG_Load so that it just does a memcpy as opposed to try to composite. The resulting buffer will be the same, it just happens that we don't need to do all of the work involved in compositing in the first place. --- src/library_sdl.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/library_sdl.js b/src/library_sdl.js index 4ad7a9a9aec65..66e9e901cde3c 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1079,7 +1079,9 @@ var LibrarySDL = { } var surf = SDL.makeSurface(raw.width, raw.height, 0, false, 'load:' + filename); var surfData = SDL.surfaces[surf]; + surfData.ctx.globalCompositeOperation = "copy"; surfData.ctx.drawImage(raw, 0, 0, raw.width, raw.height, 0, 0, raw.width, raw.height); + surfData.ctx.globalCompositeOperation = "source-over"; // XXX SDL does not specify that loaded images must have available pixel data, in fact // there are cases where you just want to blit them, so you just need the hardware // accelerated version. However, code everywhere seems to assume that the pixels From 03d7c8e05ec1cf27a198d84cbdca74efd495e4d6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 19:26:18 +0100 Subject: [PATCH 091/326] remove unneeded sign correction from dlmalloc benchmark --- tests/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index abd925bfd88ce..2eac7e7b0f2e0 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11168,7 +11168,7 @@ def test_life(self): def test_dlmalloc(self): # XXX This seems to have regressed slightly with emcc. Are -g and the signs lines passed properly? src = open(path_from_root('system', 'lib', 'dlmalloc.c'), 'r').read() + '\n\n\n' + open(path_from_root('tests', 'dlmalloc_test.c'), 'r').read() - self.do_benchmark('dlmalloc', src, ['400', '3000'], '*3000,0*', emcc_args=['-g', '-s', 'CORRECT_SIGNS=2', '-s', 'CORRECT_SIGNS_LINES=[4820, 4195, 4250, 4203, 4209, 4239, 4231]']) + self.do_benchmark('dlmalloc', src, ['400', '3000'], '*3000,0*') def test_zlib(self): src = open(path_from_root('tests', 'zlib', 'benchmark.c'), 'r').read() From b1a857715c7a89e8af1ccb2a53c6086de65fc12f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 11:02:13 -0800 Subject: [PATCH 092/326] fix test_debug --- tests/runner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index 2eac7e7b0f2e0..9e25d2f3b8182 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7742,6 +7742,8 @@ def test_safe_heap(self): def test_debug(self): if '-g' not in Building.COMPILER_TEST_OPTS: Building.COMPILER_TEST_OPTS.append('-g') + if self.emcc_args is not None: + if '-O1' in self.emcc_args or '-O2' in self.emcc_args: return self.skip('optimizations remove LLVM debug info') src = ''' #include From e2b70ad4e8dfcc4c75daa559bf2f643938981f24 Mon Sep 17 00:00:00 2001 From: "Michael J. Bishop" Date: Thu, 7 Feb 2013 11:51:32 -0500 Subject: [PATCH 093/326] Added support for `glFrustumf`. --- src/library_gl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library_gl.js b/src/library_gl.js index 9ee379d0db2c1..7f0ad4a748008 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2498,6 +2498,7 @@ var LibraryGL = { GL.immediate.matrix.lib.mat4.multiply(GL.immediate.matrix[GL.immediate.currentMatrix], GL.immediate.matrix.lib.mat4.frustum(left, right, bottom, top_, nearVal, farVal)); }, + glFrustumf: 'glFrustum', glOrtho: function(left, right, bottom, top_, nearVal, farVal) { GL.immediate.matricesModified = true; From 5ccadef8807c2c1bc597b6c439cfe1dff967a48a Mon Sep 17 00:00:00 2001 From: Michael Bishop Date: Fri, 1 Feb 2013 18:55:53 -0500 Subject: [PATCH 094/326] Added some symbol compatibility for OpenGL1.1. Added implementations for - eglTerminate - eglDestroySurface - eglDestroyContext Stubbed out glTextEnvi --- src/library_browser.js | 2 +- src/library_egl.js | 41 ++++++++++++++++++++++++++++++++++++++++- src/library_gl.js | 15 ++++++++++++++- src/library_glut.js | 6 ++++++ 4 files changed, 61 insertions(+), 3 deletions(-) diff --git a/src/library_browser.js b/src/library_browser.js index 6af2ce0b6efdf..e9396d6903c2d 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -268,7 +268,7 @@ mergeInto(LibraryManager.library, { } return ctx; }, - + destroyContext: function(canvas, useWebGL, setInModule) {}, requestFullScreen: function() { var canvas = Module['canvas']; function fullScreenChange() { diff --git a/src/library_egl.js b/src/library_egl.js index a9eb37dd1b532..271ea29ec0e4e 100644 --- a/src/library_egl.js +++ b/src/library_egl.js @@ -83,6 +83,17 @@ var LibraryEGL = { return 1; }, +// EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy); + eglTerminate: function(display) { + if (display != 62000 /* Magic ID for Emscripten 'default display' */) { + EGL.setErrorCode(0x3008 /* EGL_BAD_DISPLAY */); + return 0; + } + // TODO: Tear down EGL here. Currently a no-op since we don't need to actually do anything here for the browser. + EGL.setErrorCode(0x3000 /* EGL_SUCCESS */); + return 1; + }, + // EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config); eglGetConfigs: function(display, configs, config_size, numConfigs) { return EGL.chooseConfig(display, 0, configs, config_size, numConfigs); @@ -225,6 +236,20 @@ var LibraryEGL = { return 62006; /* Magic ID for Emscripten 'default surface' */ }, + // EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay display, EGLSurface surface); + eglDestroySurface: function(display, surface) { + if (display != 62000 /* Magic ID for Emscripten 'default display' */) { + EGL.setErrorCode(0x3008 /* EGL_BAD_DISPLAY */); + return 0; + } + if (surface != 62006 /* Magic ID for the only EGLSurface supported by Emscripten */) { + EGL.setErrorCode(0x300D /* EGL_BAD_SURFACE */); + return 1; + } + EGL.setErrorCode(0x3000 /* EGL_SUCCESS */); + return 1; /* Magic ID for Emscripten 'default surface' */ + }, + eglCreateContext__deps: ['glutCreateWindow', '$GL'], // EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list); @@ -234,7 +259,21 @@ var LibraryEGL = { return 0; } - _glutCreateWindow(); + EGL.windowID = _glutCreateWindow(); + EGL.setErrorCode(0x3000 /* EGL_SUCCESS */); + return 62004; // Magic ID for Emscripten EGLContext + }, + + eglDestroyContext__deps: ['glutDestroyWindow', '$GL'], + + // EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext context); + eglDestroyContext: function(display, context) { + if (display != 62000 /* Magic ID for Emscripten 'default display' */) { + EGL.setErrorCode(0x3008 /* EGL_BAD_DISPLAY */); + return 0; + } + + _glutDestroyWindow(EGL.windowID); EGL.setErrorCode(0x3000 /* EGL_SUCCESS */); return 62004; // Magic ID for Emscripten EGLContext }, diff --git a/src/library_gl.js b/src/library_gl.js index 7f0ad4a748008..3e2738866a9f9 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2600,7 +2600,7 @@ var LibraryGL = { glTexGeni: function() { throw 'glTexGeni: TODO' }, glTexGenfv: function() { throw 'glTexGenfv: TODO' }, - glTexEnvi: function() { throw 'glTexEnvi: TODO' }, + glTexEnvi: function() { console.log('glTexEnvi - unimplemented') }, glTexEnvfv: function() { throw 'glTexEnvfv: TODO' }, glTexImage1D: function() { throw 'glTexImage1D: TODO' }, @@ -2614,6 +2614,19 @@ var LibraryGL = { glVertexAttribPointer__sig: 'viiiiii', glCheckFramebufferStatus__sig: 'ii', glRenderbufferStorage__sig: 'viiii', + + // Open GLES1.1 compatibility + glGenFramebuffersOES : 'glGenFramebuffers', + glGenRenderbuffersOES : 'glGenRenderbuffers', + glBindFramebufferOES : 'glBindFramebuffer', + glBindRenderbufferOES : 'glBindRenderbuffer', + glGetRenderbufferParameterivOES : 'glGetRenderbufferParameteriv', + glFramebufferRenderbufferOES : 'glFramebufferRenderbuffer', + glRenderbufferStorageOES : 'glRenderbufferStorage', + glCheckFramebufferStatusOES : 'glCheckFramebufferStatus', + glDeleteFramebuffersOES : 'glDeleteFramebuffers', + glDeleteRenderbuffersOES : 'glDeleteRenderbuffers' + }; // Simple pass-through functions. Starred ones have return values. [X] ones have X in the C name but not in the JS name diff --git a/src/library_glut.js b/src/library_glut.js index 2e662698e278c..bb4dfefa046eb 100644 --- a/src/library_glut.js +++ b/src/library_glut.js @@ -381,6 +381,12 @@ var LibraryGLUT = { return 1; }, + glutDestroyWindow__deps: ['$Browser'], + glutDestroyWindow: function(name) { + Module.ctx = Browser.destroyContext(Module['canvas'], true, true); + return 1; + }, + glutReshapeWindow__deps: ['$GLUT', 'glutPostRedisplay'], glutReshapeWindow: function(width, height) { GLUT.cancelFullScreen(); From 0f1d146a2e44259e1e87be7945989a7c3d8225fd Mon Sep 17 00:00:00 2001 From: Michael Bishop Date: Tue, 19 Feb 2013 11:36:06 -0800 Subject: [PATCH 095/326] add mbishop --- AUTHORS | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index 74efb62833cb3..2e0c06e863578 100644 --- a/AUTHORS +++ b/AUTHORS @@ -48,6 +48,5 @@ a license to everyone to use it as detailed in LICENSE.) * Jasper St. Pierre * Manuel Schölling * Bruce Mitchener, Jr. - - +* Michael Bishop From d48656fbdf3273805f860307de2e0cdfae0d6d6c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 15:46:25 -0800 Subject: [PATCH 096/326] warn only once on glTexEnv* --- src/library_gl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 3e2738866a9f9..b794c445fac55 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2600,8 +2600,8 @@ var LibraryGL = { glTexGeni: function() { throw 'glTexGeni: TODO' }, glTexGenfv: function() { throw 'glTexGenfv: TODO' }, - glTexEnvi: function() { console.log('glTexEnvi - unimplemented') }, - glTexEnvfv: function() { throw 'glTexEnvfv: TODO' }, + glTexEnvi: function() { Runtime.warnOnce('glTexEnvi: TODO') }, + glTexEnvfv: function() { Runtime.warnOnce('glTexEnvfv: TODO') }, glTexImage1D: function() { throw 'glTexImage1D: TODO' }, glTexCoord3f: function() { throw 'glTexCoord3f: TODO' }, From 6dfcace48a061dd93643a4da4647591d73bdcc31 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 15:57:13 -0800 Subject: [PATCH 097/326] hardcode arguments in benchmark js files, for easier debugging on them --- tests/runner.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index 9e25d2f3b8182..a2d75cfee1180 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10918,6 +10918,10 @@ def do_benchmark(self, name, src, args=[], expected_output='FAIL', emcc_args=[], '-o', final_filename] + shared_args + emcc_args, stdout=PIPE, stderr=self.stderr_redirect).communicate() assert os.path.exists(final_filename), 'Failed to compile file: ' + output[0] + # Hardcode in the arguments, so js is portable without manual commandlinearguments + js = open(final_filename).read() + open(final_filename, 'w').write(js.replace('var ret = run();', 'var ret = run(%s);' % str(args))) + # Run JS global total_times, tests_done times = [] From 634c9b963c109c772f3ba913d4abd328093059bc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 16:32:39 -0800 Subject: [PATCH 098/326] handle malloc(0) and free(0) in corruption checker --- src/corruptionCheck.js | 6 +++++- tests/runner.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js index ae2a0bdf41771..bd3b240be7a38 100644 --- a/src/corruptionCheck.js +++ b/src/corruptionCheck.js @@ -19,8 +19,8 @@ var CorruptionChecker = { } }); }, malloc: function(size) { + if (size <= 0) size = 1; // malloc(0) sometimes happens - just allocate a larger area, no harm CorruptionChecker.checkAll(); - assert(size > 0); // some mallocs accept zero - fix your code if you want to use this tool size = (size+7)&(~7); var allocation = CorruptionChecker.realMalloc(size*(1+2*CorruptionChecker.BUFFER_FACTOR)); var ptr = allocation + size*CorruptionChecker.BUFFER_FACTOR; @@ -28,13 +28,17 @@ var CorruptionChecker = { CorruptionChecker.ptrs[ptr] = size; CorruptionChecker.fillBuffer(allocation, size*CorruptionChecker.BUFFER_FACTOR); CorruptionChecker.fillBuffer(allocation + size*(1+CorruptionChecker.BUFFER_FACTOR), size*CorruptionChecker.BUFFER_FACTOR); + //Module.print('malloc ' + size + ' ==> ' + [ptr, allocation]); return ptr; }, free: function(ptr) { + if (!ptr) return; // ok to free(NULL), does nothing CorruptionChecker.checkAll(); var size = CorruptionChecker.ptrs[ptr]; + //Module.print('free ' + ptr + ' of size ' + size); assert(size); var allocation = ptr - size*CorruptionChecker.BUFFER_FACTOR; + //Module.print('free ' + ptr + ' of size ' + size + ' and allocation ' + allocation); delete CorruptionChecker.ptrs[ptr]; CorruptionChecker.realFree(allocation); }, diff --git a/tests/runner.py b/tests/runner.py index a2d75cfee1180..f0340cd0a9c56 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7214,6 +7214,42 @@ def test_corruption(self): for corrupt in [1]: self.do_run(src.replace('CORRUPT', str(corrupt)), 'Heap corruption detected!' if corrupt else 'All ok, 4209') + def test_corruption_2(self): + if Settings.ASM_JS: return self.skip('cannot use corruption checks in asm') + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('needs ta2 for actual test') + + Settings.SAFE_HEAP = 1 + Settings.CORRUPTION_CHECK = 1 + + # test for free(0), malloc(0), etc. + src = r''' + #include + #include + #include + #include + + void bye() { + printf("all ok\n"); + } + + int main() { + atexit(bye); + + std::string testPath = "/Script/WA-KA.txt"; + std::fstream str(testPath.c_str(), std::ios::in | std::ios::binary); + + if (str.is_open()) + { + std::cout << "open!" << std::endl; + } else { + std::cout << "missing!" << std::endl; + } + + return 1; + } + ''' + self.do_run(src, 'missing!\nall ok\n') + ### Integration tests def test_ccall(self): From f9728ef5b36fce1639af4ba6e9ac1e68321053fd Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 16:52:27 -0800 Subject: [PATCH 099/326] simplify corruption canary --- src/corruptionCheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js index bd3b240be7a38..d676c290fb5a7 100644 --- a/src/corruptionCheck.js +++ b/src/corruptionCheck.js @@ -43,7 +43,7 @@ var CorruptionChecker = { CorruptionChecker.realFree(allocation); }, canary: function(x) { - return (x + (x << 3) + (x&75) - (x&47))&255; + return (x&127) + 10; }, fillBuffer: function(allocation, size) { for (var x = allocation; x < allocation + size; x++) { From 239e82b02c67a8a0e840dfa499fb3b4f1726cb61 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 17:28:22 -0800 Subject: [PATCH 100/326] support realloc in corruption checker --- src/corruptionCheck.js | 31 ++++++++++++++++++++++++++----- tests/runner.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js index d676c290fb5a7..8698b86d7a743 100644 --- a/src/corruptionCheck.js +++ b/src/corruptionCheck.js @@ -14,6 +14,11 @@ var CorruptionChecker = { this.realFree = _free; _free = Module['_free'] = this.free; + if (typeof _realloc != 'undefined') { + this.realRealloc = _realloc; + _realloc = Module['_realloc'] = this.realloc; + } + __ATEXIT__.push({ func: function() { Module.printErr('No corruption detected, ran ' + CorruptionChecker.checks + ' checks.'); } }); @@ -42,17 +47,33 @@ var CorruptionChecker = { delete CorruptionChecker.ptrs[ptr]; CorruptionChecker.realFree(allocation); }, + realloc: function(ptr, newSize) { + //Module.print('realloc ' + ptr + ' to size ' + newSize); + if (newSize <= 0) newSize = 1; // like in malloc + if (!ptr) return CorruptionChecker.malloc(newSize); // realloc(NULL, size) forwards to malloc according to the spec + var size = CorruptionChecker.ptrs[ptr]; + assert(size); + var allocation = ptr - size*CorruptionChecker.BUFFER_FACTOR; + var newPtr = CorruptionChecker.malloc(newSize); + //Module.print('realloc ' + ptr + ' to size ' + newSize + ' is now ' + newPtr); + var newAllocation = newPtr + newSize*CorruptionChecker.BUFFER_FACTOR; + HEAPU8.set(HEAPU8.subarray(ptr, ptr + Math.min(size, newSize)), newPtr); + CorruptionChecker.free(ptr); + return newPtr; + }, canary: function(x) { return (x&127) + 10; }, - fillBuffer: function(allocation, size) { - for (var x = allocation; x < allocation + size; x++) { + fillBuffer: function(buffer, size) { + for (var x = buffer; x < buffer + size; x++) { {{{ makeSetValue('x', 0, 'CorruptionChecker.canary(x)', 'i8') }}}; } }, - checkBuffer: function(allocation, size) { - for (var x = allocation; x < allocation + size; x++) { - assert(({{{ makeGetValue('x', 0, 'i8') }}}&255) == CorruptionChecker.canary(x), 'Heap corruption detected!'); + checkBuffer: function(buffer, size) { + for (var x = buffer; x < buffer + size; x++) { + if (({{{ makeGetValue('x', 0, 'i8') }}}&255) != CorruptionChecker.canary(x)) { + assert(0, 'Heap corruption detected!' + [x, buffer, size, {{{ makeGetValue('x', 0, 'i8') }}}&255, CorruptionChecker.canary(x)]); + } } CorruptionChecker.checks++; }, diff --git a/tests/runner.py b/tests/runner.py index f0340cd0a9c56..3b2fcd582fec4 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7250,6 +7250,37 @@ def test_corruption_2(self): ''' self.do_run(src, 'missing!\nall ok\n') + def test_corruption_3(self): + if Settings.ASM_JS: return self.skip('cannot use corruption checks in asm') + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('needs ta2 for actual test') + + Settings.CORRUPTION_CHECK = 1 + + # realloc + src = r''' + #include + #include + #include + + void bye() { + printf("all ok\n"); + } + + int main(int argc, char **argv) { + atexit(bye); + + char *buffer = (char*)malloc(100); + for (int i = 0; i < 100; i++) buffer[i] = (i*i)%256; + buffer = (char*)realloc(buffer, argc + 50); + for (int i = 0; i < argc + 50; i++) { + //printf("%d : %d : %d : %d\n", i, (int)(buffer + i), buffer[i], (char)((i*i)%256)); + assert(buffer[i] == (char)((i*i)%256)); + } + return 1; + } + ''' + self.do_run(src, 'all ok\n') + ### Integration tests def test_ccall(self): From 6bb1dac24a0c7f7bd2af18f9c0d350cd50b0521b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 19 Feb 2013 17:56:40 -0800 Subject: [PATCH 101/326] allow changing frequency of corruption checks, and forcing a check irregardless of frequency --- src/corruptionCheck.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/corruptionCheck.js b/src/corruptionCheck.js index 8698b86d7a743..315f5cf026859 100644 --- a/src/corruptionCheck.js +++ b/src/corruptionCheck.js @@ -6,6 +6,7 @@ var CorruptionChecker = { ptrs: {}, checks: 0, + checkFrequency: 1, init: function() { this.realMalloc = _malloc; @@ -33,29 +34,29 @@ var CorruptionChecker = { CorruptionChecker.ptrs[ptr] = size; CorruptionChecker.fillBuffer(allocation, size*CorruptionChecker.BUFFER_FACTOR); CorruptionChecker.fillBuffer(allocation + size*(1+CorruptionChecker.BUFFER_FACTOR), size*CorruptionChecker.BUFFER_FACTOR); - //Module.print('malloc ' + size + ' ==> ' + [ptr, allocation]); + //Module.printErr('malloc ' + size + ' ==> ' + [ptr, allocation]); return ptr; }, free: function(ptr) { if (!ptr) return; // ok to free(NULL), does nothing CorruptionChecker.checkAll(); var size = CorruptionChecker.ptrs[ptr]; - //Module.print('free ' + ptr + ' of size ' + size); + //Module.printErr('free ' + ptr + ' of size ' + size); assert(size); var allocation = ptr - size*CorruptionChecker.BUFFER_FACTOR; - //Module.print('free ' + ptr + ' of size ' + size + ' and allocation ' + allocation); + //Module.printErr('free ' + ptr + ' of size ' + size + ' and allocation ' + allocation); delete CorruptionChecker.ptrs[ptr]; CorruptionChecker.realFree(allocation); }, realloc: function(ptr, newSize) { - //Module.print('realloc ' + ptr + ' to size ' + newSize); + //Module.printErr('realloc ' + ptr + ' to size ' + newSize); if (newSize <= 0) newSize = 1; // like in malloc if (!ptr) return CorruptionChecker.malloc(newSize); // realloc(NULL, size) forwards to malloc according to the spec var size = CorruptionChecker.ptrs[ptr]; assert(size); var allocation = ptr - size*CorruptionChecker.BUFFER_FACTOR; var newPtr = CorruptionChecker.malloc(newSize); - //Module.print('realloc ' + ptr + ' to size ' + newSize + ' is now ' + newPtr); + //Module.printErr('realloc ' + ptr + ' to size ' + newSize + ' is now ' + newPtr); var newAllocation = newPtr + newSize*CorruptionChecker.BUFFER_FACTOR; HEAPU8.set(HEAPU8.subarray(ptr, ptr + Math.min(size, newSize)), newPtr); CorruptionChecker.free(ptr); @@ -75,7 +76,6 @@ var CorruptionChecker = { assert(0, 'Heap corruption detected!' + [x, buffer, size, {{{ makeGetValue('x', 0, 'i8') }}}&255, CorruptionChecker.canary(x)]); } } - CorruptionChecker.checks++; }, checkPtr: function(ptr) { var size = CorruptionChecker.ptrs[ptr]; @@ -84,7 +84,10 @@ var CorruptionChecker = { CorruptionChecker.checkBuffer(allocation, size*CorruptionChecker.BUFFER_FACTOR); CorruptionChecker.checkBuffer(allocation + size*(1+CorruptionChecker.BUFFER_FACTOR), size*CorruptionChecker.BUFFER_FACTOR); }, - checkAll: function() { + checkAll: function(force) { + CorruptionChecker.checks++; + if (!force && CorruptionChecker.checks % CorruptionChecker.checkFrequency != 0) return; + //Module.printErr('checking for corruption ' + (CorruptionChecker.checks/CorruptionChecker.checkFrequency)); for (var ptr in CorruptionChecker.ptrs) { CorruptionChecker.checkPtr(ptr, false); } From b63fde6a7fe863c6f3448e2b63d3e17eb9bb0d83 Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Wed, 20 Feb 2013 16:21:12 +0700 Subject: [PATCH 102/326] Provide error message on invalid command to emmake. Previously, this would just throw an exception, now it provides a reasonable error message. --- tools/shared.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/shared.py b/tools/shared.py index 401a580b33f9f..7c1490c096653 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -662,6 +662,9 @@ def configure(args, stdout=None, stderr=None, env=None): def make(args, stdout=None, stderr=None, env=None): if env is None: env = Building.get_building_env() + if not args: + print >> sys.stderr, 'Error: Executable to run not specified.' + sys.exit(1) #args += ['VERBOSE=1'] try: Popen(args, stdout=stdout, stderr=stderr, env=env).communicate() From 5cf7c9a2ddf5b6d6895bf975ce174a99330d38d3 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 23 Jan 2013 19:36:53 -0800 Subject: [PATCH 103/326] Statically allocate the strtok state block so it doesn't trip up our leak detection. --- src/library.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/library.js b/src/library.js index ffac685b44ca4..ee0befa1f12b0 100644 --- a/src/library.js +++ b/src/library.js @@ -4619,10 +4619,8 @@ LibraryManager.library = { __strtok_state: 0, strtok__deps: ['__strtok_state', 'strtok_r'], + strtok__postset: '___strtok_state = Runtime.staticAlloc(4);', strtok: function(s, delim) { - if (!___strtok_state) { - ___strtok_state = _malloc(4); - } return _strtok_r(s, delim, ___strtok_state); }, From 540bc21f19170df2d0621c37e2f424ce0d177d81 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 09:58:41 -0800 Subject: [PATCH 104/326] Mix_Init --- src/library_sdl.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/library_sdl.js b/src/library_sdl.js index 66e9e901cde3c..e02e1e6297414 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1180,6 +1180,10 @@ var LibrarySDL = { // SDL Mixer + Mix_Init: function(flags) { + return 8; /* MIX_INIT_OGG */ + }, + Mix_OpenAudio: function(frequency, format, channels, chunksize) { SDL.allocateChannels(32); // Just record the values for a later call to Mix_QuickLoad_RAW From 68410ca5b8674f02d0da783bbfc78e2839d6b2c6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 12:34:59 -0800 Subject: [PATCH 105/326] vertex array object support in gl emulation --- src/library_gl.js | 74 +++++++++ tests/cubegeom_pre_vao.c | 333 +++++++++++++++++++++++++++++++++++++++ tests/runner.py | 3 + 3 files changed, 410 insertions(+) create mode 100644 tests/cubegeom_pre_vao.c diff --git a/src/library_gl.js b/src/library_gl.js index b794c445fac55..936eaf52760d2 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -993,6 +993,10 @@ var LibraryGL = { fogMode: 0x0800, // GL_EXP fogEnabled: false, + // VAO support + vaos: [], + currentVao: null, + init: function() { GLEmulation.fogColor = new Float32Array(4); @@ -1285,8 +1289,10 @@ var LibraryGL = { glBindBuffer(target, buffer); if (target == Module.ctx.ARRAY_BUFFER) { GL.currArrayBuffer = buffer; + if (GLEmulation.currentVao) GLEmulation.currentVao.arrayBuffer = buffer; } else if (target == Module.ctx.ELEMENT_ARRAY_BUFFER) { GL.currElementArrayBuffer = buffer; + if (GLEmulation.currentVao) GLEmulation.currentVao.elementArrayBuffer = buffer; } }; @@ -1330,6 +1336,26 @@ var LibraryGL = { } glHint(target, mode); }; + + var glEnableVertexAttribArray = _glEnableVertexAttribArray; + _glEnableVertexAttribArray = function(index) { + glEnableVertexAttribArray(index); + if (GLEmulation.currentVao) GLEmulation.currentVao.enabledVertexAttribArrays[index] = 1; + }; + + var glDisableVertexAttribArray = _glDisableVertexAttribArray; + _glDisableVertexAttribArray = function(index) { + glDisableVertexAttribArray(index); + if (GLEmulation.currentVao) delete GLEmulation.currentVao.enabledVertexAttribArrays[index]; + }; + + var glVertexAttribPointer = _glVertexAttribPointer; + _glVertexAttribPointer = function(index, size, type, normalized, stride, pointer) { + glVertexAttribPointer(index, size, type, normalized, stride, pointer); + if (GLEmulation.currentVao) { // TODO: avoid object creation here? likely not hot though + GLEmulation.currentVao.vertexAttribPointers[index] = [index, size, type, normalized, stride, pointer]; + } + }; }, getProcAddress: function(name) { @@ -2408,6 +2434,54 @@ var LibraryGL = { GL.immediate.clientActiveTexture = texture - 0x84C0; // GL_TEXTURE0 }, + // Vertex array object (VAO) support. TODO: when the WebGL extension is popular, use that and remove this code and GL.vaos + glGenVertexArrays__deps: ['$GLEMulation'], + glGenVertexArrays: function(n, vaos) { + for (var i = 0; i < n; i++) { + var id = GL.getNewId(GLEmulation.vaos); + GLEmulation.vaos[id] = { + id: id, + arrayBuffer: 0, + elementArrayBuffer: 0, + enabledVertexAttribArrays: {}, + vertexAttribPointers: {}, + }; + {{{ makeSetValue('vaos', 'i*4', 'id', 'i32') }}}; + } + }, + glDeleteVertexArrays: function(n, vaos) { + for (var i = 0; i < n; i++) { + var id = {{{ makeGetValue('vaos', 'i*4', 'i32') }}}; + GLEmulation.vaos[id] = null; + if (GLEmulation.currentVao && GLEmulation.currentVao.id == id) GLEmulation.currentVao = null; + } + }, + glBindVertexArray: function(vao) { + if (vao) { + // replay vao + if (GLEmulation.currentVao) _glBindVertexArray(0); // flush the old one out + var info = GLEmulation.vaos[vao]; + _glBindBuffer(Module.ctx.ARRAY_BUFFER, info.arrayBuffer); // XXX overwrite current binding? + _glBindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, info.elementArrayBuffer); + for (var vaa in info.enabledVertexAttribArrays) { + _glEnableVertexAttribArray(vaa); + } + for (var vaa in info.vertexAttribPointers) { + _glVertexAttribPointer.apply(null, info.vertexAttribPointers[vaa]); + } + GLEmulation.currentVao = info; // set currentVao last, so the commands we ran here were not recorded + } else if (GLEmulation.currentVao) { + // undo vao + var info = GLEmulation.currentVao; + GLEmulation.currentVao = null; // set currentVao first, so the commands we run here are not recorded + _glBindBuffer(Module.ctx.ARRAY_BUFFER, 0); // XXX if one was there before we were bound? + _glBindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, 0); + for (var vaa in info.enabledVertexAttribArrays) { + _glDisableVertexAttribArray(vaa); + } + } + }, + // OpenGL Immediate Mode matrix routines. // Note that in the future we might make these available only in certain modes. glMatrixMode__deps: ['$GL', '$GLImmediateSetup', '$GLEmulation'], // emulation is not strictly needed, this is a workaround diff --git a/tests/cubegeom_pre_vao.c b/tests/cubegeom_pre_vao.c new file mode 100644 index 0000000000000..f1d35fb54ba86 --- /dev/null +++ b/tests/cubegeom_pre_vao.c @@ -0,0 +1,333 @@ +/* +THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION +AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN. + +THE ORIGINAL AUTHOR IS KYLE FOLEY. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +#if !EMSCRIPTEN +#define USE_GLEW 1 +#endif + +#if USE_GLEW +#include "GL/glew.h" +#endif + +#include "SDL/SDL.h" +#if !USE_GLEW +#include "SDL/SDL_opengl.h" +#endif + +#include +#include +#include + +void verify() { + int width = 640, height = 480; + unsigned char *data = (unsigned char*)malloc(width*height*4); + glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data); + int sum = 0; + for (int x = 0; x < width*height*4; x++) { + if (x % 4 != 3) sum += x * data[x]; + } +#if EMSCRIPTEN + int result = sum; + REPORT_RESULT(); +#endif +} + +int main(int argc, char *argv[]) +{ + SDL_Surface *screen; + if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { + printf("Unable to initialize SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + screen = SDL_SetVideoMode( 640, 480, 24, SDL_OPENGL ); + if ( !screen ) { + printf("Unable to set video mode: %s\n", SDL_GetError()); + return 1; + } + + glClearColor( 0, 0, 0, 0 ); + glClear( GL_COLOR_BUFFER_BIT ); + + // Create a texture + + GLuint texture; + glGenTextures( 1, &texture ); + glBindTexture( GL_TEXTURE_2D, texture ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + GLubyte textureData[16*16*4]; + for (int x = 0; x < 16; x++) { + for (int y = 0; y < 16; y++) { + *((int*)&textureData[(x*16 + y) * 4]) = x*16 + ((y*16) << 8); + } + } + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, + GL_RGBA, GL_UNSIGNED_BYTE, textureData ); + + // Create a second texture + + GLuint texture2; + glGenTextures( 1, &texture2 ); + glBindTexture( GL_TEXTURE_2D, texture2 ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + GLubyte texture2Data[] = { 0xff, 0, 0, 0xff, + 0, 0xff, 0, 0xaa, + 0, 0, 0xff, 0x55, + 0x80, 0x90, 0x70, 0 }; + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, + GL_RGBA, GL_UNSIGNED_BYTE, texture2Data ); + + // BEGIN + +#if USE_GLEW + glewInit(); +#endif + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + // original: glFrustum(-0.6435469817188064, 0.6435469817188064 ,-0.48266022190470925, 0.48266022190470925 ,0.5400000214576721, 2048); + //glFrustum(-0.6435469817188064, 0.1435469817188064 ,-0.48266022190470925, 0.88266022190470925 ,0.5400000214576721, 2048); + GLfloat pm[] = { 1.372136116027832, 0, 0, 0, 0, 0.7910231351852417, 0, 0, -0.6352481842041016, 0.29297152161598206, -1.0005275011062622, -1, 0, 0, -1.080284833908081, 0 }; + glLoadMatrixf(pm); + + glMatrixMode(GL_MODELVIEW); + GLfloat matrixData[] = { -1, 0, 0, 0, + 0, 0,-1, 0, + 0, 1, 0, 0, + 0, 0, 0, 1 }; + glLoadMatrixf(matrixData); + + glActiveTexture(GL_TEXTURE0); + + GLuint arrayBuffer, elementBuffer; + glGenBuffers(1, &arrayBuffer); + glGenBuffers(1, &elementBuffer); + + GLubyte arrayData[] = { +/* +[0, 0, 0, 67] ==> 128 float +[0, 0, 128, 67] ==> 256 float +[0, 0, 0, 68] ==> 512 float +[0, 0, 128, 68] ==> 1024 float + +[vertex x ] [vertex y ] [vertex z ] [nr] [texture u ] [texture v ] [lm u ] [lm v ] [color r,g,b,a ] */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 0 + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 1 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 2 + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 3 + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 4 + 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 5 + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 6 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 7 + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 8 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 9 + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 10 + 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 11 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 12 + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 13 + 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 14 + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 15 + + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128 + }; + + // Generate a VAO + GLuint vao; + glGenVertexArrays(1, &vao); + glBindVertexArray(vao); + + assert(sizeof(arrayData) == 1408); + glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(arrayData), arrayData, GL_STATIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + GLushort elementData[] = { 1, 2, 0, 2, 3, 0, 5, 6, 4, 6, 7, 4, 9, 10, 8, 10, 11, 8, 13, 14, 12, 14, 15, 12 }; + assert(sizeof(elementData) == 48); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elementData), elementData, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer); + + glBindTexture(GL_TEXTURE_2D, texture); // diffuse? + glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, texture2); // lightmap? + glActiveTexture(GL_TEXTURE0); + + GLint ok; + + const char *vertexShader = "attribute vec4 a_position;\n" + "attribute vec4 a_texCoord0;\n" + "uniform mat4 u_modelView;\n" + "uniform mat4 u_projection;\n" + "varying vec4 v_texCoord0;\n" + "void main(void)\n" + "{\n" + " gl_Position = (u_projection * u_modelView * a_position) + vec4(200, 0, 0, 0);\n" + " v_texCoord0.xy = a_texCoord0.xy/20.0;\n" // added /20 here + "}\n"; + const char *fragmentShader = "uniform sampler2D diffusemap;\n" + "varying vec4 v_texCoord0;\n" + "void main(void)\n" + "{\n" + " vec4 diffuse = texture2D(diffusemap, v_texCoord0.xy);\n" + " gl_FragColor = diffuse;\n" + "}\n"; + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &vertexShader, NULL); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &ok); + if (!ok) { + printf("Shader compilation error with vertex\n"); + GLint infoLen = 0; + glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen > 1) + { + char* infoLog = (char *)malloc(sizeof(char) * infoLen+1); + glGetShaderInfoLog(vs, infoLen, NULL, infoLog); + printf("Error compiling shader:\n%s\n", infoLog); + } + } + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, &fragmentShader, NULL); + glCompileShader(fs); + glGetShaderiv(fs, GL_COMPILE_STATUS, &ok); + if (!ok) { + printf("Shader compilation error with fragment\n"); + GLint infoLen = 0; + glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen > 1) + { + char* infoLog = (char *)malloc(sizeof(char) * infoLen+1); + glGetShaderInfoLog(vs, infoLen, NULL, infoLog); + printf("Error compiling shader:\n%s\n", infoLog); + } + } + + GLuint program = glCreateProgram(); + + glAttachShader(program, vs); + glAttachShader(program, fs); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &ok); + assert(ok); + + glUseProgram(program); + + GLint diffusemapLocation = glGetUniformLocation(program, "diffusemap"); + assert(diffusemapLocation >= 0); + glUniform1i(diffusemapLocation, 0); + + { + GLfloat data[16]; + glGetFloatv(GL_MODELVIEW_MATRIX, data); + printf("Modelview: "); + for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]); + printf("\n"); + GLint modelViewLocation = glGetUniformLocation(program, "u_modelView"); + assert(modelViewLocation >= 0); + glUniformMatrix4fv(modelViewLocation, 1, GL_FALSE, data); + } + { + GLfloat data[16]; + glGetFloatv(GL_PROJECTION_MATRIX, data); + printf("Projection: "); + for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]); + printf("\n"); + GLint projectionLocation = glGetUniformLocation(program, "u_projection"); + assert(projectionLocation >= 0); + glUniformMatrix4fv(projectionLocation, 1, GL_FALSE, data); + } + + glBindAttribLocation(program, 0, "a_position"); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 32, (void*)0); + glEnableVertexAttribArray(0); + + glBindAttribLocation(program, 1, "a_texCoord0"); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 32, (void*)16); + glEnableVertexAttribArray(1); + + // stop recording in the VAO + + glBindVertexArray(0); + + // unbind all the stuff the VAO would save for us, so this is a valid test + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + glDisableVertexAttribArray(0); + glDisableVertexAttribArray(1); + + // draw with VAO + + glBindVertexArray(vao); + + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)12); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*) 0); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)24); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)36); + + glBindVertexArray(0); + + glDeleteVertexArrays(1, &vao); + + // END + + SDL_GL_SwapBuffers(); + + verify(); + +#if !EMSCRIPTEN + SDL_Delay(1500); +#endif + + SDL_Quit(); + + return 0; +} diff --git a/tests/runner.py b/tests/runner.py index 3b2fcd582fec4..89bc3d32db598 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10591,6 +10591,9 @@ def test_cubegeom_texturematrix(self): def test_cubegeom_fog(self): self.btest('cubegeom_fog.c', expected=['1617140399', '-898782526', '-946179526']) + def test_cubegeom_pre_vao(self): + self.btest('cubegeom_pre_vao.c', expected=['-1472804742', '-1626058463', '-2046234971']) + def test_cube_explosion(self): self.btest('cube_explosion.c', expected=['667220544', '-1543354600', '-1485258415']) From 36c82414cb8149e4e0cb7c8bcedfe0204e8d6d90 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 13:58:14 -0800 Subject: [PATCH 106/326] glGetPointerv --- src/library_gl.js | 18 ++++++++++++++++-- tests/cubegeom.c | 5 +++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 936eaf52760d2..8cebfc894adb5 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1471,6 +1471,20 @@ var LibraryGL = { assert(id == 0); }, + glGetPointerv: function(name, p) { + var attribute; + switch(name) { + case 0x808E: // GL_VERTEX_ARRAY_POINTER + attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; break; + case 0x8090: // GL_COLOR_ARRAY_POINTER + attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; break; + case 0x8092: // GL_TEXTURE_COORD_ARRAY_POINTER + attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0]; break; + default: throw 'TODO: glGetPointerv for ' + name; + } + {{{ makeSetValue('p', '0', 'attribute ? attribute.pointer : 0', 'i32') }}}; + }, + // GL Immediate mode $GLImmediate__postset: 'GL.immediate.setupFuncs(); Browser.moduleContextCreatedCallbacks.push(function() { GL.immediate.init() });', @@ -2688,7 +2702,7 @@ var LibraryGL = { glVertexAttribPointer__sig: 'viiiiii', glCheckFramebufferStatus__sig: 'ii', glRenderbufferStorage__sig: 'viiii', - + // Open GLES1.1 compatibility glGenFramebuffersOES : 'glGenFramebuffers', glGenRenderbuffersOES : 'glGenRenderbuffers', @@ -2700,7 +2714,7 @@ var LibraryGL = { glCheckFramebufferStatusOES : 'glCheckFramebufferStatus', glDeleteFramebuffersOES : 'glDeleteFramebuffers', glDeleteRenderbuffersOES : 'glDeleteRenderbuffers' - + }; // Simple pass-through functions. Starred ones have return values. [X] ones have X in the C name but not in the JS name diff --git a/tests/cubegeom.c b/tests/cubegeom.c index c137ad8000664..1e5de47c58526 100644 --- a/tests/cubegeom.c +++ b/tests/cubegeom.c @@ -207,6 +207,11 @@ int main(int argc, char *argv[]) glNormalPointer(GL_BYTE, 32, (void*)12); glColorPointer(4, GL_UNSIGNED_BYTE, 32, (void*)28); + int temp; // test glGetPointerv + glGetPointerv(GL_VERTEX_ARRAY_POINTER, &temp); assert(temp == 0); + glGetPointerv(GL_COLOR_ARRAY_POINTER, &temp); assert(temp == 28); + glGetPointerv(GL_TEXTURE_COORD_ARRAY_POINTER, &temp); assert(temp == 16); + glBindTexture(GL_TEXTURE_2D, texture); // diffuse? glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE1); From 7993ab4d6b5ef1eafcc913c2ae1ba4b0d641d1f9 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 14:03:31 -0800 Subject: [PATCH 107/326] TODO: multiple array buffers in vao (for each vertex attrib pointer separately) --- src/library_gl.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index 8cebfc894adb5..ae93104a4698c 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1289,7 +1289,10 @@ var LibraryGL = { glBindBuffer(target, buffer); if (target == Module.ctx.ARRAY_BUFFER) { GL.currArrayBuffer = buffer; - if (GLEmulation.currentVao) GLEmulation.currentVao.arrayBuffer = buffer; + if (GLEmulation.currentVao) { + assert(GLEmulation.currentVao.arrayBuffer == buffer || GLEmulation.currentVao.arrayBuffer == 0 || buffer == 0, 'TODO: support for multiple array buffers in vao'); + GLEmulation.currentVao.arrayBuffer = buffer; + } } else if (target == Module.ctx.ELEMENT_ARRAY_BUFFER) { GL.currElementArrayBuffer = buffer; if (GLEmulation.currentVao) GLEmulation.currentVao.elementArrayBuffer = buffer; From 8024b2b5392e0dc1d1f4545e46542d520c4f1140 Mon Sep 17 00:00:00 2001 From: Lorant Pinter Date: Wed, 20 Feb 2013 23:19:34 +0100 Subject: [PATCH 108/326] In allocate() only query native type size when needed --- src/preamble.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/preamble.js b/src/preamble.js index 503b09f182909..983952001cff3 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -447,7 +447,7 @@ function allocate(slab, types, allocator, ptr) { } #endif - var i = 0, type; + var i = 0, type, typeSize, previousType; while (i < size) { var curr = slab[i]; @@ -469,7 +469,12 @@ function allocate(slab, types, allocator, ptr) { #endif setValue(ret+i, curr, type); - i += Runtime.getNativeTypeSize(type); + + if (previousType !== type) { + typeSize = Runtime.getNativeTypeSize(type); + previousType = type; + } + i += typeSize; } return ret; From c9d030fc29a8f623f75fb287d0ad3ec17860b422 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 14:59:40 -0800 Subject: [PATCH 109/326] add more glGetIntegerv constants --- src/library_gl.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ tests/cubegeom.c | 11 ++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index ae93104a4698c..4a5861c5b1333 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1074,6 +1074,51 @@ var LibraryGL = { return; } case 0x8871: pname = Module.ctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS /* close enough */; break; // GL_MAX_TEXTURE_COORDS + case 0x807A: { // GL_VERTEX_ARRAY_SIZE + var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.size : 0', 'i32') }}}; + return; + } + case 0x807B: { // GL_VERTEX_ARRAY_TYPE + var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.type : 0', 'i32') }}}; + return; + } + case 0x807C: { // GL_VERTEX_ARRAY_STRIDE + var attribute = GLImmediate.clientAttributes[GLImmediate.VERTEX]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.stride : 0', 'i32') }}}; + return; + } + case 0x8081: { // GL_COLOR_ARRAY_SIZE + var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.size : 0', 'i32') }}}; + return; + } + case 0x8082: { // GL_COLOR_ARRAY_TYPE + var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.type : 0', 'i32') }}}; + return; + } + case 0x8083: { // GL_COLOR_ARRAY_STRIDE + var attribute = GLImmediate.clientAttributes[GLImmediate.COLOR]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.stride : 0', 'i32') }}}; + return; + } + case 0x8088: { // GL_TEXTURE_COORD_ARRAY_SIZE + var attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.size : 0', 'i32') }}}; + return; + } + case 0x8089: { // GL_TEXTURE_COORD_ARRAY_TYPE + var attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.type : 0', 'i32') }}}; + return; + } + case 0x808A: { // GL_TEXTURE_COORD_ARRAY_STRIDE + var attribute = GLImmediate.clientAttributes[GLImmediate.TEXTURE0]; + {{{ makeSetValue('params', '0', 'attribute ? attribute.stride : 0', 'i32') }}}; + return; + } } glGetIntegerv(pname, params); }; diff --git a/tests/cubegeom.c b/tests/cubegeom.c index 1e5de47c58526..6158b124319c5 100644 --- a/tests/cubegeom.c +++ b/tests/cubegeom.c @@ -207,10 +207,19 @@ int main(int argc, char *argv[]) glNormalPointer(GL_BYTE, 32, (void*)12); glColorPointer(4, GL_UNSIGNED_BYTE, 32, (void*)28); - int temp; // test glGetPointerv + int temp; // test glGetPointerv, glGetIntegerv glGetPointerv(GL_VERTEX_ARRAY_POINTER, &temp); assert(temp == 0); glGetPointerv(GL_COLOR_ARRAY_POINTER, &temp); assert(temp == 28); glGetPointerv(GL_TEXTURE_COORD_ARRAY_POINTER, &temp); assert(temp == 16); + glGetIntegerv(GL_VERTEX_ARRAY_SIZE, &temp); assert(temp == 3); + glGetIntegerv(GL_VERTEX_ARRAY_TYPE, &temp); assert(temp == GL_FLOAT); + glGetIntegerv(GL_VERTEX_ARRAY_STRIDE, &temp); assert(temp == 32); + glGetIntegerv(GL_COLOR_ARRAY_SIZE, &temp); assert(temp == 4); + glGetIntegerv(GL_COLOR_ARRAY_TYPE, &temp); assert(temp == GL_UNSIGNED_BYTE); + glGetIntegerv(GL_COLOR_ARRAY_STRIDE, &temp); assert(temp == 32); + glGetIntegerv(GL_TEXTURE_COORD_ARRAY_SIZE, &temp); assert(temp == 2); + glGetIntegerv(GL_TEXTURE_COORD_ARRAY_TYPE, &temp); assert(temp == GL_FLOAT); + glGetIntegerv(GL_TEXTURE_COORD_ARRAY_STRIDE, &temp); assert(temp == 32); glBindTexture(GL_TEXTURE_2D, texture); // diffuse? glActiveTexture(GL_TEXTURE0); From dce46c9c2a9382070e81a2fd16747dea2c5c54c5 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 16:33:29 -0800 Subject: [PATCH 110/326] build base type_info class with libcxxabi, fixes #862 --- emcc | 2 +- system/lib/libcxxabi/symbols | 1 + tests/runner.py | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/emcc b/emcc index 6f38b32b1ab0f..98edd68f698b3 100755 --- a/emcc +++ b/emcc @@ -1036,7 +1036,7 @@ try: def create_libcxxabi(): if DEBUG: print >> sys.stderr, 'emcc: building libcxxabi for cache' os = [] - for src in ['private_typeinfo.cpp']: + for src in ['private_typeinfo.cpp', 'typeinfo.cpp']: o = in_temp(src + '.o') execute([shared.PYTHON, shared.EMXX, shared.path_from_root('system', 'lib', 'libcxxabi', 'src', src), '-o', o], stdout=stdout, stderr=stderr) os.append(o) diff --git a/system/lib/libcxxabi/symbols b/system/lib/libcxxabi/symbols index 8ef205bae7675..cc22a81b2f886 100644 --- a/system/lib/libcxxabi/symbols +++ b/system/lib/libcxxabi/symbols @@ -10,3 +10,4 @@ D _ZTVN10__cxxabiv121__vmi_class_type_infoE D _ZTVN10__cxxabiv123__fundamental_type_infoE D _ZTVN10__cxxabiv129__pointer_to_member_type_infoE + D _ZTSSt9type_info diff --git a/tests/runner.py b/tests/runner.py index 89bc3d32db598..4c42bb6ebf39d 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2845,6 +2845,23 @@ class CDerivedest : public CDerived { float b; }; ''' self.do_run(src, 'a1: 0\na2: 0\na3: 1\nb1: 0\nb2: 1\nb3: 1\nc1: 1\nc2: 1\nc3: 1\n') + def test_dynamic_cast_2(self): + if self.emcc_args is None: return self.skip('need libcxxabi') + + src = r''' + #include + #include + + class Class {}; + + int main() { + const Class* dp = dynamic_cast(&typeid(Class)); + // should return dp == NULL, + printf("pointer: %p\n", dp); + } + ''' + self.do_run(src, "pointer: (nil)") + def test_funcptr(self): src = ''' #include From 5afd8a25d1a6f73f0089ae942246884b79ffb8ba Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 16:58:18 -0800 Subject: [PATCH 111/326] remove bad_cast/typeinfo.cpp from libcxx, no longer needed since it is in libcxxabi --- emcc | 2 +- system/lib/libcxx/symbols | 9 --------- system/lib/libcxxabi/symbols | 6 ++++++ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/emcc b/emcc index 98edd68f698b3..395bbda060cee 100755 --- a/emcc +++ b/emcc @@ -1017,7 +1017,7 @@ try: def create_libcxx(): if DEBUG: print >> sys.stderr, 'emcc: building libcxx for cache' os = [] - for src in ['algorithm.cpp', 'condition_variable.cpp', 'future.cpp', 'iostream.cpp', 'memory.cpp', 'random.cpp', 'stdexcept.cpp', 'system_error.cpp', 'utility.cpp', 'bind.cpp', 'debug.cpp', 'hash.cpp', 'mutex.cpp', 'string.cpp', 'thread.cpp', 'valarray.cpp', 'chrono.cpp', 'exception.cpp', 'ios.cpp', 'locale.cpp', 'regex.cpp', 'strstream.cpp', 'typeinfo.cpp']: + for src in ['algorithm.cpp', 'condition_variable.cpp', 'future.cpp', 'iostream.cpp', 'memory.cpp', 'random.cpp', 'stdexcept.cpp', 'system_error.cpp', 'utility.cpp', 'bind.cpp', 'debug.cpp', 'hash.cpp', 'mutex.cpp', 'string.cpp', 'thread.cpp', 'valarray.cpp', 'chrono.cpp', 'exception.cpp', 'ios.cpp', 'locale.cpp', 'regex.cpp', 'strstream.cpp']: o = in_temp(src + '.o') execute([shared.PYTHON, shared.EMXX, shared.path_from_root('system', 'lib', 'libcxx', src), '-o', o], stdout=stdout, stderr=stderr) os.append(o) diff --git a/system/lib/libcxx/symbols b/system/lib/libcxx/symbols index 23d4a7a47b2d9..0d412de71bc6f 100644 --- a/system/lib/libcxx/symbols +++ b/system/lib/libcxx/symbols @@ -767,7 +767,6 @@ W _ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE3putES4_bRNS_8ios_baseEwe W _ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwRKNS_12basic_stringIwS3_NS_9allocatorIwEEEE W _ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwe - T _ZNKSt8bad_cast4whatEv T _ZNKSt9exception4whatEv T _ZNSt10bad_typeidC1Ev T _ZNSt10bad_typeidC2Ev @@ -2561,11 +2560,6 @@ d _ZNSt3__1L7__wcoutE d _ZNSt3__1L8__rs_mutE W _ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_ - T _ZNSt8bad_castC1Ev - T _ZNSt8bad_castC2Ev - T _ZNSt8bad_castD0Ev - T _ZNSt8bad_castD1Ev - T _ZNSt8bad_castD2Ev T _ZNSt9exceptionD0Ev T _ZNSt9exceptionD1Ev T _ZNSt9exceptionD2Ev @@ -2719,7 +2713,6 @@ D _ZTISt15underflow_error D _ZTISt16invalid_argument D _ZTISt16nested_exception - D _ZTISt8bad_cast D _ZTISt9exception C _ZTSNSt3__110__stdinbufIcEE C _ZTSNSt3__110__stdinbufIwEE @@ -2855,7 +2848,6 @@ D _ZTSSt15underflow_error D _ZTSSt16invalid_argument D _ZTSSt16nested_exception - D _ZTSSt8bad_cast D _ZTSSt9exception D _ZTTNSt3__110istrstreamE D _ZTTNSt3__110ostrstreamE @@ -2980,7 +2972,6 @@ D _ZTVSt15underflow_error D _ZTVSt16invalid_argument D _ZTVSt16nested_exception - D _ZTVSt8bad_cast D _ZTVSt9exception W _ZThn8_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__XEv W _ZThn8_NKSt3__115time_get_bynameIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3__cEv diff --git a/system/lib/libcxxabi/symbols b/system/lib/libcxxabi/symbols index cc22a81b2f886..b63f2f82ac755 100644 --- a/system/lib/libcxxabi/symbols +++ b/system/lib/libcxxabi/symbols @@ -11,3 +11,9 @@ D _ZTVN10__cxxabiv123__fundamental_type_infoE D _ZTVN10__cxxabiv129__pointer_to_member_type_infoE D _ZTSSt9type_info + T _ZNKSt8bad_cast4whatEv + T _ZNSt8bad_castC1Ev + T _ZNSt8bad_castC2Ev + D _ZTISt8bad_cast + D _ZTSSt8bad_cast + D _ZTVSt8bad_cast From 54ff0c7c5a1e5e98d9d41917caafb0500aaa53e9 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 17:16:01 -0800 Subject: [PATCH 112/326] do not wipe out llvm debug info if linespecific corrections are done --- emcc | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/emcc b/emcc index 395bbda060cee..d28df40f61fcb 100755 --- a/emcc +++ b/emcc @@ -629,7 +629,8 @@ try: ignore_dynamic_linking = False shell_path = shared.path_from_root('src', 'shell.html') js_libraries = [] - keep_debug = False + keep_llvm_debug = False + keep_js_debug = False bind = False jcache = False if use_cxx: @@ -696,7 +697,8 @@ try: newargs[i] = '' newargs[i+1] = '' elif newargs[i] == '-g': - keep_debug = True + keep_llvm_debug = True + keep_js_debug = True elif newargs[i] == '--bind': bind = True newargs[i] = '' @@ -767,7 +769,8 @@ try: if llvm_opts is None: llvm_opts = LLVM_OPT_LEVEL[opt_level] if llvm_lto is None: llvm_lto = llvm_opts > 0 - if opt_level <= 0: keep_debug = True # always keep debug in -O0 + if opt_level <= 0: keep_llvm_debug = keep_js_debug = True # always keep debug in -O0 + if opt_level > 0: keep_llvm_debug = False # JS optimizer wipes out llvm debug info from being visible if closure is None and opt_level == 3: closure = True if DEBUG: start_time = time.time() # done after parsing arguments, which might affect debug state @@ -908,9 +911,9 @@ try: shared.Settings.CORRECT_OVERFLOWS = 1 if shared.Settings.CORRECT_SIGNS >= 2 or shared.Settings.CORRECT_OVERFLOWS >= 2 or shared.Settings.CORRECT_ROUNDINGS >= 2: - keep_debug = True # must keep debug info to do line-by-line operations + keep_llvm_debug = True # must keep debug info to do line-by-line operations - if keep_debug and closure: + if (keep_llvm_debug or keep_js_debug) and closure: print >> sys.stderr, 'emcc: warning: disabling closure because debug info was requested' closure = False @@ -1117,7 +1120,7 @@ try: # Optimize, if asked to if not LEAVE_INPUTS_RAW: - link_opts = [] if keep_debug and opt_level == 0 else ['-strip-debug'] # remove LLVM debug info in -O1+, since the optimizer removes it anyhow + link_opts = [] if keep_llvm_debug else ['-strip-debug'] # remove LLVM debug info in -O1+, since the optimizer removes it anyhow if llvm_opts > 0: shared.Building.llvm_opt(in_temp(target_basename + '.bc'), llvm_opts) if DEBUG: save_intermediate('opt', 'bc') @@ -1249,7 +1252,7 @@ try: if DEBUG: print >> sys.stderr, 'emcc: running closure' final = shared.Building.closure_compiler(final) if DEBUG: save_intermediate('closure') - elif shared.Settings.RELOOP and not closure and not keep_debug: + elif shared.Settings.RELOOP and not closure and not keep_js_debug: # do this if closure is not enabled (it gives similar speedups), and we do not need to keep debug info around js_optimizer_queue += ['registerize'] From 5f5e17f88b52e186f98546f0d3fb0327c211328a Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 20 Feb 2013 17:43:56 -0800 Subject: [PATCH 113/326] do not forward enable/disable of GL_TEXTURE_2D to WebGL enable/disable, it is not needed and just warns --- src/library_gl.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/library_gl.js b/src/library_gl.js index 4a5861c5b1333..7f297195f370e 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1026,6 +1026,7 @@ var LibraryGL = { // XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support // it by forwarding to glEnableClientState _glEnableClientState(cap); + return; } else if (!(cap in validCapabilities)) { return; } @@ -1040,6 +1041,7 @@ var LibraryGL = { // XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support // it by forwarding to glDisableClientState _glDisableClientState(cap); + return; } else if (!(cap in validCapabilities)) { return; } From 73f24426c1bdfd2ea9c6d42d8466bbdb42a6a092 Mon Sep 17 00:00:00 2001 From: Lorant Pinter Date: Thu, 21 Feb 2013 02:49:50 +0100 Subject: [PATCH 114/326] Added some comments --- AUTHORS | 1 + src/preamble.js | 1 + 2 files changed, 2 insertions(+) diff --git a/AUTHORS b/AUTHORS index 2e0c06e863578..d1e929fab433a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -49,4 +49,5 @@ a license to everyone to use it as detailed in LICENSE.) * Manuel Schölling * Bruce Mitchener, Jr. * Michael Bishop +* Lorant Pinter diff --git a/src/preamble.js b/src/preamble.js index 983952001cff3..2404928349e4e 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -470,6 +470,7 @@ function allocate(slab, types, allocator, ptr) { setValue(ret+i, curr, type); + // no need to look up size unless type changes, so cache it if (previousType !== type) { typeSize = Runtime.getNativeTypeSize(type); previousType = type; From 21f7959f64db7f3309e7f9d0d106abb1ea82f403 Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Wed, 20 Feb 2013 16:38:25 +0700 Subject: [PATCH 115/326] emcc: Improve handling of -O flag. Previously, while gcc supports -O, emcc would fail. It now interprets -O as -O2, just as gcc does. Additionally, it was only looking at the first character after -O, so nonsense like -O34 would be accepted (and treated as -O3). --- emcc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/emcc b/emcc index ffce7363a1c1f..33543d612dbe0 100755 --- a/emcc +++ b/emcc @@ -616,7 +616,8 @@ try: for i in range(len(newargs)): newargs[i] = newargs[i].strip() # On Windows Vista (and possibly others), excessive spaces in the command line leak into the items in this array, so trim e.g. 'foo.cpp ' -> 'foo.cpp' if newargs[i].startswith('-O'): - requested_level = newargs[i][2] + # Let -O default to -O2, which is what gcc does. + requested_level = newargs[i][2:] or '2' if requested_level == 's': print >> sys.stderr, 'emcc: warning: -Os is ignored (use -O0, -O1, -O2)' else: From 31b7152b355ef7244ce5060f2da618e7ad0880a0 Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Wed, 13 Feb 2013 22:55:36 +0100 Subject: [PATCH 116/326] Handle %c in sscanf. --- src/library.js | 10 ++++++++++ tests/runner.py | 23 ++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index 900b3fee1e30f..284bf92ac9a8c 100644 --- a/src/library.js +++ b/src/library.js @@ -2491,6 +2491,16 @@ LibraryManager.library = { continue; } + if (format[formatIndex] === '%' && format[formatIndex+1] == 'c') { + var argPtr = {{{ makeGetValue('varargs', 'argIndex', 'void*') }}}; + argIndex += Runtime.getNativeFieldSize('void*'); + fields++; + next = get(); + {{{ makeSetValue('argPtr', 0, 'next', 'i8') }}} + formatIndex += 2; + continue; + } + // remove whitespace while (1) { next = get(); diff --git a/tests/runner.py b/tests/runner.py index 4c42bb6ebf39d..65591c79cb38c 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -5341,9 +5341,30 @@ def test_sscanf_4(self): return(0); } ''' - self.do_run(src, '3\nday 19, month Nov, year 2012'); + def test_sscanf_5(self): + src = r''' + #include "stdio.h" + + static const char *colors[] = { + " c black", + ". c #001100", + "X c #111100" + }; + + int main(){ + unsigned char code; + char color[32]; + int rcode; + for(int i = 0; i < 3; i++) { + rcode = sscanf(colors[i], "%c c %s", &code, color); + printf("%i, %c, %s\n", rcode, code, color); + } + } + ''' + self.do_run(src, '2, , black\n2, ., #001100\n2, X, #111100'); + def test_langinfo(self): src = open(path_from_root('tests', 'langinfo', 'test.c'), 'r').read() expected = open(path_from_root('tests', 'langinfo', 'output.txt'), 'r').read() From 4c538438a40f529bd3d8b8abb46b3c5184ba9177 Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Wed, 20 Feb 2013 11:10:55 +0100 Subject: [PATCH 117/326] Add Roger Braun to AUTHORS file. --- AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 2e0c06e863578..c157c4688b916 100644 --- a/AUTHORS +++ b/AUTHORS @@ -49,4 +49,4 @@ a license to everyone to use it as detailed in LICENSE.) * Manuel Schölling * Bruce Mitchener, Jr. * Michael Bishop - +* Roger Braun From 2423bc367befb562cfa4ad656bca9087c83f1d1d Mon Sep 17 00:00:00 2001 From: Roger Braun Date: Wed, 20 Feb 2013 11:23:34 +0100 Subject: [PATCH 118/326] Add TODO for missing %c functionality. --- src/library.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library.js b/src/library.js index 284bf92ac9a8c..3e84264c64d21 100644 --- a/src/library.js +++ b/src/library.js @@ -2491,6 +2491,7 @@ LibraryManager.library = { continue; } + // TODO: Support strings like "%5c" etc. if (format[formatIndex] === '%' && format[formatIndex+1] == 'c') { var argPtr = {{{ makeGetValue('varargs', 'argIndex', 'void*') }}}; argIndex += Runtime.getNativeFieldSize('void*'); From 122a07dd4f399b8985fafedf4e515b8484b17c3c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 21 Feb 2013 10:28:28 -0800 Subject: [PATCH 119/326] add option to save JS of all tests run --- tests/runner.py | 73 +++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 4c42bb6ebf39d..7c3686b8a0253 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -100,14 +100,8 @@ def setUp(self): for temp_file in os.listdir(TEMP_DIR): if temp_file.endswith('.ll'): self.has_prev_ll = True - + def tearDown(self): - if self.save_JS: - for name in os.listdir(self.get_dir()): - if name.endswith(('.o.js', '.cc.js')): - suff = '.'.join(name.split('.')[-2:]) - shutil.copy(os.path.join(self.get_dir(), name), - os.path.join(TEMP_DIR, self.id().replace('__main__.', '').replace('.test_', '.')+'.'+suff)) if not self.save_dir: # rmtree() fails on Windows if the current working directory is inside the tree. os.chdir(os.path.join(self.get_dir(), '..')) @@ -140,6 +134,12 @@ def get_shared_library_name(self, linux_name): def get_stdout_path(self): return os.path.join(self.get_dir(), 'stdout') + def hardcode_arguments(self, filename, args): + # Hardcode in the arguments, so js is portable without manual commandlinearguments + if not args: return + js = open(filename).read() + open(filename, 'w').write(js.replace('var ret = run();', 'var ret = run(%s);' % str(args))) + def prep_ll_run(self, filename, ll_file, force_recompile=False, build_ll_hook=None): if ll_file.endswith(('.bc', '.o')): if ll_file != filename + '.o': @@ -435,6 +435,8 @@ def setup_runtimelink_test(self): sys.argv = map(lambda arg: arg if not arg.startswith('test_') else 'default.' + arg, sys.argv) +test_index = 0 + if 'benchmark' not in str(sys.argv) and 'sanity' not in str(sys.argv) and 'browser' not in str(sys.argv): # Tests @@ -448,29 +450,35 @@ def setup_runtimelink_test(self): class T(RunnerCore): # Short name, to make it more fun to use manually on the commandline ## Does a complete test - builds, runs, checks output, etc. def do_run(self, src, expected_output, args=[], output_nicerizer=None, output_processor=None, no_build=False, main_file=None, additional_files=[], js_engines=None, post_build=None, basename='src.cpp', libraries=[], includes=[], force_c=False, build_ll_hook=None, extra_emscripten_args=[]): - if force_c or (main_file is not None and main_file[-2:]) == '.c': - basename = 'src.c' - Building.COMPILER = to_cc(Building.COMPILER) - - dirname = self.get_dir() - filename = os.path.join(dirname, basename) - if not no_build: - self.build(src, dirname, filename, main_file=main_file, additional_files=additional_files, libraries=libraries, includes=includes, - build_ll_hook=build_ll_hook, extra_emscripten_args=extra_emscripten_args, post_build=post_build) - - # Run in both JavaScript engines, if optimizing - significant differences there (typed arrays) - if js_engines is None: - js_engines = JS_ENGINES - if Settings.USE_TYPED_ARRAYS: - js_engines = filter(lambda engine: engine != V8_ENGINE, js_engines) # V8 issue 1822 - js_engines = filter(lambda engine: engine not in self.banned_js_engines, js_engines) - if len(js_engines) == 0: return self.skip('No JS engine present to run this test with. Check %s and the paths therein.' % EM_CONFIG) - for engine in js_engines: - js_output = self.run_generated_code(engine, filename + '.o.js', args, output_nicerizer=output_nicerizer) - self.assertContained(expected_output, js_output.replace('\r\n', '\n')) - self.assertNotContained('ERROR', js_output) - - #shutil.rmtree(dirname) # TODO: leave no trace in memory. But for now nice for debugging + if force_c or (main_file is not None and main_file[-2:]) == '.c': + basename = 'src.c' + Building.COMPILER = to_cc(Building.COMPILER) + + dirname = self.get_dir() + filename = os.path.join(dirname, basename) + if not no_build: + self.build(src, dirname, filename, main_file=main_file, additional_files=additional_files, libraries=libraries, includes=includes, + build_ll_hook=build_ll_hook, extra_emscripten_args=extra_emscripten_args, post_build=post_build) + + # Run in both JavaScript engines, if optimizing - significant differences there (typed arrays) + if js_engines is None: + js_engines = JS_ENGINES + if Settings.USE_TYPED_ARRAYS: + js_engines = filter(lambda engine: engine != V8_ENGINE, js_engines) # V8 issue 1822 + js_engines = filter(lambda engine: engine not in self.banned_js_engines, js_engines) + if len(js_engines) == 0: return self.skip('No JS engine present to run this test with. Check %s and the paths therein.' % EM_CONFIG) + for engine in js_engines: + js_output = self.run_generated_code(engine, filename + '.o.js', args, output_nicerizer=output_nicerizer) + self.assertContained(expected_output, js_output.replace('\r\n', '\n')) + self.assertNotContained('ERROR', js_output) + + #shutil.rmtree(dirname) # TODO: leave no trace in memory. But for now nice for debugging + + if self.save_JS: + global test_index + self.hardcode_arguments(filename + '.o.js', args) + shutil.copyfile(filename + '.o.js', os.path.join(TEMP_DIR, str(test_index) + '.js')) + test_index += 1 # No building - just process an existing .ll file (or .bc, which we turn into .ll) def do_ll_run(self, ll_file, expected_output=None, args=[], js_engines=None, output_nicerizer=None, post_build=None, force_recompile=False, build_ll_hook=None, extra_emscripten_args=[]): @@ -11005,9 +11013,8 @@ def do_benchmark(self, name, src, args=[], expected_output='FAIL', emcc_args=[], '-o', final_filename] + shared_args + emcc_args, stdout=PIPE, stderr=self.stderr_redirect).communicate() assert os.path.exists(final_filename), 'Failed to compile file: ' + output[0] - # Hardcode in the arguments, so js is portable without manual commandlinearguments - js = open(final_filename).read() - open(final_filename, 'w').write(js.replace('var ret = run();', 'var ret = run(%s);' % str(args))) + if self.save_JS: + self.hardcode_arguments(final_filename, args) # Run JS global total_times, tests_done From 73266da052d9ddba2a4e56b9ee03f055a4d9fbf1 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 21 Feb 2013 13:35:30 -0800 Subject: [PATCH 120/326] aliases for OES vertex array functions --- src/library_gl.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 7f297195f370e..2c3be61c25677 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2763,8 +2763,10 @@ var LibraryGL = { glRenderbufferStorageOES : 'glRenderbufferStorage', glCheckFramebufferStatusOES : 'glCheckFramebufferStatus', glDeleteFramebuffersOES : 'glDeleteFramebuffers', - glDeleteRenderbuffersOES : 'glDeleteRenderbuffers' - + glDeleteRenderbuffersOES : 'glDeleteRenderbuffers', + glGenVertexArraysOES: 'glGenVertexArrays', + glDeleteVertexArraysOES: 'glDeleteVertexArrays', + glBindVertexArrayOES: 'glBindVertexArray', }; // Simple pass-through functions. Starred ones have return values. [X] ones have X in the C name but not in the JS name From 9bd3a033f8f853771b243cf78b5beff71b258220 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 21 Feb 2013 17:44:08 -0800 Subject: [PATCH 121/326] still emit library aliases - useful for e.g. gl OES aliasing, even if normally the main name is the only one used --- src/jsifier.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/jsifier.js b/src/jsifier.js index 21d34b67a5fd1..71975b9dbbe74 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -478,8 +478,7 @@ function JSify(data, functionsOnly, givenFunctions) { ident = '_' + ident; } var depsText = (deps ? '\n' + deps.map(addFromLibrary).filter(function(x) { return x != '' }).join('\n') : ''); - // redirected idents just need a var, but no value assigned to them - it would be unused - var contentText = isFunction ? snippet : ('var ' + ident + (redirectedIdent ? '' : '=' + snippet) + ';'); + var contentText = isFunction ? snippet : ('var ' + ident + '=' + snippet + ';'); if (ASM_JS) { var sig = LibraryManager.library[ident.substr(1) + '__sig']; if (isFunction && sig && LibraryManager.library[ident.substr(1) + '__asm']) { From 290733cf90612e5c5abb600e1a46679b7ed24e1d Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 21 Feb 2013 17:51:15 -0800 Subject: [PATCH 122/326] hide verbose file packager output --- tools/file_packager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/file_packager.py b/tools/file_packager.py index 7e196efd73b44..bfa8e2f0285d4 100644 --- a/tools/file_packager.py +++ b/tools/file_packager.py @@ -228,7 +228,7 @@ def was_seen(name): curr = open(file_['localname'], 'rb').read() file_['data_end'] = start + len(curr) if AV_WORKAROUND: curr += '\x00' - print >> sys.stderr, 'bundling', file_['name'], file_['localname'], file_['data_start'], file_['data_end'] + #print >> sys.stderr, 'bundling', file_['name'], file_['localname'], file_['data_start'], file_['data_end'] start += len(curr) data.write(curr) data.close() From 5e878548395394d4d91b5d7d1213c7bc5e982b8b Mon Sep 17 00:00:00 2001 From: "Michael J. Bishop" Date: Fri, 22 Feb 2013 10:36:10 -0500 Subject: [PATCH 123/326] Added support for `glFramebufferTexture2DOES` --- src/library_gl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library_gl.js b/src/library_gl.js index 2c3be61c25677..f30209e57a9a7 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2767,6 +2767,7 @@ var LibraryGL = { glGenVertexArraysOES: 'glGenVertexArrays', glDeleteVertexArraysOES: 'glDeleteVertexArrays', glBindVertexArrayOES: 'glBindVertexArray', + glFramebufferTexture2DOES: 'glFramebufferTexture2D' }; // Simple pass-through functions. Starred ones have return values. [X] ones have X in the C name but not in the JS name From 4ca9a8aa83d9b69c57bf6986723995d11c048af2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 10:01:04 -0800 Subject: [PATCH 124/326] turn on Math.imul by default in ASM_JS mode; it has practically no downsides since it is now used only when actually needed, which is rare, and the polyfill is very efficient --- src/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings.js b/src/settings.js index d036822f23e14..9023f7d8a02fd 100644 --- a/src/settings.js +++ b/src/settings.js @@ -324,7 +324,7 @@ var BENCHMARK = 0; // If 1, will just time how long main() takes to execute, and var ASM_JS = 0; // If 1, generate code in asm.js format. XXX This is highly experimental, // and will not work on most codebases yet. It is NOT recommended that you // try this yet. -var USE_MATH_IMUL = 0; // If 1, use Math.imul when useful +var USE_MATH_IMUL = 1; // If 1, use Math.imul when normal int math can't be done in ASM_JS var EXPLICIT_ZEXT = 0; // If 1, generate an explicit conversion of zext i1 to i32, using ?: From 557ef71e2f492878ef5f7f0ea71421babc40b4bb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 10:12:09 -0800 Subject: [PATCH 125/326] fix test_i32_mul_semiprecise --- tests/runner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index 3986963022f3a..ba87ef1d51486 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -1154,6 +1154,8 @@ def test_i32_mul_precise(self): self.do_run(src, '3217489085') def test_i32_mul_semiprecise(self): + Settings.USE_MATH_IMUL = 0 # we want semiprecise here + src = r''' #include From 6bee6bb0630a1622c5a28146f044ee6333ec8d03 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 10:23:29 -0800 Subject: [PATCH 126/326] save client states in vertex array objects --- src/library_gl.js | 12 ++ tests/cubegeom_pre2_vao.c | 380 ++++++++++++++++++++++++++++++++++++++ tests/runner.py | 3 + 3 files changed, 395 insertions(+) create mode 100644 tests/cubegeom_pre2_vao.c diff --git a/src/library_gl.js b/src/library_gl.js index 2c3be61c25677..8a3dc8a8f49b8 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1469,6 +1469,9 @@ var LibraryGL = { case 'glIsFramebuffer': ret = {{{ Functions.getIndex('_glIsFramebuffer', true) }}}; break; case 'glCheckFramebufferStatus': ret = {{{ Functions.getIndex('_glCheckFramebufferStatus', true) }}}; break; case 'glRenderbufferStorage': ret = {{{ Functions.getIndex('_glRenderbufferStorage', true) }}}; break; + case 'glGenVertexArrays': ret = {{{ Functions.getIndex('_glGenVertexArrays', true) }}}; break; + case 'glDeleteVertexArrays': ret = {{{ Functions.getIndex('_glDeleteVertexArrays', true) }}}; break; + case 'glBindVertexArray': ret = {{{ Functions.getIndex('_glBindVertexArray', true) }}}; break; } if (!ret) Module.printErr('WARNING: getProcAddress failed for ' + name); return ret; @@ -2469,9 +2472,11 @@ var LibraryGL = { if (disable && GL.immediate.enabledClientAttributes[attrib]) { GL.immediate.enabledClientAttributes[attrib] = false; GL.immediate.totalEnabledClientAttributes--; + if (GLEmulation.currentVao) delete GLEmulation.currentVao.enabledClientStates[cap]; } else if (!disable && !GL.immediate.enabledClientAttributes[attrib]) { GL.immediate.enabledClientAttributes[attrib] = true; GL.immediate.totalEnabledClientAttributes++; + if (GLEmulation.currentVao) GLEmulation.currentVao.enabledClientStates[cap] = 1; } GL.immediate.modifiedClientAttributes = true; }, @@ -2509,6 +2514,7 @@ var LibraryGL = { elementArrayBuffer: 0, enabledVertexAttribArrays: {}, vertexAttribPointers: {}, + enabledClientStates: {}, }; {{{ makeSetValue('vaos', 'i*4', 'id', 'i32') }}}; } @@ -2533,6 +2539,9 @@ var LibraryGL = { for (var vaa in info.vertexAttribPointers) { _glVertexAttribPointer.apply(null, info.vertexAttribPointers[vaa]); } + for (var attrib in info.enabledClientStates) { + _glEnableClientState(attrib|0); + } GLEmulation.currentVao = info; // set currentVao last, so the commands we ran here were not recorded } else if (GLEmulation.currentVao) { // undo vao @@ -2543,6 +2552,9 @@ var LibraryGL = { for (var vaa in info.enabledVertexAttribArrays) { _glDisableVertexAttribArray(vaa); } + for (var attrib in info.enabledClientStates) { + _glDisableClientState(attrib|0); + } } }, diff --git a/tests/cubegeom_pre2_vao.c b/tests/cubegeom_pre2_vao.c new file mode 100644 index 0000000000000..98bedd54a3492 --- /dev/null +++ b/tests/cubegeom_pre2_vao.c @@ -0,0 +1,380 @@ +/* +THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION +AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN. + +THE ORIGINAL AUTHOR IS KYLE FOLEY. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +#if !EMSCRIPTEN +#define USE_GLEW 1 +#endif + +#if USE_GLEW +#include "GL/glew.h" +#endif + +#include "SDL/SDL.h" +#if !USE_GLEW +#include "SDL/SDL_opengl.h" +#endif + +#include +#include +#include + +PFNGLGENVERTEXARRAYSPROC glGenVertexArrays_ = NULL; +PFNGLBINDVERTEXARRAYPROC glBindVertexArray_ = NULL; +PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays_ = NULL; + +void verify() { + int width = 640, height = 480; + unsigned char *data = (unsigned char*)malloc(width*height*4); + glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data); + int sum = 0; + for (int x = 0; x < width*height*4; x++) { + if (x % 4 != 3) sum += x * data[x]; + } +#if EMSCRIPTEN + int result = sum; + REPORT_RESULT(); +#endif +} + +int main(int argc, char *argv[]) +{ + SDL_Surface *screen; + if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { + printf("Unable to initialize SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + screen = SDL_SetVideoMode( 640, 480, 24, SDL_OPENGL ); + if ( !screen ) { + printf("Unable to set video mode: %s\n", SDL_GetError()); + return 1; + } + + glClearColor( 0, 0, 0, 0 ); + glClear( GL_COLOR_BUFFER_BIT ); + + glGenVertexArrays_ = (PFNGLGENVERTEXARRAYSPROC) SDL_GL_GetProcAddress("glGenVertexArrays"); + assert(glGenVertexArrays_); + glBindVertexArray_ = (PFNGLBINDVERTEXARRAYPROC) SDL_GL_GetProcAddress("glBindVertexArray"); + assert(glBindVertexArray_); + glDeleteVertexArrays_ = (PFNGLDELETEVERTEXARRAYSPROC) SDL_GL_GetProcAddress("glDeleteVertexArrays"); + assert(glDeleteVertexArrays_); + + // Generate a VAO + GLuint vao; + glGenVertexArrays_(1, &vao); + glBindVertexArray_(vao); + + // Create a texture + + GLuint texture; + glGenTextures( 1, &texture ); + glBindTexture( GL_TEXTURE_2D, texture ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + GLubyte textureData[16*16*4]; + for (int x = 0; x < 16; x++) { + for (int y = 0; y < 16; y++) { + *((int*)&textureData[(x*16 + y) * 4]) = x*16 + ((y*16) << 8); + } + } + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, + GL_RGBA, GL_UNSIGNED_BYTE, textureData ); + + // Create a second texture + + GLuint texture2; + glGenTextures( 1, &texture2 ); + glBindTexture( GL_TEXTURE_2D, texture2 ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + GLubyte texture2Data[] = { 0xff, 0, 0, 0xff, + 0, 0xff, 0, 0xaa, + 0, 0, 0xff, 0x55, + 0x80, 0x90, 0x70, 0 }; + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, + GL_RGBA, GL_UNSIGNED_BYTE, texture2Data ); + + // BEGIN + +#if USE_GLEW + glewInit(); +#endif + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + // original: glFrustum(-0.6435469817188064, 0.6435469817188064 ,-0.48266022190470925, 0.48266022190470925 ,0.5400000214576721, 2048); + //glFrustum(-0.6435469817188064, 0.1435469817188064 ,-0.48266022190470925, 0.88266022190470925 ,0.5400000214576721, 2048); + GLfloat pm[] = { 1.372136116027832, 0, 0, 0, 0, 0.7910231351852417, 0, 0, -0.6352481842041016, 0.29297152161598206, -1.0005275011062622, -1, 0, 0, -1.080284833908081, 0 }; + glLoadMatrixf(pm); + + glMatrixMode(GL_MODELVIEW); + GLfloat matrixData[] = { -1, 0, 0, 0, + 0, 0,-1, 0, + 0, 1, 0, 0, + 0, 0, 0, 1 }; + glLoadMatrixf(matrixData); + //glTranslated(-512,-512,-527); // XXX this should be uncommented, but if it is then nothing is shown + +// glEnable(GL_CULL_FACE); + // glEnable(GL_DEPTH_TEST); + + //glClear(GL_DEPTH_BUFFER_BIT); + +// glEnableClientState(GL_NORMAL_ARRAY); + // glEnableClientState(GL_COLOR_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + + glActiveTexture(GL_TEXTURE0); + + glEnableClientState(GL_VERTEX_ARRAY); + + GLuint arrayBuffer, elementBuffer; + glGenBuffers(1, &arrayBuffer); + glGenBuffers(1, &elementBuffer); + + GLubyte arrayData[] = { +/* +[0, 0, 0, 67] ==> 128 float +[0, 0, 128, 67] ==> 256 float +[0, 0, 0, 68] ==> 512 float +[0, 0, 128, 68] ==> 1024 float + +[vertex x ] [vertex y ] [vertex z ] [nr] [texture u ] [texture v ] [lm u ] [lm v ] [color r,g,b,a ] */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 0 + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 1 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 2 + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 3 + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 4 + 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 5 + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 6 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 7 + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 8 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 9 + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 10 + 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 11 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 12 + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 13 + 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 14 + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 15 + + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128 + }; + assert(sizeof(arrayData) == 1408); + glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(arrayData), arrayData, GL_STATIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + GLushort elementData[] = { 1, 2, 0, 2, 3, 0, 5, 6, 4, 6, 7, 4, 9, 10, 8, 10, 11, 8, 13, 14, 12, 14, 15, 12 }; + assert(sizeof(elementData) == 48); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elementData), elementData, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer); + + // sauer vertex data is apparently 0-12: V3F, 12: N1B, 16-24: T2F, 24-28: T2S, 28-32: C4B + glVertexPointer(3, GL_FLOAT, 32, (void*)0); // all these apply to the ARRAY_BUFFER that is bound + glTexCoordPointer(2, GL_FLOAT, 32, (void*)16); +// glClientActiveTexture(GL_TEXTURE1); // XXX seems to be ignored in native build +// glTexCoordPointer(2, GL_SHORT, 32, (void*)24); +// glClientActiveTexture(GL_TEXTURE0); // likely not needed, it is a cleanup +// glNormalPointer(GL_BYTE, 32, (void*)12); +// glColorPointer(4, GL_UNSIGNED_BYTE, 32, (void*)28); + + glBindTexture(GL_TEXTURE_2D, texture); // diffuse? + glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, texture2); // lightmap? + glActiveTexture(GL_TEXTURE0); + + GLint ok; + + const char *vertexShader = "uniform mat4 u_modelView;\n" + "uniform mat4 u_projection;\n" + "varying vec4 v_texCoord0;\n" + "void main(void)\n" + "{\n" // (gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex) + // (u_projection * u_modelView * a_position) + " gl_Position = (u_projection * u_modelView * gl_Vertex) + vec4(200, 0, 0, 0);\n" + " v_texCoord0.xy = gl_MultiTexCoord0.xy/20.0;\n" // added /100 here + "}\n"; + const char *fragmentShader = "uniform sampler2D diffusemap;\n" + "varying vec4 v_texCoord0;\n" + "void main(void)\n" + "{\n" + " vec4 diffuse = texture2D(diffusemap, v_texCoord0.xy);\n" + " gl_FragColor = diffuse;\n" + "}\n"; + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &vertexShader, NULL); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &ok); + if (!ok) { + printf("Shader compilation error with vertex\n"); + GLint infoLen = 0; + glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen > 1) + { + char* infoLog = (char *)malloc(sizeof(char) * infoLen+1); + glGetShaderInfoLog(vs, infoLen, NULL, infoLog); + printf("Error compiling shader:\n%s\n", infoLog); + } + } + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, &fragmentShader, NULL); + glCompileShader(fs); + glGetShaderiv(fs, GL_COMPILE_STATUS, &ok); + if (!ok) { + printf("Shader compilation error with fragment\n"); + GLint infoLen = 0; + glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen > 1) + { + char* infoLog = (char *)malloc(sizeof(char) * infoLen+1); + glGetShaderInfoLog(vs, infoLen, NULL, infoLog); + printf("Error compiling shader:\n%s\n", infoLog); + } + } + + GLuint program = glCreateProgram(); + + glAttachShader(program, vs); + glAttachShader(program, fs); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &ok); + assert(ok); + + glUseProgram(program); + + //GLint lightmapLocation = glGetUniformLocation(program, "lightmap"); + //assert(lightmapLocation >= 0); + //glUniform1i(lightmapLocation, 1); // sampler2D? Is it the texture unit? + + GLint diffusemapLocation = glGetUniformLocation(program, "diffusemap"); + assert(diffusemapLocation >= 0); + glUniform1i(diffusemapLocation, 0); + + //GLint texgenscrollLocation = glGetUniformLocation(program, "texgenscroll"); + //assert(texgenscrollLocation >= 0); + + //GLint colorparamsLocation = glGetUniformLocation(program, "colorparams"); + //assert(colorparamsLocation >= 0); + + //GLfloat texgenscrollData[] = { 0, 0, 0, 0 }; + //glUniform4fv(texgenscrollLocation, 1, texgenscrollData); + + //GLfloat colorparamsData[] = { 2, 2, 2, 1 }; + //glUniform4fv(colorparamsLocation, 1, colorparamsData); + + { + GLfloat data[16]; + glGetFloatv(GL_MODELVIEW_MATRIX, data); + printf("Modelview: "); + for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]); + printf("\n"); + //memset(data, 0, 16*4); + GLint modelViewLocation = glGetUniformLocation(program, "u_modelView"); + assert(modelViewLocation >= 0); + glUniformMatrix4fv(modelViewLocation, 1, GL_FALSE, data); + } + { + GLfloat data[16]; + glGetFloatv(GL_PROJECTION_MATRIX, data); + printf("Projection: "); + for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]); + printf("\n"); + //memset(data, 0, 16*4); + GLint projectionLocation = glGetUniformLocation(program, "u_projection"); + assert(projectionLocation >= 0); + glUniformMatrix4fv(projectionLocation, 1, GL_FALSE, data); + } + +/* + glBindAttribLocation(program, 0, "a_position"); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 32, (void*)0); + glEnableVertexAttribArray(0); + + glBindAttribLocation(program, 1, "v_texCoord0"); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 32, (void*)16); + glEnableVertexAttribArray(1); +*/ + + // stop recording in the VAO + + glBindVertexArray_(0); + + // unbind all the stuff the VAO would save for us, so this is a valid test + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + + // draw with VAO + + glBindVertexArray_(vao); + + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)12); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*) 0); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)24); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)36); + + // END + + SDL_GL_SwapBuffers(); + + verify(); + +#if !EMSCRIPTEN + SDL_Delay(1500); +#endif + + // SDL_Quit(); + + return 0; +} + diff --git a/tests/runner.py b/tests/runner.py index ba87ef1d51486..2c10b926331e3 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10642,6 +10642,9 @@ def test_cubegeom_fog(self): def test_cubegeom_pre_vao(self): self.btest('cubegeom_pre_vao.c', expected=['-1472804742', '-1626058463', '-2046234971']) + def test_cubegeom_pre2_vao(self): + self.btest('cubegeom_pre2_vao.c', expected=['-1472804742', '-1626058463', '-2046234971']) + def test_cube_explosion(self): self.btest('cube_explosion.c', expected=['667220544', '-1543354600', '-1485258415']) From 4943eb8ecfe4666cb68f11f1117c1b6f9e02c656 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 10:51:19 -0800 Subject: [PATCH 127/326] wipe out previous vao-related state when binding a vao --- src/library_gl.js | 26 +-- tests/cubegeom_pre2_vao2.c | 381 +++++++++++++++++++++++++++++++++++++ tests/runner.py | 3 + 3 files changed, 397 insertions(+), 13 deletions(-) create mode 100644 tests/cubegeom_pre2_vao2.c diff --git a/src/library_gl.js b/src/library_gl.js index 8a3dc8a8f49b8..239d8f77a40f6 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -996,6 +996,7 @@ var LibraryGL = { // VAO support vaos: [], currentVao: null, + enabledVertexAttribArrays: {}, // helps with vao cleanups init: function() { GLEmulation.fogColor = new Float32Array(4); @@ -1390,12 +1391,14 @@ var LibraryGL = { var glEnableVertexAttribArray = _glEnableVertexAttribArray; _glEnableVertexAttribArray = function(index) { glEnableVertexAttribArray(index); + GLEmulation.enabledVertexAttribArrays[index] = 1; if (GLEmulation.currentVao) GLEmulation.currentVao.enabledVertexAttribArrays[index] = 1; }; var glDisableVertexAttribArray = _glDisableVertexAttribArray; _glDisableVertexAttribArray = function(index) { glDisableVertexAttribArray(index); + delete GLEmulation.enabledVertexAttribArrays[index]; if (GLEmulation.currentVao) delete GLEmulation.currentVao.enabledVertexAttribArrays[index]; }; @@ -2527,9 +2530,18 @@ var LibraryGL = { } }, glBindVertexArray: function(vao) { + // undo vao-related things, wipe the slate clean, both for vao of 0 or an actual vao + GLEmulation.currentVao = null; // make sure the commands we run here are not recorded + _glBindBuffer(Module.ctx.ARRAY_BUFFER, 0); // XXX if one was there before we were bound? + _glBindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, 0); + for (var vaa in GLEmulation.enabledVertexAttribArrays) { + Module.ctx.disableVertexAttribArray(vaa); + } + GLEmulation.enabledVertexAttribArrays = {}; + GL.immediate.enabledClientAttributes = [0, 0]; + GL.immediate.totalEnabledClientAttributes = 0; if (vao) { // replay vao - if (GLEmulation.currentVao) _glBindVertexArray(0); // flush the old one out var info = GLEmulation.vaos[vao]; _glBindBuffer(Module.ctx.ARRAY_BUFFER, info.arrayBuffer); // XXX overwrite current binding? _glBindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, info.elementArrayBuffer); @@ -2543,18 +2555,6 @@ var LibraryGL = { _glEnableClientState(attrib|0); } GLEmulation.currentVao = info; // set currentVao last, so the commands we ran here were not recorded - } else if (GLEmulation.currentVao) { - // undo vao - var info = GLEmulation.currentVao; - GLEmulation.currentVao = null; // set currentVao first, so the commands we run here are not recorded - _glBindBuffer(Module.ctx.ARRAY_BUFFER, 0); // XXX if one was there before we were bound? - _glBindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, 0); - for (var vaa in info.enabledVertexAttribArrays) { - _glDisableVertexAttribArray(vaa); - } - for (var attrib in info.enabledClientStates) { - _glDisableClientState(attrib|0); - } } }, diff --git a/tests/cubegeom_pre2_vao2.c b/tests/cubegeom_pre2_vao2.c new file mode 100644 index 0000000000000..e3ab4d6228db0 --- /dev/null +++ b/tests/cubegeom_pre2_vao2.c @@ -0,0 +1,381 @@ +/* +THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION +AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN. + +THE ORIGINAL AUTHOR IS KYLE FOLEY. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +#if !EMSCRIPTEN +#define USE_GLEW 1 +#endif + +#if USE_GLEW +#include "GL/glew.h" +#endif + +#include "SDL/SDL.h" +#if !USE_GLEW +#include "SDL/SDL_opengl.h" +#endif + +#include +#include +#include + +PFNGLGENVERTEXARRAYSPROC glGenVertexArrays_ = NULL; +PFNGLBINDVERTEXARRAYPROC glBindVertexArray_ = NULL; +PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays_ = NULL; + +void verify() { + int width = 640, height = 480; + unsigned char *data = (unsigned char*)malloc(width*height*4); + glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data); + int sum = 0; + for (int x = 0; x < width*height*4; x++) { + if (x % 4 != 3) sum += x * data[x]; + } +#if EMSCRIPTEN + int result = sum; + REPORT_RESULT(); +#endif +} + +int main(int argc, char *argv[]) +{ + SDL_Surface *screen; + if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { + printf("Unable to initialize SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + screen = SDL_SetVideoMode( 640, 480, 24, SDL_OPENGL ); + if ( !screen ) { + printf("Unable to set video mode: %s\n", SDL_GetError()); + return 1; + } + + glClearColor( 0, 0, 0, 0 ); + glClear( GL_COLOR_BUFFER_BIT ); + + glGenVertexArrays_ = (PFNGLGENVERTEXARRAYSPROC) SDL_GL_GetProcAddress("glGenVertexArrays"); + assert(glGenVertexArrays_); + glBindVertexArray_ = (PFNGLBINDVERTEXARRAYPROC) SDL_GL_GetProcAddress("glBindVertexArray"); + assert(glBindVertexArray_); + glDeleteVertexArrays_ = (PFNGLDELETEVERTEXARRAYSPROC) SDL_GL_GetProcAddress("glDeleteVertexArrays"); + assert(glDeleteVertexArrays_); + + glEnableClientState(GL_TEXTURE_COORD_ARRAY); // enabling it *before* the vao does nothing, the vao should wipe it out! + + // Generate a VAO + GLuint vao; + glGenVertexArrays_(1, &vao); + glBindVertexArray_(vao); + + // Create a texture + + GLuint texture; + glGenTextures( 1, &texture ); + glBindTexture( GL_TEXTURE_2D, texture ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + GLubyte textureData[16*16*4]; + for (int x = 0; x < 16; x++) { + for (int y = 0; y < 16; y++) { + *((int*)&textureData[(x*16 + y) * 4]) = x*16 + ((y*16) << 8); + } + } + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, + GL_RGBA, GL_UNSIGNED_BYTE, textureData ); + + // Create a second texture + + GLuint texture2; + glGenTextures( 1, &texture2 ); + glBindTexture( GL_TEXTURE_2D, texture2 ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + GLubyte texture2Data[] = { 0xff, 0, 0, 0xff, + 0, 0xff, 0, 0xaa, + 0, 0, 0xff, 0x55, + 0x80, 0x90, 0x70, 0 }; + glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, + GL_RGBA, GL_UNSIGNED_BYTE, texture2Data ); + + // BEGIN + +#if USE_GLEW + glewInit(); +#endif + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + // original: glFrustum(-0.6435469817188064, 0.6435469817188064 ,-0.48266022190470925, 0.48266022190470925 ,0.5400000214576721, 2048); + //glFrustum(-0.6435469817188064, 0.1435469817188064 ,-0.48266022190470925, 0.88266022190470925 ,0.5400000214576721, 2048); + GLfloat pm[] = { 1.372136116027832, 0, 0, 0, 0, 0.7910231351852417, 0, 0, -0.6352481842041016, 0.29297152161598206, -1.0005275011062622, -1, 0, 0, -1.080284833908081, 0 }; + glLoadMatrixf(pm); + + glMatrixMode(GL_MODELVIEW); + GLfloat matrixData[] = { -1, 0, 0, 0, + 0, 0,-1, 0, + 0, 1, 0, 0, + 0, 0, 0, 1 }; + glLoadMatrixf(matrixData); + //glTranslated(-512,-512,-527); // XXX this should be uncommented, but if it is then nothing is shown + +// glEnable(GL_CULL_FACE); + // glEnable(GL_DEPTH_TEST); + + //glClear(GL_DEPTH_BUFFER_BIT); + +// glEnableClientState(GL_NORMAL_ARRAY); + // glEnableClientState(GL_COLOR_ARRAY); + + glActiveTexture(GL_TEXTURE0); + + glEnableClientState(GL_VERTEX_ARRAY); + + GLuint arrayBuffer, elementBuffer; + glGenBuffers(1, &arrayBuffer); + glGenBuffers(1, &elementBuffer); + + GLubyte arrayData[] = { +/* +[0, 0, 0, 67] ==> 128 float +[0, 0, 128, 67] ==> 256 float +[0, 0, 0, 68] ==> 512 float +[0, 0, 128, 68] ==> 1024 float + +[vertex x ] [vertex y ] [vertex z ] [nr] [texture u ] [texture v ] [lm u ] [lm v ] [color r,g,b,a ] */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 0 + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 1 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 2 + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 3 + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 4 + 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, // 5 + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 6 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 7 + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 8 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 9 + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 10 + 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 11 + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 12 + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 0, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 13 + 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 14 + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 128, 67, 0, 0, 0, 0, 128, 128, 128, 128, // 15 + + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 128, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, + 0, 0, 128, 68, 0, 0, 128, 68, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128 + }; + assert(sizeof(arrayData) == 1408); + glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(arrayData), arrayData, GL_STATIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + GLushort elementData[] = { 1, 2, 0, 2, 3, 0, 5, 6, 4, 6, 7, 4, 9, 10, 8, 10, 11, 8, 13, 14, 12, 14, 15, 12 }; + assert(sizeof(elementData) == 48); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elementData), elementData, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + glBindBuffer(GL_ARRAY_BUFFER, arrayBuffer); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer); + + // sauer vertex data is apparently 0-12: V3F, 12: N1B, 16-24: T2F, 24-28: T2S, 28-32: C4B + glVertexPointer(3, GL_FLOAT, 32, (void*)0); // all these apply to the ARRAY_BUFFER that is bound + glTexCoordPointer(2, GL_FLOAT, 32, (void*)16); +// glClientActiveTexture(GL_TEXTURE1); // XXX seems to be ignored in native build +// glTexCoordPointer(2, GL_SHORT, 32, (void*)24); +// glClientActiveTexture(GL_TEXTURE0); // likely not needed, it is a cleanup +// glNormalPointer(GL_BYTE, 32, (void*)12); +// glColorPointer(4, GL_UNSIGNED_BYTE, 32, (void*)28); + + glBindTexture(GL_TEXTURE_2D, texture); // diffuse? + glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, texture2); // lightmap? + glActiveTexture(GL_TEXTURE0); + + GLint ok; + + const char *vertexShader = "uniform mat4 u_modelView;\n" + "uniform mat4 u_projection;\n" + "varying vec4 v_texCoord0;\n" + "void main(void)\n" + "{\n" // (gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex) + // (u_projection * u_modelView * a_position) + " gl_Position = (u_projection * u_modelView * gl_Vertex) + vec4(200, 0, 0, 0);\n" + " v_texCoord0.xy = gl_MultiTexCoord0.xy/20.0;\n" // added /100 here + "}\n"; + const char *fragmentShader = "uniform sampler2D diffusemap;\n" + "varying vec4 v_texCoord0;\n" + "void main(void)\n" + "{\n" + " vec4 diffuse = texture2D(diffusemap, v_texCoord0.xy);\n" + " gl_FragColor = diffuse;\n" + "}\n"; + + GLuint vs = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(vs, 1, &vertexShader, NULL); + glCompileShader(vs); + glGetShaderiv(vs, GL_COMPILE_STATUS, &ok); + if (!ok) { + printf("Shader compilation error with vertex\n"); + GLint infoLen = 0; + glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen > 1) + { + char* infoLog = (char *)malloc(sizeof(char) * infoLen+1); + glGetShaderInfoLog(vs, infoLen, NULL, infoLog); + printf("Error compiling shader:\n%s\n", infoLog); + } + } + + GLuint fs = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(fs, 1, &fragmentShader, NULL); + glCompileShader(fs); + glGetShaderiv(fs, GL_COMPILE_STATUS, &ok); + if (!ok) { + printf("Shader compilation error with fragment\n"); + GLint infoLen = 0; + glGetShaderiv (vs, GL_INFO_LOG_LENGTH, &infoLen); + if (infoLen > 1) + { + char* infoLog = (char *)malloc(sizeof(char) * infoLen+1); + glGetShaderInfoLog(vs, infoLen, NULL, infoLog); + printf("Error compiling shader:\n%s\n", infoLog); + } + } + + GLuint program = glCreateProgram(); + + glAttachShader(program, vs); + glAttachShader(program, fs); + glLinkProgram(program); + glGetProgramiv(program, GL_LINK_STATUS, &ok); + assert(ok); + + glUseProgram(program); + + //GLint lightmapLocation = glGetUniformLocation(program, "lightmap"); + //assert(lightmapLocation >= 0); + //glUniform1i(lightmapLocation, 1); // sampler2D? Is it the texture unit? + + GLint diffusemapLocation = glGetUniformLocation(program, "diffusemap"); + assert(diffusemapLocation >= 0); + glUniform1i(diffusemapLocation, 0); + + //GLint texgenscrollLocation = glGetUniformLocation(program, "texgenscroll"); + //assert(texgenscrollLocation >= 0); + + //GLint colorparamsLocation = glGetUniformLocation(program, "colorparams"); + //assert(colorparamsLocation >= 0); + + //GLfloat texgenscrollData[] = { 0, 0, 0, 0 }; + //glUniform4fv(texgenscrollLocation, 1, texgenscrollData); + + //GLfloat colorparamsData[] = { 2, 2, 2, 1 }; + //glUniform4fv(colorparamsLocation, 1, colorparamsData); + + { + GLfloat data[16]; + glGetFloatv(GL_MODELVIEW_MATRIX, data); + printf("Modelview: "); + for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]); + printf("\n"); + //memset(data, 0, 16*4); + GLint modelViewLocation = glGetUniformLocation(program, "u_modelView"); + assert(modelViewLocation >= 0); + glUniformMatrix4fv(modelViewLocation, 1, GL_FALSE, data); + } + { + GLfloat data[16]; + glGetFloatv(GL_PROJECTION_MATRIX, data); + printf("Projection: "); + for (int i = 0; i < 16; i++) printf("%.3f, ", data[i]); + printf("\n"); + //memset(data, 0, 16*4); + GLint projectionLocation = glGetUniformLocation(program, "u_projection"); + assert(projectionLocation >= 0); + glUniformMatrix4fv(projectionLocation, 1, GL_FALSE, data); + } + +/* + glBindAttribLocation(program, 0, "a_position"); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 32, (void*)0); + glEnableVertexAttribArray(0); + + glBindAttribLocation(program, 1, "v_texCoord0"); + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 32, (void*)16); + glEnableVertexAttribArray(1); +*/ + + // stop recording in the VAO + + glBindVertexArray_(0); + + // unbind all the stuff the VAO would save for us, so this is a valid test + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_VERTEX_ARRAY); + + // draw with VAO + + glBindVertexArray_(vao); + + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)12); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*) 0); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)24); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (void*)36); + + // END + + SDL_GL_SwapBuffers(); + + verify(); + +#if !EMSCRIPTEN + SDL_Delay(1500); +#endif + + // SDL_Quit(); + + return 0; +} + diff --git a/tests/runner.py b/tests/runner.py index 2c10b926331e3..85cb0d3c790cc 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10645,6 +10645,9 @@ def test_cubegeom_pre_vao(self): def test_cubegeom_pre2_vao(self): self.btest('cubegeom_pre2_vao.c', expected=['-1472804742', '-1626058463', '-2046234971']) + def test_cubegeom_pre2_vao2(self): + self.btest('cubegeom_pre2_vao2.c', expected=['-790445118']) + def test_cube_explosion(self): self.btest('cube_explosion.c', expected=['667220544', '-1543354600', '-1485258415']) From de644016429e268179962730dbb9172823985993 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 11:26:00 -0800 Subject: [PATCH 128/326] mark client attributes as modified when we clear for vaos --- src/library_gl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library_gl.js b/src/library_gl.js index 239d8f77a40f6..f0b5b9ca1fac5 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2540,6 +2540,7 @@ var LibraryGL = { GLEmulation.enabledVertexAttribArrays = {}; GL.immediate.enabledClientAttributes = [0, 0]; GL.immediate.totalEnabledClientAttributes = 0; + GL.immediate.modifiedClientAttributes = true; if (vao) { // replay vao var info = GLEmulation.vaos[vao]; From 02ec49d58bbc468cac367b86d6ba1ceae6649b99 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 11:37:46 -0800 Subject: [PATCH 129/326] GL_UNSAFE_OPTS option --- src/library_gl.js | 20 +++++++++++++++++--- src/settings.js | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index f0b5b9ca1fac5..c0393a67d953d 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1898,27 +1898,35 @@ var LibraryGL = { } // If the array buffer is unchanged and the renderer as well, then we can avoid all the work here - // XXX We use some heuristics here, and this may not work in all cases. Try disabling this if you - // have odd glitches (by setting canSkip always to 0, or even cleaning up the renderer right - // after rendering) + // XXX We use some heuristics here, and this may not work in all cases. Try disabling GL_UNSAFE_OPTS if you + // have odd glitches +#if GL_UNSAFE_OPTS var lastRenderer = GL.immediate.lastRenderer; var canSkip = this == lastRenderer && arrayBuffer == GL.immediate.lastArrayBuffer && (GL.currProgram || this.program) == GL.immediate.lastProgram && !GL.immediate.matricesModified; if (!canSkip && lastRenderer) lastRenderer.cleanup(); +#endif if (!GL.currArrayBuffer) { // Bind the array buffer and upload data after cleaning up the previous renderer +#if GL_UNSAFE_OPTS + // Potentially unsafe, since lastArrayBuffer might not reflect the true array buffer in code that mixes immediate/non-immediate if (arrayBuffer != GL.immediate.lastArrayBuffer) { +#endif Module.ctx.bindBuffer(Module.ctx.ARRAY_BUFFER, arrayBuffer); +#if GL_UNSAFE_OPTS } +#endif Module.ctx.bufferSubData(Module.ctx.ARRAY_BUFFER, start, GL.immediate.vertexData.subarray(start >> 2, end >> 2)); } +#if GL_UNSAFE_OPTS if (canSkip) return; GL.immediate.lastRenderer = this; GL.immediate.lastArrayBuffer = arrayBuffer; GL.immediate.lastProgram = GL.currProgram || this.program; GL.immediate.matricesModified = false; +#endif if (!GL.currProgram) { Module.ctx.useProgram(this.program); @@ -1994,9 +2002,11 @@ var LibraryGL = { Module.ctx.bindBuffer(Module.ctx.ARRAY_BUFFER, null); } +#if GL_UNSAFE_OPTS GL.immediate.lastRenderer = null; GL.immediate.lastArrayBuffer = null; GL.immediate.lastProgram = null; +#endif GL.immediate.matricesModified = true; } }; @@ -2241,6 +2251,10 @@ var LibraryGL = { if (emulatedElementArrayBuffer) { Module.ctx.bindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, GL.buffers[GL.currElementArrayBuffer] || null); } + +#if GL_UNSAFE_OPTS == 0 + renderer.cleanUp(); +#endif } }, diff --git a/src/settings.js b/src/settings.js index 9023f7d8a02fd..f4e23c5b74abb 100644 --- a/src/settings.js +++ b/src/settings.js @@ -163,6 +163,7 @@ var SOCKET_DEBUG = 0; // Log out socket/network data transfer. var GL_DEBUG = 0; // Print out all calls into WebGL. As with LIBRARY_DEBUG, you can set a runtime // option, in this case GL.debug. var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers are +var GL_UNSAFE_OPTS = 1; // Enables some potentially-unsafe optimizations in GL emulation code var DISABLE_EXCEPTION_CATCHING = 0; // Disables generating code to actually catch exceptions. If the code you // are compiling does not actually rely on catching exceptions (but the From 0db7e38c543307a5a55b328ff5b15292e297f57b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 11:45:49 -0800 Subject: [PATCH 130/326] remove overly-strict assertion in websockets test --- tests/websockets.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/websockets.c b/tests/websockets.c index 59acbd6963c0d..34aa44b4b25dc 100644 --- a/tests/websockets.c +++ b/tests/websockets.c @@ -82,7 +82,7 @@ void iter(void *arg) { printf("sum: %d\n", sum); #if EMSCRIPTEN - assert(not_always_data == 1); + //assert(not_always_data == 1); int result = sum; REPORT_RESULT(); From e5dd25043d572b7ec0cb618afa48c3a3dd2356a4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 11:47:04 -0800 Subject: [PATCH 131/326] typo --- src/library_gl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index c0393a67d953d..a994a665c5b2c 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2253,7 +2253,7 @@ var LibraryGL = { } #if GL_UNSAFE_OPTS == 0 - renderer.cleanUp(); + renderer.cleanup(); #endif } }, From 0ca1c38573f4265bbeb7f683f34abdae8676827e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 11:53:16 -0800 Subject: [PATCH 132/326] clean up last renderer when wiping everything out for vao --- src/library_gl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library_gl.js b/src/library_gl.js index a994a665c5b2c..5751dfe03438f 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2546,6 +2546,7 @@ var LibraryGL = { glBindVertexArray: function(vao) { // undo vao-related things, wipe the slate clean, both for vao of 0 or an actual vao GLEmulation.currentVao = null; // make sure the commands we run here are not recorded + if (GL.immediate.lastRenderer) GL.immediate.lastRenderer.cleanup(); _glBindBuffer(Module.ctx.ARRAY_BUFFER, 0); // XXX if one was there before we were bound? _glBindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, 0); for (var vaa in GLEmulation.enabledVertexAttribArrays) { From 534aa4a8ce66417f9579d72ac82ffb5a9c7b63ec Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 14:13:00 -0800 Subject: [PATCH 133/326] comment --- src/jsifier.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jsifier.js b/src/jsifier.js index 71975b9dbbe74..c51d7ab91f45d 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1511,7 +1511,7 @@ function JSify(data, functionsOnly, givenFunctions) { print('// ASM_LIBRARY FUNCTIONS'); function fix(f) { // fix indenting to not confuse js optimizer f = f.substr(f.indexOf('f')); // remove initial spaces before 'function' - f = f.substr(0, f.lastIndexOf('\n')+1); // remove spaces and last } + f = f.substr(0, f.lastIndexOf('\n')+1); // remove spaces and last } XXX assumes function has multiple lines return f + '}'; // add unindented } to match function } print(asmLibraryFunctions.map(fix).join('\n')); From 36ac03888364283ef2a3d4492e673ba38f4fa1a8 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 14:17:16 -0800 Subject: [PATCH 134/326] always warn on undefs in asm, since it breaks validation --- src/jsifier.js | 2 +- tests/runner.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/jsifier.js b/src/jsifier.js index c51d7ab91f45d..4af522b473809 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -507,7 +507,7 @@ function JSify(data, functionsOnly, givenFunctions) { item.JS = addFromLibrary(shortident); } else { item.JS = 'var ' + item.ident + '; // stub for ' + item.ident; - if (WARN_ON_UNDEFINED_SYMBOLS) { + if (WARN_ON_UNDEFINED_SYMBOLS || ASM_JS) { // always warn on undefs in asm, since it breaks validation warn('Unresolved symbol: ' + item.ident); } } diff --git a/tests/runner.py b/tests/runner.py index 85cb0d3c790cc..44879c1684e57 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8771,6 +8771,21 @@ def test_multiply_defined_libsymbols_2(self): self.assertContained('result: 62', run_js(os.path.join(self.get_dir(), 'a.out.js'))) + def test_asm_undefined(self): + src = r''' + #include + extern void doit(); + int main(int argc, char **argv) { + if (argc == 121) doit(); + printf("done\n"); + return 1; + } + ''' + filename = self.in_dir('src.cpp') + open(filename, 'w').write(src) + out, err = Popen([PYTHON, EMCC, filename, '-s', 'ASM_JS=1', '-O2'], stderr=PIPE).communicate() + assert 'Warning: Unresolved symbol' in err, 'always warn on undefs in asm, since it breaks validation' + def test_redundant_link(self): lib = "int mult() { return 1; }" lib_name = os.path.join(self.get_dir(), 'libA.c') From 1628ae8f6e7918feba8dd5e27c3f74cb9599e483 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 14:24:23 -0800 Subject: [PATCH 135/326] add missing vertex array signatures --- src/library_gl.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/library_gl.js b/src/library_gl.js index 1474fff8df577..027b2841b56cb 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2522,6 +2522,7 @@ var LibraryGL = { // Vertex array object (VAO) support. TODO: when the WebGL extension is popular, use that and remove this code and GL.vaos glGenVertexArrays__deps: ['$GLEMulation'], + glGenVertexArrays__sig: ['vii'], glGenVertexArrays: function(n, vaos) { for (var i = 0; i < n; i++) { var id = GL.getNewId(GLEmulation.vaos); @@ -2536,6 +2537,7 @@ var LibraryGL = { {{{ makeSetValue('vaos', 'i*4', 'id', 'i32') }}}; } }, + glDeleteVertexArrays__sig: ['vii'], glDeleteVertexArrays: function(n, vaos) { for (var i = 0; i < n; i++) { var id = {{{ makeGetValue('vaos', 'i*4', 'i32') }}}; @@ -2543,6 +2545,7 @@ var LibraryGL = { if (GLEmulation.currentVao && GLEmulation.currentVao.id == id) GLEmulation.currentVao = null; } }, + glBindVertexArray__sig: ['vi'], glBindVertexArray: function(vao) { // undo vao-related things, wipe the slate clean, both for vao of 0 or an actual vao GLEmulation.currentVao = null; // make sure the commands we run here are not recorded From 20bfab62c606859899cb54345b11763661f62030 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 16:35:55 -0800 Subject: [PATCH 136/326] fix minor jcache bug and add assertions --- tools/shared.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index 7fc2b7c20f95c..0a748016fa230 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1268,6 +1268,7 @@ def chunkify(funcs, chunk_size, chunking_file): if os.path.exists(chunking_file): try: previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in + #if DEBUG: print >> sys.stderr, 'jscache previous mapping', previous_mapping except: pass chunks = [] @@ -1276,20 +1277,25 @@ def chunkify(funcs, chunk_size, chunking_file): news = [] for func in funcs: ident, data = func + assert ident, 'need names for jcache chunking' if not ident in previous_mapping: news.append(func) else: n = previous_mapping[ident] while n >= len(chunks): chunks.append([]) chunks[n].append(func) + if DEBUG: print >> sys.stderr, 'jscache not in previous chunking', len(news) # add news and adjust for new sizes spilled = news - for chunk in chunks: + for i in range(len(chunks)): + chunk = chunks[i] size = sum([len(func[1]) for func in chunk]) - while size > 1.5*chunk_size and len(chunk) > 0: + #if DEBUG: print >> sys.stderr, 'need spilling?', i, size, len(chunk), 'vs', chunk_size, 1.5*chunk_size + while size > 1.5*chunk_size and len(chunk) > 1: spill = chunk.pop() spilled.append(spill) size -= len(spill[1]) + #if DEBUG: print >> sys.stderr, 'jscache new + spilled', len(spilled) for chunk in chunks: size = sum([len(func[1]) for func in chunk]) while size < 0.66*chunk_size and len(spilled) > 0: @@ -1298,6 +1304,7 @@ def chunkify(funcs, chunk_size, chunking_file): size += len(spill[1]) chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them funcs = spilled # we will allocate these into chunks as if they were normal inputs + #if DEBUG: print >> sys.stderr, 'leftover spills', len(spilled) # initialize reasonably, the rest of the funcs we need to split out curr = [] total_size = 0 @@ -1323,15 +1330,18 @@ def chunkify(funcs, chunk_size, chunking_file): for i in range(len(chunks)): chunk = chunks[i] for ident, data in chunk: + assert ident not in new_mapping, 'cannot have duplicate names in jcache chunking' new_mapping[ident] = i cPickle.Pickler(open(chunking_file, 'wb')).dump(new_mapping) #if DEBUG: + # for i in range(len(chunks)): + # chunk = chunks[i] + # print >> sys.stderr, 'final chunk', i, len(chunk) + # print >> sys.stderr, 'new mapping:', new_mapping # if previous_mapping: # for ident in set(previous_mapping.keys() + new_mapping.keys()): # if previous_mapping.get(ident) != new_mapping.get(ident): # print >> sys.stderr, 'mapping inconsistency', ident, previous_mapping.get(ident), new_mapping.get(ident) - # for key, value in new_mapping.iteritems(): - # print >> sys.stderr, 'mapping:', key, value return [''.join([func[1] for func in chunk]) for chunk in chunks] # remove function names class JS: From d328eb1c6bc54cb1575aa604cda53a2443622a5a Mon Sep 17 00:00:00 2001 From: "Michael J. Bishop" Date: Fri, 22 Feb 2013 18:59:19 -0500 Subject: [PATCH 137/326] Added support in glGetBooleanv GL_VERTEX_ARRAY. --- src/library_gl.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/library_gl.js b/src/library_gl.js index 2c3be61c25677..a53df767d00fa 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1056,6 +1056,18 @@ var LibraryGL = { return Module.ctx.isEnabled(cap); }; + var glGetBooleanv = _glGetBooleanv; + _glGetBooleanv = function(pname, p) { + var result = null; + switch (pname) { + case 0x8074: // GL_VERTEX_ARRAY + result = GL.immediate.enabledClientAttributes[GL.immediate.VERTEX]; + {{{ makeSetValue('p', '0', 'result === true ? 1 : 0', 'i8') }}}; + return; + } + glGetBooleanv(pname, p); + }; + var glGetIntegerv = _glGetIntegerv; _glGetIntegerv = function(pname, params) { switch (pname) { From 7537fe280b24dcbe7733685cc20e2abde259f082 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 16:48:35 -0800 Subject: [PATCH 138/326] fix jsfuncchunking bug --- tests/runner.py | 2 +- tools/js_optimizer.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 44879c1684e57..4ec998782068b 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11782,7 +11782,7 @@ def test_jcache(self): (['--jcache'], 'hello_libcxx.cpp', False, True, False, True, False, True, []), ([], 'hello_libcxx.cpp', False, False, False, False, False, False, []), # finally, build a file close to the previous, to see that some chunks are found in the cache and some not - (['--jcache'], 'hello_libcxx_mod1.cpp', False, True, True, True, True, False, []), # win on pre, mix on funcs, lose on jsfuncs + (['--jcache'], 'hello_libcxx_mod1.cpp', False, True, True, True, True, True, []), # win on pre, mix on funcs, mix on jsfuncs (['--jcache'], 'hello_libcxx_mod1.cpp', False, True, False, True, False, True, []), ]: print >> sys.stderr, args, input_file, expect_pre_save, expect_pre_load, expect_funcs_save, expect_funcs_load, expect_jsfuncs_save, expect_jsfuncs_load, expected diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index f2e610d0671af..cbf64486269b2 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -88,10 +88,11 @@ def run_on_js(filename, passes, js_engine, jcache): if i < len(parts)-1: func += '\n}\n' # last part needs no } m = func_sig.search(func) if m: - ident = m.group(1) + ident = m.group(2) else: if suffix: continue # ignore whitespace ident = 'anon_%d' % i + assert ident funcs.append((ident, func)) parts = None total_size = len(js) From 15595f1ea36fa4268e5db66b8717999f7f363621 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 18:16:14 -0800 Subject: [PATCH 139/326] csmith driver tweaking --- tests/csmith_driver.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/csmith_driver.py b/tests/csmith_driver.py index a244b73c9035c..fcf937f631bbe 100755 --- a/tests/csmith_driver.py +++ b/tests/csmith_driver.py @@ -24,7 +24,7 @@ print 'Tried %d, valid: %d' % (tried, valid) tried += 1 print '1) Generate C' - shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '1'], stdout=open(filename + '.c', 'w')) + shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], stdout=open(filename + '.c', 'w')) print '2) Compile natively' shared.try_delete(filename) @@ -40,11 +40,11 @@ print '4) Compile JS-ly' shared.try_delete(filename + '.js') - shared.execute([shared.EMCC, '-O2', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS, stderr=PIPE) + shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS, stderr=PIPE) assert os.path.exists(filename + '.js') print '5) Run JS-ly' js = shared.run_js(filename + '.js', stderr=PIPE) #, engine=...) print '6) Verify' - assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(x.split('\n'), y.split('\n'), fromfile='expected', tofile='actual')]) + assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) From 90710c0c8ee4425c06402cc7831abdee8c519a43 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 18:16:21 -0800 Subject: [PATCH 140/326] asmify memcmp --- src/library.js | 13 +++++++++---- src/parseTools.js | 4 ++-- tests/runner.py | 18 +++++++++++++++++- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/library.js b/src/library.js index d8f98d73304f8..885fe1e00113c 100644 --- a/src/library.js +++ b/src/library.js @@ -4525,11 +4525,16 @@ LibraryManager.library = { return 0; }, + memcmp__asm: 'true', + memcmp__sig: 'iiii', memcmp: function(p1, p2, num) { - for (var i = 0; i < num; i++) { - var v1 = {{{ makeGetValue('p1', 'i', 'i8', 0, 1) }}}; - var v2 = {{{ makeGetValue('p2', 'i', 'i8', 0, 1) }}}; - if (v1 != v2) return v1 > v2 ? 1 : -1; + p1 = p1|0; p2 = p2|0; num = num|0; + var i = 0, v1 = 0, v2 = 0; + while ((i|0) < (num|0)) { + var v1 = {{{ makeGetValueAsm('p1', 'i', 'i8', true) }}}; + var v2 = {{{ makeGetValueAsm('p2', 'i', 'i8', true) }}}; + if ((v1|0) != (v2|0)) return (v1|0) > (v2|0) ? 1 : -1; + i = (i+1)|0; } return 0; }, diff --git a/src/parseTools.js b/src/parseTools.js index ca9ad40a519d4..15c2169bf6ff7 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1145,8 +1145,8 @@ function makeGetValue(ptr, pos, type, noNeedFirst, unsigned, ignore, align, noSa } } -function makeGetValueAsm(ptr, pos, type) { - return makeGetValue(ptr, pos, type, null, null, null, null, null, true); +function makeGetValueAsm(ptr, pos, type, unsigned) { + return makeGetValue(ptr, pos, type, null, unsigned, null, null, null, true); } function indexizeFunctions(value, type) { diff --git a/tests/runner.py b/tests/runner.py index 4ec998782068b..71345743a23eb 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -4134,10 +4134,12 @@ def test_copyop(self): ''' self.do_run(src, '*0.00,0.00,0.00*\n*0,77,0*\n*0,77,0*\n*0,77,0*') - def test_memcpy(self): + def test_memcpy_memcmp(self): src = ''' #include #include + #include + #define MAXX 48 void reset(unsigned char *buffer) { for (int i = 0; i < MAXX; i++) buffer[i] = i+1; @@ -4158,6 +4160,20 @@ def test_memcpy(self): reset(buffer); memcpy(buffer+i, buffer+j, k); dump(buffer); + assert(memcmp(buffer+i, buffer+j, k) == 0); + buffer[i + k/2]++; + if (buffer[i + k/2] != 0) { + assert(memcmp(buffer+i, buffer+j, k) > 0); + } else { + assert(memcmp(buffer+i, buffer+j, k) < 0); + } + buffer[i + k/2]--; + buffer[j + k/2]++; + if (buffer[j + k/2] != 0) { + assert(memcmp(buffer+i, buffer+j, k) < 0); + } else { + assert(memcmp(buffer+i, buffer+j, k) > 0); + } } } } From c00e097d60100c7a562ac25664eb3c25bb9403ae Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 18:41:37 -0800 Subject: [PATCH 141/326] always use Math.imul, with fast polyfill. will be useful for faster 64-bit math --- emscripten.py | 5 +---- src/parseTools.js | 6 ++---- src/preamble.js | 2 ++ src/settings.js | 1 - 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/emscripten.py b/emscripten.py index af762a21556a1..b3e153c1d95ea 100755 --- a/emscripten.py +++ b/emscripten.py @@ -322,10 +322,7 @@ def make_table(sig, raw): function_tables_defs = '\n'.join([info[0] for info in infos] + [info[1] for info in infos]) asm_setup = '' - maths = ['Math.' + func for func in ['floor', 'abs', 'sqrt', 'pow', 'cos', 'sin', 'tan', 'acos', 'asin', 'atan', 'atan2', 'exp', 'log', 'ceil']] - if settings['USE_MATH_IMUL']: - maths += ['Math.imul'] - asm_setup += 'if (!Math.imul) Math.imul = function(x, y) { return (x*y)|0 }; // # not a real polyfill since semantics not identical, but close and fairly fast\n' + maths = ['Math.' + func for func in ['floor', 'abs', 'sqrt', 'pow', 'cos', 'sin', 'tan', 'acos', 'asin', 'atan', 'atan2', 'exp', 'log', 'ceil', 'imul']] fundamentals = ['Math', 'Int8Array', 'Int16Array', 'Int32Array', 'Uint8Array', 'Uint16Array', 'Uint32Array', 'Float32Array', 'Float64Array'] math_envs = ['Runtime.bitshift64', 'Math.min'] # TODO: move min to maths asm_setup += '\n'.join(['var %s = %s;' % (f.replace('.', '_'), f) for f in math_envs]) diff --git a/src/parseTools.js b/src/parseTools.js index 15c2169bf6ff7..514d74d0b6a41 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1046,10 +1046,8 @@ function asmMultiplyI32(a, b) { if ((isNumber(a) && Math.abs(a) < TWO_TWENTY) || (isNumber(b) && Math.abs(b) < TWO_TWENTY)) { return '(((' + a + ')*(' + b + '))&-1)'; // small enough to emit directly as a multiply } - if (USE_MATH_IMUL) { - return 'Math.imul(' + a + ',' + b + ')'; - } - return '(~~(+((' + a + ')|0) * +((' + b + ')|0)))'; + return 'Math.imul(' + a + ',' + b + ')'; + // non-imul version: return '(~~(+((' + a + ')|0) * +((' + b + ')|0)))'; } function asmFloatToInt(x) { diff --git a/src/preamble.js b/src/preamble.js index 503b09f182909..b355f130f2d6b 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -742,6 +742,8 @@ Module['writeArrayToMemory'] = writeArrayToMemory; {{{ unSign }}} {{{ reSign }}} +if (!Math.imul) Math.imul = function(x, y) { return (x*y)|0 }; // # not a real polyfill since semantics not identical, but close and fast + // A counter of dependencies for calling run(). If we need to // do asynchronous work before running, increment this and // decrement it. Incrementing must happen in a place like diff --git a/src/settings.js b/src/settings.js index f4e23c5b74abb..1023ee11f0757 100644 --- a/src/settings.js +++ b/src/settings.js @@ -325,7 +325,6 @@ var BENCHMARK = 0; // If 1, will just time how long main() takes to execute, and var ASM_JS = 0; // If 1, generate code in asm.js format. XXX This is highly experimental, // and will not work on most codebases yet. It is NOT recommended that you // try this yet. -var USE_MATH_IMUL = 1; // If 1, use Math.imul when normal int math can't be done in ASM_JS var EXPLICIT_ZEXT = 0; // If 1, generate an explicit conversion of zext i1 to i32, using ?: From 022afe18f791b15d02f8ac8525bf033208c1db08 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 22 Feb 2013 19:06:25 -0800 Subject: [PATCH 142/326] use Math.imul for precise 32-bit mul --- src/parseTools.js | 5 ++--- src/preamble.js | 12 +++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/parseTools.js b/src/parseTools.js index 514d74d0b6a41..e6138fc19422d 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -2129,9 +2129,8 @@ function processMathop(item) { case 'sub': return handleOverflow(getFastValue(idents[0], '-', idents[1], item.type), bits); case 'sdiv': case 'udiv': return makeRounding(getFastValue(idents[0], '/', idents[1], item.type), bits, op[0] === 's'); case 'mul': { - if (bits == 32 && PRECISE_I32_MUL) { - Types.preciseI64MathUsed = true; - return '(i64Math' + (ASM_JS ? '_' : '.') + 'multiply(' + asmCoercion(idents[0], 'i32') + ',0,' + asmCoercion(idents[1], 'i32') + ',0),' + makeGetValue('tempDoublePtr', 0, 'i32') + ')'; + if (bits == 32) { + return 'Math.imul(' + idents[0] + ',' + idents[1] + ')'; } else { return '((' +getFastValue(idents[0], '*', idents[1], item.type) + ')&-1)'; // force a non-eliminatable coercion here, to prevent a double result from leaking } diff --git a/src/preamble.js b/src/preamble.js index b355f130f2d6b..05269c6e34989 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -742,7 +742,17 @@ Module['writeArrayToMemory'] = writeArrayToMemory; {{{ unSign }}} {{{ reSign }}} -if (!Math.imul) Math.imul = function(x, y) { return (x*y)|0 }; // # not a real polyfill since semantics not identical, but close and fast +if (!Math.imul) Math.imul = function(a, b) { +#if PRECISE_I32_MUL + var ah = a >>> 16; + var al = a & 0xffff; + var bh = b >>> 16; + var bl = b & 0xffff; + return (al*bl + ((ah*bl + al*bh) << 16))|0; +#else + return (a*b)|0; // fast but imprecise +#endif +}; // A counter of dependencies for calling run(). If we need to // do asynchronous work before running, increment this and From 097af50a10627ab2f26b2dae2fad9304df5f3bbe Mon Sep 17 00:00:00 2001 From: "Michael J. Bishop" Date: Fri, 22 Feb 2013 23:05:10 -0500 Subject: [PATCH 143/326] Added some more symbols to `glGetBooleanv` - `GL_TEXTURE_COORD_ARRAY` - `GL_TEXTURE_2D` - `GL_COLOR_ARRAY` --- src/library_gl.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index a53df767d00fa..8fbe48acac8f8 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1058,12 +1058,20 @@ var LibraryGL = { var glGetBooleanv = _glGetBooleanv; _glGetBooleanv = function(pname, p) { - var result = null; + var attrib = null; switch (pname) { + case 0x8078: // GL_TEXTURE_COORD_ARRAY + case 0x0de1: // GL_TEXTURE_2D - XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support it + attrib = GL.immediate.TEXTURE0 + GL.immediate.clientActiveTexture; break; case 0x8074: // GL_VERTEX_ARRAY - result = GL.immediate.enabledClientAttributes[GL.immediate.VERTEX]; - {{{ makeSetValue('p', '0', 'result === true ? 1 : 0', 'i8') }}}; - return; + attrib = GL.immediate.VERTEX; break; + case 0x8076: // GL_COLOR_ARRAY + attrib = GL.immediate.COLOR; break; + } + if (attrib != null) { + var result = GL.immediate.enabledClientAttributes[attrib]; + {{{ makeSetValue('p', '0', 'result === true ? 1 : 0', 'i8') }}}; + return; } glGetBooleanv(pname, p); }; From 8982b26cc4073a79332b0b74908bc439ed75e716 Mon Sep 17 00:00:00 2001 From: Aleksander Guryanov Date: Tue, 19 Feb 2013 23:52:04 +0700 Subject: [PATCH 144/326] implementation for writefds --- src/library.js | 61 +++++++++++++++++++++++++++++++++++----------- tests/websockets.c | 5 ++++ 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/src/library.js b/src/library.js index 900b3fee1e30f..24f241c7d9fdb 100644 --- a/src/library.js +++ b/src/library.js @@ -7244,23 +7244,56 @@ LibraryManager.library = { }, select: function(nfds, readfds, writefds, exceptfds, timeout) { - // only readfds are supported, not writefds or exceptfds + // readfds are supported, + // writefds checks socket open status + // exceptfds not supported // timeout is always 0 - fully async - assert(!writefds && !exceptfds); - var ret = 0; - var l = {{{ makeGetValue('readfds', 0, 'i32') }}}; - var h = {{{ makeGetValue('readfds', 4, 'i32') }}}; - nfds = Math.min(64, nfds); // fd sets have 64 bits - for (var fd = 0; fd < nfds; fd++) { - var bit = fd % 32, int = fd < 32 ? l : h; - if (int & (1 << bit)) { - // index is in the set, check if it is ready for read - var info = Sockets.fds[fd]; - if (!info) continue; - if (info.hasData()) ret++; + assert(!exceptfds); + + function canRead(info) { + // make sure hasData exists. + // we do create it when the socket is connected, + // but other implementations may create it lazily + return info.hasData && info.hasData(); + } + + function canWrite(info) { + // make sure socket exists. + // we do create it when the socket is connected, + // but other implementations may create it lazily + return info.socket && (info.socket.readyState == info.socket.OPEN); + } + + function checkfds(nfds, fds, can) { + if (!fds) return 0; + + var bitsSet = 0; + var dstLow = 0; + var dstHigh = 0; + var srcLow = {{{ makeGetValue('fds', 0, 'i32') }}}; + var srcHigh = {{{ makeGetValue('fds', 4, 'i32') }}}; + nfds = Math.min(64, nfds); // fd sets have 64 bits + + for (var fd = 0; fd < nfds; fd++) { + var mask = 1 << (fd % 32), int = fd < 32 ? srcLow : srcHigh; + if (int & mask) { + // index is in the set, check if it is ready for read + var info = Sockets.fds[fd]; + if (info && can(info)) { + // set bit + fd < 32 ? (dstLow = dstLow | mask) : (dstHigh = dstHigh | mask); + bitsSet++; + } + } } + + {{{ makeSetValue('fds', 0, 'dstLow', 'i32') }}}; + {{{ makeSetValue('fds', 4, 'dstHigh', 'i32') }}}; + return bitsSet; } - return ret; + + return checkfds(nfds, readfds, canRead) + + checkfds(nfds, writefds, canWrite); }, // pty.h diff --git a/tests/websockets.c b/tests/websockets.c index 59acbd6963c0d..192933ac4de31 100644 --- a/tests/websockets.c +++ b/tests/websockets.c @@ -27,14 +27,19 @@ unsigned int get_all_buf(int sock, char* output, unsigned int maxsize) assert(select(64, &sett, NULL, NULL, NULL) == 0); // empty set FD_SET(sock, &sett); assert(select(0, &sett, NULL, NULL, NULL) == 0); // max FD to check is 0 + assert(FD_ISSET(sock, &sett) == 0); + FD_SET(sock, &sett); int select_says_yes = select(64, &sett, NULL, NULL, NULL); // ioctl check for IO int bytes; if (ioctl(sock, FIONREAD, &bytes) || bytes == 0) { not_always_data = 1; + assert(FD_ISSET(sock, &sett) == 0); return 0; } + + assert(FD_ISSET(sock, &sett)); assert(select_says_yes); // ioctl must agree with select char buffer[1024]; From 350d449a9980227ff30d5ed5d345d347d66f68f4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 08:47:17 -0800 Subject: [PATCH 145/326] turn on precise i32 multiplication by default --- src/settings.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/settings.js b/src/settings.js index 1023ee11f0757..df9da926ea76a 100644 --- a/src/settings.js +++ b/src/settings.js @@ -92,13 +92,9 @@ var PRECISE_I64_MATH = 1; // If enabled, i64 addition etc. is emulated - which i // that we can't know at compile time that 64-bit math is needed. For example, if you // print 64-bit values with printf, but never add them, we can't know at compile time // and you need to set this to 2. -var PRECISE_I32_MUL = 0; // If enabled, i64 math is done in i32 multiplication. This is necessary if the values - // exceed the JS double-integer limit of ~52 bits. This option can normally be disabled - // because generally i32 multiplication works ok without it, and enabling it has a big - // impact on performance. - // Note that you can hand-optimize your code to avoid the need for this: If you do - // multiplications that actually need 64-bit precision inside 64-bit values, things - // will work properly. (Unless the LLVM optimizer turns them into 32-bit values?) +var PRECISE_I32_MUL = 1; // If enabled, i32 multiplication is done with full precision, which means it is + // correct even if the value exceeds the JS double-integer limit of ~52 bits (otherwise, + // rounding will occur above that range). var CLOSURE_ANNOTATIONS = 0; // If set, the generated code will be annotated for the closure // compiler. This potentially lets closure optimize the code better. From 02a0c9fd58ba9c3e7209d1137d2d15a70397d4fc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 08:59:07 -0800 Subject: [PATCH 146/326] update i32 mul tests --- tests/runner.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 71345743a23eb..0822fa27c6a81 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -1139,7 +1139,6 @@ def test_i64_qdouble(self): def test_i32_mul_precise(self): if self.emcc_args == None: return self.skip('needs ta2') - self.emcc_args += ['-s', 'PRECISE_I32_MUL=1'] src = r''' #include @@ -1154,7 +1153,7 @@ def test_i32_mul_precise(self): self.do_run(src, '3217489085') def test_i32_mul_semiprecise(self): - Settings.USE_MATH_IMUL = 0 # we want semiprecise here + Settings.PRECISE_I32_MUL = 0 # we want semiprecise here src = r''' #include From 58cad1436d5d03d71fe554081e590a9202911cb2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 10:37:02 -0800 Subject: [PATCH 147/326] clean up integer multiply code --- src/parseTools.js | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/src/parseTools.js b/src/parseTools.js index e6138fc19422d..f19eb9d5d9c40 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1038,18 +1038,6 @@ function asmCoercion(value, type, signedness) { } } -var TWO_TWENTY = Math.pow(2, 20); - -function asmMultiplyI32(a, b) { - // special-case: there is no integer multiply in asm, because there is no true integer - // multiply in JS. While we wait for Math.imul, do double multiply - if ((isNumber(a) && Math.abs(a) < TWO_TWENTY) || (isNumber(b) && Math.abs(b) < TWO_TWENTY)) { - return '(((' + a + ')*(' + b + '))&-1)'; // small enough to emit directly as a multiply - } - return 'Math.imul(' + a + ',' + b + ')'; - // non-imul version: return '(~~(+((' + a + ')|0) * +((' + b + ')|0)))'; -} - function asmFloatToInt(x) { return '(~~(' + x + '))'; } @@ -1362,9 +1350,11 @@ function makeHEAPView(which, start, end) { var PLUS_MUL = set('+', '*'); var MUL_DIV = set('*', '/'); var PLUS_MINUS = set('+', '-'); +var TWO_TWENTY = Math.pow(2, 20); // Given two values and an operation, returns the result of that operation. // Tries to do as much as possible at compile time. +// Leaves overflows etc. unhandled, *except* for integer multiply, in order to be efficient with Math.imul function getFastValue(a, op, b, type) { a = a.toString(); b = b.toString(); @@ -1400,8 +1390,13 @@ function getFastValue(a, op, b, type) { return '(' + a + '<<' + shifts + ')'; } } - if (ASM_JS && !(type in Runtime.FLOAT_TYPES)) { - return asmMultiplyI32(a, b); // unoptimized multiply, do it using asm.js's special multiply operation + if (!(type in Runtime.FLOAT_TYPES)) { + // if guaranteed small enough to not overflow into a double, do a normal multiply + var bits = getBits(type); + if ((isNumber(a) && Math.abs(a) < TWO_TWENTY) || (isNumber(b) && Math.abs(b) < TWO_TWENTY) || bits < 32) { + return '(((' + a + ')*(' + b + '))&' + ((Math.pow(2, bits)-1)|0) + ')'; // keep a non-eliminatable coercion directly on this + } + return 'Math.imul(' + a + ',' + b + ')'; } } else { if (a == '0') { @@ -2128,13 +2123,7 @@ function processMathop(item) { case 'add': return handleOverflow(getFastValue(idents[0], '+', idents[1], item.type), bits); case 'sub': return handleOverflow(getFastValue(idents[0], '-', idents[1], item.type), bits); case 'sdiv': case 'udiv': return makeRounding(getFastValue(idents[0], '/', idents[1], item.type), bits, op[0] === 's'); - case 'mul': { - if (bits == 32) { - return 'Math.imul(' + idents[0] + ',' + idents[1] + ')'; - } else { - return '((' +getFastValue(idents[0], '*', idents[1], item.type) + ')&-1)'; // force a non-eliminatable coercion here, to prevent a double result from leaking - } - } + case 'mul': return getFastValue(idents[0], '*', idents[1], item.type); // overflow handling is already done in getFastValue for '*' case 'urem': case 'srem': return getFastValue(idents[0], '%', idents[1], item.type); case 'or': { if (bits > 32) { From 644a969e1cf82bec7d0a8f003986c6d4aab84bdd Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 10:51:41 -0800 Subject: [PATCH 148/326] fix default bits for integer multiply --- src/parseTools.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parseTools.js b/src/parseTools.js index f19eb9d5d9c40..7d1a7cd9a72f7 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1392,7 +1392,7 @@ function getFastValue(a, op, b, type) { } if (!(type in Runtime.FLOAT_TYPES)) { // if guaranteed small enough to not overflow into a double, do a normal multiply - var bits = getBits(type); + var bits = getBits(type) || 32; // default is 32-bit multiply for things like getelementptr indexes if ((isNumber(a) && Math.abs(a) < TWO_TWENTY) || (isNumber(b) && Math.abs(b) < TWO_TWENTY) || bits < 32) { return '(((' + a + ')*(' + b + '))&' + ((Math.pow(2, bits)-1)|0) + ')'; // keep a non-eliminatable coercion directly on this } From dce808a762b84397d2b0811b8a4f36d1743fd0c2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 14:12:54 -0800 Subject: [PATCH 149/326] update libc symbols --- system/lib/libc.symbols | 5 ----- 1 file changed, 5 deletions(-) diff --git a/system/lib/libc.symbols b/system/lib/libc.symbols index b98a79e4fd9dc..d41f4140e4d60 100644 --- a/system/lib/libc.symbols +++ b/system/lib/libc.symbols @@ -48,8 +48,3 @@ _ZNSt20bad_array_new_lengthC2Ev _ZNSt20bad_array_new_lengthD0Ev _ZNSt20bad_array_new_lengthD1Ev _ZNSt20bad_array_new_lengthD2Ev -memcpy -llvm.memcpy.i32 -llvm.memcpy.i64 -llvm.memcpy.p0i8.p0i8.i32 -llvm.memcpy.p0i8.p0i8.i64 From 3d4bce8844b3bea7595858eee6221c3ad40fb19b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 14:33:23 -0800 Subject: [PATCH 150/326] commented out debugging tip --- tools/shared.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/shared.py b/tools/shared.py index 0a748016fa230..ebf803da389ac 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -829,6 +829,7 @@ def ll_opts(filename): def llvm_opt(filename, opts): if type(opts) is int: opts = Building.pick_llvm_opts(opts) + #opts += ['-debug-pass=Arguments'] if DEBUG: print >> sys.stderr, 'emcc: LLVM opts:', opts output = Popen([LLVM_OPT, filename] + opts + ['-o=' + filename + '.opt.bc'], stdout=PIPE).communicate()[0] assert os.path.exists(filename + '.opt.bc'), 'Failed to run llvm optimizations: ' + output From c2692a1acba58bb6d47e148ee26328094f8f2c5c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 15:50:22 -0800 Subject: [PATCH 151/326] fix fuzzbug regarding signed 64-bit extension --- src/analyzer.js | 4 +- tests/fuzz/1.c | 117 +++++ tests/fuzz/1.c.txt | 1 + tests/fuzz/csmith.h | 130 +++++ tests/fuzz/platform_generic.h | 132 +++++ tests/fuzz/random_inc.h | 129 +++++ tests/fuzz/safe_math.h | 947 ++++++++++++++++++++++++++++++++++ tests/runner.py | 10 + 8 files changed, 1468 insertions(+), 2 deletions(-) create mode 100644 tests/fuzz/1.c create mode 100644 tests/fuzz/1.c.txt create mode 100644 tests/fuzz/csmith.h create mode 100644 tests/fuzz/platform_generic.h create mode 100644 tests/fuzz/random_inc.h create mode 100644 tests/fuzz/safe_math.h diff --git a/src/analyzer.js b/src/analyzer.js index adc615fb563cb..c930231f641be 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -684,9 +684,9 @@ function analyzer(data, sidePass) { params: [(signed && j + whole > sourceElements.length) ? signedKeepAlive : null], type: 'i32', }; - if (j == 0 && isUnsignedOp(value.op) && sourceBits < 32) { + if (j == 0 && sourceBits < 32) { // zext sign correction - result.ident = makeSignOp(result.ident, 'i' + sourceBits, 'un', 1, 1); + result.ident = makeSignOp(result.ident, 'i' + sourceBits, isUnsignedOp(value.op) ? 'un' : 're', 1, 1); } if (fraction != 0) { var other = { diff --git a/tests/fuzz/1.c b/tests/fuzz/1.c new file mode 100644 index 0000000000000..2017fb76fec7e --- /dev/null +++ b/tests/fuzz/1.c @@ -0,0 +1,117 @@ +/* + * This is a RANDOMLY GENERATED PROGRAM. + * + * Generator: csmith 2.2.0 + * Git version: a8697aa + * Options: --no-volatiles --no-math64 --max-block-depth 2 --max-block-size 2 --max-expr-complexity 2 --max-funcs 2 + * Seed: 1880513882 + */ + +#include "csmith.h" + + +static long __undefined; + +/* --- Struct/Union Declarations --- */ +union U0 { + int32_t f0; + int8_t f1; + const int8_t f2; +}; + +/* --- GLOBAL VARIABLES --- */ +static uint32_t g_4 = 9UL; +static int32_t g_6 = 0xB9DD952EL; +static const int32_t *g_5 = &g_6; +static union U0 g_7[3][9][6] = {{{{-8L},{5L},{0x901516EAL},{7L},{7L},{0x901516EAL}},{{0x520EA0C8L},{0x520EA0C8L},{0x0920A6FFL},{0x0021FBB9L},{0x888C5540L},{-8L}},{{0xDC87A9B6L},{0x42B48371L},{8L},{7L},{-8L},{0x0920A6FFL}},{{-1L},{0xDC87A9B6L},{8L},{5L},{0x520EA0C8L},{-8L}},{{-3L},{5L},{0x0920A6FFL},{0x865B49D5L},{0xDC87A9B6L},{0x901516EAL}},{{0x865B49D5L},{0xDC87A9B6L},{0x901516EAL},{0x0021FBB9L},{-1L},{-1L}},{{0x865B49D5L},{0x42B48371L},{0x42B48371L},{0x865B49D5L},{-3L},{0x0920A6FFL}},{{-3L},{0x520EA0C8L},{0x0021FBB9L},{5L},{0x865B49D5L},{-1L}},{{-1L},{5L},{0L},{7L},{0x865B49D5L},{0x901516EAL}}},{{{0xDC87A9B6L},{0x520EA0C8L},{7L},{0x0021FBB9L},{-3L},{-8L}},{{0x520EA0C8L},{0x42B48371L},{5L},{7L},{-1L},{0x0920A6FFL}},{{-8L},{0xDC87A9B6L},{5L},{5L},{0xDC87A9B6L},{-8L}},{{0x888C5540L},{5L},{7L},{0x865B49D5L},{0x520EA0C8L},{0x901516EAL}},{{7L},{0xDC87A9B6L},{0L},{0x0021FBB9L},{-8L},{-1L}},{{7L},{0x42B48371L},{0x0021FBB9L},{0x865B49D5L},{0x888C5540L},{0x0920A6FFL}},{{0x888C5540L},{0x520EA0C8L},{0x42B48371L},{5L},{7L},{-1L}},{{-8L},{5L},{0x901516EAL},{7L},{7L},{0x901516EAL}},{{0x520EA0C8L},{0x520EA0C8L},{0x0920A6FFL},{0x0021FBB9L},{0x888C5540L},{-8L}}},{{{0xDC87A9B6L},{0x42B48371L},{8L},{7L},{-8L},{0x0920A6FFL}},{{-1L},{0xDC87A9B6L},{8L},{5L},{0x520EA0C8L},{-8L}},{{-3L},{5L},{0x0920A6FFL},{0x865B49D5L},{0xDC87A9B6L},{0x901516EAL}},{{0x865B49D5L},{0xDC87A9B6L},{0x901516EAL},{0x0021FBB9L},{-1L},{-1L}},{{0x865B49D5L},{0x42B48371L},{0x42B48371L},{0x865B49D5L},{-3L},{0x0920A6FFL}},{{-3L},{0x520EA0C8L},{0x0021FBB9L},{5L},{0x865B49D5L},{-1L}},{{-1L},{5L},{0L},{7L},{0x865B49D5L},{0x901516EAL}},{{0xDC87A9B6L},{0x520EA0C8L},{7L},{0x0021FBB9L},{-3L},{-8L}},{{0x520EA0C8L},{0x42B48371L},{5L},{7L},{-1L},{0x0920A6FFL}}}}; +static int32_t g_31 = 1L; +static uint32_t g_32 = 4294967289UL; + + +/* --- FORWARD DECLARATIONS --- */ +static uint16_t func_1(void); +static int32_t * func_9(int32_t * p_10, uint16_t p_11); + + +/* --- FUNCTIONS --- */ +/* ------------------------------------------ */ +/* + * reads : g_4 g_5 g_7 g_32 + * writes: g_5 g_32 + */ +static uint16_t func_1(void) +{ /* block id: 0 */ + int32_t l_3 = (-1L); + if (((safe_unary_minus_func_int16_t_s(l_3)) >= g_4)) + { /* block id: 1 */ + int32_t *l_8 = &l_3; + g_5 = g_5; + (*l_8) ^= (g_7[1][3][2] , 0x44688D23L); + } + else + { /* block id: 4 */ + int32_t *l_12 = &l_3; + int32_t **l_13 = &l_12; + (*l_13) = func_9(((*l_13) = l_12), l_3); + } + return l_3; +} + + +/* ------------------------------------------ */ +/* + * reads : g_32 + * writes: g_32 + */ +static int32_t * func_9(int32_t * p_10, uint16_t p_11) +{ /* block id: 6 */ + int32_t *l_14 = &g_6; + int32_t *l_15 = &g_7[1][3][2].f0; + int32_t *l_16 = &g_6; + int32_t *l_17 = &g_6; + int32_t *l_18 = &g_6; + int32_t *l_19 = &g_6; + int32_t *l_20 = &g_6; + int32_t *l_21 = &g_6; + int32_t *l_22 = &g_6; + int32_t *l_23 = &g_7[1][3][2].f0; + int32_t l_24[8] = {0xF9F11119L,0xF9F11119L,0xF9F11119L,0xF9F11119L,0xF9F11119L,0xF9F11119L,0xF9F11119L,0xF9F11119L}; + int32_t *l_25 = &l_24[7]; + int32_t *l_26 = &l_24[2]; + int32_t *l_27 = &l_24[2]; + int32_t *l_28 = &l_24[0]; + int32_t *l_29 = &g_7[1][3][2].f0; + int32_t *l_30[10] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + int i; + ++g_32; + return p_10; +} + + + + +/* ---------------------------------------- */ +int main (int argc, char* argv[]) +{ + int i, j, k; + int print_hash_value = 0; + if (argc == 2 && strcmp(argv[1], "1") == 0) print_hash_value = 1; + platform_main_begin(); + crc32_gentab(); + func_1(); + for (i = 0; i < 3; i++) + { + for (j = 0; j < 1; j++) + { + for (k = 0; k < 1; k++) + { + transparent_crc(g_7[i][j][k].f0, "g_7[i][j][k].f0", print_hash_value); + transparent_crc(g_7[i][j][k].f1, "g_7[i][j][k].f1", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + } + } + } + platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value); + return 0; +} + diff --git a/tests/fuzz/1.c.txt b/tests/fuzz/1.c.txt new file mode 100644 index 0000000000000..701369f3e4418 --- /dev/null +++ b/tests/fuzz/1.c.txt @@ -0,0 +1 @@ +checksum = 504CCDC diff --git a/tests/fuzz/csmith.h b/tests/fuzz/csmith.h new file mode 100644 index 0000000000000..f1334a37beff2 --- /dev/null +++ b/tests/fuzz/csmith.h @@ -0,0 +1,130 @@ +/* -*- mode: C -*- + * + * Copyright (c) 2007-2010 The University of Utah + * All rights reserved. + * + * This file is part of `csmith', a random generator of C programs. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef RANDOM_RUNTIME_H +#define RANDOM_RUNTIME_H + +#ifdef CSMITH_MINIMAL +#include "csmith_minimal.h" +#else + +/*****************************************************************************/ + +#include + +#define __STDC_LIMIT_MACROS +#include "random_inc.h" + +static uint32_t crc32_tab[256]; +static uint32_t crc32_context = 0xFFFFFFFFUL; + +static void +crc32_gentab (void) +{ + uint32_t crc; + const uint32_t poly = 0xEDB88320UL; + int i, j; + + for (i = 0; i < 256; i++) { + crc = i; + for (j = 8; j > 0; j--) { + if (crc & 1) { + crc = (crc >> 1) ^ poly; + } else { + crc >>= 1; + } + } + crc32_tab[i] = crc; + } +} + +static void +crc32_byte (uint8_t b) { + crc32_context = + ((crc32_context >> 8) & 0x00FFFFFF) ^ + crc32_tab[(crc32_context ^ b) & 0xFF]; +} + +#if defined(__SPLAT__) || defined (__COMPCERT__) || defined(NO_LONGLONG) +static void +crc32_8bytes (uint32_t val) +{ + crc32_byte ((val>>0) & 0xff); + crc32_byte ((val>>8) & 0xff); + crc32_byte ((val>>16) & 0xff); + crc32_byte ((val>>24) & 0xff); +} + +static void +transparent_crc (uint32_t val, char* vname, int flag) +{ + crc32_8bytes(val); + if (flag) { + printf("...checksum after hashing %s : %X\n", vname, crc32_context ^ 0xFFFFFFFFU); + } +} +#else +static void +crc32_8bytes (uint64_t val) +{ + crc32_byte ((val>>0) & 0xff); + crc32_byte ((val>>8) & 0xff); + crc32_byte ((val>>16) & 0xff); + crc32_byte ((val>>24) & 0xff); + crc32_byte ((val>>32) & 0xff); + crc32_byte ((val>>40) & 0xff); + crc32_byte ((val>>48) & 0xff); + crc32_byte ((val>>56) & 0xff); +} + +static void +transparent_crc (uint64_t val, char* vname, int flag) +{ + crc32_8bytes(val); + if (flag) { + printf("...checksum after hashing %s : %lX\n", vname, crc32_context ^ 0xFFFFFFFFUL); + } +} +#endif + +/*****************************************************************************/ + +#endif + +#endif /* RANDOM_RUNTIME_H */ + +/* + * Local Variables: + * c-basic-offset: 4 + * tab-width: 4 + * End: + */ + +/* End of file. */ diff --git a/tests/fuzz/platform_generic.h b/tests/fuzz/platform_generic.h new file mode 100644 index 0000000000000..b2ef33a34dc75 --- /dev/null +++ b/tests/fuzz/platform_generic.h @@ -0,0 +1,132 @@ +/* -*- mode: C -*- + * + * + * Copyright (c) 2007, 2008 The University of Utah + * All rights reserved. + * + * This file is part of `csmith', a random generator of C programs. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef PLATFORM_GENERIC_H +#define PLATFORM_GENERIC_H + +/*****************************************************************************/ + +#ifdef STANDALONE +extern int printf (const char *, ...); +#else +#include +#endif + +static void +platform_main_begin(void) +{ + /* Nothing to do. */ +} + +static void +platform_main_end(uint32_t crc, int flag) +{ +#if defined (__FRAMAC) + Frama_C_dump_assert_each(); +#endif + printf ("checksum = %X\n", crc); +#if defined (LOG_WRAPPERS) + { + int i, first; + + printf ("executed wrappers: "); + first = 1; + for (i=1; i + #include "windows/stdint.h" + #elif defined (IA32_ARCH) + #include "stdint_ia32.h" + #elif defined (IA64_ARCH) + #include "stdint_ia64.h" + #elif defined (MSP430) + #include "stdint_msp430.h" + #elif defined (AVR_ARCH) + #include "stdint_avr.h" + #else + #include "stdint_ia32.h" + #endif +#else + #include + #if defined(_MSC_VER) + #include "windows/stdint.h" + #else + #include + #endif +#endif + +#include + +/*****************************************************************************/ + +#ifndef DEPUTY +#define COUNT(n) +#define TC +#define SAFE +#endif + +/*****************************************************************************/ + +#ifdef LOG_WRAPPERS +#include "wrapper.h" +char __failed_checks[N_WRAP+1]; +char __executed_checks[N_WRAP+1]; +#define UNDEFINED(__val) (__failed_checks[index]=1,(__val)) +#define LOG_INDEX , int index +#define LOG_EXEC __executed_checks[index]=1; +#else +#define UNDEFINED(__val) (__val) +#define LOG_INDEX +#define LOG_EXEC +#endif + +#if defined(AVR_ARCH) +#include "platform_avr.h" +#elif defined (MSP430) +#include "platform_msp430.h" +#else +#include "platform_generic.h" +#endif + +#define STATIC static + +#if defined (USE_MATH_MACROS_NOTMP) +#include "safe_math_macros_notmp.h" +#elif defined (USE_MATH_MACROS) +#include "safe_math_macros.h" +#else +#define FUNC_NAME(x) (safe_##x) +#include "safe_math.h" +#undef FUNC_NAME +#endif + +#define INT_BIT (sizeof(int)*CHAR_BIT) +#define _CSMITH_BITFIELD(x) (((x)>INT_BIT)?((x)%INT_BIT):(x)) + +#ifdef TCC + +void* memcpy(void* dest, const void* src, size_t count) { + char* dst8 = (char*)dest; + char* src8 = (char*)src; + + while (count--) { + *dst8++ = *src8++; + } + return dest; +} + +void *memset(void *s, int c, size_t n) +{ + unsigned char* p=s; + while(n--) + *p++ = (unsigned char)c; + return s; +} + +#endif + +#endif // RANDOM_INC_H diff --git a/tests/fuzz/safe_math.h b/tests/fuzz/safe_math.h new file mode 100644 index 0000000000000..393ebba12f9e6 --- /dev/null +++ b/tests/fuzz/safe_math.h @@ -0,0 +1,947 @@ + +#ifndef SAFE_MATH_H +#define SAFE_MATH_H + + + + + + + + + +STATIC int8_t +FUNC_NAME(unary_minus_func_int8_t_s)(int8_t si LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT8_MAX>=INT_MAX) + (si==INT8_MIN) ? + (UNDEFINED(si)) : +#endif +#endif + -si; +} + +STATIC int8_t +FUNC_NAME(add_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT8_MAX>=INT_MAX) + (((si1>0) && (si2>0) && (si1 > (INT8_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT8_MIN-si2)))) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 + si2); +} + +STATIC int8_t +FUNC_NAME(sub_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT8_MAX>=INT_MAX) + (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT8_MAX)))-si2)^si2)) < 0) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 - si2); +} + +STATIC int8_t +FUNC_NAME(mul_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT8_MAX>=INT_MAX) + (((si1 > 0) && (si2 > 0) && (si1 > (INT8_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT8_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT8_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT8_MAX / si1)))) ? + (UNDEFINED(si1)) : +#endif +#endif + si1 * si2; +} + +STATIC int8_t +FUNC_NAME(mod_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT8_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 % si2); +} + +STATIC int8_t +FUNC_NAME(div_func_int8_t_s_s)(int8_t si1, int8_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT8_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 / si2); +} + +STATIC int8_t +FUNC_NAME(lshift_func_int8_t_s_s)(int8_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT8_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC int8_t +FUNC_NAME(lshift_func_int8_t_s_u)(int8_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT8_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC int8_t +FUNC_NAME(rshift_func_int8_t_s_s)(int8_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC int8_t +FUNC_NAME(rshift_func_int8_t_s_u)(int8_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + + + +STATIC int16_t +FUNC_NAME(unary_minus_func_int16_t_s)(int16_t si LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT16_MAX>=INT_MAX) + (si==INT16_MIN) ? + (UNDEFINED(si)) : +#endif +#endif + -si; +} + +STATIC int16_t +FUNC_NAME(add_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT16_MAX>=INT_MAX) + (((si1>0) && (si2>0) && (si1 > (INT16_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT16_MIN-si2)))) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 + si2); +} + +STATIC int16_t +FUNC_NAME(sub_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT16_MAX>=INT_MAX) + (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT16_MAX)))-si2)^si2)) < 0) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 - si2); +} + +STATIC int16_t +FUNC_NAME(mul_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT16_MAX>=INT_MAX) + (((si1 > 0) && (si2 > 0) && (si1 > (INT16_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT16_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT16_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT16_MAX / si1)))) ? + (UNDEFINED(si1)) : +#endif +#endif + si1 * si2; +} + +STATIC int16_t +FUNC_NAME(mod_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT16_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 % si2); +} + +STATIC int16_t +FUNC_NAME(div_func_int16_t_s_s)(int16_t si1, int16_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT16_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 / si2); +} + +STATIC int16_t +FUNC_NAME(lshift_func_int16_t_s_s)(int16_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT16_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC int16_t +FUNC_NAME(lshift_func_int16_t_s_u)(int16_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT16_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC int16_t +FUNC_NAME(rshift_func_int16_t_s_s)(int16_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC int16_t +FUNC_NAME(rshift_func_int16_t_s_u)(int16_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + + + +STATIC int32_t +FUNC_NAME(unary_minus_func_int32_t_s)(int32_t si LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT32_MAX>=INT_MAX) + (si==INT32_MIN) ? + (UNDEFINED(si)) : +#endif +#endif + -si; +} + +STATIC int32_t +FUNC_NAME(add_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT32_MAX>=INT_MAX) + (((si1>0) && (si2>0) && (si1 > (INT32_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT32_MIN-si2)))) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 + si2); +} + +STATIC int32_t +FUNC_NAME(sub_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT32_MAX>=INT_MAX) + (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT32_MAX)))-si2)^si2)) < 0) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 - si2); +} + +STATIC int32_t +FUNC_NAME(mul_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT32_MAX>=INT_MAX) + (((si1 > 0) && (si2 > 0) && (si1 > (INT32_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT32_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT32_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT32_MAX / si1)))) ? + (UNDEFINED(si1)) : +#endif +#endif + si1 * si2; +} + +STATIC int32_t +FUNC_NAME(mod_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT32_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 % si2); +} + +STATIC int32_t +FUNC_NAME(div_func_int32_t_s_s)(int32_t si1, int32_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT32_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 / si2); +} + +STATIC int32_t +FUNC_NAME(lshift_func_int32_t_s_s)(int32_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT32_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC int32_t +FUNC_NAME(lshift_func_int32_t_s_u)(int32_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT32_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC int32_t +FUNC_NAME(rshift_func_int32_t_s_s)(int32_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC int32_t +FUNC_NAME(rshift_func_int32_t_s_u)(int32_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + +#ifndef NO_LONGLONG + + +STATIC int64_t +FUNC_NAME(unary_minus_func_int64_t_s)(int64_t si LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT64_MAX>=INT_MAX) + (si==INT64_MIN) ? + (UNDEFINED(si)) : +#endif +#endif + -si; +} + +STATIC int64_t +FUNC_NAME(add_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT64_MAX>=INT_MAX) + (((si1>0) && (si2>0) && (si1 > (INT64_MAX-si2))) || ((si1<0) && (si2<0) && (si1 < (INT64_MIN-si2)))) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 + si2); +} + +STATIC int64_t +FUNC_NAME(sub_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT64_MAX>=INT_MAX) + (((si1^si2) & (((si1 ^ ((si1^si2) & (~INT64_MAX)))-si2)^si2)) < 0) ? + (UNDEFINED(si1)) : +#endif +#endif + (si1 - si2); +} + +STATIC int64_t +FUNC_NAME(mul_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE +#if (INT64_MAX>=INT_MAX) + (((si1 > 0) && (si2 > 0) && (si1 > (INT64_MAX / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < (INT64_MIN / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < (INT64_MIN / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < (INT64_MAX / si1)))) ? + (UNDEFINED(si1)) : +#endif +#endif + si1 * si2; +} + +STATIC int64_t +FUNC_NAME(mod_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT64_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 % si2); +} + +STATIC int64_t +FUNC_NAME(div_func_int64_t_s_s)(int64_t si1, int64_t si2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((si2 == 0) || ((si1 == INT64_MIN) && (si2 == (-1)))) ? + (UNDEFINED(si1)) : +#endif + (si1 / si2); +} + +STATIC int64_t +FUNC_NAME(lshift_func_int64_t_s_s)(int64_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > (INT64_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC int64_t +FUNC_NAME(lshift_func_int64_t_s_u)(int64_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32) || (left > (INT64_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC int64_t +FUNC_NAME(rshift_func_int64_t_s_s)(int64_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC int64_t +FUNC_NAME(rshift_func_int64_t_s_u)(int64_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((left < 0) || (((unsigned int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + +#endif + + + + + +STATIC uint8_t +FUNC_NAME(unary_minus_func_uint8_t_u)(uint8_t ui LOG_INDEX) +{ + LOG_EXEC + return -ui; +} + +STATIC uint8_t +FUNC_NAME(add_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 + ui2; +} + +STATIC uint8_t +FUNC_NAME(sub_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 - ui2; +} + +STATIC uint8_t +FUNC_NAME(mul_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ((unsigned int)ui1) * ((unsigned int)ui2); +} + +STATIC uint8_t +FUNC_NAME(mod_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 % ui2); +} + +STATIC uint8_t +FUNC_NAME(div_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 / ui2); +} + +STATIC uint8_t +FUNC_NAME(lshift_func_uint8_t_u_s)(uint8_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT8_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC uint8_t +FUNC_NAME(lshift_func_uint8_t_u_u)(uint8_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((unsigned int)right) >= 32) || (left > (UINT8_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC uint8_t +FUNC_NAME(rshift_func_uint8_t_u_s)(uint8_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC uint8_t +FUNC_NAME(rshift_func_uint8_t_u_u)(uint8_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (((unsigned int)right) >= 32) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + + + +STATIC uint16_t +FUNC_NAME(unary_minus_func_uint16_t_u)(uint16_t ui LOG_INDEX) +{ + LOG_EXEC + return -ui; +} + +STATIC uint16_t +FUNC_NAME(add_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 + ui2; +} + +STATIC uint16_t +FUNC_NAME(sub_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 - ui2; +} + +STATIC uint16_t +FUNC_NAME(mul_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ((unsigned int)ui1) * ((unsigned int)ui2); +} + +STATIC uint16_t +FUNC_NAME(mod_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 % ui2); +} + +STATIC uint16_t +FUNC_NAME(div_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 / ui2); +} + +STATIC uint16_t +FUNC_NAME(lshift_func_uint16_t_u_s)(uint16_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT16_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC uint16_t +FUNC_NAME(lshift_func_uint16_t_u_u)(uint16_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((unsigned int)right) >= 32) || (left > (UINT16_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC uint16_t +FUNC_NAME(rshift_func_uint16_t_u_s)(uint16_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC uint16_t +FUNC_NAME(rshift_func_uint16_t_u_u)(uint16_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (((unsigned int)right) >= 32) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + + + +STATIC uint32_t +FUNC_NAME(unary_minus_func_uint32_t_u)(uint32_t ui LOG_INDEX) +{ + LOG_EXEC + return -ui; +} + +STATIC uint32_t +FUNC_NAME(add_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 + ui2; +} + +STATIC uint32_t +FUNC_NAME(sub_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 - ui2; +} + +STATIC uint32_t +FUNC_NAME(mul_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ((unsigned int)ui1) * ((unsigned int)ui2); +} + +STATIC uint32_t +FUNC_NAME(mod_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 % ui2); +} + +STATIC uint32_t +FUNC_NAME(div_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 / ui2); +} + +STATIC uint32_t +FUNC_NAME(lshift_func_uint32_t_u_s)(uint32_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT32_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC uint32_t +FUNC_NAME(lshift_func_uint32_t_u_u)(uint32_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((unsigned int)right) >= 32) || (left > (UINT32_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC uint32_t +FUNC_NAME(rshift_func_uint32_t_u_s)(uint32_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC uint32_t +FUNC_NAME(rshift_func_uint32_t_u_u)(uint32_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (((unsigned int)right) >= 32) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + +#ifndef NO_LONGLONG + + +STATIC uint64_t +FUNC_NAME(unary_minus_func_uint64_t_u)(uint64_t ui LOG_INDEX) +{ + LOG_EXEC + return -ui; +} + +STATIC uint64_t +FUNC_NAME(add_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 + ui2; +} + +STATIC uint64_t +FUNC_NAME(sub_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ui1 - ui2; +} + +STATIC uint64_t +FUNC_NAME(mul_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX) +{ + LOG_EXEC + return ((unsigned long long int)ui1) * ((unsigned long long int)ui2); +} + +STATIC uint64_t +FUNC_NAME(mod_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 % ui2); +} + +STATIC uint64_t +FUNC_NAME(div_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2 LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (ui2 == 0) ? + (UNDEFINED(ui1)) : +#endif + (ui1 / ui2); +} + +STATIC uint64_t +FUNC_NAME(lshift_func_uint64_t_u_s)(uint64_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32) || (left > (UINT64_MAX >> ((int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((int)right)); +} + +STATIC uint64_t +FUNC_NAME(lshift_func_uint64_t_u_u)(uint64_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((unsigned int)right) >= 32) || (left > (UINT64_MAX >> ((unsigned int)right)))) ? + (UNDEFINED(left)) : +#endif + (left << ((unsigned int)right)); +} + +STATIC uint64_t +FUNC_NAME(rshift_func_uint64_t_u_s)(uint64_t left, int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + ((((int)right) < 0) || (((int)right) >= 32)) ? + (UNDEFINED(left)) : +#endif + (left >> ((int)right)); +} + +STATIC uint64_t +FUNC_NAME(rshift_func_uint64_t_u_u)(uint64_t left, unsigned int right LOG_INDEX) +{ + LOG_EXEC + return +#ifndef UNSAFE + (((unsigned int)right) >= 32) ? + (UNDEFINED(left)) : +#endif + (left >> ((unsigned int)right)); +} + +#endif + +#endif diff --git a/tests/runner.py b/tests/runner.py index 0822fa27c6a81..8410f8881cafa 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7197,6 +7197,16 @@ def test_cases(self): finally: del os.environ['EMCC_LEAVE_INPUTS_RAW'] + def test_fuzz(self): + if Settings.USE_TYPED_ARRAYS != 2: return self.skip('needs ta2') + + Building.COMPILER_TEST_OPTS += ['-I' + path_from_root('tests', 'fuzz')] + + for name in glob.glob(path_from_root('tests', 'fuzz', '*.c')): + print name + self.do_run(open(path_from_root('tests', 'fuzz', name)).read(), + open(path_from_root('tests', 'fuzz', name + '.txt')).read(), force_c=True) + # Autodebug the code def do_autodebug(self, filename): output = Popen([PYTHON, AUTODEBUGGER, filename+'.o.ll', filename+'.o.ll.ll'], stdout=PIPE, stderr=self.stderr_redirect).communicate()[0] From dbfd0c57fde6f0252a6c3142a6c0dea44b2270d7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 15:55:23 -0800 Subject: [PATCH 152/326] move csmith driver --- tests/{ => fuzz}/csmith_driver.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{ => fuzz}/csmith_driver.py (100%) diff --git a/tests/csmith_driver.py b/tests/fuzz/csmith_driver.py similarity index 100% rename from tests/csmith_driver.py rename to tests/fuzz/csmith_driver.py From 8af81c7eaeae4befca8790822eddf79c5fddc24f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 18:06:16 -0800 Subject: [PATCH 153/326] handle nonportable/unaligned code in csmith --- tests/fuzz/csmith_driver.py | 38 +++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index fcf937f631bbe..cc96a27ce437e 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -7,7 +7,7 @@ import os, sys, difflib from subprocess import Popen, PIPE, STDOUT -sys.path += [os.path.join(os.path.dirname(os.path.dirname(__file__)), 'tools')] +sys.path += [os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'tools')] import shared CSMITH = os.path.expanduser('~/Dev/csmith/src/csmith') @@ -18,10 +18,11 @@ shared.DEFAULT_TIMEOUT = 3 tried = 0 -valid = 0 + +notes = { 'invalid': 0, 'unaligned': 0 } while 1: - print 'Tried %d, valid: %d' % (tried, valid) + print 'Tried %d, notes: %s' % (tried, notes) tried += 1 print '1) Generate C' shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], stdout=open(filename + '.c', 'w')) @@ -35,16 +36,29 @@ correct = shared.timeout_run(Popen([filename], stdout=PIPE, stderr=PIPE), 3) except Exception, e: print 'Failed or infinite looping in native, skipping', e + notes['invalid'] += 1 continue - valid += 1 - print '4) Compile JS-ly' - shared.try_delete(filename + '.js') - shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS, stderr=PIPE) - assert os.path.exists(filename + '.js') - print '5) Run JS-ly' - js = shared.run_js(filename + '.js', stderr=PIPE) #, engine=...) + print '4) Compile JS-ly and compare' + + def try_js(args): + shared.try_delete(filename + '.js') + shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS, stderr=PIPE) + assert os.path.exists(filename + '.js') + print '5) Run JS-ly' + js = shared.run_js(filename + '.js', stderr=PIPE) #, engine=...) + assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) - print '6) Verify' - assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) + # Try normally, then try unaligned because csmith does generate nonportable code that requires x86 alignment + ok = False + for args, note in [([], None), (['-s', 'UNALIGNED_MEMORY=1'], 'unaligned')]: + try: + try_js(args) + ok = True + if note: + notes[note] += 1 + break + except Exception, e: + print e + if not ok: break From 019c14d581919c1c6756365acfd8c570f1a7d39c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 23 Feb 2013 18:29:13 -0800 Subject: [PATCH 154/326] csmith driver fix --- tests/fuzz/csmith_driver.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index cc96a27ce437e..b893436a117a3 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -43,9 +43,8 @@ def try_js(args): shared.try_delete(filename + '.js') - shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS, stderr=PIPE) + shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS + args, stderr=PIPE) assert os.path.exists(filename + '.js') - print '5) Run JS-ly' js = shared.run_js(filename + '.js', stderr=PIPE) #, engine=...) assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) @@ -61,4 +60,15 @@ def try_js(args): except Exception, e: print e if not ok: break + #if not ok: + # try: # finally, try with safe heap. if that is triggered, this is nonportable code almost certainly + # try_js(['-s', 'SAFE_HEAP=1']) + # except Exception, e: + # print e + # js = shared.run_js(filename + '.js', stderr=PIPE, full_output=True) + # print js + # if 'SAFE_HEAP' in js: + # notes['safeheap'] += 1 + # else: + # break From 0aaf540cae8d36844b0aa683ab84fdc50ce3ceab Mon Sep 17 00:00:00 2001 From: Janus Troelsen Date: Sun, 24 Feb 2013 22:26:23 +0100 Subject: [PATCH 155/326] add OPTIONS verb so that CORS works in Chrome. also use OOP --- tests/runner.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 8410f8881cafa..c356d218ca1b3 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10477,7 +10477,6 @@ def test_chunked_synchronous_xhr(self): def chunked_server(support_byte_ranges): class ChunkedServerHandler(BaseHTTPServer.BaseHTTPRequestHandler): - @staticmethod def sendheaders(s, extra=[], length=len(data)): s.send_response(200) s.send_header("Content-Length", str(length)) @@ -10491,11 +10490,14 @@ def sendheaders(s, extra=[], length=len(data)): s.end_headers() def do_HEAD(s): - ChunkedServerHandler.sendheaders(s) - + s.sendheaders() + + def do_OPTIONS(s): + s.sendheaders([("Access-Control-Allow-Headers", "Range")], 0) + def do_GET(s): if not support_byte_ranges: - ChunkedServerHandler.sendheaders(s) + s.sendheaders() s.wfile.write(data) else: (start, end) = s.headers.get("range").split("=")[1].split("-") @@ -10503,7 +10505,7 @@ def do_GET(s): end = int(end) end = min(len(data)-1, end) length = end-start+1 - ChunkedServerHandler.sendheaders(s,[],length) + s.sendheaders([],length) s.wfile.write(data[start:end+1]) s.wfile.close() httpd = BaseHTTPServer.HTTPServer(('localhost', 11111), ChunkedServerHandler) From 12707610d913c3110faa02f29f358059b897c029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jukka=20Jyl=C3=A4nki?= Date: Mon, 25 Feb 2013 01:04:23 +0200 Subject: [PATCH 156/326] Add additional error reporting to Popen failures on Windows to be able to pinpoint what command line causes a failure. --- tools/shared.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/shared.py b/tools/shared.py index ebf803da389ac..d391caa21eda1 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -28,7 +28,10 @@ def __init__(self, args, bufsize=0, executable=None, stdin=None, stdout=None, st self.stderr_ = PIPE # Call the process with fixed streams. - self.process = subprocess.Popen(args, bufsize, executable, self.stdin_, self.stdout_, self.stderr_, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags) + try: + self.process = subprocess.Popen(args, bufsize, executable, self.stdin_, self.stdout_, self.stderr_, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags) + except Exception, e: + print >> sys.stderr, 'subprocess.Popen(args=%s) failed! Exception %s' % (' '.join(args), str(e)) def communicate(self, input=None): output = self.process.communicate(input) From 17c578e3837405877b9c2052220ffb91b5f47ba2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 24 Feb 2013 15:27:39 -0800 Subject: [PATCH 157/326] support multiple js engines in fuzzer, and asm.js --- tests/fuzz/csmith_driver.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index b893436a117a3..266334948d607 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -10,6 +10,11 @@ sys.path += [os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'tools')] import shared +engine1 = eval('shared.' + sys.argv[1]) if len(sys.argv) > 1 else shared.JS_ENGINES[0] +engine2 = eval('shared.' + sys.argv[2]) if len(sys.argv) > 2 else None + +print 'testing js engines', engine1, engine2 + CSMITH = os.path.expanduser('~/Dev/csmith/src/csmith') CSMITH_CFLAGS = ['-I' + os.path.expanduser('~/Dev/csmith/runtime/')] @@ -45,11 +50,12 @@ def try_js(args): shared.try_delete(filename + '.js') shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS + args, stderr=PIPE) assert os.path.exists(filename + '.js') - js = shared.run_js(filename + '.js', stderr=PIPE) #, engine=...) + js = shared.run_js(filename + '.js', stderr=PIPE, engine=engine1) assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) # Try normally, then try unaligned because csmith does generate nonportable code that requires x86 alignment ok = False + normal = True for args, note in [([], None), (['-s', 'UNALIGNED_MEMORY=1'], 'unaligned')]: try: try_js(args) @@ -59,6 +65,7 @@ def try_js(args): break except Exception, e: print e + normal = False if not ok: break #if not ok: # try: # finally, try with safe heap. if that is triggered, this is nonportable code almost certainly @@ -72,3 +79,13 @@ def try_js(args): # else: # break + # This is ok. Try in secondary JS engine too + if engine2 and normal: + js2 = shared.run_js(filename + '.js', stderr=PIPE, engine=engine2, full_output=True) + + # asm.js testing + assert 'warning: Successfully compiled asm.js code' in js2, 'must validate' + js2 = js2.replace('\nwarning: Successfully compiled asm.js code\n', '') + + assert js2 == correct, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js2.split('\n'), fromfile='expected', tofile='actual')]) + From 372247582585c1dd3f0d280e4e5b49e48efb9799 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 24 Feb 2013 15:34:58 -0800 Subject: [PATCH 158/326] do not emit direct multiplies of <32 bit in asm, asm only has 32-bit multiply --- src/parseTools.js | 3 ++- tests/fuzz/csmith_driver.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/parseTools.js b/src/parseTools.js index 7d1a7cd9a72f7..ae5831aecda4b 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1393,7 +1393,8 @@ function getFastValue(a, op, b, type) { if (!(type in Runtime.FLOAT_TYPES)) { // if guaranteed small enough to not overflow into a double, do a normal multiply var bits = getBits(type) || 32; // default is 32-bit multiply for things like getelementptr indexes - if ((isNumber(a) && Math.abs(a) < TWO_TWENTY) || (isNumber(b) && Math.abs(b) < TWO_TWENTY) || bits < 32) { + // Note that we can emit simple multiple in non-asm.js mode, but asm.js will not parse "16-bit" multiple, so must do imul there + if ((isNumber(a) && Math.abs(a) < TWO_TWENTY) || (isNumber(b) && Math.abs(b) < TWO_TWENTY) || (bits < 32 && !ASM_JS)) { return '(((' + a + ')*(' + b + '))&' + ((Math.pow(2, bits)-1)|0) + ')'; // keep a non-eliminatable coercion directly on this } return 'Math.imul(' + a + ',' + b + ')'; diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 266334948d607..62524a93a8c12 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -30,7 +30,7 @@ print 'Tried %d, notes: %s' % (tried, notes) tried += 1 print '1) Generate C' - shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], stdout=open(filename + '.c', 'w')) + shared.execute([CSMITH, '--no-volatiles', '--no-math64'], stdout=open(filename + '.c', 'w')) print '2) Compile natively' shared.try_delete(filename) From 6783ff52ea232aed967ddf55f21043f6b40d1126 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 24 Feb 2013 16:34:59 -0800 Subject: [PATCH 159/326] creduce support --- tests/fuzz/creduce_tester.py | 53 ++++++++++++++++++++++++++++++++++++ tests/fuzz/csmith_driver.py | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100755 tests/fuzz/creduce_tester.py diff --git a/tests/fuzz/creduce_tester.py b/tests/fuzz/creduce_tester.py new file mode 100755 index 0000000000000..c3460e9d8b620 --- /dev/null +++ b/tests/fuzz/creduce_tester.py @@ -0,0 +1,53 @@ +#!/usr/bin/python + +''' +Runs csmith, a C fuzzer, and looks for bugs +''' + +import os, sys, difflib +from subprocess import Popen, PIPE, STDOUT + +sys.path += [os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'tools')] +import shared + +filename = sys.argv[1] +print 'testing file', filename + +print '2) Compile natively' +shared.try_delete(filename) +shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename] + CSMITH_CFLAGS, stderr=PIPE) +assert os.path.exists(filename) +print '3) Run natively' +try: + correct = shared.timeout_run(Popen([filename], stdout=PIPE, stderr=PIPE), 3) +except Exception, e: + print 'Failed or infinite looping in native, skipping', e + notes['invalid'] += 1 + os.exit(0) # boring + +print '4) Compile JS-ly and compare' + +def try_js(args): + shared.try_delete(filename + '.js') + shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS + args, stderr=PIPE) + assert os.path.exists(filename + '.js') + js = shared.run_js(filename + '.js', stderr=PIPE, engine=engine1) + assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) + +# Try normally, then try unaligned because csmith does generate nonportable code that requires x86 alignment +ok = False +normal = True +for args, note in [([], None), (['-s', 'UNALIGNED_MEMORY=1'], 'unaligned')]: + try: + try_js(args) + ok = True + if note: + notes[note] += 1 + break + except Exception, e: + print e + normal = False +if not ok: sys.exit(1) + +sys.exit(0) # boring + diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 62524a93a8c12..439dd308ee56f 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -20,7 +20,7 @@ filename = os.path.join(shared.CANONICAL_TEMP_DIR, 'fuzzcode') -shared.DEFAULT_TIMEOUT = 3 +shared.DEFAULT_TIMEOUT = 1 tried = 0 From eca998361bfa997b44449dc8470f979f1ae804dc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 00:01:58 -0500 Subject: [PATCH 160/326] fuzz error message --- tests/fuzz/csmith_driver.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 439dd308ee56f..35a2861efdd98 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -87,5 +87,7 @@ def try_js(args): assert 'warning: Successfully compiled asm.js code' in js2, 'must validate' js2 = js2.replace('\nwarning: Successfully compiled asm.js code\n', '') - assert js2 == correct, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js2.split('\n'), fromfile='expected', tofile='actual')]) + assert js2 == correct, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js2.split('\n'), fromfile='expected', tofile='actual')]) + 'ODIN FAIL' + print 'odin ok' + From 6c04161dc83835753996a7fa7e7a9b0e542d1267 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 11:13:12 -0500 Subject: [PATCH 161/326] fuzzer improvements --- tests/fuzz/csmith_driver.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 35a2861efdd98..1cb8545135814 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -24,7 +24,7 @@ tried = 0 -notes = { 'invalid': 0, 'unaligned': 0 } +notes = { 'invalid': 0, 'unaligned': 0, 'embug': 0 } while 1: print 'Tried %d, notes: %s' % (tried, notes) @@ -50,7 +50,7 @@ def try_js(args): shared.try_delete(filename + '.js') shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS + args, stderr=PIPE) assert os.path.exists(filename + '.js') - js = shared.run_js(filename + '.js', stderr=PIPE, engine=engine1) + js = shared.run_js(filename + '.js', stderr=PIPE, engine=engine1, check_timeout=True) assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) # Try normally, then try unaligned because csmith does generate nonportable code that requires x86 alignment @@ -66,7 +66,10 @@ def try_js(args): except Exception, e: print e normal = False - if not ok: break + if not ok: + print "EMSCRIPTEN BUG" + notes['embug'] += 1 + continue #break #if not ok: # try: # finally, try with safe heap. if that is triggered, this is nonportable code almost certainly # try_js(['-s', 'SAFE_HEAP=1']) @@ -81,7 +84,11 @@ def try_js(args): # This is ok. Try in secondary JS engine too if engine2 and normal: - js2 = shared.run_js(filename + '.js', stderr=PIPE, engine=engine2, full_output=True) + try: + js2 = shared.run_js(filename + '.js', stderr=PIPE, engine=engine2, full_output=True, check_timeout=True) + except: + print 'failed to run in secondary', js2 + break # asm.js testing assert 'warning: Successfully compiled asm.js code' in js2, 'must validate' From 28b48f7018b72a80b202ad4c76a1e954d2f9174e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 11:32:15 -0500 Subject: [PATCH 162/326] cache llvm-nm results --- tools/shared.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/shared.py b/tools/shared.py index ebf803da389ac..3e6d487b79768 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -866,8 +866,14 @@ def llvm_as(input_filename, output_filename=None): assert os.path.exists(output_filename), 'Could not create bc file: ' + output return output_filename + nm_cache = {} # cache results of nm - it can be slow to run + @staticmethod def llvm_nm(filename, stdout=PIPE, stderr=None): + if filename in Building.nm_cache: + if DEBUG: print >> sys.stderr, 'loading nm results for %s from cache' % filename + return Building.nm_cache[filename] + # LLVM binary ==> list of symbols output = Popen([LLVM_NM, filename], stdout=stdout, stderr=stderr).communicate()[0] class ret: @@ -888,6 +894,7 @@ class ret: ret.defs = set(ret.defs) ret.undefs = set(ret.undefs) ret.commons = set(ret.commons) + Building.nm_cache[filename] = ret return ret @staticmethod From e24cfb71dfd9bd4ecd3e682971662c91e17db400 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 11:49:16 -0500 Subject: [PATCH 163/326] only do symbol checks for libcxx etc. if not forcing them anyhow --- emcc | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/emcc b/emcc index 64c65d47374e4..39c4282be1989 100755 --- a/emcc +++ b/emcc @@ -1059,19 +1059,20 @@ try: for name, create, fix, library_symbols in [('libcxx', create_libcxx, fix_libcxx, libcxx_symbols), ('libcxxabi', create_libcxxabi, fix_libcxxabi, libcxxabi_symbols), ('libc', create_libc, fix_libc, libc_symbols)]: - need = set() - has = set() - for temp_file in temp_files: - symbols = shared.Building.llvm_nm(temp_file) - for library_symbol in library_symbols: - if library_symbol in symbols.undefs: - need.add(library_symbol) - if library_symbol in symbols.defs: - has.add(library_symbol) - for haz in has: # remove symbols that are supplied by another of the inputs - if haz in need: - need.remove(haz) - if DEBUG: print >> sys.stderr, 'emcc: considering including %s: we need %s and have %s' % (name, str(need), str(has)) + if not force: + need = set() + has = set() + for temp_file in temp_files: + symbols = shared.Building.llvm_nm(temp_file) + for library_symbol in library_symbols: + if library_symbol in symbols.undefs: + need.add(library_symbol) + if library_symbol in symbols.defs: + has.add(library_symbol) + for haz in has: # remove symbols that are supplied by another of the inputs + if haz in need: + need.remove(haz) + if DEBUG: print >> sys.stderr, 'emcc: considering including %s: we need %s and have %s' % (name, str(need), str(has)) if force or len(need) > 0: # We need to build and link the library in if DEBUG: print >> sys.stderr, 'emcc: including %s' % name From ff41de227db521cf319bdc08901e5fa1e44c737d Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 12:03:17 -0500 Subject: [PATCH 164/326] only do llvm-nm in linking if there is at least one ar file --- tools/shared.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index 3e6d487b79768..d40fe11910b24 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -749,12 +749,16 @@ def link(files, target): resolved_symbols = set() temp_dirs = [] files = map(os.path.abspath, files) + has_ar = False + for f in files: + has_ar = has_ar or Building.is_ar(f) for f in files: if not Building.is_ar(f): if Building.is_bitcode(f): - new_symbols = Building.llvm_nm(f) - resolved_symbols = resolved_symbols.union(new_symbols.defs) - unresolved_symbols = unresolved_symbols.union(new_symbols.undefs.difference(resolved_symbols)).difference(new_symbols.defs) + if has_ar: + new_symbols = Building.llvm_nm(f) + resolved_symbols = resolved_symbols.union(new_symbols.defs) + unresolved_symbols = unresolved_symbols.union(new_symbols.undefs.difference(resolved_symbols)).difference(new_symbols.defs) actual_files.append(f) else: # Extract object files from ar archives, and link according to gnu ld semantics From dce4bc033cf7ae8ce4630991a7661446ecf5434e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 12:08:24 -0500 Subject: [PATCH 165/326] remove llvm-nm/dis checks for bitcode in is_bitcode --- tools/shared.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index d40fe11910b24..0dbdabe5d81b9 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1099,24 +1099,6 @@ def is_ar(filename): @staticmethod def is_bitcode(filename): - # checks if a file contains LLVM bitcode - # if the file doesn't exist or doesn't have valid symbols, it isn't bitcode - try: - defs = Building.llvm_nm(filename, stderr=PIPE) - # If no symbols found, it might just be an empty bitcode file, try to dis it - if len(defs.defs) + len(defs.undefs) + len(defs.commons) == 0: - # llvm-nm 3.0 has a bug when reading symbols from ar files - # so try to see if we're dealing with an ar file, in which - # case we should try to dis it. - if not Building.is_ar(filename): - test_ll = os.path.join(EMSCRIPTEN_TEMP_DIR, 'test.ll') - Building.llvm_dis(filename, test_ll) - assert os.path.exists(test_ll) - try_delete(test_ll) - except Exception, e: - if DEBUG: print >> sys.stderr, 'shared.Building.is_bitcode failed to test whether file \'%s\' is a llvm bitcode file! Failed on exception: %s' % (filename, e) - return False - # look for magic signature b = open(filename, 'r').read(4) if b[0] == 'B' and b[1] == 'C': From e26971d4efce418fa303499c11eb6b216f54a60f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 14:21:22 -0500 Subject: [PATCH 166/326] EMCC_FORCE_STDLIBS option --- emcc | 10 ++++++---- tests/runner.py | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/emcc b/emcc index 39c4282be1989..2f4bad2b836f9 100755 --- a/emcc +++ b/emcc @@ -1054,8 +1054,10 @@ try: libcxxabi_symbols = filter(lambda symbol: symbol not in libc_symbols, libcxxabi_symbols) libcxxabi_symbols = set(libcxxabi_symbols) - force = False # If we have libcxx, we must force inclusion of libc, since libcxx uses new internally. Note: this is kind of hacky - + # If we have libcxx, we must force inclusion of libc, since libcxx uses new internally. Note: this is kind of hacky + # Settings this in the environment will avoid checking dependencies and make building big projects a little faster + force = os.environ.get('EMCC_FORCE_STDLIBS') + has = need = None for name, create, fix, library_symbols in [('libcxx', create_libcxx, fix_libcxx, libcxx_symbols), ('libcxxabi', create_libcxxabi, fix_libcxxabi, libcxxabi_symbols), ('libc', create_libc, fix_libc, libc_symbols)]: @@ -1077,7 +1079,7 @@ try: # We need to build and link the library in if DEBUG: print >> sys.stderr, 'emcc: including %s' % name libfile = shared.Cache.get(name, create) - if len(has) > 0: + if has and len(has) > 0: # remove the symbols we do not need fixed = in_temp(uniquename(libfile)) + '.bc' shutil.copyfile(libfile, fixed) @@ -1087,7 +1089,7 @@ try: libfile = fixed extra_files_to_link.append(libfile) force = True - if fix: + if fix and need: fix(need) # First, combine the bitcode files if there are several. We must also link if we have a singleton .a diff --git a/tests/runner.py b/tests/runner.py index 8410f8881cafa..46d040e152b7a 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7130,6 +7130,14 @@ def clean(text): self.assertIdentical(clean(open('release.js').read()), clean(open('debug%d.js' % debug).read())) # EMCC_DEBUG=1 mode must not generate different code! print >> sys.stderr, 'debug check %d passed too' % debug + try: + os.environ['EMCC_FORCE_STDLIBS'] = '1' + print 'EMCC_FORCE_STDLIBS' + do_test() + finally: + del os.environ['EMCC_FORCE_STDLIBS'] + print >> sys.stderr, 'EMCC_FORCE_STDLIBS ok' + try_delete(CANONICAL_TEMP_DIR) else: print >> sys.stderr, 'not doing debug check' From a0141bb1999899c82492a7a839a892dc53405acc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 14:48:20 -0500 Subject: [PATCH 167/326] fix asm.js parsing of memcpy --- src/library.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library.js b/src/library.js index 885fe1e00113c..d0f73fddeac60 100644 --- a/src/library.js +++ b/src/library.js @@ -4533,7 +4533,7 @@ LibraryManager.library = { while ((i|0) < (num|0)) { var v1 = {{{ makeGetValueAsm('p1', 'i', 'i8', true) }}}; var v2 = {{{ makeGetValueAsm('p2', 'i', 'i8', true) }}}; - if ((v1|0) != (v2|0)) return (v1|0) > (v2|0) ? 1 : -1; + if ((v1|0) != (v2|0)) return ((v1|0) > (v2|0) ? 1 : -1)|0; i = (i+1)|0; } return 0; From 875426c1f23c5a2dbacb3c947ffe82ee71b28720 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 15:41:42 -0500 Subject: [PATCH 168/326] ensure input to HEAP[U]8 is an int --- src/parseTools.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/parseTools.js b/src/parseTools.js index ae5831aecda4b..357d33a160cc7 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -103,6 +103,11 @@ function isNiceIdent(ident, loose) { } } +function isJSVar(ident) { + return /^\(?[$_]?[\w$_\d ]*\)+$/.test(ident); + +} + function isStructPointerType(type) { // This test is necessary for clang - in llvm-gcc, we // could check for %struct. The downside is that %1 can @@ -988,7 +993,8 @@ function getHeapOffset(offset, type, forceAsm) { if (shifts != 0) { return '(' + offset + '>>' + shifts + ')'; } else { - return offset; + // we need to guard against overflows here, HEAP[U]8 expects a guaranteed int + return isJSVar(offset) ? offset : '(' + offset + '|0)'; } } } From 6475478ff1ff227aea169fdb9a33ea87a5c52082 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 15:55:04 -0500 Subject: [PATCH 169/326] remove debug print --- tools/shared.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/shared.py b/tools/shared.py index 0dbdabe5d81b9..ce9001fbb5fd9 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -875,7 +875,7 @@ def llvm_as(input_filename, output_filename=None): @staticmethod def llvm_nm(filename, stdout=PIPE, stderr=None): if filename in Building.nm_cache: - if DEBUG: print >> sys.stderr, 'loading nm results for %s from cache' % filename + #if DEBUG: print >> sys.stderr, 'loading nm results for %s from cache' % filename return Building.nm_cache[filename] # LLVM binary ==> list of symbols From 87961191d46590e485cb1ab97b4cd95e692a5794 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 16:07:55 -0500 Subject: [PATCH 170/326] always replace Math.imul in non-precise i32 mul mode, and disable test for that in asm since asm alaways assumes precision --- src/preamble.js | 6 ++++-- tests/runner.py | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/preamble.js b/src/preamble.js index 05269c6e34989..a7731e7fd07ee 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -742,17 +742,19 @@ Module['writeArrayToMemory'] = writeArrayToMemory; {{{ unSign }}} {{{ reSign }}} -if (!Math.imul) Math.imul = function(a, b) { #if PRECISE_I32_MUL +if (!Math.imul) Math.imul = function(a, b) { var ah = a >>> 16; var al = a & 0xffff; var bh = b >>> 16; var bl = b & 0xffff; return (al*bl + ((ah*bl + al*bh) << 16))|0; +}; #else +Math.imul = function(a, b) { return (a*b)|0; // fast but imprecise -#endif }; +#endif // A counter of dependencies for calling run(). If we need to // do asynchronous work before running, increment this and diff --git a/tests/runner.py b/tests/runner.py index 46d040e152b7a..7417524a430c4 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -1153,6 +1153,8 @@ def test_i32_mul_precise(self): self.do_run(src, '3217489085') def test_i32_mul_semiprecise(self): + if Settings.ASM_JS: return self.skip('asm is always fully precise') + Settings.PRECISE_I32_MUL = 0 # we want semiprecise here src = r''' From 023fc2e7efb2f0bcb58406ba56f90639debf8dba Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 18:09:40 -0500 Subject: [PATCH 171/326] use preserveDrawingBuffer in gl tests to make them work on latest firefox --- src/library_browser.js | 7 ++++++- src/settings.js | 1 + tests/runner.py | 26 +++++++++++++------------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/src/library_browser.js b/src/library_browser.js index e9396d6903c2d..5b19a360f8738 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -204,7 +204,12 @@ mergeInto(LibraryManager.library, { var ctx; try { if (useWebGL) { - ctx = canvas.getContext('experimental-webgl', { alpha: false }); + ctx = canvas.getContext('experimental-webgl', { + alpha: false, +#if GL_TESTING + preserveDrawingBuffer: true +#endif + }); } else { ctx = canvas.getContext('2d'); } diff --git a/src/settings.js b/src/settings.js index df9da926ea76a..7caa5b9205bdc 100644 --- a/src/settings.js +++ b/src/settings.js @@ -158,6 +158,7 @@ var SOCKET_DEBUG = 0; // Log out socket/network data transfer. var GL_DEBUG = 0; // Print out all calls into WebGL. As with LIBRARY_DEBUG, you can set a runtime // option, in this case GL.debug. +var GL_TESTING = 0; // When enabled, sets preserveDrawingBuffer in the context, to allow tests to work (but adds overhead) var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers are var GL_UNSAFE_OPTS = 1; // Enables some potentially-unsafe optimizations in GL emulation code diff --git a/tests/runner.py b/tests/runner.py index 7417524a430c4..b5e205f83f838 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10339,56 +10339,56 @@ def test_sdl_ogl(self): # SDL, OpenGL, textures, immediate mode. Closure for more coverage shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-gray-purple.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_ogl.c'), '-O2', '--minify', '0', '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_ogl.c'), '-O2', '--minify', '0', '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with gray at the top.', '/report_result?0') def test_sdl_ogl_defaultmatrixmode(self): # SDL, OpenGL, textures, immediate mode. Closure for more coverage shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-gray-purple.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_ogl_defaultMatrixMode.c'), '--minify', '0', '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_ogl_defaultMatrixMode.c'), '--minify', '0', '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with gray at the top.', '/report_result?0') def test_sdl_ogl_p(self): # Immediate mode with pointers shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-gray.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_ogl_p.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_ogl_p.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with gray at the top.', '/report_result?0') def test_sdl_fog_simple(self): # SDL, OpenGL, textures, fog, immediate mode. Closure for more coverage shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-fog-simple.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_simple.c'), '-O2', '--minify', '0', '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_simple.c'), '-O2', '--minify', '0', '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with fog.', '/report_result?0') def test_sdl_fog_negative(self): # SDL, OpenGL, textures, fog, immediate mode. Closure for more coverage shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-fog-negative.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_negative.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_negative.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with fog.', '/report_result?0') def test_sdl_fog_density(self): # SDL, OpenGL, textures, fog, immediate mode. Closure for more coverage shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-fog-density.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_density.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_density.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with fog.', '/report_result?0') def test_sdl_fog_exp2(self): # SDL, OpenGL, textures, fog, immediate mode. Closure for more coverage shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-fog-exp2.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_exp2.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_exp2.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with fog.', '/report_result?0') def test_sdl_fog_linear(self): # SDL, OpenGL, textures, fog, immediate mode. Closure for more coverage shutil.copyfile(path_from_root('tests', 'screenshot.png'), os.path.join(self.get_dir(), 'screenshot.png')) self.reftest(path_from_root('tests', 'screenshot-fog-linear.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_linear.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png']).communicate() + Popen([PYTHON, EMCC, path_from_root('tests', 'sdl_fog_linear.c'), '-o', 'something.html', '--pre-js', 'reftest.js', '--preload-file', 'screenshot.png', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see an image with fog.', '/report_result?0') def test_worker(self): @@ -10528,19 +10528,19 @@ def do_GET(s): def test_glgears(self): self.reftest(path_from_root('tests', 'gears.png')) Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_gles.c'), '-o', 'something.html', - '-DHAVE_BUILTIN_SINCOS', '--pre-js', 'reftest.js']).communicate() + '-DHAVE_BUILTIN_SINCOS', '--pre-js', 'reftest.js', '-s', 'GL_TESTING=1']).communicate() self.run_browser('something.html', 'You should see animating gears.', '/report_result?0') def test_glgears_animation(self): Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_gles.c'), '-o', 'something.html', - '-DHAVE_BUILTIN_SINCOS', + '-DHAVE_BUILTIN_SINCOS', '-s', 'GL_TESTING=1', '--shell-file', path_from_root('tests', 'hello_world_gles_shell.html')]).communicate() self.run_browser('something.html', 'You should see animating gears.', '/report_gl_result?true') def test_glgears_bad(self): # Make sure that OpenGL ES is not available if typed arrays are not used Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_gles.c'), '-o', 'something.html', - '-DHAVE_BUILTIN_SINCOS', + '-DHAVE_BUILTIN_SINCOS', '-s', 'GL_TESTING=1', '-s', 'USE_TYPED_ARRAYS=0', '--shell-file', path_from_root('tests', 'hello_world_gles_shell.html')]).communicate() self.run_browser('something.html', 'You should not see animating gears.', '/report_gl_result?false') @@ -10578,7 +10578,7 @@ def book_path(*pathelems): args = ['--preload-file', 'smoke.tga', '-O2'] # test optimizations and closure here as well for more coverage self.reftest(book_path(basename.replace('.bc', '.png'))) - Popen([PYTHON, EMCC, program, '-o', 'program.html', '--pre-js', 'reftest.js'] + args).communicate() + Popen([PYTHON, EMCC, program, '-o', 'program.html', '--pre-js', 'reftest.js', '-s', 'GL_TESTING=1'] + args).communicate() self.run_browser('program.html', '', '/report_result?0') def btest(self, filename, expected=None, reference=None, reference_slack=0, args=[]): # TODO: use in all other tests @@ -10593,7 +10593,7 @@ def btest(self, filename, expected=None, reference=None, reference_slack=0, args expected = [str(i) for i in range(0, reference_slack+1)] shutil.copyfile(path_from_root('tests', filename), os.path.join(self.get_dir(), filename)) self.reftest(path_from_root('tests', reference)) - args = args + ['--pre-js', 'reftest.js'] + args = args + ['--pre-js', 'reftest.js', '-s', 'GL_TESTING=1'] Popen([PYTHON, EMCC, os.path.join(self.get_dir(), filename), '-o', 'test.html'] + args).communicate() if type(expected) is str: expected = [expected] self.run_browser('test.html', '.', ['/report_result?' + e for e in expected]) From 9d4ef477a511ae4136c2d63e0150a4768cbd53ea Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 19:11:53 -0500 Subject: [PATCH 172/326] fix more gl tests --- tests/glbook/CH13_ParticleSystem.png | Bin 5106 -> 4921 bytes tests/runner.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/glbook/CH13_ParticleSystem.png b/tests/glbook/CH13_ParticleSystem.png index ff9c349694e67bf8a6a5ec3252457f8c80bcc838..4b69414f22ca11a6e63de65a1b250d20fcff0850 100644 GIT binary patch delta 3928 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 diff --git a/tests/runner.py b/tests/runner.py index b5e205f83f838..96a2dabd8c5db 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10547,7 +10547,7 @@ def test_glgears_bad(self): def test_glgears_deriv(self): self.reftest(path_from_root('tests', 'gears.png')) - Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_gles_deriv.c'), '-o', 'something.html', + Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_gles_deriv.c'), '-o', 'something.html', '-s', 'GL_TESTING=1', '-DHAVE_BUILTIN_SINCOS', '--pre-js', 'reftest.js']).communicate() self.run_browser('something.html', 'You should see animating gears.', '/report_result?0') src = open('something.html').read() From 5c686b0bdb9a0d858cd0765a48a21589caab5fd4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 19:24:42 -0500 Subject: [PATCH 173/326] space in AUTHORS --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index c157c4688b916..3a7ceb3292305 100644 --- a/AUTHORS +++ b/AUTHORS @@ -50,3 +50,4 @@ a license to everyone to use it as detailed in LICENSE.) * Bruce Mitchener, Jr. * Michael Bishop * Roger Braun + From f6a2a7b8936a4054ac781af6eeb4e9dd5466a775 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 25 Feb 2013 22:33:13 -0500 Subject: [PATCH 174/326] adjust chunk sizes to better handle large numbers of cores and large amounts of forwarded data --- emscripten.py | 6 +++--- tests/runner.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/emscripten.py b/emscripten.py index b3e153c1d95ea..bf049ee5fa6ad 100755 --- a/emscripten.py +++ b/emscripten.py @@ -43,7 +43,7 @@ def scan(ll, settings): if len(blockaddrs) > 0: settings['NECESSARY_BLOCKADDRS'] = blockaddrs -NUM_CHUNKS_PER_CORE = 5 +NUM_CHUNKS_PER_CORE = 2 MIN_CHUNK_SIZE = 1024*1024 MAX_CHUNK_SIZE = float(os.environ.get('EMSCRIPT_MAX_CHUNK_SIZE') or 'inf') # configuring this is just for debugging purposes @@ -163,9 +163,9 @@ def save_settings(): cores = multiprocessing.cpu_count() assert cores >= 1 if cores > 1: - intended_num_chunks = cores * NUM_CHUNKS_PER_CORE + intended_num_chunks = int(cores * NUM_CHUNKS_PER_CORE) chunk_size = max(MIN_CHUNK_SIZE, total_ll_size / intended_num_chunks) - chunk_size += 3*len(meta) # keep ratio of lots of function code to meta (expensive to process, and done in each parallel task) + chunk_size += 3*len(meta) + len(forwarded_data)/3 # keep ratio of lots of function code to meta (expensive to process, and done in each parallel task) and forwarded data (less expensive but potentially significant) chunk_size = min(MAX_CHUNK_SIZE, chunk_size) else: chunk_size = MAX_CHUNK_SIZE # if 1 core, just use the max chunk size diff --git a/tests/runner.py b/tests/runner.py index 96a2dabd8c5db..f4bb327e29477 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -9446,8 +9446,8 @@ def test_chunking(self): try: os.environ['EMCC_DEBUG'] = '1' for asm, linkable, chunks, js_chunks in [ - (0, 0, 3, 2), (0, 1, 7, 4), - (1, 0, 3, 2), (1, 1, 7, 5) + (0, 0, 2, 2), (0, 1, 5, 4), + (1, 0, 2, 2), (1, 1, 5, 5) ]: print asm, linkable, chunks, js_chunks output, err = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_libcxx.cpp'), '-O1', '-s', 'LINKABLE=%d' % linkable, '-s', 'ASM_JS=%d' % asm], stdout=PIPE, stderr=PIPE).communicate() From bfeffef97b3fc1f6bec6b8690981831cf1230408 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 10:16:15 -0500 Subject: [PATCH 175/326] adjust chunking sizes --- emscripten.py | 4 ++-- tools/js_optimizer.py | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/emscripten.py b/emscripten.py index bf049ee5fa6ad..e64e11e704aa1 100755 --- a/emscripten.py +++ b/emscripten.py @@ -43,7 +43,7 @@ def scan(ll, settings): if len(blockaddrs) > 0: settings['NECESSARY_BLOCKADDRS'] = blockaddrs -NUM_CHUNKS_PER_CORE = 2 +NUM_CHUNKS_PER_CORE = 1.25 MIN_CHUNK_SIZE = 1024*1024 MAX_CHUNK_SIZE = float(os.environ.get('EMSCRIPT_MAX_CHUNK_SIZE') or 'inf') # configuring this is just for debugging purposes @@ -163,7 +163,7 @@ def save_settings(): cores = multiprocessing.cpu_count() assert cores >= 1 if cores > 1: - intended_num_chunks = int(cores * NUM_CHUNKS_PER_CORE) + intended_num_chunks = int(round(cores * NUM_CHUNKS_PER_CORE)) chunk_size = max(MIN_CHUNK_SIZE, total_ll_size / intended_num_chunks) chunk_size += 3*len(meta) + len(forwarded_data)/3 # keep ratio of lots of function code to meta (expensive to process, and done in each parallel task) and forwarded data (less expensive but potentially significant) chunk_size = min(MAX_CHUNK_SIZE, chunk_size) diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index cbf64486269b2..32481bf212a92 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -10,7 +10,9 @@ def path_from_root(*pathelems): JS_OPTIMIZER = path_from_root('tools', 'js-optimizer.js') -BEST_JS_PROCESS_SIZE = 1024*1024 +NUM_CHUNKS_PER_CORE = 1.25 +MIN_CHUNK_SIZE = 1024*1024 +MAX_CHUNK_SIZE = 20*1024*1024 WINDOWS = sys.platform.startswith('win') @@ -98,7 +100,11 @@ def run_on_js(filename, passes, js_engine, jcache): total_size = len(js) js = None - chunks = shared.JCache.chunkify(funcs, BEST_JS_PROCESS_SIZE, 'jsopt' if jcache else None) + cores = multiprocessing.cpu_count() + intended_num_chunks = int(round(cores * NUM_CHUNKS_PER_CORE)) + chunk_size = min(MAX_CHUNK_SIZE, max(MIN_CHUNK_SIZE, total_size / intended_num_chunks)) + + chunks = shared.JCache.chunkify(funcs, chunk_size, 'jsopt' if jcache else None) if jcache: # load chunks from cache where we can # TODO: ignore small chunks @@ -137,12 +143,12 @@ def write_chunk(chunk, i): cores = min(multiprocessing.cpu_count(), filenames) if len(chunks) > 1 and cores >= 2: # We can parallelize - if DEBUG: print >> sys.stderr, 'splitting up js optimization into %d chunks, using %d cores (total: %.2f MB)' % (len(chunks), cores, total_size/(1024*1024.)) + if DEBUG: print >> sys.stderr, 'splitting up js optimization into %d chunks of size %d, using %d cores (total: %.2f MB)' % (len(chunks), chunk_size, cores, total_size/(1024*1024.)) pool = multiprocessing.Pool(processes=cores) filenames = pool.map(run_on_chunk, commands, chunksize=1) else: # We can't parallize, but still break into chunks to avoid uglify/node memory issues - if len(chunks) > 1 and DEBUG: print >> sys.stderr, 'splitting up js optimization into %d chunks' % (len(chunks)) + if len(chunks) > 1 and DEBUG: print >> sys.stderr, 'splitting up js optimization into %d chunks of size %d' % (len(chunks), chunk_size) filenames = [run_on_chunk(command) for command in commands] else: filenames = [] From b6d5fcb24d9d86d83872945be2e2888ab210f620 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 10:24:29 -0500 Subject: [PATCH 176/326] adjust cache sizes a little more and update tests --- tests/runner.py | 4 ++-- tools/js_optimizer.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index f4bb327e29477..0368720d97778 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -9446,8 +9446,8 @@ def test_chunking(self): try: os.environ['EMCC_DEBUG'] = '1' for asm, linkable, chunks, js_chunks in [ - (0, 0, 2, 2), (0, 1, 5, 4), - (1, 0, 2, 2), (1, 1, 5, 5) + (0, 0, 2, 2), (0, 1, 4, 4), + (1, 0, 2, 2), (1, 1, 4, 5) ]: print asm, linkable, chunks, js_chunks output, err = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_libcxx.cpp'), '-O1', '-s', 'LINKABLE=%d' % linkable, '-s', 'ASM_JS=%d' % asm], stdout=PIPE, stderr=PIPE).communicate() diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 32481bf212a92..93b9a5107a012 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -10,7 +10,7 @@ def path_from_root(*pathelems): JS_OPTIMIZER = path_from_root('tools', 'js-optimizer.js') -NUM_CHUNKS_PER_CORE = 1.25 +NUM_CHUNKS_PER_CORE = 1.5 MIN_CHUNK_SIZE = 1024*1024 MAX_CHUNK_SIZE = 20*1024*1024 From 8daf03f3d85998b96188ad58d5fc1c9a186a6a22 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 12:11:24 -0500 Subject: [PATCH 177/326] more jcache logging in debug mode --- tools/shared.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index ce9001fbb5fd9..869ac1b61832c 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1262,9 +1262,11 @@ def chunkify(funcs, chunk_size, chunking_file): if os.path.exists(chunking_file): try: previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in - #if DEBUG: print >> sys.stderr, 'jscache previous mapping', previous_mapping - except: - pass + if DEBUG: print >> sys.stderr, 'jscache previous mapping of size %d loaded from %s' % (len(previous_mapping), chunking_file) + except Exception, e: + print >> sys.stderr, 'Failed to load and unpickle previous chunking file at %s: ' % chunking_file, e + else: + print >> sys.stderr, 'Previous chunking file not found at %s' % chunking_file chunks = [] if previous_mapping: # initialize with previous chunking @@ -1327,6 +1329,7 @@ def chunkify(funcs, chunk_size, chunking_file): assert ident not in new_mapping, 'cannot have duplicate names in jcache chunking' new_mapping[ident] = i cPickle.Pickler(open(chunking_file, 'wb')).dump(new_mapping) + if DEBUG: print >> sys.stderr, 'jscache mapping of size %d saved to %s' % (len(new_mapping), chunking_file) #if DEBUG: # for i in range(len(chunks)): # chunk = chunks[i] From 46c294f9983307ed35db019e11b16e00271a97bb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 12:28:20 -0500 Subject: [PATCH 178/326] only check # of cores once in js optimizer --- tools/js_optimizer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 93b9a5107a012..753e9db8be8fd 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -140,7 +140,7 @@ def write_chunk(chunk, i): commands = map(lambda filename: [js_engine, JS_OPTIMIZER, filename, 'noPrintMetadata'] + passes, filenames) #print [' '.join(command) for command in commands] - cores = min(multiprocessing.cpu_count(), filenames) + cores = min(cores, filenames) if len(chunks) > 1 and cores >= 2: # We can parallelize if DEBUG: print >> sys.stderr, 'splitting up js optimization into %d chunks of size %d, using %d cores (total: %.2f MB)' % (len(chunks), chunk_size, cores, total_size/(1024*1024.)) From 54f71a8237cba633dba6bd12bd5167987a814792 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 12:36:51 -0500 Subject: [PATCH 179/326] allow adjusting # of cpu cores to use with EMCC_CORES --- emscripten.py | 2 +- tools/js_optimizer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/emscripten.py b/emscripten.py index e64e11e704aa1..fd9c8ba256a7f 100755 --- a/emscripten.py +++ b/emscripten.py @@ -160,7 +160,7 @@ def save_settings(): # Phase 2 - func - cores = multiprocessing.cpu_count() + cores = int(os.environ.get('EMCC_CORES') or multiprocessing.cpu_count()) assert cores >= 1 if cores > 1: intended_num_chunks = int(round(cores * NUM_CHUNKS_PER_CORE)) diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 753e9db8be8fd..69a5bb2b11587 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -100,7 +100,7 @@ def run_on_js(filename, passes, js_engine, jcache): total_size = len(js) js = None - cores = multiprocessing.cpu_count() + cores = int(os.environ.get('EMCC_CORES') or multiprocessing.cpu_count()) intended_num_chunks = int(round(cores * NUM_CHUNKS_PER_CORE)) chunk_size = min(MAX_CHUNK_SIZE, max(MIN_CHUNK_SIZE, total_size / intended_num_chunks)) From 556bb55f1b79f5b1420d5cf6d124631aea247a43 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 13:51:42 -0500 Subject: [PATCH 180/326] save last cache clear time --- tools/shared.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/shared.py b/tools/shared.py index 869ac1b61832c..1f1016cd7363c 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1174,6 +1174,10 @@ def erase(): except: pass try_delete(RELOOPER) + try: + open(Cache.dirname + '__last_clear', 'w').write('last clear: ' + time.asctime() + '\n') + except: + print >> sys.stderr, 'failed to save last clear time' # Request a cached file. If it isn't in the cache, it will be created with # the given creator function From 108f6550f37ed10bef300c93f6158029471f7921 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 15:16:35 -0500 Subject: [PATCH 181/326] do not emit EMSCRIPTEN_GENERATED_FUNCTIONS to the final output, it is just needed internally --- src/jsifier.js | 8 +++++--- src/settings.js | 2 ++ tests/runner.py | 2 ++ tools/js_optimizer.py | 2 ++ tools/shared.py | 1 + 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/jsifier.js b/src/jsifier.js index 4af522b473809..fe8aebe4274ea 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1567,9 +1567,11 @@ function JSify(data, functionsOnly, givenFunctions) { var shellParts = read(shellFile).split('{{BODY}}'); print(shellParts[1]); // Print out some useful metadata (for additional optimizations later, like the eliminator) - print('// EMSCRIPTEN_GENERATED_FUNCTIONS: ' + JSON.stringify(keys(Functions.implementedFunctions).filter(function(func) { - return IGNORED_FUNCTIONS.indexOf(func.ident) < 0; - })) + '\n'); + if (EMIT_GENERATED_FUNCTIONS) { + print('// EMSCRIPTEN_GENERATED_FUNCTIONS: ' + JSON.stringify(keys(Functions.implementedFunctions).filter(function(func) { + return IGNORED_FUNCTIONS.indexOf(func.ident) < 0; + })) + '\n'); + } PassManager.serialize(); diff --git a/src/settings.js b/src/settings.js index 7caa5b9205bdc..21b6abcf0d2d2 100644 --- a/src/settings.js +++ b/src/settings.js @@ -327,6 +327,8 @@ var EXPLICIT_ZEXT = 0; // If 1, generate an explicit conversion of zext i1 to i3 var NECESSARY_BLOCKADDRS = []; // List of (function, block) for all block addresses that are taken. +var EMIT_GENERATED_FUNCTIONS = 0; // whether to emit the list of generated functions, needed for external JS optimization passes + // Compiler debugging options var DEBUG_TAGS_SHOWING = []; // Some useful items: diff --git a/tests/runner.py b/tests/runner.py index 0368720d97778..aae4c460a895a 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -507,6 +507,8 @@ def test_hello_world(self): ''' self.do_run(src, 'hello, world!') + assert 'EMSCRIPTEN_GENERATED_FUNCTIONS' not in open(self.in_dir('src.cpp.o.js')).read(), 'must not emit this unneeded internal thing' + def test_intvars(self): if self.emcc_args == None: return self.skip('needs ta2') diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 69a5bb2b11587..52cae6e51bded 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -76,6 +76,8 @@ def run_on_js(filename, passes, js_engine, jcache): assert gen_end > gen_start pre = js[:gen_start] post = js[gen_end:] + if 'last' in passes: + post = post.replace(suffix, '') # no need to write out the metadata - nothing after us needs it js = js[gen_start:gen_end] else: pre = '' diff --git a/tools/shared.py b/tools/shared.py index 1f1016cd7363c..d587a071c2ebe 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -563,6 +563,7 @@ def apply_opt_level(self, opt_level, noisy=False): if opt_level >= 1: Settings.ASSERTIONS = 0 Settings.DISABLE_EXCEPTION_CATCHING = 1 + Settings.EMIT_GENERATED_FUNCTIONS = 1 if opt_level >= 2: Settings.RELOOP = 1 if opt_level >= 3: From f3cc2377985a3a4b6de0ef36213f68df1db125e7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 15:29:59 -0500 Subject: [PATCH 182/326] add some newlines in very large function tables, to avoid emitting ridiculously long lines --- emscripten.py | 2 +- src/modules.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/emscripten.py b/emscripten.py index fd9c8ba256a7f..b766cfb4de533 100755 --- a/emscripten.py +++ b/emscripten.py @@ -317,7 +317,7 @@ def make_table(sig, raw): params = ','.join(['p%d' % p for p in range(len(sig)-1)]) coercions = ';'.join(['p%d = %sp%d%s' % (p, '+' if sig[p+1] != 'i' else '', p, '' if sig[p+1] != 'i' else '|0') for p in range(len(sig)-1)]) + ';' ret = '' if sig[0] == 'v' else ('return %s0' % ('+' if sig[0] != 'i' else '')) - return ('function %s(%s) { %s abort(%d); %s };' % (bad, params, coercions, i, ret), raw.replace('[0,', '[' + bad + ',').replace(',0,', ',' + bad + ',').replace(',0,', ',' + bad + ',').replace(',0]', ',' + bad + ']').replace(',0]', ',' + bad + ']')) + return ('function %s(%s) { %s abort(%d); %s };' % (bad, params, coercions, i, ret), raw.replace('[0,', '[' + bad + ',').replace(',0,', ',' + bad + ',').replace(',0,', ',' + bad + ',').replace(',0]', ',' + bad + ']').replace(',0]', ',' + bad + ']').replace(',0\n', ',' + bad + '\n')) infos = [make_table(sig, raw) for sig, raw in last_forwarded_json['Functions']['tables'].iteritems()] function_tables_defs = '\n'.join([info[0] for info in infos] + [info[1] for info in infos]) diff --git a/src/modules.js b/src/modules.js index 695abbe76e132..f3c14cd13cd2a 100644 --- a/src/modules.js +++ b/src/modules.js @@ -330,6 +330,15 @@ var Functions = { } } } + if (table.length > 20) { + // add some newlines in the table, for readability + table = table.slice(0); + var j = 10; + while (j+10 < table.length) { + table[j] += '\n'; + j += 10; + } + } var indices = table.toString().replace('"', ''); if (BUILD_AS_SHARED_LIB) { // Shared libraries reuse the parent's function table. From a953e386a95082f1a7e00f88b4bbc5b91ba0cc4f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 15:35:42 -0500 Subject: [PATCH 183/326] split chunked global initializations over several lines --- src/parseTools.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parseTools.js b/src/parseTools.js index 357d33a160cc7..6e0d6e32c7ac7 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1548,7 +1548,7 @@ function makePointer(slab, pos, allocator, type, ptr) { var ret = ''; var index = 0; while (index < array.length) { - ret = (ret ? ret + '.concat(' : '') + '[' + array.slice(index, index + chunkSize).map(JSON.stringify) + ']' + (ret ? ')' : ''); + ret = (ret ? ret + '.concat(' : '') + '[' + array.slice(index, index + chunkSize).map(JSON.stringify) + ']' + (ret ? ')\n' : ''); index += chunkSize; } return ret; From b59434fe72cbbf035c1dcbc52bd0eb012c6228e4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 15:48:15 -0500 Subject: [PATCH 184/326] do not emit undefined symbol warnings for symbols that only have an inline version (like llvm_va_start) --- src/jsifier.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jsifier.js b/src/jsifier.js index fe8aebe4274ea..5f327076f031f 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -505,7 +505,7 @@ function JSify(data, functionsOnly, givenFunctions) { item.JS = ''; } else if (LibraryManager.library.hasOwnProperty(shortident)) { item.JS = addFromLibrary(shortident); - } else { + } else if (!LibraryManager.library.hasOwnProperty(shortident + '__inline')) { item.JS = 'var ' + item.ident + '; // stub for ' + item.ident; if (WARN_ON_UNDEFINED_SYMBOLS || ASM_JS) { // always warn on undefs in asm, since it breaks validation warn('Unresolved symbol: ' + item.ident); From b2c8d8dede8aeab37b53f6c8d923865db13fc7ec Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 16:22:22 -0500 Subject: [PATCH 185/326] sort settings keys, to ensure the same order for debugging and jcache comparisons --- emscripten.py | 2 +- tools/shared.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/emscripten.py b/emscripten.py index b766cfb4de533..dc5d5f5babd70 100755 --- a/emscripten.py +++ b/emscripten.py @@ -131,7 +131,7 @@ def emscript(infile, settings, outfile, libraries=[]): settings_file = temp_files.get('.txt').name def save_settings(): global settings_text - settings_text = json.dumps(settings) + settings_text = json.dumps(settings, sort_keys=True) s = open(settings_file, 'w') s.write(settings_text) s.close() diff --git a/tools/shared.py b/tools/shared.py index d587a071c2ebe..b0fe45d89bf01 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -554,7 +554,7 @@ def serialize(self): ret = [] for key, value in Settings.__dict__.iteritems(): if key == key.upper(): # this is a hack. all of our settings are ALL_CAPS, python internals are not - jsoned = json.dumps(value) + jsoned = json.dumps(value, sort_keys=True) ret += ['-s', key + '=' + jsoned] return ret From 0e51f92d800dac9e697a8488c36b62e23bdb0d76 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 17:01:34 -0500 Subject: [PATCH 186/326] make DEBUG an int --- tools/shared.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/shared.py b/tools/shared.py index b0fe45d89bf01..c8c096177296c 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -294,7 +294,7 @@ def build_llvm_tool_path(tool): CANONICAL_TEMP_DIR = os.path.join(TEMP_DIR, 'emscripten_temp') EMSCRIPTEN_TEMP_DIR = None -DEBUG = os.environ.get('EMCC_DEBUG') +DEBUG = int(os.environ.get('EMCC_DEBUG') or 0) if DEBUG: try: EMSCRIPTEN_TEMP_DIR = CANONICAL_TEMP_DIR From 2f5e6f993e1b1a446331520b4dc2d5b19d597371 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 17:05:07 -0500 Subject: [PATCH 187/326] SAFE_DYNCALLS option --- src/jsifier.js | 2 ++ src/modules.js | 9 ++++++++- src/settings.js | 2 ++ tests/runner.py | 31 +++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/jsifier.js b/src/jsifier.js index 5f327076f031f..ff43c8c6e5f3a 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1401,6 +1401,8 @@ function JSify(data, functionsOnly, givenFunctions) { if (ASM_JS) { assert(returnType.search(/\("'\[,/) == -1); // XXX need isFunctionType(type, out) callIdent = '(' + callIdent + ')&{{{ FTM_' + sig + ' }}}'; // the function table mask is set in emscripten.py + } else if (SAFE_DYNCALLS) { + callIdent = '(tempInt=' + callIdent + ',tempInt < 0 || tempInt >= FUNCTION_TABLE.length-1 ? abort("dyncall error") : tempInt)'; } callIdent = Functions.getTable(sig) + '[' + callIdent + ']'; } diff --git a/src/modules.js b/src/modules.js index f3c14cd13cd2a..7f8a959bd11e6 100644 --- a/src/modules.js +++ b/src/modules.js @@ -330,9 +330,16 @@ var Functions = { } } } + if (SAFE_DYNCALLS) { + assert(!ASM_JS, 'cannot emit safe dyncalls in asm'); + for (var j = 0; j < table.length; j++) { + if (table[j] == 0) { + table[j] = "function() { abort('dyncall error') }"; + } + } + } if (table.length > 20) { // add some newlines in the table, for readability - table = table.slice(0); var j = 10; while (j+10 < table.length) { table[j] += '\n'; diff --git a/src/settings.js b/src/settings.js index 21b6abcf0d2d2..308afddc0c243 100644 --- a/src/settings.js +++ b/src/settings.js @@ -128,6 +128,8 @@ var SAFE_HEAP = 0; // Check each write to the heap, for example, this will give // that 3 is the option you usually want here. var SAFE_HEAP_LOG = 0; // Log out all SAFE_HEAP operations +var SAFE_DYNCALLS = 0; // Show stack traces on missing function pointer/virtual method calls + var ASM_HEAP_LOG = 0; // Simple heap logging, like SAFE_HEAP_LOG but cheaper, and in asm.js var CORRUPTION_CHECK = 0; // When enabled, will emit a buffer area at the beginning and diff --git a/tests/runner.py b/tests/runner.py index aae4c460a895a..4c41c72e22e18 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2806,6 +2806,37 @@ def test_segfault(self): ''' % addr self.do_run(src, 'segmentation fault' if addr.isdigit() else 'marfoosh') + def test_safe_dyncalls(self): + if Settings.ASM_JS: return self.skip('asm does not support missing function stack traces') + if Settings.SAFE_HEAP: return self.skip('safe heap warning will appear instead') + if self.emcc_args is None: return self.skip('need libc') + + Settings.SAFE_DYNCALLS = 1 + + for cond, body, work in [(True, True, False), (True, False, False), (False, True, True), (False, False, False)]: + print cond, body, work + src = r''' + #include + + struct Classey { + virtual void doIt() = 0; + }; + + struct D1 : Classey { + virtual void doIt() BODY; + }; + + int main(int argc, char **argv) + { + Classey *p = argc COND 100 ? new D1() : NULL; + printf("%p\n", p); + p->doIt(); + + return 0; + } + '''.replace('COND', '==' if cond else '!=').replace('BODY', r'{ printf("all good\n"); }' if body else '') + self.do_run(src, 'dyncall error' if not work else 'all good') + def test_dynamic_cast(self): if self.emcc_args is None: return self.skip('need libcxxabi') From b2496c286d3ea0a5d5365f10bc1ebc67f66e5cc3 Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Tue, 26 Feb 2013 17:34:22 -0500 Subject: [PATCH 188/326] Add basic response file parsing to emcc --- emcc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/emcc b/emcc index 2f4bad2b836f9..15742d1a7d021 100755 --- a/emcc +++ b/emcc @@ -1,4 +1,5 @@ #!/usr/bin/env python2 +# -*- Mode: python -*- ''' emcc - compiler helper script @@ -118,6 +119,27 @@ if len(sys.argv) == 1: print 'emcc: no input files' exit(1) +# read response files very early on +response_file = True +while response_file: + response_file = None + for index in range(1, len(sys.argv)): + if sys.argv[index][0] == '@': + # found one, loop again next time + response_file = sys.argv[index][1:] + if not os.path.exists(response_file): + print >>sys.stderr, 'emcc: error: Response file not found: %s' % response_file + exit(1) + + response_fd = open(response_file, 'r') + extra_args = shlex.split(response_fd.read()) + response_fd.close() + + # slice in extra_args in place of the response file arg + sys.argv[index:index+1] = extra_args + #if DEBUG: print >>sys.stderr, "Expanded response file: " + " | ".join(sys.argv) + break + if sys.argv[1] == '--version': revision = '(unknown revision)' here = os.getcwd() From f1f101ee44d7ddcee996594c2f9a265ca3a43036 Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Tue, 26 Feb 2013 18:43:00 -0500 Subject: [PATCH 189/326] Generate response file for llvm-link --- tools/shared.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/shared.py b/tools/shared.py index c8c096177296c..6cd2840194a3e 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -812,7 +812,25 @@ def link(files, target): # Finish link actual_files = unique_ordered(actual_files) # tolerate people trying to link a.so a.so etc. if DEBUG: print >>sys.stderr, 'emcc: llvm-linking:', actual_files - output = Popen([LLVM_LINK] + actual_files + ['-o', target], stdout=PIPE).communicate()[0] + + # check for too-long command line + linkcmd = [LLVM_LINK] + actual_files + ['-o', target] + # 8k is a bit of an arbitrary limit, but a reasonable one + # for max command line size before we use a respose file + responseFile = None + if len(" ".join(linkcmd)) > 8192: + [responseFD, responseFile] = mkstemp(suffix='.response', dir=TEMP_DIR) + responseFH = os.fdopen(responseFD, 'w') + for arg in actual_files: + responseFH.write(arg + "\n") + responseFH.close() + linkcmd = [LLVM_LINK, "@" + responseFile, '-o', target] + + output = Popen(linkcmd, stdout=PIPE).communicate()[0] + + if responseFile: + os.unlink(responseFile) + assert os.path.exists(target) and (output is None or 'Could not open input file' not in output), 'Linking error: ' + output for temp_dir in temp_dirs: try_delete(temp_dir) From 7c8e4eb469dac56b6bc3bbd979ed2245e0cecfbe Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Tue, 26 Feb 2013 18:43:08 -0500 Subject: [PATCH 190/326] Add myself to AUTHORS file --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index 3a7ceb3292305..ef611d552c566 100644 --- a/AUTHORS +++ b/AUTHORS @@ -50,4 +50,5 @@ a license to everyone to use it as detailed in LICENSE.) * Bruce Mitchener, Jr. * Michael Bishop * Roger Braun +* Vladimir Vukicevic (copyright owned by Mozilla Foundation) From df7d3ce735c3c1f62e95454c6e3b9d4026c3c02e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 19:13:09 -0500 Subject: [PATCH 191/326] clean up response file code --- emcc | 1 + tools/shared.py | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/emcc b/emcc index 15742d1a7d021..03b18242b1e4b 100755 --- a/emcc +++ b/emcc @@ -126,6 +126,7 @@ while response_file: for index in range(1, len(sys.argv)): if sys.argv[index][0] == '@': # found one, loop again next time + print >>sys.stderr, 'emcc: using response file: %s' % response_file response_file = sys.argv[index][1:] if not os.path.exists(response_file): print >>sys.stderr, 'emcc: error: Response file not found: %s' % response_file diff --git a/tools/shared.py b/tools/shared.py index 6cd2840194a3e..1d189cc6dfb90 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -814,22 +814,23 @@ def link(files, target): if DEBUG: print >>sys.stderr, 'emcc: llvm-linking:', actual_files # check for too-long command line - linkcmd = [LLVM_LINK] + actual_files + ['-o', target] + link_cmd = [LLVM_LINK] + actual_files + ['-o', target] # 8k is a bit of an arbitrary limit, but a reasonable one # for max command line size before we use a respose file - responseFile = None - if len(" ".join(linkcmd)) > 8192: - [responseFD, responseFile] = mkstemp(suffix='.response', dir=TEMP_DIR) - responseFH = os.fdopen(responseFD, 'w') + response_file = None + if len(' '.join(link_cmd)) > 8192: + if DEBUG: print >>sys.stderr, 'using response file for llvm-link' + [response_fd, response_file] = mkstemp(suffix='.response', dir=TEMP_DIR) + response_fh = os.fdopen(response_fd, 'w') for arg in actual_files: - responseFH.write(arg + "\n") - responseFH.close() - linkcmd = [LLVM_LINK, "@" + responseFile, '-o', target] + response_fh.write(arg + "\n") + response_fh.close() + link_cmd = [LLVM_LINK, "@" + response_file, '-o', target] - output = Popen(linkcmd, stdout=PIPE).communicate()[0] + output = Popen(link_cmd, stdout=PIPE).communicate()[0] - if responseFile: - os.unlink(responseFile) + if response_file: + os.unlink(response_file) assert os.path.exists(target) and (output is None or 'Could not open input file' not in output), 'Linking error: ' + output for temp_dir in temp_dirs: From 4113375f1f0f6d3a807c1edd843e96596ee6e2c5 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 19:25:46 -0500 Subject: [PATCH 192/326] testing for glGetBooleanv --- tests/cubegeom.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/cubegeom.c b/tests/cubegeom.c index 6158b124319c5..787b8373262db 100644 --- a/tests/cubegeom.c +++ b/tests/cubegeom.c @@ -45,6 +45,8 @@ void verify() { int main(int argc, char *argv[]) { + int temp; // testing + SDL_Surface *screen; if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { printf("Unable to initialize SDL: %s\n", SDL_GetError()); @@ -124,7 +126,9 @@ int main(int argc, char *argv[]) glActiveTexture(GL_TEXTURE0); + glGetBooleanv(GL_VERTEX_ARRAY, &temp); assert(!temp); glEnableClientState(GL_VERTEX_ARRAY); + glGetBooleanv(GL_VERTEX_ARRAY, &temp); assert(temp); GLuint arrayBuffer, elementBuffer; glGenBuffers(1, &arrayBuffer); @@ -207,7 +211,6 @@ int main(int argc, char *argv[]) glNormalPointer(GL_BYTE, 32, (void*)12); glColorPointer(4, GL_UNSIGNED_BYTE, 32, (void*)28); - int temp; // test glGetPointerv, glGetIntegerv glGetPointerv(GL_VERTEX_ARRAY_POINTER, &temp); assert(temp == 0); glGetPointerv(GL_COLOR_ARRAY_POINTER, &temp); assert(temp == 28); glGetPointerv(GL_TEXTURE_COORD_ARRAY_POINTER, &temp); assert(temp == 16); @@ -220,6 +223,7 @@ int main(int argc, char *argv[]) glGetIntegerv(GL_TEXTURE_COORD_ARRAY_SIZE, &temp); assert(temp == 2); glGetIntegerv(GL_TEXTURE_COORD_ARRAY_TYPE, &temp); assert(temp == GL_FLOAT); glGetIntegerv(GL_TEXTURE_COORD_ARRAY_STRIDE, &temp); assert(temp == 32); + glGetBooleanv(GL_VERTEX_ARRAY, &temp); assert(temp); glBindTexture(GL_TEXTURE_2D, texture); // diffuse? glActiveTexture(GL_TEXTURE0); From bafdc889fcfcab5715e8dae5d26c3d5ff3160498 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 19:35:11 -0500 Subject: [PATCH 193/326] show signature in dyncall errors, and simplify approach --- src/jsifier.js | 3 ++- src/modules.js | 8 -------- tests/runner.py | 2 +- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/jsifier.js b/src/jsifier.js index ff43c8c6e5f3a..0e82a5470f807 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1402,7 +1402,8 @@ function JSify(data, functionsOnly, givenFunctions) { assert(returnType.search(/\("'\[,/) == -1); // XXX need isFunctionType(type, out) callIdent = '(' + callIdent + ')&{{{ FTM_' + sig + ' }}}'; // the function table mask is set in emscripten.py } else if (SAFE_DYNCALLS) { - callIdent = '(tempInt=' + callIdent + ',tempInt < 0 || tempInt >= FUNCTION_TABLE.length-1 ? abort("dyncall error") : tempInt)'; + assert(!ASM_JS, 'cannot emit safe dyncalls in asm'); + callIdent = '(tempInt=' + callIdent + ',tempInt < 0 || tempInt >= FUNCTION_TABLE.length-1 || !FUNCTION_TABLE[tempInt] ? abort("dyncall error: ' + sig + '") : tempInt)'; } callIdent = Functions.getTable(sig) + '[' + callIdent + ']'; } diff --git a/src/modules.js b/src/modules.js index 7f8a959bd11e6..501ff22e4145e 100644 --- a/src/modules.js +++ b/src/modules.js @@ -330,14 +330,6 @@ var Functions = { } } } - if (SAFE_DYNCALLS) { - assert(!ASM_JS, 'cannot emit safe dyncalls in asm'); - for (var j = 0; j < table.length; j++) { - if (table[j] == 0) { - table[j] = "function() { abort('dyncall error') }"; - } - } - } if (table.length > 20) { // add some newlines in the table, for readability var j = 10; diff --git a/tests/runner.py b/tests/runner.py index d4ec2501c8496..9cf40543ce4d1 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2835,7 +2835,7 @@ def test_safe_dyncalls(self): return 0; } '''.replace('COND', '==' if cond else '!=').replace('BODY', r'{ printf("all good\n"); }' if body else '') - self.do_run(src, 'dyncall error' if not work else 'all good') + self.do_run(src, 'dyncall error: vi' if not work else 'all good') def test_dynamic_cast(self): if self.emcc_args is None: return self.skip('need libcxxabi') From d08b1ad1ec7500fe600a075c69ec72350ec89152 Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Tue, 26 Feb 2013 19:39:14 -0500 Subject: [PATCH 194/326] add cache debugging --- emar | 2 ++ emcc | 8 +++++++- emscripten.py | 17 +++++++++++++++++ tools/shared.py | 19 ++++++++++++------- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/emar b/emar index 60498b8f24ff9..5646f444cf676 100755 --- a/emar +++ b/emar @@ -11,6 +11,8 @@ import os, subprocess, sys from tools import shared DEBUG = os.environ.get('EMCC_DEBUG') +if DEBUG == "0": + DEBUG = None newargs = [shared.LLVM_AR] + sys.argv[1:] diff --git a/emcc b/emcc index 03b18242b1e4b..a6f0c12d396ae 100755 --- a/emcc +++ b/emcc @@ -91,7 +91,10 @@ LLVM_OPT_LEVEL = { 3: 3, } -DEBUG = int(os.environ.get('EMCC_DEBUG') or 0) +DEBUG = os.environ.get('EMCC_DEBUG') +if DEBUG == "0": + DEBUG = None + TEMP_DIR = os.environ.get('EMCC_TEMP_DIR') LEAVE_INPUTS_RAW = os.environ.get('EMCC_LEAVE_INPUTS_RAW') # Do not compile .ll files into .bc, just compile them with emscripten directly # Not recommended, this is mainly for the test runner, or if you have some other @@ -1120,7 +1123,10 @@ try: (not LEAVE_INPUTS_RAW and not (suffix(temp_files[0]) in BITCODE_SUFFIXES or suffix(temp_files[0]) in DYNAMICLIB_SUFFIXES) and shared.Building.is_ar(temp_files[0])): linker_inputs = temp_files + extra_files_to_link if DEBUG: print >> sys.stderr, 'emcc: linking: ', linker_inputs + t0 = time.time() shared.Building.link(linker_inputs, in_temp(target_basename + '.bc')) + t1 = time.time() + if DEBUG: print >> sys.stderr, 'emcc: linking took %.2f seconds' % (t1 - t0) final = in_temp(target_basename + '.bc') else: if not LEAVE_INPUTS_RAW: diff --git a/emscripten.py b/emscripten.py index dc5d5f5babd70..4447833173367 100755 --- a/emscripten.py +++ b/emscripten.py @@ -21,6 +21,9 @@ from tools import shared DEBUG = os.environ.get('EMCC_DEBUG') +if DEBUG == "0": + DEBUG = None +DEBUG_CACHE = DEBUG and "cache" in DEBUG __rootpath__ = os.path.abspath(os.path.dirname(__file__)) def path_from_root(*pathelems): @@ -145,7 +148,21 @@ def save_settings(): if jcache: keys = [pre_input, settings_text, ','.join(libraries)] shortkey = shared.JCache.get_shortkey(keys) + if DEBUG_CACHE: print >>sys.stderr, 'shortkey', shortkey + out = shared.JCache.get(shortkey, keys) + + if (not out) and DEBUG_CACHE: + dfpath = os.path.join(shared.TEMP_DIR, "ems_" + shortkey) + dfp = open(dfpath, 'w') + dfp.write(pre_input); + dfp.write("\n\n========================== settings_text\n\n"); + dfp.write(settings_text); + dfp.write("\n\n========================== libraries\n\n"); + dfp.write("\n".join(libraries)) + dfp.close() + print >>sys.stderr, ' cache miss, key data dumped to %s' % dfpath + if out and DEBUG: print >> sys.stderr, ' loading pre from jcache' if not out: open(pre_file, 'w').write(pre_input) diff --git a/tools/shared.py b/tools/shared.py index 1d189cc6dfb90..6f97737eeaa04 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -294,7 +294,11 @@ def build_llvm_tool_path(tool): CANONICAL_TEMP_DIR = os.path.join(TEMP_DIR, 'emscripten_temp') EMSCRIPTEN_TEMP_DIR = None -DEBUG = int(os.environ.get('EMCC_DEBUG') or 0) +DEBUG = os.environ.get('EMCC_DEBUG') +if DEBUG == "0": + DEBUG = None +DEBUG_CACHE = DEBUG and "cache" in DEBUG + if DEBUG: try: EMSCRIPTEN_TEMP_DIR = CANONICAL_TEMP_DIR @@ -1240,29 +1244,30 @@ def get_cachename(shortkey): # Returns a cached value, if it exists. Make sure the full key matches @staticmethod def get(shortkey, keys): - #if DEBUG: print >> sys.stderr, 'jcache get?', shortkey + if DEBUG_CACHE: print >> sys.stderr, 'jcache get?', shortkey cachename = JCache.get_cachename(shortkey) if not os.path.exists(cachename): - #if DEBUG: print >> sys.stderr, 'jcache none at all' + if DEBUG_CACHE: print >> sys.stderr, 'jcache none at all' return data = cPickle.Unpickler(open(cachename, 'rb')).load() if len(data) != 2: - #if DEBUG: print >> sys.stderr, 'jcache error in get' + if DEBUG_CACHE: print >> sys.stderr, 'jcache error in get' return oldkeys = data[0] if len(oldkeys) != len(keys): - #if DEBUG: print >> sys.stderr, 'jcache collision (a)' + if DEBUG_CACHE: print >> sys.stderr, 'jcache collision (a)' return for i in range(len(oldkeys)): if oldkeys[i] != keys[i]: - #if DEBUG: print >> sys.stderr, 'jcache collision (b)' + if DEBUG_CACHE: print >> sys.stderr, 'jcache collision (b)' return - #if DEBUG: print >> sys.stderr, 'jcache win' + if DEBUG_CACHE: print >> sys.stderr, 'jcache win' return data[1] # Sets the cached value for a key (from get_key) @staticmethod def set(shortkey, keys, value): + if DEBUG_CACHE: print >> sys.stderr, 'save to cache', shortkey cachename = JCache.get_cachename(shortkey) cPickle.Pickler(open(cachename, 'wb')).dump([keys, value]) #if DEBUG: From 4e78fcaed0b84a7b5414b659d88d818d0b2f837e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 19:47:21 -0500 Subject: [PATCH 195/326] emit function table names in SAFE_DYNCALL mode --- src/jsifier.js | 2 +- src/modules.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/jsifier.js b/src/jsifier.js index 0e82a5470f807..cb2340617ac8e 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1403,7 +1403,7 @@ function JSify(data, functionsOnly, givenFunctions) { callIdent = '(' + callIdent + ')&{{{ FTM_' + sig + ' }}}'; // the function table mask is set in emscripten.py } else if (SAFE_DYNCALLS) { assert(!ASM_JS, 'cannot emit safe dyncalls in asm'); - callIdent = '(tempInt=' + callIdent + ',tempInt < 0 || tempInt >= FUNCTION_TABLE.length-1 || !FUNCTION_TABLE[tempInt] ? abort("dyncall error: ' + sig + '") : tempInt)'; + callIdent = '(tempInt=' + callIdent + ',tempInt < 0 || tempInt >= FUNCTION_TABLE.length-1 || !FUNCTION_TABLE[tempInt] ? abort("dyncall error: ' + sig + ' " + FUNCTION_TABLE_NAMES[tempInt]) : tempInt)'; } callIdent = Functions.getTable(sig) + '[' + callIdent + ']'; } diff --git a/src/modules.js b/src/modules.js index 501ff22e4145e..712d8a780f8e2 100644 --- a/src/modules.js +++ b/src/modules.js @@ -344,6 +344,9 @@ var Functions = { tables[t] = Functions.getTable(t) + '.push.apply(' + Functions.getTable(t) + ', [' + indices + ']);\n'; } else { tables[t] = 'var ' + Functions.getTable(t) + ' = [' + indices + '];\n'; + if (SAFE_DYNCALLS) { + tables[t] += 'var FUNCTION_TABLE_NAMES = ' + JSON.stringify(table).replace(/\n/g, '').replace(/,0/g, ',0\n') + ';\n'; + } } } if (!generated && !ASM_JS) { From 02b47dde8fd1ad6e39c7041ed8c0fb9adefbfcad Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 19:55:45 -0500 Subject: [PATCH 196/326] refactor gl detection of attributes from capabilities --- src/library_gl.js | 48 +++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index a20eccf695480..995f2358945d0 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1016,6 +1016,7 @@ var LibraryGL = { 0x809E: 1, // GL_SAMPLE_ALPHA_TO_COVERAGE 0x80A0: 1 // GL_SAMPLE_COVERAGE }; + _glEnable = function(cap) { // Clean up the renderer on any change to the rendering state. The optimization of // skipping renderer setup is aimed at the case of multiple glDraw* right after each other @@ -1059,17 +1060,8 @@ var LibraryGL = { var glGetBooleanv = _glGetBooleanv; _glGetBooleanv = function(pname, p) { - var attrib = null; - switch (pname) { - case 0x8078: // GL_TEXTURE_COORD_ARRAY - case 0x0de1: // GL_TEXTURE_2D - XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support it - attrib = GL.immediate.TEXTURE0 + GL.immediate.clientActiveTexture; break; - case 0x8074: // GL_VERTEX_ARRAY - attrib = GL.immediate.VERTEX; break; - case 0x8076: // GL_COLOR_ARRAY - attrib = GL.immediate.COLOR; break; - } - if (attrib != null) { + var attrib = GLEmulation.getAttributeFromCapability(pname); + if (attrib !== null) { var result = GL.immediate.enabledClientAttributes[attrib]; {{{ makeSetValue('p', '0', 'result === true ? 1 : 0', 'i8') }}}; return; @@ -1431,6 +1423,22 @@ var LibraryGL = { }; }, + getAttributeFromCapability: function(cap) { + var attrib = null; + switch (cap) { + case 0x8078: // GL_TEXTURE_COORD_ARRAY + case 0x0de1: // GL_TEXTURE_2D - XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support it + attrib = GL.immediate.TEXTURE0 + GL.immediate.clientActiveTexture; break; + case 0x8074: // GL_VERTEX_ARRAY + attrib = GL.immediate.VERTEX; break; + case 0x8075: // GL_NORMAL_ARRAY + attrib = GL.immediate.NORMAL; break; + case 0x8076: // GL_COLOR_ARRAY + attrib = GL.immediate.COLOR; break; + } + return attrib; + }, + getProcAddress: function(name) { name = name.replace('EXT', '').replace('ARB', ''); // Do the translation carefully because of closure @@ -2489,22 +2497,12 @@ var LibraryGL = { // ClientState/gl*Pointer glEnableClientState: function(cap, disable) { - var attrib; - switch(cap) { - case 0x8078: // GL_TEXTURE_COORD_ARRAY - case 0x0de1: // GL_TEXTURE_2D - XXX not according to spec, and not in desktop GL, but works in some GLES1.x apparently, so support it - attrib = GL.immediate.TEXTURE0 + GL.immediate.clientActiveTexture; break; - case 0x8074: // GL_VERTEX_ARRAY - attrib = GL.immediate.VERTEX; break; - case 0x8075: // GL_NORMAL_ARRAY - attrib = GL.immediate.NORMAL; break; - case 0x8076: // GL_COLOR_ARRAY - attrib = GL.immediate.COLOR; break; - default: + var attrib = GLEmulation.getAttributeFromCapability(cap); + if (attrib === null) { #if ASSERTIONS - Module.printErr('WARNING: unhandled clientstate: ' + cap); + Module.printErr('WARNING: unhandled clientstate: ' + cap); #endif - return; + return; } if (disable && GL.immediate.enabledClientAttributes[attrib]) { GL.immediate.enabledClientAttributes[attrib] = false; From 0917076fb09f8625e51610646d51d734643be143 Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Tue, 26 Feb 2013 20:07:59 -0500 Subject: [PATCH 197/326] handle missing pthread key-values properly --- src/library.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/library.js b/src/library.js index d0f73fddeac60..955755edab3ca 100644 --- a/src/library.js +++ b/src/library.js @@ -6743,11 +6743,12 @@ LibraryManager.library = { pthread_key_create: function(key, destructor) { if (!_pthread_key_create.keys) _pthread_key_create.keys = {}; - _pthread_key_create.keys[key] = null; + // values start at 0 + _pthread_key_create.keys[key] = 0; }, pthread_getspecific: function(key) { - return _pthread_key_create.keys[key]; + return _pthread_key_create.keys[key] || 0; }, pthread_setspecific: function(key, value) { From 722c7b69e783724a3695bb85ecf22e9ae275729b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 20:13:02 -0500 Subject: [PATCH 198/326] remove unneeded parens in python --- emscripten.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emscripten.py b/emscripten.py index 4447833173367..704e2b25c74e0 100755 --- a/emscripten.py +++ b/emscripten.py @@ -152,7 +152,7 @@ def save_settings(): out = shared.JCache.get(shortkey, keys) - if (not out) and DEBUG_CACHE: + if DEBUG_CACHE and not out: dfpath = os.path.join(shared.TEMP_DIR, "ems_" + shortkey) dfp = open(dfpath, 'w') dfp.write(pre_input); From f4cceb902a31810215858393dd80c24ef62f6f15 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 20:19:44 -0500 Subject: [PATCH 199/326] fix DEBUG ? 2 checks --- emcc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emcc b/emcc index a6f0c12d396ae..0e7fc1ea83b58 100755 --- a/emcc +++ b/emcc @@ -1244,7 +1244,7 @@ try: def flush_js_optimizer_queue(): global final, js_optimizer_queue if len(js_optimizer_queue) > 0 and not(len(js_optimizer_queue) == 1 and js_optimizer_queue[0] == 'last'): - if DEBUG < 2: + if DEBUG != '2': if shared.Settings.ASM_JS: js_optimizer_queue = ['asm'] + js_optimizer_queue if DEBUG: print >> sys.stderr, 'emcc: applying js optimization passes:', js_optimizer_queue @@ -1263,7 +1263,7 @@ try: if opt_level >= 1: if DEBUG: print >> sys.stderr, 'emcc: running pre-closure post-opts' - if DEBUG >= 2: + if DEBUG == '2': # Clean up the syntax a bit final = shared.Building.js_optimizer(final, [], jcache) if DEBUG: save_intermediate('pretty') From f7c65ceaed7b358b41a23f1a38343cb484450152 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 20:36:04 -0500 Subject: [PATCH 200/326] Mix_Quit --- src/library_sdl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library_sdl.js b/src/library_sdl.js index e02e1e6297414..67eb5fd01c61b 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1183,6 +1183,7 @@ var LibrarySDL = { Mix_Init: function(flags) { return 8; /* MIX_INIT_OGG */ }, + Mix_Quit: function(){}, Mix_OpenAudio: function(frequency, format, channels, chunksize) { SDL.allocateChannels(32); From 0d9a247e9382081c04beaf61b5b5a07e1895d8e2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 26 Feb 2013 20:38:25 -0500 Subject: [PATCH 201/326] return 0 in Mix_Init if no flags are provided; this allows |while(Mix_Init(0)) Mix_Quit();| to work --- src/library_sdl.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/library_sdl.js b/src/library_sdl.js index 67eb5fd01c61b..3b412daa9410f 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1181,6 +1181,7 @@ var LibrarySDL = { // SDL Mixer Mix_Init: function(flags) { + if (!flags) return 0; return 8; /* MIX_INIT_OGG */ }, Mix_Quit: function(){}, From 52e5c1b766dfe6cf5098332fab781ab5111ad335 Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Wed, 27 Feb 2013 09:22:05 +0700 Subject: [PATCH 202/326] Add a stub pthread_mutex_trylock(). --- src/library.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/library.js b/src/library.js index 38399632c9506..1dcc57ad34f29 100644 --- a/src/library.js +++ b/src/library.js @@ -6701,6 +6701,9 @@ LibraryManager.library = { pthread_mutexattr_destroy: function() {}, pthread_mutex_lock: function() {}, pthread_mutex_unlock: function() {}, + pthread_mutex_trylock: function() { + return 0; + }, pthread_cond_init: function() {}, pthread_cond_destroy: function() {}, pthread_cond_broadcast: function() {}, From 74141f7fc2961e952f2288e57fb767b95961100c Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Tue, 26 Feb 2013 21:25:47 -0500 Subject: [PATCH 203/326] only put filenames with no space in response file llvm-link can't seem to handle spaces in response files sanely, and I can't find a way to quote them. So just don't include them, and use it only on Windows. --- tools/shared.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index 6f97737eeaa04..d9dd62e8c4c17 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -822,14 +822,25 @@ def link(files, target): # 8k is a bit of an arbitrary limit, but a reasonable one # for max command line size before we use a respose file response_file = None - if len(' '.join(link_cmd)) > 8192: + if WINDOWS and len(' '.join(link_cmd)) > 8192: if DEBUG: print >>sys.stderr, 'using response file for llvm-link' [response_fd, response_file] = mkstemp(suffix='.response', dir=TEMP_DIR) + + link_cmd = [LLVM_LINK, "@" + response_file] + response_fh = os.fdopen(response_fd, 'w') for arg in actual_files: - response_fh.write(arg + "\n") + # we can't put things with spaces in the response file + if " " in arg: + link_cmd.append(arg) + else: + response_fh.write(arg + "\n") response_fh.close() - link_cmd = [LLVM_LINK, "@" + response_file, '-o', target] + link_cmd.append("-o") + link_cmd.append(target) + + if len(' '.join(link_cmd)) > 8192: + print >>sys.stderr, 'emcc: warning: link command line is very long, even with response file -- use paths with no spaces' output = Popen(link_cmd, stdout=PIPE).communicate()[0] From 31186ef9edb06e9bc695fca2c3a14677e8f137a1 Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Tue, 26 Feb 2013 23:04:11 -0500 Subject: [PATCH 204/326] Add CHECK_HEAP_ALIGN to perform runtime alignment checks Adds a much cheaper CHECK_HEAP_ALIGN option to do heap access alignment checks. Less extensive than SAFE_HEAP, but also much cheaper. --- emscripten.py | 1 + src/compiler.js | 2 +- src/parseTools.js | 26 ++++++++++++++++---------- src/preamble.js | 19 +++++++++++++++++++ src/settings.js | 3 +++ 5 files changed, 40 insertions(+), 11 deletions(-) diff --git a/emscripten.py b/emscripten.py index 704e2b25c74e0..1db09a80263f5 100755 --- a/emscripten.py +++ b/emscripten.py @@ -345,6 +345,7 @@ def make_table(sig, raw): asm_setup += '\n'.join(['var %s = %s;' % (f.replace('.', '_'), f) for f in math_envs]) basic_funcs = ['abort', 'assert', 'asmPrintInt', 'asmPrintFloat', 'copyTempDouble', 'copyTempFloat'] + [m.replace('.', '_') for m in math_envs] if settings['SAFE_HEAP']: basic_funcs += ['SAFE_HEAP_LOAD', 'SAFE_HEAP_STORE', 'SAFE_HEAP_CLEAR'] + if settings['CHECK_HEAP_ALIGN']: basic_funcs += ['CHECK_ALIGN_2', 'CHECK_ALIGN_4', 'CHECK_ALIGN_8'] basic_vars = ['STACKTOP', 'STACK_MAX', 'tempDoublePtr', 'ABORT'] basic_float_vars = ['NaN', 'Infinity'] if forwarded_json['Types']['preciseI64MathUsed']: diff --git a/src/compiler.js b/src/compiler.js index 0b43842ebd7ea..14816f1e7029f 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -185,7 +185,7 @@ if (phase == 'pre') { print('// Note: For maximum-speed code, see "Optimizing Code" on the Emscripten wiki, https://github.com/kripken/emscripten/wiki/Optimizing-Code'); } - if (DOUBLE_MODE || CORRECT_SIGNS || CORRECT_OVERFLOWS || CORRECT_ROUNDINGS) { + if (DOUBLE_MODE || CORRECT_SIGNS || CORRECT_OVERFLOWS || CORRECT_ROUNDINGS || CHECK_HEAP_ALIGN) { print('// Note: Some Emscripten settings may limit the speed of the generated code.'); } } diff --git a/src/parseTools.js b/src/parseTools.js index 6e0d6e32c7ac7..117c498724455 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -984,18 +984,24 @@ function checkSafeHeap() { function getHeapOffset(offset, type, forceAsm) { if (USE_TYPED_ARRAYS !== 2) { return offset; - } else { - if (Runtime.getNativeFieldSize(type) > 4) { - type = 'i32'; // XXX we emulate 64-bit values as 32 - } - var shifts = Math.log(Runtime.getNativeTypeSize(type))/Math.LN2; - offset = '(' + offset + ')'; - if (shifts != 0) { - return '(' + offset + '>>' + shifts + ')'; + } + + if (Runtime.getNativeFieldSize(type) > 4) { + type = 'i32'; // XXX we emulate 64-bit values as 32 + } + + var sz = Runtime.getNativeTypeSize(type); + var shifts = Math.log(sz)/Math.LN2; + offset = '(' + offset + ')'; + if (shifts != 0) { + if (CHECK_HEAP_ALIGN) { + return '(CHECK_ALIGN_' + sz + '(' + offset + ')>>' + shifts + ')'; } else { - // we need to guard against overflows here, HEAP[U]8 expects a guaranteed int - return isJSVar(offset) ? offset : '(' + offset + '|0)'; + return '(' + offset + '>>' + shifts + ')'; } + } else { + // we need to guard against overflows here, HEAP[U]8 expects a guaranteed int + return isJSVar(offset) ? offset : '(' + offset + '|0)'; } } diff --git a/src/preamble.js b/src/preamble.js index 6f4b49de8f96c..71b123e778618 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -150,6 +150,25 @@ function SAFE_HEAP_COPY_HISTORY(dest, src) { //========================================== #endif +#if CHECK_HEAP_ALIGN +//======================================== +// Debugging tools - alignment check +//======================================== +function CHECK_ALIGN_8(addr) { + assert((addr & 7) == 0, "address must be 8-byte aligned, is " + addr + "!"); + return addr; +} +function CHECK_ALIGN_4(addr) { + assert((addr & 3) == 0, "address must be 4-byte aligned, is " + addr + "!"); + return addr; +} +function CHECK_ALIGN_2(addr) { + assert((addr & 1) == 0, "address must be 2-byte aligned!"); + return addr; +} +#endif + + #if CHECK_OVERFLOWS //======================================== // Debugging tools - Mathop overflows diff --git a/src/settings.js b/src/settings.js index 308afddc0c243..4d7420601e69e 100644 --- a/src/settings.js +++ b/src/settings.js @@ -128,6 +128,9 @@ var SAFE_HEAP = 0; // Check each write to the heap, for example, this will give // that 3 is the option you usually want here. var SAFE_HEAP_LOG = 0; // Log out all SAFE_HEAP operations +var CHECK_HEAP_ALIGN = 0; // Check heap accesses for alignment, but don't do as + // near extensive (or slow) checks as SAFE_HEAP. + var SAFE_DYNCALLS = 0; // Show stack traces on missing function pointer/virtual method calls var ASM_HEAP_LOG = 0; // Simple heap logging, like SAFE_HEAP_LOG but cheaper, and in asm.js From 760065dfbc02c32a16dee034b6210bc273419a24 Mon Sep 17 00:00:00 2001 From: Lorant Pinter Date: Wed, 27 Feb 2013 12:37:16 +0100 Subject: [PATCH 205/326] Reverse the order of function lookup in getCFunc() to avoid having to call eval() --- src/preamble.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/preamble.js b/src/preamble.js index 6f4b49de8f96c..d0e83469b5320 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -251,11 +251,9 @@ Module["ccall"] = ccall; // Returns the C function with a specified identifier (for C++, you need to do manual name mangling) function getCFunc(ident) { try { - var func = eval('_' + ident); + var func = globalScope['Module']['_' + ident]; // closure exported function + if (!func) func = eval('_' + ident); // explicit lookup } catch(e) { - try { - func = globalScope['Module']['_' + ident]; // closure exported function - } catch(e) {} } assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); return func; From b54b59686dd99383e98f2d6f27d4bad272fee2b2 Mon Sep 17 00:00:00 2001 From: Lorant Pinter Date: Wed, 27 Feb 2013 13:09:43 +0100 Subject: [PATCH 206/326] Put back try-catch around closure exported function lookup --- src/preamble.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/preamble.js b/src/preamble.js index d0e83469b5320..3c2da6b3b5902 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -251,7 +251,9 @@ Module["ccall"] = ccall; // Returns the C function with a specified identifier (for C++, you need to do manual name mangling) function getCFunc(ident) { try { - var func = globalScope['Module']['_' + ident]; // closure exported function + try { + var func = globalScope['Module']['_' + ident]; // closure exported function + } catch(e) {} if (!func) func = eval('_' + ident); // explicit lookup } catch(e) { } From 7c5ebb729659c6b9e83d371dfce6b751a871a5e4 Mon Sep 17 00:00:00 2001 From: Lorant Pinter Date: Wed, 27 Feb 2013 16:21:30 +0100 Subject: [PATCH 207/326] Remove the inner-try again -- not needed at all --- src/preamble.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/preamble.js b/src/preamble.js index 3c2da6b3b5902..d0e83469b5320 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -251,9 +251,7 @@ Module["ccall"] = ccall; // Returns the C function with a specified identifier (for C++, you need to do manual name mangling) function getCFunc(ident) { try { - try { - var func = globalScope['Module']['_' + ident]; // closure exported function - } catch(e) {} + var func = globalScope['Module']['_' + ident]; // closure exported function if (!func) func = eval('_' + ident); // explicit lookup } catch(e) { } From 631f2c60e19915020bafff61097c337dfd7c2ec2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 10:27:51 -0500 Subject: [PATCH 208/326] jcache docs --- emcc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/emcc b/emcc index 0e7fc1ea83b58..cb60e88163c41 100755 --- a/emcc +++ b/emcc @@ -400,6 +400,25 @@ Options that are modified or new in %s include: for a later incremental build (where you also enable it) to be sped up. + Caching works separately on 4 parts of compilation: + 'pre' which is types and global variables; that + information is then fed into 'funcs' which are + the functions (which we parallelize), and then + 'post' which adds final information based on + the functions (e.g., do we need long64 support + code). Finally, 'jsfuncs' are JavaScript-level + optimizations. Each of the 4 parts can be cached + separately, but note that they can affect each + other: If you recompile a single C++ file that + changes a global variable - e.g., adds, removes + or modifies a global variable, say by adding + a printf or by adding a compile-time timestamp, + then 'pre' cannot be loaded from the cache. And + since 'pre's output is sent to 'funcs' and 'post', + they will get invalidated as well, and only + 'jsfuncs' will be cached. So avoid modifying + globals to let caching work fully. + --clear-cache Manually clears the cache of compiled emscripten system libraries (libc++, libc++abi, libc). This is normally From 8967ffb2faa23fdaac8179cc3ff379dc984fc09c Mon Sep 17 00:00:00 2001 From: Michael Riss Date: Mon, 11 Feb 2013 22:57:40 +0100 Subject: [PATCH 209/326] Fixed the following problems in the perror function: - putc is not declared -> replaced by fputc - puts was used to output the user message which automatically introduced an unwanted newline between user message and error description -> replaced by fputs which does not add the newline Signed-off-by: Michael Riss --- src/library.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/library.js b/src/library.js index 38399632c9506..83e1b115c3a7d 100644 --- a/src/library.js +++ b/src/library.js @@ -3363,14 +3363,15 @@ LibraryManager.library = { ___setErrNo(ERRNO_CODES.ECHILD); return -1; }, - perror__deps: ['puts', 'putc', 'strerror', '__errno_location'], + perror__deps: ['puts', 'fputs', 'fputc', 'strerror', '__errno_location'], perror: function(s) { // void perror(const char *s); // http://pubs.opengroup.org/onlinepubs/000095399/functions/perror.html + var stdout = {{{ makeGetValue(makeGlobalUse('_stdout'), '0', 'void*') }}}; if (s) { - _puts(s); - _putc(':'.charCodeAt(0)); - _putc(' '.charCodeAt(0)); + _fputs(s, stdout); + _fputc(':'.charCodeAt(0), stdout); + _fputc(' '.charCodeAt(0), stdout); } var errnum = {{{ makeGetValue('___errno_location()', '0', 'i32') }}}; _puts(_strerror(errnum)); From 013dbae927627b7ca88d15a23ac4a649b99df0d2 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 13:05:46 -0500 Subject: [PATCH 210/326] experimental EMCC_OPTIMIZE_NORMALLY option --- emcc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/emcc b/emcc index cb60e88163c41..213bdf6a732e8 100755 --- a/emcc +++ b/emcc @@ -181,7 +181,9 @@ Options that are modified or new in %s include: tools/shared.py and also src/settings.js.) Note: Optimizations are only done when compiling to JavaScript, not to intermediate - bitcode. + bitcode, *unless* you build with + EMCC_OPTIMIZE_NORMALLY=1 (not recommended + unless you know what you are doing!) -O2 As -O1, plus the relooper (loop recreation), plus LLVM -O2 optimizations -O3 As -O2, plus dangerous optimizations that may @@ -1009,7 +1011,15 @@ try: # If we were just asked to generate bitcode, stop there if final_suffix not in JS_CONTAINING_SUFFIXES: if llvm_opts > 0: - print >> sys.stderr, 'emcc: warning: -Ox flags ignored, since not generating JavaScript' + if not os.environ.get('EMCC_OPTIMIZE_NORMALLY'): + print >> sys.stderr, 'emcc: warning: -Ox flags ignored, since not generating JavaScript' + else: + for input_file in input_files: + if input_file.endswith(SOURCE_SUFFIXES): + if DEBUG: print >> sys.stderr, 'emcc: optimizing %s with -O%d since EMCC_OPTIMIZE_NORMALLY defined' % (input_file, llvm_opts) + shared.Building.llvm_opt(in_temp(unsuffixed(uniquename(input_file)) + '.o'), llvm_opts) + else: + if DEBUG: print >> sys.stderr, 'emcc: not optimizing %s despite EMCC_OPTIMIZE_NORMALLY since not source code' % (input_file) if not specified_target: for input_file in input_files: shutil.move(in_temp(unsuffixed(uniquename(input_file)) + '.o'), unsuffixed_basename(input_file) + '.' + final_suffix) @@ -1174,9 +1184,12 @@ try: if not LEAVE_INPUTS_RAW: link_opts = [] if keep_llvm_debug else ['-strip-debug'] # remove LLVM debug info in -O1+, since the optimizer removes it anyhow if llvm_opts > 0: - shared.Building.llvm_opt(in_temp(target_basename + '.bc'), llvm_opts) - if DEBUG: save_intermediate('opt', 'bc') - # Do LTO in a separate pass to work around LLVM bug XXX (see failure e.g. in cubescript) + if not os.environ.get('EMCC_OPTIMIZE_NORMALLY'): + shared.Building.llvm_opt(in_temp(target_basename + '.bc'), llvm_opts) + if DEBUG: save_intermediate('opt', 'bc') + # Do LTO in a separate pass to work around LLVM bug XXX (see failure e.g. in cubescript) + else: + if DEBUG: print >> sys.stderr, 'emcc: not running opt because EMCC_OPTIMIZE_NORMALLY was specified, opt should have been run before' if shared.Building.can_build_standalone(): # If we can LTO, do it before dce, since it opens up dce opportunities if llvm_lto and shared.Building.can_use_unsafe_opts(): From 4aad802450a801823849081fff44f63dbc88349e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 13:35:34 -0500 Subject: [PATCH 211/326] test for EMCC_OPTIMIZE_NORMALLY --- tests/runner.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index 9cf40543ce4d1..e9accf2b7ff35 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -9659,6 +9659,62 @@ def test_link_s(self): code = open('a.out.js').read() assert 'SAFE_HEAP' in code, 'valid -s option had an effect' + def test_optimize_normally(self): + assert not os.environ.get('EMCC_OPTIMIZE_NORMALLY') + assert not os.environ.get('EMCC_DEBUG') + + try: + os.environ['EMCC_OPTIMIZE_NORMALLY'] = '1' + os.environ['EMCC_DEBUG'] = '1' + + open(self.in_dir('main.cpp'), 'w').write(r''' + extern "C" { + void something(); + } + + int main() { + something(); + return 0; + } + ''') + open(self.in_dir('supp.cpp'), 'w').write(r''' + #include + + extern "C" { + void something() { + printf("yello\n"); + } + } + ''') + out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), '-O2', '-o', 'main.o'], stdout=PIPE, stderr=PIPE).communicate() + assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" in err + assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err + + out, err = Popen([PYTHON, EMCC, self.in_dir('supp.cpp'), '-O2', '-o', 'supp.o'], stdout=PIPE, stderr=PIPE).communicate() + assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" in err + assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err + + out, err = Popen([PYTHON, EMCC, self.in_dir('main.o'), self.in_dir('supp.o'), '-O2', '-o', 'both.o'], stdout=PIPE, stderr=PIPE).communicate() + assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" not in err + assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' not in err + assert 'despite EMCC_OPTIMIZE_NORMALLY since not source code' in err, err + + out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), self.in_dir('supp.cpp'), '-O2', '-o', 'both2.o'], stdout=PIPE, stderr=PIPE).communicate() + assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" in err + assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err + + for last in ['both.o', 'both2.o']: + out, err = Popen([PYTHON, EMCC, self.in_dir('both.o'), '-O2', '-o', last + '.js'], stdout=PIPE, stderr=PIPE).communicate() + assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" not in err + assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' not in err + output = run_js(last + '.js') + assert 'yello' in output, 'code works' + assert open('both.o.js').read() == open('both2.o.js').read() + + finally: + del os.environ['EMCC_OPTIMIZE_NORMALLY'] + del os.environ['EMCC_DEBUG'] + def test_conftest_s_flag_passing(self): open(os.path.join(self.get_dir(), 'conftest.c'), 'w').write(r''' int main() { From 4b67d79bd54fae6bbab74ee83a6e16829f311717 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 13:40:12 -0500 Subject: [PATCH 212/326] finish EMCC_OPTIMIZE_NORMALLY test --- tests/runner.py | 86 +++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index e9accf2b7ff35..d3bdaaacabdc7 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -9663,57 +9663,59 @@ def test_optimize_normally(self): assert not os.environ.get('EMCC_OPTIMIZE_NORMALLY') assert not os.environ.get('EMCC_DEBUG') - try: - os.environ['EMCC_OPTIMIZE_NORMALLY'] = '1' - os.environ['EMCC_DEBUG'] = '1' - - open(self.in_dir('main.cpp'), 'w').write(r''' - extern "C" { - void something(); - } - - int main() { - something(); - return 0; - } - ''') - open(self.in_dir('supp.cpp'), 'w').write(r''' - #include + for optimize_normally in [0, 1]: + print optimize_normally + try: + if optimize_normally: os.environ['EMCC_OPTIMIZE_NORMALLY'] = '1' + os.environ['EMCC_DEBUG'] = '1' - extern "C" { - void something() { - printf("yello\n"); + open(self.in_dir('main.cpp'), 'w').write(r''' + extern "C" { + void something(); } - } - ''') - out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), '-O2', '-o', 'main.o'], stdout=PIPE, stderr=PIPE).communicate() - assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" in err - assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err - out, err = Popen([PYTHON, EMCC, self.in_dir('supp.cpp'), '-O2', '-o', 'supp.o'], stdout=PIPE, stderr=PIPE).communicate() - assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" in err - assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err + int main() { + something(); + return 0; + } + ''') + open(self.in_dir('supp.cpp'), 'w').write(r''' + #include - out, err = Popen([PYTHON, EMCC, self.in_dir('main.o'), self.in_dir('supp.o'), '-O2', '-o', 'both.o'], stdout=PIPE, stderr=PIPE).communicate() - assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" not in err - assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' not in err - assert 'despite EMCC_OPTIMIZE_NORMALLY since not source code' in err, err + extern "C" { + void something() { + printf("yello\n"); + } + } + ''') + out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), '-O2', '-o', 'main.o'], stdout=PIPE, stderr=PIPE).communicate() + assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" in err) == optimize_normally + assert (' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err) == optimize_normally - out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), self.in_dir('supp.cpp'), '-O2', '-o', 'both2.o'], stdout=PIPE, stderr=PIPE).communicate() - assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" in err - assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err + out, err = Popen([PYTHON, EMCC, self.in_dir('supp.cpp'), '-O2', '-o', 'supp.o'], stdout=PIPE, stderr=PIPE).communicate() + assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" in err) == optimize_normally + assert (' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err) == optimize_normally - for last in ['both.o', 'both2.o']: - out, err = Popen([PYTHON, EMCC, self.in_dir('both.o'), '-O2', '-o', last + '.js'], stdout=PIPE, stderr=PIPE).communicate() + out, err = Popen([PYTHON, EMCC, self.in_dir('main.o'), self.in_dir('supp.o'), '-O2', '-o', 'both.o'], stdout=PIPE, stderr=PIPE).communicate() assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" not in err assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' not in err - output = run_js(last + '.js') - assert 'yello' in output, 'code works' - assert open('both.o.js').read() == open('both2.o.js').read() + assert ('despite EMCC_OPTIMIZE_NORMALLY since not source code' in err) == optimize_normally - finally: - del os.environ['EMCC_OPTIMIZE_NORMALLY'] - del os.environ['EMCC_DEBUG'] + out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), self.in_dir('supp.cpp'), '-O2', '-o', 'both2.o'], stdout=PIPE, stderr=PIPE).communicate() + assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" in err) == optimize_normally + assert (' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err) == optimize_normally + + for last in ['both.o', 'both2.o']: + out, err = Popen([PYTHON, EMCC, self.in_dir('both.o'), '-O2', '-o', last + '.js'], stdout=PIPE, stderr=PIPE).communicate() + assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" not in err) == optimize_normally + assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' not in err + output = run_js(last + '.js') + assert 'yello' in output, 'code works' + assert open('both.o.js').read() == open('both2.o.js').read() + + finally: + if optimize_normally: del os.environ['EMCC_OPTIMIZE_NORMALLY'] + del os.environ['EMCC_DEBUG'] def test_conftest_s_flag_passing(self): open(os.path.join(self.get_dir(), 'conftest.c'), 'w').write(r''' From 85b862ac83b28519b572777b849f0011dd437ec1 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 18:26:06 -0500 Subject: [PATCH 213/326] properly emit calls to gl passthroughs with 0 params, and test for glError --- src/library_gl.js | 8 +++++--- tests/aniso.c | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 995f2358945d0..38b330f7c2c49 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2794,6 +2794,8 @@ var LibraryGL = { glTexCoord3f: function() { throw 'glTexCoord3f: TODO' }, glGetTexLevelParameteriv: function() { throw 'glGetTexLevelParameteriv: TODO' }, + glShadeModel: function() { Runtime.warnOnce('TODO: glShadeModel') }, + // signatures of simple pass-through functions, see later glActiveTexture__sig: 'vi', glEnableVertexAttribArray__sig: 'vi', @@ -2820,7 +2822,7 @@ var LibraryGL = { }; // Simple pass-through functions. Starred ones have return values. [X] ones have X in the C name but not in the JS name -[[0, 'shadeModel getError* finish flush'], +[[0, 'getError* finish flush'], [1, 'clearDepth clearDepth[f] depthFunc enable disable frontFace cullFace clear enableVertexAttribArray disableVertexAttribArray lineWidth clearStencil depthMask stencilMask checkFramebufferStatus* generateMipmap activeTexture blendEquation sampleCoverage isEnabled*'], [2, 'blendFunc blendEquationSeparate depthRange depthRange[f] stencilMaskSeparate hint polygonOffset'], [3, 'texParameteri texParameterf drawArrays vertexAttrib2f stencilFunc stencilOp'], @@ -2831,8 +2833,8 @@ var LibraryGL = { var num = data[0]; var names = data[1]; var args = range(num).map(function(i) { return 'x' + i }).join(', '); - var plainStub = '(function(' + args + ') { ' + (num > 0 ? 'Module.ctx.NAME(' + args + ')' : '') + ' })'; - var returnStub = '(function(' + args + ') { ' + (num > 0 ? 'return Module.ctx.NAME(' + args + ')' : '') + ' })'; + var plainStub = '(function(' + args + ') { Module.ctx.NAME(' + args + ') })'; + var returnStub = '(function(' + args + ') { return Module.ctx.NAME(' + args + ') })'; names.split(' ').forEach(function(name) { var stub = plainStub; if (name[name.length-1] == '*') { diff --git a/tests/aniso.c b/tests/aniso.c index e673e228c4863..e02c20ace6aeb 100644 --- a/tests/aniso.c +++ b/tests/aniso.c @@ -145,6 +145,11 @@ int main(int argc, char *argv[]) glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, aniso); } + { + assert(!glGetError()); + glBindFramebuffer(GL_RENDERBUFFER, 0); + assert(glGetError()); + } // Prepare and Render From 42da4e19f9d72026be6642c8b54f646c6d828dde Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 19:23:15 -0500 Subject: [PATCH 214/326] FORCE_GL_EMULATION option --- src/library_gl.js | 5 +++++ src/settings.js | 4 ++++ tests/runner.py | 12 ++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 38b330f7c2c49..537dce53f7a98 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2867,5 +2867,10 @@ LibraryGL.$GLEmulation__deps.push(function() { for (var func in Functions.getIndex.tentative) Functions.getIndex(func); }); +if (FORCE_GL_EMULATION) { + LibraryGL.glDrawElements__deps = LibraryGL.glDrawElements__deps.concat('$GLEmulation'); + LibraryGL.glDrawArrays__deps = LibraryGL.glDrawArrays__deps.concat('$GLEmulation'); +} + mergeInto(LibraryManager.library, LibraryGL); diff --git a/src/settings.js b/src/settings.js index 4d7420601e69e..dbce836d5aba0 100644 --- a/src/settings.js +++ b/src/settings.js @@ -166,6 +166,10 @@ var GL_DEBUG = 0; // Print out all calls into WebGL. As with LIBRARY_DEBUG, you var GL_TESTING = 0; // When enabled, sets preserveDrawingBuffer in the context, to allow tests to work (but adds overhead) var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers are var GL_UNSAFE_OPTS = 1; // Enables some potentially-unsafe optimizations in GL emulation code +var FORCE_GL_EMULATION = 0; // Forces inclusion of GL emulation code. This lets you use non-WebGL features + // like clientside data. GL commands that are not in WebGL will automatically + // include this feature, but if you just use pure GLES commands *and* need + // emualation, you will need to enable it manually with this flag. var DISABLE_EXCEPTION_CATCHING = 0; // Disables generating code to actually catch exceptions. If the code you // are compiling does not actually rely on catching exceptions (but the diff --git a/tests/runner.py b/tests/runner.py index d3bdaaacabdc7..5056876271150 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10625,10 +10625,14 @@ def test_glgears(self): self.run_browser('something.html', 'You should see animating gears.', '/report_result?0') def test_glgears_animation(self): - Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_gles.c'), '-o', 'something.html', - '-DHAVE_BUILTIN_SINCOS', '-s', 'GL_TESTING=1', - '--shell-file', path_from_root('tests', 'hello_world_gles_shell.html')]).communicate() - self.run_browser('something.html', 'You should see animating gears.', '/report_gl_result?true') + for emulation in [0, 1]: + print emulation + Popen([PYTHON, EMCC, path_from_root('tests', 'hello_world_gles.c'), '-o', 'something.html', + '-DHAVE_BUILTIN_SINCOS', '-s', 'GL_TESTING=1', + '--shell-file', path_from_root('tests', 'hello_world_gles_shell.html')] + + (['-s', 'FORCE_GL_EMULATION=1'] if emulation else [])).communicate() + self.run_browser('something.html', 'You should see animating gears.', '/report_gl_result?true') + assert ('var GLEmulation' in open(self.in_dir('something.html')).read()) == emulation, "emulation code should be added when asked for" def test_glgears_bad(self): # Make sure that OpenGL ES is not available if typed arrays are not used From 8e2c759b03266bb60cac686e3e84269714d5310e Mon Sep 17 00:00:00 2001 From: Michael Riss Date: Thu, 28 Feb 2013 01:33:06 +0100 Subject: [PATCH 215/326] Add glVertex3i and glVertex2i calls These are basically just aliases for the glVertex3f function. Javascript seems to convert the integers to float values correctly. However, I did not follow the code path through the immediate mode emulation to know for sure. In my applications it works for "normal", small values (e.g. 1, 500, 1000, ...). --- src/library_gl.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index 995f2358945d0..222e08f76921f 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -2332,8 +2332,10 @@ var LibraryGL = { glVertex2fv: function(p) { _glVertex3f({{{ makeGetValue('p', '0', 'float') }}}, {{{ makeGetValue('p', '4', 'float') }}}, 0); }, + + glVertex3i: 'glVertex3f', - glVertex2i: function() { throw 'glVertex2i: TODO' }, + glVertex2i: 'glVertex3f', glTexCoord2i: function(u, v) { #if ASSERTIONS From 985f71322dd35a187a0103e2de36facf63138adc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 20:21:30 -0500 Subject: [PATCH 216/326] csmith driver debug output --- tests/fuzz/csmith_driver.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 1cb8545135814..d6719787888d1 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -48,8 +48,10 @@ def try_js(args): shared.try_delete(filename + '.js') + print '(compile)' shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS + args, stderr=PIPE) assert os.path.exists(filename + '.js') + print '(run)' js = shared.run_js(filename + '.js', stderr=PIPE, engine=engine1, check_timeout=True) assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) From 8da0914d013d9c05d37332a4fd4b95bed016db94 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 20:30:32 -0500 Subject: [PATCH 217/326] add preparations for gles2 emulation tests --- .../Chapter_2/Hello_Triangle/Hello_Triangle_orig.c | 2 +- tests/runner.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/glbook/Chapter_2/Hello_Triangle/Hello_Triangle_orig.c b/tests/glbook/Chapter_2/Hello_Triangle/Hello_Triangle_orig.c index fd4c506a5c0b2..cc25a55986332 100644 --- a/tests/glbook/Chapter_2/Hello_Triangle/Hello_Triangle_orig.c +++ b/tests/glbook/Chapter_2/Hello_Triangle/Hello_Triangle_orig.c @@ -171,7 +171,7 @@ void Draw ( ESContext *esContext ) glVertexAttribPointer ( 0, 3, GL_FLOAT, GL_FALSE, 0, vVertices ); glEnableVertexAttribArray ( 0 ); - glDrawArrays ( GL_TRIANGLES, 0, 3 ); + glDrawArrays ( GL_TRIANGLES, 0, 3 ); // TODO: need glDrawElements! } int main ( int argc, char *argv[] ) diff --git a/tests/runner.py b/tests/runner.py index 5056876271150..907031aa02fe0 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10688,13 +10688,19 @@ def btest(self, filename, expected=None, reference=None, reference_slack=0, args open(os.path.join(self.get_dir(), filename), 'w').write(self.with_report_result(src)) else: expected = [str(i) for i in range(0, reference_slack+1)] - shutil.copyfile(path_from_root('tests', filename), os.path.join(self.get_dir(), filename)) + shutil.copyfile(path_from_root('tests', filename), os.path.join(self.get_dir(), os.path.basename(filename))) self.reftest(path_from_root('tests', reference)) args = args + ['--pre-js', 'reftest.js', '-s', 'GL_TESTING=1'] - Popen([PYTHON, EMCC, os.path.join(self.get_dir(), filename), '-o', 'test.html'] + args).communicate() + Popen([PYTHON, EMCC, os.path.join(self.get_dir(), os.path.basename(filename)), '-o', 'test.html'] + args).communicate() if type(expected) is str: expected = [expected] self.run_browser('test.html', '.', ['/report_result?' + e for e in expected]) + def zzztest_glbook_emulation(self): + self.btest(os.path.join('glbook', 'Chapter_2', 'Hello_Triangle', 'Hello_Triangle_orig.c'), + reference=path_from_root('tests', 'glbook', 'CH02_HelloTriangle.png'), + args=['-I' + path_from_root('tests', 'glbook', 'Common'), + path_from_root('tests', 'glbook', 'Common', 'esUtil.c')]) + def test_emscripten_api(self): self.btest('emscripten_api_browser.cpp', '1', args=['-s', '''EXPORTED_FUNCTIONS=['_main', '_third']''']) From e1a0116a871bf96243472d79135eb624dc9c82c3 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Wed, 27 Feb 2013 20:36:14 -0500 Subject: [PATCH 218/326] Implement SDL_TEXTINPUT --- src/library_sdl.js | 31 ++++++++++++++++++++++++++++--- tests/runner.py | 22 ++++++++++++++++++++++ tests/sdl_text.c | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 tests/sdl_text.c diff --git a/src/library_sdl.js b/src/library_sdl.js index 3b412daa9410f..67891f6396024 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -44,6 +44,8 @@ var LibrarySDL = { ctrlKey: false, altKey: false, + textInput: false, + startTime: null, mouseX: 0, mouseY: 0, @@ -173,6 +175,11 @@ var LibrarySDL = { ['i16', 'mod'], ['i32', 'unicode'] ]), + TextInputEvent: Runtime.generateStructInfo([ + ['i32', 'type'], + ['i32', 'windowID'], + ['b256', 'text'], + ]), MouseMotionEvent: Runtime.generateStructInfo([ ['i32', 'type'], ['i32', 'windowID'], @@ -373,7 +380,7 @@ var LibrarySDL = { } } // fall through - case 'keydown': case 'keyup': case 'mousedown': case 'mouseup': case 'DOMMouseScroll': case 'mousewheel': + case 'keydown': case 'keyup': case 'keypress': case 'mousedown': case 'mouseup': case 'DOMMouseScroll': case 'mousewheel': if (event.type == 'DOMMouseScroll' || event.type == 'mousewheel') { var button = (event.type == 'DOMMouseScroll' ? event.detail : -event.wheelDelta) > 0 ? 4 : 3; var event2 = { @@ -397,6 +404,10 @@ var LibrarySDL = { SDL.DOMButtons[event.button] = 0; } + if (event.type == 'keypress' && !SDL.textInput) { + break; + } + SDL.events.push(event); if (SDL.events.length >= 10000) { Module.printErr('SDL event queue full, dropping earliest event'); @@ -476,6 +487,15 @@ var LibrarySDL = { break; } + case 'keypress': { + {{{ makeSetValue('ptr', 'SDL.structs.TextInputEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}} + // Not filling in windowID for now + var cStr = intArrayFromString(String.fromCharCode(event.charCode)); + for (var i = 0; i < cStr.length; ++i) { + {{{ makeSetValue('ptr', 'SDL.structs.TextInputEvent.text + i', 'cStr[i]', 'i8') }}}; + } + break; + } case 'mousedown': case 'mouseup': if (event.type == 'mousedown') { // SDL_BUTTON(x) is defined as (1 << ((x)-1)). SDL buttons are 1-3, @@ -618,6 +638,7 @@ var LibrarySDL = { // Initialize this structure carefully for closure SDL.DOMEventToSDLEvent['keydown'] = 0x300 /* SDL_KEYDOWN */; SDL.DOMEventToSDLEvent['keyup'] = 0x301 /* SDL_KEYUP */; + SDL.DOMEventToSDLEvent['keypress'] = 0x303 /* SDL_TEXTINPUT */; SDL.DOMEventToSDLEvent['mousedown'] = 0x401 /* SDL_MOUSEBUTTONDOWN */; SDL.DOMEventToSDLEvent['mouseup'] = 0x402 /* SDL_MOUSEBUTTONUP */; SDL.DOMEventToSDLEvent['mousemove'] = 0x400 /* SDL_MOUSEMOTION */; @@ -1175,8 +1196,12 @@ var LibrarySDL = { SDL_CondWait: function() {}, SDL_DestroyCond: function() {}, - SDL_StartTextInput: function() {}, // TODO - SDL_StopTextInput: function() {}, // TODO + SDL_StartTextInput: function() { + SDL.textInput = true; + }, + SDL_StopTextInput: function() { + SDL.textInput = false; + }, // SDL Mixer diff --git a/tests/runner.py b/tests/runner.py index 5056876271150..d1d65d6f4abc3 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10370,6 +10370,28 @@ def test_sdl_key(self): Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'sdl_key.c'), '-o', 'page.html', '--pre-js', 'pre.js', '-s', '''EXPORTED_FUNCTIONS=['_main', '_one']''']).communicate() self.run_browser('page.html', '', '/report_result?510510') + def test_sdl_text(self): + open(os.path.join(self.get_dir(), 'pre.js'), 'w').write(''' + Module.postRun = function() { + function doOne() { + Module._one(); + setTimeout(doOne, 1000/60); + } + setTimeout(doOne, 1000/60); + } + + function simulateKeyEvent(charCode) { + var event = document.createEvent("KeyboardEvent"); + event.initKeyEvent("keypress", true, true, window, + 0, 0, 0, 0, 0, charCode); + document.body.dispatchEvent(event); + } + ''') + open(os.path.join(self.get_dir(), 'sdl_text.c'), 'w').write(self.with_report_result(open(path_from_root('tests', 'sdl_text.c')).read())) + + Popen([PYTHON, EMCC, os.path.join(self.get_dir(), 'sdl_text.c'), '-o', 'page.html', '--pre-js', 'pre.js', '-s', '''EXPORTED_FUNCTIONS=['_main', '_one']''']).communicate() + self.run_browser('page.html', '', '/report_result?1') + def test_sdl_mouse(self): open(os.path.join(self.get_dir(), 'pre.js'), 'w').write(''' function simulateMouseEvent(x, y, button) { diff --git a/tests/sdl_text.c b/tests/sdl_text.c new file mode 100644 index 0000000000000..6bcb0d611cddc --- /dev/null +++ b/tests/sdl_text.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include + +int result = 0; + +void one() { + SDL_Event event; + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_TEXTEDITING: assert(0); break; + case SDL_TEXTINPUT: + printf("Received %s\n", event.text.text); + if (!strcmp("a", event.text.text)) { + result = 1; + } else if (!strcmp("A", event.text.text)) { + REPORT_RESULT(); + emscripten_run_script("throw 'done'"); + } + break; + default: /* Report an unhandled event */ + printf("I don't know what this event is!\n"); + } + } +} + +int main() { + SDL_Init(SDL_INIT_VIDEO); + SDL_SetVideoMode(600, 450, 32, SDL_HWSURFACE); + SDL_StartTextInput(); + + emscripten_run_script("simulateKeyEvent('a'.charCodeAt(0))"); // a + emscripten_run_script("simulateKeyEvent('A'.charCodeAt(0))"); // A + + one(); + + return 0; +} From 06822b1ea412d62606bba0c6d3211a576a633c56 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 20:40:06 -0500 Subject: [PATCH 219/326] add the rest of the gles2 emulation tests --- tests/runner.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 907031aa02fe0..955d94bedb8c3 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10695,11 +10695,21 @@ def btest(self, filename, expected=None, reference=None, reference_slack=0, args if type(expected) is str: expected = [expected] self.run_browser('test.html', '.', ['/report_result?' + e for e in expected]) - def zzztest_glbook_emulation(self): - self.btest(os.path.join('glbook', 'Chapter_2', 'Hello_Triangle', 'Hello_Triangle_orig.c'), - reference=path_from_root('tests', 'glbook', 'CH02_HelloTriangle.png'), - args=['-I' + path_from_root('tests', 'glbook', 'Common'), - path_from_root('tests', 'glbook', 'Common', 'esUtil.c')]) + def zzztest_gles2_emulation(self): + for source, reference in [ + (os.path.join('glbook', 'Chapter_2', 'Hello_Triangle', 'Hello_Triangle_orig.c'), path_from_root('tests', 'glbook', 'CH02_HelloTriangle.png')), + (os.path.join('glbook', 'Chapter_8', 'Simple_VertexShader', 'Simple_VertexShader_orig.c'), path_from_root('tests', 'glbook', 'CH08_SimpleVertexShader.png')), + (os.path.join('glbook', 'Chapter_9', 'TextureWrap', 'TextureWrap_orig.c'), path_from_root('tests', 'glbook', 'CH09_TextureWrap')), + (os.path.join('glbook', 'Chapter_9', 'Simple_TextureCubemap', 'Simple_TextureCubemap_orig.c'), path_from_root('tests', 'glbook', 'CH09_TextureCubemap.png')), + (os.path.join('glbook', 'Chapter_9', 'Simple_Texture2D', 'Simple_Texture2D_orig.c'), path_from_root('tests', 'glbook', 'CH09_SimpleTexture2D.png')), + (os.path.join('glbook', 'Chapter_10', 'MultiTexture', 'MultiTexture_orig.c'), path_from_root('tests', 'glbook', 'CH10_Multitexture.png')), + (os.path.join('glbook', 'Chapter_13', 'ParticleSystem', 'ParticleSystem_orig.c'), path_from_root('tests', 'glbook', 'CH13_ParticleSystem.png')), + ]: + print source + self.btest(source, + reference=reference, + args=['-I' + path_from_root('tests', 'glbook', 'Common'), + path_from_root('tests', 'glbook', 'Common', 'esUtil.c')]) def test_emscripten_api(self): self.btest('emscripten_api_browser.cpp', '1', args=['-s', '''EXPORTED_FUNCTIONS=['_main', '_third']''']) From a0a5e19ded9d2610c60c27a8cb65009365fc33c5 Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Wed, 27 Feb 2013 20:31:32 -0500 Subject: [PATCH 220/326] Add client-side vertex attribs and index buffers --- src/library_gl.js | 178 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 159 insertions(+), 19 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 537dce53f7a98..0d6b799b78d12 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -19,6 +19,11 @@ var LibraryGL = { uniforms: [], shaders: [], + clientBuffers: [], + enabledClientBuffers: [], + currArrayBuffer: 0, + currElementArrayBuffer: 0, + uniformTable: {}, // name => uniform ID. the uID must be identical until relinking, cannot create a new uID each call to glGetUniformLocation packAlignment: 4, // default alignment is 4 bytes @@ -176,12 +181,68 @@ var LibraryGL = { } }, +#if FULL_ES2 + calcBufLength: function (size, type, stride, cnt) { + if (stride > 0) + return cnt * stride; // XXXvlad this is not exactly correct I don't think + + var typesz; + switch (type) { + case Module.ctx.UNSIGNED_BYTE: + case Module.ctx.BYTE: + typesz = 1; + break; + case Module.ctx.UNSIGNED_SHORT: + case Module.ctx.SHORT: + typesz = 2; + break; + case Module.ctx.UNSIGNED_INT: + case Module.ctx.INT: + case Module.ctx.FLOAT: + typesz = 4; + break; + case Module.ctx.DOUBLE: + typesz = 8; + break; + } + + return size * typesz * cnt; + }, + + preDrawHandleClientVertexAttribBindings: function(cnt) { + GL.resetBufferBinding = false; + for (var i = 0; i < GL.maxVertexAttribs; ++i) { + if (!GL.enabledClientBuffers[i] || !GL.clientBuffers[i]) + continue; + + GL.resetBufferBinding = true; + + var cb = GL.clientBuffers[i]; + + var buf = Module.ctx.createBuffer(); + Module.ctx.bindBuffer(Module.ctx.ARRAY_BUFFER, buf); + Module.ctx.bufferData(Module.ctx.ARRAY_BUFFER, + HEAPU8.subarray(cb.ptr, cb.ptr + GL.calcBufLength(cb.size, cb.type, cb.stride, cnt)), + Module.ctx.DYNAMIC_DRAW); + Module.ctx.vertexAttribPointer(i, cb.size, cb.type, cb.normalized, cb.stride, 0); + } + }, + + postDrawHandleClientVertexAttribBindings: function() { + if (GL.resetBufferBinding) { + Module.ctx.bindBuffer(Module.ctx.ARRAY_BUFFER, GL.buffers[GL.currArrayBuffer]); + } + }, +#endif + initExtensions: function() { if (GL.initExtensions.done) return; GL.initExtensions.done = true; if (!Module.useWebGL) return; // an app might link both gl and 2d backends + GL.maxVertexAttribs = Module.ctx.getParameter(Module.ctx.MAX_VERTEX_ATTRIBS); + GL.compressionExt = Module.ctx.getExtension('WEBGL_compressed_texture_s3tc') || Module.ctx.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || Module.ctx.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc'); @@ -456,6 +517,9 @@ var LibraryGL = { var id = {{{ makeGetValue('buffers', 'i*4', 'i32') }}}; Module.ctx.deleteBuffer(GL.buffers[id]); GL.buffers[id] = null; + + if (id == GL.currArrayBuffer) GL.currArrayBuffer = 0; + if (id == GL.currElementArrayBuffer) GL.currElementArrayBuffer = 0; } }, @@ -554,6 +618,11 @@ var LibraryGL = { }, glGetVertexAttribfv: function(index, pname, params) { +#if FULL_ES2 + if (GL.clientBuffers[index]) { + Module.printErr("glGetVertexAttribfv on client-side array: not supported, bad data returned"); + } +#endif var data = Module.ctx.getVertexAttrib(index, pname); if (typeof data == 'number') { {{{ makeSetValue('params', '0', 'data', 'float') }}}; @@ -565,6 +634,11 @@ var LibraryGL = { }, glGetVertexAttribiv: function(index, pname, params) { +#if FULL_ES2 + if (GL.clientBuffers[index]) { + Module.printErr("glGetVertexAttribiv on client-side array: not supported, bad data returned"); + } +#endif var data = Module.ctx.getVertexAttrib(index, pname); if (typeof data == 'number' || typeof data == 'boolean') { {{{ makeSetValue('params', '0', 'data', 'i32') }}}; @@ -576,6 +650,11 @@ var LibraryGL = { }, glGetVertexAttribPointerv: function(index, pname, pointer) { +#if FULL_ES2 + if (GL.clientBuffers[index]) { + Module.printErr("glGetVertexAttribPointer on client-side array: not supported, bad data returned"); + } +#endif {{{ makeSetValue('pointer', '0', 'Module.ctx.getVertexAttribOffset(index, pname)', 'i32') }}}; }, @@ -731,6 +810,12 @@ var LibraryGL = { glBindBuffer__sig: 'vii', glBindBuffer: function(target, buffer) { + if (target == Module.ctx.ARRAY_BUFFER) { + GL.currArrayBuffer = buffer; + } else if (target == Module.ctx.ELEMENT_ARRAY_BUFFER) { + GL.currElementArrayBuffer = buffer; + } + Module.ctx.bindBuffer(target, buffer ? GL.buffers[buffer] : null); }, @@ -1348,27 +1433,15 @@ var LibraryGL = { _glBindBuffer = function(target, buffer) { glBindBuffer(target, buffer); if (target == Module.ctx.ARRAY_BUFFER) { - GL.currArrayBuffer = buffer; if (GLEmulation.currentVao) { assert(GLEmulation.currentVao.arrayBuffer == buffer || GLEmulation.currentVao.arrayBuffer == 0 || buffer == 0, 'TODO: support for multiple array buffers in vao'); GLEmulation.currentVao.arrayBuffer = buffer; } } else if (target == Module.ctx.ELEMENT_ARRAY_BUFFER) { - GL.currElementArrayBuffer = buffer; if (GLEmulation.currentVao) GLEmulation.currentVao.elementArrayBuffer = buffer; } }; - var glDeleteBuffers = _glDeleteBuffers; - _glDeleteBuffers = function(n, buffers) { - glDeleteBuffers(n, buffers); - for (var i = 0; i < n; i++) { - var buffer = {{{ makeGetValue('buffers', 'i*4', 'i32') }}}; - if (buffer == GL.currArrayBuffer) GL.currArrayBuffer = 0; - if (buffer == GL.currElementArrayBuffer) GL.currElementArrayBuffer = 0; - } - }; - var glGetFloatv = _glGetFloatv; _glGetFloatv = function(pname, params) { if (pname == 0x0BA6) { // GL_MODELVIEW_MATRIX @@ -2796,11 +2869,79 @@ var LibraryGL = { glShadeModel: function() { Runtime.warnOnce('TODO: glShadeModel') }, - // signatures of simple pass-through functions, see later - glActiveTexture__sig: 'vi', + glVertexAttribPointer__sig: 'viiiiii', + glVertexAttribPointer: function(index, size, type, normalized, stride, ptr) { +#if FULL_ES2 + if (!GL.currArrayBuffer) { + GL.clientBuffers[index] = { size: size, type: type, normalized: normalized, stride: stride, ptr: ptr }; + return; + } + + GL.clientBuffers[index] = null; +#endif + Module.ctx.vertexAttribPointer(index, size, type, normalized, stride, ptr); + }, + glEnableVertexAttribArray__sig: 'vi', + glEnableVertexAttribArray: function(index) { +#if FULL_ES2 + GL.enabledClientBuffers[index] = true; +#endif + Module.ctx.enableVertexAttribArray(index); + }, + glDisableVertexAttribArray__sig: 'vi', - glVertexAttribPointer__sig: 'viiiiii', + glDisableVertexAttribArray: function(index) { +#if FULL_ES2 + GL.enabledClientBuffers[index] = false; +#endif + Module.ctx.disableVertexAttribArray(index); + }, + + glDrawArrays: function(mode, first, cnt) { +#if FULL_ES2 + // bind any client-side buffers + GL.preDrawHandleClientVertexAttribBindings(cnt); +#endif + + Module.ctx.drawArrays(mode, first, cnt); + +#if FULL_ES2 + GL.postDrawHandleClientVertexAttribBindings(); +#endif + }, + + glDrawElements: function(mode, cnt, type, indices) { +#if FULL_ES2 + var buf; + if (!GL.currElementArrayBuffer) { + buf = Module.ctx.createBuffer(); + Module.ctx.bindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, buf); + Module.ctx.bufferData(Module.ctx.ELEMENT_ARRAY_BUFFER, + HEAPU8.subarray(indices, indices + GL.calcBufLength(1, type, 0, cnt)), + Module.ctx.DYNAMIC_DRAW); + // the index is now 0 + indices = 0; + } + + // bind any client-side buffers + GL.preDrawHandleClientVertexAttribBindings(cnt); +#endif + + Module.ctx.drawElements(mode, cnt, type, indices); + +#if FULL_ES2 + GL.postDrawHandleClientVertexAttribBindings(cnt); + + if (!GL.currElementArrayBuffer) { + Module.ctx.bindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, null); + Module.ctx.deleteBuffer(buf); + } +#endif + }, + + // signatures of simple pass-through functions, see later + glActiveTexture__sig: 'vi', glCheckFramebufferStatus__sig: 'ii', glRenderbufferStorage__sig: 'viiii', @@ -2823,12 +2964,11 @@ var LibraryGL = { // Simple pass-through functions. Starred ones have return values. [X] ones have X in the C name but not in the JS name [[0, 'getError* finish flush'], - [1, 'clearDepth clearDepth[f] depthFunc enable disable frontFace cullFace clear enableVertexAttribArray disableVertexAttribArray lineWidth clearStencil depthMask stencilMask checkFramebufferStatus* generateMipmap activeTexture blendEquation sampleCoverage isEnabled*'], + [1, 'clearDepth clearDepth[f] depthFunc enable disable frontFace cullFace clear lineWidth clearStencil depthMask stencilMask checkFramebufferStatus* generateMipmap activeTexture blendEquation sampleCoverage isEnabled*'], [2, 'blendFunc blendEquationSeparate depthRange depthRange[f] stencilMaskSeparate hint polygonOffset'], - [3, 'texParameteri texParameterf drawArrays vertexAttrib2f stencilFunc stencilOp'], - [4, 'viewport clearColor scissor vertexAttrib3f colorMask drawElements renderbufferStorage blendFuncSeparate blendColor stencilFuncSeparate stencilOpSeparate'], + [3, 'texParameteri texParameterf vertexAttrib2f stencilFunc stencilOp'], + [4, 'viewport clearColor scissor vertexAttrib3f colorMask renderbufferStorage blendFuncSeparate blendColor stencilFuncSeparate stencilOpSeparate'], [5, 'vertexAttrib4f'], - [6, 'vertexAttribPointer'], [8, 'copyTexImage2D copyTexSubImage2D']].forEach(function(data) { var num = data[0]; var names = data[1]; From 2b012610c54da149b480bce7ea3b75480a7b60e9 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 20:58:00 -0500 Subject: [PATCH 221/326] cleanups --- src/library_gl.js | 41 ++++++++++++++++++++++------------------- src/settings.js | 6 ++---- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 0d6b799b78d12..80dc2006bbf97 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -19,10 +19,12 @@ var LibraryGL = { uniforms: [], shaders: [], +#if FULL_ES2 clientBuffers: [], enabledClientBuffers: [], currArrayBuffer: 0, currElementArrayBuffer: 0, +#endif uniformTable: {}, // name => uniform ID. the uID must be identical until relinking, cannot create a new uID each call to glGetUniformLocation @@ -182,34 +184,35 @@ var LibraryGL = { }, #if FULL_ES2 - calcBufLength: function (size, type, stride, cnt) { - if (stride > 0) - return cnt * stride; // XXXvlad this is not exactly correct I don't think + calcBufLength: function(size, type, stride, count) { + if (stride > 0) { + return count * stride; // XXXvlad this is not exactly correct I don't think + } - var typesz; + var typeSize; switch (type) { case Module.ctx.UNSIGNED_BYTE: case Module.ctx.BYTE: - typesz = 1; + typeSize = 1; break; case Module.ctx.UNSIGNED_SHORT: case Module.ctx.SHORT: - typesz = 2; + typeSize = 2; break; case Module.ctx.UNSIGNED_INT: case Module.ctx.INT: case Module.ctx.FLOAT: - typesz = 4; + typeSize = 4; break; case Module.ctx.DOUBLE: - typesz = 8; + typeSize = 8; break; } - return size * typesz * cnt; + return size * typeSize * count; }, - preDrawHandleClientVertexAttribBindings: function(cnt) { + preDrawHandleClientVertexAttribBindings: function(count) { GL.resetBufferBinding = false; for (var i = 0; i < GL.maxVertexAttribs; ++i) { if (!GL.enabledClientBuffers[i] || !GL.clientBuffers[i]) @@ -222,7 +225,7 @@ var LibraryGL = { var buf = Module.ctx.createBuffer(); Module.ctx.bindBuffer(Module.ctx.ARRAY_BUFFER, buf); Module.ctx.bufferData(Module.ctx.ARRAY_BUFFER, - HEAPU8.subarray(cb.ptr, cb.ptr + GL.calcBufLength(cb.size, cb.type, cb.stride, cnt)), + HEAPU8.subarray(cb.ptr, cb.ptr + GL.calcBufLength(cb.size, cb.type, cb.stride, count)), Module.ctx.DYNAMIC_DRAW); Module.ctx.vertexAttribPointer(i, cb.size, cb.type, cb.normalized, cb.stride, 0); } @@ -2898,40 +2901,40 @@ var LibraryGL = { Module.ctx.disableVertexAttribArray(index); }, - glDrawArrays: function(mode, first, cnt) { + glDrawArrays: function(mode, first, count) { #if FULL_ES2 // bind any client-side buffers - GL.preDrawHandleClientVertexAttribBindings(cnt); + GL.preDrawHandleClientVertexAttribBindings(count); #endif - Module.ctx.drawArrays(mode, first, cnt); + Module.ctx.drawArrays(mode, first, count); #if FULL_ES2 GL.postDrawHandleClientVertexAttribBindings(); #endif }, - glDrawElements: function(mode, cnt, type, indices) { + glDrawElements: function(mode, count, type, indices) { #if FULL_ES2 var buf; if (!GL.currElementArrayBuffer) { buf = Module.ctx.createBuffer(); Module.ctx.bindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, buf); Module.ctx.bufferData(Module.ctx.ELEMENT_ARRAY_BUFFER, - HEAPU8.subarray(indices, indices + GL.calcBufLength(1, type, 0, cnt)), + HEAPU8.subarray(indices, indices + GL.calcBufLength(1, type, 0, count)), Module.ctx.DYNAMIC_DRAW); // the index is now 0 indices = 0; } // bind any client-side buffers - GL.preDrawHandleClientVertexAttribBindings(cnt); + GL.preDrawHandleClientVertexAttribBindings(count); #endif - Module.ctx.drawElements(mode, cnt, type, indices); + Module.ctx.drawElements(mode, count, type, indices); #if FULL_ES2 - GL.postDrawHandleClientVertexAttribBindings(cnt); + GL.postDrawHandleClientVertexAttribBindings(count); if (!GL.currElementArrayBuffer) { Module.ctx.bindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, null); diff --git a/src/settings.js b/src/settings.js index dbce836d5aba0..82cbebe4441c5 100644 --- a/src/settings.js +++ b/src/settings.js @@ -166,10 +166,8 @@ var GL_DEBUG = 0; // Print out all calls into WebGL. As with LIBRARY_DEBUG, you var GL_TESTING = 0; // When enabled, sets preserveDrawingBuffer in the context, to allow tests to work (but adds overhead) var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers are var GL_UNSAFE_OPTS = 1; // Enables some potentially-unsafe optimizations in GL emulation code -var FORCE_GL_EMULATION = 0; // Forces inclusion of GL emulation code. This lets you use non-WebGL features - // like clientside data. GL commands that are not in WebGL will automatically - // include this feature, but if you just use pure GLES commands *and* need - // emualation, you will need to enable it manually with this flag. +var FULL_ES2 = 0; // Forces support for all GLES2 features, not just the WebGL-friendly subset. +var FORCE_GL_EMULATION = 0; // Forces inclusion of full GL emulation code. var DISABLE_EXCEPTION_CATCHING = 0; // Disables generating code to actually catch exceptions. If the code you // are compiling does not actually rely on catching exceptions (but the From b729f7a89a03a6ad6ddda1061d687305ee25c6e7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 21:07:37 -0500 Subject: [PATCH 222/326] refactor byteSizeByTypeRoot and use it in FULL_ES2 --- src/library_gl.js | 58 +++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 37 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 80dc2006bbf97..9141e196bdf41 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -26,6 +26,21 @@ var LibraryGL = { currElementArrayBuffer: 0, #endif + byteSizeByTypeRoot: 0x1400, // GL_BYTE + byteSizeByType: [ + 1, // GL_BYTE + 1, // GL_UNSIGNED_BYTE + 2, // GL_SHORT + 2, // GL_UNSIGNED_SHORT + 4, // GL_INT + 4, // GL_UNSIGNED_INT + 4, // GL_FLOAT + 2, // GL_2_BYTES + 3, // GL_3_BYTES + 4, // GL_4_BYTES + 8 // GL_DOUBLE + ], + uniformTable: {}, // name => uniform ID. the uID must be identical until relinking, cannot create a new uID each call to glGetUniformLocation packAlignment: 4, // default alignment is 4 bytes @@ -188,27 +203,7 @@ var LibraryGL = { if (stride > 0) { return count * stride; // XXXvlad this is not exactly correct I don't think } - - var typeSize; - switch (type) { - case Module.ctx.UNSIGNED_BYTE: - case Module.ctx.BYTE: - typeSize = 1; - break; - case Module.ctx.UNSIGNED_SHORT: - case Module.ctx.SHORT: - typeSize = 2; - break; - case Module.ctx.UNSIGNED_INT: - case Module.ctx.INT: - case Module.ctx.FLOAT: - typeSize = 4; - break; - case Module.ctx.DOUBLE: - typeSize = 8; - break; - } - + var typeSize = GL.byteSizeByType[type - GL.byteSizeByTypeRoot]; return size * typeSize * count; }, @@ -1697,17 +1692,6 @@ var LibraryGL = { clientActiveTexture: 0, clientColor: null, - byteSizeByTypeRoot: 0x1400, // GL_BYTE - byteSizeByType: [ - 1, // GL_BYTE - 1, // GL_UNSIGNED_BYTE - 2, // GL_SHORT - 2, // GL_UNSIGNED_SHORT - 4, // GL_INT - 4, // GL_UNSIGNED_INT - 4 // GL_FLOAT - ], - setClientAttribute: function(name, size, type, stride, pointer) { var attrib = this.clientAttributes[name]; attrib.name = name; @@ -1783,7 +1767,7 @@ var LibraryGL = { #endif this.enabledClientAttributes[name] = true; this.setClientAttribute(name, size, type, 0, this.rendererComponentPointer); - this.rendererComponentPointer += size * this.byteSizeByType[type - this.byteSizeByTypeRoot]; + this.rendererComponentPointer += size * GL.byteSizeByType[type - GL.byteSizeByTypeRoot]; } else { this.rendererComponents[name]++; } @@ -1807,7 +1791,7 @@ var LibraryGL = { cacheItem = temp ? temp : (cacheItem[attribute.name] = GL.immediate.rendererCacheItemTemplate.slice()); temp = cacheItem[attribute.size]; cacheItem = temp ? temp : (cacheItem[attribute.size] = GL.immediate.rendererCacheItemTemplate.slice()); - var typeIndex = attribute.type - GL.immediate.byteSizeByTypeRoot; // ensure it starts at 0 to keep the cache items dense + var typeIndex = attribute.type - GL.byteSizeByTypeRoot; // ensure it starts at 0 to keep the cache items dense temp = cacheItem[typeIndex]; cacheItem = temp ? temp : (cacheItem[typeIndex] = GL.immediate.rendererCacheItemTemplate.slice()); } @@ -2243,7 +2227,7 @@ var LibraryGL = { for (var i = 0; i < attributes.length; i++) { var attribute = attributes[i]; if (!attribute) break; - var size = attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot]; + var size = attribute.size * GL.byteSizeByType[attribute.type - GL.byteSizeByTypeRoot]; if (size % 4 != 0) size += 4 - (size % 4); // align everything attribute.offset = bytes; bytes += size; @@ -2255,7 +2239,7 @@ var LibraryGL = { for (var i = 0; i < attributes.length; i++) { var attribute = attributes[i]; if (!attribute) break; - var size4 = Math.floor((attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot])/4); + var size4 = Math.floor((attribute.size * GL.byteSizeByType[attribute.type - GL.byteSizeByTypeRoot])/4); for (var j = 0; j < count; j++) { for (var k = 0; k < size4; k++) { // copy in chunks of 4 bytes, our alignment makes this possible HEAP32[((start + attribute.offset + bytes*j)>>2) + k] = HEAP32[(attribute.pointer>>2) + j*size4 + k]; @@ -2273,7 +2257,7 @@ var LibraryGL = { assert((attribute.offset - bytes)%4 == 0); // XXX assuming 4-alignment bytes += attribute.offset - bytes; } - bytes += attribute.size * GL.immediate.byteSizeByType[attribute.type - GL.immediate.byteSizeByTypeRoot]; + bytes += attribute.size * GL.byteSizeByType[attribute.type - GL.byteSizeByTypeRoot]; if (bytes % 4 != 0) bytes += 4 - (bytes % 4); // XXX assuming 4-alignment } assert(beginEnd || bytes <= stride); // if not begin-end, explicit stride should make sense with total byte size From 25c344becdbb1f96a514479452e0b29ddf9f7ce5 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 21:11:18 -0500 Subject: [PATCH 223/326] expose current buffers outside of FULL_ES2 - needed for gl emulation --- src/library_gl.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 9141e196bdf41..2e5fe918a137b 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -22,9 +22,9 @@ var LibraryGL = { #if FULL_ES2 clientBuffers: [], enabledClientBuffers: [], +#endif currArrayBuffer: 0, currElementArrayBuffer: 0, -#endif byteSizeByTypeRoot: 0x1400, // GL_BYTE byteSizeByType: [ @@ -210,8 +210,7 @@ var LibraryGL = { preDrawHandleClientVertexAttribBindings: function(count) { GL.resetBufferBinding = false; for (var i = 0; i < GL.maxVertexAttribs; ++i) { - if (!GL.enabledClientBuffers[i] || !GL.clientBuffers[i]) - continue; + if (!GL.enabledClientBuffers[i] || !GL.clientBuffers[i]) continue; GL.resetBufferBinding = true; From a748f17dfd73123366294645c37362618d02ab10 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 21:43:09 -0500 Subject: [PATCH 224/326] fix glIs* --- src/library_gl.js | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/library_gl.js b/src/library_gl.js index 2e5fe918a137b..d165ede2f7ee7 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -535,11 +535,9 @@ var LibraryGL = { }, glIsBuffer: function(buffer) { - var fb = GL.buffers[buffer]; - if (typeof(fb) == 'undefined') { - return 0; - } - return Module.ctx.isBuffer(fb); + var b = GL.buffers[buffer]; + if (!b) return 0; + return Module.ctx.isBuffer(b); }, glGenRenderbuffers__sig: 'vii', @@ -570,11 +568,9 @@ var LibraryGL = { }, glIsRenderbuffer: function(renderbuffer) { - var fb = GL.renderbuffers[renderbuffer]; - if (typeof(fb) == 'undefined') { - return 0; - } - return Module.ctx.isRenderbuffer(fb); + var rb = GL.renderbuffers[renderbuffer]; + if (!rb) return 0; + return Module.ctx.isRenderbuffer(rb); }, glGetUniformfv: function(program, location, params) { @@ -940,11 +936,9 @@ var LibraryGL = { }, glIsShader: function(shader) { - var fb = GL.shaders[shader]; - if (typeof(fb) == 'undefined') { - return 0; - } - return Module.ctx.isShader(fb); + var s = GL.shaders[shader]; + if (!s) return 0; + return Module.ctx.isShader(s); }, glCreateProgram__sig: 'i', @@ -1057,9 +1051,7 @@ var LibraryGL = { glIsFramebuffer__sig: 'ii', glIsFramebuffer: function(framebuffer) { var fb = GL.framebuffers[framebuffer]; - if (typeof(fb) == 'undefined') { - return 0; - } + if (!fb) return 0; return Module.ctx.isFramebuffer(fb); }, From de3cbc986cdf32e71b57b01766324d7cac68bda6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 21:50:00 -0500 Subject: [PATCH 225/326] comment out hardcoded debug paths --- tests/runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 9e2955446d02d..5e704c2e35fa2 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11971,8 +11971,8 @@ def test_jcache(self): if input_file not in srcs: srcs[input_file] = curr else: - open('/home/alon/Dev/emscripten/a', 'w').write(srcs[input_file]) - open('/home/alon/Dev/emscripten/b', 'w').write(curr) + #open('/home/alon/Dev/emscripten/a', 'w').write(srcs[input_file]) + #open('/home/alon/Dev/emscripten/b', 'w').write(curr) assert abs(len(curr)/float(len(srcs[input_file]))-1)<0.01, 'contents may shift in order, but must remain the same size %d vs %d' % (len(curr), len(srcs[input_file])) + '\n' + errtail used_jcache = used_jcache or ('--jcache' in args) assert used_jcache == os.path.exists(JCache.get_cachename('emscript_files')) From dd61bf0a31c9b4367fab0c8868b64c4377f3f16f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Wed, 27 Feb 2013 22:04:03 -0500 Subject: [PATCH 226/326] fix and enable gles2 tests --- .../ParticleSystem/ParticleSystem_orig.c | 48 ++++++++++++------- .../Chapter_9/TextureWrap/TextureWrap_orig.c | 2 +- tests/runner.py | 21 +++++--- 3 files changed, 46 insertions(+), 25 deletions(-) diff --git a/tests/glbook/Chapter_13/ParticleSystem/ParticleSystem_orig.c b/tests/glbook/Chapter_13/ParticleSystem/ParticleSystem_orig.c index 378d05a7f219c..02fddd9c5d25f 100644 --- a/tests/glbook/Chapter_13/ParticleSystem/ParticleSystem_orig.c +++ b/tests/glbook/Chapter_13/ParticleSystem/ParticleSystem_orig.c @@ -17,9 +17,16 @@ #include #include "esUtil.h" -#define NUM_PARTICLES 1000 +#define NUM_PARTICLES 2000 #define PARTICLE_SIZE 7 +int randomTemp = 8765; +float myrandom() { + int curr = randomTemp; + randomTemp = (1140671485 * randomTemp + 12820163) % 4294967296; + return ((float)curr) / 4294967296; +} + typedef struct { // Handle to a program object @@ -145,17 +152,17 @@ int Init ( ESContext *esContext ) float *particleData = &userData->particleData[i * PARTICLE_SIZE]; // Lifetime of particle - (*particleData++) = ( (float)(rand() % 10000) / 10000.0f ); + (*particleData++) = myrandom(); // End position of particle - (*particleData++) = ( (float)(rand() % 10000) / 5000.0f ) - 1.0f; - (*particleData++) = ( (float)(rand() % 10000) / 5000.0f ) - 1.0f; - (*particleData++) = ( (float)(rand() % 10000) / 5000.0f ) - 1.0f; + (*particleData++) = myrandom() * 2 - 1.0f; + (*particleData++) = myrandom() * 2 - 1.0f; + (*particleData++) = myrandom() * 2 - 1.0f; // Start position of particle - (*particleData++) = ( (float)(rand() % 10000) / 40000.0f ) - 0.125f; - (*particleData++) = ( (float)(rand() % 10000) / 40000.0f ) - 0.125f; - (*particleData++) = ( (float)(rand() % 10000) / 40000.0f ) - 0.125f; + (*particleData++) = myrandom() * 0.25 - 0.125f; + (*particleData++) = myrandom() * 0.25 - 0.125f; + (*particleData++) = myrandom() * 0.25 - 0.125f; } @@ -188,17 +195,17 @@ void Update ( ESContext *esContext, float deltaTime ) userData->time = 0.0f; // Pick a new start location and color - centerPos[0] = ( (float)(rand() % 10000) / 10000.0f ) - 0.5f; - centerPos[1] = ( (float)(rand() % 10000) / 10000.0f ) - 0.5f; - centerPos[2] = ( (float)(rand() % 10000) / 10000.0f ) - 0.5f; + centerPos[0] = myrandom() - 0.5f; + centerPos[1] = myrandom() - 0.5f; + centerPos[2] = myrandom() - 0.5f; glUniform3fv ( userData->centerPositionLoc, 1, ¢erPos[0] ); // Random color - color[0] = ( (float)(rand() % 10000) / 20000.0f ) + 0.5f; - color[1] = ( (float)(rand() % 10000) / 20000.0f ) + 0.5f; - color[2] = ( (float)(rand() % 10000) / 20000.0f ) + 0.5f; - color[3] = 0.5; + color[0] = myrandom() * 0.5 + 0.5f; + color[1] = myrandom() * 0.5 + 0.5f; + color[2] = myrandom() * 0.5 + 0.5f; + color[3] = 1.0; glUniform4fv ( userData->colorLoc, 1, &color[0] ); } @@ -252,6 +259,8 @@ void Draw ( ESContext *esContext ) // Set the sampler texture unit to 0 glUniform1i ( userData->samplerLoc, 0 ); + Update ( esContext, 133 * 0.001125 ); + glDrawArrays( GL_POINTS, 0, NUM_PARTICLES ); eglSwapBuffers ( esContext->eglDisplay, esContext->eglSurface ); @@ -280,15 +289,18 @@ int main ( int argc, char *argv[] ) esInitContext ( &esContext ); esContext.userData = &userData; - esCreateWindow ( &esContext, "ParticleSystem", 640, 480, ES_WINDOW_RGB ); + esCreateWindow ( &esContext, "ParticleSystem", 320, 240, ES_WINDOW_RGB ); if ( !Init ( &esContext ) ) return 0; esRegisterDrawFunc ( &esContext, Draw ); - esRegisterUpdateFunc ( &esContext, Update ); + //esRegisterUpdateFunc ( &esContext, Update ); - esMainLoop ( &esContext ); + Draw (&esContext); + Draw (&esContext); + + //esMainLoop ( &esContext ); ShutDown ( &esContext ); } diff --git a/tests/glbook/Chapter_9/TextureWrap/TextureWrap_orig.c b/tests/glbook/Chapter_9/TextureWrap/TextureWrap_orig.c index fe22282f55dde..e3531f04f14af 100644 --- a/tests/glbook/Chapter_9/TextureWrap/TextureWrap_orig.c +++ b/tests/glbook/Chapter_9/TextureWrap/TextureWrap_orig.c @@ -243,7 +243,7 @@ int main ( int argc, char *argv[] ) esInitContext ( &esContext ); esContext.userData = &userData; - esCreateWindow ( &esContext, "MipMap 2D", 640, 480, ES_WINDOW_RGB ); + esCreateWindow ( &esContext, "MipMap 2D", 320, 240, ES_WINDOW_RGB ); if ( !Init ( &esContext ) ) return 0; diff --git a/tests/runner.py b/tests/runner.py index 5e704c2e35fa2..eb7d3c2de7ca4 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -10717,21 +10717,30 @@ def btest(self, filename, expected=None, reference=None, reference_slack=0, args if type(expected) is str: expected = [expected] self.run_browser('test.html', '.', ['/report_result?' + e for e in expected]) - def zzztest_gles2_emulation(self): + def test_gles2_emulation(self): + shutil.copyfile(path_from_root('tests', 'glbook', 'Chapter_10', 'MultiTexture', 'basemap.tga'), self.in_dir('basemap.tga')) + shutil.copyfile(path_from_root('tests', 'glbook', 'Chapter_10', 'MultiTexture', 'lightmap.tga'), self.in_dir('lightmap.tga')) + shutil.copyfile(path_from_root('tests', 'glbook', 'Chapter_13', 'ParticleSystem', 'smoke.tga'), self.in_dir('smoke.tga')) + for source, reference in [ (os.path.join('glbook', 'Chapter_2', 'Hello_Triangle', 'Hello_Triangle_orig.c'), path_from_root('tests', 'glbook', 'CH02_HelloTriangle.png')), - (os.path.join('glbook', 'Chapter_8', 'Simple_VertexShader', 'Simple_VertexShader_orig.c'), path_from_root('tests', 'glbook', 'CH08_SimpleVertexShader.png')), - (os.path.join('glbook', 'Chapter_9', 'TextureWrap', 'TextureWrap_orig.c'), path_from_root('tests', 'glbook', 'CH09_TextureWrap')), - (os.path.join('glbook', 'Chapter_9', 'Simple_TextureCubemap', 'Simple_TextureCubemap_orig.c'), path_from_root('tests', 'glbook', 'CH09_TextureCubemap.png')), + #(os.path.join('glbook', 'Chapter_8', 'Simple_VertexShader', 'Simple_VertexShader_orig.c'), path_from_root('tests', 'glbook', 'CH08_SimpleVertexShader.png')), # XXX needs INT extension in WebGL + (os.path.join('glbook', 'Chapter_9', 'TextureWrap', 'TextureWrap_orig.c'), path_from_root('tests', 'glbook', 'CH09_TextureWrap.png')), + #(os.path.join('glbook', 'Chapter_9', 'Simple_TextureCubemap', 'Simple_TextureCubemap_orig.c'), path_from_root('tests', 'glbook', 'CH09_TextureCubemap.png')), # XXX needs INT extension in WebGL (os.path.join('glbook', 'Chapter_9', 'Simple_Texture2D', 'Simple_Texture2D_orig.c'), path_from_root('tests', 'glbook', 'CH09_SimpleTexture2D.png')), - (os.path.join('glbook', 'Chapter_10', 'MultiTexture', 'MultiTexture_orig.c'), path_from_root('tests', 'glbook', 'CH10_Multitexture.png')), + (os.path.join('glbook', 'Chapter_10', 'MultiTexture', 'MultiTexture_orig.c'), path_from_root('tests', 'glbook', 'CH10_MultiTexture.png')), (os.path.join('glbook', 'Chapter_13', 'ParticleSystem', 'ParticleSystem_orig.c'), path_from_root('tests', 'glbook', 'CH13_ParticleSystem.png')), ]: print source self.btest(source, reference=reference, args=['-I' + path_from_root('tests', 'glbook', 'Common'), - path_from_root('tests', 'glbook', 'Common', 'esUtil.c')]) + path_from_root('tests', 'glbook', 'Common', 'esUtil.c'), + path_from_root('tests', 'glbook', 'Common', 'esShader.c'), + path_from_root('tests', 'glbook', 'Common', 'esShapes.c'), + path_from_root('tests', 'glbook', 'Common', 'esTransform.c'), + '-s', 'FULL_ES2=1', + '--preload-file', 'basemap.tga', '--preload-file', 'lightmap.tga', '--preload-file', 'smoke.tga']) def test_emscripten_api(self): self.btest('emscripten_api_browser.cpp', '1', args=['-s', '''EXPORTED_FUNCTIONS=['_main', '_third']''']) From 6ba1c5d72bcbbbb8a0dd8100384a367a4c3683f4 Mon Sep 17 00:00:00 2001 From: Michael Riss Date: Thu, 28 Feb 2013 12:10:12 +0100 Subject: [PATCH 227/326] added missing test case must have gotten lost in the rebasing operation ... --- tests/runner.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index 9cf40543ce4d1..342fdb9e7146d 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -5078,6 +5078,22 @@ def test_printf_more(self): } ''' self.do_run(src, '22 : me and myself 25 1.34\n21 waka 95\n') + + def test_perror(self): + src = r''' + #include + #include + #include + #include + + int main( int argc, char** argv ){ + int retval = open( "NonExistingFile", O_RDONLY ); + if( retval == -1 ) + perror( "Cannot open NonExistingFile" ); + return 0; + } + ''' + self.do_run(src, 'Cannot open NonExistingFile: No such file or directory\n') def test_atoX(self): if self.emcc_args is None: return self.skip('requires ta2') From 4b57c3cc7b5abd704b682dc4eb72606088af8344 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 10:28:22 -0500 Subject: [PATCH 228/326] support multiple arguments to default html print, printErr --- src/shell.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/shell.html b/src/shell.html index 3a0171de582e5..4f39b26a1cc9c 100644 --- a/src/shell.html +++ b/src/shell.html @@ -32,6 +32,7 @@ var element = document.getElementById('output'); element.value = ''; // clear browser cache return function(text) { + text = Array.prototype.slice.call(arguments).join(' '); // These replacements are necessary if you render to raw HTML //text = text.replace(/&/g, "&"); //text = text.replace(/ Date: Thu, 28 Feb 2013 10:33:00 -0500 Subject: [PATCH 229/326] disable llvm lto except for -O3, due to issues we have been seeing --- emcc | 7 ++++--- tests/runner.py | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/emcc b/emcc index 213bdf6a732e8..3fa580fdbb8dc 100755 --- a/emcc +++ b/emcc @@ -193,6 +193,7 @@ Options that are modified or new in %s include: -s DOUBLE_MODE=0 -s PRECISE_I64_MATH=0 --closure 1 + --llvm-lto 1 This is not recommended at all. A better idea is to try each of these separately on top of @@ -235,8 +236,8 @@ Options that are modified or new in %s include: 2: -O2 LLVM optimizations 3: -O3 LLVM optimizations (default in -O2+) - --llvm-lto 0: No LLVM LTO (default in -O0) - 1: LLVM LTO (default in -O1+) + --llvm-lto 0: No LLVM LTO (default in -O2 and below) + 1: LLVM LTO (default in -O3) Note: If LLVM optimizations are not run (see --llvm-opts), setting this to 1 has no effect. @@ -816,7 +817,7 @@ try: newargs = newargs + [default_cxx_std] if llvm_opts is None: llvm_opts = LLVM_OPT_LEVEL[opt_level] - if llvm_lto is None: llvm_lto = llvm_opts > 0 + if llvm_lto is None: llvm_lto = opt_level >= 3 if opt_level <= 0: keep_llvm_debug = keep_js_debug = True # always keep debug in -O0 if opt_level > 0: keep_llvm_debug = False # JS optimizer wipes out llvm debug info from being visible if closure is None and opt_level == 3: closure = True diff --git a/tests/runner.py b/tests/runner.py index eb7d3c2de7ca4..b5f7cd6caed41 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8526,7 +8526,7 @@ def test_emcc(self): # emcc -s RELOOP=1 src.cpp ==> should pass -s to emscripten.py. --typed-arrays is a convenient alias for -s USE_TYPED_ARRAYS for params, test, text in [ (['-s', 'INLINING_LIMIT=0'], lambda generated: 'function _dump' in generated, 'no inlining without opts'), - (['-O1', '-s', 'INLINING_LIMIT=0'], lambda generated: 'function _dump' not in generated, 'inlining'), + (['-O3', '-s', 'INLINING_LIMIT=0', '--closure', '0'], lambda generated: 'function _dump' not in generated, 'lto/inlining'), (['-s', 'USE_TYPED_ARRAYS=0'], lambda generated: 'new Int32Array' not in generated, 'disable typed arrays'), (['-s', 'USE_TYPED_ARRAYS=1'], lambda generated: 'IHEAPU = ' in generated, 'typed arrays 1 selected'), ([], lambda generated: 'Module["_dump"]' not in generated, 'dump is not exported by default'), @@ -9479,8 +9479,8 @@ def test_chunking(self): try: os.environ['EMCC_DEBUG'] = '1' for asm, linkable, chunks, js_chunks in [ - (0, 0, 2, 2), (0, 1, 4, 4), - (1, 0, 2, 2), (1, 1, 4, 5) + (0, 0, 3, 2), (0, 1, 4, 4), + (1, 0, 3, 2), (1, 1, 4, 5) ]: print asm, linkable, chunks, js_chunks output, err = Popen([PYTHON, EMCC, path_from_root('tests', 'hello_libcxx.cpp'), '-O1', '-s', 'LINKABLE=%d' % linkable, '-s', 'ASM_JS=%d' % asm], stdout=PIPE, stderr=PIPE).communicate() From 39f68160b61b0d358edf36bfb220486da79909d8 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 10:51:08 -0500 Subject: [PATCH 230/326] translate undef to 0 in toNiceIdent, so it never gets emitted as an identifier --- src/parseTools.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/parseTools.js b/src/parseTools.js index 117c498724455..f139cc3f3b734 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -78,6 +78,7 @@ function toNiceIdent(ident) { assert(ident); if (parseFloat(ident) == ident) return ident; if (ident == 'null') return '0'; // see parseNumerical + if (ident == 'undef') return '0'; return ident.replace('%', '$').replace(/["&\\ \.@:<>,\*\[\]\(\)-]/g, '_'); } From 7880f929b46de2da7910d2050eac40bfbf32bda7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 11:22:14 -0500 Subject: [PATCH 231/326] inline by default, now that lto is off by default --- emcc | 1 - src/settings.js | 5 +- tests/bullet/output3.txt | 270 +++++++++++++++++++++++++++++++++++++++ tests/runner.py | 21 ++- tools/shared.py | 3 +- 5 files changed, 288 insertions(+), 12 deletions(-) create mode 100644 tests/bullet/output3.txt diff --git a/emcc b/emcc index 3fa580fdbb8dc..300745400bbdb 100755 --- a/emcc +++ b/emcc @@ -189,7 +189,6 @@ Options that are modified or new in %s include: -O3 As -O2, plus dangerous optimizations that may break the generated code! This adds - -s INLINING_LIMIT=0 -s DOUBLE_MODE=0 -s PRECISE_I64_MATH=0 --closure 1 diff --git a/src/settings.js b/src/settings.js index 82cbebe4441c5..3fd313263d3b5 100644 --- a/src/settings.js +++ b/src/settings.js @@ -107,10 +107,11 @@ var SKIP_STACK_IN_SMALL = 1; // When enabled, does not push/pop the stack at all // In particular, be careful with the autodebugger! (We do turn // this off automatically in that case, though.) var INLINE_LIBRARY_FUNCS = 1; // Will inline library functions that have __inline defined -var INLINING_LIMIT = 50; // A limit on inlining. If 0, we will inline normally in LLVM and +var INLINING_LIMIT = 0; // A limit on inlining. If 0, we will inline normally in LLVM and // closure. If greater than 0, we will *not* inline in LLVM, and // we will prevent inlining of functions of this size or larger - // in closure. + // in closure. 50 is a reasonable setting if you do not want + // inlining var CATCH_EXIT_CODE = 0; // If set, causes exit() to throw an exception object which is caught // in a try..catch block and results in the exit status being // returned from run(). If zero (the default), the program is just diff --git a/tests/bullet/output3.txt b/tests/bullet/output3.txt new file mode 100644 index 0000000000000..78f27f9f6ab25 --- /dev/null +++ b/tests/bullet/output3.txt @@ -0,0 +1,270 @@ +world pos = 2.00,10.00,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.99,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.98,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.97,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.96,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.94,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.92,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.90,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.85,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.82,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.78,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.75,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.71,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.67,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.62,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.57,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.52,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.47,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.42,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.36,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.30,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.23,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.17,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.10,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,9.02,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.95,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.87,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.79,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.71,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.62,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.53,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.44,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.35,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.25,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.15,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,8.05,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.94,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.83,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.72,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.61,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.49,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.37,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.25,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.13,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,7.00,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.87,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.73,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.60,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.46,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.32,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.17,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,6.03,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.72,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.57,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.41,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.25,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,5.08,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.92,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.75,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.58,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.40,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.22,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,4.04,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.86,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.67,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.48,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.29,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,3.10,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.90,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.70,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.50,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.29,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,2.08,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.87,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.66,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.44,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.22,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,1.00,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.77,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.55,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.32,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,0.08,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.15,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.39,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.63,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-0.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.13,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.38,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.63,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-1.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.14,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.40,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.67,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-2.93,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-3.20,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-3.48,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-3.75,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.03,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.31,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.59,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.88,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.17,0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.13,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.10,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.08,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.05,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.03,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.01,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.99,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.98,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.97,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.96,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.95,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.96,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.97,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.98,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-4.99,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 +world pos = 2.00,-5.00,-0.00 +world pos = 0.00,-56.00,0.00 diff --git a/tests/runner.py b/tests/runner.py index b5f7cd6caed41..7e720fe43c711 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -1820,6 +1820,8 @@ def test_loop(self): generated = open('src.cpp.o.js', 'r').read() def test_stack(self): + Settings.INLINING_LIMIT = 50 + src = ''' #include int test(int i) { @@ -3069,6 +3071,8 @@ def test_stack_byval(self): def test_stack_varargs(self): if self.emcc_args is None: return # too slow in other modes + Settings.INLINING_LIMIT = 50 + # We should not blow up the stack with numerous varargs src = r''' #include @@ -3089,6 +3093,8 @@ def test_stack_varargs(self): self.do_run(src, 'ok!') def test_stack_void(self): + Settings.INLINING_LIMIT = 50 + src = r''' #include @@ -6952,6 +6958,7 @@ def test_sqlite(self): # gcc -O3 -I/home/alon/Dev/emscripten/tests/sqlite -ldl src.c if self.emcc_args is None: return self.skip('Very slow without ta2, and we would also need to include dlmalloc manually without emcc') if Settings.QUANTUM_SIZE == 1: return self.skip('TODO FIXME') + self.banned_js_engines = [NODE_JS] # OOM in older node Settings.CORRECT_SIGNS = 1 Settings.CORRECT_OVERFLOWS = 0 @@ -6997,7 +7004,8 @@ def test_the_bullet(self): # Called thus so it runs late in the alphabetical cyc self.do_run(open(path_from_root('tests', 'bullet', 'Demos', 'HelloWorld', 'HelloWorld.cpp'), 'r').read(), [open(path_from_root('tests', 'bullet', 'output.txt'), 'r').read(), # different roundings - open(path_from_root('tests', 'bullet', 'output2.txt'), 'r').read()], + open(path_from_root('tests', 'bullet', 'output2.txt'), 'r').read(), + open(path_from_root('tests', 'bullet', 'output3.txt'), 'r').read()], libraries=self.get_library('bullet', [os.path.join('src', '.libs', 'libBulletDynamics.a'), os.path.join('src', '.libs', 'libBulletCollision.a'), os.path.join('src', '.libs', 'libLinearMath.a')], @@ -8521,7 +8529,6 @@ def test_emcc(self): assert re.search('HEAP8\[\$?\w+ \+ \(+\$?\w+ ', generated) or re.search('HEAP8\[HEAP32\[', generated), 'eliminator should create compound expressions, and fewer one-time vars' # also in -O1, but easier to test in -O2 assert ('_puts(' in generated) == (opt_level >= 1), 'with opt >= 1, llvm opts are run and they should optimize printf to puts' assert 'function _main() {' in generated, 'Should be unminified, including whitespace' - assert ('-O3' in (params+(bc_params or []))) or'function _dump' in generated, 'No inlining by default' # emcc -s RELOOP=1 src.cpp ==> should pass -s to emscripten.py. --typed-arrays is a convenient alias for -s USE_TYPED_ARRAYS for params, test, text in [ @@ -9689,25 +9696,25 @@ def test_optimize_normally(self): } ''') out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), '-O2', '-o', 'main.o'], stdout=PIPE, stderr=PIPE).communicate() - assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" in err) == optimize_normally + assert ("emcc: LLVM opts: ['-O3']" in err) == optimize_normally assert (' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err) == optimize_normally out, err = Popen([PYTHON, EMCC, self.in_dir('supp.cpp'), '-O2', '-o', 'supp.o'], stdout=PIPE, stderr=PIPE).communicate() - assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" in err) == optimize_normally + assert ("emcc: LLVM opts: ['-O3']" in err) == optimize_normally assert (' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err) == optimize_normally out, err = Popen([PYTHON, EMCC, self.in_dir('main.o'), self.in_dir('supp.o'), '-O2', '-o', 'both.o'], stdout=PIPE, stderr=PIPE).communicate() - assert "emcc: LLVM opts: ['-disable-inlining', '-O3']" not in err + assert "emcc: LLVM opts: ['-O3']" not in err assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' not in err assert ('despite EMCC_OPTIMIZE_NORMALLY since not source code' in err) == optimize_normally out, err = Popen([PYTHON, EMCC, self.in_dir('main.cpp'), self.in_dir('supp.cpp'), '-O2', '-o', 'both2.o'], stdout=PIPE, stderr=PIPE).communicate() - assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" in err) == optimize_normally + assert ("emcc: LLVM opts: ['-O3']" in err) == optimize_normally assert (' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' in err) == optimize_normally for last in ['both.o', 'both2.o']: out, err = Popen([PYTHON, EMCC, self.in_dir('both.o'), '-O2', '-o', last + '.js'], stdout=PIPE, stderr=PIPE).communicate() - assert ("emcc: LLVM opts: ['-disable-inlining', '-O3']" not in err) == optimize_normally + assert ("emcc: LLVM opts: ['-O3']" not in err) == optimize_normally assert ' with -O3 since EMCC_OPTIMIZE_NORMALLY defined' not in err output = run_js(last + '.js') assert 'yello' in output, 'code works' diff --git a/tools/shared.py b/tools/shared.py index 524145fa5c988..3912245d60015 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -574,8 +574,7 @@ def apply_opt_level(self, opt_level, noisy=False): if opt_level >= 2: Settings.RELOOP = 1 if opt_level >= 3: - # Aside from these, -O3 also runs closure compiler - Settings.INLINING_LIMIT = 0 + # Aside from these, -O3 also runs closure compiler and llvm lto Settings.DOUBLE_MODE = 0 Settings.PRECISE_I64_MATH = 0 if noisy: print >> sys.stderr, 'Warning: Applying some potentially unsafe optimizations! (Use -O2 if this fails.)' From acc641341450ccd466ae8fcac04aac4cce71baad Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 11:51:37 -0500 Subject: [PATCH 232/326] test updates --- tests/runner.py | 5 ++++- tools/js_optimizer.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 7e720fe43c711..d2b5854210fa2 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11937,6 +11937,8 @@ def test_jcache(self): try: os.environ['EMCC_DEBUG'] = '1' + os.environ['EMCC_JSOPT_MIN_CHUNK_SIZE'] = str(1024*512) + self.working_dir = os.path.join(TEMP_DIR, 'emscripten_temp') if not os.path.exists(self.working_dir): os.makedirs(self.working_dir) @@ -11963,7 +11965,7 @@ def test_jcache(self): (['--jcache'], 'hello_malloc.cpp', False, True, False, True, False, True, []), ([], 'hello_malloc.cpp', False, False, False, False, False, False, []), # new, huge file - ([], 'hello_libcxx.cpp', False, False, False, False, False, False, ('2 chunks', '3 chunks')), + ([], 'hello_libcxx.cpp', False, False, False, False, False, False, ('3 chunks',)), (['--jcache'], 'hello_libcxx.cpp', True, False, True, False, True, False, []), (['--jcache'], 'hello_libcxx.cpp', False, True, False, True, False, True, []), ([], 'hello_libcxx.cpp', False, False, False, False, False, False, []), @@ -11996,6 +11998,7 @@ def test_jcache(self): finally: del os.environ['EMCC_DEBUG'] + del os.environ['EMCC_JSOPT_MIN_CHUNK_SIZE'] else: raise Exception('Test runner is confused: ' + str(sys.argv)) diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 52cae6e51bded..ca42081d7d52e 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -11,7 +11,7 @@ def path_from_root(*pathelems): JS_OPTIMIZER = path_from_root('tools', 'js-optimizer.js') NUM_CHUNKS_PER_CORE = 1.5 -MIN_CHUNK_SIZE = 1024*1024 +MIN_CHUNK_SIZE = int(os.environ.get('EMCC_JSOPT_MIN_CHUNK_SIZE') or 1024*1024) # configuring this is just for debugging purposes MAX_CHUNK_SIZE = 20*1024*1024 WINDOWS = sys.platform.startswith('win') From 19c75ecd8cf0b4684f0eafea2b6516db6c713c2e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 13:58:08 -0500 Subject: [PATCH 233/326] enlarge v8/node stack size, to avoid relooper stack overflows on huge projects --- tools/shared.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/shared.py b/tools/shared.py index 3912245d60015..93f9745d48701 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -469,6 +469,7 @@ def timeout_run(proc, timeout, note='unnamed process', full_output=False): def run_js(filename, engine=None, args=[], check_timeout=False, stdout=PIPE, stderr=None, cwd=None, full_output=False): if engine is None: engine = JS_ENGINES[0] if type(engine) is not list: engine = [engine] + if 'd8' in engine[0] or 'node' in engine[0]: engine += ['--stack_size=8192'] command = engine + [filename] + (['--'] if 'd8' in engine[0] else []) + args return timeout_run(Popen(command, stdout=stdout, stderr=stderr, cwd=cwd), 15*60 if check_timeout else None, 'Execution', full_output=full_output) From 85dd57e4960a9b18ed29c60c28a22756d55547a4 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 14:05:01 -0500 Subject: [PATCH 234/326] fix test_exceptions --- tests/runner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/runner.py b/tests/runner.py index d2b5854210fa2..48e56c7379fef 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2472,6 +2472,7 @@ class MyException ''' Settings.DISABLE_EXCEPTION_CATCHING = 0 + self.emcc_args.pop() ; self.emcc_args.pop() # disable closure to work around a closure bug self.do_run(src, 'Throw...Construct...Catched...Destruct...Throw...Construct...Copy...Catched...Destruct...Destruct...') def test_white_list_exception(self): From 9c0ebb1072b35d98e437ab0438e26c4bd67d7a43 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 14:06:55 -0500 Subject: [PATCH 235/326] fix test_exit_stack --- tests/runner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/runner.py b/tests/runner.py index 48e56c7379fef..3f0202653684d 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2625,6 +2625,7 @@ def test_exit_stack(self): if self.emcc_args is None: return self.skip('requires emcc') if Settings.ASM_JS: return self.skip('uses report_stack without exporting') + Settings.INLINING_LIMIT = 50 Settings.CATCH_EXIT_CODE = 1 src = r''' From 46969771d06478d5204d2b3578412bab3ae6b5f3 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 14:09:29 -0500 Subject: [PATCH 236/326] add missing calloc dependency in gc --- src/library_gc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library_gc.js b/src/library_gc.js index 083019cadfb98..f6db74d86fc8d 100644 --- a/src/library_gc.js +++ b/src/library_gc.js @@ -4,7 +4,7 @@ if (GC_SUPPORT) { EXPORTED_FUNCTIONS['_realloc'] = 1; var LibraryGC = { - $GC__deps: ['sbrk', 'realloc'], + $GC__deps: ['sbrk', 'realloc', 'calloc'], $GC: { ALLOCATIONS_TO_GC: 1*1024*1024, From f759ed3c67aaa0292d9392668ac8933b83ceacd1 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 14:11:00 -0500 Subject: [PATCH 237/326] fix test_uncaught_exception --- tests/runner.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 3f0202653684d..f71335f8be6ed 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2511,8 +2511,6 @@ def test_white_list_exception(self): def test_uncaught_exception(self): if Settings.ASM_JS: return self.skip('no exceptions support in asm') if self.emcc_args is None: return self.skip('no libcxx inclusion without emcc') - if '-O2' in self.emcc_args: - self.emcc_args += ['--closure', '1'] # Use closure here for some additional coverage Settings.DISABLE_EXCEPTION_CATCHING = 0 From 6477d51f2e380f281631a363b6343f11248cd71a Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 14:12:23 -0500 Subject: [PATCH 238/326] fix test_white_list_exception --- tests/runner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/runner.py b/tests/runner.py index f71335f8be6ed..cc6f8b1dbe11d 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2479,6 +2479,7 @@ def test_white_list_exception(self): if Settings.ASM_JS: return self.skip('no exceptions support in asm') Settings.DISABLE_EXCEPTION_CATCHING = 2 Settings.EXCEPTION_CATCHING_WHITELIST = ["__Z12somefunctionv"] + Settings.INLINING_LIMIT = 50 # otherwise it is inlined and not identified src = ''' #include From 1b88f7337bbb641ce3d85a155472ff97b8620a95 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 15:26:52 -0500 Subject: [PATCH 239/326] disable v8 stack size increase because of windows instability; make it easy to at least add params to node/v8 in ~/.emscripten by defining a list there and not just a string --- tools/js_optimizer.py | 2 +- tools/shared.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index ca42081d7d52e..231c6257e98f4 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -139,7 +139,7 @@ def write_chunk(chunk, i): if len(filenames) > 0: # XXX Use '--nocrankshaft' to disable crankshaft to work around v8 bug 1895, needed for older v8/node (node 0.6.8+ should be ok) - commands = map(lambda filename: [js_engine, JS_OPTIMIZER, filename, 'noPrintMetadata'] + passes, filenames) + commands = map(lambda filename: js_engine + [JS_OPTIMIZER, filename, 'noPrintMetadata'] + passes, filenames) #print [' '.join(command) for command in commands] cores = min(cores, filenames) diff --git a/tools/shared.py b/tools/shared.py index 93f9745d48701..10e267a71065b 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -2,6 +2,10 @@ from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp +def listify(x): + if type(x) is not list: return [x] + return x + # On Windows python suffers from a particularly nasty bug if python is spawning new processes while python itself is spawned from some other non-console process. # Use a custom replacement for Popen on Windows to avoid the "WindowsError: [Error 6] The handle is invalid" errors when emcc is driven through cmake or mingw32-make. # See http://bugs.python.org/issue3905 @@ -158,7 +162,8 @@ def check_llvm_version(): def check_node_version(): try: - actual = Popen([NODE_JS, '--version'], stdout=PIPE).communicate()[0].strip() + node = listify(NODE_JS) + actual = Popen(node + ['--version'], stdout=PIPE).communicate()[0].strip() version = tuple(map(int, actual.replace('v', '').split('.'))) if version >= EXPECTED_NODE_VERSION: return True @@ -468,8 +473,8 @@ def timeout_run(proc, timeout, note='unnamed process', full_output=False): def run_js(filename, engine=None, args=[], check_timeout=False, stdout=PIPE, stderr=None, cwd=None, full_output=False): if engine is None: engine = JS_ENGINES[0] - if type(engine) is not list: engine = [engine] - if 'd8' in engine[0] or 'node' in engine[0]: engine += ['--stack_size=8192'] + engine = listify(engine) + #if not WINDOWS: 'd8' in engine[0] or 'node' in engine[0]: engine += ['--stack_size=8192'] # needed for some big projects command = engine + [filename] + (['--'] if 'd8' in engine[0] else []) + args return timeout_run(Popen(command, stdout=stdout, stderr=stderr, cwd=cwd), 15*60 if check_timeout else None, 'Execution', full_output=full_output) @@ -1092,7 +1097,7 @@ def pick_llvm_opts(optimization_level): @staticmethod def js_optimizer(filename, passes, jcache): - return js_optimizer.run(filename, passes, NODE_JS, jcache) + return js_optimizer.run(filename, passes, listify(NODE_JS), jcache) @staticmethod def closure_compiler(filename): From 4a9fb987811bcd846ea471d2650f1e2595f4db29 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Thu, 28 Feb 2013 15:47:58 -0500 Subject: [PATCH 240/326] Make Mix_QuickLoad_RAW work again --- src/library_sdl.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/library_sdl.js b/src/library_sdl.js index 67891f6396024..2fd141a9d6a88 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1315,6 +1315,8 @@ var LibrarySDL = { // the browser has already preloaded the audio file. var channelInfo = SDL.channels[channel]; channelInfo.audio = audio = audio.cloneNode(true); + channelInfo.audio.numChannels = audio.numChannels = info.audio.numChannels; + channelInfo.audio.frequency = audio.frequency = info.audio.frequency; if (SDL.channelFinished) { audio['onended'] = function() { // TODO: cache these Runtime.getFuncWrapper(SDL.channelFinished, 'vi')(channel); From ee43f1b5c312f3fee62e7e0dc38634b227aaa60c Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 15:49:00 -0500 Subject: [PATCH 241/326] test fixes --- tests/runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index cc6f8b1dbe11d..1d0fc07f3b210 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8664,7 +8664,7 @@ def test_cmake(self): # Run through node, if CMake produced a .js file. if cmake_outputs[i].endswith('.js'): - ret = Popen([NODE_JS, tempdirname + '/' + cmake_outputs[i]], stdout=PIPE).communicate()[0] + ret = Popen(listify(NODE_JS) + [tempdirname + '/' + cmake_outputs[i]], stdout=PIPE).communicate()[0] assert 'hello, world!' in ret, 'Running cmake-based .js application failed!' finally: os.chdir(path_from_root('tests')) # Move away from the directory we are about to remove. @@ -9471,7 +9471,7 @@ def test_js_optimizer(self): (path_from_root('tools', 'test-js-optimizer-asm-last.js'), open(path_from_root('tools', 'test-js-optimizer-asm-last-output.js')).read(), ['asm', 'last']), ]: - output = Popen([NODE_JS, path_from_root('tools', 'js-optimizer.js'), input] + passes, stdin=PIPE, stdout=PIPE).communicate()[0] + output = Popen(listify(NODE_JS) + [path_from_root('tools', 'js-optimizer.js'), input] + passes, stdin=PIPE, stdout=PIPE).communicate()[0] self.assertIdentical(expected, output.replace('\r\n', '\n').replace('\n\n', '\n')) def test_m_mm(self): From fb0bf77684627f9225dd4dcf998152f7a328c4bf Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 15:50:12 -0500 Subject: [PATCH 242/326] pthread_key_delete --- src/library.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/library.js b/src/library.js index 1dcc57ad34f29..4d7b397e60529 100644 --- a/src/library.js +++ b/src/library.js @@ -6758,6 +6758,15 @@ LibraryManager.library = { _pthread_key_create.keys[key] = value; }, + pthread_key_delete: ['$ERRNO_CODES'], + pthread_key_delete: function(key) { + if (_pthread_key_create.keys[key]) { + delete _pthread_key_create.keys[key]; + return 0; + } + return ERRNO_CODES.EINVAL; + }, + pthread_cleanup_push: function(routine, arg) { __ATEXIT__.push({ func: function() { Runtime.dynCall('vi', routine, [arg]) } }) _pthread_cleanup_push.level = __ATEXIT__.length; From 9c746eb4f9b6e1f093abb6db61f926a71f310a83 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 15:52:14 -0500 Subject: [PATCH 243/326] simplify audio fix from last commit --- src/library_sdl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/library_sdl.js b/src/library_sdl.js index 2fd141a9d6a88..96ae6fa2da149 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1315,8 +1315,8 @@ var LibrarySDL = { // the browser has already preloaded the audio file. var channelInfo = SDL.channels[channel]; channelInfo.audio = audio = audio.cloneNode(true); - channelInfo.audio.numChannels = audio.numChannels = info.audio.numChannels; - channelInfo.audio.frequency = audio.frequency = info.audio.frequency; + audio.numChannels = info.audio.numChannels; + audio.frequency = info.audio.frequency; if (SDL.channelFinished) { audio['onended'] = function() { // TODO: cache these Runtime.getFuncWrapper(SDL.channelFinished, 'vi')(channel); From 3733f600c6c6f1982baa955bc79a597bf444eb79 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 16:10:42 -0500 Subject: [PATCH 244/326] fix test_exceptions --- tests/runner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index 1d0fc07f3b210..c0c95e4a297f9 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -2472,7 +2472,8 @@ class MyException ''' Settings.DISABLE_EXCEPTION_CATCHING = 0 - self.emcc_args.pop() ; self.emcc_args.pop() # disable closure to work around a closure bug + if '-O2' in self.emcc_args: + self.emcc_args.pop() ; self.emcc_args.pop() # disable closure to work around a closure bug self.do_run(src, 'Throw...Construct...Catched...Destruct...Throw...Construct...Copy...Catched...Destruct...Destruct...') def test_white_list_exception(self): From 7213118b8b4e5ed4bc4d005d093231316bd1cb29 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 16:13:42 -0500 Subject: [PATCH 245/326] fix insertvalue of undef, fixes s_x_x.test_exceptions --- src/jsifier.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jsifier.js b/src/jsifier.js index cb2340617ac8e..bd0e5e75c191b 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1244,7 +1244,7 @@ function JSify(data, functionsOnly, givenFunctions) { makeFuncLineActor('insertvalue', function(item) { assert(item.indexes.length == 1); // TODO: see extractvalue var ret = '(', ident; - if (item.ident === 'undef') { + if (item.ident === '0') { item.ident = 'tempValue'; ret += item.ident + ' = [' + makeEmptyStruct(item.type) + '], '; } From cfcf2febb094a3befd65fc24f26da385c4d03090 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 16:47:35 -0500 Subject: [PATCH 246/326] do not emit floats from getFastValue divisions, can break asm --- src/parseTools.js | 4 +++- tests/cases/udiv.ll | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/cases/udiv.ll diff --git a/src/parseTools.js b/src/parseTools.js index f139cc3f3b734..78c9e31c57a5c 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1375,7 +1375,9 @@ function getFastValue(a, op, b, type) { if (op == 'pow') { return Math.pow(a, b).toString(); } else { - return eval(a + op + '(' + b + ')').toString(); // parens protect us from "5 - -12" being seen as "5--12" which is "(5--)12" + var value = eval(a + op + '(' + b + ')'); // parens protect us from "5 - -12" being seen as "5--12" which is "(5--)12" + if (op == '/' && type in Runtime.INT_TYPES) value = value|0; // avoid emitting floats + return value.toString(); } } if (op == 'pow') { diff --git a/tests/cases/udiv.ll b/tests/cases/udiv.ll new file mode 100644 index 0000000000000..a809db5a2f705 --- /dev/null +++ b/tests/cases/udiv.ll @@ -0,0 +1,19 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +@.str = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +; [#uses=0] +define i32 @main() { +entry: + %retval = alloca i32, align 4 ; [#uses=1 type=i32*] + %waka = udiv i32 -1806866064, 5 + %waka2 = add i32 2247483648, 2247483648 + store i32 0, i32* %retval + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), i32 %waka, i32 %waka2) ; [#uses=0 type=i32] + ret i32 1 +} + +; [#uses=1] +declare i32 @printf(i8*, ...) From 7c67a3f2d15f62747ff639cd1f5437c6f5a5ce52 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 28 Feb 2013 23:08:34 -0500 Subject: [PATCH 247/326] add testing for registerize running in asm.js mode (but not with -g) --- tests/runner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index c0c95e4a297f9..bf6986dbfbd6f 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -8534,6 +8534,8 @@ def test_emcc(self): # emcc -s RELOOP=1 src.cpp ==> should pass -s to emscripten.py. --typed-arrays is a convenient alias for -s USE_TYPED_ARRAYS for params, test, text in [ + (['-s', 'ASM_JS=1', '-O2'], lambda generated: 'var i1 = 0' in generated, 'registerize is run by default in -O2'), + (['-s', 'ASM_JS=1', '-O2', '-g'], lambda generated: 'var i1 = 0' not in generated, 'registerize is cancelled by -g'), (['-s', 'INLINING_LIMIT=0'], lambda generated: 'function _dump' in generated, 'no inlining without opts'), (['-O3', '-s', 'INLINING_LIMIT=0', '--closure', '0'], lambda generated: 'function _dump' not in generated, 'lto/inlining'), (['-s', 'USE_TYPED_ARRAYS=0'], lambda generated: 'new Int32Array' not in generated, 'disable typed arrays'), From 92ac4c40712443bb8e6315110f85078564774528 Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Fri, 1 Mar 2013 16:04:31 +0700 Subject: [PATCH 248/326] Print output filename that couldn't be created. --- tools/shared.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index 10e267a71065b..533f9ec0ce7da 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -950,14 +950,14 @@ def emcc(filename, args=[], output_filename=None, stdout=None, stderr=None, env= output_filename = filename + '.o' try_delete(output_filename) Popen([PYTHON, EMCC, filename] + args + ['-o', output_filename], stdout=stdout, stderr=stderr, env=env).communicate() - assert os.path.exists(output_filename), 'emcc could not create output file' + assert os.path.exists(output_filename), 'emcc could not create output file: ' + output_filename @staticmethod def emar(action, output_filename, filenames, stdout=None, stderr=None, env=None): try_delete(output_filename) Popen([PYTHON, EMAR, action, output_filename] + filenames, stdout=stdout, stderr=stderr, env=env).communicate() if 'c' in action: - assert os.path.exists(output_filename), 'emar could not create output file' + assert os.path.exists(output_filename), 'emar could not create output file: ' + output_filename @staticmethod def emscripten(filename, append_ext=True, extra_args=[]): From a398b3be356a1a940714e9827c67701d9e1f8427 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 12:36:44 -0500 Subject: [PATCH 249/326] handle calls to aliases in asm --- src/jsifier.js | 2 ++ src/modules.js | 11 ++++++++++- tests/cases/callalias.ll | 21 +++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 tests/cases/callalias.ll diff --git a/src/jsifier.js b/src/jsifier.js index bd0e5e75c191b..3483b8b110f98 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -375,6 +375,7 @@ function JSify(data, functionsOnly, givenFunctions) { var ret = [item]; item.JS = 'var ' + item.ident + ';'; // Set the actual value in a postset, since it may be a global variable. We also order by dependencies there + Variables.globals[item.ident].targetIdent = item.value.ident; var value = Variables.globals[item.ident].resolvedAlias = finalizeLLVMParameter(item.value); var fix = ''; if (BUILD_AS_SHARED_LIB == 2 && !item.private_) { @@ -1284,6 +1285,7 @@ function JSify(data, functionsOnly, givenFunctions) { // We cannot compile assembly. See comment in intertyper.js:'Call' assert(ident != 'asm', 'Inline assembly cannot be compiled to JavaScript!'); + ident = Variables.resolveAliasToIdent(ident); var shortident = ident.slice(1); var callIdent = LibraryManager.getRootIdent(shortident); if (callIdent) { diff --git a/src/modules.js b/src/modules.js index 712d8a780f8e2..afdbc21e1678b 100644 --- a/src/modules.js +++ b/src/modules.js @@ -179,7 +179,16 @@ var Variables = { globals: {}, indexedGlobals: {}, // for indexed globals, ident ==> index // Used in calculation of indexed globals - nextIndexedOffset: 0 + nextIndexedOffset: 0, + + resolveAliasToIdent: function(ident) { + while (1) { + var varData = Variables.globals[ident]; + if (!(varData && varData.targetIdent)) break; + ident = varData.targetIdent; // might need to eval to turn (6) into 6 + } + return ident; + }, }; var Types = { diff --git a/tests/cases/callalias.ll b/tests/cases/callalias.ll new file mode 100644 index 0000000000000..9bc1ffd069509 --- /dev/null +++ b/tests/cases/callalias.ll @@ -0,0 +1,21 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +@.str = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +@othername = alias internal void ()* @doit + +define internal void @doit() unnamed_addr nounwind align 2 { + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0 type=i32] + ret void +} + +define i32 @main() { +entry: + tail call void ()* @othername() nounwind + ret i32 1 +} + +declare i32 @printf(i8*, ...) + From f4c9cea88197070a7b1e5b9e480e1c32354aab7b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 12:39:06 -0500 Subject: [PATCH 250/326] add another testcase --- tests/cases/callalias2.ll | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 tests/cases/callalias2.ll diff --git a/tests/cases/callalias2.ll b/tests/cases/callalias2.ll new file mode 100644 index 0000000000000..abdbe4e637f60 --- /dev/null +++ b/tests/cases/callalias2.ll @@ -0,0 +1,22 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +@.str = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +@othername = alias internal void ()* @doit +@othername2 = alias internal void ()* @othername + +define internal void @doit() unnamed_addr nounwind align 2 { + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0 type=i32] + ret void +} + +define i32 @main() { +entry: + tail call void ()* @othername2() nounwind + ret i32 1 +} + +declare i32 @printf(i8*, ...) + From ec2a9d6326c3c7f34bc2830a9f3f99face7df4bc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 12:45:46 -0500 Subject: [PATCH 251/326] make intentional faults work in asm --- src/jsifier.js | 6 +++++- tests/runner.py | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/jsifier.js b/src/jsifier.js index 3483b8b110f98..53d23140ff1c2 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -914,7 +914,11 @@ function JSify(data, functionsOnly, givenFunctions) { case VAR_NATIVIZED: if (isNumber(item.ident)) { // Direct write to a memory address; this may be an intentional segfault, if not, it is a bug in the source - return 'throw "fault on write to ' + item.ident + '";'; + if (ASM_JS) { + return 'abort(' + item.ident + ')'; + } else { + return 'throw "fault on write to ' + item.ident + '";'; + } } return item.ident + '=' + value + ';'; // We have the actual value here break; diff --git a/tests/runner.py b/tests/runner.py index bf6986dbfbd6f..ce5f346ad7656 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -4048,7 +4048,6 @@ def test_time_c(self): self.do_run(src, 'time: ') # compilation check, mainly def test_intentional_fault(self): - if Settings.ASM_JS: return self.skip('no throw support in asm') # Some programs intentionally segfault themselves, we should compile that into a throw src = r''' int main () { @@ -4056,7 +4055,7 @@ def test_intentional_fault(self): return 0; } ''' - self.do_run(src, 'fault on write to 0') + self.do_run(src, 'fault on write to 0' if not Settings.ASM_JS else 'Assertion: 0') def test_trickystring(self): src = r''' From dbac2b2beee684a56642608f8e93f9eabf765bcf Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 13:31:13 -0500 Subject: [PATCH 252/326] abort on loads from absolute addresses, just like saves --- src/jsifier.js | 9 +++++++++ tests/cases/inttoptrfloat.ll | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tests/cases/inttoptrfloat.ll diff --git a/src/jsifier.js b/src/jsifier.js index 53d23140ff1c2..7066f8c510073 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1226,6 +1226,15 @@ function JSify(data, functionsOnly, givenFunctions) { var impl = item.ident ? getVarImpl(item.funcData, item.ident) : VAR_EMULATED; switch (impl) { case VAR_NATIVIZED: { + if (isNumber(item.ident)) { + item.assignTo = null; + // Direct read from a memory address; this may be an intentional segfault, if not, it is a bug in the source + if (ASM_JS) { + return 'abort(' + item.ident + ')'; + } else { + return 'throw "fault on read from ' + item.ident + '";'; + } + } return value; // We have the actual value here } case VAR_EMULATED: return makeGetValue(value, 0, item.type, 0, item.unsigned, 0, item.align); diff --git a/tests/cases/inttoptrfloat.ll b/tests/cases/inttoptrfloat.ll new file mode 100644 index 0000000000000..607539fe20b93 --- /dev/null +++ b/tests/cases/inttoptrfloat.ll @@ -0,0 +1,19 @@ +; ModuleID = 'tests/hello_world.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +@.str = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +; [#uses=0] +define i32 @main() { +entry: + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), float %b) ; [#uses=0 type=i32] + %ff = alloca float, align 4 + %a = load float* inttoptr (i32 4 to float*), align 4 + store float %a, float* %ff, align 4 + %b = load float* %ff, align 4 + ret i32 1 +} + +; [#uses=1] +declare i32 @printf(i8*, ...) From 37106eebf48382d77ac886ea897ca196db22f6f5 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 19:49:48 -0500 Subject: [PATCH 253/326] do not emit code in a label after a return --- src/analyzer.js | 3 ++- tests/cases/breakinthemiddle2.ll | 35 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 tests/cases/breakinthemiddle2.ll diff --git a/src/analyzer.js b/src/analyzer.js index c930231f641be..f9b0c5af8b3d0 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -18,6 +18,7 @@ function recomputeLines(func) { // Handy sets var BRANCH_INVOKE = set('branch', 'invoke'); +var LABEL_ENDERS = set('branch', 'return'); var SIDE_EFFECT_CAUSERS = set('call', 'invoke', 'atomic'); var UNUNFOLDABLE = set('value', 'structvalue', 'type', 'phiparam'); @@ -88,7 +89,7 @@ function analyzer(data, sidePass) { // Internal line if (!currLabelFinished) { item.functions.slice(-1)[0].labels.slice(-1)[0].lines.push(subItem); // If this line fails, perhaps missing a label? - if (subItem.intertype === 'branch') { + if (subItem.intertype in LABEL_ENDERS) { currLabelFinished = true; } } else { diff --git a/tests/cases/breakinthemiddle2.ll b/tests/cases/breakinthemiddle2.ll new file mode 100644 index 0000000000000..318b49dc6d6da --- /dev/null +++ b/tests/cases/breakinthemiddle2.ll @@ -0,0 +1,35 @@ +@.str = private constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1] + +define linkonce_odr i32 @main() align 2 { + %333 = call i32 @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0] + %199 = trunc i8 1 to i1 ; [#uses=1] + br i1 %199, label %label555, label %label569 + +label555: ; preds = %0 + br label %label569 ; branch should ignore all code after it in the block + ; No predecessors! + %a472 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) + cleanup + %a473 = extractvalue { i8*, i32 } %a472, 0 + %a474 = extractvalue { i8*, i32 } %a472, 1 + br label %label569 + +label569: ; preds = %0 + br i1 %199, label %label990, label %label999 + +label990: + ret i32 0 ; ret should ignore all code after it in the block + ; No predecessors! + %a472 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) + cleanup + %a473 = extractvalue { i8*, i32 } %a472, 0 + %a474 = extractvalue { i8*, i32 } %a472, 1 + br label %label569 + +label999: ; preds = %555 + ret i32 0 +} + +declare i32 @printf(i8*) +declare i32 @__gxx_personality_v0(...) + From d8621333e64a71097957699b82c25f97ab1daaeb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 21:46:12 -0500 Subject: [PATCH 254/326] update csmith driver --- tests/fuzz/csmith_driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index d6719787888d1..be81cea7048e1 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -49,7 +49,7 @@ def try_js(args): shared.try_delete(filename + '.js') print '(compile)' - shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', '-s', 'PRECISE_I64_MATH=1', '-s', 'PRECISE_I32_MUL=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS + args, stderr=PIPE) + shared.execute([shared.EMCC, '-O2', '-s', 'ASM_JS=1', filename + '.c', '-o', filename + '.js'] + CSMITH_CFLAGS + args, stderr=PIPE) assert os.path.exists(filename + '.js') print '(run)' js = shared.run_js(filename + '.js', stderr=PIPE, engine=engine1, check_timeout=True) From 95a202de757b7453314cf1139a4a9fa5091ae9da Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 21:47:02 -0500 Subject: [PATCH 255/326] optimize processing of things like false & constant, add getFastValue in makeSignOp, and add fuzz tests that now pass --- src/parseTools.js | 9 +- tests/fuzz/2.c | 2006 ++++++++++++++++++++++++++++++++++++++++++++ tests/fuzz/2.c.txt | 1 + tests/fuzz/3.c | 1043 +++++++++++++++++++++++ tests/fuzz/3.c.txt | 1 + tests/runner.py | 16 +- 6 files changed, 3069 insertions(+), 7 deletions(-) create mode 100644 tests/fuzz/2.c create mode 100644 tests/fuzz/2.c.txt create mode 100644 tests/fuzz/3.c create mode 100644 tests/fuzz/3.c.txt diff --git a/src/parseTools.js b/src/parseTools.js index 78c9e31c57a5c..6a2089ad36f8a 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -1371,6 +1371,8 @@ var TWO_TWENTY = Math.pow(2, 20); function getFastValue(a, op, b, type) { a = a.toString(); b = b.toString(); + a = a == 'true' ? '1' : (a == 'false' ? '0' : a); + b = b == 'true' ? '1' : (b == 'false' ? '0' : b); if (isNumber(a) && isNumber(b)) { if (op == 'pow') { return Math.pow(a, b).toString(); @@ -1838,9 +1840,10 @@ function makeSignOp(value, type, op, force, ignore) { if (!CHECK_SIGNS || ignore) { if (bits === 32) { if (op === 're') { - return '((' + value + ')|0)'; + return '(' + getFastValue(value, '|', '0') + ')'; } else { - return '((' + value + ')>>>0)'; + + return '(' + getFastValue(value, '>>>', '0') + ')'; // Alternatively, we can consider the lengthier // return makeInlineCalculation('VALUE >= 0 ? VALUE : ' + Math.pow(2, bits) + ' + VALUE', value, 'tempBigInt'); // which does not always turn us into a 32-bit *un*signed value @@ -1849,7 +1852,7 @@ function makeSignOp(value, type, op, force, ignore) { if (op === 're') { return makeInlineCalculation('(VALUE << ' + (32-bits) + ') >> ' + (32-bits), value, 'tempInt'); } else { - return '((' + value + ')&' + (Math.pow(2, bits)-1) + ')'; + return '(' + getFastValue(value, '&', Math.pow(2, bits)-1) + ')'; } } else { // bits > 32 if (op === 're') { diff --git a/tests/fuzz/2.c b/tests/fuzz/2.c new file mode 100644 index 0000000000000..2063b2d17ccd2 --- /dev/null +++ b/tests/fuzz/2.c @@ -0,0 +1,2006 @@ +/* + * This is a RANDOMLY GENERATED PROGRAM. + * + * Generator: csmith 2.2.0 + * Git version: 2751ded + * Options: --no-volatiles --no-math64 + * Seed: 2601498443 + */ + +#include "csmith.h" + + +static long __undefined; + +/* --- Struct/Union Declarations --- */ +#pragma pack(push) +#pragma pack(1) +struct S0 { + uint32_t f0; + int16_t f1; + const uint16_t f2; + uint16_t f3; + uint8_t f4; +}; +#pragma pack(pop) + +struct S1 { + unsigned f0 : 4; + signed f1 : 23; + unsigned f2 : 21; + const unsigned f3 : 16; + unsigned f4 : 22; + signed f5 : 11; + signed f6 : 25; + unsigned f7 : 15; + unsigned f8 : 13; + uint32_t f9; +}; + +/* --- GLOBAL VARIABLES --- */ +static int32_t g_2 = 0xBD6C3F0BL; +static uint8_t g_5 = 0xC4L; +static struct S0 g_18 = {18446744073709551615UL,5L,0x0498L,0x20B5L,0xF6L}; +static int8_t g_36[8] = {0x09L,0x65L,0x09L,0x09L,0x65L,0x09L,0x09L,0x65L}; +static int32_t g_39 = 5L; +static int8_t g_40 = 9L; +static uint16_t g_71 = 0x2B10L; +static uint16_t g_79 = 0UL; +static struct S0 g_82 = {0xF60EFD82L,2L,0x24F1L,65530UL,7UL}; +static uint8_t g_119 = 4UL; +static uint32_t g_195 = 0x6554C541L; +static int32_t *g_199 = (void*)0; +static int16_t g_208 = 0L; +static uint32_t g_209 = 0UL; +static int32_t **g_220 = &g_199; +static uint16_t g_222 = 9UL; +static int32_t g_237 = 0x16D0E17FL; +static int32_t g_238 = (-6L); +static int32_t g_240 = 5L; +static uint32_t g_241 = 0x4C8054E4L; +static uint32_t g_251 = 0x944D6970L; +static uint8_t **g_254 = (void*)0; +static int8_t g_279 = 0x60L; +static int8_t g_280 = 1L; +static int32_t g_281 = 0x4E1FA7EEL; +static uint16_t g_282 = 1UL; +static int16_t *g_313[9][9][3] = {{{&g_208,&g_82.f1,(void*)0},{&g_82.f1,(void*)0,&g_208},{&g_208,&g_18.f1,(void*)0},{&g_82.f1,(void*)0,(void*)0},{&g_18.f1,&g_208,&g_82.f1},{&g_82.f1,&g_82.f1,&g_18.f1},{&g_208,&g_208,&g_18.f1},{&g_82.f1,&g_208,(void*)0},{&g_208,(void*)0,&g_18.f1}},{{&g_82.f1,&g_208,&g_18.f1},{&g_82.f1,&g_208,&g_208},{(void*)0,(void*)0,&g_82.f1},{&g_208,&g_208,&g_208},{&g_208,&g_18.f1,&g_208},{(void*)0,&g_208,&g_208},{(void*)0,(void*)0,&g_208},{&g_82.f1,(void*)0,&g_208},{&g_208,(void*)0,&g_208}},{{&g_18.f1,&g_208,&g_208},{&g_82.f1,&g_208,&g_18.f1},{&g_208,&g_18.f1,&g_82.f1},{&g_18.f1,&g_18.f1,&g_208},{&g_18.f1,&g_18.f1,&g_18.f1},{&g_208,(void*)0,(void*)0},{&g_82.f1,&g_18.f1,&g_82.f1},{&g_18.f1,(void*)0,&g_82.f1},{&g_208,&g_18.f1,&g_18.f1}},{{&g_82.f1,&g_18.f1,&g_208},{(void*)0,&g_18.f1,(void*)0},{(void*)0,(void*)0,&g_82.f1},{&g_208,&g_18.f1,(void*)0},{&g_208,(void*)0,&g_82.f1},{&g_18.f1,&g_18.f1,&g_208},{(void*)0,&g_18.f1,&g_208},{(void*)0,&g_18.f1,&g_82.f1},{(void*)0,&g_208,(void*)0}},{{&g_18.f1,&g_208,&g_82.f1},{&g_82.f1,(void*)0,(void*)0},{(void*)0,(void*)0,&g_208},{&g_82.f1,(void*)0,&g_18.f1},{(void*)0,&g_208,&g_82.f1},{&g_82.f1,&g_18.f1,&g_82.f1},{&g_18.f1,(void*)0,(void*)0},{(void*)0,&g_208,&g_18.f1},{(void*)0,&g_208,&g_18.f1}},{{&g_18.f1,&g_208,&g_18.f1},{(void*)0,&g_82.f1,&g_18.f1},{&g_208,&g_82.f1,&g_82.f1},{&g_18.f1,&g_208,(void*)0},{&g_82.f1,&g_208,&g_18.f1},{&g_208,&g_208,&g_208},{(void*)0,&g_82.f1,&g_18.f1},{&g_208,&g_208,(void*)0},{&g_18.f1,&g_82.f1,&g_82.f1}},{{&g_18.f1,&g_208,&g_18.f1},{&g_18.f1,(void*)0,&g_18.f1},{&g_208,&g_18.f1,&g_18.f1},{&g_208,&g_18.f1,&g_18.f1},{&g_18.f1,&g_82.f1,&g_82.f1},{&g_18.f1,&g_208,&g_18.f1},{&g_18.f1,&g_208,(void*)0},{&g_208,&g_18.f1,&g_18.f1},{(void*)0,(void*)0,(void*)0}},{{&g_208,&g_18.f1,&g_82.f1},{&g_82.f1,&g_208,&g_82.f1},{&g_18.f1,&g_208,(void*)0},{&g_208,&g_82.f1,&g_18.f1},{(void*)0,&g_18.f1,&g_82.f1},{&g_18.f1,&g_18.f1,&g_82.f1},{(void*)0,(void*)0,&g_18.f1},{&g_208,&g_208,(void*)0},{&g_208,&g_82.f1,&g_82.f1}},{{(void*)0,&g_208,&g_82.f1},{&g_18.f1,&g_82.f1,(void*)0},{&g_208,&g_208,&g_18.f1},{&g_18.f1,&g_208,(void*)0},{(void*)0,&g_82.f1,&g_208},{&g_18.f1,&g_82.f1,&g_208},{(void*)0,&g_82.f1,(void*)0},{(void*)0,&g_208,&g_82.f1},{&g_82.f1,&g_208,&g_82.f1}}}; +static uint32_t g_347 = 0xC4FCF803L; +static int32_t *g_366 = &g_240; +static int32_t **g_365 = &g_366; +static struct S1 g_391 = {1,2228,1279,15,579,-29,789,104,13,4294967287UL}; +static struct S1 *g_390 = &g_391; +static uint32_t g_408 = 0xCF847D91L; +static int32_t g_433 = 0x55EDE5F7L; +static int32_t g_434 = 0xB4C5C7AAL; +static int32_t g_499[3][1] = {{0x2CC689D6L},{0x2CC689D6L},{0x2CC689D6L}}; +static int32_t g_500 = 8L; +static uint32_t g_501 = 7UL; +static struct S0 g_508[9][4][7] = {{{{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL}},{{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL}},{{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL}},{{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL}}},{{{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL}},{{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL}},{{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL}},{{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL}}},{{{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL}},{{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0x1A9DC0E9L,0x3641L,65527UL,0xD3FCL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL}},{{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x1A87F5EEL,0xD3E2L,0xED27L,65535UL,255UL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL}},{{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{6UL,-1L,7UL,3UL,0xB7L},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{6UL,-1L,7UL,3UL,0xB7L}}},{{{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL}},{{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{6UL,-1L,7UL,3UL,0xB7L},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{6UL,-1L,7UL,3UL,0xB7L}},{{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL}},{{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{6UL,-1L,7UL,3UL,0xB7L},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{6UL,-1L,7UL,3UL,0xB7L}}},{{{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL}},{{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{6UL,-1L,7UL,3UL,0xB7L},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{6UL,-1L,7UL,3UL,0xB7L}},{{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL}},{{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{6UL,-1L,7UL,3UL,0xB7L},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{6UL,-1L,7UL,3UL,0xB7L}}},{{{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL}},{{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{6UL,-1L,7UL,3UL,0xB7L},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{6UL,-1L,7UL,3UL,0xB7L}},{{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL}},{{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{18446744073709551615UL,1L,0x9E3EL,0xDB7DL,1UL},{6UL,-1L,7UL,3UL,0xB7L},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{18446744073709551615UL,0x582EL,8UL,0x124DL,1UL},{6UL,-1L,7UL,3UL,0xB7L}}},{{{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0x2EB9A52EL,0x9EFDL,0x49E1L,0xB224L,0x6FL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{1UL,-9L,0x4EAEL,0x67B1L,0x62L},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L}},{{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{6UL,-1L,7UL,3UL,0xB7L},{0UL,0x1B92L,0UL,0x6816L,0x23L},{6UL,-1L,7UL,3UL,0xB7L},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL}},{{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{5UL,0x69A3L,0x0436L,0x936DL,0xAAL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L}},{{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{6UL,-1L,7UL,3UL,0xB7L},{0UL,0x1B92L,0UL,0x6816L,0x23L},{6UL,-1L,7UL,3UL,0xB7L},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL}}},{{{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{5UL,0x69A3L,0x0436L,0x936DL,0xAAL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L}},{{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{6UL,-1L,7UL,3UL,0xB7L},{0UL,0x1B92L,0UL,0x6816L,0x23L},{6UL,-1L,7UL,3UL,0xB7L},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL}},{{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{5UL,0x69A3L,0x0436L,0x936DL,0xAAL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L}},{{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{6UL,-1L,7UL,3UL,0xB7L},{0UL,0x1B92L,0UL,0x6816L,0x23L},{6UL,-1L,7UL,3UL,0xB7L},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL}}},{{{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{5UL,0x69A3L,0x0436L,0x936DL,0xAAL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L}},{{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{6UL,-1L,7UL,3UL,0xB7L},{0UL,0x1B92L,0UL,0x6816L,0x23L},{6UL,-1L,7UL,3UL,0xB7L},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL}},{{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0xDD780AAAL,0L,65532UL,0x908CL,0xFDL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{5UL,0x69A3L,0x0436L,0x936DL,0xAAL},{0xCB5D2F36L,5L,0xAAE3L,4UL,0x1FL},{0x66A29370L,1L,65533UL,0x58A9L,0xE0L}},{{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{18446744073709551612UL,-1L,1UL,0x787BL,0UL},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL},{6UL,-1L,7UL,3UL,0xB7L},{0UL,0x1B92L,0UL,0x6816L,0x23L},{6UL,-1L,7UL,3UL,0xB7L},{0xD58F413CL,0xF25BL,65531UL,0xB870L,0UL}}}}; +static int8_t *g_512 = (void*)0; +static int8_t **g_511 = &g_512; +static int8_t g_537[3] = {(-4L),(-4L),(-4L)}; +static int32_t g_540 = 0xE36F71D3L; +static int32_t g_541 = (-4L); +static uint32_t g_542 = 1UL; +static int32_t g_553 = 0x2FE5E350L; +static uint8_t g_555[1][2] = {{0x6EL,0x6EL}}; +static const int32_t g_564 = 0x25327763L; +static uint16_t *g_601 = (void*)0; +static const int32_t *g_628 = &g_499[2][0]; +static const int32_t **g_627[6][9][4] = {{{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628}},{{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628}},{{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{&g_628,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628}},{{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628}},{{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628}},{{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,&g_628,&g_628},{(void*)0,&g_628,(void*)0,&g_628},{(void*)0,&g_628,(void*)0,&g_628}}}; +static int32_t *g_672[8] = {&g_434,&g_2,&g_434,&g_2,&g_434,&g_2,&g_434,&g_2}; +static uint16_t g_802 = 1UL; +static int8_t g_809[5][1][8] = {{{(-1L),1L,(-1L),7L,0L,0x60L,0xEDL,0L}},{{0xA3L,(-1L),0xCFL,0x87L,0x50L,0L,0L,0L}},{{0xA3L,0L,0xA4L,0xA4L,0L,0xA3L,1L,7L}},{{(-1L),(-1L),0L,1L,0xCFL,(-6L),0L,0xEEL}},{{0x50L,7L,(-6L),1L,(-1L),1L,(-6L),7L}}}; +static uint32_t *g_825[3][2][1] = {{{&g_391.f9},{&g_391.f9}},{{&g_391.f9},{&g_391.f9}},{{&g_391.f9},{&g_391.f9}}}; +static int32_t g_876 = 0x2FE494ACL; +static const int8_t g_910 = 0x63L; +static uint16_t *** const g_962 = (void*)0; +static int16_t g_1052 = 0xF859L; +static uint16_t g_1105[9] = {0UL,0UL,0UL,0UL,0UL,0UL,0UL,0UL,0UL}; +static int32_t g_1109 = (-8L); +static struct S1 g_1113 = {2,990,1094,87,364,-7,-4072,0,16,0x351C817AL}; +static uint32_t *g_1142[1][6][3] = {{{&g_241,&g_18.f0,&g_408},{&g_209,&g_209,&g_408},{&g_18.f0,&g_241,&g_18.f0},{&g_195,&g_209,&g_195},{&g_195,&g_18.f0,&g_209},{&g_18.f0,&g_195,&g_195}}}; +static uint32_t **g_1141 = &g_1142[0][1][1]; +static struct S0 g_1169 = {8UL,0x2BA0L,1UL,65530UL,0x66L}; +static struct S0 *g_1168 = &g_1169; +static uint16_t g_1192[1][8] = {{0x03F8L,0x03F8L,0x03F8L,0x03F8L,0x03F8L,0x03F8L,0x03F8L,0x03F8L}}; +static int8_t g_1233[8] = {4L,0x9CL,4L,4L,0x9CL,4L,4L,0x9CL}; +static uint32_t g_1263 = 4294967287UL; +static int16_t **g_1272[8] = {&g_313[1][2][2],&g_313[1][2][2],&g_313[1][2][2],&g_313[1][2][2],&g_313[1][2][2],&g_313[1][2][2],&g_313[1][2][2],&g_313[1][2][2]}; +static int16_t ***g_1271[10] = {&g_1272[1],&g_1272[1],&g_1272[1],&g_1272[1],&g_1272[1],&g_1272[1],&g_1272[1],&g_1272[1],&g_1272[1],&g_1272[1]}; +static int16_t ****g_1270 = &g_1271[3]; +static int16_t g_1389 = 0xD9C6L; +static int8_t *g_1544[6] = {&g_40,&g_40,&g_40,&g_40,&g_40,&g_40}; + + +/* --- FORWARD DECLARATIONS --- */ +static uint16_t func_1(void); +static int32_t * func_6(int8_t p_7, int32_t * p_8); +static struct S0 func_9(int32_t * p_10, int32_t * p_11, int32_t * p_12); +static int32_t * func_13(const int16_t p_14, int32_t * p_15, int32_t * p_16); +static int32_t * func_19(int32_t * p_20, int32_t * p_21, struct S1 p_22); +static struct S1 func_24(uint8_t p_25, int8_t p_26, int32_t * p_27, int32_t p_28); +static uint32_t func_41(int32_t p_42, uint16_t * p_43, int32_t p_44, uint16_t p_45, int8_t * p_46); +static const uint16_t func_52(const int8_t * p_53, struct S0 p_54, uint16_t * p_55); +static const int8_t * func_56(int32_t * p_57, int16_t p_58, uint16_t * p_59, int8_t * p_60); +static uint32_t func_87(uint32_t p_88); + + +/* --- FUNCTIONS --- */ +/* ------------------------------------------ */ +/* + * reads : g_2 g_18 g_5 g_39 g_40 g_71 g_36 g_82 g_119 g_79 g_195 g_209 g_222 g_220 g_199 g_208 g_241 g_240 g_254 g_282 g_237 g_280 g_347 g_238 g_365 g_390 g_408 g_391.f4 g_391.f9 g_391 g_501 g_508.f0 g_541 g_508.f4 g_511 g_512 g_542 g_434 g_601 g_537 g_499 g_508.f2 g_627 g_251 g_508.f1 g_553 g_628 g_555 g_433 g_802 g_809 g_876 g_500 g_366 g_279 g_1105 g_1109 g_1192 g_1142 g_1389 g_1169.f1 g_508 g_1168 g_1169 g_1544 + * writes: g_2 g_5 g_18.f3 g_36 g_39 g_40 g_71 g_18.f4 g_82.f1 g_119 g_82.f4 g_79 g_195 g_199 g_209 g_82.f3 g_220 g_222 g_241 g_251 g_282 g_280 g_313 g_237 g_347 g_238 g_365 g_390 g_366 g_408 g_208 g_501 g_500 g_542 g_18.f1 g_434 g_254 g_541 g_672 g_433 g_279 g_825 g_809 g_876 g_540 g_537 g_802 g_555 g_1105 g_1109 g_18.f0 g_1113.f9 g_1141 g_82.f0 g_1168 g_1169.f3 g_1192 g_1389 g_601 g_1169.f1 g_240 + */ +static uint16_t func_1(void) +{ /* block id: 0 */ + const int32_t l_17 = 0x3AC9D73DL; + int32_t *l_23 = &g_2; + struct S1 l_33 = {2,-1611,502,54,563,-32,-5497,142,81,0xEA418246L}; + uint16_t *l_34 = &g_18.f3; + int8_t *l_35[4][3][10] = {{{&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],(void*)0,&g_36[3],&g_36[7],&g_36[0],&g_36[7]},{&g_36[3],(void*)0,&g_36[3],&g_36[7],&g_36[3],(void*)0,&g_36[3],&g_36[3],&g_36[0],&g_36[6]},{&g_36[3],(void*)0,&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],(void*)0,&g_36[3]}},{{&g_36[3],(void*)0,&g_36[0],&g_36[3],&g_36[7],&g_36[6],&g_36[3],&g_36[6],&g_36[7],&g_36[3]},{&g_36[3],(void*)0,&g_36[3],(void*)0,&g_36[7],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3]},{&g_36[7],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[7],&g_36[3],&g_36[3],&g_36[0],&g_36[3]}},{{&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3]},{&g_36[3],(void*)0,&g_36[7],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[7]},{&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[7],(void*)0,&g_36[3],(void*)0,&g_36[3],(void*)0}},{{&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[0],&g_36[0]},{&g_36[3],&g_36[3],&g_36[6],(void*)0,(void*)0,&g_36[6],&g_36[3],&g_36[3],&g_36[3],&g_36[0]},{(void*)0,(void*)0,&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],&g_36[3],(void*)0}}}; + int32_t *l_1108 = &g_1109; + int32_t *l_1545 = &g_238; + uint16_t l_1556 = 0x4844L; + int32_t *l_1557 = &g_433; + struct S0 *l_1560 = &g_1169; + int i, j, k; + for (g_2 = 0; (g_2 == 11); g_2++) + { /* block id: 3 */ + g_5 = g_2; + } + l_1545 = func_6(((func_9(func_13(l_17, (g_18 , func_19(l_23, l_23, func_24((*l_23), (0x2DC8L <= (g_18.f4 <= (safe_mod_func_int16_t_s_s(((((g_36[3] = ((safe_mul_func_int8_t_s_s((l_33 , (((*l_34) = (&g_2 == &l_17)) ^ g_2)), (*l_23))) >= (*l_23))) != 0x58L) != 0UL) , g_5), 3L)))), &g_2, g_5))), l_1108), g_1142[0][2][2], g_1142[0][1][1]) , (*l_1108)) & g_508[3][3][4].f2), l_1108); + (*l_1108) = ((*g_390) , ((safe_mod_func_int32_t_s_s(0xE4015B19L, ((*l_1557) |= ((safe_mul_func_int16_t_s_s((*l_1545), (*l_1545))) == ((safe_add_func_int16_t_s_s((safe_mul_func_int8_t_s_s((safe_div_func_uint16_t_u_u((*l_1108), (*l_23))), 0xE0L)), 0x3E3DL)) && 0x0202L))))) < (*l_23))); + for (g_240 = 0; (g_240 < (-25)); g_240 = safe_sub_func_int32_t_s_s(g_240, 6)) + { /* block id: 1024 */ + struct S0 **l_1561 = &g_1168; + (*l_1561) = l_1560; + } + return (*l_23); +} + + +/* ------------------------------------------ */ +/* + * reads : g_82.f4 g_628 g_499 g_2 g_1109 g_220 g_1544 + * writes: g_82.f4 g_82.f1 g_500 g_1109 g_2 g_199 + */ +static int32_t * func_6(int8_t p_7, int32_t * p_8) +{ /* block id: 996 */ + int32_t l_1514 = (-7L); + int32_t l_1517[10][3][7] = {{{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L},{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL},{0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L}},{{0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L},{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L},{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL}},{{0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L},{0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L},{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L}},{{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL},{0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L},{0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L}},{{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L},{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL},{0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L}},{{0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L},{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L},{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL}},{{0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L},{0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L},{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L}},{{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL},{0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L},{0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L}},{{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L},{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL},{0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L}},{{0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L,(-1L),0xD643F3D2L},{0x6027BB7EL,0xECF50607L,0xECF50607L,0x6027BB7EL,0x6027BB7EL,0xECF50607L,0xECF50607L},{0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL,(-1L),0x2C43085FL}}}; + uint16_t *l_1521 = (void*)0; + int8_t *l_1522 = &g_537[0]; + const struct S1 l_1523 = {2,-1323,441,77,102,35,-3984,6,78,0UL}; + int32_t l_1526 = 0x2465F014L; + int16_t l_1533 = 0x3A98L; + int16_t l_1535 = (-5L); + int i, j, k; + for (g_82.f4 = 21; (g_82.f4 > 18); g_82.f4--) + { /* block id: 999 */ + int8_t l_1518 = 1L; + int16_t l_1524 = (-3L); + uint32_t *l_1525 = (void*)0; + (*p_8) = (safe_add_func_int32_t_s_s((func_41((((l_1526 ^= ((((*p_8) = ((((l_1514 == (p_7 ^ (0xEEC6D689L == (safe_lshift_func_int8_t_s_s(((l_1517[8][1][6] |= p_7) != (l_1518 ^ ((~(l_1518 != ((((-3L) < (safe_mul_func_uint16_t_u_u(func_41(p_7, l_1521, p_7, l_1518, l_1522), (-1L)))) , l_1523) , p_7))) || 0xB339L))), l_1518))))) || 0UL) && l_1518) & 4294967295UL)) , l_1524) == 65532UL)) , p_7) , p_7), l_1521, (*g_628), p_7, &l_1518) || 4294967292UL), 1UL)); + } + for (g_2 = 0; (g_2 > 27); g_2++) + { /* block id: 1007 */ + int32_t *l_1529 = &l_1514; + int32_t *l_1530 = &g_434; + int32_t *l_1531 = &g_237; + int32_t *l_1532[7][5] = {{&g_434,&g_2,&g_434,(void*)0,(void*)0},{&g_434,&g_2,&g_434,(void*)0,(void*)0},{&g_434,&g_2,(void*)0,&l_1514,&l_1514},{(void*)0,&l_1517[4][0][6],(void*)0,&l_1514,&l_1514},{(void*)0,&l_1517[4][0][6],(void*)0,&l_1514,&l_1514},{(void*)0,&l_1517[4][0][6],(void*)0,&l_1514,&l_1514},{(void*)0,&l_1517[4][0][6],(void*)0,&l_1514,&l_1514}}; + int8_t l_1534 = (-1L); + uint8_t l_1536[1][7][7] = {{{0xD3L,0UL,7UL,0UL,0UL,7UL,0UL},{0UL,255UL,0x9EL,0UL,255UL,0x1AL,0UL},{248UL,0UL,0x1AL,248UL,0UL,248UL,0x1AL},{8UL,8UL,0x0EL,0UL,0UL,255UL,8UL},{8UL,0x1AL,0x9EL,0UL,0x74L,0x74L,0UL},{248UL,0UL,248UL,0x1AL,0UL,248UL,255UL},{0UL,0UL,0xE9L,0UL,0UL,0x0EL,0UL}}}; + int i, j, k; + if ((*p_8)) + break; + ++l_1536[0][2][1]; + } + if ((*p_8)) + { /* block id: 1011 */ + (*g_220) = p_8; + } + else + { /* block id: 1013 */ + struct S1 *l_1539 = &g_391; + struct S1 **l_1540 = (void*)0; + struct S1 **l_1541 = &l_1539; + uint16_t *l_1542 = &g_82.f3; + int32_t l_1543 = 0x3FE0E73CL; + (*l_1541) = l_1539; + (*p_8) &= func_41(p_7, l_1542, l_1526, l_1543, g_1544[5]); + } + l_1514 = (*p_8); + return p_8; +} + + +/* ------------------------------------------ */ +/* + * reads : g_209 g_1192 g_408 g_18.f0 g_195 g_241 g_511 g_512 g_1105 g_82.f2 g_555 g_1389 g_40 g_628 g_499 g_18.f4 g_82.f1 g_1169.f1 g_508 g_220 g_1168 g_1169 + * writes: g_209 g_1169.f3 g_1192 g_408 g_18.f0 g_195 g_241 g_82.f1 g_500 g_555 g_1389 g_40 g_601 g_18.f4 g_1169.f1 g_199 g_390 + */ +static struct S0 func_9(int32_t * p_10, int32_t * p_11, int32_t * p_12) +{ /* block id: 895 */ + uint32_t l_1289 = 3UL; + uint8_t ** const *l_1291 = &g_254; + uint8_t ** const ** const l_1290 = &l_1291; + int32_t l_1335 = 1L; + int32_t l_1342 = 0x122D1585L; + int32_t l_1344[2]; + uint16_t l_1391 = 0x4F32L; + uint32_t *l_1400[6] = {&g_391.f9,&g_391.f9,&g_391.f9,&g_391.f9,&g_391.f9,&g_391.f9}; + int8_t l_1402 = (-1L); + const struct S0 *l_1417 = &g_508[3][3][4]; + uint32_t *l_1424 = &l_1289; + uint32_t **l_1427 = &g_1142[0][5][2]; + uint32_t l_1429 = 0x32A2A297L; + int8_t *l_1447 = &g_279; + int32_t l_1460 = 1L; + const int16_t l_1468 = 1L; + int32_t l_1498 = 8L; + int i; + for (i = 0; i < 2; i++) + l_1344[i] = 0xC9F0AD98L; + if ((l_1289 && (l_1290 != &l_1291))) + { /* block id: 896 */ + uint8_t l_1292[1]; + int32_t l_1327 = 0x2CA2ED02L; + int32_t l_1336[5][6] = {{0L,(-6L),0x2325E39FL,0xAF70E644L,0x06C4E62EL,(-1L)},{0xDD12AB3AL,0x1CD1E72DL,(-1L),0x06C4E62EL,(-1L),0x1CD1E72DL},{0xDD12AB3AL,(-1L),0x06C4E62EL,0xAF70E644L,0x2325E39FL,(-6L)},{0xDFD6990FL,(-1L),(-1L),(-6L),(-6L),(-1L)},{(-1L),(-1L),0x738CE679L,0xDFD6990FL,0x06C4E62EL,(-6L)}}; + uint16_t *l_1360 = (void*)0; + uint32_t l_1368 = 0x88AF1839L; + int8_t *l_1382[10][3][7] = {{{&g_809[0][0][0],(void*)0,(void*)0,&g_809[4][0][6],&g_279,&g_809[0][0][0],&g_809[4][0][6]},{&g_36[0],&g_36[7],&g_537[0],&g_537[1],&g_537[2],(void*)0,(void*)0},{&g_537[2],&g_809[0][0][0],&g_1233[1],&g_809[0][0][0],&g_537[2],&g_809[0][0][0],&g_36[4]}},{{&g_1233[0],(void*)0,&g_537[1],&g_36[4],&g_279,(void*)0,&g_1233[0]},{&g_537[0],&g_1233[0],(void*)0,&g_279,&g_36[4],&g_537[1],(void*)0},{&g_1233[0],&g_36[4],&g_809[0][0][0],&g_537[2],&g_809[0][0][0],&g_1233[1],&g_809[0][0][0]}},{{&g_537[2],(void*)0,(void*)0,&g_537[2],&g_537[1],&g_537[0],&g_36[7]},{&g_36[0],&g_809[4][0][6],&g_809[0][0][0],&g_279,&g_809[4][0][6],(void*)0,(void*)0},{&g_809[0][0][0],&g_809[0][0][0],&g_1233[1],&g_36[4],&g_1233[1],&g_1233[1],&g_36[7]}},{{&g_809[0][0][0],(void*)0,&g_36[0],&g_809[0][0][0],&g_279,&g_279,&g_809[0][0][0]},{&g_36[0],&g_537[2],&g_36[0],&g_537[1],&g_809[0][0][0],&g_279,(void*)0},{&g_809[0][0][0],&g_809[0][0][0],&g_1233[1],&g_809[4][0][6],&g_36[7],&g_809[0][0][0],&g_279}},{{(void*)0,&g_809[4][0][5],(void*)0,(void*)0,(void*)0,&g_280,(void*)0},{&g_809[0][0][0],(void*)0,&g_809[4][0][5],(void*)0,&g_279,(void*)0,&g_809[4][0][5]},{(void*)0,(void*)0,&g_537[2],&g_537[1],&g_537[0],&g_36[7],&g_36[0]}},{{&g_809[0][0][0],&g_809[4][0][5],&g_36[3],&g_809[0][0][0],&g_280,&g_36[3],&g_537[1]},{&g_1233[1],&g_537[0],&g_280,(void*)0,&g_537[0],&g_809[0][0][0],&g_36[3]},{&g_36[0],&g_279,&g_36[7],&g_279,&g_279,&g_36[7],&g_279}},{{&g_36[0],&g_36[3],&g_809[0][0][0],&g_537[0],(void*)0,&g_280,&g_537[0]},{&g_1233[1],&g_537[1],&g_36[3],&g_280,&g_809[0][0][0],&g_36[3],&g_809[4][0][5]},{&g_809[0][0][0],&g_36[0],&g_36[7],&g_537[0],&g_537[1],&g_537[2],(void*)0}},{{(void*)0,&g_809[4][0][5],(void*)0,&g_279,(void*)0,&g_809[4][0][5],(void*)0},{&g_809[0][0][0],(void*)0,&g_280,(void*)0,(void*)0,(void*)0,&g_809[4][0][5]},{(void*)0,&g_279,&g_537[2],&g_809[0][0][0],&g_36[0],&g_36[7],&g_537[0]}},{{&g_537[1],&g_809[4][0][5],&g_280,&g_537[1],&g_280,&g_1233[1],&g_279},{&g_1233[1],(void*)0,(void*)0,&g_280,&g_809[0][0][0],(void*)0,&g_1233[1]},{&g_537[1],(void*)0,&g_36[4],(void*)0,&g_36[0],&g_36[4],(void*)0}},{{&g_809[0][0][0],&g_1233[1],(void*)0,&g_279,&g_280,&g_36[3],&g_279},{(void*)0,(void*)0,&g_280,&g_809[4][0][5],&g_279,&g_36[3],&g_36[3]},{&g_279,&g_809[0][0][0],&g_36[4],&g_809[0][0][0],&g_279,&g_1233[0],&g_36[0]}}}; + int32_t l_1401 = (-9L); + int i, j, k; + for (i = 0; i < 1; i++) + l_1292[i] = 1UL; + ++l_1292[0]; + for (g_209 = 22; (g_209 > 44); g_209 = safe_add_func_uint16_t_u_u(g_209, 7)) + { /* block id: 900 */ + uint8_t l_1302 = 250UL; + int32_t l_1322 = 0x6B975B0CL; + int32_t l_1343[7][3] = {{0L,0L,(-2L)},{0xB97A3A68L,0x0944A5F0L,0x2461D461L},{0L,0L,0x2461D461L},{0x0944A5F0L,0xB97A3A68L,(-2L)},{0L,0L,0L},{0L,0x0944A5F0L,0L},{0x0944A5F0L,0L,0L}}; + int16_t l_1346[7][1][10] = {{{1L,8L,8L,1L,0x36ECL,0x3A6CL,6L,0xE8B3L,1L,1L}},{{0xE8B3L,0x691FL,6L,0x36ECL,6L,0xB5D7L,8L,6L,1L,0x3A6CL}},{{(-1L),1L,0x7EDEL,1L,0x72E8L,0x7AB0L,0x72E8L,1L,0x7EDEL,1L}},{{0L,0xB5D7L,0x3A6CL,0x3EA9L,(-10L),0x36ECL,0x3EA9L,0xE8B3L,0x29FAL,0L}},{{0x3A6CL,(-1L),0xB5D7L,0x8336L,0xB5D7L,(-7L),0xE7DBL,0x29FAL,0x1158L,0x1158L}},{{0xE8B3L,(-10L),6L,0x29FAL,0x29FAL,6L,(-10L),0xE8B3L,0x691FL,6L}},{{0x29FAL,0xE7DBL,(-7L),0xB5D7L,0x8336L,1L,0x29FAL,0x7EDEL,0x7AB0L,0x29FAL}}}; + uint16_t *l_1358 = (void*)0; + int8_t *l_1390 = &g_280; + int32_t l_1403 = 2L; + int i, j, k; + } + } + else + { /* block id: 946 */ + uint16_t *l_1425 = (void*)0; + uint16_t *l_1426 = &g_1169.f3; + int32_t l_1428 = 0x895941A3L; + uint16_t *l_1430 = &g_1192[0][7]; + int32_t l_1431 = (-7L); + int32_t *l_1436[8][2][2] = {{{&l_1335,&l_1335},{&l_1335,&l_1431}},{{&g_39,&g_238},{&l_1431,&g_238}},{{&g_39,&l_1431},{&l_1335,&l_1335}},{{&l_1335,&l_1431},{&g_39,&g_238}},{{&l_1431,&g_238},{&g_39,&l_1431}},{{&l_1335,&l_1335},{&l_1335,&l_1431}},{{&g_39,&g_238},{&l_1431,&g_238}},{{&g_39,&l_1431},{&l_1335,&l_1335}}}; + struct S0 l_1477 = {1UL,1L,0x5EBBL,0xA03BL,0x3FL}; + int i, j, k; + (*p_12) = ((((*l_1426) = (p_11 == (l_1424 = p_11))) | (l_1427 != &g_1142[0][0][2])) > ((l_1428 , l_1429) != ((((l_1431 = ((l_1428 >= (((l_1344[1] , (((*l_1430) ^= l_1344[1]) < 0x71D3L)) <= l_1289) < 1L)) , 249UL)) | l_1344[1]) | 0x92L) , l_1344[1]))); + (*p_11) = (safe_mod_func_int16_t_s_s(l_1431, (--(*l_1430)))); + l_1436[7][1][0] = (((l_1428 ^ 0xAFL) & ((*p_12) && l_1431)) , &l_1431); + if (((*p_12) = (safe_lshift_func_int8_t_s_u((((safe_sub_func_int8_t_s_s(func_41((safe_lshift_func_uint16_t_u_s((((((&l_1417 == ((0xF7A9L > (l_1335 == (*p_11))) , (void*)0)) <= func_41((safe_mul_func_uint16_t_u_u(l_1289, l_1429)), &g_1192[0][2], (safe_mod_func_uint8_t_u_u((l_1402 && l_1335), l_1429)), l_1344[1], (*g_511))) , l_1289) > l_1402) , l_1344[1]), 14)), &g_222, l_1391, l_1335, l_1447), g_1105[8])) | l_1289) && 0L), 4)))) + { /* block id: 956 */ + uint32_t l_1452 = 0x19EBA21BL; + int32_t l_1457 = 5L; + uint8_t *l_1465 = &g_555[0][0]; + const uint16_t **l_1478[2]; + uint16_t l_1481 = 0xF23DL; + int i; + for (i = 0; i < 2; i++) + l_1478[i] = (void*)0; + (*p_12) = ((safe_add_func_int8_t_s_s((safe_add_func_int8_t_s_s(l_1452, l_1402)), (safe_mod_func_int16_t_s_s((safe_rshift_func_uint8_t_u_u((l_1457 &= g_82.f2), (((safe_lshift_func_uint8_t_u_u(l_1342, 2)) , func_41((((l_1460 || ((safe_mul_func_uint16_t_u_u(((safe_div_func_int8_t_s_s(((~(++(*l_1465))) == func_41(l_1452, l_1430, l_1452, l_1452, l_1465)), l_1452)) && l_1391), 0x642EL)) & 0x6C9408A5L)) & l_1468) == 0x97L), &l_1391, l_1335, l_1452, (*g_511))) == 3L))), l_1468)))) , (*p_12)); + for (g_1389 = 0; (g_1389 < (-25)); g_1389--) + { /* block id: 962 */ + uint16_t *l_1476 = (void*)0; + const int32_t l_1479[9] = {0x7870A31CL,0x7870A31CL,0x7870A31CL,0x7870A31CL,0x7870A31CL,0x7870A31CL,0x7870A31CL,0x7870A31CL,0x7870A31CL}; + int32_t l_1480 = 0xBD654D60L; + int i; + for (g_40 = 0; (g_40 <= 2); g_40 += 1) + { /* block id: 965 */ + uint16_t l_1475 = 1UL; + if ((*p_11)) + break; + l_1480 = (safe_mod_func_int32_t_s_s((safe_rshift_func_int8_t_s_s(((((func_41(l_1475, (l_1452 , (g_601 = l_1476)), (*g_628), (&g_1142[0][1][1] == &g_1142[0][1][1]), (l_1477 , (*g_511))) > 0xEAA0L) , &g_601) == l_1478[0]) , l_1479[0]), 3)), 1UL)); + --l_1481; + } + } + } + else + { /* block id: 972 */ + int32_t l_1490 = 0xBC1D070AL; + int32_t l_1495 = 0x55B4B91BL; + int32_t l_1496 = 0L; + int32_t l_1497[1][1][5] = {{{5L,5L,5L,5L,5L}}}; + uint16_t l_1506 = 0x8821L; + struct S1 **l_1509[2]; + int i, j, k; + for (i = 0; i < 2; i++) + l_1509[i] = &g_390; + for (g_18.f4 = 0; (g_18.f4 < 54); g_18.f4 = safe_add_func_uint8_t_u_u(g_18.f4, 5)) + { /* block id: 975 */ + for (g_82.f1 = 6; (g_82.f1 > 20); g_82.f1 = safe_add_func_uint32_t_u_u(g_82.f1, 1)) + { /* block id: 978 */ + for (g_1169.f1 = (-2); (g_1169.f1 != (-22)); g_1169.f1 = safe_sub_func_uint16_t_u_u(g_1169.f1, 3)) + { /* block id: 981 */ + return (*l_1417); + } + } + } + if ((l_1490 ^ (safe_div_func_uint16_t_u_u(l_1342, l_1490)))) + { /* block id: 986 */ + (*p_12) = (*p_12); + } + else + { /* block id: 988 */ + int32_t l_1493[3][3] = {{(-4L),(-4L),(-1L)},{(-4L),(-4L),(-1L)},{(-4L),(-4L),(-1L)}}; + int32_t l_1494 = 0xF56B557AL; + int32_t l_1499 = 0L; + int32_t l_1500 = 0x64A61DCEL; + int32_t l_1501 = 0x18BA8B7FL; + int32_t l_1502 = 0xFD7B4B2BL; + int32_t l_1503 = 0x1CDE3638L; + int32_t l_1504 = 1L; + int32_t l_1505 = (-1L); + int i, j; + ++l_1506; + } + (*g_220) = p_12; + g_390 = &g_391; + } + } + return (*g_1168); +} + + +/* ------------------------------------------ */ +/* + * reads : g_2 g_1109 g_82 g_802 g_220 g_390 g_391 g_18 g_542 g_555 g_119 g_1105 g_199 g_279 g_501 g_499 g_5 g_1192 g_251 + * writes: g_1109 g_18.f0 g_2 g_802 g_1113.f9 g_1141 g_279 g_199 g_82.f4 g_82.f0 g_542 g_555 g_119 g_1105 g_390 g_501 g_1168 g_5 g_251 g_82.f3 + */ +static int32_t * func_13(const int16_t p_14, int32_t * p_15, int32_t * p_16) +{ /* block id: 748 */ + uint32_t l_1116[9][10] = {{0x90628E09L,0xB05BB543L,0xB05BB543L,0x90628E09L,6UL,0x7AA97B2BL,0x2750F53DL,0UL,0x5A6596A4L,0UL},{0xB05BB543L,4294967294UL,0x0D9C2F16L,0x0D9C2F16L,6UL,0xCA63206FL,0x2ADE30DFL,4294967294UL,0UL,0x90628E09L},{4294967294UL,0xB05BB543L,0x2750F53DL,0x5A6596A4L,0x2ADE30DFL,0x2ADE30DFL,0x5A6596A4L,0x2750F53DL,0xB05BB543L,4294967294UL},{0x71DF7270L,0xB05BB543L,0UL,4294967293UL,0x0D9C2F16L,0x90628E09L,0x2ADE30DFL,0x90628E09L,0x0D9C2F16L,4294967293UL},{4294967293UL,0xCA63206FL,4294967293UL,0xB05BB543L,0x0D9C2F16L,0x7AA97B2BL,4294967294UL,6UL,6UL,4294967294UL},{0x0D9C2F16L,0x2ADE30DFL,0x7AA97B2BL,0x7AA97B2BL,0x2ADE30DFL,0x0D9C2F16L,0x71DF7270L,6UL,0x5A6596A4L,0x90628E09L},{0xCA63206FL,0x90628E09L,4294967293UL,0x2750F53DL,6UL,0x2750F53DL,4294967293UL,0x90628E09L,0xCA63206FL,0x0D9C2F16L},{0xCA63206FL,0x7AA97B2BL,0UL,0x71DF7270L,0x2750F53DL,0x0D9C2F16L,0x0D9C2F16L,0x2750F53DL,0x71DF7270L,0UL},{0x0D9C2F16L,0x0D9C2F16L,0x2750F53DL,0x71DF7270L,0UL,0x7AA97B2BL,0xCA63206FL,4294967294UL,0xCA63206FL,0x7AA97B2BL}}; + int8_t *l_1119 = &g_537[0]; + int32_t l_1122 = (-1L); + int32_t l_1126 = (-1L); + struct S1 **l_1130 = &g_390; + struct S1 ***l_1129 = &l_1130; + int32_t l_1178 = 0x6946CE07L; + int32_t l_1180[2]; + int8_t l_1196[3][10][5] = {{{(-5L),(-1L),0xEDL,(-1L),(-5L)},{0L,4L,0x17L,0xFCL,0x93L},{0x89L,0x46L,0x5DL,(-1L),(-1L)},{0xFCL,1L,0xFCL,(-1L),0xE8L},{5L,(-1L),0xEDL,0x5DL,0x89L},{0xE8L,0x89L,4L,4L,0x89L},{0x43L,9L,0xEDL,0x89L,0x46L},{0xFCL,0xF4L,0L,0xBFL,0xC4L},{0x0FL,0x43L,0x43L,0x0FL,0L},{0xFCL,4L,0x93L,0x42L,0xBFL}},{{0x43L,(-5L),(-1L),0xEDL,(-1L)},{0xE8L,0xE8L,0xBFL,0x42L,0x93L},{5L,0x5DL,0L,0x0FL,0x43L},{0L,0xBFL,0xC4L,0xBFL,0L},{(-1L),0x5DL,0x46L,0x89L,0xEDL},{0x42L,0xE8L,0x89L,4L,4L},{0x89L,(-5L),0x89L,0x5DL,0xEDL},{1L,4L,0xE8L,(-1L),0L},{0xEDL,0x43L,(-1L),(-1L),0x43L},{0x89L,0xF4L,0xE8L,0L,0x93L}},{{(-5L),9L,0x89L,0L,(-1L)},{0x17L,0x89L,0x89L,0x17L,0xBFL},{(-5L),(-1L),0x46L,(-1L),5L},{0xF4L,0L,0xBFL,0xC4L,0xBFL},{(-1L),(-1L),5L,(-1L),0xEDL},{0xFCL,0x89L,1L,0x93L,0xF4L},{(-1L),5L,0L,5L,(-1L)},{4L,0x89L,0xE8L,0x42L,0xC4L},{(-1L),(-1L),9L,0x5DL,0x5DL},{0x42L,0L,0x42L,0x89L,0xC4L}}}; + int8_t l_1197 = (-1L); + uint32_t *l_1205 = &g_251; + uint8_t *l_1210 = &g_119; + int16_t *l_1215[2][10][4] = {{{&g_18.f1,&g_18.f1,&g_18.f1,(void*)0},{&g_18.f1,(void*)0,(void*)0,&g_18.f1},{&g_1052,(void*)0,(void*)0,(void*)0},{&g_18.f1,&g_18.f1,&g_18.f1,&g_18.f1},{&g_18.f1,(void*)0,&g_1052,&g_18.f1},{&g_1052,&g_18.f1,(void*)0,(void*)0},{(void*)0,(void*)0,&g_18.f1,&g_18.f1},{(void*)0,(void*)0,(void*)0,(void*)0},{&g_1052,&g_18.f1,&g_1052,(void*)0},{&g_18.f1,&g_18.f1,&g_18.f1,(void*)0}},{{&g_18.f1,(void*)0,(void*)0,&g_18.f1},{&g_1052,(void*)0,(void*)0,(void*)0},{&g_18.f1,&g_18.f1,&g_18.f1,&g_18.f1},{&g_18.f1,(void*)0,&g_1052,&g_18.f1},{&g_1052,&g_18.f1,(void*)0,&g_18.f1},{(void*)0,(void*)0,&g_18.f1,(void*)0},{(void*)0,&g_508[3][3][4].f1,&g_18.f1,(void*)0},{&g_18.f1,(void*)0,&g_18.f1,&g_18.f1},{&g_1052,(void*)0,&g_18.f1,(void*)0},{(void*)0,&g_508[3][3][4].f1,&g_508[3][3][4].f1,(void*)0}}}; + int16_t l_1216 = (-4L); + int32_t l_1250 = (-5L); + int8_t l_1260 = (-10L); + int32_t l_1261 = 5L; + int32_t *l_1280[8][10] = {{&g_39,&g_39,&l_1126,&g_238,(void*)0,&g_39,&g_876,&l_1126,(void*)0,(void*)0},{&g_39,&g_876,&l_1126,(void*)0,(void*)0,&g_876,&g_876,(void*)0,(void*)0,&l_1126},{&g_39,&g_39,&l_1126,&g_238,(void*)0,&g_39,&g_876,&l_1126,(void*)0,(void*)0},{&g_39,&g_876,&l_1126,(void*)0,(void*)0,&g_876,&g_876,(void*)0,(void*)0,&l_1126},{&g_39,&g_39,&l_1126,&g_238,(void*)0,&g_39,&g_876,&l_1126,(void*)0,(void*)0},{&g_39,&g_876,&l_1126,(void*)0,(void*)0,&g_876,&g_876,(void*)0,(void*)0,&l_1126},{&g_39,&g_39,&l_1126,&g_238,(void*)0,&g_39,&g_876,&l_1126,(void*)0,(void*)0},{&g_39,&g_876,&l_1126,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,&g_39,&g_238}}; + struct S0 **l_1283 = &g_1168; + int32_t *l_1287 = (void*)0; + int32_t *l_1288 = &l_1178; + int i, j, k; + for (i = 0; i < 2; i++) + l_1180[i] = 0x8AE8E413L; + if ((*p_15)) + { /* block id: 749 */ + struct S1 *l_1110 = &g_391; + struct S1 **l_1111[8][5][5] = {{{&l_1110,(void*)0,&g_390,&g_390,&g_390},{&l_1110,&l_1110,&l_1110,&l_1110,&l_1110},{&l_1110,&g_390,&g_390,&l_1110,&g_390},{&l_1110,&g_390,&g_390,&g_390,&g_390},{&l_1110,&g_390,&l_1110,&l_1110,&g_390}},{{(void*)0,&l_1110,&g_390,&l_1110,&l_1110},{&g_390,(void*)0,&g_390,&l_1110,&g_390},{&g_390,&g_390,&l_1110,&g_390,&g_390},{&l_1110,&l_1110,&g_390,&l_1110,&l_1110},{&l_1110,&g_390,&g_390,&l_1110,&g_390}},{{&g_390,&l_1110,&l_1110,&g_390,&g_390},{(void*)0,&g_390,&g_390,&l_1110,&g_390},{&g_390,(void*)0,&g_390,&g_390,&g_390},{&l_1110,&l_1110,&l_1110,&l_1110,&g_390},{&l_1110,&g_390,&g_390,&l_1110,&g_390}},{{&g_390,&g_390,&g_390,&l_1110,&g_390},{&g_390,&g_390,&l_1110,&g_390,&l_1110},{(void*)0,&l_1110,&g_390,&l_1110,&g_390},{&l_1110,(void*)0,&l_1110,&l_1110,&g_390},{&l_1110,(void*)0,&l_1110,&g_390,&l_1110}},{{(void*)0,&l_1110,&l_1110,(void*)0,(void*)0},{&l_1110,&l_1110,&g_390,&g_390,&l_1110},{&l_1110,&g_390,&g_390,&l_1110,(void*)0},{(void*)0,&l_1110,(void*)0,(void*)0,&l_1110},{&l_1110,(void*)0,&g_390,&l_1110,&g_390}},{{&l_1110,&l_1110,&l_1110,&g_390,(void*)0},{(void*)0,&l_1110,&g_390,(void*)0,&l_1110},{(void*)0,&l_1110,(void*)0,&g_390,&l_1110},{&g_390,&l_1110,&g_390,&l_1110,&l_1110},{(void*)0,&l_1110,&g_390,(void*)0,&g_390}},{{&g_390,(void*)0,&l_1110,&l_1110,&g_390},{(void*)0,&l_1110,&l_1110,&l_1110,&g_390},{(void*)0,&g_390,&l_1110,(void*)0,&l_1110},{&l_1110,&l_1110,&l_1110,&l_1110,&l_1110},{&l_1110,&l_1110,&g_390,&l_1110,&l_1110}},{{(void*)0,(void*)0,&l_1110,(void*)0,(void*)0},{&l_1110,(void*)0,&l_1110,&l_1110,&g_390},{&g_390,&g_390,(void*)0,&l_1110,&l_1110},{&l_1110,&g_390,(void*)0,(void*)0,&l_1110},{&g_390,&l_1110,&l_1110,&l_1110,&l_1110}}}; + struct S1 *l_1112 = &g_1113; + uint8_t ***l_1118[9][9] = {{(void*)0,&g_254,(void*)0,&g_254,&g_254,(void*)0,&g_254,(void*)0,&g_254},{&g_254,(void*)0,(void*)0,&g_254,&g_254,(void*)0,&g_254,&g_254,&g_254},{&g_254,&g_254,(void*)0,&g_254,&g_254,(void*)0,(void*)0,&g_254,&g_254},{(void*)0,&g_254,(void*)0,&g_254,&g_254,(void*)0,&g_254,(void*)0,&g_254},{&g_254,(void*)0,(void*)0,&g_254,&g_254,(void*)0,&g_254,&g_254,&g_254},{&g_254,&g_254,(void*)0,&g_254,&g_254,(void*)0,(void*)0,&g_254,&g_254},{(void*)0,&g_254,(void*)0,&g_254,&g_254,(void*)0,&g_254,(void*)0,&g_254},{&g_254,(void*)0,(void*)0,&g_254,&g_254,(void*)0,&g_254,&g_254,&g_254},{&g_254,&g_254,(void*)0,&g_254,&g_254,(void*)0,(void*)0,&g_254,&g_254}}; + uint8_t ****l_1117 = &l_1118[0][8]; + const int8_t *l_1120 = &g_279; + int16_t *l_1121[8][2] = {{(void*)0,&g_82.f1},{&g_1052,&g_82.f1},{(void*)0,&g_82.f1},{&g_1052,&g_82.f1},{(void*)0,&g_82.f1},{&g_1052,&g_82.f1},{(void*)0,&g_82.f1},{&g_1052,&g_82.f1}}; + uint32_t *l_1123 = &g_18.f0; + int32_t l_1124 = 0xEDBDFF21L; + uint32_t l_1125 = 0UL; + int32_t l_1181 = 0L; + int32_t l_1183 = 0xF8FD7B68L; + int i, j, k; + l_1112 = l_1110; + (*p_16) ^= 0x92C5D770L; + if ((safe_add_func_int32_t_s_s(((l_1116[4][0] = 0UL) , (((l_1126 &= ((((((*l_1123) = (((((&g_254 != ((*l_1117) = &g_254)) , l_1119) == l_1119) , (l_1122 ^= l_1116[1][6])) ^ 0xEF73L)) , (-9L)) <= l_1124) && 0xDAL) , l_1125)) <= 0x1610ADAAL) && 65535UL)), p_14))) + { /* block id: 757 */ +lbl_1158: + (*p_15) = (0x3E96A966L < (*p_16)); + } + else + { /* block id: 759 */ + struct S1 ****l_1131 = &l_1129; + int32_t l_1147 = 0xF6AFA3B1L; + int32_t l_1150 = 0xA4754866L; + int32_t l_1177 = 0L; + int32_t l_1179 = (-4L); + int32_t l_1182[9] = {1L,1L,1L,1L,1L,1L,1L,1L,1L}; + int16_t l_1185 = 0x36BEL; + int i; + if ((safe_lshift_func_int8_t_s_s(p_14, (((*l_1131) = l_1129) == (g_82 , &l_1130))))) + { /* block id: 761 */ + uint32_t l_1135 = 0xD5BBD21CL; + for (g_1109 = 15; (g_1109 > (-10)); g_1109--) + { /* block id: 764 */ + int32_t *l_1134[1][3]; + int i, j; + for (i = 0; i < 1; i++) + { + for (j = 0; j < 3; j++) + l_1134[i][j] = &l_1124; + } + for (g_2 = 0; (g_2 <= 0); g_2 += 1) + { /* block id: 767 */ + return p_16; + } + l_1135--; + } + for (g_802 = 2; (g_802 <= 8); g_802 += 1) + { /* block id: 774 */ + for (g_1113.f9 = 0; (g_1113.f9 <= 2); g_1113.f9 += 1) + { /* block id: 777 */ + uint32_t ***l_1138 = (void*)0; + uint32_t **l_1140 = (void*)0; + uint32_t ***l_1139[7]; + int i; + for (i = 0; i < 7; i++) + l_1139[i] = &l_1140; + g_1141 = &l_1123; + } + for (g_279 = 0; (g_279 <= 8); g_279 += 1) + { /* block id: 782 */ + (*g_220) = p_16; + } + } + for (g_82.f4 = 0; (g_82.f4 == 25); g_82.f4++) + { /* block id: 788 */ + for (g_82.f0 = 0; (g_82.f0 <= 0); g_82.f0 += 1) + { /* block id: 791 */ + int i; + (*g_220) = func_19(p_15, p_15, (*g_390)); + (*g_220) = func_19((*g_220), p_16, (*g_390)); + } + } + } + else + { /* block id: 796 */ + uint32_t **l_1145 = &l_1123; + int32_t l_1146 = (-6L); + int8_t *l_1163[3][5] = {{&g_809[0][0][0],&g_36[3],&g_809[0][0][0],&g_809[0][0][0],&g_36[0]},{&g_279,&g_537[0],&g_36[0],&g_537[0],&g_279},{&g_809[0][0][0],&g_537[0],&g_36[3],&g_279,&g_36[3]}}; + int32_t l_1176[3][1]; + int i, j; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 1; j++) + l_1176[i][j] = 0x96B5594EL; + } + (**l_1129) = (**l_1129); + for (g_279 = 8; (g_279 >= 3); g_279 -= 1) + { /* block id: 800 */ + uint8_t l_1155 = 255UL; + (*p_16) = (((void*)0 != l_1145) | l_1146); + for (g_501 = 0; (g_501 <= 2); g_501 += 1) + { /* block id: 804 */ + int32_t *l_1148 = &g_1109; + int32_t *l_1149 = &g_433; + int32_t *l_1151 = &g_500; + int32_t *l_1152 = &g_238; + int32_t *l_1153 = &g_434; + int32_t *l_1154[9] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + int i; + (*p_16) &= (*p_15); + if (l_1147) + break; + --l_1155; + } + } + for (g_18.f0 = 0; (g_18.f0 <= 0); g_18.f0 += 1) + { /* block id: 812 */ + int32_t *l_1171 = &l_1146; + int32_t *l_1172 = &g_434; + int32_t *l_1173 = (void*)0; + int32_t *l_1174 = (void*)0; + int32_t *l_1175[9][1][2] = {{{&l_1124,&g_238}},{{&l_1147,&g_238}},{{&l_1124,&g_39}},{{&g_39,&l_1124}},{{&g_238,&l_1147}},{{&g_238,&l_1124}},{{&g_39,&g_39}},{{&l_1124,&g_238}},{{&l_1147,&g_238}}}; + int32_t l_1184 = 0xC96082DDL; + uint32_t l_1186[10][9][2] = {{{0x6E9628BBL,18446744073709551615UL},{18446744073709551615UL,0x2C2C3B62L},{18446744073709551608UL,4UL},{2UL,18446744073709551612UL},{0x2C2C3B62L,0x2C2C3B62L},{0UL,1UL},{0x6E9628BBL,18446744073709551607UL},{0x886E6C5AL,0xFCF6436BL},{18446744073709551612UL,0x886E6C5AL}},{{18446744073709551613UL,18446744073709551609UL},{18446744073709551613UL,0x886E6C5AL},{18446744073709551612UL,0xFCF6436BL},{0x886E6C5AL,18446744073709551607UL},{0x6E9628BBL,1UL},{18446744073709551607UL,18446744073709551615UL},{18446744073709551615UL,0x02BC55E2L},{18446744073709551606UL,0xFCF6436BL},{0xFFBA7176L,18446744073709551615UL}},{{0x8232C893L,18446744073709551612UL},{0x886E6C5AL,1UL},{1UL,2UL},{0xFCF6436BL,1UL},{18446744073709551615UL,0x6E9628BBL},{0UL,18446744073709551613UL},{0xFCF6436BL,4UL},{18446744073709551613UL,1UL},{18446744073709551606UL,4UL}},{{0x8232C893L,0xFFBA7176L},{18446744073709551615UL,0xFCF6436BL},{0xDCED0008L,0xFCF6436BL},{18446744073709551615UL,0xFFBA7176L},{0x8232C893L,4UL},{18446744073709551606UL,1UL},{18446744073709551613UL,4UL},{0xFCF6436BL,18446744073709551613UL},{0UL,0x6E9628BBL}},{{18446744073709551615UL,1UL},{0xFCF6436BL,2UL},{1UL,1UL},{0x886E6C5AL,18446744073709551612UL},{0x8232C893L,18446744073709551615UL},{0xFFBA7176L,0xFCF6436BL},{18446744073709551606UL,0x02BC55E2L},{18446744073709551615UL,18446744073709551615UL},{18446744073709551607UL,4UL}},{{0x886E6C5AL,18446744073709551615UL},{18446744073709551613UL,2UL},{0x02BC55E2L,18446744073709551613UL},{18446744073709551615UL,0xB081ED74L},{18446744073709551615UL,18446744073709551613UL},{0x02BC55E2L,2UL},{18446744073709551613UL,18446744073709551615UL},{0x886E6C5AL,4UL},{18446744073709551607UL,18446744073709551615UL}},{{18446744073709551615UL,0x02BC55E2L},{18446744073709551606UL,0xFCF6436BL},{0xFFBA7176L,18446744073709551615UL},{0x8232C893L,18446744073709551612UL},{0x886E6C5AL,1UL},{1UL,2UL},{0xFCF6436BL,1UL},{18446744073709551615UL,18446744073709551606UL},{0xFA7C8EF7L,0UL}},{{4UL,1UL},{0UL,18446744073709551612UL},{18446744073709551608UL,0x02BC55E2L},{18446744073709551615UL,0x9A98F82CL},{18446744073709551609UL,4UL},{18446744073709551609UL,4UL},{18446744073709551609UL,0x9A98F82CL},{18446744073709551615UL,0x02BC55E2L},{18446744073709551608UL,18446744073709551612UL}},{{0UL,1UL},{4UL,0UL},{0xFA7C8EF7L,18446744073709551606UL},{18446744073709551607UL,3UL},{4UL,0xDCED0008L},{3UL,18446744073709551612UL},{1UL,0xA6DAAE01L},{18446744073709551615UL,18446744073709551609UL},{0x9A98F82CL,4UL}},{{18446744073709551608UL,0x6D14230FL},{18446744073709551609UL,18446744073709551609UL},{0x4F5E8A69L,0x02BC55E2L},{1UL,5UL},{0UL,0xDCED0008L},{0x6D14230FL,0UL},{18446744073709551607UL,3UL},{18446744073709551607UL,0UL},{0x6D14230FL,0xDCED0008L}}}; + int i, j, k; + if ((*p_15)) + break; + if (g_391.f5) + goto lbl_1158; + for (g_2 = 0; (g_2 <= 0); g_2 += 1) + { /* block id: 817 */ + struct S0 *l_1170[8] = {&g_508[3][3][4],&g_508[3][3][4],&g_508[3][3][4],&g_508[3][3][4],&g_508[3][3][4],&g_508[3][3][4],&g_508[3][3][4],&g_508[3][3][4]}; + int i, j; + (*p_16) &= (safe_sub_func_uint32_t_u_u(g_499[g_18.f0][g_2], (l_1116[(g_18.f0 + 6)][(g_2 + 6)] , ((p_14 > (l_1120 != l_1163[2][4])) & (safe_sub_func_uint32_t_u_u((safe_div_func_int32_t_s_s(0x03DEC767L, p_14)), (((g_1168 = &g_508[3][3][4]) != l_1170[4]) , 0x42A71327L))))))); + (*p_16) = (p_14 < 0L); + } + l_1186[1][3][0]++; + for (g_5 = 0; (g_5 <= 0); g_5 += 1) + { /* block id: 825 */ + uint16_t l_1189[4] = {0xF7CAL,0xF7CAL,0xF7CAL,0xF7CAL}; + int i; + --l_1189[3]; + } + } + (*p_15) ^= (((*p_16) = l_1178) , g_1192[0][6]); + } + } + } + else + { /* block id: 833 */ + int32_t *l_1193 = (void*)0; + int32_t *l_1194 = &g_876; + int32_t *l_1195[10][4] = {{&g_237,&l_1180[0],&l_1180[0],&l_1180[0]},{&g_237,&l_1180[0],&g_237,&g_238},{&l_1180[0],&l_1180[0],&g_238,&g_238},{&l_1180[0],&l_1180[0],&l_1178,&l_1180[0]},{&l_1180[0],&l_1180[0],&l_1178,&l_1180[0]},{&l_1180[0],&g_237,&g_238,&l_1178},{&l_1180[0],&g_237,&g_237,&g_238},{&l_1180[0],&g_238,&l_1178,&g_237},{&l_1180[0],&l_1178,&l_1180[0],&l_1180[0]},{&g_238,&g_237,&l_1180[0],&l_1180[0]}}; + uint8_t l_1198 = 0UL; + int i, j; + l_1198++; + } + (*p_15) ^= (safe_lshift_func_int16_t_s_s((safe_div_func_uint32_t_u_u(((*l_1205)++), l_1196[2][6][1])), (l_1180[0] = (((+(safe_lshift_func_uint8_t_u_u(((*l_1210)++), ((safe_lshift_func_int16_t_s_s(l_1116[4][0], 6)) , 1UL)))) == 1L) , p_14)))); + if (l_1216) + { /* block id: 840 */ + return p_15; + } + else + { /* block id: 842 */ + uint16_t l_1221[2][9][6] = {{{1UL,0xA6E1L,8UL,65535UL,1UL,0UL},{0UL,65535UL,0UL,1UL,1UL,0UL},{0xA6E1L,0xA6E1L,0xB9C0L,8UL,1UL,0UL},{0xA6E1L,8UL,65535UL,1UL,0UL,0xB9C0L},{0UL,0xA6E1L,65535UL,65535UL,0xA6E1L,0UL},{1UL,65535UL,0xB9C0L,1UL,0xA6E1L,0UL},{1UL,0xA6E1L,0UL,8UL,0UL,0UL},{1UL,8UL,8UL,1UL,1UL,0xB9C0L},{1UL,0xA6E1L,8UL,65535UL,1UL,0UL}},{{0UL,65535UL,0UL,1UL,1UL,0UL},{0xA6E1L,0xA6E1L,0xB9C0L,8UL,1UL,0UL},{0xA6E1L,8UL,65535UL,1UL,0UL,0xB9C0L},{0UL,0xA6E1L,65535UL,65535UL,0xA6E1L,0UL},{1UL,65535UL,0xB9C0L,1UL,0xA6E1L,0UL},{1UL,0xA6E1L,0UL,8UL,0UL,0UL},{1UL,8UL,8UL,1UL,1UL,0xB9C0L},{1UL,0xA6E1L,8UL,65535UL,1UL,0UL},{0UL,65535UL,0UL,1UL,1UL,0UL}}}; + int32_t *l_1234 = (void*)0; + int32_t l_1237 = 0xDB5C3602L; + int32_t l_1242 = 0L; + int32_t l_1247 = 0xF2CC364AL; + int32_t l_1249 = 0xF1E7180FL; + int32_t l_1251 = 0xA149DBF1L; + int32_t l_1252 = 0xFBB6885AL; + int32_t l_1253[5][9][5] = {{{0L,0x84665002L,2L,(-7L),0xBD32F491L},{0xA6FBD2E6L,0L,0xC28A2745L,0xBD32F491L,(-10L)},{(-1L),0L,3L,0L,0L},{0L,0x0ACB57C3L,1L,0xBB327930L,(-9L)},{0xD71E7DEDL,0xA08123F0L,5L,0L,0L},{0x267D6E1AL,0x32F668E8L,0x3E8D01CAL,0xA6FBD2E6L,0x32F668E8L},{(-3L),0x32F668E8L,2L,0L,0xA7E3B020L},{7L,0xA08123F0L,0L,0xF657A079L,0x51757FC2L},{0x98382590L,0x0ACB57C3L,0L,0xD71E7DEDL,0x09C94484L}},{{1L,0L,0xBB327930L,0xF602B128L,0L},{(-9L),0L,0L,(-9L),2L},{0x267D6E1AL,0x84665002L,0x16EEF47BL,7L,0x09C94484L},{(-8L),7L,(-10L),5L,9L},{0xF657A079L,0L,0xA08123F0L,7L,1L},{0L,0x84665002L,0xEDF5817DL,0L,0x267D6E1AL},{0xA08123F0L,0x83309CD8L,0xF602B128L,0L,(-1L)},{(-1L),(-3L),(-10L),0xA7E3B020L,2L},{0xD71E7DEDL,0xA6FBD2E6L,(-6L),0xBD32F491L,(-1L)}},{{0xBB327930L,(-9L),0x770F047CL,1L,0L},{0x09C94484L,0xA08123F0L,(-7L),0x83309CD8L,1L},{0x09C94484L,0x84665002L,0x78A1D5A5L,(-1L),0x83309CD8L},{0xBB327930L,(-1L),0xAED3E08DL,(-8L),0xBD32F491L},{0xD71E7DEDL,0xAED3E08DL,0L,0x84665002L,0xA08123F0L},{(-1L),0xD71E7DEDL,0xAAF60F01L,0x09C94484L,0x09C94484L},{0xA08123F0L,0xBD32F491L,0xA08123F0L,1L,0L},{0L,0x770F047CL,(-3L),0x84665002L,1L},{0xBD32F491L,0L,0x3E8D01CAL,0xD71E7DEDL,0L}},{{0x32DA8A12L,0x0ACB57C3L,(-3L),1L,(-1L)},{(-1L),0xF602B128L,0xA08123F0L,0x83309CD8L,0xF602B128L},{0L,0x267D6E1AL,0xAAF60F01L,0L,7L},{0xAED3E08DL,0x0ACB57C3L,0L,(-7L),0L},{(-9L),0L,0xAED3E08DL,0xA7E3B020L,0x51757FC2L},{0x32F668E8L,(-10L),0x78A1D5A5L,(-1L),0x84665002L},{(-5L),0L,0x074F165CL,(-5L),0L},{0xC28A2745L,0xBFC76879L,(-1L),0L,0xD0F8360AL},{1L,0L,0x32F668E8L,1L,2L}},{{0x074F165CL,0xF602B128L,0L,0L,0x51757FC2L},{0xA08123F0L,7L,0x1C985263L,0x770F047CL,0x1C985263L},{0x32DA8A12L,0x32DA8A12L,(-1L),0xC28A2745L,0xF602B128L},{0xAAF60F01L,1L,0L,1L,0x770F047CL},{(-7L),0x78A1D5A5L,(-10L),0L,0xAAF60F01L},{0L,1L,0x0ACB57C3L,0xA08123F0L,0xAED3E08DL},{3L,0x32DA8A12L,0x074F165CL,0x748F8E4EL,5L},{5L,7L,0xBFC76879L,0xBB327930L,0x748F8E4EL},{0L,0xF602B128L,0L,(-7L),0L}}}; + int8_t *l_1284 = &g_809[1][0][5]; + int i, j, k; + (*p_16) = (!(safe_sub_func_int32_t_s_s((safe_mod_func_uint16_t_u_u((l_1180[1] |= p_14), 1L)), ((l_1196[2][4][3] < (-1L)) >= (&g_365 != ((++l_1221[0][4][4]) , &g_365)))))); +lbl_1285: + for (g_82.f3 = (-28); (g_82.f3 == 18); g_82.f3 = safe_add_func_int8_t_s_s(g_82.f3, 3)) + { /* block id: 848 */ + int16_t l_1235 = (-2L); + int32_t l_1238 = 1L; + int8_t l_1239 = 0x39L; + int32_t l_1241[3][10][2] = {{{0x0F2A4A28L,0L},{0xE6C9B04AL,1L},{0xD502F28DL,(-1L)},{0L,0x674EC8C3L},{0x674EC8C3L,0x674EC8C3L},{0L,(-1L)},{0xD502F28DL,1L},{0xE6C9B04AL,0L},{0x0F2A4A28L,0xE6C9B04AL},{0x9CBF4857L,0xC8A66176L}},{{0x9CBF4857L,0xE6C9B04AL},{0x0F2A4A28L,0L},{0xE6C9B04AL,1L},{0xD502F28DL,(-1L)},{0L,0x674EC8C3L},{0x674EC8C3L,0x674EC8C3L},{0L,(-1L)},{0xD502F28DL,0x9CBF4857L},{1L,0xE6C9B04AL},{(-1L),1L}},{{0x674EC8C3L,0x0F2A4A28L},{0x674EC8C3L,1L},{(-1L),0xE6C9B04AL},{1L,0x9CBF4857L},{0L,0x1D6C64F6L},{0xE6C9B04AL,0xC8A66176L},{0xC8A66176L,0xC8A66176L},{0xE6C9B04AL,0x1D6C64F6L},{0L,0x9CBF4857L},{1L,0xE6C9B04AL}}}; + int32_t l_1259 = 0x4D187B5CL; + int32_t l_1262 = 0x2EE8D66DL; + struct S1 l_1266 = {2,2376,563,217,1949,19,665,112,9,0x0FC184AEL}; + int i, j, k; + } + if ((safe_unary_minus_func_uint32_t_u((p_14 != p_14)))) + { /* block id: 885 */ + int32_t *l_1286 = &l_1247; + if (g_391.f3) + goto lbl_1285; + return p_16; + } + else + { /* block id: 888 */ + (*p_15) = (~((*p_16) = 0L)); + } + } + (*g_220) = l_1287; + return (*g_220); +} + + +/* ------------------------------------------ */ +/* + * reads : g_18 g_542 g_555 g_119 g_1105 + * writes: g_2 g_542 g_555 g_119 g_1105 g_1109 + */ +static int32_t * func_19(int32_t * p_20, int32_t * p_21, struct S1 p_22) +{ /* block id: 736 */ + uint16_t l_1090 = 1UL; + struct S0 l_1091 = {0UL,-9L,65535UL,0xE985L,0xC8L}; + uint32_t *l_1092 = &g_542; + uint32_t *l_1093[1]; + int32_t l_1094 = 0x39EBFE2DL; + uint16_t **l_1095 = &g_601; + int32_t l_1096 = 0x616926E9L; + uint8_t *l_1097 = &g_555[0][0]; + uint8_t *l_1100 = &g_119; + int32_t *l_1101[9][2] = {{(void*)0,&g_433},{&g_434,&g_434},{&g_434,&g_433},{(void*)0,&g_238},{&g_433,&g_238},{(void*)0,&g_433},{&g_434,&g_434},{&g_434,&g_433},{(void*)0,&g_238}}; + uint8_t l_1102[1]; + int i, j; + for (i = 0; i < 1; i++) + l_1093[i] = &g_347; + for (i = 0; i < 1; i++) + l_1102[i] = 255UL; + (*p_20) = (safe_rshift_func_int8_t_s_s(((safe_add_func_uint16_t_u_u(p_22.f0, l_1090)) , p_22.f5), 4)); + (*p_20) = ((l_1091.f1 , p_22.f6) ^ ((*l_1100) ^= (((g_18 , ((p_22.f7 |= (l_1094 = ((*l_1092) &= l_1091.f4))) & ((l_1096 = (l_1095 == l_1095)) && (++(*l_1097))))) || 7UL) != 0xF44BF0BDL))); + l_1102[0]--; + g_1105[8]--; + return p_20; +} + + +/* ------------------------------------------ */ +/* + * reads : g_18.f1 g_2 g_39 g_40 g_18.f3 g_71 g_36 g_82 g_5 g_18.f4 g_18.f0 g_119 g_79 g_195 g_209 g_18.f2 g_222 g_220 g_199 g_208 g_241 g_240 g_254 g_282 g_237 g_280 g_347 g_238 g_365 g_390 g_408 g_391.f4 g_391.f9 g_391 g_501 g_508.f0 g_541 g_508.f4 g_511 g_512 g_434 g_601 g_537 g_499 g_508.f2 g_627 g_251 g_508.f1 g_553 g_628 g_542 g_555 g_433 g_802 g_809 g_876 g_500 g_366 g_279 g_18 + * writes: g_39 g_40 g_71 g_18.f3 g_18.f4 g_36 g_82.f1 g_119 g_82.f4 g_2 g_79 g_195 g_199 g_209 g_5 g_82.f3 g_220 g_222 g_241 g_251 g_282 g_280 g_313 g_237 g_347 g_238 g_365 g_390 g_366 g_408 g_208 g_501 g_500 g_542 g_18.f1 g_434 g_254 g_541 g_672 g_433 g_279 g_825 g_809 g_876 g_540 g_537 g_802 + */ +static struct S1 func_24(uint8_t p_25, int8_t p_26, int32_t * p_27, int32_t p_28) +{ /* block id: 8 */ + uint16_t *l_47 = &g_18.f3; + int16_t l_72 = 0xAD7DL; + int32_t l_74 = 0x16071ECCL; + int32_t l_575[6][3]; + struct S1 l_592 = {0,-1419,958,232,442,9,-5643,122,57,4294967290UL}; + uint16_t **l_700 = &g_601; + int32_t *l_782 = &g_433; + uint32_t l_827 = 4294967295UL; + int32_t l_938 = (-6L); + uint32_t l_957 = 0xD9715F58L; + int8_t *l_1012 = (void*)0; + uint32_t l_1070[1]; + uint32_t l_1081 = 1UL; + int32_t *l_1084 = &l_74; + int i, j; + for (i = 0; i < 6; i++) + { + for (j = 0; j < 3; j++) + l_575[i][j] = 0L; + } + for (i = 0; i < 1; i++) + l_1070[i] = 0xE68764B7L; + if (g_18.f1) + { /* block id: 9 */ + int32_t *l_37 = (void*)0; + int32_t *l_38[4][4][10] = {{{(void*)0,&g_2,&g_2,&g_2,(void*)0,(void*)0,&g_39,&g_39,&g_2,&g_2},{(void*)0,&g_2,&g_2,&g_2,(void*)0,(void*)0,&g_2,(void*)0,&g_39,&g_39},{(void*)0,&g_2,&g_2,(void*)0,&g_39,&g_39,&g_39,&g_2,&g_39,&g_39},{&g_39,&g_2,&g_39,&g_2,&g_2,&g_39,&g_2,&g_39,&g_39,&g_39}},{{&g_2,&g_39,&g_39,&g_2,&g_2,&g_2,&g_39,&g_2,&g_2,&g_2},{&g_39,(void*)0,&g_39,&g_39,&g_2,&g_2,&g_39,&g_2,&g_2,&g_39},{&g_39,&g_39,&g_39,&g_2,&g_39,&g_39,&g_2,&g_2,&g_2,&g_39},{(void*)0,&g_39,&g_2,&g_39,(void*)0,&g_39,&g_39,&g_2,(void*)0,&g_39}},{{&g_2,&g_2,(void*)0,&g_2,(void*)0,&g_39,&g_2,&g_2,&g_39,&g_39},{&g_2,&g_2,&g_2,&g_39,(void*)0,(void*)0,&g_2,&g_2,&g_2,&g_39},{&g_2,&g_39,&g_39,(void*)0,&g_39,(void*)0,(void*)0,&g_39,(void*)0,&g_39},{&g_39,&g_39,&g_39,(void*)0,&g_2,&g_2,&g_2,&g_39,(void*)0,(void*)0}},{{(void*)0,&g_39,&g_2,&g_2,&g_39,&g_2,&g_2,&g_2,&g_39,&g_2},{&g_2,&g_39,&g_39,&g_2,(void*)0,&g_2,(void*)0,(void*)0,&g_39,&g_2},{&g_2,&g_39,&g_2,&g_39,&g_2,&g_39,&g_2,&g_39,(void*)0,(void*)0},{&g_39,(void*)0,&g_39,&g_39,&g_2,(void*)0,&g_39,&g_39,&g_39,&g_39}}}; + int32_t *l_61[2][1]; + uint16_t *l_70 = &g_71; + uint8_t *l_73[2]; + int16_t *l_75 = (void*)0; + int16_t *l_76 = (void*)0; + int16_t *l_77 = &l_72; + uint16_t *l_78 = &g_79; + struct S1 l_603 = {3,-2739,1333,112,1230,-2,4967,47,47,0xB711FC9EL}; + uint8_t **l_675 = &l_73[0]; + int32_t l_695 = 7L; + uint16_t l_749[7][10][3] = {{{0UL,65529UL,0xC0C0L},{65535UL,65529UL,0x94E8L},{0x61EEL,0x8649L,9UL},{0xEF64L,65535UL,0x0753L},{65535UL,0x8FD1L,0x62BAL},{0xDD08L,0x8DCEL,0x4F98L},{65526UL,1UL,65535UL},{0xE257L,0x0394L,0xE257L},{0x0394L,65535UL,65535UL},{0xCE6DL,65535UL,0x05EEL}},{{1UL,0x4888L,1UL},{1UL,0xE257L,1UL},{1UL,1UL,65529UL},{0xCE6DL,1UL,0xE143L},{0x0394L,0x05EEL,65528UL},{0xE257L,0xBEEBL,0xF789L},{65526UL,0x55B4L,65531UL},{0xDD08L,1UL,0xBB19L},{65535UL,0xBB19L,65535UL},{0xEF64L,0xCE6DL,0x9B57L}},{{0x61EEL,65535UL,0x105EL},{65535UL,0xABD0L,0x105EL},{0UL,65526UL,0x9B57L},{0x0C0CL,1UL,65535UL},{0xF789L,0x94E8L,0xBB19L},{0x4F98L,0x0753L,65531UL},{65535UL,0xFC46L,0xF789L},{0xE143L,65528UL,65535UL},{0xBEEBL,1UL,0x0C0CL},{0xBB19L,0x4888L,1UL}},{{1UL,9UL,1UL},{65535UL,65529UL,0xDF24L},{0x55B4L,9UL,65531UL},{0x1339L,0x4888L,1UL},{65535UL,1UL,0x33CFL},{65531UL,65535UL,9UL},{65526UL,0x105EL,65535UL},{0xDF24L,65529UL,0xBEEBL},{0xFC46L,0x4979L,65529UL},{1UL,1UL,0xEF64L}},{{1UL,0xE143L,0x4979L},{1UL,0x94E8L,0x61EEL},{1UL,0xEB09L,1UL},{1UL,0x2E04L,0x62BAL},{1UL,65535UL,0x8649L},{0xFC46L,1UL,0x105EL},{0xDF24L,65535UL,0x1339L},{65526UL,0xCE6DL,1UL},{65531UL,65531UL,65535UL},{65535UL,0xCBF3L,1UL}},{{0x1339L,0x8DCEL,0x1123L},{0x55B4L,0x33CFL,65535UL},{65535UL,0x1339L,0x1123L},{1UL,65535UL,1UL},{0xBB19L,5UL,65535UL},{0xBEEBL,0x9B57L,1UL},{0x0C0CL,0xFC46L,0x1339L},{0xEB09L,1UL,0x105EL},{65535UL,0UL,0x8649L},{0x4888L,0x8DCEL,65535UL}},{{0xDD08L,65535UL,1UL},{0x4F98L,65535UL,0x55B4L},{65529UL,65535UL,0x62BAL},{65535UL,65535UL,0xFC46L},{0x105EL,0x8DCEL,0UL},{65526UL,9UL,65528UL},{0UL,1UL,0x05EEL},{65535UL,0xCBF3L,1UL},{0x8649L,65535UL,0x8649L},{65535UL,65531UL,0xCE6DL}}}; + int32_t ** const *l_786[2][8][5] = {{{(void*)0,(void*)0,&g_365,(void*)0,&g_365},{&g_365,&g_365,&g_365,&g_365,&g_365},{(void*)0,&g_365,(void*)0,&g_365,(void*)0},{&g_365,&g_365,&g_365,&g_365,(void*)0},{&g_365,(void*)0,(void*)0,&g_365,(void*)0},{(void*)0,&g_365,&g_365,(void*)0,&g_365},{&g_365,&g_365,(void*)0,&g_365,&g_365},{&g_365,&g_365,&g_365,(void*)0,&g_365}},{{&g_365,&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,(void*)0,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,(void*)0,&g_365},{(void*)0,&g_365,(void*)0,&g_365,&g_365},{&g_365,&g_365,(void*)0,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365,(void*)0}}}; + struct S1 **l_818 = &g_390; + int32_t l_860 = 8L; + int32_t l_892 = 0x202F9FF8L; + int i, j, k; + for (i = 0; i < 2; i++) + { + for (j = 0; j < 1; j++) + l_61[i][j] = &g_39; + } + for (i = 0; i < 2; i++) + l_73[i] = &g_18.f4; +lbl_673: + g_40 ^= (g_39 &= (*p_27)); + if ((func_41(g_18.f1, l_47, (safe_sub_func_int32_t_s_s((safe_mul_func_uint8_t_u_u((func_52(func_56(l_61[1][0], ((*l_77) = ((safe_sub_func_uint32_t_u_u(0xF8A1C32FL, ((l_74 |= (safe_mul_func_uint16_t_u_u(((*l_47) = (safe_sub_func_int16_t_s_s((g_40 , (safe_rshift_func_int8_t_s_s((g_18.f3 , ((*p_27) <= (*p_27))), 5))), (((*l_70) |= 65535UL) || p_25)))), l_72))) || p_25))) , (-2L))), l_78, &g_36[2]), g_82, l_77) && g_541), g_508[3][3][4].f4)), l_575[0][0])), g_391.f9, (*g_511)) != p_25)) + { /* block id: 367 */ + int32_t l_587 = 0xAFFEE3ACL; + uint8_t l_588 = 0xFBL; + int32_t l_602 = 0xF8DD99D7L; + if ((g_391.f1 == (*p_27))) + { /* block id: 368 */ + uint16_t l_584 = 65535UL; + struct S1 l_591[9] = {{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L},{3,2063,1226,210,751,33,2362,168,69,0x04BFF210L}}; + int i; + for (g_542 = 0; (g_542 <= 2); g_542 += 1) + { /* block id: 371 */ + uint16_t l_581 = 0UL; + l_581++; + l_584--; + } + for (g_18.f1 = 0; (g_18.f1 <= 7); g_18.f1 += 1) + { /* block id: 377 */ + l_588--; + } + for (g_238 = 0; (g_238 <= 2); g_238 += 1) + { /* block id: 382 */ + for (g_82.f1 = 0; (g_82.f1 <= 1); g_82.f1 += 1) + { /* block id: 385 */ + return l_591[3]; + } + for (g_434 = 0; (g_434 <= 2); g_434 += 1) + { /* block id: 390 */ + uint16_t **l_593 = (void*)0; + uint16_t **l_594 = &l_70; + struct S1 l_595 = {2,-2250,1129,1,2028,29,5333,169,16,6UL}; + int i, j; + l_575[g_434][g_434] = (((*l_594) = (l_575[(g_434 + 2)][g_238] , (l_592 , &g_71))) == (void*)0); + return l_595; + } + } + } + else + { /* block id: 396 */ + int32_t *l_596 = (void*)0; + l_602 |= func_41((((((void*)0 == l_596) , (safe_mod_func_int16_t_s_s((l_588 , (((((*l_78) = p_26) , l_47) != l_47) <= func_41((safe_add_func_uint32_t_u_u(func_41(p_26, g_601, l_587, l_72, (*g_511)), (*p_27))), &g_282, l_588, p_28, (*g_511)))), p_28))) , 0xADL) , g_434), l_75, p_26, l_592.f2, (*g_511)); + } + } + else + { /* block id: 400 */ + struct S0 *l_604 = (void*)0; + if ((*p_27)) + { /* block id: 401 */ + return l_603; + } + else + { /* block id: 403 */ + struct S0 **l_605 = &l_604; + (*l_605) = l_604; + return l_603; + } + } + if ((l_575[2][2] |= func_87(l_72))) + { /* block id: 409 */ + uint16_t l_631[6]; + uint32_t l_637 = 0x181F7B27L; + int32_t l_670 = 0xD9A9CC58L; + uint32_t l_676[1]; + struct S1 l_679[7][10][2] = {{{{2,-1595,443,51,912,38,-5277,33,28,1UL},{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL}},{{3,413,618,36,589,4,634,43,83,0xAF2EF906L},{1,-988,1433,245,1849,41,1390,72,82,0xE0E5DFA6L}},{{0,-523,834,104,710,-13,-2819,22,16,0UL},{3,-384,30,246,951,38,-5520,66,28,0UL}},{{0,2383,255,170,10,-40,4091,149,35,4294967295UL},{3,30,1123,48,463,-38,-3243,95,17,0x1E3FA1E9L}},{{0,-1550,67,243,803,1,3103,136,36,0x608032FFL},{0,-2441,1229,9,874,-6,2068,127,59,0xAFA15E54L}},{{0,184,615,146,238,40,-4905,150,1,0x5702A702L},{0,-2441,1229,9,874,-6,2068,127,59,0xAFA15E54L}},{{0,-1550,67,243,803,1,3103,136,36,0x608032FFL},{3,30,1123,48,463,-38,-3243,95,17,0x1E3FA1E9L}},{{0,2383,255,170,10,-40,4091,149,35,4294967295UL},{3,-384,30,246,951,38,-5520,66,28,0UL}},{{0,-523,834,104,710,-13,-2819,22,16,0UL},{1,-988,1433,245,1849,41,1390,72,82,0xE0E5DFA6L}},{{3,413,618,36,589,4,634,43,83,0xAF2EF906L},{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL}}},{{{2,-1595,443,51,912,38,-5277,33,28,1UL},{1,50,448,210,1100,13,348,78,35,0x1D982557L}},{{1,-2592,900,153,1735,-9,5150,41,17,0x0C603FAEL},{0,-1550,67,243,803,1,3103,136,36,0x608032FFL}},{{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL},{0,-1153,207,214,16,-29,-1669,166,73,0xB9229B32L}},{{1,-988,1433,245,1849,41,1390,72,82,0xE0E5DFA6L},{0,184,615,146,238,40,-4905,150,1,0x5702A702L}},{{0,-1469,733,249,1993,-41,-3293,72,22,0UL},{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL}},{{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L},{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L}},{{3,-806,807,85,912,-19,-4175,66,12,4294967295UL},{0,-2387,643,32,290,-16,1613,1,33,4294967295UL}},{{1,50,448,210,1100,13,348,78,35,0x1D982557L},{2,-737,1062,60,555,-8,-4603,152,31,0x138A5C71L}},{{2,-1165,326,103,1319,-1,1999,128,11,0xA99088DAL},{1,37,162,116,1092,11,530,45,61,1UL}},{{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL},{2,-1165,326,103,1319,-1,1999,128,11,0xA99088DAL}}},{{{2,-134,1348,152,1332,-22,-3446,85,60,0x6EEEC6EFL},{0,101,1325,216,1687,-7,3065,171,67,4294967293UL}},{{2,-134,1348,152,1332,-22,-3446,85,60,0x6EEEC6EFL},{2,-1165,326,103,1319,-1,1999,128,11,0xA99088DAL}},{{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL},{1,37,162,116,1092,11,530,45,61,1UL}},{{2,-1165,326,103,1319,-1,1999,128,11,0xA99088DAL},{2,-737,1062,60,555,-8,-4603,152,31,0x138A5C71L}},{{1,50,448,210,1100,13,348,78,35,0x1D982557L},{0,-2387,643,32,290,-16,1613,1,33,4294967295UL}},{{3,-806,807,85,912,-19,-4175,66,12,4294967295UL},{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L}},{{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L},{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL}},{{0,-1469,733,249,1993,-41,-3293,72,22,0UL},{0,184,615,146,238,40,-4905,150,1,0x5702A702L}},{{1,-988,1433,245,1849,41,1390,72,82,0xE0E5DFA6L},{0,-1153,207,214,16,-29,-1669,166,73,0xB9229B32L}},{{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL},{0,-1550,67,243,803,1,3103,136,36,0x608032FFL}}},{{{1,-2592,900,153,1735,-9,5150,41,17,0x0C603FAEL},{1,50,448,210,1100,13,348,78,35,0x1D982557L}},{{2,-1595,443,51,912,38,-5277,33,28,1UL},{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL}},{{3,413,618,36,589,4,634,43,83,0xAF2EF906L},{1,-988,1433,245,1849,41,1390,72,82,0xE0E5DFA6L}},{{0,-523,834,104,710,-13,-2819,22,16,0UL},{3,-384,30,246,951,38,-5520,66,28,0UL}},{{0,2383,255,170,10,-40,4091,149,35,4294967295UL},{3,30,1123,48,463,-38,-3243,95,17,0x1E3FA1E9L}},{{0,-1469,733,249,1993,-41,-3293,72,22,0UL},{2,-134,1348,152,1332,-22,-3446,85,60,0x6EEEC6EFL}},{{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL},{2,-134,1348,152,1332,-22,-3446,85,60,0x6EEEC6EFL}},{{0,-1469,733,249,1993,-41,-3293,72,22,0UL},{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL}},{{2,-737,1062,60,555,-8,-4603,152,31,0x138A5C71L},{2,-1165,326,103,1319,-1,1999,128,11,0xA99088DAL}},{{3,-384,30,246,951,38,-5520,66,28,0UL},{1,50,448,210,1100,13,348,78,35,0x1D982557L}}},{{{3,-2429,38,9,1431,32,2622,125,11,0x26C6F8C5L},{3,-806,807,85,912,-19,-4175,66,12,4294967295UL}},{{0,2253,916,153,1215,-7,3059,88,8,4294967294UL},{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L}},{{3,30,1123,48,463,-38,-3243,95,17,0x1E3FA1E9L},{0,-1469,733,249,1993,-41,-3293,72,22,0UL}},{{1,-2592,900,153,1735,-9,5150,41,17,0x0C603FAEL},{1,-988,1433,245,1849,41,1390,72,82,0xE0E5DFA6L}},{{1,50,448,210,1100,13,348,78,35,0x1D982557L},{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL}},{{3,2284,1046,224,1326,26,5594,127,73,1UL},{1,-2592,900,153,1735,-9,5150,41,17,0x0C603FAEL}},{{2,-1595,443,51,912,38,-5277,33,28,1UL},{2,-1595,443,51,912,38,-5277,33,28,1UL}},{{0,-1153,207,214,16,-29,-1669,166,73,0xB9229B32L},{3,413,618,36,589,4,634,43,83,0xAF2EF906L}},{{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L},{0,-523,834,104,710,-13,-2819,22,16,0UL}},{{0,-1550,67,243,803,1,3103,136,36,0x608032FFL},{0,2383,255,170,10,-40,4091,149,35,4294967295UL}}},{{{3,-806,807,85,912,-19,-4175,66,12,4294967295UL},{0,-1550,67,243,803,1,3103,136,36,0x608032FFL}},{{2,2884,1172,138,389,39,-2135,34,51,4294967293UL},{0,184,615,146,238,40,-4905,150,1,0x5702A702L}},{{2,2884,1172,138,389,39,-2135,34,51,4294967293UL},{0,-1550,67,243,803,1,3103,136,36,0x608032FFL}},{{3,-806,807,85,912,-19,-4175,66,12,4294967295UL},{0,2383,255,170,10,-40,4091,149,35,4294967295UL}},{{0,-1550,67,243,803,1,3103,136,36,0x608032FFL},{0,-523,834,104,710,-13,-2819,22,16,0UL}},{{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L},{3,413,618,36,589,4,634,43,83,0xAF2EF906L}},{{0,-1153,207,214,16,-29,-1669,166,73,0xB9229B32L},{2,-1595,443,51,912,38,-5277,33,28,1UL}},{{2,-1595,443,51,912,38,-5277,33,28,1UL},{1,-2592,900,153,1735,-9,5150,41,17,0x0C603FAEL}},{{3,2284,1046,224,1326,26,5594,127,73,1UL},{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL}},{{1,50,448,210,1100,13,348,78,35,0x1D982557L},{1,-988,1433,245,1849,41,1390,72,82,0xE0E5DFA6L}}},{{{1,-2592,900,153,1735,-9,5150,41,17,0x0C603FAEL},{0,-1469,733,249,1993,-41,-3293,72,22,0UL}},{{3,30,1123,48,463,-38,-3243,95,17,0x1E3FA1E9L},{1,269,1195,186,100,-25,5627,56,53,0x7B86FED5L}},{{0,2253,916,153,1215,-7,3059,88,8,4294967294UL},{3,-806,807,85,912,-19,-4175,66,12,4294967295UL}},{{3,-2429,38,9,1431,32,2622,125,11,0x26C6F8C5L},{1,50,448,210,1100,13,348,78,35,0x1D982557L}},{{3,-384,30,246,951,38,-5520,66,28,0UL},{2,-1165,326,103,1319,-1,1999,128,11,0xA99088DAL}},{{2,-737,1062,60,555,-8,-4603,152,31,0x138A5C71L},{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL}},{{0,-1469,733,249,1993,-41,-3293,72,22,0UL},{2,-134,1348,152,1332,-22,-3446,85,60,0x6EEEC6EFL}},{{0,575,770,106,328,22,-2648,35,12,0x609DEBEDL},{2,-134,1348,152,1332,-22,-3446,85,60,0x6EEEC6EFL}},{{0,-1469,733,249,1993,-41,-3293,72,22,0UL},{2,1593,542,200,804,28,4679,20,13,0x3BD0E54FL}},{{2,-737,1062,60,555,-8,-4603,152,31,0x138A5C71L},{2,-1165,326,103,1319,-1,1999,128,11,0xA99088DAL}}}}; + uint32_t l_708 = 0x1807D42BL; + int8_t *l_717 = &g_537[0]; + const int16_t l_725 = 0x512FL; + int32_t **l_738 = &g_199; + int i, j, k; + for (i = 0; i < 6; i++) + l_631[i] = 65526UL; + for (i = 0; i < 1; i++) + l_676[i] = 0x17292FF8L; + for (p_28 = 0; (p_28 > (-30)); p_28--) + { /* block id: 412 */ + int32_t * const l_624 = &g_541; + int32_t * const *l_623 = &l_624; + int32_t l_630 = 1L; + if ((*p_27)) + { /* block id: 413 */ + int8_t l_626 = 0x9FL; + for (p_26 = 0; (p_26 >= 0); p_26 -= 1) + { /* block id: 416 */ + int32_t * const **l_625 = &l_623; + uint32_t *l_629 = &g_347; + uint8_t ***l_634 = &g_254; + int i; + (*p_27) = ((l_575[0][0] &= ((safe_rshift_func_uint16_t_u_s(g_537[p_26], 14)) != (safe_div_func_int8_t_s_s((l_592.f4 || (((safe_unary_minus_func_uint8_t_u(255UL)) && ((safe_mod_func_uint32_t_u_u(((*l_629) = (func_87(((safe_lshift_func_uint8_t_u_u(((safe_add_func_uint8_t_u_u(l_592.f9, (g_499[2][0] != ((safe_mul_func_uint16_t_u_u(((func_87(g_537[p_26]) & ((((*l_625) = l_623) != ((g_508[3][3][4].f2 && l_626) , g_627[3][7][1])) <= 5L)) <= 0x6DC3L), p_28)) <= 0x75C34126L)))) <= g_82.f0), p_25)) ^ 0UL)) , g_251)), g_537[p_26])) != p_26)) < 0xC6L)), g_391.f7)))) & 3L); + if (l_630) + break; + ++l_631[5]; + (*l_634) = &l_73[1]; + } + for (g_82.f3 = (-4); (g_82.f3 <= 2); ++g_82.f3) + { /* block id: 427 */ + uint32_t *l_658 = (void*)0; + uint32_t *l_659 = &l_592.f9; + uint32_t *l_662 = &g_251; + int32_t l_667 = (-8L); + int8_t *l_668 = &g_36[3]; + int16_t l_669 = (-1L); + int32_t **l_671 = (void*)0; + if (l_637) + break; + g_237 |= ((l_626 , (safe_rshift_func_int16_t_s_s(((((safe_mul_func_uint16_t_u_u((safe_add_func_uint32_t_u_u((p_26 ^ p_25), (l_630 = ((l_670 = (safe_rshift_func_uint8_t_u_s(((((*p_27) = (safe_add_func_int32_t_s_s(l_630, (l_592.f1 |= (safe_rshift_func_int16_t_s_s((0x8601L & ((safe_mod_func_uint8_t_u_u(g_508[3][3][4].f1, ((*l_668) = ((((*l_662) = ((safe_mul_func_uint16_t_u_u((((*l_77) = (g_82 , (func_41(((*l_624) = (safe_rshift_func_int8_t_s_u((safe_mod_func_uint32_t_u_u(((*l_662) = (--(*l_659))), (((*p_27) = (safe_rshift_func_int8_t_s_u((((safe_rshift_func_int16_t_s_s(p_26, 0)) && p_26) | p_28), p_26))) || g_222))), p_26))), l_70, l_667, p_25, (*g_511)) ^ p_25))) | l_575[0][0]), 0UL)) <= 0x419FL)) | l_631[5]) & l_592.f8)))) , l_669)), l_592.f7)))))) ^ (-1L)) != 0x087E7087L), 2))) < 8L)))), p_26)) , l_626) | 0x01F99D9AL) >= 4294967289UL), 15))) | p_28); + g_672[3] = ((*g_220) = (*g_220)); + } + (*g_220) = &l_575[2][0]; + for (g_433 = 0; (g_433 <= 0); g_433 += 1) + { /* block id: 447 */ + int i, j; + if (g_18.f4) + goto lbl_673; + if ((*p_27)) + break; + (*g_199) &= l_626; + } + } + else + { /* block id: 452 */ + uint8_t ***l_674[8] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + int i; + l_675 = g_254; + for (g_82.f1 = 5; (g_82.f1 >= 1); g_82.f1 -= 1) + { /* block id: 456 */ + --l_676[0]; + } + (*g_220) = (*g_220); + (*p_27) &= 0L; + } + if (l_676[0]) + continue; + for (g_251 = 0; (g_251 <= 1); g_251 += 1) + { /* block id: 465 */ + return (*g_390); + } + return l_679[5][2][1]; + } + (*g_220) = (*g_220); + (*g_220) = (void*)0; + if (l_592.f6) + { /* block id: 472 */ + uint32_t l_689 = 0xD04695A0L; + int32_t l_692 = (-1L); + int32_t l_718 = (-2L); + struct S1 **l_728 = &g_390; + struct S1 ***l_729 = &l_728; + int8_t ** const l_734 = &g_512; + for (g_282 = (-24); (g_282 <= 29); g_282 = safe_add_func_int8_t_s_s(g_282, 7)) + { /* block id: 475 */ + const int32_t * const l_682 = &g_238; + const int32_t **l_683 = (void*)0; + const int32_t **l_684 = (void*)0; + const int32_t *l_686 = &g_238; + const int32_t **l_685 = &l_686; + int32_t l_701 = (-1L); + uint32_t *l_711 = &g_347; + (*l_685) = l_682; + if ((safe_mod_func_uint8_t_u_u(l_689, g_119))) + { /* block id: 477 */ + uint16_t l_702[6][8][5] = {{{0x7923L,8UL,0xC85DL,1UL,0x092FL},{65535UL,0x6D71L,65528UL,0x0282L,0x79AEL},{0x2CD4L,1UL,65535UL,0xE226L,0x6CCCL},{0x7923L,0x2CD4L,65535UL,1UL,0xBFC3L},{9UL,0x7590L,6UL,65535UL,7UL},{65528UL,65535UL,65535UL,0xBFC3L,0x299FL},{2UL,1UL,8UL,0x6CCCL,1UL},{65526UL,0xBE31L,65535UL,0x54AEL,1UL}},{{0x0282L,0xEE59L,65530UL,65531UL,0x299FL},{65535UL,65531UL,65532UL,65535UL,7UL},{0x584BL,0xAED2L,65532UL,6UL,0xBFC3L},{0x6CCCL,65527UL,0x7074L,0x295DL,6UL},{0UL,0x0282L,0xD366L,0xB7C5L,1UL},{0x7074L,0xBE31L,0xC85DL,0xC85DL,0xBE31L},{7UL,6UL,1UL,0x295DL,65532UL},{0x820AL,1UL,9UL,1UL,0xB7C5L}},{{0x299FL,0x7590L,0x81A7L,65532UL,0x820AL},{0x820AL,0x9253L,0x54AEL,65531UL,0x77B6L},{7UL,65535UL,65535UL,2UL,0x295DL},{0x7074L,0x6CCCL,65530UL,65532UL,0x7590L},{0UL,0x348CL,0x54AEL,0xBFC3L,0xEE59L},{0x6CCCL,0x12C3L,1UL,8UL,65528UL},{0x584BL,0x820AL,65526UL,65535UL,0x3B03L},{0xAED2L,65535UL,0x54AEL,0x3B03L,3UL}},{{0x3B03L,0x0282L,9UL,0xBFC3L,0x6CCCL},{65530UL,0x0282L,0xEE59L,65530UL,65531UL},{65535UL,65535UL,3UL,0xAED2L,0xC85DL},{0UL,0xB7C5L,1UL,0x820AL,0xB585L},{65535UL,1UL,65532UL,1UL,0x12C3L},{0x0282L,65535UL,65531UL,65528UL,0x9253L},{7UL,0x12C3L,65535UL,0xBFC3L,0xBFC3L},{0x5DE7L,8UL,0x5DE7L,0x81A7L,65535UL}},{{0x0282L,0x5DE7L,0x43CAL,8UL,0x77B6L},{0xBFC3L,65535UL,0x2CD4L,65535UL,1UL},{65531UL,0x7590L,0x43CAL,0x77B6L,0xBE31L},{65535UL,0x299FL,0x5DE7L,0x12C3L,0x7074L},{65528UL,9UL,65535UL,65535UL,0x7590L},{0x81A7L,0x3B03L,65531UL,65534UL,0xBE31L},{0xAED2L,65534UL,65532UL,0x0282L,0x348CL},{1UL,2UL,1UL,65535UL,0x9DBCL}},{{0x584BL,0x295DL,3UL,65532UL,65535UL},{1UL,0x81A7L,0xEE59L,65531UL,0x6D71L},{0x54AEL,0x348CL,0UL,65531UL,0x348CL},{65535UL,0x9253L,0x79AEL,0x092FL,0x299FL},{65530UL,0x7923L,65527UL,0x9253L,7UL},{0x5DE7L,0x54AEL,0x9DBCL,9UL,65530UL},{65535UL,65535UL,1UL,1UL,65532UL},{65535UL,1UL,0xBEBFL,0x81A7L,0x092FL}}}; + int32_t l_707 = 0x15AB18EFL; + int i, j, k; + (*p_27) &= l_592.f9; + l_702[2][2][1] = (l_692 = ((*p_27) = ((safe_lshift_func_int16_t_s_u((((--(*l_70)) , (l_695 || ((*l_47) = g_36[7]))) != ((safe_lshift_func_int16_t_s_u((safe_add_func_uint16_t_u_u(l_631[5], 0x6158L)), 11)) & ((l_700 = &l_70) == (void*)0))), g_553)) , (l_701 &= (*p_27))))); + l_679[5][2][1].f1 = ((((safe_mul_func_uint8_t_u_u(g_241, l_670)) , ((*g_390) , (((l_702[2][2][1] > (!((((safe_mul_func_int16_t_s_s((l_679[5][2][1].f0 , p_25), l_702[2][2][1])) | func_41(((void*)0 != &l_692), &l_631[5], l_707, l_708, (*g_511))) , 2UL) ^ 0x3BL))) , g_238) == p_25))) ^ (-7L)) && 0x63B1L); + } + else + { /* block id: 487 */ + struct S1 l_709 = {2,-2303,1271,97,843,34,-1511,148,89,8UL}; + uint8_t ***l_710 = &l_675; + p_27 = (l_709 , (void*)0); + (*l_710) = g_254; + l_692 = (l_689 < (0x6EC1D1A8L < ((void*)0 == l_711))); + return l_709; + } + for (p_26 = 8; (p_26 <= 15); p_26 = safe_add_func_uint16_t_u_u(p_26, 9)) + { /* block id: 495 */ + uint16_t l_716 = 65531UL; + l_718 ^= (((l_637 || ((((safe_rshift_func_uint8_t_u_u((0UL ^ (((*l_711) |= func_41((*g_628), &g_79, l_716, l_692, l_717)) < (p_25 ^ p_25))), p_25)) <= p_28) ^ (*l_682)) < p_28)) & p_28) && l_689); + if (l_592.f4) + goto lbl_1085; + (*p_27) = (safe_mul_func_int8_t_s_s(((*g_390) , (p_26 , ((p_25 <= (g_542 < ((safe_add_func_uint16_t_u_u(((*l_70)--), p_26)) ^ (l_701 = (*p_27))))) , (((l_725 == ((((*p_27) ^ (safe_sub_func_int8_t_s_s(l_692, l_670))) <= l_679[5][2][1].f5) != l_631[5])) < g_5) ^ l_689)))), 0xD5L)); + if (l_670) + continue; + } + } + (*l_729) = l_728; + (*p_27) = (((*l_77) = (safe_sub_func_int16_t_s_s((safe_mod_func_int8_t_s_s((p_28 >= (l_734 != &g_512)), p_28)), (0x7C6050E9L ^ l_592.f5)))) | 65535UL); + } + else + { /* block id: 507 */ + int32_t ***l_737[4][1][1] = {{{&g_220}},{{(void*)0}},{{&g_220}},{{(void*)0}}}; + int i, j, k; + (*p_27) = ((*p_27) , (p_28 != ((*p_27) , ((l_738 = &p_27) == (void*)0)))); + } + } + else + { /* block id: 511 */ + int16_t l_743 = 1L; + uint16_t **l_746 = (void*)0; + uint16_t ***l_747 = &l_700; + int32_t l_748[10] = {0xB2FC27D5L,3L,3L,0xB2FC27D5L,3L,3L,0xB2FC27D5L,3L,3L,0xB2FC27D5L}; + int32_t *l_761 = (void*)0; + int32_t ***l_785 = (void*)0; + struct S0 l_826 = {0x59DC1ED7L,0x78C5L,1UL,0x2F09L,1UL}; + uint32_t l_833[9] = {18446744073709551614UL,0x2696DEC0L,18446744073709551614UL,18446744073709551614UL,0x2696DEC0L,18446744073709551614UL,18446744073709551614UL,0x2696DEC0L,18446744073709551614UL}; + int i; + (*g_220) = (l_592 , (*g_220)); + if (((*p_27) | (safe_mul_func_int16_t_s_s((safe_sub_func_int16_t_s_s(((l_743 == 0x9BDFL) , p_26), (((safe_sub_func_uint16_t_u_u((p_25 >= l_592.f5), ((*l_47) |= g_282))) , &l_78) != ((*l_747) = l_746)))), 0x5BEBL)))) + { /* block id: 515 */ + int8_t *l_778 = &g_36[3]; + ++l_749[1][8][2]; + (*g_220) = (p_28 , (*g_220)); + for (g_280 = (-17); (g_280 == (-28)); g_280 = safe_sub_func_uint8_t_u_u(g_280, 9)) + { /* block id: 520 */ + return (*g_390); + } + for (l_592.f9 = 0; (l_592.f9 < 58); l_592.f9 = safe_add_func_int8_t_s_s(l_592.f9, 8)) + { /* block id: 525 */ + uint8_t l_777 = 1UL; + int32_t * const l_779 = (void*)0; + int32_t **l_780 = (void*)0; + int32_t **l_781 = &l_38[3][2][7]; + for (g_82.f4 = 0; (g_82.f4 != 34); ++g_82.f4) + { /* block id: 528 */ + uint8_t l_758 = 0x64L; + uint32_t *l_776[6] = {&g_391.f9,&g_391.f9,&g_391.f9,&g_391.f9,&g_391.f9,&g_391.f9}; + int i; + --l_758; + l_761 = p_27; + (*p_27) = func_41(p_26, &l_749[1][8][2], p_28, ((safe_rshift_func_int8_t_s_s((safe_div_func_uint32_t_u_u((safe_add_func_int8_t_s_s(func_41((l_592.f3 == 2UL), &g_71, (g_555[0][0] , (safe_mod_func_int16_t_s_s(((((((((safe_mod_func_uint32_t_u_u((safe_mod_func_uint16_t_u_u(((*l_70) = ((*l_761) == ((safe_lshift_func_int16_t_s_s(((l_74 ^= g_391.f9) > g_408), 2)) , g_433))), p_28)), (*p_27))) | 0L) < p_26) , p_25) == p_26) , l_758) == 248UL) != 0x274DL), l_777))), p_28, (*g_511)), 0x6DL)), 0x4355FD78L)), l_758)) & l_592.f4), l_778); + } + (*l_781) = l_779; + } + } + else + { /* block id: 537 */ + uint32_t l_793[5]; + uint8_t l_817[8]; + int32_t l_830 = 7L; + int32_t l_831 = 0L; + int32_t l_894 = 0xF408C4C0L; + uint16_t l_895 = 0UL; + int i; + for (i = 0; i < 5; i++) + l_793[i] = 0x154D16D8L; + for (i = 0; i < 8; i++) + l_817[i] = 9UL; + l_782 = p_27; + if ((g_508[3][3][4].f4 >= (safe_lshift_func_int8_t_s_s((l_785 != l_786[0][1][4]), 2)))) + { /* block id: 539 */ + uint8_t l_789 = 0x62L; + int32_t l_792[9][3][3] = {{{0x1206CF87L,0xD4342978L,0x56D0F252L},{0x1206CF87L,0L,1L},{0xB6B593C1L,0xE970D550L,0L}},{{1L,0xFA8A9F6DL,1L},{0x05365D73L,(-4L),0x56D0F252L},{0xD7896F25L,(-4L),0x47F85DFFL}},{{0L,0xFA8A9F6DL,1L},{0x9D5E6CF8L,0xE970D550L,0L},{0L,0L,0xB6B593C1L}},{{0xD7896F25L,0xD4342978L,0xB6B593C1L},{0x05365D73L,1L,0L},{1L,(-3L),0x47F85DFFL}},{{1L,(-1L),0xD7896F25L},{1L,(-4L),0xB6B593C1L},{1L,0xD48DE2AFL,0x05365D73L}},{{1L,0L,0x66D72F6FL},{0x05365D73L,0L,0x05365D73L},{0L,0xE970D550L,0xB6B593C1L}},{{0x1206CF87L,0xE970D550L,0xD7896F25L},{9L,0L,0x47F85DFFL},{0x56D0F252L,0L,9L}},{{9L,0xD48DE2AFL,1L},{0x1206CF87L,(-4L),1L},{0L,(-1L),9L}},{{0x05365D73L,(-3L),0x47F85DFFL},{1L,(-1L),0xD7896F25L},{1L,(-4L),0xB6B593C1L}}}; + int i, j, k; + l_792[2][1][1] &= ((((safe_sub_func_int8_t_s_s(func_87((((l_789 >= ((*l_77) = (0x3740392DL < (p_25 < (*l_782))))) | (safe_mod_func_int16_t_s_s(p_28, l_789))) , (0xEDL != 255UL))), p_25)) >= p_25) & p_26) || 0x647CL); + for (g_501 = 0; (g_501 <= 0); g_501 += 1) + { /* block id: 544 */ + int8_t *l_816 = &g_279; + l_793[1] |= (*p_27); + (*l_782) = ((safe_rshift_func_int16_t_s_s(func_41(((safe_lshift_func_int8_t_s_s(0L, 7)) , (((safe_sub_func_int16_t_s_s(((*l_77) = (safe_rshift_func_int8_t_s_s(0x05L, 6))), (p_27 != p_27))) ^ ((((!(((g_802 > (+0xAA05L)) & ((safe_mul_func_int8_t_s_s(((*l_816) = ((((safe_mul_func_int8_t_s_s((safe_rshift_func_uint16_t_u_u(g_809[0][0][0], 5)), 0x85L)) , (((safe_lshift_func_int16_t_s_s((safe_add_func_uint16_t_u_u(((safe_mod_func_uint8_t_u_u((0x08L != g_391.f0), g_241)) <= 0x1BL), 0x0014L)), p_25)) != g_408) , g_82.f0)) < (*p_27)) > p_25)), l_817[1])) , p_28)) == g_508[3][3][4].f1)) , l_818) != (void*)0) <= p_26)) || 0L)), &g_802, l_817[5], p_26, (*g_511)), 2)) && 253UL); + } + (*l_818) = (*l_818); + } + else + { /* block id: 551 */ + int32_t l_832 = 0L; + int8_t *l_838 = &g_809[0][0][7]; + int16_t l_849 = 0x28ACL; + for (g_18.f3 = 0; (g_18.f3 <= 0); g_18.f3 += 1) + { /* block id: 554 */ + int16_t l_828 = 0x7066L; + int32_t l_829 = 1L; + if ((*p_27)) + break; + (*l_782) = (safe_mul_func_uint8_t_u_u(g_240, (((safe_mul_func_int16_t_s_s((safe_mul_func_int8_t_s_s((*l_782), ((*l_782) <= p_25))), (0x2E7EL < ((g_825[1][1][0] = p_27) == p_27)))) <= g_508[3][3][4].f0) > ((*l_70) = (((l_826 , l_827) , &l_700) != &l_700))))); + ++l_833[0]; + } + l_831 &= (safe_mod_func_int8_t_s_s((func_87(p_25) , ((((p_28 != ((*l_838) ^= 0x4BL)) || p_26) <= (safe_lshift_func_uint16_t_u_u(p_28, 15))) && (safe_rshift_func_uint16_t_u_u((safe_mul_func_int8_t_s_s(((safe_rshift_func_uint16_t_u_u((safe_lshift_func_uint16_t_u_u(g_282, (*l_782))), 11)) && (((&g_628 != (void*)0) >= (*l_782)) != l_849)), 255UL)), 10)))), l_592.f6)); + if ((*p_27)) + { /* block id: 563 */ + uint32_t *l_859 = &l_793[1]; + (*g_220) = ((p_25 || 255UL) , (((safe_mod_func_uint16_t_u_u((safe_unary_minus_func_uint16_t_u((*l_782))), func_41((safe_div_func_uint32_t_u_u((safe_mod_func_uint16_t_u_u(l_817[1], p_28)), ((*l_859) |= (safe_rshift_func_uint16_t_u_u(65526UL, 1))))), &l_749[1][7][0], p_28, ((*l_78) ^= 0xA894L), (*g_511)))) , 0UL) , (*g_220))); + (*l_782) &= (l_748[4] = l_830); + } + else + { /* block id: 569 */ + uint16_t l_877 = 1UL; + uint32_t *l_878 = &g_347; + (*p_27) &= l_860; + l_830 |= ((safe_rshift_func_uint16_t_u_s(0UL, (safe_sub_func_uint16_t_u_u(l_849, ((safe_mul_func_uint16_t_u_u(0UL, ((((safe_lshift_func_uint8_t_u_u((safe_lshift_func_int8_t_s_u((safe_mod_func_int32_t_s_s(((safe_unary_minus_func_int32_t_s(0x03A43780L)) ^ ((safe_div_func_uint32_t_u_u((g_876 , l_877), l_877)) >= (p_26 = (((((*l_782) = (*p_27)) && ((*l_878) = (p_25 && g_391.f4))) , 4294967295UL) || l_817[1])))), l_877)), 7)), 1)) , g_553) || l_817[1]) , 1L))) >= p_28))))) >= 0x766AL); + } + } + for (l_743 = 2; (l_743 >= 0); l_743 -= 1) + { /* block id: 579 */ + int16_t * const *l_879 = (void*)0; + int16_t * const **l_880 = (void*)0; + int16_t * const **l_881 = &l_879; + int32_t l_884 = 1L; + int32_t l_889[3][4] = {{0xEE9CF121L,0x412F2CC4L,0x412F2CC4L,0xEE9CF121L},{1L,0x412F2CC4L,0L,0x412F2CC4L},{0x412F2CC4L,(-1L),0L,0L}}; + struct S0 * const l_900 = &g_508[3][3][4]; + int i, j; + for (l_592.f9 = 0; (l_592.f9 <= 0); l_592.f9 += 1) + { /* block id: 582 */ + if (g_391.f5) + goto lbl_673; + } + (*l_881) = l_879; + for (g_241 = 1; (g_241 <= 9); g_241 += 1) + { /* block id: 588 */ + int32_t l_882 = 0x18650A18L; + int32_t l_883 = 0x4796B007L; + int32_t l_885 = 0xB890EDFAL; + int32_t l_886 = 0xC2F30DA4L; + int32_t l_887 = 5L; + int32_t l_888 = 1L; + int32_t l_890 = (-9L); + int32_t l_891 = 0L; + int32_t l_893[4]; + int i, j; + for (i = 0; i < 4; i++) + l_893[i] = (-1L); + --l_895; + return (*g_390); + } + for (g_434 = 2; (g_434 >= 0); g_434 -= 1) + { /* block id: 594 */ + int32_t **l_898 = (void*)0; + int32_t **l_899 = &l_37; + struct S0 *l_902 = &g_508[2][2][3]; + struct S0 **l_901 = &l_902; + int i, j; + l_575[(g_434 + 1)][g_434] = l_575[(l_743 + 1)][g_434]; + (*l_899) = ((*g_220) = &l_575[(l_743 + 1)][g_434]); + (*g_220) = p_27; + (*l_901) = l_900; + } + } + } + } + } + else + { /* block id: 604 */ + struct S1 * const l_903 = &g_391; + const int8_t *l_909 = &g_910; + int32_t l_922 = 0xD6581181L; + uint32_t l_936 = 4294967291UL; + uint16_t l_937 = 65526UL; + int8_t *l_939 = &g_537[0]; + int8_t l_949 = 0xBCL; + struct S1 * const *l_993 = &g_390; + struct S0 *l_1040 = &g_82; + int32_t l_1080[8][9][1] = {{{0x02266532L},{1L},{(-7L)},{0x5385CC6DL},{(-7L)},{1L},{0x02266532L},{1L},{(-7L)}},{{0x5385CC6DL},{(-7L)},{1L},{0x02266532L},{1L},{(-7L)},{0x5385CC6DL},{(-7L)},{1L}},{{0x02266532L},{1L},{(-7L)},{0x5385CC6DL},{(-7L)},{1L},{0x02266532L},{1L},{(-7L)}},{{0x5385CC6DL},{(-7L)},{1L},{0x02266532L},{1L},{(-7L)},{0x5385CC6DL},{(-7L)},{1L}},{{0x02266532L},{0x5385CC6DL},{0x02266532L},{1L},{0x02266532L},{0x5385CC6DL},{(-1L)},{0x5385CC6DL},{0x02266532L}},{{1L},{0x02266532L},{0x5385CC6DL},{(-1L)},{0x5385CC6DL},{0x02266532L},{1L},{0x02266532L},{0x5385CC6DL}},{{(-1L)},{0x5385CC6DL},{0x02266532L},{1L},{0x02266532L},{0x5385CC6DL},{(-1L)},{0x5385CC6DL},{0x02266532L}},{{1L},{0x02266532L},{0x5385CC6DL},{(-1L)},{0x5385CC6DL},{0x02266532L},{1L},{0x02266532L},{0x5385CC6DL}}}; + int i, j, k; + (*g_220) = &l_575[0][0]; +lbl_921: + (*g_220) = (void*)0; + if ((&g_391 == (((*l_47) &= g_500) , l_903))) + { /* block id: 608 */ + uint32_t l_908[1][9][2] = {{{0UL,0UL},{0UL,0UL},{0UL,0UL},{0UL,0UL},{0UL,0UL},{0UL,0UL},{0UL,0UL},{0UL,0UL},{0UL,0UL}}}; + uint16_t *l_912 = (void*)0; + struct S0 **l_942 = (void*)0; + int32_t l_950[5] = {0xB5B7BEC4L,0xB5B7BEC4L,0xB5B7BEC4L,0xB5B7BEC4L,0xB5B7BEC4L}; + struct S1 *l_985 = &l_592; + int i, j, k; + for (g_18.f1 = (-19); (g_18.f1 < (-30)); g_18.f1 = safe_sub_func_uint32_t_u_u(g_18.f1, 4)) + { /* block id: 611 */ + struct S0 *l_919[2]; + int32_t l_920 = 0xECCA13D5L; + uint8_t *l_925[2]; + int16_t *l_953 = &g_508[3][3][4].f1; + int16_t *l_954 = (void*)0; + int16_t *l_955 = (void*)0; + int16_t *l_956 = &l_72; + struct S0 l_968 = {0xE448F1C2L,0x4F3DL,65534UL,1UL,0x56L}; + int16_t l_971 = 5L; + int32_t l_977 = 0x9EC177B0L; + int32_t l_979 = 0L; + int32_t l_981 = 0x3404FE79L; + int i; + for (i = 0; i < 2; i++) + l_919[i] = &g_18; + for (i = 0; i < 2; i++) + l_925[i] = (void*)0; + if ((safe_div_func_uint32_t_u_u((p_28 , 4294967295UL), (*p_27)))) + { /* block id: 612 */ + if (l_908[0][8][0]) + break; + } + else + { /* block id: 614 */ + struct S0 l_911 = {0xF5429923L,-10L,0UL,65535UL,0x2EL}; + int16_t *l_913[4][1][10] = {{{&l_72,&l_72,&l_911.f1,(void*)0,&l_911.f1,&l_72,&l_72,&l_911.f1,(void*)0,&l_911.f1}},{{&l_72,&l_72,&l_911.f1,(void*)0,&l_911.f1,&l_72,&l_72,&l_911.f1,(void*)0,&l_911.f1}},{{&l_72,&l_72,&l_911.f1,(void*)0,&l_911.f1,&l_72,&l_72,&l_911.f1,(void*)0,&l_911.f1}},{{&l_72,&l_72,&l_911.f1,(void*)0,&l_911.f1,&l_72,&l_72,(void*)0,&l_72,(void*)0}}}; + int32_t l_914 = (-5L); + int32_t l_915 = 1L; + struct S1 **l_918 = &g_390; + int i, j, k; + (*l_782) &= (l_908[0][8][1] != (((l_915 = (l_914 = l_908[0][8][0])) != ((((safe_add_func_uint32_t_u_u((0x7C33L || (l_918 != (((((void*)0 != l_919[0]) , g_555[0][1]) , p_25) , &g_390))), l_911.f3)) || p_28) & 0xACDCL) < 0xC0L)) < l_920)); + if (g_391.f2) + goto lbl_921; + } + } + } + else + { /* block id: 664 */ + uint32_t l_1000 = 0x0E49DC54L; + int32_t l_1051 = 8L; + int32_t l_1053 = 0x7C5178F1L; + int8_t **l_1061 = &g_512; + for (g_876 = 17; (g_876 < 20); ++g_876) + { /* block id: 667 */ + for (l_922 = 0; (l_922 != 2); l_922 = safe_add_func_uint32_t_u_u(l_922, 9)) + { /* block id: 670 */ + struct S1 * const *l_992 = &l_903; + struct S1 * const **l_991[10] = {&l_992,&l_992,&l_992,&l_992,&l_992,&l_992,&l_992,&l_992,&l_992,&l_992}; + int32_t l_994 = 0xFEEF50B1L; + int i; + l_993 = &l_903; + for (g_222 = 0; (g_222 <= 0); g_222 += 1) + { /* block id: 674 */ + int32_t *l_995 = (void*)0; + int32_t *l_996 = &g_238; + int32_t *l_997 = &g_434; + int32_t *l_998 = &l_994; + int32_t *l_999 = &g_433; + struct S1 **l_1003 = &g_390; + (*g_220) = (*g_220); + l_1000--; + (*l_1003) = &g_391; + } + } + } + if ((l_1000 , ((p_25 , l_949) || ((*l_782) = (safe_mod_func_uint32_t_u_u((safe_mod_func_uint8_t_u_u(func_41(p_25, &l_937, l_922, (safe_sub_func_uint16_t_u_u((safe_rshift_func_int8_t_s_u(g_5, 7)), (func_41(func_41((**g_365), &l_937, p_25, l_922, l_1012), &l_937, l_1000, p_25, (*g_511)) , (*l_782)))), (*g_511)), p_25)), p_25)))))) + { /* block id: 682 */ + int32_t l_1013 = 0x9ACA0752L; + int32_t l_1014 = (-5L); + l_1014 ^= (l_1013 <= p_28); + return (**l_993); + } + else + { /* block id: 685 */ + (*p_27) = (*p_27); + } + for (g_279 = 0; (g_279 > 29); g_279 = safe_add_func_uint32_t_u_u(g_279, 8)) + { /* block id: 690 */ + uint16_t l_1029 = 0x98C6L; + int16_t **l_1035 = &g_313[1][2][2]; + int16_t ***l_1034[9][1][1] = {{{&l_1035}},{{(void*)0}},{{&l_1035}},{{(void*)0}},{{&l_1035}},{{(void*)0}},{{&l_1035}},{{(void*)0}},{{&l_1035}}}; + int32_t l_1036 = 0L; + uint32_t l_1054[1]; + int16_t l_1072[8] = {1L,1L,1L,1L,1L,1L,1L,1L}; + int i, j, k; + for (i = 0; i < 1; i++) + l_1054[i] = 1UL; + for (g_209 = 16; (g_209 >= 50); ++g_209) + { /* block id: 693 */ + int8_t *l_1027[6][6][5] = {{{(void*)0,(void*)0,&g_280,(void*)0,(void*)0},{&g_809[0][0][0],&g_36[5],&g_279,&g_36[0],&g_280},{(void*)0,(void*)0,&g_537[0],(void*)0,(void*)0},{&g_280,&g_36[0],&g_279,&g_36[5],&g_809[0][0][0]},{(void*)0,(void*)0,&g_280,(void*)0,(void*)0},{&g_809[0][0][0],&g_36[0],(void*)0,&g_36[0],&g_809[0][0][0]}},{{(void*)0,(void*)0,&g_280,(void*)0,(void*)0},{&g_809[0][0][0],&g_36[5],&g_279,&g_36[0],&g_280},{(void*)0,(void*)0,&g_537[0],(void*)0,(void*)0},{&g_280,&g_36[0],&g_279,&g_36[5],&g_809[0][0][0]},{(void*)0,(void*)0,&g_280,(void*)0,(void*)0},{&g_809[0][0][0],&g_36[0],(void*)0,&g_36[0],&g_809[0][0][0]}},{{(void*)0,(void*)0,&g_280,(void*)0,(void*)0},{&l_949,(void*)0,&g_280,&g_809[2][0][2],&g_809[0][0][0]},{&g_40,(void*)0,(void*)0,(void*)0,&g_40},{&g_809[0][0][0],&g_809[2][0][2],&g_280,(void*)0,&l_949},{&g_40,&l_949,&g_809[4][0][4],(void*)0,&g_36[3]},{&l_949,&g_809[2][0][2],&g_279,&g_809[2][0][2],&l_949}},{{&g_36[3],(void*)0,&g_809[4][0][4],&l_949,&g_40},{&l_949,(void*)0,&g_280,&g_809[2][0][2],&g_809[0][0][0]},{&g_40,(void*)0,(void*)0,(void*)0,&g_40},{&g_809[0][0][0],&g_809[2][0][2],&g_280,(void*)0,&l_949},{&g_40,&l_949,&g_809[4][0][4],(void*)0,&g_36[3]},{&l_949,&g_809[2][0][2],&g_279,&g_809[2][0][2],&l_949}},{{&g_36[3],(void*)0,&g_809[4][0][4],&l_949,&g_40},{&l_949,(void*)0,&g_280,&g_809[2][0][2],&g_809[0][0][0]},{&g_40,(void*)0,(void*)0,(void*)0,&g_40},{&g_809[0][0][0],&g_809[2][0][2],&g_280,(void*)0,&l_949},{&g_40,&l_949,&g_809[4][0][4],(void*)0,&g_36[3]},{&l_949,&g_809[2][0][2],&g_279,&g_809[2][0][2],&l_949}},{{&g_36[3],(void*)0,&g_809[4][0][4],&l_949,&g_40},{&l_949,(void*)0,&g_280,&g_809[2][0][2],&g_809[0][0][0]},{&g_40,&g_40,&g_36[3],&g_40,(void*)0},{&g_40,&g_279,&g_809[0][0][0],&g_40,&g_279},{(void*)0,&g_809[4][0][4],&g_36[3],&g_40,&g_537[1]},{&g_279,&g_279,&g_36[3],&g_279,&g_279}}}; + int32_t l_1028[6]; + struct S0 **l_1041 = &l_1040; + int i, j, k; + for (i = 0; i < 6; i++) + l_1028[i] = 0x27D0BFBFL; + } + for (g_540 = 0; (g_540 <= (-29)); g_540 = safe_sub_func_uint8_t_u_u(g_540, 1)) + { /* block id: 716 */ + int8_t **l_1062 = &l_1012; + int8_t ***l_1063 = (void*)0; + int8_t ***l_1064 = &l_1062; + int32_t l_1067 = 7L; + uint8_t *l_1071 = &g_18.f4; + int32_t *l_1073 = &l_1067; + int32_t *l_1074 = &l_1051; + int32_t *l_1075 = &g_39; + int32_t *l_1076 = &l_1067; + int32_t *l_1077 = &g_238; + int32_t *l_1078 = &g_876; + int32_t *l_1079[2][3][4] = {{{&g_500,&g_876,&g_433,&g_876},{&g_876,&g_876,&g_433,&g_433},{&g_500,&g_500,&g_876,&g_433}},{{&g_876,&g_876,&g_876,&g_876},{&g_876,&g_876,&g_876,&g_876},{&g_500,&g_876,&g_433,&g_876}}}; + int i, j, k; + (*g_220) = p_27; + l_1072[2] ^= (((*l_939) |= l_1029) , (((*l_1071) = (((*l_782) &= (g_18 , (*p_27))) & (l_922 |= ((1L < ((l_1054[0] && (l_1061 != ((*l_1064) = l_1062))) , ((g_802 = (safe_mod_func_uint16_t_u_u(((l_1067 | (safe_sub_func_uint8_t_u_u((l_937 && p_25), 0xAEL))) >= 0x51EFA7E7L), 0xE701L))) <= l_1070[0]))) <= (**g_220))))) , l_1067)); + ++l_1081; + } + if (l_1072[7]) + continue; + return (*g_390); + } + } + } +lbl_1085: + (*l_1084) &= (*l_782); + (*g_220) = p_27; + return (*g_390); +} + + +/* ------------------------------------------ */ +/* + * reads : g_82.f1 + * writes: g_82.f1 g_500 + */ +static uint32_t func_41(int32_t p_42, uint16_t * p_43, int32_t p_44, uint16_t p_45, int8_t * p_46) +{ /* block id: 359 */ + int32_t l_580 = 4L; + for (g_82.f1 = (-1); (g_82.f1 < 7); g_82.f1++) + { /* block id: 362 */ + int8_t l_578 = 0x96L; + int32_t *l_579 = &g_500; + (*l_579) = l_578; + l_580 &= (~p_42); + } + return l_580; +} + + +/* ------------------------------------------ */ +/* + * reads : g_18.f1 g_82 g_36 g_5 g_18.f4 g_71 g_18.f0 g_39 g_119 g_79 g_18.f3 g_2 g_195 g_209 g_18.f2 g_222 g_40 g_220 g_199 g_208 g_241 g_240 g_254 g_282 g_237 g_280 g_347 g_238 g_365 g_390 g_408 g_391.f4 g_391.f9 g_391 g_501 g_508.f0 + * writes: g_36 g_39 g_82.f1 g_119 g_82.f4 g_2 g_79 g_195 g_199 g_209 g_18.f3 g_5 g_82.f3 g_220 g_222 g_241 g_251 g_40 g_282 g_280 g_313 g_237 g_347 g_71 g_238 g_365 g_18.f4 g_390 g_366 g_408 g_208 g_501 + */ +static const uint16_t func_52(const int8_t * p_53, struct S0 p_54, uint16_t * p_55) +{ /* block id: 23 */ + int8_t *l_91 = &g_36[3]; + int8_t *l_92[5]; + int32_t l_574 = 0L; + int i; + for (i = 0; i < 5; i++) + l_92[i] = (void*)0; + l_574 = ((((*p_55) || (((p_54.f4 = g_18.f1) , (safe_lshift_func_int16_t_s_u(((p_54.f1 & (safe_mod_func_uint32_t_u_u(func_87((safe_mul_func_int16_t_s_s((((*p_55) > (g_82 , (*p_55))) >= (((*l_91) = (*p_53)) ^ p_54.f3)), ((l_92[1] = l_91) == (void*)0)))), l_574))) | 0xF0L), g_82.f2))) > p_54.f3)) ^ (*p_55)) != 0x7A4DDB26L); + return (*p_55); +} + + +/* ------------------------------------------ */ +/* + * reads : g_18.f4 g_36 g_39 g_209 g_408 g_18.f0 g_195 g_241 + * writes: g_18.f4 g_39 g_209 g_408 g_18.f0 g_195 g_241 + */ +static const int8_t * func_56(int32_t * p_57, int16_t p_58, uint16_t * p_59, int8_t * p_60) +{ /* block id: 16 */ + for (g_18.f4 = 27; (g_18.f4 >= 55); g_18.f4++) + { /* block id: 19 */ + (*p_57) ^= g_36[3]; + } + return p_60; +} + + +/* ------------------------------------------ */ +/* + * reads : g_5 g_18.f4 g_71 g_18.f0 g_39 g_82.f0 g_82.f1 g_36 g_119 g_82.f3 g_82.f4 g_79 g_18.f3 g_2 g_195 g_209 g_18.f2 g_222 g_40 g_220 g_199 g_208 g_241 g_240 g_254 g_282 g_82.f2 g_237 g_280 g_347 g_238 g_365 g_390 g_408 g_391.f4 g_391.f9 g_18.f1 g_391 g_501 g_508.f0 + * writes: g_39 g_82.f1 g_119 g_36 g_82.f4 g_2 g_79 g_195 g_199 g_209 g_18.f3 g_5 g_82.f3 g_220 g_222 g_241 g_251 g_40 g_282 g_280 g_313 g_237 g_347 g_71 g_238 g_365 g_18.f4 g_390 g_366 g_408 g_208 g_501 + */ +static uint32_t func_87(uint32_t p_88) +{ /* block id: 27 */ + int16_t l_99 = (-3L); + uint16_t *l_100 = &g_79; + uint16_t *l_101 = &g_79; + int16_t l_102 = 0x2A7AL; + uint32_t l_109 = 0x8BEEE5F8L; + struct S0 l_124[7][3] = {{{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL}},{{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL}},{{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL}},{{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL}},{{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL}},{{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL}},{{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL},{0xAE64750AL,-1L,65528UL,0UL,4UL}}}; + int32_t l_163 = 0x4B2EDB8FL; + int8_t l_177[7]; + uint32_t l_229 = 18446744073709551615UL; + int32_t l_233 = (-1L); + int32_t l_235 = 0xD2773083L; + int32_t l_236 = 0x58A2F2A6L; + int32_t l_246 = (-1L); + uint8_t *l_269 = (void*)0; + uint8_t **l_268 = &l_269; + int8_t *l_298 = &g_36[6]; + int8_t **l_297[9] = {&l_298,&l_298,&l_298,&l_298,&l_298,&l_298,&l_298,&l_298,&l_298}; + struct S1 l_311 = {3,-2389,162,110,1321,-10,-1534,54,17,1UL}; + uint32_t l_386 = 18446744073709551611UL; + int8_t l_407 = (-9L); + uint32_t l_435 = 0x04C585D8L; + uint32_t l_454 = 0x06D19C9CL; + int32_t l_482 = 8L; + int16_t l_493 = 0x7372L; + struct S0 *l_507[1]; + int i, j; + for (i = 0; i < 7; i++) + l_177[i] = 0x47L; + for (i = 0; i < 1; i++) + l_507[i] = &g_508[3][3][4]; + if ((!(((safe_add_func_uint32_t_u_u(g_5, (4L && (safe_div_func_int8_t_s_s(g_18.f4, g_71))))) == ((safe_rshift_func_int16_t_s_s(p_88, 3)) , (((((((p_88 , ((l_99 , (void*)0) != (l_101 = l_100))) & 0x42C135D3L) ^ l_99) | p_88) <= l_99) , (void*)0) == &g_5))) > l_102))) + { /* block id: 29 */ + const int32_t l_104 = 1L; + int32_t l_111 = 0L; + uint8_t *l_154 = &g_5; + uint32_t l_184 = 1UL; + int32_t *l_203 = &g_39; + int32_t *l_204 = (void*)0; + int32_t *l_205 = &l_111; + int32_t *l_206 = (void*)0; + int32_t *l_207[6][5][8] = {{{&g_39,&l_163,&g_2,(void*)0,&l_111,&g_2,&g_2,&l_163},{&l_111,&l_111,&g_39,&g_39,&g_39,&g_2,&g_2,&l_163},{&l_163,&g_39,&g_2,(void*)0,&g_2,&g_39,&l_163,&l_163},{&l_111,&l_163,&g_2,&l_163,&g_2,&g_2,&g_39,&g_39},{(void*)0,&g_2,&g_39,&g_2,&g_39,&l_111,&l_111,(void*)0}},{{&l_163,(void*)0,&l_163,&g_39,(void*)0,&l_111,&l_163,&l_163},{(void*)0,&l_163,&g_2,(void*)0,&g_2,&g_2,&g_2,&g_39},{&g_2,&g_39,&g_39,&g_39,&l_163,&g_2,&g_2,&l_111},{&g_2,&g_2,(void*)0,&g_39,(void*)0,(void*)0,&g_2,&g_39},{&g_2,&g_2,&g_39,&g_39,&g_2,&g_2,&l_163,&g_39}},{{&l_163,&g_2,&l_111,&g_2,&g_39,&g_2,&g_39,(void*)0},{&g_2,&g_39,&l_163,(void*)0,(void*)0,&l_163,&g_39,&g_2},{&g_2,(void*)0,&g_2,&l_111,&g_39,&l_111,&l_163,(void*)0},{&l_163,&g_39,&g_39,&g_2,&l_111,&l_111,(void*)0,(void*)0},{&g_39,(void*)0,&g_2,&g_2,&g_39,&g_2,(void*)0,&l_111}},{{&l_111,&l_111,&l_163,&g_39,&g_39,(void*)0,&g_2,&l_111},{(void*)0,&g_2,&l_163,&g_2,&g_39,&g_39,&l_111,(void*)0},{&g_39,&l_163,&l_111,&g_39,&g_39,&g_39,&l_163,&l_163},{&l_111,(void*)0,&g_2,&l_111,(void*)0,&l_163,&g_39,&g_2},{&g_39,(void*)0,(void*)0,&g_2,&l_111,&g_2,&g_39,&g_2}},{{&g_39,&l_111,&g_39,&g_39,&g_2,&l_111,&l_111,&g_2},{&l_163,&g_2,&g_2,(void*)0,(void*)0,&g_39,&g_2,&g_2},{&l_163,&g_39,&l_111,&g_39,&g_2,(void*)0,&g_39,&g_2},{&g_2,&g_2,(void*)0,&l_111,&g_39,&l_163,&g_39,&l_111},{&l_163,&l_111,&g_2,&g_39,&l_111,&g_39,&l_111,&g_39}},{{&g_39,&g_2,&g_39,&g_2,&g_39,&g_2,&l_163,&g_39},{(void*)0,&g_39,&g_39,&g_2,&g_2,&g_2,&g_2,&g_2},{&l_111,&g_2,(void*)0,&g_39,&g_2,(void*)0,&l_111,(void*)0},{&g_2,&l_163,&l_163,(void*)0,&g_39,(void*)0,&g_2,&g_2},{&g_39,&l_163,&g_39,&l_111,&l_163,&g_2,&l_163,&g_2}}}; + int i, j, k; + if ((0UL >= g_18.f0)) + { /* block id: 30 */ + int32_t *l_103 = &g_39; + int32_t **l_108 = &l_103; + (*l_103) ^= p_88; + if (l_104) + { /* block id: 32 */ + (*l_103) |= g_82.f0; + } + else + { /* block id: 34 */ + int8_t * const l_107 = &g_40; + int8_t * const *l_106 = &l_107; + int8_t * const **l_105 = &l_106; + (*l_105) = (void*)0; + } + (*l_108) = &g_39; + } + else + { /* block id: 38 */ + uint32_t l_112 = 0UL; + int32_t l_118[9] = {0x14109486L,0x33D78BCCL,0x14109486L,0x14109486L,0x33D78BCCL,0x14109486L,0x14109486L,0x33D78BCCL,0x14109486L}; + uint8_t *l_155 = &l_124[4][2].f4; + int i; + if (((l_109 || l_104) == l_102)) + { /* block id: 39 */ + int32_t *l_110[3]; + int i; + for (i = 0; i < 3; i++) + l_110[i] = &g_2; + l_112 ^= (l_111 |= 1L); + } + else + { /* block id: 42 */ + uint32_t l_113 = 1UL; + int32_t l_117 = 0xE729AE47L; + int32_t l_192 = (-2L); + int32_t l_193 = 0x9EB32EB6L; + int32_t l_194 = (-3L); + for (g_82.f1 = 0; (g_82.f1 <= 7); g_82.f1 += 1) + { /* block id: 45 */ + int32_t *l_164 = &l_111; + int i; + if ((g_36[g_82.f1] , 9L)) + { /* block id: 46 */ + int32_t *l_116[6] = {(void*)0,&g_2,(void*)0,(void*)0,&g_2,(void*)0}; + int i; + ++l_113; + l_117 = g_36[g_82.f1]; + --g_119; + } + else + { /* block id: 50 */ + int32_t *l_122 = &l_111; + int32_t *l_123 = &l_117; + int8_t *l_129[5]; + uint8_t *l_130 = &g_82.f4; + int i; + for (i = 0; i < 5; i++) + l_129[i] = &g_36[g_82.f1]; + (*l_123) = ((*l_122) ^= g_36[g_82.f1]); + (*l_123) ^= ((l_124[4][2] , ((g_36[g_82.f1] , (p_88 && (safe_sub_func_int8_t_s_s((safe_add_func_int8_t_s_s(g_82.f3, ((((g_36[3] = g_18.f4) != ((*l_130)++)) && (safe_lshift_func_uint16_t_u_s((safe_mul_func_uint16_t_u_u((safe_rshift_func_int8_t_s_u((safe_lshift_func_int8_t_s_s((~((safe_rshift_func_uint16_t_u_u((safe_mod_func_uint8_t_u_u(g_5, (((*l_122) ^= (((safe_sub_func_int16_t_s_s(0xF46BL, ((((((g_18.f0 >= (safe_mod_func_uint16_t_u_u(p_88, l_124[4][2].f1))) || 65535UL) >= l_113) < p_88) < 0xB794862DL) && g_82.f0))) , 0UL) && 0UL)) , g_36[3]))), 13)) ^ p_88)), l_113)), 3)), p_88)), g_18.f0))) & 3L))), p_88)))) && g_36[g_82.f1])) | p_88); + if ((*l_123)) + break; + } + if (g_39) + goto lbl_198; + for (g_119 = 0; (g_119 == 12); g_119++) + { /* block id: 61 */ + int32_t *l_151 = &g_2; + uint8_t **l_156 = &l_155; + (*l_151) = (l_117 = 0x6B1119ABL); + (*l_151) = (p_88 == ((1UL > (l_154 != ((*l_156) = l_155))) | (((safe_mod_func_uint16_t_u_u(g_36[g_82.f1], (((*l_101) |= (safe_mod_func_uint16_t_u_u(p_88, 0x0427L))) || 0xE7B8L))) || (safe_sub_func_uint32_t_u_u(p_88, 0x82777045L))) != l_112))); + } + (*l_164) = (l_163 |= ((l_113 > 1L) >= ((-1L) | ((g_36[3] != 0x27924F71L) , l_104)))); + for (p_88 = 0; (p_88 <= 7); p_88 += 1) + { /* block id: 72 */ + uint32_t *l_178 = &l_112; + int32_t *l_179 = (void*)0; + int32_t l_180 = 0x58832062L; + int32_t *l_181 = &l_118[p_88]; + int32_t *l_182 = (void*)0; + int32_t *l_183 = &l_118[6]; + int i; + if (g_36[g_82.f1]) + break; + l_180 = (safe_add_func_uint32_t_u_u(g_18.f3, ((*l_164) = (safe_rshift_func_int8_t_s_s((((safe_rshift_func_uint16_t_u_s(((*l_101)--), 5)) < 1L) == (l_117 | ((*l_178) = (((g_18.f0 || (l_118[p_88] = p_88)) ^ l_124[4][2].f1) < (safe_sub_func_int8_t_s_s(((((l_112 == ((l_163 = (((void*)0 == &g_71) == l_177[0])) >= l_104)) > l_113) & 252UL) & 0xC0L), 0x89L)))))), g_2))))); + l_184--; + (*l_183) = (*l_164); + } + } +lbl_198: + for (l_112 = 0; (l_112 < 24); l_112++) + { /* block id: 86 */ + int32_t *l_189 = (void*)0; + int32_t *l_190 = &l_111; + int32_t *l_191[9][7] = {{(void*)0,&l_118[8],&l_163,&l_163,&l_118[8],(void*)0,&l_118[0]},{(void*)0,&l_118[0],&l_163,&l_118[0],&g_39,&l_118[0],&l_118[8]},{&l_118[0],&l_117,(void*)0,(void*)0,&g_2,&l_118[8],&g_2},{&g_39,&l_118[0],&l_118[0],&g_39,&l_163,&l_118[0],(void*)0},{&g_39,&l_118[8],&l_118[0],&l_117,&g_39,&l_117,&l_163},{&l_118[0],&l_163,(void*)0,&l_118[0],(void*)0,&l_118[0],(void*)0},{(void*)0,(void*)0,&l_117,&l_117,&l_117,&l_118[0],&g_2},{(void*)0,&l_117,&g_2,&l_118[0],&l_163,&g_39,&l_118[0]},{&l_117,&l_163,&g_39,(void*)0,&g_39,&l_163,&l_117}}; + int i, j; + ++g_195; + } + if (g_18.f4) + { /* block id: 90 */ + g_199 = &g_2; + } + else + { /* block id: 92 */ + const int32_t *l_201 = (void*)0; + const int32_t **l_200 = &l_201; + int32_t *l_202 = &l_192; + (*l_200) = (void*)0; + (*l_202) ^= (-2L); + } + l_193 = (((p_88 , ((void*)0 == &l_192)) ^ ((*l_101) = 0x9C0BL)) ^ 0x22F9L); + } + } + g_209++; + for (g_82.f4 = 2; (g_82.f4 <= 7); g_82.f4 += 1) + { /* block id: 103 */ + uint16_t l_216 = 1UL; + int32_t l_232 = 5L; + int32_t l_239 = (-1L); + int8_t ***l_270 = (void*)0; + for (g_18.f3 = 0; (g_18.f3 <= 4); g_18.f3 += 1) + { /* block id: 106 */ + uint32_t *l_217 = &l_184; + int32_t l_221 = (-9L); + int32_t l_234[5][5][8] = {{{0xB9C36536L,1L,0x3C2C6411L,0L,(-2L),0x63EE46ABL,5L,0xA1254473L},{0L,0x337FFAD2L,1L,0L,0x83C53249L,0xA1254473L,(-1L),0xD57E7891L},{0x540E818FL,0x559AB983L,0xA1254473L,0x5C0450BFL,0xA1254473L,0x559AB983L,0x540E818FL,(-1L)},{0xCA09B53EL,(-1L),1L,5L,(-7L),1L,0xA3AA631CL,0x99F47FE8L},{0x559AB983L,0xB1993FB8L,0x23F3548BL,0xA3AA631CL,(-7L),0xD57E7891L,0xF18445C7L,0x5C0450BFL}},{{0xCA09B53EL,0x5A902683L,0L,0x99F47FE8L,0xA1254473L,0x23F3548BL,(-1L),0x83C53249L},{0x540E818FL,0xCA09B53EL,0xB9C36536L,0x5A902683L,0x83C53249L,0x5C0450BFL,0xEE774041L,0L},{0L,1L,0xCA09B53EL,(-2L),(-2L),0xCA09B53EL,1L,0L},{0xB9C36536L,(-5L),1L,0xCA09B53EL,1L,0L,0x3C2C6411L,(-1L)},{0x3C2C6411L,0L,0x83C53249L,2L,0xCA09B53EL,0L,0x337FFAD2L,0x5A902683L}},{{0L,(-5L),0L,1L,5L,0L,0xCA09B53EL,0x3C2C6411L},{1L,0L,1L,1L,2L,0L,0L,0L},{0xB1993FB8L,0L,1L,0x5C0450BFL,1L,0x5C0450BFL,1L,0L},{(-5L),1L,1L,0L,0xA1254473L,5L,0x63EE46ABL,(-2L)},{(-7L),0x23F3548BL,(-1L),3L,(-5L),0xA3AA631CL,0x63EE46ABL,0xA1254473L}},{{0L,3L,1L,5L,0x337FFAD2L,0x99F47FE8L,1L,0L},{0x337FFAD2L,0x99F47FE8L,1L,0L,1L,0x5A902683L,0L,0x559AB983L},{0L,0L,1L,0xCA09B53EL,(-2L),(-2L),0xCA09B53EL,1L},{(-1L),(-1L),0xF18445C7L,1L,0x23F3548BL,0xCA09B53EL,0L,0x99F47FE8L},{0xA1254473L,0x540E818FL,(-7L),1L,0x559AB983L,2L,0xD57E7891L,0x99F47FE8L}},{{0x540E818FL,0x3C2C6411L,0xA3AA631CL,1L,1L,1L,0L,1L},{1L,0x89557B5DL,0L,0xCA09B53EL,0x3C2C6411L,(-1L),0x540E818FL,0x559AB983L},{0L,1L,0xEE774041L,0L,0xF18445C7L,0x99F47FE8L,0xF18445C7L,0x63EE46ABL},{0xEE774041L,0xCA09B53EL,0xEE774041L,1L,0x559AB983L,3L,2L,1L},{0x5A902683L,0x63EE46ABL,1L,0x5C0450BFL,0L,0x23F3548BL,0x559AB983L,0x89557B5DL}}}; + const uint8_t *l_267 = &g_5; + int i, j, k; + if (((((((safe_add_func_int8_t_s_s(g_36[g_82.f4], (p_88 == (safe_mul_func_int8_t_s_s((((l_216 ^ ((void*)0 != &l_111)) == (((((*l_217) = (((*l_154) &= p_88) > g_18.f2)) >= ((-1L) > (safe_lshift_func_uint16_t_u_s((l_102 | l_99), l_124[4][2].f1)))) <= g_36[g_82.f4]) >= g_36[g_82.f4])) & 0x73132987L), p_88))))) || 0xDFED307DL) == g_39) || 0xB2D16ADBL) , 0x85EAL) <= 0x6F1BL)) + { /* block id: 109 */ + for (g_82.f3 = 0; (g_82.f3 <= 7); g_82.f3 += 1) + { /* block id: 112 */ + int i; + return l_177[(g_18.f3 + 1)]; + } + g_220 = &g_199; + (*l_203) = p_88; + if (((*l_205) &= l_177[4])) + { /* block id: 118 */ + g_222++; + if (p_88) + break; + (*l_203) &= (g_2 = ((p_88 <= (safe_lshift_func_int16_t_s_s((l_221 != (g_82.f1 && g_40)), ((g_79++) >= g_18.f4)))) , p_88)); + } + else + { /* block id: 124 */ + (*g_220) = (void*)0; + } + } + else + { /* block id: 127 */ + (*g_220) = (*g_220); + for (g_195 = 0; (g_195 <= 7); g_195 += 1) + { /* block id: 131 */ + int i, j, k; + l_207[(g_18.f3 + 1)][g_18.f3][g_82.f4] = (void*)0; + l_229 ^= (l_207[g_18.f3][g_18.f3][(g_18.f3 + 1)] == l_207[g_18.f3][g_18.f3][g_195]); + l_163 = (safe_sub_func_int8_t_s_s(g_208, g_5)); + } + l_232 ^= ((*l_205) = p_88); + } + g_241++; + if ((safe_mod_func_uint32_t_u_u((g_251 = ((p_88 , l_246) || ((safe_lshift_func_uint16_t_u_u((safe_rshift_func_int8_t_s_u(g_82.f4, (g_18.f4 > g_240))), l_216)) > (p_88 ^ (*l_203))))), l_234[4][4][1]))) + { /* block id: 141 */ + for (g_40 = 5; (g_40 >= 1); g_40 -= 1) + { /* block id: 144 */ + return p_88; + } + for (l_239 = 4; (l_239 >= 0); l_239 -= 1) + { /* block id: 149 */ + uint8_t * const *l_255 = (void*)0; + int32_t *l_256[7] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + int i, j, k; + (*l_203) ^= (l_207[(g_18.f3 + 1)][l_239][(g_18.f3 + 2)] == &g_251); + (*l_205) = (g_36[g_82.f4] , (safe_mod_func_uint32_t_u_u(((*l_217) = (g_254 == l_255)), g_36[l_239]))); + (*l_205) = (l_99 != ((l_235 = 0x5B3381A5L) , (safe_mod_func_int16_t_s_s(0x7712L, (safe_div_func_uint16_t_u_u((safe_div_func_uint16_t_u_u((((*l_203) = (((safe_rshift_func_int16_t_s_s(p_88, (safe_mul_func_uint8_t_u_u(((l_154 != l_267) >= (g_254 == l_268)), (!0xA9L))))) , (void*)0) != l_270)) >= g_222), l_124[4][2].f2)), p_88)))))); + } + (*l_203) ^= (g_71 <= 0L); + } + else + { /* block id: 158 */ + (*l_205) = ((((l_221 == p_88) <= ((safe_mod_func_uint8_t_u_u(5UL, 1UL)) && (safe_add_func_uint16_t_u_u(((&l_239 == &l_111) ^ (safe_mod_func_uint8_t_u_u((g_79 == (safe_sub_func_uint32_t_u_u((((*l_203) > 0x1999272AL) & p_88), 0L))), 0xFEL))), p_88)))) || (*l_205)) && 2L); + } + g_282--; + } + (*g_220) = (*g_220); + if ((*l_203)) + break; + } + } + else + { /* block id: 166 */ + uint8_t l_285 = 0x4CL; + int32_t l_299 = 0x89F5BDD3L; + int32_t l_306 = 0x5BC425B6L; + int32_t l_340 = (-4L); + int32_t l_341 = (-1L); + int32_t l_344 = 0xE829D8AAL; + int32_t l_346[7][8] = {{(-1L),(-1L),0xF04E8ED3L,0L,(-1L),0x3E5B3455L,(-1L),0L},{(-8L),(-1L),(-8L),0x3E5B3455L,(-1L),0x7B4FA158L,(-1L),0x7B4FA158L},{0x2880767BL,0x3E5B3455L,0xF04E8ED3L,0x3E5B3455L,0x2880767BL,0xF936D604L,(-1L),0L},{0x2880767BL,0xF936D604L,(-1L),0L,(-1L),0xF936D604L,0x2880767BL,0x3E5B3455L},{(-8L),0x3E5B3455L,(-1L),0x7B4FA158L,(-1L),0x7B4FA158L,(-1L),0x3E5B3455L},{(-1L),(-1L),0xF04E8ED3L,0L,(-1L),0x3E5B3455L,(-1L),0L},{(-8L),(-1L),(-8L),0x3E5B3455L,(-1L),0x7B4FA158L,(-1L),0x7B4FA158L}}; + int32_t l_377 = 0x828E5972L; + struct S1 *l_404 = &g_391; + int32_t l_427 = 0x3D04868CL; + int16_t l_439 = 0L; + const uint8_t l_449 = 0x21L; + struct S0 *l_506 = &g_82; + struct S0 **l_505[2]; + int32_t l_554 = 1L; + int i, j; + for (i = 0; i < 2; i++) + l_505[i] = &l_506; +lbl_504: + if (l_285) + { /* block id: 167 */ + for (l_99 = (-24); (l_99 != 2); l_99 = safe_add_func_int8_t_s_s(l_99, 6)) + { /* block id: 170 */ + uint32_t l_288 = 0xFD1AB546L; + return l_288; + } + } + else + { /* block id: 173 */ + int32_t l_320[4][1][9] = {{{0L,0x194BB3C6L,0x8BCB9031L,0xB986918BL,0xB986918BL,0x8BCB9031L,0x194BB3C6L,0L,7L}},{{(-10L),0xB986918BL,3L,0L,0x67FAAF16L,7L,7L,0x67FAAF16L,0xB986918BL}},{{0L,0x039CAC54L,0L,0x8BCB9031L,7L,7L,(-10L),0x83995F0FL,0x83995F0FL}},{{0L,0x039CAC54L,0x83995F0FL,7L,0x83995F0FL,0x039CAC54L,0L,(-10L),0x194BB3C6L}}}; + int32_t l_329 = (-1L); + int32_t l_342 = (-10L); + int32_t l_343 = 1L; + int32_t l_345 = (-1L); + int i, j, k; + for (g_5 = 0; (g_5 <= 20); ++g_5) + { /* block id: 176 */ + (*g_220) = (*g_220); + l_299 ^= (0x6735L > (((g_82.f2 & (l_285 == (safe_mul_func_int16_t_s_s((-6L), (safe_mul_func_int8_t_s_s((((safe_mod_func_uint32_t_u_u((((void*)0 == l_297[4]) <= g_237), p_88)) , 3UL) ^ g_119), l_285)))))) == 4294967295UL) >= p_88)); + } + if ((safe_lshift_func_int8_t_s_u(g_82.f2, (safe_lshift_func_uint8_t_u_u(l_233, l_177[0]))))) + { /* block id: 180 */ + uint16_t l_323 = 1UL; + for (g_280 = 23; (g_280 <= (-26)); g_280 = safe_sub_func_uint8_t_u_u(g_280, 3)) + { /* block id: 183 */ + uint32_t l_328 = 0x04263EA8L; + if (l_306) + { /* block id: 184 */ + uint8_t *l_310 = &g_119; + int16_t *l_312 = (void*)0; + int32_t *l_321 = (void*)0; + int32_t *l_322 = &l_233; + l_320[3][0][0] = ((safe_mul_func_int16_t_s_s(((safe_unary_minus_func_uint8_t_u(((*l_310) &= p_88))) <= ((g_313[1][2][2] = (l_311 , l_312)) != (void*)0)), g_237)) == (((l_311 , (safe_rshift_func_uint16_t_u_u(((&g_282 == ((safe_mul_func_int16_t_s_s((safe_mul_func_uint16_t_u_u(g_5, g_82.f4)), 0x1FCCL)) , &g_71)) & 0xE3CFL), 6))) ^ p_88) , 0x06L)); + (*l_322) = p_88; + l_235 ^= l_311.f5; + if (p_88) + continue; + } + else + { /* block id: 191 */ + int16_t *l_324 = &l_124[4][2].f1; + int32_t *l_325 = &l_235; + int32_t l_326[6][8][5] = {{{(-1L),0L,0x77968830L,(-3L),0xF69D3694L},{0x80481311L,(-8L),0x6EE43BC7L,3L,0xF69D3694L},{9L,0xA3F52DB4L,0x332D84DCL,0x6EE43BC7L,2L},{0xB9E29AD6L,0x6EE43BC7L,8L,1L,0L},{0xD4BE4A73L,(-1L),0L,0x34B194B4L,1L},{0x332D84DCL,9L,0L,0L,9L},{0L,2L,0xC6B43B59L,1L,0xD4BE4A73L},{(-1L),8L,0xA5022890L,1L,(-1L)}},{{1L,0xB9E29AD6L,0xFF1388ADL,0x5D62FFCCL,(-4L)},{(-1L),0xA96E957DL,1L,0xC06D5091L,6L},{0L,0x075FB35CL,1L,8L,0x332D84DCL},{0x332D84DCL,0L,0xD4BE4A73L,0xA3F52DB4L,(-7L)},{0xD4BE4A73L,4L,(-1L),0x9E963DA1L,0x346217EBL},{0xB9E29AD6L,0xC3EFD975L,0x7C2A98AAL,0xAB407981L,0xC06D5091L},{9L,0x4A7388A2L,0xF9C56E4CL,(-7L),0x57D97B32L},{(-7L),0x3E1D9BA4L,0x093B7A13L,0x075FB35CL,(-4L)}},{{1L,0xAAC8C820L,2L,0x5D62FFCCL,0xA3F52DB4L},{1L,9L,0x5D62FFCCL,0xDAE7BCCAL,1L},{0xA96E957DL,(-4L),8L,0L,0L},{(-2L),0x4A7388A2L,(-2L),0xF69D3694L,0x9E963DA1L},{0xCA74A0EEL,1L,(-8L),1L,0L},{(-8L),0xA3F52DB4L,0x3E1D9BA4L,0x63D06EA8L,0x346217EBL},{(-4L),1L,(-8L),0L,(-1L)},{0L,(-3L),(-2L),(-1L),0x075FB35CL}},{{(-3L),0xF69D3694L,8L,1L,0x80481311L},{(-1L),9L,0x5D62FFCCL,(-1L),0x3E1D9BA4L},{9L,(-1L),2L,0x4A7388A2L,0xA96E957DL},{9L,0xC3EFD975L,0x093B7A13L,0x6EE43BC7L,1L},{0xA5022890L,0L,0xF9C56E4CL,0x6EE43BC7L,0xC3EFD975L},{1L,8L,0xA314B29BL,0x4A7388A2L,9L},{0L,0xAAA1835EL,1L,(-1L),0xAAC8C820L},{0x9E963DA1L,(-2L),(-1L),1L,0xB9E29AD6L}},{{(-3L),(-1L),0x34B194B4L,(-1L),(-3L)},{0xAAA1835EL,1L,4L,0xA314B29BL,3L},{0xAAA1835EL,0xDAE7BCCAL,0x57D97B32L,8L,0xAAC8C820L},{2L,(-1L),9L,0xF69D3694L,3L},{0xF553E666L,8L,0x075FB35CL,0xAAA1835EL,9L},{3L,0xD4BE4A73L,(-2L),(-3L),9L},{0xB9E29AD6L,0L,1L,0x9E963DA1L,0x6EE43BC7L},{1L,0xF553E666L,(-3L),0L,0xCA74A0EEL}},{{(-8L),(-1L),0xA3F52DB4L,1L,(-1L)},{0xA96E957DL,0L,1L,0xA5022890L,0x57D97B32L},{0xA96E957DL,1L,0xFF1388ADL,9L,(-7L)},{(-8L),(-1L),1L,9L,0x5D62FFCCL},{1L,0xA5022890L,8L,(-1L),1L},{0xB9E29AD6L,0L,1L,(-3L),1L},{3L,3L,(-1L),0L,(-4L)},{0xF553E666L,0x3E1D9BA4L,0xC3EFD975L,(-4L),1L}}}; + int32_t *l_327[3][8][3] = {{{&l_236,(void*)0,&l_233},{&l_299,&l_299,&g_39},{(void*)0,&l_163,(void*)0},{&g_39,&l_236,&l_163},{&l_236,&g_2,&l_299},{&g_39,&l_299,&l_233},{&g_39,&g_39,&g_39},{&l_236,&l_233,(void*)0}},{{&g_238,&l_236,&l_299},{&l_299,&l_233,&l_236},{&l_233,(void*)0,&l_299},{&g_238,&l_233,(void*)0},{&g_238,&l_236,&g_39},{&g_39,&g_2,&l_236},{&l_236,&g_238,&g_39},{&g_238,&l_236,&g_39}},{{&l_236,&l_236,&l_236},{&l_233,&g_237,&g_39},{&g_238,&l_163,(void*)0},{(void*)0,&g_238,&l_299},{&l_299,&g_238,&l_236},{(void*)0,(void*)0,&l_299},{&g_238,&g_2,(void*)0},{&l_233,&l_236,&g_238}}}; + int i, j, k; + l_311.f5 = p_88; + g_237 |= (((0xABB76B37L & ((0xAA467251L && l_323) | ((*l_325) = ((l_323 , ((*l_324) = p_88)) ^ p_88)))) < l_306) , (l_311.f6 = (l_326[5][3][0] &= ((*l_325) ^= p_88)))); + return g_280; + } + l_328 |= (~l_323); + } + } + else + { /* block id: 203 */ + int32_t l_330 = (-1L); + int32_t *l_331 = &l_235; + int32_t *l_332 = &g_39; + int32_t *l_333 = &g_238; + int32_t *l_334 = (void*)0; + int32_t *l_335 = &l_235; + int32_t *l_336 = &l_235; + int32_t *l_337 = &l_236; + int32_t *l_338 = &l_329; + int32_t *l_339[9]; + int i; + for (i = 0; i < 9; i++) + l_339[i] = &g_237; + ++g_347; + } + } + for (l_236 = (-7); (l_236 < (-27)); l_236 = safe_sub_func_int16_t_s_s(l_236, 6)) + { /* block id: 209 */ + int32_t l_368 = 0xAE9026B3L; + uint32_t l_369 = 0xF0C741AFL; + uint8_t *l_370 = &l_285; + int32_t l_397 = 0L; + struct S1 l_398 = {3,768,1037,163,753,24,-442,139,64,9UL}; + uint16_t l_411 = 65534UL; + uint16_t l_438 = 65528UL; + uint32_t l_486 = 0xC4A867A1L; + for (g_347 = 0; (g_347 > 19); g_347 = safe_add_func_uint8_t_u_u(g_347, 1)) + { /* block id: 212 */ + int16_t l_359 = 0xF62AL; + int32_t l_360[5][9][5] = {{{0x9DF86A6FL,0x95036420L,0x166F187FL,0x696BFCAAL,0x696BFCAAL},{1L,(-1L),1L,0x27CAFC2EL,1L},{0x94B78765L,0x9DF86A6FL,0x4426EC2FL,0x4E8F0221L,7L},{0xD0B67DE8L,0xEF7070EBL,1L,0L,0xF0132B51L},{0x9AFEC63DL,0x166F187FL,0x4426EC2FL,7L,(-9L)},{0L,1L,1L,1L,0L},{0xBC3A7848L,0x6A9B86FFL,0x166F187FL,0xF529EB06L,0x166F187FL},{0x27CAFC2EL,0x27CAFC2EL,(-3L),0x47BB2F77L,(-1L)},{0xDC3195D9L,(-1L),1L,0x94B78765L,(-1L)}},{{7L,0L,1L,0xC021C2B8L,0x47BB2F77L},{0x86921A87L,0x95036420L,(-1L),0x29DEC1BEL,0x6A9B86FFL},{0xEF7070EBL,0xD0B67DE8L,(-1L),(-3L),0x845B019AL},{(-1L),(-1L),0x9AFEC63DL,0x9AFEC63DL,(-1L)},{0L,0xC021C2B8L,0L,7L,1L},{0xBC3A7848L,0xDC3195D9L,0x8D604015L,0x6A9B86FFL,0x9AFEC63DL},{1L,(-1L),(-9L),(-1L),0xFFED5E11L},{0xBC3A7848L,0x4E8F0221L,8L,0x95036420L,1L},{0L,0L,0xF0132B51L,0x27CAFC2EL,7L}},{{(-1L),0x86921A87L,(-1L),0x86921A87L,(-1L)},{0xEF7070EBL,(-1L),0x27CAFC2EL,0x47BB2F77L,0xD0B67DE8L},{0x86921A87L,(-9L),7L,0x4426EC2FL,0x166F187FL},{(-1L),0xFFED5E11L,1L,(-1L),0xD0B67DE8L},{0xF529EB06L,0x4426EC2FL,0x94B78765L,0x696BFCAAL,(-1L)},{0xD0B67DE8L,(-1L),(-3L),0x845B019AL,7L},{0x8D604015L,0xA1B0B983L,0xA1B0B983L,0x8D604015L,1L},{0x27CAFC2EL,0xEBE5C5FEL,(-1L),0L,0xFFED5E11L},{0x166F187FL,0xBC3A7848L,0x86921A87L,6L,0x9AFEC63DL}},{{0x845B019AL,(-1L),7L,0L,1L},{0xA1B0B983L,0x4426EC2FL,(-9L),0x166F187FL,0x4E8F0221L},{0L,(-1L),(-1L),0x47BB2F77L,0x47BB2F77L},{0xA595A854L,6L,0xA595A854L,7L,0x9DF86A6FL},{0xD0B67DE8L,0L,0xFFED5E11L,0xEBE5C5FEL,0L},{(-1L),0xF529EB06L,0x9DF86A6FL,(-1L),0xC03EEE59L},{0xEF7070EBL,(-1L),0xFFED5E11L,0L,0xF0132B51L},{0xA1B0B983L,0x9DF86A6FL,0xA595A854L,(-9L),(-1L)},{0L,(-1L),(-1L),(-1L),(-1L)}},{{7L,7L,(-9L),0x29DEC1BEL,(-1L)},{0L,7L,1L,0xD0B67DE8L,(-1L)},{0x6A9B86FFL,8L,(-9L),0x9DF86A6FL,1L},{(-1L),7L,0L,1L,1L},{0xDC3195D9L,7L,0x696BFCAAL,0x8D604015L,(-1L)},{0L,(-1L),1L,1L,(-1L)},{0xC03EEE59L,0x9DF86A6FL,8L,0x86921A87L,(-9L)},{(-3L),(-1L),0L,1L,1L},{(-1L),0xF529EB06L,0x256ADFB4L,0x696BFCAAL,0x9AFEC63DL}}}; + struct S0 l_364 = {0UL,3L,0xA013L,0UL,6UL}; + int i, j, k; + for (l_235 = 0; (l_235 == (-7)); l_235--) + { /* block id: 215 */ + uint8_t l_361 = 0x8AL; + for (g_71 = 18; (g_71 >= 25); g_71 = safe_add_func_int32_t_s_s(g_71, 4)) + { /* block id: 218 */ + int32_t *l_358[9] = {&l_340,&l_340,&l_340,&l_340,&l_340,&l_340,&l_340,&l_340,&l_340}; + int32_t ***l_367[10][6][4] = {{{&g_365,&g_365,&g_365,(void*)0},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,(void*)0,&g_365},{&g_365,(void*)0,(void*)0,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,(void*)0,(void*)0}},{{&g_365,&g_365,(void*)0,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,(void*)0,&g_365,(void*)0},{&g_365,&g_365,&g_365,&g_365},{&g_365,(void*)0,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365}},{{(void*)0,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,(void*)0,(void*)0,&g_365},{&g_365,&g_365,&g_365,(void*)0},{&g_365,(void*)0,(void*)0,&g_365},{&g_365,&g_365,&g_365,&g_365}},{{&g_365,&g_365,&g_365,(void*)0},{&g_365,&g_365,(void*)0,&g_365},{&g_365,&g_365,(void*)0,&g_365},{&g_365,(void*)0,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,(void*)0,(void*)0}},{{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,(void*)0,&g_365},{&g_365,&g_365,&g_365,(void*)0},{&g_365,&g_365,(void*)0,&g_365},{&g_365,&g_365,&g_365,&g_365}},{{(void*)0,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{(void*)0,&g_365,&g_365,&g_365},{(void*)0,&g_365,&g_365,&g_365},{&g_365,(void*)0,(void*)0,&g_365}},{{&g_365,&g_365,&g_365,&g_365},{(void*)0,&g_365,&g_365,&g_365},{(void*)0,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{(void*)0,&g_365,&g_365,&g_365}},{{&g_365,&g_365,(void*)0,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,(void*)0,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365}},{{&g_365,&g_365,&g_365,&g_365},{(void*)0,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{(void*)0,&g_365,&g_365,&g_365}},{{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,(void*)0,(void*)0},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365},{&g_365,&g_365,&g_365,&g_365}}}; + int i, j, k; + g_238 |= p_88; + ++l_361; + g_365 = (l_364 , g_365); + } + } + for (g_241 = 0; (g_241 <= 6); g_241 += 1) + { /* block id: 226 */ + for (l_102 = 0; (l_102 <= 6); l_102 += 1) + { /* block id: 229 */ + int i, j; + if (g_36[(l_102 + 1)]) + break; + l_368 &= l_346[l_102][g_241]; + if (l_346[l_102][g_241]) + continue; + } + } + } + if (((((((((*l_370) = (l_369 = l_285)) > (l_311.f1 = ((++(*l_101)) , 255UL))) && (safe_rshift_func_uint8_t_u_u(((safe_mul_func_int8_t_s_s(0x57L, l_377)) != l_341), p_88))) >= ((safe_sub_func_int8_t_s_s((safe_div_func_uint16_t_u_u((safe_mul_func_uint16_t_u_u((g_282++), p_88)), 0x055CL)), (((((l_344 != p_88) , 1UL) , p_88) == g_82.f4) == g_18.f2))) && 0L)) && l_386) != (-4L)) , p_88)) + { /* block id: 241 */ + struct S0 *l_387 = &g_82; + int32_t *l_394 = &g_281; + int32_t l_399 = 0x4D4B183AL; + struct S1 **l_405 = &g_390; + for (g_18.f4 = 0; (g_18.f4 <= 6); g_18.f4 += 1) + { /* block id: 244 */ + struct S0 **l_388 = (void*)0; + struct S0 **l_389 = &l_387; + int i, j; + (*l_389) = l_387; + g_390 = g_390; + if (l_346[g_18.f4][g_18.f4]) + break; + } + for (l_109 = 0; (l_109 <= 7); l_109 += 1) + { /* block id: 251 */ + int16_t *l_400 = (void*)0; + int16_t *l_401 = &l_102; + int32_t *l_402 = &g_237; + int32_t *l_403 = &l_235; + int i; + for (g_39 = 8; (g_39 >= 3); g_39 -= 1) + { /* block id: 254 */ + int i; + return g_36[l_109]; + } + (*l_403) = ((*l_402) = ((g_36[l_109] && (g_36[l_109] ^ (g_240 > ((((*l_401) = (((safe_mod_func_uint32_t_u_u((((((*g_365) = &l_306) != l_394) || (safe_sub_func_int8_t_s_s((l_397 | (l_398 , (p_88 != p_88))), l_399))) <= 0x84L), 4294967295UL)) >= p_88) , l_369)) > 65529UL) < p_88)))) , p_88)); + } + (*l_405) = l_404; + } + else + { /* block id: 263 */ + int32_t *l_406[1][5][7] = {{{&l_368,&l_299,&l_299,&l_368,&l_299,&l_299,&l_368},{&l_299,&l_368,&l_299,&l_299,&l_368,&l_299,&l_299},{&l_368,&l_368,&l_368,&l_368,&l_368,&l_368,&l_368},{&l_368,&l_299,&l_299,&l_368,&l_299,&l_299,&l_368},{&l_299,&l_368,&l_299,&l_299,&l_368,&l_299,&l_299}}}; + struct S0 l_468 = {0x0EDE6D6DL,0L,65528UL,0x4463L,0x0FL}; + int i, j, k; + g_408--; + --l_411; + if ((safe_rshift_func_int8_t_s_s(0xF8L, l_340))) + { /* block id: 266 */ + uint32_t l_426[4][9] = {{0x88400371L,0UL,1UL,3UL,4294967295UL,3UL,1UL,0UL,0x88400371L},{0x470FF04AL,0x74C575B2L,0xEF5E38AEL,1UL,0x457E5FE2L,0x08800094L,0UL,0x08800094L,4294967295UL},{0xEF5E38AEL,0UL,0UL,0xEF5E38AEL,0x03ED131BL,0x9A6CC948L,0x88400371L,4294967295UL,0x457E5FE2L},{0UL,4294967295UL,0UL,0x74C575B2L,0x74C575B2L,0UL,4294967295UL,0UL,3UL}}; + int32_t l_431[6]; + int i, j; + for (i = 0; i < 6; i++) + l_431[i] = 0x9A6743CEL; + (*g_220) = ((p_88 , p_88) , (*g_220)); + if (p_88) + { /* block id: 268 */ + int32_t l_430 = 0x675E34E6L; + int32_t l_432 = 0xD3699B92L; + l_430 &= (4294967295UL || (l_235 = (safe_add_func_int16_t_s_s(((safe_div_func_int32_t_s_s(((((safe_mod_func_uint16_t_u_u((safe_add_func_uint32_t_u_u(0x4C38B039L, p_88)), ((*l_101) |= g_391.f4))) < g_18.f4) || (safe_rshift_func_uint8_t_u_s(((*l_370) |= l_426[1][2]), l_427))) && p_88), (safe_mul_func_int16_t_s_s(l_311.f7, l_344)))) <= g_391.f9), 0xE822L)))); + --l_435; + g_238 = l_346[6][7]; + } + else + { /* block id: 275 */ + (*g_220) = (void*)0; + } + g_39 = (p_88 == (l_438 <= (l_398.f8 & l_439))); + if (l_377) + break; + } + else + { /* block id: 280 */ + uint8_t l_459 = 0x18L; + const int32_t l_469 = 0x91247D0DL; + int32_t l_483 = 0x6A87FF15L; + int32_t l_496 = 0xDE6CCBD7L; + int32_t l_497 = 0xDBFCC0BBL; + int32_t l_498 = 1L; + for (g_222 = 0; (g_222 != 11); g_222++) + { /* block id: 283 */ + int8_t l_446 = 0x78L; + int32_t l_455 = 0x838E2474L; + l_455 |= (safe_sub_func_uint16_t_u_u(g_18.f1, (l_446 > (((safe_mod_func_int32_t_s_s(l_449, (l_427 = ((safe_lshift_func_int16_t_s_s(((l_235 = (-9L)) | 0x39081B19L), 2)) , (safe_lshift_func_int16_t_s_u(l_454, 13)))))) , &l_449) != ((*l_268) = ((*l_404) , l_370)))))); + return p_88; + } + if (l_398.f4) + { /* block id: 290 */ + struct S0 *l_457 = &l_124[6][0]; + struct S0 **l_456 = &l_457; + int32_t l_458 = 0x418B64C8L; + (*l_456) = &g_18; + if (l_346[6][6]) + continue; + ++l_459; + } + else + { /* block id: 294 */ + int16_t l_472 = (-3L); + uint32_t *l_475 = &g_347; + l_483 = ((safe_lshift_func_uint8_t_u_u((safe_rshift_func_uint16_t_u_u(l_459, (p_88 || ((safe_rshift_func_uint8_t_u_s((l_468 , l_469), 6)) >= p_88)))), (safe_rshift_func_int8_t_s_u((((l_472 != (safe_div_func_uint32_t_u_u(((*l_475)--), (0x0376L && (g_71 = (safe_rshift_func_int8_t_s_s((safe_mod_func_int16_t_s_s(l_340, (l_341 = 2L))), 6))))))) & l_482) , (-1L)), 4)))) >= 0x7FL); + if (p_88) + break; + return p_88; + } + for (g_208 = (-24); (g_208 != 13); g_208 = safe_add_func_int32_t_s_s(g_208, 6)) + { /* block id: 304 */ + int32_t l_494[6][4] = {{0x899E298AL,(-3L),1L,0x5B286B25L},{0x899E298AL,1L,0x899E298AL,0xFE2F18EAL},{(-3L),0x5B286B25L,0xFE2F18EAL,0xFE2F18EAL},{1L,1L,2L,0x5B286B25L},{0x5B286B25L,(-3L),2L,(-3L)},{1L,0x899E298AL,0xFE2F18EAL,2L}}; + int32_t l_495[9] = {0x708011CBL,0x708011CBL,0x708011CBL,0x708011CBL,0x708011CBL,0x708011CBL,0x708011CBL,0x708011CBL,0x708011CBL}; + int i, j; + g_238 = (p_88 > ((p_88 ^ (l_346[0][4] | (l_449 || ((l_486 , (safe_add_func_int32_t_s_s(p_88, (((safe_div_func_uint32_t_u_u(0x786AA2D0L, ((safe_add_func_int8_t_s_s((&g_251 == (void*)0), p_88)) & 1L))) , l_483) < 4294967292UL)))) , l_493)))) < l_469)); + ++g_501; + } + if (l_398.f8) + goto lbl_504; + } + l_346[0][2] = (g_119 ^ 4294967295UL); + } + } + l_507[0] = &g_18; + for (g_2 = 0; (g_2 >= (-22)); g_2 = safe_sub_func_int16_t_s_s(g_2, 1)) + { /* block id: 316 */ + uint32_t l_518[6] = {0UL,0UL,0UL,0UL,0UL,0UL}; + int32_t l_527 = (-10L); + int32_t l_538 = (-3L); + int32_t l_539 = (-3L); + int32_t l_552[7][7][5] = {{{0xDD201F80L,8L,0xEBE46D86L,8L,0xDD201F80L},{0L,1L,0x4F27EFA9L,(-4L),(-4L)},{0x3ECFA0B6L,8L,0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L},{0L,(-4L),1L,1L,(-4L)},{0xDD201F80L,0x023C9910L,0xEBE46D86L,0x023C9910L,0xDD201F80L},{(-4L),1L,1L,(-4L),0L},{0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L,8L,0x3ECFA0B6L}},{{(-4L),(-4L),0x4F27EFA9L,1L,0L},{0xDD201F80L,8L,0xEBE46D86L,8L,0xDD201F80L},{0L,1L,0x4F27EFA9L,(-4L),(-4L)},{0x3ECFA0B6L,8L,0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L},{0L,(-4L),1L,1L,(-4L)},{0xDD201F80L,0x023C9910L,0xEBE46D86L,0x023C9910L,0xDD201F80L},{(-4L),1L,1L,(-4L),0L}},{{0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L,8L,0x3ECFA0B6L},{(-4L),(-4L),0x4F27EFA9L,1L,0L},{0xDD201F80L,8L,0xEBE46D86L,8L,0xDD201F80L},{0L,1L,0x4F27EFA9L,(-4L),(-4L)},{0x3ECFA0B6L,8L,0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L},{0L,(-4L),1L,1L,(-4L)},{0xDD201F80L,0x023C9910L,0xEBE46D86L,0x023C9910L,0xDD201F80L}},{{(-4L),1L,1L,(-4L),0L},{0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L,8L,0x3ECFA0B6L},{(-4L),(-4L),0x4F27EFA9L,1L,0L},{0xDD201F80L,8L,0xEBE46D86L,8L,0xDD201F80L},{0L,1L,0x4F27EFA9L,(-4L),(-4L)},{0x3ECFA0B6L,8L,0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L},{0L,(-4L),1L,1L,(-4L)}},{{0xDD201F80L,0x023C9910L,0xEBE46D86L,0x023C9910L,0xDD201F80L},{(-4L),1L,1L,(-4L),0L},{0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L,8L,0x3ECFA0B6L},{(-4L),(-4L),0x4F27EFA9L,1L,0L},{0xDD201F80L,8L,0xEBE46D86L,8L,0xDD201F80L},{0L,1L,0x4F27EFA9L,(-4L),(-4L)},{0x3ECFA0B6L,8L,0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L}},{{0L,(-4L),1L,1L,(-4L)},{0xDD201F80L,0x023C9910L,0xEBE46D86L,0x023C9910L,0xDD201F80L},{(-4L),1L,1L,(-4L),0L},{0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L,8L,0x3ECFA0B6L},{(-4L),(-4L),0x4F27EFA9L,1L,0L},{0xDD201F80L,8L,0xEBE46D86L,8L,0xDD201F80L},{0L,1L,0x4F27EFA9L,(-4L),(-4L)}},{{0x3ECFA0B6L,8L,0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L},{0L,(-4L),1L,1L,(-4L)},{0xDD201F80L,0x023C9910L,0xEBE46D86L,0x023C9910L,0xDD201F80L},{(-4L),1L,1L,(-4L),0L},{0x3ECFA0B6L,0x023C9910L,0x3ECFA0B6L,8L,0x3ECFA0B6L},{(-4L),(-4L),0x4F27EFA9L,1L,0L},{0xDD201F80L,8L,0xEBE46D86L,8L,0xDD201F80L}}}; + int i, j, k; + } + } + return g_508[3][3][4].f0; +} + + + + +/* ---------------------------------------- */ +int main (int argc, char* argv[]) +{ + int i, j, k; + int print_hash_value = 0; + if (argc == 2 && strcmp(argv[1], "1") == 0) print_hash_value = 1; + platform_main_begin(); + crc32_gentab(); + func_1(); + transparent_crc(g_2, "g_2", print_hash_value); + transparent_crc(g_5, "g_5", print_hash_value); + transparent_crc(g_18.f0, "g_18.f0", print_hash_value); + transparent_crc(g_18.f1, "g_18.f1", print_hash_value); + transparent_crc(g_18.f2, "g_18.f2", print_hash_value); + transparent_crc(g_18.f3, "g_18.f3", print_hash_value); + transparent_crc(g_18.f4, "g_18.f4", print_hash_value); + for (i = 0; i < 8; i++) + { + transparent_crc(g_36[i], "g_36[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_39, "g_39", print_hash_value); + transparent_crc(g_40, "g_40", print_hash_value); + transparent_crc(g_71, "g_71", print_hash_value); + transparent_crc(g_79, "g_79", print_hash_value); + transparent_crc(g_82.f0, "g_82.f0", print_hash_value); + transparent_crc(g_82.f1, "g_82.f1", print_hash_value); + transparent_crc(g_82.f2, "g_82.f2", print_hash_value); + transparent_crc(g_82.f3, "g_82.f3", print_hash_value); + transparent_crc(g_82.f4, "g_82.f4", print_hash_value); + transparent_crc(g_119, "g_119", print_hash_value); + transparent_crc(g_195, "g_195", print_hash_value); + transparent_crc(g_208, "g_208", print_hash_value); + transparent_crc(g_209, "g_209", print_hash_value); + transparent_crc(g_222, "g_222", print_hash_value); + transparent_crc(g_237, "g_237", print_hash_value); + transparent_crc(g_238, "g_238", print_hash_value); + transparent_crc(g_240, "g_240", print_hash_value); + transparent_crc(g_241, "g_241", print_hash_value); + transparent_crc(g_251, "g_251", print_hash_value); + transparent_crc(g_279, "g_279", print_hash_value); + transparent_crc(g_280, "g_280", print_hash_value); + transparent_crc(g_281, "g_281", print_hash_value); + transparent_crc(g_282, "g_282", print_hash_value); + transparent_crc(g_347, "g_347", print_hash_value); + transparent_crc(g_391.f0, "g_391.f0", print_hash_value); + transparent_crc(g_391.f1, "g_391.f1", print_hash_value); + transparent_crc(g_391.f2, "g_391.f2", print_hash_value); + transparent_crc(g_391.f3, "g_391.f3", print_hash_value); + transparent_crc(g_391.f4, "g_391.f4", print_hash_value); + transparent_crc(g_391.f5, "g_391.f5", print_hash_value); + transparent_crc(g_391.f6, "g_391.f6", print_hash_value); + transparent_crc(g_391.f7, "g_391.f7", print_hash_value); + transparent_crc(g_391.f8, "g_391.f8", print_hash_value); + transparent_crc(g_391.f9, "g_391.f9", print_hash_value); + transparent_crc(g_408, "g_408", print_hash_value); + transparent_crc(g_433, "g_433", print_hash_value); + transparent_crc(g_434, "g_434", print_hash_value); + for (i = 0; i < 3; i++) + { + for (j = 0; j < 1; j++) + { + transparent_crc(g_499[i][j], "g_499[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_500, "g_500", print_hash_value); + transparent_crc(g_501, "g_501", print_hash_value); + for (i = 0; i < 9; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 7; k++) + { + transparent_crc(g_508[i][j][k].f0, "g_508[i][j][k].f0", print_hash_value); + transparent_crc(g_508[i][j][k].f1, "g_508[i][j][k].f1", print_hash_value); + transparent_crc(g_508[i][j][k].f2, "g_508[i][j][k].f2", print_hash_value); + transparent_crc(g_508[i][j][k].f3, "g_508[i][j][k].f3", print_hash_value); + transparent_crc(g_508[i][j][k].f4, "g_508[i][j][k].f4", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + for (i = 0; i < 3; i++) + { + transparent_crc(g_537[i], "g_537[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_540, "g_540", print_hash_value); + transparent_crc(g_541, "g_541", print_hash_value); + transparent_crc(g_542, "g_542", print_hash_value); + transparent_crc(g_553, "g_553", print_hash_value); + for (i = 0; i < 1; i++) + { + for (j = 0; j < 2; j++) + { + transparent_crc(g_555[i][j], "g_555[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_564, "g_564", print_hash_value); + transparent_crc(g_802, "g_802", print_hash_value); + for (i = 0; i < 5; i++) + { + for (j = 0; j < 1; j++) + { + for (k = 0; k < 8; k++) + { + transparent_crc(g_809[i][j][k], "g_809[i][j][k]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + transparent_crc(g_876, "g_876", print_hash_value); + transparent_crc(g_910, "g_910", print_hash_value); + transparent_crc(g_1052, "g_1052", print_hash_value); + for (i = 0; i < 9; i++) + { + transparent_crc(g_1105[i], "g_1105[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_1109, "g_1109", print_hash_value); + transparent_crc(g_1113.f0, "g_1113.f0", print_hash_value); + transparent_crc(g_1113.f1, "g_1113.f1", print_hash_value); + transparent_crc(g_1113.f2, "g_1113.f2", print_hash_value); + transparent_crc(g_1113.f3, "g_1113.f3", print_hash_value); + transparent_crc(g_1113.f4, "g_1113.f4", print_hash_value); + transparent_crc(g_1113.f5, "g_1113.f5", print_hash_value); + transparent_crc(g_1113.f6, "g_1113.f6", print_hash_value); + transparent_crc(g_1113.f7, "g_1113.f7", print_hash_value); + transparent_crc(g_1113.f8, "g_1113.f8", print_hash_value); + transparent_crc(g_1113.f9, "g_1113.f9", print_hash_value); + transparent_crc(g_1169.f0, "g_1169.f0", print_hash_value); + transparent_crc(g_1169.f1, "g_1169.f1", print_hash_value); + transparent_crc(g_1169.f2, "g_1169.f2", print_hash_value); + transparent_crc(g_1169.f3, "g_1169.f3", print_hash_value); + transparent_crc(g_1169.f4, "g_1169.f4", print_hash_value); + for (i = 0; i < 1; i++) + { + for (j = 0; j < 8; j++) + { + transparent_crc(g_1192[i][j], "g_1192[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + for (i = 0; i < 8; i++) + { + transparent_crc(g_1233[i], "g_1233[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_1263, "g_1263", print_hash_value); + transparent_crc(g_1389, "g_1389", print_hash_value); + platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value); + return 0; +} + +/************************ statistics ************************* +XXX max struct depth: 1 +breakdown: + depth: 0, occurrence: 476 + depth: 1, occurrence: 23 +XXX total union variables: 0 + +XXX non-zero bitfields defined in structs: 9 +XXX zero bitfields defined in structs: 0 +XXX const bitfields defined in structs: 1 +XXX volatile bitfields defined in structs: 0 +XXX structs with bitfields in the program: 26 +breakdown: + indirect level: 0, occurrence: 12 + indirect level: 1, occurrence: 9 + indirect level: 2, occurrence: 4 + indirect level: 3, occurrence: 1 +XXX full-bitfields structs in the program: 0 +breakdown: +XXX times a bitfields struct's address is taken: 22 +XXX times a bitfields struct on LHS: 0 +XXX times a bitfields struct on RHS: 19 +XXX times a single bitfield on LHS: 7 +XXX times a single bitfield on RHS: 26 + +XXX max expression depth: 49 +breakdown: + depth: 1, occurrence: 388 + depth: 2, occurrence: 107 + depth: 3, occurrence: 10 + depth: 4, occurrence: 7 + depth: 5, occurrence: 4 + depth: 6, occurrence: 3 + depth: 7, occurrence: 1 + depth: 8, occurrence: 1 + depth: 9, occurrence: 2 + depth: 10, occurrence: 1 + depth: 11, occurrence: 3 + depth: 12, occurrence: 1 + depth: 13, occurrence: 3 + depth: 14, occurrence: 3 + depth: 15, occurrence: 4 + depth: 16, occurrence: 5 + depth: 17, occurrence: 2 + depth: 18, occurrence: 3 + depth: 19, occurrence: 2 + depth: 20, occurrence: 4 + depth: 22, occurrence: 2 + depth: 23, occurrence: 2 + depth: 25, occurrence: 2 + depth: 27, occurrence: 1 + depth: 28, occurrence: 1 + depth: 29, occurrence: 2 + depth: 31, occurrence: 1 + depth: 32, occurrence: 2 + depth: 33, occurrence: 1 + depth: 35, occurrence: 1 + depth: 37, occurrence: 1 + depth: 49, occurrence: 1 + +XXX total number of pointers: 386 + +XXX times a variable address is taken: 972 +XXX times a pointer is dereferenced on RHS: 166 +breakdown: + depth: 1, occurrence: 159 + depth: 2, occurrence: 7 +XXX times a pointer is dereferenced on LHS: 233 +breakdown: + depth: 1, occurrence: 230 + depth: 2, occurrence: 3 +XXX times a pointer is compared with null: 15 +XXX times a pointer is compared with address of another variable: 6 +XXX times a pointer is compared with another pointer: 15 +XXX times a pointer is qualified to be dereferenced: 7549 + +XXX max dereference level: 4 +breakdown: + level: 0, occurrence: 0 + level: 1, occurrence: 2327 + level: 2, occurrence: 127 + level: 3, occurrence: 3 + level: 4, occurrence: 4 +XXX number of pointers point to pointers: 107 +XXX number of pointers point to scalars: 257 +XXX number of pointers point to structs: 22 +XXX percent of pointers has null in alias set: 32.4 +XXX average alias set size: 1.65 + +XXX times a non-volatile is read: 1305 +XXX times a non-volatile is write: 763 +XXX times a volatile is read: 0 +XXX times read thru a pointer: 0 +XXX times a volatile is write: 0 +XXX times written thru a pointer: 0 +XXX times a volatile is available for access: 0 +XXX percentage of non-volatile access: 100 + +XXX forward jumps: 2 +XXX backward jumps: 8 + +XXX stmts: 376 +XXX max block depth: 5 +breakdown: + depth: 0, occurrence: 34 + depth: 1, occurrence: 38 + depth: 2, occurrence: 35 + depth: 3, occurrence: 67 + depth: 4, occurrence: 91 + depth: 5, occurrence: 111 + +XXX percentage a fresh-made variable is used: 17.1 +XXX percentage an existing variable is used: 82.9 +FYI: the random generator makes assumptions about the integer size. See platform.info for more details. +********************* end of statistics **********************/ + diff --git a/tests/fuzz/2.c.txt b/tests/fuzz/2.c.txt new file mode 100644 index 0000000000000..8ca5593f34d42 --- /dev/null +++ b/tests/fuzz/2.c.txt @@ -0,0 +1 @@ +checksum = E09CCEB0 diff --git a/tests/fuzz/3.c b/tests/fuzz/3.c new file mode 100644 index 0000000000000..b2dcac2e44676 --- /dev/null +++ b/tests/fuzz/3.c @@ -0,0 +1,1043 @@ +/* + * This is a RANDOMLY GENERATED PROGRAM. + * + * Generator: csmith 2.2.0 + * Git version: 2751ded + * Options: --no-volatiles --no-math64 + * Seed: 1532285979 + */ + +#include "csmith.h" + + +static long __undefined; + +/* --- Struct/Union Declarations --- */ +union U0 { + int8_t f0; + const uint8_t f1; +}; + +union U1 { + int8_t * f0; +}; + +union U2 { + int32_t f0; + uint32_t f1; + uint8_t f2; + uint32_t f3; + int8_t * f4; +}; + +/* --- GLOBAL VARIABLES --- */ +static uint8_t g_23 = 0x67L; +static int32_t g_25 = 1L; +static uint16_t g_34 = 0x451DL; +static union U2 g_42 = {-1L}; +static int32_t g_61[8][6][4] = {{{0xE281B1D0L,8L,9L,0xC90ACEFCL},{0xC369029EL,8L,0x63978472L,0x55BBB785L},{0x23D12EF6L,(-1L),0x23D12EF6L,8L},{0x55BBB785L,0xE4FCD58FL,0L,1L},{0xDD4F9520L,0xBF567D71L,0x9117A540L,0xE4FCD58FL},{4L,0L,0x9117A540L,9L}},{{0xDD4F9520L,(-1L),0L,0L},{0x55BBB785L,(-1L),0x23D12EF6L,0xDD4F9520L},{0x23D12EF6L,0xDD4F9520L,0x63978472L,0L},{0xC369029EL,9L,9L,0xC369029EL},{0xE281B1D0L,6L,0x55BBB785L,0x70A6219FL},{0L,0x63978472L,0xE281B1D0L,8L}},{{4L,9L,(-1L),8L},{0x63978472L,1L,0xC90ACEFCL,(-1L)},{0x9117A540L,(-1L),0x63978472L,0xE281B1D0L},{0L,0x9117A540L,0xC35C241EL,0x55F5DDA3L},{0x3A29ADD9L,(-1L),0x5DD88BA5L,(-1L)},{0xE4FCD58FL,8L,9L,0xBF567D71L}},{{0x55BBB785L,0xDD4F9520L,0xBF567D71L,0x9117A540L},{0x55F5DDA3L,0x3A29ADD9L,8L,1L},{0x55F5DDA3L,4L,0xBF567D71L,0x55BBB785L},{0x55BBB785L,1L,9L,0L},{0xE4FCD58FL,0L,0x5DD88BA5L,8L},{0x3A29ADD9L,0x5DD88BA5L,0xC35C241EL,0xC35C241EL}},{{0L,0L,0x63978472L,0xDD4F9520L},{0x9117A540L,6L,0xC90ACEFCL,(-1L)},{0x63978472L,0xC369029EL,(-1L),0xC90ACEFCL},{4L,0xC369029EL,0xE281B1D0L,(-1L)},{0xC369029EL,6L,8L,0xDD4F9520L},{0L,0L,0x9117A540L,0xC35C241EL}},{{0xE281B1D0L,0x5DD88BA5L,1L,8L},{6L,0L,6L,0L},{8L,1L,0x3A29ADD9L,0x55BBB785L},{(-1L),4L,0x70A6219FL,1L},{0x23D12EF6L,0x3A29ADD9L,0x70A6219FL,0x9117A540L},{(-1L),0xBF567D71L,0x55BBB785L,(-1L)}},{{0x9117A540L,0x23D12EF6L,0xE4FCD58FL,4L},{0xE4FCD58FL,4L,0x3A29ADD9L,(-1L)},{0x63978472L,0L,0L,0x63978472L},{1L,1L,0x9117A540L,0L},{0xC35C241EL,0x3A29ADD9L,0x63978472L,0x23D12EF6L},{8L,8L,4L,0x23D12EF6L}},{{0L,0x3A29ADD9L,0xC369029EL,0L},{0L,1L,0L,0x63978472L},{0x70A6219FL,0L,0xE281B1D0L,(-1L)},{0x55BBB785L,4L,6L,4L},{(-1L),0x23D12EF6L,8L,(-1L)},{9L,0xBF567D71L,(-1L),0L}}}; +static int32_t *g_60 = &g_61[3][1][1]; +static int8_t g_70 = 1L; +static int8_t *g_69 = &g_70; +static int32_t g_78 = 1L; +static union U1 g_84 = {0}; +static int32_t **g_95 = &g_60; +static int32_t ***g_94[1] = {&g_95}; +static int8_t g_117 = 7L; +static union U0 g_163 = {0xE2L}; +static uint16_t g_165[7] = {0xB953L,0xB953L,0xB953L,0xB953L,0xB953L,0xB953L,0xB953L}; +static const uint8_t g_171[4][8][3] = {{{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL}},{{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL}},{{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL}},{{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL},{8UL,8UL,8UL},{1UL,1UL,1UL}}}; +static const uint8_t *g_170 = &g_171[2][3][0]; +static uint8_t g_218 = 0xB9L; +static int16_t g_234 = 1L; +static int16_t g_246 = 0x3B2BL; +static int16_t *g_248 = &g_246; +static int16_t *g_249 = &g_246; +static int32_t g_255 = (-8L); +static int16_t g_380 = 0L; +static int16_t g_387 = 1L; +static union U2 *g_397 = &g_42; +static union U2 **g_396 = &g_397; +static const int32_t *g_404 = &g_25; +static union U0 g_405[4][1] = {{{0xD5L}},{{0xD5L}},{{0xD5L}},{{0xD5L}}}; +static int8_t g_471 = (-2L); +static uint16_t **g_505 = (void*)0; +static const int32_t g_555 = 0x72195204L; +static uint16_t g_556[9] = {8UL,0x32E2L,8UL,8UL,0x32E2L,8UL,8UL,0x32E2L,8UL}; +static int32_t *g_588 = &g_61[3][1][2]; +static uint8_t *g_616 = &g_42.f2; +static union U1 *g_644 = &g_84; +static union U1 **g_643 = &g_644; + + +/* --- FORWARD DECLARATIONS --- */ +static int32_t func_1(void); +static uint8_t func_4(int8_t * p_5, uint16_t p_6, int8_t * p_7); +static int8_t * func_8(uint8_t p_9, const uint32_t p_10, const int8_t * p_11, union U0 p_12); +static const int8_t func_16(union U0 p_17, uint8_t p_18, int8_t * p_19, int8_t * p_20); +static union U0 func_21(uint32_t p_22); +static int8_t func_27(uint16_t p_28, int32_t * p_29, union U2 p_30, int32_t * const p_31, int32_t p_32); +static int32_t * func_37(const uint16_t p_38, union U2 p_39, int32_t * p_40, int32_t p_41); +static int32_t * func_43(uint8_t p_44, int8_t p_45, int8_t * p_46); +static uint16_t func_50(int32_t * p_51, uint16_t p_52, int8_t p_53, int32_t * p_54, union U2 p_55); +static int32_t * func_56(int8_t * p_57, int32_t * p_58); + + +/* --- FUNCTIONS --- */ +/* ------------------------------------------ */ +/* + * reads : g_23 g_34 g_42 g_60 g_61 g_42.f3 g_69 g_70 g_42.f2 g_78 g_94 g_117 g_95 g_163 g_163.f0 g_42.f1 g_218 g_170 g_171 g_163.f1 g_84 g_248 g_246 g_234 g_249 g_405 g_255 g_387 g_25 g_396 g_397 g_380 g_471 g_165 g_404 g_505 g_588 g_643 + * writes: g_25 g_34 g_60 g_78 g_61 g_117 g_170 g_70 g_163.f0 g_218 g_165 g_234 g_42.f1 g_404 g_255 g_387 g_396 g_471 g_42.f2 g_616 + */ +static int32_t func_1(void) +{ /* block id: 0 */ + int32_t l_13[8] = {1L,1L,1L,1L,1L,1L,1L,1L}; + uint16_t *l_33 = &g_34; + uint32_t l_47 = 0xF844BA92L; + int8_t *l_59 = (void*)0; + union U2 l_64 = {-8L}; + int32_t l_175[3][5] = {{0xEB591F11L,0xEB591F11L,(-9L),4L,0xE9867546L},{(-1L),1L,1L,(-1L),0xEB591F11L},{(-1L),4L,0L,0L,4L}}; + int32_t l_509[9][6] = {{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L},{0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L,0xDF92247FL,0x59DF3EF6L,0x59DF3EF6L}}; + uint32_t l_528 = 6UL; + uint8_t *l_576[8] = {&g_23,&g_23,&g_23,&g_23,&g_23,&g_23,&g_23,&g_23}; + int32_t l_635 = 0x6AE51A9FL; + int i, j; + if (((safe_add_func_uint16_t_u_u((l_509[1][5] ^= (func_4(func_8(l_13[7], (((safe_mul_func_uint8_t_u_u((func_16(func_21(g_23), (((*g_69) = func_27((++(*l_33)), func_37(l_13[7], g_42, func_43(l_47, (safe_div_func_uint8_t_u_u((func_50(func_56(l_59, g_60), g_61[6][5][1], l_13[2], &g_61[3][1][1], l_64) <= l_64.f1), g_42.f3)), g_69), l_47), l_64, &l_13[1], l_175[0][2])) < l_13[7]), l_59, g_69) >= g_171[1][6][2]), 0x43L)) < l_64.f2) != 5UL), g_69, g_405[3][0]), l_64.f0, l_59) >= l_64.f1)), l_64.f3)) > 0x66CCL)) + { /* block id: 365 */ + int32_t l_524 = (-9L); + union U2 l_580 = {0xF3A458B5L}; + int8_t *l_581 = (void*)0; + int32_t l_589 = 0x34F78B18L; + uint32_t l_605 = 0xE76FF136L; + for (g_234 = (-16); (g_234 >= 13); g_234 = safe_add_func_int32_t_s_s(g_234, 6)) + { /* block id: 368 */ + union U2 l_520 = {0x03E6CC5CL}; + int32_t l_529 = (-7L); + int32_t *l_566 = &l_175[0][0]; + const uint8_t *l_577 = &g_171[2][4][1]; + uint32_t *l_584 = &l_580.f1; + uint8_t l_587 = 0x74L; + if (l_64.f1) + { /* block id: 369 */ + uint32_t l_516 = 0UL; + uint8_t *l_519 = &g_42.f2; + union U2 *l_521 = &l_64; + int32_t *l_525 = (void*)0; + int32_t *l_526 = &g_61[3][1][1]; + int32_t *l_527[7][2] = {{&l_13[4],&l_13[4]},{(void*)0,&l_13[4]},{&l_13[4],(void*)0},{&l_13[4],&l_13[4]},{(void*)0,&l_13[4]},{&l_13[4],(void*)0},{&l_13[4],&l_13[4]}}; + int16_t l_554 = 0xB066L; + uint16_t *l_571 = &g_165[6]; + int i, j; + l_529 = (safe_div_func_int16_t_s_s((safe_rshift_func_uint16_t_u_s(l_516, (safe_rshift_func_int8_t_s_u(l_516, ((*l_519) = 0x47L))))), (((*l_521) = l_520) , ((l_528 = ((*l_526) = (safe_lshift_func_uint16_t_u_s((func_16(g_163, l_524, l_519, &g_70) && 1L), 8)))) | l_520.f0)))); + if ((*l_526)) + break; + for (g_34 = 0; (g_34 <= 5); g_34 = safe_add_func_int16_t_s_s(g_34, 5)) + { /* block id: 378 */ + uint32_t l_534 = 0x9C38BE8CL; + int8_t **l_537 = &g_69; + int32_t *l_565 = &l_13[0]; + } + } + else + { /* block id: 394 */ + return l_175[0][1]; + } + l_589 = ((*g_588) = (safe_mod_func_uint16_t_u_u(((((l_576[2] = &g_218) == l_577) && (~(safe_mul_func_uint8_t_u_u((l_13[5] >= (l_580 , g_165[5])), (*l_566))))) > 0x0256L), l_47))); + (*g_588) ^= (*l_566); + } + for (g_117 = (-29); (g_117 != (-7)); g_117 = safe_add_func_int8_t_s_s(g_117, 5)) + { /* block id: 407 */ + int32_t *l_592 = &l_13[7]; + int32_t *l_593 = &l_13[0]; + int32_t *l_594 = &l_175[0][2]; + int32_t *l_595 = &l_509[1][5]; + int32_t *l_596 = &l_175[0][2]; + int32_t *l_597 = &l_509[1][5]; + int32_t *l_598 = &l_175[1][2]; + int32_t *l_599 = (void*)0; + int32_t *l_600 = &g_255; + int32_t *l_601 = &g_25; + int32_t *l_602 = &g_255; + int32_t l_603 = 0x83DE74D8L; + int32_t *l_604[5][7] = {{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{&l_175[0][2],&g_61[3][1][0],&l_509[3][2],&g_61[3][1][0],&l_175[0][2],(void*)0,&l_175[0][2]},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,&g_255,(void*)0},{&l_509[3][2],&g_255,&l_509[3][2],(void*)0,&l_509[8][3],(void*)0,&l_509[3][2]},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}}; + int i, j; + ++l_605; + } + } + else + { /* block id: 410 */ + int32_t *l_608[10] = {&l_175[0][2],&l_175[0][2],&l_175[0][2],&l_175[0][2],&l_175[0][2],&l_175[0][2],&l_175[0][2],&l_175[0][2],&l_175[0][2],&l_175[0][2]}; + uint8_t *l_612 = (void*)0; + uint8_t **l_613 = (void*)0; + uint8_t **l_614 = &l_612; + uint8_t **l_615[10] = {&l_576[5],&l_576[2],&l_576[5],&l_576[2],&l_576[5],&l_576[2],&l_576[5],&l_576[2],&l_576[5],&l_576[2]}; + uint32_t l_617 = 0xA732A71CL; + const int8_t *l_618 = &g_70; + int32_t *l_622 = (void*)0; + union U1 l_641 = {0}; + int i; + if (func_50(func_56(&g_70, l_608[8]), (safe_lshift_func_uint8_t_u_s(l_13[7], 7)), (((safe_unary_minus_func_int8_t_s(((*g_69) = ((*g_248) ^ (l_175[0][3] > ((g_616 = ((*l_614) = l_612)) != (l_576[4] = &g_23))))))) | l_64.f1) && g_165[4]), &l_175[0][0], (**g_396))) + { /* block id: 415 */ + return l_528; + } + else + { /* block id: 417 */ + int8_t l_619 = 0xF5L; + const int32_t *l_627[7][2] = {{&g_42.f0,&g_42.f0},{&g_42.f0,&g_42.f0},{&g_42.f0,&g_42.f0},{&l_64.f0,&l_64.f0},{&l_64.f0,&g_42.f0},{&g_42.f0,&g_42.f0},{&g_42.f0,&g_42.f0}}; + const int32_t **l_626 = &l_627[3][0]; + int32_t l_628[6] = {0xF3CEC250L,0xF3CEC250L,0xF3CEC250L,0xF3CEC250L,0xF3CEC250L,0xF3CEC250L}; + int16_t l_636 = 0xA7CDL; + uint8_t l_637 = 0x6EL; + int i, j; + for (g_387 = 7; (g_387 >= 0); g_387 -= 1) + { /* block id: 420 */ + int8_t *l_620[4][4][9] = {{{&g_163.f0,&l_619,(void*)0,&g_163.f0,&g_163.f0,(void*)0,&l_619,&g_163.f0,&g_405[3][0].f0},{&g_70,&g_471,(void*)0,&g_70,&l_619,&g_70,(void*)0,&g_117,&g_471},{&g_405[3][0].f0,&l_619,&g_163.f0,&g_471,(void*)0,&g_471,&g_163.f0,&l_619,&g_405[3][0].f0},{&g_163.f0,&g_471,&l_619,&g_70,&g_70,(void*)0,&g_471,(void*)0,&g_405[3][0].f0}},{{&g_163.f0,(void*)0,(void*)0,&g_163.f0,(void*)0,(void*)0,(void*)0,&g_163.f0,&g_163.f0},{&g_70,&g_405[3][0].f0,&g_70,&g_471,(void*)0,(void*)0,(void*)0,&g_471,&g_163.f0},{&l_619,(void*)0,&g_471,&g_163.f0,&g_163.f0,&g_117,&g_163.f0,&g_163.f0,&g_471},{&g_405[3][0].f0,&g_405[3][0].f0,&g_405[3][0].f0,&g_163.f0,&l_619,&g_117,&g_471,&g_70,&g_70}},{{&g_471,&g_163.f0,&l_619,&g_163.f0,(void*)0,&l_619,&l_619,(void*)0,&g_163.f0},{&g_405[3][0].f0,&g_117,&g_405[3][0].f0,(void*)0,&g_471,(void*)0,&g_70,&g_70,&l_619},{&g_117,&l_619,&g_471,&g_163.f0,(void*)0,&g_405[3][0].f0,&g_163.f0,&g_405[3][0].f0,(void*)0},{(void*)0,&g_70,&g_70,(void*)0,&g_117,(void*)0,&g_70,&l_619,&g_70}},{{&g_163.f0,&g_117,&g_163.f0,&g_163.f0,&l_619,&g_163.f0,&g_117,&g_117,&g_163.f0},{&g_117,&g_163.f0,(void*)0,&g_163.f0,&g_117,&l_619,&g_405[3][0].f0,&g_471,&g_70},{&l_619,&g_163.f0,&g_405[3][0].f0,&g_163.f0,(void*)0,&g_117,(void*)0,&g_163.f0,(void*)0},{&g_70,&l_619,&l_619,&l_619,&l_619,&g_70,(void*)0,&g_117,&g_70}}}; + int32_t l_629 = 0x94DF55BDL; + int32_t l_630 = 0x78F2A151L; + int32_t l_631 = 0x108DD9F6L; + int32_t l_632 = 1L; + int32_t l_633 = 0x9920FA05L; + int32_t l_634 = 8L; + int32_t *l_650 = &g_255; + int i, j, k; + for (g_163.f0 = 0; (g_163.f0 <= 3); g_163.f0 += 1) + { /* block id: 423 */ + int32_t *l_621[7][7] = {{&l_175[0][2],&g_61[3][4][2],&l_509[1][5],&l_175[0][2],&l_13[7],&l_175[0][2],&l_509[1][5]},{&g_255,&g_255,&l_13[7],&l_509[1][5],&g_61[3][4][2],(void*)0,&g_255},{&g_255,&l_509[1][5],&l_509[1][5],&g_61[3][4][2],&g_255,&g_255,&g_61[3][4][2]},{&l_175[0][2],&l_13[7],&l_175[0][2],&l_509[1][5],&g_61[3][4][2],&l_175[0][2],&l_175[0][2]},{&g_61[3][4][2],&l_13[7],&l_509[1][5],&l_509[1][5],&l_13[7],&l_13[7],&l_13[7]},{(void*)0,&l_509[1][5],&l_509[1][5],(void*)0,&l_175[0][2],&l_175[0][2],&g_61[3][4][2]},{&g_255,&g_255,&l_509[1][5],&l_509[1][5],&g_61[3][4][2],&g_255,&g_255}}; + const int32_t *l_624 = &g_78; + const int32_t **l_623[5]; + int i, j; + for (i = 0; i < 5; i++) + l_623[i] = &l_624; + for (g_78 = 3; (g_78 >= 0); g_78 -= 1) + { /* block id: 426 */ + int i, j, k; + g_61[(g_78 + 1)][(g_163.f0 + 1)][g_163.f0] ^= l_619; + (*g_95) = func_56(l_620[0][2][7], l_621[0][2]); + (*g_95) = (*g_95); + l_622 = l_621[0][2]; + } + for (l_619 = 1; (l_619 <= 7); l_619 += 1) + { /* block id: 434 */ + const int32_t ***l_625[2]; + int i; + for (i = 0; i < 2; i++) + l_625[i] = &l_623[1]; + l_626 = l_623[4]; + } + } + --l_637; + for (l_47 = 0; (l_47 <= 3); l_47 += 1) + { /* block id: 441 */ + int32_t l_640 = 0xEDD92DAAL; + int32_t *l_642 = (void*)0; + int8_t *l_649 = (void*)0; + (*g_588) |= (((g_165[2] = l_640) >= l_640) | ((((l_641 , (*g_170)) | (l_628[0] = (l_13[2] >= (func_50(l_642, (func_50(&l_628[2], (((g_643 == ((safe_rshift_func_uint8_t_u_s(l_628[2], 6)) , &g_644)) == 0x572EL) & 0L), l_634, l_608[7], (**g_396)) ^ 9UL), (*g_69), l_608[0], (*g_397)) || 0x10DDA243L)))) < l_13[7]) > l_13[g_387])); + for (l_636 = 0; (l_636 <= 3); l_636 += 1) + { /* block id: 447 */ + int32_t *l_651 = &l_628[2]; + l_650 = &l_628[2]; + (*g_95) = l_651; + if ((**g_95)) + break; + } + for (g_163.f0 = 5; (g_163.f0 >= 2); g_163.f0 -= 1) + { /* block id: 455 */ + int i, j, k; + g_61[g_387][l_47][l_47] = (safe_unary_minus_func_int16_t_s(l_509[(l_47 + 4)][l_47])); + l_509[3][0] ^= (*l_650); + return (*g_588); + } + for (l_528 = 2; (l_528 <= 7); l_528 += 1) + { /* block id: 462 */ + return (*g_404); + } + } + } + for (l_637 = 0; (l_637 == 3); l_637++) + { /* block id: 469 */ + uint32_t l_655[6]; + int i; + for (i = 0; i < 6; i++) + l_655[i] = 0x4CE808BAL; + (*g_95) = l_622; + if (l_655[4]) + continue; + } + } + } + for (g_218 = 3; (g_218 == 24); g_218++) + { /* block id: 477 */ + for (l_635 = 24; (l_635 <= 1); l_635 = safe_sub_func_int32_t_s_s(l_635, 2)) + { /* block id: 480 */ + (*g_588) = ((&g_78 == &g_78) ^ 0x108FL); + } + } + return (*g_588); +} + + +/* ------------------------------------------ */ +/* + * reads : g_387 g_95 g_84 g_61 g_170 g_171 g_163.f1 g_25 g_396 g_397 g_42 g_42.f3 g_117 g_248 g_246 g_255 g_380 g_471 g_249 g_165 g_163 g_69 g_70 g_42.f1 g_218 g_404 g_505 + * writes: g_387 g_60 g_404 g_218 g_25 g_117 g_396 g_255 g_61 g_471 g_170 g_34 + */ +static uint8_t func_4(int8_t * p_5, uint16_t p_6, int8_t * p_7) +{ /* block id: 299 */ + int32_t *l_430[6][9] = {{&g_61[3][1][1],&g_61[3][1][1],(void*)0,&g_61[1][1][0],&g_25,(void*)0,&g_25,&g_61[1][1][0],(void*)0},{&g_25,&g_25,&g_61[3][5][3],(void*)0,&g_61[5][0][1],&g_61[3][5][3],&g_61[5][0][1],(void*)0,&g_61[3][5][3]},{&g_61[3][1][1],&g_61[3][1][1],(void*)0,&g_61[1][1][0],&g_25,(void*)0,&g_25,&g_61[1][1][0],(void*)0},{&g_25,&g_25,&g_61[3][5][3],(void*)0,&g_61[5][0][1],&g_61[3][5][3],&g_61[5][0][1],(void*)0,&g_61[3][5][3]},{&g_61[3][1][1],&g_61[3][1][1],(void*)0,&g_61[3][1][1],&g_61[1][1][0],(void*)0,&g_61[1][1][0],&g_61[3][1][1],(void*)0},{&g_61[5][0][1],&g_61[5][0][1],&g_25,&g_25,(void*)0,&g_25,(void*)0,&g_25,&g_25}}; + uint32_t l_437[7][6] = {{0x73C76190L,0x73C76190L,1UL,0x73C76190L,0x73C76190L,1UL},{0x73C76190L,0x73C76190L,1UL,0x73C76190L,0x73C76190L,1UL},{0x73C76190L,0x73C76190L,1UL,0x73C76190L,0x73C76190L,1UL},{0x73C76190L,0x73C76190L,1UL,0x73C76190L,0x73C76190L,1UL},{0x73C76190L,0x73C76190L,1UL,0x73C76190L,0x73C76190L,1UL},{0x73C76190L,0x73C76190L,1UL,0x73C76190L,0x73C76190L,1UL},{0x73C76190L,0x73C76190L,1UL,0x73C76190L,0x73C76190L,1UL}}; + union U0 l_439 = {0x5BL}; + union U2 l_464 = {0x013712E9L}; + int8_t *l_468 = (void*)0; + union U2 l_470 = {0xFCE83381L}; + const union U1 l_504 = {0}; + int i, j; + for (g_387 = 10; (g_387 > (-15)); g_387--) + { /* block id: 302 */ + union U0 l_438[9][10] = {{{0x4FL},{0x2CL},{0x2CL},{0x4FL},{-6L},{0x4FL},{0x2CL},{0x2CL},{0x4FL},{-6L}},{{0x4FL},{0x2CL},{0x2CL},{0x4FL},{-6L},{0x4FL},{0x2CL},{0x2CL},{0x4FL},{-6L}},{{0x4FL},{0x2CL},{0x2CL},{0x4FL},{-6L},{0x4FL},{0x2CL},{0x2CL},{0x4FL},{-6L}},{{0x4FL},{0x2CL},{0x2CL},{0x4FL},{-6L},{0x4FL},{0x2CL},{0x6AL},{0x2CL},{-5L}},{{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L},{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L}},{{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L},{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L}},{{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L},{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L}},{{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L},{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L}},{{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L},{0x2CL},{0x6AL},{0x6AL},{0x2CL},{-5L}}}; + int8_t *l_444 = &l_438[8][2].f0; + uint8_t *l_445 = (void*)0; + uint8_t *l_446 = (void*)0; + uint8_t *l_447 = (void*)0; + int32_t *l_448 = &g_25; + int i, j; + (*l_448) = func_50(((*g_95) = l_430[0][6]), (safe_lshift_func_uint8_t_u_u((safe_mod_func_int32_t_s_s((safe_mul_func_int16_t_s_s((l_437[5][3] , ((g_218 = func_16(l_438[8][2], func_16(l_439, (g_84 , func_16(l_439, (safe_rshift_func_uint8_t_u_s(0x01L, (safe_rshift_func_int16_t_s_s(0xFC91L, 13)))), p_7, l_444)), p_7, p_7), p_7, l_444)) ^ (*g_170))), g_387)), g_25)), 3)), l_438[8][2].f1, l_448, (**g_396)); + (*l_448) &= 9L; + if (p_6) + break; + } + for (g_117 = (-26); (g_117 < 23); g_117++) + { /* block id: 311 */ + int16_t l_469 = (-9L); + uint32_t *l_486 = &l_470.f1; + uint32_t **l_485[4] = {&l_486,&l_486,&l_486,&l_486}; + int8_t l_497 = 0L; + int32_t l_501 = 1L; + uint16_t l_508 = 0x4BC4L; + int i; + if (p_6) + { /* block id: 312 */ + int32_t *l_451[8] = {&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255,&g_255}; + int32_t *l_452 = (void*)0; + const union U1 l_472 = {0}; + union U0 l_479 = {0xB8L}; + int i; + for (l_439.f0 = 3; (l_439.f0 >= 0); l_439.f0 -= 1) + { /* block id: 315 */ + union U2 ***l_453 = &g_396; + int32_t l_465 = 0xAF964579L; + uint16_t *l_482 = &g_165[0]; + l_452 = ((*g_95) = func_56(p_5, l_451[0])); + (*l_453) = &g_397; + for (g_387 = 5; (g_387 >= 0); g_387 -= 1) + { /* block id: 321 */ + union U0 l_454 = {8L}; + int i, j, k; + if (g_61[l_439.f0][g_387][l_439.f0]) + { /* block id: 322 */ + int32_t *l_463 = &g_255; + uint16_t l_466[9] = {0xBF85L,0xBF85L,0x789FL,0xBF85L,0xBF85L,0x789FL,0xBF85L,0xBF85L,0x789FL}; + uint16_t *l_467[1]; + int i, j, k; + for (i = 0; i < 1; i++) + l_467[i] = &g_165[4]; + g_61[(l_439.f0 + 3)][g_387][l_439.f0] = (func_16(l_454, (safe_rshift_func_uint16_t_u_u(((*l_463) ^= ((safe_sub_func_int16_t_s_s(((safe_sub_func_uint16_t_u_u(l_437[(l_439.f0 + 3)][(l_439.f0 + 2)], (l_466[1] = (func_16(l_454, (func_16(func_21(((*p_5) != (safe_sub_func_uint8_t_u_u((func_50(l_463, g_387, (*p_5), l_463, ((255UL == 0xC5L) , l_464)) || p_6), 1L)))), l_465, p_5, &g_70) == 0xC5F1L), p_5, p_5) ^ 0x5022C929L)))) != (-9L)), (*g_248))) ^ 0x01E9L)), g_380)), l_468, l_468) >= l_469); + } + else + { /* block id: 326 */ + (*l_452) ^= (-1L); + } + (*l_452) = ((g_84 , (((l_470 , (*g_170)) == g_471) ^ ((((func_50(&g_61[l_439.f0][g_387][l_439.f0], p_6, (g_61[l_439.f0][g_387][l_439.f0] = 0L), (l_472 , l_452), l_464) != 0UL) | 0x92L) | (*g_249)) > (*g_170)))) != (*g_249)); + } + for (g_471 = 0; (g_471 <= 3); g_471 += 1) + { /* block id: 334 */ + uint16_t *l_480 = (void*)0; + int32_t l_484 = 0x0E90AE7DL; + for (g_387 = 0; (g_387 <= 6); g_387 += 1) + { /* block id: 337 */ + uint16_t **l_481 = &l_480; + union U2 l_483 = {4L}; + int i, j, k; + (*g_95) = func_37((safe_rshift_func_int8_t_s_u(0xCBL, g_61[(l_439.f0 + 3)][(l_439.f0 + 1)][g_471])), (***l_453), &g_61[(l_439.f0 + 3)][(l_439.f0 + 1)][g_471], ((l_439 , ((safe_mod_func_uint32_t_u_u(((((*l_481) = (((safe_sub_func_int32_t_s_s(g_165[g_471], p_6)) , l_479) , l_480)) == l_482) & (*g_170)), p_6)) , l_483)) , l_484)); + } + for (l_465 = 3; (l_465 >= 0); l_465 -= 1) + { /* block id: 343 */ + int i, j, k; + return g_61[(g_471 + 1)][(l_439.f0 + 2)][l_465]; + } + } + } + return (*g_170); + } + else + { /* block id: 349 */ + uint32_t ***l_487 = (void*)0; + uint32_t ***l_488 = &l_485[3]; + int32_t l_495[9][9][2] = {{{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L},{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L},{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L}},{{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L},{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L},{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L}},{{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L},{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L},{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L}},{{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L},{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L},{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L}},{{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L},{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L},{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L}},{{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L},{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L},{0xADA7BC83L,0x40CE7CD7L},{0L,0x40CE7CD7L},{0xADA7BC83L,0x50ED6328L}},{{0L,0x40CE7CD7L},{1L,0x40CE7CD7L},{0L,0x50ED6328L},{0xADA7BC83L,0x40CE7CD7L},{0L,0x50ED6328L},{1L,0xD0A14D25L},{0L,0x50ED6328L},{(-9L),0x50ED6328L},{0L,0xD0A14D25L}},{{1L,0x50ED6328L},{0x1F85E5ACL,0x50ED6328L},{1L,0xD0A14D25L},{0L,0x50ED6328L},{(-9L),0x50ED6328L},{0L,0xD0A14D25L},{1L,0x50ED6328L},{0x1F85E5ACL,0x50ED6328L},{1L,0xD0A14D25L}},{{0L,0x50ED6328L},{(-9L),0x50ED6328L},{0L,0xD0A14D25L},{1L,0x50ED6328L},{0x1F85E5ACL,0x50ED6328L},{1L,0xD0A14D25L},{0L,0x50ED6328L},{(-9L),0x50ED6328L},{0L,0xD0A14D25L}}}; + uint16_t *l_496 = &g_34; + int i, j, k; + (*l_488) = l_485[1]; + (*g_95) = func_37((p_6 ^ 0xE2F4L), (**g_396), l_430[0][6], ((safe_sub_func_uint32_t_u_u((safe_lshift_func_uint16_t_u_u(((*l_496) = (safe_mul_func_uint8_t_u_u(func_16(l_439, l_495[1][7][1], p_5, &g_70), 0UL))), g_25)), g_42.f1)) <= l_469)); + for (g_218 = 0; (g_218 <= 5); g_218 += 1) + { /* block id: 355 */ + uint32_t l_498[10][6][2] = {{{0UL,0x4710D315L},{0xC89510DFL,18446744073709551614UL},{18446744073709551615UL,0x32FB2497L},{18446744073709551615UL,0UL},{1UL,0xA19F4CA6L},{18446744073709551614UL,1UL}},{{0UL,1UL},{0x243448FFL,0x243448FFL},{18446744073709551615UL,18446744073709551614UL},{0x0D81DB8EL,0x78E1239EL},{1UL,0x4710D315L},{1UL,1UL}},{{0x32FB2497L,18446744073709551615UL},{0x32FB2497L,1UL},{1UL,0x4710D315L},{1UL,0x78E1239EL},{0x0D81DB8EL,18446744073709551614UL},{18446744073709551615UL,0x243448FFL}},{{0x243448FFL,1UL},{0UL,1UL},{18446744073709551614UL,0xA19F4CA6L},{1UL,0UL},{18446744073709551615UL,0x32FB2497L},{18446744073709551615UL,18446744073709551614UL}},{{0xC89510DFL,0x4710D315L},{0xFF073B46L,18446744073709551614UL},{0UL,1UL},{18446744073709551615UL,0UL},{0xF99EA8BEL,0xFF073B46L},{0x78E1239EL,18446744073709551615UL}},{{1UL,18446744073709551615UL},{0x78E1239EL,0xFF073B46L},{0xF99EA8BEL,0UL},{18446744073709551615UL,1UL},{0UL,18446744073709551614UL},{0xFF073B46L,0x53B970BDL}},{{0x78E1239EL,18446744073709551610UL},{0xC89510DFL,18446744073709551615UL},{0UL,0xFF073B46L},{0x76FB5125L,18446744073709551614UL},{18446744073709551610UL,1UL},{0UL,18446744073709551612UL}},{{0xF99EA8BEL,0xF99EA8BEL},{0UL,18446744073709551610UL},{0xA19F4CA6L,18446744073709551615UL},{18446744073709551612UL,0x53B970BDL},{0x76FB5125L,18446744073709551612UL},{18446744073709551615UL,0xC89510DFL}},{{18446744073709551615UL,18446744073709551612UL},{0x76FB5125L,0x53B970BDL},{18446744073709551612UL,18446744073709551615UL},{0xA19F4CA6L,18446744073709551610UL},{0UL,0xF99EA8BEL},{0xF99EA8BEL,18446744073709551612UL}},{{0UL,1UL},{18446744073709551610UL,18446744073709551614UL},{0x76FB5125L,0xFF073B46L},{0UL,18446744073709551615UL},{0xC89510DFL,18446744073709551610UL},{0x78E1239EL,0x53B970BDL}}}; + int i, j, k; + if ((*g_404)) + break; + l_498[0][0][0]--; + l_501 = l_498[0][0][0]; + } + } + l_501 &= (func_21((((~p_6) , (safe_div_func_int32_t_s_s(p_6, ((l_504 , 0L) | ((void*)0 == g_505))))) , (safe_rshift_func_int8_t_s_u(0x75L, l_508)))) , p_6); + } + return (*g_170); +} + + +/* ------------------------------------------ */ +/* + * reads : g_95 g_60 g_234 g_249 g_246 g_61 g_69 g_70 g_42.f3 g_42.f1 g_218 g_170 g_171 g_163.f1 g_34 g_163.f0 g_42 g_84 g_248 g_255 + * writes: g_60 g_70 g_78 g_34 g_163.f0 g_61 g_218 g_165 g_234 g_117 g_42.f1 g_255 + */ +static int8_t * func_8(uint8_t p_9, const uint32_t p_10, const int8_t * p_11, union U0 p_12) +{ /* block id: 293 */ + int8_t l_406[2][8] = {{0x4CL,0x4CL,(-6L),0x4CL,0x4CL,(-6L),0x4CL,0x4CL},{0x31L,0x4CL,0x31L,0x31L,0x4CL,0x31L,0x31L,0x4CL}}; + int32_t *l_407 = &g_61[1][3][0]; + int32_t *l_408 = (void*)0; + int32_t *l_409 = &g_61[3][1][1]; + int32_t *l_410 = &g_25; + int32_t *l_411 = (void*)0; + int32_t *l_412 = &g_25; + int32_t *l_413 = &g_61[3][1][1]; + int32_t *l_414 = &g_255; + int32_t *l_415 = &g_61[3][1][1]; + int32_t *l_416 = (void*)0; + int32_t l_417[3][4][5]; + int32_t *l_418[6][10][1] = {{{(void*)0},{(void*)0},{(void*)0},{&g_61[1][4][2]},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{&g_61[1][4][2]},{(void*)0}},{{(void*)0},{(void*)0},{(void*)0},{(void*)0},{&g_25},{&g_25},{(void*)0},{(void*)0},{(void*)0},{(void*)0}},{{(void*)0},{(void*)0},{(void*)0},{&g_25},{&g_25},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0}},{{(void*)0},{(void*)0},{&g_25},{&g_25},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0}},{{(void*)0},{&g_25},{&g_25},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0}},{{&g_25},{&g_25},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{(void*)0},{&g_25}}}; + int16_t l_419 = 0x46F3L; + int32_t l_420 = 0xEFAEA218L; + int32_t l_421 = 0xF0C3CF87L; + int32_t l_422 = 0xF5496424L; + int8_t l_423 = (-7L); + uint32_t l_424 = 0xBE103C84L; + union U2 l_427 = {0x21442813L}; + int i, j, k; + for (i = 0; i < 3; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 5; k++) + l_417[i][j][k] = 0xF85FD576L; + } + } + l_406[1][3] ^= p_9; + (*g_95) = l_407; + l_424--; + (*l_414) &= func_27(p_9, (*g_95), l_427, (*g_95), ((&g_387 == (l_427 , &g_380)) != ((((p_12.f1 <= (0x201B5C96L > p_9)) >= g_234) ^ (*g_249)) , 0x9438L))); + return &g_117; +} + + +/* ------------------------------------------ */ +/* + * reads : g_61 + * writes: g_404 + */ +static const int8_t func_16(union U0 p_17, uint8_t p_18, int8_t * p_19, int8_t * p_20) +{ /* block id: 197 */ + uint16_t l_302[6][3] = {{1UL,1UL,1UL},{0UL,0UL,0UL},{1UL,1UL,1UL},{0UL,0UL,0UL},{1UL,1UL,1UL},{0UL,0UL,0UL}}; + int32_t *l_342[5][7][4] = {{{&g_255,&g_61[3][1][1],&g_61[2][3][3],&g_25},{&g_61[3][1][1],&g_25,&g_255,&g_255},{&g_255,&g_255,&g_255,&g_255},{&g_255,&g_255,&g_255,&g_255},{&g_255,&g_25,&g_61[3][1][1],&g_25},{&g_61[2][3][3],&g_61[3][1][1],&g_255,&g_61[3][1][1]},{&g_61[2][3][3],&g_255,&g_61[3][1][1],(void*)0}},{{&g_61[5][4][3],&g_255,&g_61[4][5][1],&g_25},{&g_255,(void*)0,&g_255,&g_25},{&g_61[4][5][1],&g_255,&g_61[5][4][3],(void*)0},{&g_61[2][3][3],&g_25,&g_255,&g_255},{&g_25,(void*)0,&g_255,&g_61[3][1][1]},{&g_61[2][3][3],&g_25,&g_61[5][4][3],&g_25},{&g_61[4][5][1],&g_25,&g_255,&g_25}},{{&g_255,&g_25,&g_61[4][5][1],&g_25},{&g_61[5][4][3],&g_25,&g_61[2][3][3],&g_61[3][1][1]},{&g_255,(void*)0,&g_25,&g_255},{&g_255,&g_25,&g_61[2][3][3],(void*)0},{&g_61[5][4][3],&g_255,&g_61[4][5][1],&g_25},{&g_255,(void*)0,&g_255,&g_25},{&g_61[4][5][1],&g_255,&g_61[5][4][3],(void*)0}},{{&g_61[2][3][3],&g_25,&g_255,&g_255},{&g_25,(void*)0,&g_255,&g_61[3][1][1]},{&g_61[2][3][3],&g_25,&g_61[5][4][3],&g_25},{&g_61[4][5][1],&g_25,&g_255,&g_25},{&g_255,&g_25,&g_61[4][5][1],&g_25},{&g_61[5][4][3],&g_25,&g_61[2][3][3],&g_61[3][1][1]},{&g_255,(void*)0,&g_25,&g_255}},{{&g_255,&g_25,&g_61[2][3][3],(void*)0},{&g_61[5][4][3],&g_255,&g_61[4][5][1],&g_25},{&g_255,(void*)0,&g_61[4][5][1],&g_255},{&g_61[3][1][1],&g_61[3][1][1],&g_25,&g_25},{&g_255,&g_61[3][1][1],&g_255,&g_61[3][1][1]},{&g_61[5][1][3],&g_25,&g_255,&g_255},{&g_255,(void*)0,&g_25,&g_61[3][1][1]}}}; + const union U2 *l_352 = &g_42; + uint16_t *l_377 = &g_165[1]; + uint16_t **l_376[4][4] = {{&l_377,(void*)0,&l_377,(void*)0},{&l_377,(void*)0,&l_377,(void*)0},{&l_377,(void*)0,&l_377,(void*)0},{&l_377,(void*)0,&l_377,(void*)0}}; + uint32_t l_393 = 4294967290UL; + const uint8_t *l_398 = &g_42.f2; + int8_t **l_401 = &g_69; + int8_t ***l_402 = &l_401; + const int32_t *l_403 = &g_61[3][1][1]; + int i, j, k; + for (p_18 = 25; (p_18 < 17); p_18 = safe_sub_func_uint32_t_u_u(p_18, 5)) + { /* block id: 200 */ + int32_t l_308 = 0xDC603431L; + int32_t l_309 = 0x1C33B4EEL; + union U1 *l_336 = &g_84; + int32_t l_388 = 4L; + uint8_t * const l_399 = &g_42.f2; + int8_t **l_400 = &g_69; + } + (*l_402) = l_401; + g_404 = (p_17.f1 , l_403); + return (*l_403); +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: g_25 + */ +static union U0 func_21(uint32_t p_22) +{ /* block id: 1 */ + int32_t *l_24 = &g_25; + union U0 l_26 = {-3L}; + (*l_24) = p_22; + return l_26; +} + + +/* ------------------------------------------ */ +/* + * reads : g_61 g_69 g_70 g_42.f3 g_42.f1 g_218 g_170 g_171 g_163.f1 g_95 g_34 g_163.f0 g_42 g_84 g_248 g_246 g_234 g_249 g_78 g_117 + * writes: g_70 g_78 g_34 g_163.f0 g_61 g_60 g_218 g_165 g_234 g_117 g_42.f1 + */ +static int8_t func_27(uint16_t p_28, int32_t * p_29, union U2 p_30, int32_t * const p_31, int32_t p_32) +{ /* block id: 106 */ + union U1 *l_177 = &g_84; + union U1 **l_176 = &l_177; + int32_t *l_178 = &g_61[3][1][1]; + int8_t *l_181[8] = {&g_163.f0,&g_163.f0,&g_163.f0,&g_163.f0,&g_163.f0,&g_163.f0,&g_163.f0,&g_163.f0}; + int32_t *l_182 = &g_61[3][1][1]; + union U2 l_252 = {8L}; + int32_t l_275 = 0x343AA78CL; + int32_t l_277 = 0xE7E876F0L; + int32_t l_289 = 0x3867B030L; + int32_t l_290 = 0x04B24578L; + int32_t l_291 = (-6L); + int32_t l_292 = 0xE153FDD8L; + int i; +lbl_256: + if (((+0x7E10L) ^ ((l_176 != (((*g_69) &= (*l_182)) , &l_177)) || (*l_178)))) + { /* block id: 108 */ + uint32_t l_193 = 18446744073709551606UL; + int32_t l_194 = 3L; + for (g_78 = 0; (g_78 <= (-16)); g_78 = safe_sub_func_int32_t_s_s(g_78, 2)) + { /* block id: 111 */ + int8_t l_192 = 0L; + for (g_34 = 0; (g_34 <= 7); g_34 += 1) + { /* block id: 114 */ + return (*l_178); + } + for (p_32 = 25; (p_32 == (-30)); p_32 = safe_sub_func_int32_t_s_s(p_32, 2)) + { /* block id: 119 */ + for (g_163.f0 = 0; (g_163.f0 != (-23)); g_163.f0 = safe_sub_func_int16_t_s_s(g_163.f0, 4)) + { /* block id: 122 */ + int8_t l_189 = (-3L); + for (g_34 = 0; (g_34 <= 3); g_34 += 1) + { /* block id: 125 */ + (*l_176) = &g_84; + } + if (l_189) + break; + } + if ((*l_178)) + break; + } + (*l_178) = (*p_31); + for (g_70 = 0; (g_70 < 3); ++g_70) + { /* block id: 135 */ + l_192 = 0x42813DB6L; + } + } + for (p_32 = 7; (p_32 >= 0); p_32 -= 1) + { /* block id: 141 */ + return p_30.f0; + } + l_194 = (~l_193); + return l_194; + } + else + { /* block id: 146 */ + int8_t l_197[10] = {1L,0x3CL,1L,(-1L),(-1L),1L,0x3CL,1L,(-1L),(-1L)}; + int32_t *l_198 = &g_61[3][1][1]; + union U0 l_199[1] = {{0xDFL}}; + int32_t *l_200 = (void*)0; + union U2 l_201[10] = {{0x8373BB44L},{0x8373BB44L},{0x8373BB44L},{0x8373BB44L},{0x8373BB44L},{0x8373BB44L},{0x8373BB44L},{0x8373BB44L},{0x8373BB44L},{0x8373BB44L}}; + uint16_t *l_224 = &g_34; + uint8_t *l_232 = (void*)0; + uint8_t ** const l_231 = &l_232; + union U1 l_240 = {0}; + int i; + if (((*l_178) = (safe_mul_func_uint16_t_u_u(((l_197[9] && func_50(l_198, (*l_182), (l_199[0] , p_30.f2), l_200, l_201[2])) >= (safe_mul_func_int8_t_s_s((*l_178), 0x2EL))), (*l_198))))) + { /* block id: 148 */ + return (*l_198); + } + else + { /* block id: 150 */ + uint8_t l_204 = 0xA3L; + uint32_t *l_217[3]; + union U2 l_223 = {0x3A80E33CL}; + uint16_t **l_225 = &l_224; + int i; + for (i = 0; i < 3; i++) + l_217[i] = &l_201[2].f1; +lbl_226: + l_204--; + if (g_42.f3) + goto lbl_256; + if (((*l_178) = (safe_sub_func_uint8_t_u_u((safe_add_func_uint16_t_u_u(g_42.f1, (g_165[6] = ((*l_198) >= ((safe_add_func_int32_t_s_s(0xBBEC7243L, (safe_lshift_func_int8_t_s_u(((((safe_mul_func_uint16_t_u_u(1UL, (*l_198))) < (++g_218)) && ((*g_170) ^ ((*g_69) = (safe_add_func_uint8_t_u_u(0UL, (l_223 , (((*l_225) = l_224) == &g_34))))))) == 0UL), (*g_170))))) , 0xACD3L))))), (*l_198))))) + { /* block id: 157 */ + return (*l_182); + } + else + { /* block id: 159 */ + int16_t *l_233 = &g_234; + int32_t l_235 = (-9L); + if (g_218) + goto lbl_226; + (*l_198) = (func_50(((*g_95) = l_217[0]), g_61[0][4][3], ((((safe_add_func_uint32_t_u_u(g_42.f3, (p_30 , (((*l_224) ^= (*l_182)) ^ g_163.f0)))) , (((*l_198) | ((((*l_233) = ((safe_add_func_uint16_t_u_u((((l_231 == &g_170) && 1L) != p_28), 0x6AFEL)) , p_30.f3)) , (*g_69)) > (*l_178))) ^ 0xE3L)) == (*g_69)) > l_235), l_178, g_42) , 0x23B8671DL); + } + } + for (g_117 = (-4); (g_117 <= 25); ++g_117) + { /* block id: 169 */ + int16_t *l_245 = &g_246; + int16_t **l_247[2]; + int32_t *l_250 = &g_61[3][1][1]; + int32_t l_253[6] = {0x4B38AC99L,0x4B38AC99L,0x12668D6FL,0x4B38AC99L,0x4B38AC99L,0x12668D6FL}; + int32_t *l_254 = &g_255; + int i; + for (i = 0; i < 2; i++) + l_247[i] = &l_245; + } + } + for (p_32 = 0; (p_32 > (-13)); p_32 = safe_sub_func_int32_t_s_s(p_32, 5)) + { /* block id: 181 */ + uint8_t l_264 = 0x45L; + int32_t l_272 = (-8L); + int32_t l_287[1][4] = {{0L,0L,0L,0L}}; + int16_t l_288 = (-1L); + uint32_t l_293 = 0xA6770327L; + int i, j; + for (p_28 = 1; (p_28 <= 7); p_28 += 1) + { /* block id: 184 */ + const union U1 *l_263[9] = {&g_84,&g_84,&g_84,&g_84,&g_84,&g_84,&g_84,&g_84,&g_84}; + int32_t l_265 = 0x3B5E6BF7L; + uint32_t *l_268 = &l_252.f1; + int16_t *l_271 = &g_234; + int32_t l_273 = 0x7167734CL; + int32_t *l_274 = (void*)0; + int32_t *l_276 = &g_255; + int32_t *l_278 = &l_273; + int32_t *l_279 = &g_255; + int32_t *l_280 = (void*)0; + int32_t *l_281 = &g_61[4][3][1]; + int32_t *l_282 = &l_275; + int32_t *l_283 = &l_265; + int32_t *l_284 = &l_275; + int32_t *l_285 = &l_277; + int32_t *l_286[9][2] = {{&l_275,&g_255},{&g_61[3][1][1],&g_61[3][1][1]},{&g_255,&l_275},{&g_61[4][1][1],&l_275},{&g_255,&g_61[3][1][1]},{&g_61[3][1][1],&g_255},{&l_275,&g_255},{&l_265,&l_275},{&g_255,&g_255}}; + int i, j; + l_273 |= ((p_32 ^ (p_32 != (safe_lshift_func_uint16_t_u_u(((safe_rshift_func_uint16_t_u_s((((void*)0 != l_263[4]) != ((*l_177) , (l_264 = ((g_42.f1 = p_28) | (*p_31))))), 14)) | l_265), ((safe_add_func_uint16_t_u_u(((++(*l_268)) , (((*l_271) ^= (*g_248)) <= l_272)), (*g_249))) || l_272))))) || 0x9B2CL); + if ((*l_182)) + continue; + l_293++; + (*l_182) |= l_272; + } + } + return (*l_182); +} + + +/* ------------------------------------------ */ +/* + * reads : g_117 g_163 g_61 g_69 g_70 g_42 g_42.f3 + * writes: g_170 g_61 g_60 + */ +static int32_t * func_37(const uint16_t p_38, union U2 p_39, int32_t * p_40, int32_t p_41) +{ /* block id: 101 */ + int32_t ***l_159 = &g_95; + int32_t l_160 = 0x1B0D62F1L; + uint16_t *l_164 = &g_165[4]; + const uint8_t *l_168 = &g_163.f1; + const uint8_t **l_169[5]; + const uint8_t l_172[4] = {0x82L,0x82L,0x82L,0x82L}; + int32_t *l_173 = &g_61[3][1][1]; + uint32_t l_174 = 18446744073709551614UL; + int i; + for (i = 0; i < 5; i++) + l_169[i] = &l_168; + (*l_173) = ((safe_div_func_uint8_t_u_u(p_39.f3, (safe_lshift_func_int16_t_s_u(g_117, ((((void*)0 != l_159) <= l_160) == (safe_lshift_func_int16_t_s_u((((g_163 , l_164) == &p_38) && (safe_lshift_func_uint16_t_u_s(((g_170 = l_168) != (void*)0), 0))), 6))))))) >= l_172[3]); + (*l_173) = ((*l_173) & ((func_50(p_40, ((*g_69) , l_174), (*g_69), &l_160, g_42) != (g_61[7][0][3] , p_39.f2)) <= 0xEEL)); + return p_40; +} + + +/* ------------------------------------------ */ +/* + * reads : g_69 g_70 g_61 g_60 g_42.f3 g_42.f2 g_78 g_94 g_23 g_117 g_95 + * writes: g_78 g_61 g_60 g_117 + */ +static int32_t * func_43(uint8_t p_44, int8_t p_45, int8_t * p_46) +{ /* block id: 15 */ + int32_t *l_71 = &g_61[3][1][1]; + int32_t *l_72 = (void*)0; + int32_t *l_73[9][8] = {{&g_61[3][1][1],(void*)0,(void*)0,&g_61[1][4][3],&g_61[0][3][1],&g_61[4][3][1],&g_61[6][4][2],&g_61[4][2][0]},{&g_61[2][4][2],(void*)0,(void*)0,&g_61[0][3][1],&g_61[0][3][1],(void*)0,(void*)0,&g_61[2][4][2]},{&g_61[3][1][1],&g_61[2][4][2],&g_61[3][1][2],&g_61[4][2][0],(void*)0,(void*)0,(void*)0,&g_61[1][2][0]},{(void*)0,(void*)0,(void*)0,(void*)0,&g_61[4][2][0],(void*)0,(void*)0,(void*)0},{&g_61[4][3][1],&g_61[2][4][2],&g_61[1][2][0],&g_61[3][0][0],&g_61[3][1][1],(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,&g_61[0][3][1],(void*)0,&g_61[4][3][1],&g_61[4][3][1],(void*)0,&g_61[0][3][1]},{(void*)0,(void*)0,&g_61[1][2][0],(void*)0,&g_61[1][4][3],&g_61[3][1][2],(void*)0,(void*)0},{&g_61[1][4][3],&g_61[3][1][2],(void*)0,(void*)0,(void*)0,&g_61[0][3][1],(void*)0,(void*)0},{&g_61[3][1][2],&g_61[1][2][0],&g_61[3][1][2],(void*)0,&g_61[6][4][2],(void*)0,(void*)0,&g_61[0][3][1]}}; + uint32_t l_74 = 0xFA7F9CD9L; + int32_t *l_77 = &g_78; + int32_t l_79 = 1L; + union U1 *l_86[5]; + int32_t ***l_96 = &g_95; + int8_t l_106 = 8L; + int8_t l_119[6] = {9L,0L,9L,9L,0L,9L}; + union U2 l_120 = {-5L}; + int32_t *l_134 = &g_61[3][1][1]; + int i, j; + for (i = 0; i < 5; i++) + l_86[i] = &g_84; +lbl_87: + l_74--; + l_79 ^= (((*l_77) = ((*g_69) || ((*l_71) < 0x14A1L))) , (*g_60)); + if ((g_42.f3 <= (1UL & (0xF049L <= g_42.f2)))) + { /* block id: 19 */ + union U1 *l_83 = &g_84; + int32_t l_90 = 0L; + for (p_45 = 0; (p_45 < (-22)); p_45--) + { /* block id: 22 */ + int32_t *l_88 = &g_61[3][1][1]; + for (l_79 = 6; (l_79 >= 0); l_79 -= 1) + { /* block id: 25 */ + int i, j; + l_73[(l_79 + 1)][l_79] = l_73[l_79][(l_79 + 1)]; + if (p_45) + { /* block id: 27 */ + const int16_t l_82 = (-10L); + for (g_78 = 7; (g_78 >= 0); g_78 -= 1) + { /* block id: 30 */ + union U1 **l_85[4] = {(void*)0,(void*)0,(void*)0,(void*)0}; + int i; + (*g_60) = l_82; + l_86[4] = ((p_45 <= g_70) , l_83); + } + if (g_42.f3) + goto lbl_87; + return l_88; + } + else + { /* block id: 36 */ + int32_t l_89 = 1L; + int i, j; + l_73[(l_79 + 1)][(l_79 + 1)] = (l_89 , l_73[l_79][(l_79 + 1)]); + if (p_44) + break; + } + } + if (l_90) + break; + (*l_71) |= (safe_lshift_func_int8_t_s_s(l_90, 2)); + } + } + else + { /* block id: 44 */ + int32_t l_93 = 0x63BE35A8L; + int32_t l_98 = (-9L); + int32_t l_99 = 0xE0221BC3L; + int32_t l_100 = 0xE0F627EEL; + int32_t l_103 = 7L; + int32_t l_104 = 0xBAAC5CA8L; + int32_t l_105 = 0xA126CF24L; + union U2 l_115 = {4L}; + int32_t *l_128 = &l_93; + int32_t *l_133 = &l_100; + if ((((l_93 , g_94[0]) != l_96) <= 5L)) + { /* block id: 45 */ + int32_t l_97 = 0xA0849DA6L; + int32_t l_101 = 1L; + int32_t l_102[5] = {(-1L),(-1L),(-1L),(-1L),(-1L)}; + uint8_t l_107 = 8UL; + int32_t *l_112 = &l_99; + uint8_t *l_116[10][4][4] = {{{&l_107,&l_107,&g_23,&l_115.f2},{&g_42.f2,&g_23,(void*)0,&l_107},{&g_42.f2,(void*)0,&g_23,&g_42.f2},{&l_107,&l_115.f2,(void*)0,&l_115.f2}},{{(void*)0,&l_115.f2,(void*)0,&g_42.f2},{&l_107,(void*)0,(void*)0,&l_107},{&l_107,&g_23,(void*)0,&l_115.f2},{&l_107,&l_107,(void*)0,(void*)0}},{{(void*)0,(void*)0,(void*)0,(void*)0},{&l_107,&l_107,&g_23,&l_115.f2},{&g_42.f2,&g_23,(void*)0,&l_107},{&g_42.f2,(void*)0,&g_23,&g_42.f2}},{{&l_107,&l_115.f2,(void*)0,&l_115.f2},{(void*)0,&l_115.f2,(void*)0,&g_42.f2},{&l_107,(void*)0,(void*)0,&l_107},{&l_107,&g_23,(void*)0,&l_115.f2}},{{&l_107,&l_107,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0},{&l_107,&l_107,&g_23,&l_115.f2},{&g_42.f2,&g_23,(void*)0,&l_107}},{{&g_42.f2,(void*)0,&g_23,&g_42.f2},{&l_107,&l_115.f2,(void*)0,&l_115.f2},{(void*)0,&l_115.f2,(void*)0,&g_42.f2},{&l_107,(void*)0,(void*)0,&g_42.f2}},{{&l_115.f2,&l_107,(void*)0,&g_23},{&g_42.f2,&l_115.f2,&l_107,&l_107},{&l_107,(void*)0,&g_23,&l_107},{&l_115.f2,&l_115.f2,(void*)0,&g_23}},{{(void*)0,&l_107,&l_107,&g_42.f2},{(void*)0,(void*)0,(void*)0,(void*)0},{&l_115.f2,&g_23,&g_23,&g_23},{&l_107,&g_23,&l_107,(void*)0}},{{&g_42.f2,(void*)0,(void*)0,&g_42.f2},{&l_115.f2,&l_107,(void*)0,&g_23},{&g_42.f2,&l_115.f2,&l_107,&l_107},{&l_107,(void*)0,&g_23,&l_107}},{{&l_115.f2,&l_115.f2,(void*)0,&g_23},{(void*)0,&l_107,&l_107,&g_42.f2},{(void*)0,(void*)0,(void*)0,(void*)0},{&l_115.f2,&g_23,&g_23,&g_23}}}; + int8_t *l_118 = &l_106; + union U2 l_121 = {0xF3683EEDL}; + uint32_t l_123 = 0x382ABCCDL; + int32_t *l_131 = &l_104; + int i, j, k; + l_107--; + l_101 &= ((safe_mod_func_int8_t_s_s((*p_46), (-1L))) == func_50(l_112, l_99, (safe_sub_func_int16_t_s_s(((0xD7L ^ (func_50(&l_99, g_42.f3, (((*l_118) = ((((g_117 |= (func_50(&l_102[2], (g_78 , g_23), (*g_69), &l_100, l_115) > g_42.f2)) , p_45) || 0x8DL) <= (-1L))) , l_119[2]), &l_101, l_120) , l_115.f2)) && 65535UL), 0x1D2AL)), &l_93, l_121)); + if (p_44) + { /* block id: 50 */ + int8_t l_122 = 1L; + union U2 *l_127[5] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + union U2 **l_126 = &l_127[3]; + int32_t *l_129 = &l_102[2]; + int32_t *l_130 = &l_104; + int32_t *l_132 = &l_101; + int i; + l_123--; + (*l_126) = &g_42; + return l_134; + } + else + { /* block id: 54 */ + uint16_t l_135 = 65535UL; + int32_t l_138 = (-1L); + if ((0L == 1L)) + { /* block id: 55 */ + for (l_98 = 5; (l_98 >= 1); l_98 -= 1) + { /* block id: 58 */ + int i; + if (l_119[l_98]) + break; + } + ++l_135; + } + else + { /* block id: 62 */ + int8_t l_142[10][6][4] = {{{0x71L,(-2L),0xA5L,0x84L},{(-9L),(-2L),0x0DL,1L},{0x80L,0L,0x3EL,5L},{0x71L,1L,9L,1L},{0x97L,(-4L),0x4CL,0x5CL},{0x45L,0x38L,0x71L,0xF5L}},{{0xA5L,0xA5L,1L,1L},{0L,0L,0x97L,(-1L)},{0x85L,0xBBL,0xE4L,0x3EL},{6L,0L,1L,0xE4L},{(-8L),0L,5L,0x3EL},{0L,0xBBL,(-1L),(-1L)}},{{0x4CL,0L,(-1L),1L},{0x84L,0xA5L,(-2L),0x71L},{(-1L),0x6FL,6L,8L},{1L,0x9DL,0x83L,0xFBL},{0L,0xDAL,(-2L),0L},{0x85L,0xF9L,1L,0xDAL}},{{0x18L,7L,0x4CL,0x83L},{0x78L,0x16L,(-2L),0x3EL},{0L,0x6DL,0x72L,0L},{1L,1L,(-1L),(-1L)},{0L,0x97L,(-2L),(-8L)},{0xA4L,(-1L),0x18L,0xA4L}},{{0x4CL,0xA5L,0x25L,0x97L},{1L,0xDAL,5L,0x31L},{9L,1L,0x83L,0x38L},{6L,0x84L,0x0DL,0x97L},{0x78L,1L,0x97L,0xDAL},{7L,(-1L),0x6FL,(-1L)}},{{0x1CL,(-8L),0x34L,0xB9L},{0x3EL,0x16L,1L,0x16L},{7L,0x34L,(-1L),0x31L},{0x8BL,(-1L),0x6FL,(-1L)},{(-1L),0x9DL,(-3L),1L},{(-1L),0L,0x6FL,0x78L}},{{0x8BL,1L,(-1L),9L},{7L,0L,1L,0x71L},{0x3EL,0x0DL,0x34L,0x85L},{1L,8L,0x0DL,0x6DL},{0x3EL,1L,(-7L),7L},{0x84L,1L,0x8BL,0x31L}},{{(-1L),0x16L,(-1L),0xBBL},{0L,0x97L,0x15L,0x38L},{0x97L,1L,0x6FL,0L},{0xE4L,0x3EL,0L,0x6DL},{0L,0x38L,0x5CL,0x78L},{0L,0x0DL,0L,0x03L}},{{0L,0x39L,0x18L,9L},{0x3EL,0L,(-9L),0xF8L},{0x84L,0L,0xE4L,0L},{0L,1L,0x6DL,(-1L)},{0xA4L,(-8L),(-9L),0x38L},{0xA5L,0x34L,(-1L),0x97L}},{{0x15L,1L,(-7L),0x1CL},{0L,(-1L),9L,0L},{(-1L),0x80L,0x80L,(-1L)},{1L,0x4CL,0x0BL,(-4L)},{1L,0L,0x85L,0xE4L},{(-1L),0x4FL,0x15L,0xE4L}}}; + int i, j, k; + if (((*g_60) = (**g_95))) + { /* block id: 64 */ + (*l_134) = (p_44 , func_50((**l_96), (*l_133), l_135, (**l_96), l_120)); + l_138 = ((l_133 != (void*)0) & p_45); + } + else + { /* block id: 67 */ + int32_t *l_141[6] = {&l_102[1],&l_102[1],&l_102[1],&l_102[1],&l_102[1],&l_102[1]}; + int i; + (*l_131) &= (*l_134); + (***l_96) = ((safe_rshift_func_uint8_t_u_s((p_44 = (((void*)0 == l_141[2]) , (l_142[0][3][1] = (*l_112)))), (*g_69))) || (-8L)); + (*l_134) |= p_44; + } + } + for (l_107 = 0; (l_107 <= 37); l_107++) + { /* block id: 77 */ + (**g_95) = (((p_44++) , (&g_95 == (void*)0)) & (*g_69)); + for (l_93 = 0; l_93 < 6; l_93 += 1) + { + l_119[l_93] = 0xC6L; + } + } + for (l_100 = 4; (l_100 >= 0); l_100 -= 1) + { /* block id: 84 */ + int32_t *l_147 = &l_104; + int32_t *l_148 = (void*)0; + return l_148; + } + (*g_95) = (**l_96); + } + for (g_117 = 0; (g_117 != (-14)); g_117--) + { /* block id: 91 */ + uint32_t l_151 = 0x6CEBD2D5L; + int32_t l_154 = 0x9DA40672L; + ++l_151; + l_154 = (p_45 >= (*l_133)); + } + } + else + { /* block id: 95 */ + return (*g_95); + } + } + (*l_71) |= (-1L); + return l_73[2][6]; +} + + +/* ------------------------------------------ */ +/* + * reads : g_42.f3 + * writes: g_60 + */ +static uint16_t func_50(int32_t * p_51, uint16_t p_52, int8_t p_53, int32_t * p_54, union U2 p_55) +{ /* block id: 8 */ + for (p_53 = 0; (p_53 < (-11)); p_53 = safe_sub_func_uint8_t_u_u(p_53, 9)) + { /* block id: 11 */ + int32_t **l_67 = (void*)0; + int32_t **l_68 = &g_60; + (*l_68) = p_54; + } + return g_42.f3; +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: + */ +static int32_t * func_56(int8_t * p_57, int32_t * p_58) +{ /* block id: 5 */ + int32_t **l_62 = (void*)0; + int32_t ***l_63 = &l_62; + (*l_63) = l_62; + return p_58; +} + + + + +/* ---------------------------------------- */ +int main (int argc, char* argv[]) +{ + int i, j, k; + int print_hash_value = 0; + if (argc == 2 && strcmp(argv[1], "1") == 0) print_hash_value = 1; + platform_main_begin(); + crc32_gentab(); + func_1(); + transparent_crc(g_23, "g_23", print_hash_value); + transparent_crc(g_25, "g_25", print_hash_value); + transparent_crc(g_34, "g_34", print_hash_value); + transparent_crc(g_42.f2, "g_42.f2", print_hash_value); + for (i = 0; i < 8; i++) + { + for (j = 0; j < 6; j++) + { + for (k = 0; k < 4; k++) + { + transparent_crc(g_61[i][j][k], "g_61[i][j][k]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + transparent_crc(g_70, "g_70", print_hash_value); + transparent_crc(g_78, "g_78", print_hash_value); + transparent_crc(g_117, "g_117", print_hash_value); + transparent_crc(g_163.f0, "g_163.f0", print_hash_value); + transparent_crc(g_163.f1, "g_163.f1", print_hash_value); + for (i = 0; i < 7; i++) + { + transparent_crc(g_165[i], "g_165[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + for (i = 0; i < 4; i++) + { + for (j = 0; j < 8; j++) + { + for (k = 0; k < 3; k++) + { + transparent_crc(g_171[i][j][k], "g_171[i][j][k]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + transparent_crc(g_218, "g_218", print_hash_value); + transparent_crc(g_234, "g_234", print_hash_value); + transparent_crc(g_246, "g_246", print_hash_value); + transparent_crc(g_255, "g_255", print_hash_value); + transparent_crc(g_380, "g_380", print_hash_value); + transparent_crc(g_387, "g_387", print_hash_value); + for (i = 0; i < 4; i++) + { + for (j = 0; j < 1; j++) + { + transparent_crc(g_405[i][j].f0, "g_405[i][j].f0", print_hash_value); + transparent_crc(g_405[i][j].f1, "g_405[i][j].f1", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_471, "g_471", print_hash_value); + transparent_crc(g_555, "g_555", print_hash_value); + for (i = 0; i < 9; i++) + { + transparent_crc(g_556[i], "g_556[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value); + return 0; +} + +/************************ statistics ************************* +XXX max struct depth: 0 +breakdown: + depth: 0, occurrence: 231 +XXX total union variables: 28 + +XXX non-zero bitfields defined in structs: 0 +XXX zero bitfields defined in structs: 0 +XXX const bitfields defined in structs: 0 +XXX volatile bitfields defined in structs: 0 +XXX structs with bitfields in the program: 0 +breakdown: +XXX full-bitfields structs in the program: 0 +breakdown: +XXX times a bitfields struct's address is taken: 0 +XXX times a bitfields struct on LHS: 0 +XXX times a bitfields struct on RHS: 0 +XXX times a single bitfield on LHS: 0 +XXX times a single bitfield on RHS: 0 + +XXX max expression depth: 45 +breakdown: + depth: 1, occurrence: 161 + depth: 2, occurrence: 47 + depth: 3, occurrence: 4 + depth: 4, occurrence: 3 + depth: 5, occurrence: 2 + depth: 6, occurrence: 1 + depth: 7, occurrence: 2 + depth: 10, occurrence: 2 + depth: 11, occurrence: 1 + depth: 12, occurrence: 1 + depth: 14, occurrence: 2 + depth: 15, occurrence: 1 + depth: 16, occurrence: 2 + depth: 17, occurrence: 1 + depth: 18, occurrence: 1 + depth: 19, occurrence: 1 + depth: 20, occurrence: 1 + depth: 25, occurrence: 1 + depth: 27, occurrence: 1 + depth: 28, occurrence: 1 + depth: 30, occurrence: 1 + depth: 34, occurrence: 1 + depth: 45, occurrence: 1 + +XXX total number of pointers: 222 + +XXX times a variable address is taken: 413 +XXX times a pointer is dereferenced on RHS: 116 +breakdown: + depth: 1, occurrence: 105 + depth: 2, occurrence: 10 + depth: 3, occurrence: 1 +XXX times a pointer is dereferenced on LHS: 91 +breakdown: + depth: 1, occurrence: 89 + depth: 2, occurrence: 1 + depth: 3, occurrence: 1 +XXX times a pointer is compared with null: 9 +XXX times a pointer is compared with address of another variable: 1 +XXX times a pointer is compared with another pointer: 3 +XXX times a pointer is qualified to be dereferenced: 2461 + +XXX max dereference level: 3 +breakdown: + level: 0, occurrence: 0 + level: 1, occurrence: 541 + level: 2, occurrence: 44 + level: 3, occurrence: 6 +XXX number of pointers point to pointers: 37 +XXX number of pointers point to scalars: 174 +XXX number of pointers point to structs: 0 +XXX percent of pointers has null in alias set: 30.2 +XXX average alias set size: 1.65 + +XXX times a non-volatile is read: 686 +XXX times a non-volatile is write: 318 +XXX times a volatile is read: 0 +XXX times read thru a pointer: 0 +XXX times a volatile is write: 0 +XXX times written thru a pointer: 0 +XXX times a volatile is available for access: 0 +XXX percentage of non-volatile access: 100 + +XXX forward jumps: 1 +XXX backward jumps: 2 + +XXX stmts: 167 +XXX max block depth: 5 +breakdown: + depth: 0, occurrence: 32 + depth: 1, occurrence: 19 + depth: 2, occurrence: 34 + depth: 3, occurrence: 34 + depth: 4, occurrence: 23 + depth: 5, occurrence: 25 + +XXX percentage a fresh-made variable is used: 17.7 +XXX percentage an existing variable is used: 82.3 +********************* end of statistics **********************/ + diff --git a/tests/fuzz/3.c.txt b/tests/fuzz/3.c.txt new file mode 100644 index 0000000000000..ab401bb172bbf --- /dev/null +++ b/tests/fuzz/3.c.txt @@ -0,0 +1 @@ +checksum = EE4B2FFC diff --git a/tests/runner.py b/tests/runner.py index ce5f346ad7656..1f4f67d768dbd 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -7254,10 +7254,18 @@ def test_fuzz(self): Building.COMPILER_TEST_OPTS += ['-I' + path_from_root('tests', 'fuzz')] - for name in glob.glob(path_from_root('tests', 'fuzz', '*.c')): - print name - self.do_run(open(path_from_root('tests', 'fuzz', name)).read(), - open(path_from_root('tests', 'fuzz', name + '.txt')).read(), force_c=True) + def run_all(x): + print x + for name in glob.glob(path_from_root('tests', 'fuzz', '*.c')): + print name + self.do_run(open(path_from_root('tests', 'fuzz', name)).read(), + open(path_from_root('tests', 'fuzz', name + '.txt')).read(), force_c=True) + + run_all('normal') + + self.emcc_args += ['--llvm-lto', '1'] + + run_all('lto') # Autodebug the code def do_autodebug(self, filename): From c022f1839b955129527085f13e74805febf0fa66 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 21:53:59 -0500 Subject: [PATCH 256/326] limit memory growth to 1GB --- src/preamble.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/preamble.js b/src/preamble.js index 0bfeda1b763be..8bde7284f28c5 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -566,6 +566,7 @@ function enlargeMemory() { while (TOTAL_MEMORY <= STATICTOP) { // Simple heuristic. Override enlargeMemory() if your program has something more optimal for it TOTAL_MEMORY = alignMemoryPage(2*TOTAL_MEMORY); } + assert(TOTAL_MEMORY <= Math.pow(2, 30)); // 2^30==1GB is a practical maximum - 2^31 is already close to possible negative numbers etc. #if USE_TYPED_ARRAYS == 1 var oldIHEAP = IHEAP; Module['HEAP'] = Module['IHEAP'] = HEAP = IHEAP = new Int32Array(TOTAL_MEMORY); From 86c668e53bfd657b6164b9821fc58ba23c23cebc Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 21:57:47 -0500 Subject: [PATCH 257/326] assert on emscript child processes returning forwarded data, if not, they may have aborted prematurely --- emscripten.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/emscripten.py b/emscripten.py index 1db09a80263f5..8bd1b58aa643f 100755 --- a/emscripten.py +++ b/emscripten.py @@ -242,6 +242,8 @@ def load_from_cache(chunk): if jcache: outputs += cached_outputs # TODO: preserve order outputs = [output.split('//FORWARDED_DATA:') for output in outputs] + for output in outputs: + assert len(output) == 2, 'Did not receive forwarded data in an output - process failed? We only got: ' + output[1] if DEBUG: print >> sys.stderr, ' emscript: phase 2 took %s seconds' % (time.time() - t) if DEBUG: t = time.time() @@ -310,7 +312,7 @@ def blockaddrsize(js): post_file = temp_files.get('.post.ll').name open(post_file, 'w').write('\n') # no input, just processing of forwarded data out = shared.run_js(compiler, shared.COMPILER_ENGINE, [settings_file, post_file, 'post', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) - post, last_forwarded_data = out.split('//FORWARDED_DATA:') + post, last_forwarded_data = out.split('//FORWARDED_DATA:') # if this fails, perhaps the process failed prior to printing forwarded data? last_forwarded_json = json.loads(last_forwarded_data) if settings.get('ASM_JS'): From 2a4ac40341c5380228812180a09343dd787bad8b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 23:17:29 -0500 Subject: [PATCH 258/326] improve c autodebugger --- tools/autodebugger_c.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/autodebugger_c.py b/tools/autodebugger_c.py index 5d41faf00354e..54a4d6910cbe2 100644 --- a/tools/autodebugger_c.py +++ b/tools/autodebugger_c.py @@ -21,9 +21,13 @@ if m and (' if ' not in lines[i-1] or '{' in lines[i-1]) and \ (' if ' not in lines[i+1] or '{' in lines[i+1]) and \ (' else' not in lines[i-1] or '{' in lines[i-1]) and \ - (' else' not in lines[i+1] or '{' in lines[i+1]): - var = m.groups(1)[0].rstrip().split(' ')[-1] - lines[i] += ''' printf("%s:%d:%s=%%d\\n", %s);''' % (filename, i+1, var, var) + (' else' not in lines[i+1] or '{' in lines[i+1]) and \ + (' for' not in lines[i-1]) and \ + ('struct' not in lines[i]): + raw = m.groups(1)[0].rstrip() + var = raw.split(' ')[-1] + if ' ' in raw and '[' in var: continue + lines[i] += ''' printf("%s:%d:%s=%%d\\n", (int)%s);''' % (filename, i+1, var, var) f = open(filename, 'w') f.write('\n'.join(lines)) From 2be0fae9affd2cd17373909deba7990941c318a3 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Fri, 1 Mar 2013 23:18:10 -0500 Subject: [PATCH 259/326] do not use packed structs in fuzzer, we don't really support that --- tests/fuzz/csmith_driver.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index be81cea7048e1..bba3c49162572 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -30,11 +30,13 @@ print 'Tried %d, notes: %s' % (tried, notes) tried += 1 print '1) Generate C' - shared.execute([CSMITH, '--no-volatiles', '--no-math64'], stdout=open(filename + '.c', 'w')) + shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--no-packed-struct'] + + ['--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], + stdout=open(filename + '.c', 'w')) print '2) Compile natively' shared.try_delete(filename) - shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename] + CSMITH_CFLAGS, stderr=PIPE) + shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename] + CSMITH_CFLAGS, stderr=PIPE) # + shared.EMSDK_OPTS assert os.path.exists(filename) print '3) Run natively' try: @@ -71,7 +73,7 @@ def try_js(args): if not ok: print "EMSCRIPTEN BUG" notes['embug'] += 1 - continue #break + break #if not ok: # try: # finally, try with safe heap. if that is triggered, this is nonportable code almost certainly # try_js(['-s', 'SAFE_HEAP=1']) @@ -99,4 +101,3 @@ def try_js(args): assert js2 == correct, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js2.split('\n'), fromfile='expected', tofile='actual')]) + 'ODIN FAIL' print 'odin ok' - From 46f3b8aa348a586a01fca22511d91c6aa5407965 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 00:05:17 -0500 Subject: [PATCH 260/326] commented-out debugging stuff --- tools/shared.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/shared.py b/tools/shared.py index 10e267a71065b..aca0677d44bf9 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -388,6 +388,9 @@ def clean_temp(): else: EMSDK_OPTS = [] +#print >> sys.stderr, 'SDK opts', ' '.join(EMSDK_OPTS) +#print >> sys.stderr, 'Compiler opts', ' '.join(COMPILER_OPTS) + # Engine tweaks try: From 591b5480c7cc59e86e485d94365393557af8240b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 00:05:43 -0500 Subject: [PATCH 261/326] fuzz through bytecode, so the native build is 32-bit even on 64-bit systems, like the js build --- tests/fuzz/csmith_driver.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index bba3c49162572..ea50e7dd6eb34 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -4,7 +4,7 @@ Runs csmith, a C fuzzer, and looks for bugs ''' -import os, sys, difflib +import os, sys, difflib, shutil from subprocess import Popen, PIPE, STDOUT sys.path += [os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'tools')] @@ -36,7 +36,11 @@ print '2) Compile natively' shared.try_delete(filename) - shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename] + CSMITH_CFLAGS, stderr=PIPE) # + shared.EMSDK_OPTS + #shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename] + CSMITH_CFLAGS, stderr=PIPE) # + shared.EMSDK_OPTS + shared.execute([shared.CLANG_CC, '-O2', '-emit-llvm', '-c', '-Xclang', '-triple=i386-pc-linux-gnu', filename + '.c', '-o', filename + '.bc'] + CSMITH_CFLAGS + shared.EMSDK_OPTS, stderr=PIPE) + shared.execute([shared.path_from_root('tools', 'nativize_llvm.py'), filename + '.bc'], stdout=PIPE, stderr=PIPE) + shutil.move(filename + '.bc.run', filename) + assert os.path.exists(filename) print '3) Run natively' try: From 276325e440f554751afa96f581c180f96474b435 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 00:19:26 -0500 Subject: [PATCH 262/326] notice segfaults in native fuzz builds --- tests/fuzz/csmith_driver.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index ea50e7dd6eb34..a61dcc9294ae7 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -45,6 +45,7 @@ print '3) Run natively' try: correct = shared.timeout_run(Popen([filename], stdout=PIPE, stderr=PIPE), 3) + if 'Segmentation fault' in correct or len(correct) < 10: raise Exception('segfault') except Exception, e: print 'Failed or infinite looping in native, skipping', e notes['invalid'] += 1 From ab74dbd46dad7a726a817f97d9c4a548e657f168 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 00:43:28 -0500 Subject: [PATCH 263/326] fuzz both a native and a native-through-llvm build, in hopes of avoiding bugs in both --- tests/fuzz/csmith_driver.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index a61dcc9294ae7..404324a2a0e75 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -36,16 +36,16 @@ print '2) Compile natively' shared.try_delete(filename) - #shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename] + CSMITH_CFLAGS, stderr=PIPE) # + shared.EMSDK_OPTS + shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename + '1'] + CSMITH_CFLAGS, stderr=PIPE) # + shared.EMSDK_OPTS shared.execute([shared.CLANG_CC, '-O2', '-emit-llvm', '-c', '-Xclang', '-triple=i386-pc-linux-gnu', filename + '.c', '-o', filename + '.bc'] + CSMITH_CFLAGS + shared.EMSDK_OPTS, stderr=PIPE) shared.execute([shared.path_from_root('tools', 'nativize_llvm.py'), filename + '.bc'], stdout=PIPE, stderr=PIPE) - shutil.move(filename + '.bc.run', filename) - - assert os.path.exists(filename) + shutil.move(filename + '.bc.run', filename + '2') print '3) Run natively' try: - correct = shared.timeout_run(Popen([filename], stdout=PIPE, stderr=PIPE), 3) - if 'Segmentation fault' in correct or len(correct) < 10: raise Exception('segfault') + correct1 = shared.timeout_run(Popen([filename + '1'], stdout=PIPE, stderr=PIPE), 3) + if 'Segmentation fault' in correct1 or len(correct1) < 10: raise Exception('segfault') + correct2 = shared.timeout_run(Popen([filename + '2'], stdout=PIPE, stderr=PIPE), 3) + if 'Segmentation fault' in correct2 or len(correct2) < 10: raise Exception('segfault') except Exception, e: print 'Failed or infinite looping in native, skipping', e notes['invalid'] += 1 @@ -60,7 +60,7 @@ def try_js(args): assert os.path.exists(filename + '.js') print '(run)' js = shared.run_js(filename + '.js', stderr=PIPE, engine=engine1, check_timeout=True) - assert correct == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) + assert correct1 == js or correct2 == js, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct1.split('\n'), js.split('\n'), fromfile='expected', tofile='actual')]) # Try normally, then try unaligned because csmith does generate nonportable code that requires x86 alignment ok = False @@ -103,6 +103,6 @@ def try_js(args): assert 'warning: Successfully compiled asm.js code' in js2, 'must validate' js2 = js2.replace('\nwarning: Successfully compiled asm.js code\n', '') - assert js2 == correct, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct.split('\n'), js2.split('\n'), fromfile='expected', tofile='actual')]) + 'ODIN FAIL' + assert js2 == correct1 or js2 == correct2, ''.join([a.rstrip()+'\n' for a in difflib.unified_diff(correct1.split('\n'), js2.split('\n'), fromfile='expected', tofile='actual')]) + 'ODIN FAIL' print 'odin ok' From 80200fb5de158f265b76bcf4f99d2c7769e27b12 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 15:43:38 -0800 Subject: [PATCH 264/326] fix memset bug --- src/library.js | 2 +- tests/fuzz/4.c | 216 +++++++++++++++++++++++++++++++++++++++++++++ tests/fuzz/4.c.txt | 1 + 3 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 tests/fuzz/4.c create mode 100644 tests/fuzz/4.c.txt diff --git a/src/library.js b/src/library.js index 7f1774410275f..83d135ee23080 100644 --- a/src/library.js +++ b/src/library.js @@ -4314,7 +4314,7 @@ LibraryManager.library = { ptr = ptr|0; value = value|0; num = num|0; var stop = 0, value4 = 0, stop4 = 0, unaligned = 0; stop = (ptr + num)|0; - if (num|0 >= {{{ SEEK_OPTIMAL_ALIGN_MIN }}}) { + if ((num|0) >= {{{ SEEK_OPTIMAL_ALIGN_MIN }}}) { // This is unaligned, but quite large, so work hard to get to aligned settings unaligned = ptr & 3; value4 = value | (value << 8) | (value << 16) | (value << 24); diff --git a/tests/fuzz/4.c b/tests/fuzz/4.c new file mode 100644 index 0000000000000..01949b54b466f --- /dev/null +++ b/tests/fuzz/4.c @@ -0,0 +1,216 @@ +/* + * This is a RANDOMLY GENERATED PROGRAM. + * + * Generator: csmith 2.2.0 + * Git version: a8697aa + * Options: --no-volatiles --no-math64 --no-packed-struct --max-block-depth 2 --max-block-size 2 --max-expr-complexity 2 --max-funcs 2 + * Seed: 3993484092 + */ + +#include "csmith.h" + + +static long __undefined; + +/* --- Struct/Union Declarations --- */ +struct S0 { + int16_t f0; + const int8_t f1; + int32_t f2; + const uint8_t f3; + unsigned f4 : 27; + uint32_t f5; + const int32_t f6; + int8_t f7; + uint32_t f8; +}; + +/* --- GLOBAL VARIABLES --- */ +static int8_t g_5[8] = {0x8EL,0x8EL,0x8EL,0x8EL,0x8EL,0x8EL,0x8EL,0x8EL}; +static int8_t *g_4 = &g_5[7]; +static int32_t g_6[4][10] = {{0x158018D9L,1L,0L,0xA7EF5D87L,0xA7EF5D87L,0L,1L,0x158018D9L,0x158018D9L,1L},{0x158018D9L,0xA7EF5D87L,1L,1L,0xA7EF5D87L,0x158018D9L,0L,0L,0x158018D9L,0xA7EF5D87L},{0xA7EF5D87L,1L,1L,0xA7EF5D87L,0x158018D9L,0L,0L,0x158018D9L,0xA7EF5D87L,1L},{0xA7EF5D87L,0xA7EF5D87L,0L,1L,0x158018D9L,0x158018D9L,1L,0L,0xA7EF5D87L,0xA7EF5D87L}}; +static int32_t g_11 = 0L; +static int32_t g_14[2][4] = {{0x69FF4CAAL,0x69FF4CAAL,0x69FF4CAAL,0x69FF4CAAL},{0x69FF4CAAL,0x69FF4CAAL,0x69FF4CAAL,0x69FF4CAAL}}; +static int32_t *g_13 = &g_14[0][0]; +static int32_t g_21 = 8L; + + +/* --- FORWARD DECLARATIONS --- */ +static uint8_t func_1(void); +static int32_t func_2(int8_t * p_3); + + +/* --- FUNCTIONS --- */ +/* ------------------------------------------ */ +/* + * reads : g_4 g_6 g_11 g_21 g_14 g_5 + * writes: g_6 g_11 g_13 g_14 g_21 g_5 + */ +static uint8_t func_1(void) +{ /* block id: 0 */ + int32_t *l_18 = &g_14[0][0]; + (*l_18) = func_2(g_4); + for (g_11 = 24; (g_11 > 9); g_11 = safe_sub_func_int8_t_s_s(g_11, 8)) + { /* block id: 17 */ + int32_t *l_24 = &g_21; + for (g_21 = (-6); (g_21 >= 8); g_21 = safe_add_func_int16_t_s_s(g_21, 9)) + { /* block id: 20 */ + (*l_18) ^= ((void*)0 == l_24); + (*l_18) = ((*l_24) ^ 1L); + } + for (g_21 = 5; (g_21 >= 0); g_21 -= 1) + { /* block id: 26 */ + const struct S0 l_29[7][5] = {{{0xB1C2L,0x10L,0xA4AECA2AL,0x28L,485,4294967294UL,-1L,0x00L,0x971708C9L},{-5L,0xA5L,0x7FB6F8A3L,0UL,6341,1UL,0xA1BBDB81L,-1L,4294967286UL},{2L,7L,0x396434D1L,0xEAL,9469,0xEFE6B3E9L,0x2DA72DF2L,0x08L,9UL},{0x32E7L,-1L,-4L,5UL,7688,4294967292UL,0L,7L,7UL},{-5L,0xA5L,0x7FB6F8A3L,0UL,6341,1UL,0xA1BBDB81L,-1L,4294967286UL}},{{0xC6C8L,0xCDL,-8L,0xD2L,1855,0x1A504A86L,0x6A6C3430L,0L,0x372A7181L},{-2L,0x94L,-1L,255UL,5118,0UL,3L,0xBDL,2UL},{-10L,0x93L,1L,1UL,3983,4294967288UL,0xC0DB1B79L,7L,4294967293UL},{0x254FL,0xD2L,1L,1UL,8061,0xDF93C581L,0xDA77236CL,0x42L,1UL},{-2L,0x94L,-1L,255UL,5118,0UL,3L,0xBDL,2UL}},{{3L,0xC4L,0x293E9FC6L,255UL,4667,2UL,0x4CA9A92EL,8L,6UL},{0xB1C2L,0x10L,0xA4AECA2AL,0x28L,485,4294967294UL,-1L,0x00L,0x971708C9L},{2L,7L,0x396434D1L,0xEAL,9469,0xEFE6B3E9L,0x2DA72DF2L,0x08L,9UL},{-5L,0xA5L,0x7FB6F8A3L,0UL,6341,1UL,0xA1BBDB81L,-1L,4294967286UL},{-5L,0xA5L,0x7FB6F8A3L,0UL,6341,1UL,0xA1BBDB81L,-1L,4294967286UL}},{{-10L,0x93L,1L,1UL,3983,4294967288UL,0xC0DB1B79L,7L,4294967293UL},{0xC6C8L,0xCDL,-8L,0xD2L,1855,0x1A504A86L,0x6A6C3430L,0L,0x372A7181L},{0xAF73L,7L,0x2A224D52L,0x10L,5709,0UL,0x3A9A7891L,-1L,0x7C6C5FB3L},{-2L,0x94L,-1L,255UL,5118,0UL,3L,0xBDL,2UL},{-2L,0x94L,-1L,255UL,5118,0UL,3L,0xBDL,2UL}},{{2L,7L,0x396434D1L,0xEAL,9469,0xEFE6B3E9L,0x2DA72DF2L,0x08L,9UL},{3L,0xC4L,0x293E9FC6L,255UL,4667,2UL,0x4CA9A92EL,8L,6UL},{0x32E7L,-1L,-4L,5UL,7688,4294967292UL,0L,7L,7UL},{0xB1C2L,0x10L,0xA4AECA2AL,0x28L,485,4294967294UL,-1L,0x00L,0x971708C9L},{0xB1C2L,0x10L,0xA4AECA2AL,0x28L,485,4294967294UL,-1L,0x00L,0x971708C9L}},{{0xAF73L,7L,0x2A224D52L,0x10L,5709,0UL,0x3A9A7891L,-1L,0x7C6C5FB3L},{0xC6C8L,0xCDL,-8L,0xD2L,1855,0x1A504A86L,0x6A6C3430L,0L,0x372A7181L},{0x254FL,0xD2L,1L,1UL,8061,0xDF93C581L,0xDA77236CL,0x42L,1UL},{0xC6C8L,0xCDL,-8L,0xD2L,1855,0x1A504A86L,0x6A6C3430L,0L,0x372A7181L},{0xC6C8L,0xCDL,-8L,0xD2L,1855,0x1A504A86L,0x6A6C3430L,0L,0x372A7181L}},{{0x32E7L,-1L,-4L,5UL,7688,4294967292UL,0L,7L,7UL},{3L,0xC4L,0x293E9FC6L,255UL,4667,2UL,0x4CA9A92EL,8L,6UL},{-5L,0xA5L,0x7FB6F8A3L,0UL,6341,1UL,0xA1BBDB81L,-1L,4294967286UL},{0xB1C2L,0x10L,0xA4AECA2AL,0x28L,485,4294967294UL,-1L,0x00L,0x971708C9L},{3L,0xC4L,0x293E9FC6L,255UL,4667,2UL,0x4CA9A92EL,8L,6UL}}}; + int i, j; + (*l_18) = (safe_mod_func_uint8_t_u_u((((safe_mul_func_int8_t_s_s((g_5[g_21] = (*g_4)), 0xFDL)) | g_14[1][2]) <= (*l_18)), 254UL)); + (*l_18) = (((l_29[4][2] , (void*)0) != &g_14[0][0]) <= l_29[4][2].f1); + } + } + return (*l_18); +} + + +/* ------------------------------------------ */ +/* + * reads : g_6 g_11 + * writes: g_6 g_11 g_13 + */ +static int32_t func_2(int8_t * p_3) +{ /* block id: 1 */ + uint32_t l_15[4][3][4] = {{{0x1943EC3EL,8UL,1UL,0x58E7EA1BL},{0x1943EC3EL,2UL,0x58E7EA1BL,4294967292UL},{0UL,1UL,0UL,4294967293UL}},{{0x4898D08FL,1UL,0x4898D08FL,4294967292UL},{0UL,0x1943EC3EL,4294967292UL,0x4898D08FL},{2UL,4294967293UL,4294967292UL,0UL}},{{0UL,0x1943EC3EL,8UL,0x1943EC3EL},{4294967292UL,0x58E7EA1BL,0x1943EC3EL,0x1943EC3EL},{0x1943EC3EL,0x58E7EA1BL,0x4898D08FL,2UL}},{{1UL,0UL,8UL,8UL},{0x4898D08FL,1UL,8UL,0UL},{0x58E7EA1BL,4294967292UL,0x58E7EA1BL,0x1943EC3EL}}}; + int i, j, k; + for (g_6[2][7] = (-24); (g_6[2][7] >= (-7)); g_6[2][7] = safe_add_func_uint32_t_u_u(g_6[2][7], 1)) + { /* block id: 4 */ + int32_t *l_9 = (void*)0; + int32_t *l_10 = &g_11; + (*l_10) &= 0x1B35D569L; + for (g_11 = 0; (g_11 <= 7); g_11 += 1) + { /* block id: 8 */ + int32_t **l_12[6] = {&l_10,&l_10,&l_10,&l_10,&l_10,&l_10}; + int i; + g_13 = l_9; + l_15[1][2][0]--; + } + } + return l_15[0][1][1]; +} + + + + +/* ---------------------------------------- */ +int main (int argc, char* argv[]) +{ + int i, j; + int print_hash_value = 0; + if (argc == 2 && strcmp(argv[1], "1") == 0) print_hash_value = 1; + platform_main_begin(); + crc32_gentab(); + func_1(); + for (i = 0; i < 8; i++) + { + transparent_crc(g_5[i], "g_5[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + for (i = 0; i < 4; i++) + { + for (j = 0; j < 10; j++) + { + transparent_crc(g_6[i][j], "g_6[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_11, "g_11", print_hash_value); + for (i = 0; i < 2; i++) + { + for (j = 0; j < 4; j++) + { + transparent_crc(g_14[i][j], "g_14[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_21, "g_21", print_hash_value); + platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value); + return 0; +} + +/************************ statistics ************************* +XXX max struct depth: 1 +breakdown: + depth: 0, occurrence: 4 + depth: 1, occurrence: 1 +XXX total union variables: 0 + +XXX non-zero bitfields defined in structs: 1 +XXX zero bitfields defined in structs: 0 +XXX const bitfields defined in structs: 0 +XXX volatile bitfields defined in structs: 0 +XXX structs with bitfields in the program: 1 +breakdown: + indirect level: 0, occurrence: 1 +XXX full-bitfields structs in the program: 0 +breakdown: +XXX times a bitfields struct's address is taken: 0 +XXX times a bitfields struct on LHS: 0 +XXX times a bitfields struct on RHS: 1 +XXX times a single bitfield on LHS: 0 +XXX times a single bitfield on RHS: 0 + +XXX max expression depth: 6 +breakdown: + depth: 1, occurrence: 13 + depth: 2, occurrence: 8 + depth: 4, occurrence: 1 + depth: 6, occurrence: 1 + +XXX total number of pointers: 8 + +XXX times a variable address is taken: 8 +XXX times a pointer is dereferenced on RHS: 4 +breakdown: + depth: 1, occurrence: 4 +XXX times a pointer is dereferenced on LHS: 6 +breakdown: + depth: 1, occurrence: 6 +XXX times a pointer is compared with null: 1 +XXX times a pointer is compared with address of another variable: 0 +XXX times a pointer is compared with another pointer: 0 +XXX times a pointer is qualified to be dereferenced: 39 + +XXX max dereference level: 1 +breakdown: + level: 0, occurrence: 0 + level: 1, occurrence: 16 +XXX number of pointers point to pointers: 1 +XXX number of pointers point to scalars: 7 +XXX number of pointers point to structs: 0 +XXX percent of pointers has null in alias set: 25 +XXX average alias set size: 1.12 + +XXX times a non-volatile is read: 20 +XXX times a non-volatile is write: 20 +XXX times a volatile is read: 0 +XXX times read thru a pointer: 0 +XXX times a volatile is write: 0 +XXX times written thru a pointer: 0 +XXX times a volatile is available for access: 0 +XXX percentage of non-volatile access: 100 + +XXX forward jumps: 0 +XXX backward jumps: 0 + +XXX stmts: 15 +XXX max block depth: 2 +breakdown: + depth: 0, occurrence: 5 + depth: 1, occurrence: 4 + depth: 2, occurrence: 6 + +XXX percentage a fresh-made variable is used: 23.8 +XXX percentage an existing variable is used: 76.2 +FYI: the random generator makes assumptions about the integer size. See platform.info for more details. +********************* end of statistics **********************/ + diff --git a/tests/fuzz/4.c.txt b/tests/fuzz/4.c.txt new file mode 100644 index 0000000000000..f27bcce595b6b --- /dev/null +++ b/tests/fuzz/4.c.txt @@ -0,0 +1 @@ +checksum = 157CE2A8 From 0a4bc063c35aa5d70b7aaae72029b16a56432563 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 16:40:52 -0800 Subject: [PATCH 265/326] fix another memset fuzz bug --- src/library.js | 1 + tests/fuzz/5.c | 13 ++++++ tests/fuzz/5.c.txt | 101 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 tests/fuzz/5.c create mode 100644 tests/fuzz/5.c.txt diff --git a/src/library.js b/src/library.js index 83d135ee23080..1676a82c9bf88 100644 --- a/src/library.js +++ b/src/library.js @@ -4316,6 +4316,7 @@ LibraryManager.library = { stop = (ptr + num)|0; if ((num|0) >= {{{ SEEK_OPTIMAL_ALIGN_MIN }}}) { // This is unaligned, but quite large, so work hard to get to aligned settings + value = value & 0xff; unaligned = ptr & 3; value4 = value | (value << 8) | (value << 16) | (value << 24); stop4 = stop & ~3; diff --git a/tests/fuzz/5.c b/tests/fuzz/5.c new file mode 100644 index 0000000000000..a62c18a39c3e4 --- /dev/null +++ b/tests/fuzz/5.c @@ -0,0 +1,13 @@ +#include +#include + +int main(int argc, char **argv) { + printf("argc %d\n", argc); + char buffer[100]; + for (int i = 0; i < 100; i++) buffer[i] = argc*(argc > 10 ? (argc*i) % 3 : (i*i)); + memset(&buffer[10], -114, argc+25); + for(int i = 0; i < 100; i++) printf("%d:%d\n", i, buffer[i]); + //memset 5243040,-114,6,false,6 + return buffer[15]; +} + diff --git a/tests/fuzz/5.c.txt b/tests/fuzz/5.c.txt new file mode 100644 index 0000000000000..0c9d6dcd78ab3 --- /dev/null +++ b/tests/fuzz/5.c.txt @@ -0,0 +1,101 @@ +argc 1 +0:0 +1:1 +2:4 +3:9 +4:16 +5:25 +6:36 +7:49 +8:64 +9:81 +10:-114 +11:-114 +12:-114 +13:-114 +14:-114 +15:-114 +16:-114 +17:-114 +18:-114 +19:-114 +20:-114 +21:-114 +22:-114 +23:-114 +24:-114 +25:-114 +26:-114 +27:-114 +28:-114 +29:-114 +30:-114 +31:-114 +32:-114 +33:-114 +34:-114 +35:-114 +36:16 +37:89 +38:-92 +39:-15 +40:64 +41:-111 +42:-28 +43:57 +44:-112 +45:-23 +46:68 +47:-95 +48:0 +49:97 +50:-60 +51:41 +52:-112 +53:-7 +54:100 +55:-47 +56:64 +57:-79 +58:36 +59:-103 +60:16 +61:-119 +62:4 +63:-127 +64:0 +65:-127 +66:4 +67:-119 +68:16 +69:-103 +70:36 +71:-79 +72:64 +73:-47 +74:100 +75:-7 +76:-112 +77:41 +78:-60 +79:97 +80:0 +81:-95 +82:68 +83:-23 +84:-112 +85:57 +86:-28 +87:-111 +88:64 +89:-15 +90:-92 +91:89 +92:16 +93:-55 +94:-124 +95:65 +96:0 +97:-63 +98:-124 +99:73 From 748dadbc72ae9905585f07bae111c2b29c8d764e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 17:03:33 -0800 Subject: [PATCH 266/326] emit C code size in fuzzer --- tests/fuzz/csmith_driver.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 404324a2a0e75..6e1c0764ac6bf 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -33,6 +33,7 @@ shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--no-packed-struct'] + ['--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], stdout=open(filename + '.c', 'w')) + print '1) Generate C... %.2f K of C source' % (len(open(filename + '.c').read())/1024.) print '2) Compile natively' shared.try_delete(filename) From 92499c33f51a020663f48b02ffdcb5c0721f3020 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 18:16:57 -0800 Subject: [PATCH 267/326] set csmith fuzzer to max --- tests/fuzz/csmith_driver.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 6e1c0764ac6bf..a00a5344f1df2 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -30,8 +30,8 @@ print 'Tried %d, notes: %s' % (tried, notes) tried += 1 print '1) Generate C' - shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--no-packed-struct'] + - ['--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], + shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--no-packed-struct'],# + + #['--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], stdout=open(filename + '.c', 'w')) print '1) Generate C... %.2f K of C source' % (len(open(filename + '.c').read())/1024.) @@ -43,9 +43,9 @@ shutil.move(filename + '.bc.run', filename + '2') print '3) Run natively' try: - correct1 = shared.timeout_run(Popen([filename + '1'], stdout=PIPE, stderr=PIPE), 3) + correct1 = shared.timeout_run(Popen([filename + '1'], stdout=PIPE, stderr=PIPE), 5) if 'Segmentation fault' in correct1 or len(correct1) < 10: raise Exception('segfault') - correct2 = shared.timeout_run(Popen([filename + '2'], stdout=PIPE, stderr=PIPE), 3) + correct2 = shared.timeout_run(Popen([filename + '2'], stdout=PIPE, stderr=PIPE), 5) if 'Segmentation fault' in correct2 or len(correct2) < 10: raise Exception('segfault') except Exception, e: print 'Failed or infinite looping in native, skipping', e From dc5fcfb4de85cb73062008e1ad76c9e7dd0b0efe Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 19:56:47 -0800 Subject: [PATCH 268/326] check in fuzzer if clang differs from clang -O2 --- tests/fuzz/csmith_driver.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index a00a5344f1df2..75ad6e00dbafc 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -41,12 +41,16 @@ shared.execute([shared.CLANG_CC, '-O2', '-emit-llvm', '-c', '-Xclang', '-triple=i386-pc-linux-gnu', filename + '.c', '-o', filename + '.bc'] + CSMITH_CFLAGS + shared.EMSDK_OPTS, stderr=PIPE) shared.execute([shared.path_from_root('tools', 'nativize_llvm.py'), filename + '.bc'], stdout=PIPE, stderr=PIPE) shutil.move(filename + '.bc.run', filename + '2') + shared.execute([shared.CLANG_CC, filename + '.c', '-o', filename + '3'] + CSMITH_CFLAGS, stderr=PIPE) print '3) Run natively' try: correct1 = shared.timeout_run(Popen([filename + '1'], stdout=PIPE, stderr=PIPE), 5) if 'Segmentation fault' in correct1 or len(correct1) < 10: raise Exception('segfault') correct2 = shared.timeout_run(Popen([filename + '2'], stdout=PIPE, stderr=PIPE), 5) if 'Segmentation fault' in correct2 or len(correct2) < 10: raise Exception('segfault') + correct3 = shared.timeout_run(Popen([filename + '3'], stdout=PIPE, stderr=PIPE), 5) + if 'Segmentation fault' in correct3 or len(correct3) < 10: raise Exception('segfault') + if correct1 != correct3: raise Exception('clang opts change result') except Exception, e: print 'Failed or infinite looping in native, skipping', e notes['invalid'] += 1 From 626eaf848b28f7937698e3d63bed0c9a9b71a30f Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 20:07:32 -0800 Subject: [PATCH 269/326] continue looking in fuzzer after a fail --- tests/fuzz/csmith_driver.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 75ad6e00dbafc..3fa58db69f443 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -26,6 +26,8 @@ notes = { 'invalid': 0, 'unaligned': 0, 'embug': 0 } +fails = 0 + while 1: print 'Tried %d, notes: %s' % (tried, notes) tried += 1 @@ -83,7 +85,9 @@ def try_js(args): if not ok: print "EMSCRIPTEN BUG" notes['embug'] += 1 - break + fails += 1 + shutil.copyfile('fuzzcode.c', 'newfail%d.c' % fails) + continue #if not ok: # try: # finally, try with safe heap. if that is triggered, this is nonportable code almost certainly # try_js(['-s', 'SAFE_HEAP=1']) From 3ed696033deb7fb2b9475c4f91c9a9a69a19c583 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 20:38:16 -0800 Subject: [PATCH 270/326] GLImmediate should depend on GLEmulation --- src/library_gl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library_gl.js b/src/library_gl.js index b0bf965034947..4977d2e9fd5e0 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1634,7 +1634,7 @@ var LibraryGL = { // GL Immediate mode $GLImmediate__postset: 'GL.immediate.setupFuncs(); Browser.moduleContextCreatedCallbacks.push(function() { GL.immediate.init() });', - $GLImmediate__deps: ['$Browser', '$GL'], + $GLImmediate__deps: ['$Browser', '$GL', '$GLEmulation'], $GLImmediate: { MAX_TEXTURES: 7, From edb28adc2264aa3db34a406d91e369a8f2ba6eaf Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sat, 2 Mar 2013 20:52:39 -0800 Subject: [PATCH 271/326] more atomic implementations, closes #874 --- src/intertyper.js | 1 + src/jsifier.js | 3 +++ tests/cases/atomicrmw.ll | 1 + 3 files changed, 5 insertions(+) diff --git a/src/intertyper.js b/src/intertyper.js index c1a98354e8f1c..cc0f045d1ed32 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -741,6 +741,7 @@ function intertyper(data, sidePass, baseLineNums) { processItem: function(item) { item.intertype = 'atomic'; if (item.tokens[0].text == 'atomicrmw') { + if (item.tokens[1].text == 'volatile') item.tokens.splice(1, 1); item.op = item.tokens[1].text; item.tokens.splice(1, 1); } else { diff --git a/src/jsifier.js b/src/jsifier.js index 7066f8c510073..ca404258fdb3a 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1204,6 +1204,9 @@ function JSify(data, functionsOnly, givenFunctions) { switch (item.op) { case 'add': return '(tempValue=' + makeGetValue(param1, 0, type) + ',' + makeSetValue(param1, 0, 'tempValue+' + param2, type, null, null, null, null, ',') + ',tempValue)'; case 'sub': return '(tempValue=' + makeGetValue(param1, 0, type) + ',' + makeSetValue(param1, 0, 'tempValue-' + param2, type, null, null, null, null, ',') + ',tempValue)'; + case 'or': return '(tempValue=' + makeGetValue(param1, 0, type) + ',' + makeSetValue(param1, 0, 'tempValue|' + param2, type, null, null, null, null, ',') + ',tempValue)'; + case 'and': return '(tempValue=' + makeGetValue(param1, 0, type) + ',' + makeSetValue(param1, 0, 'tempValue&' + param2, type, null, null, null, null, ',') + ',tempValue)'; + case 'xor': return '(tempValue=' + makeGetValue(param1, 0, type) + ',' + makeSetValue(param1, 0, 'tempValue^' + param2, type, null, null, null, null, ',') + ',tempValue)'; case 'xchg': return '(tempValue=' + makeGetValue(param1, 0, type) + ',' + makeSetValue(param1, 0, param2, type, null, null, null, null, ',') + ',tempValue)'; case 'cmpxchg': { var param3 = finalizeLLVMParameter(item.params[2]); diff --git a/tests/cases/atomicrmw.ll b/tests/cases/atomicrmw.ll index 2f5a4224d1d6f..fe479dce038ed 100644 --- a/tests/cases/atomicrmw.ll +++ b/tests/cases/atomicrmw.ll @@ -13,6 +13,7 @@ entry: %1 = atomicrmw add i32* %t, i32 3 seq_cst, ; [#uses=0 type=i32] [debug line = 21:12] %2 = load i32* %t %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), i32 %0, i32 %2) ; [#uses=0 type=i32] + %3 = atomicrmw volatile add i32* %t, i32 3 seq_cst, ; [#uses=0 type=i32] [debug line = 21:12] ret i32 1 } From 92ab0817911d330ed3b2a641c374180328e9bacf Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 08:02:58 -0800 Subject: [PATCH 272/326] fix error message --- emscripten.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/emscripten.py b/emscripten.py index 8bd1b58aa643f..1fc5f190d1d94 100755 --- a/emscripten.py +++ b/emscripten.py @@ -243,7 +243,7 @@ def load_from_cache(chunk): outputs = [output.split('//FORWARDED_DATA:') for output in outputs] for output in outputs: - assert len(output) == 2, 'Did not receive forwarded data in an output - process failed? We only got: ' + output[1] + assert len(output) == 2, 'Did not receive forwarded data in an output - process failed? We only got: ' + output[0] if DEBUG: print >> sys.stderr, ' emscript: phase 2 took %s seconds' % (time.time() - t) if DEBUG: t = time.time() From 651d79a8c4d53f202f1ccf893be6cdd0cd4774f6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 08:09:55 -0800 Subject: [PATCH 273/326] allow parseArbitraryInt to parse illegal constants --- src/parseTools.js | 2 +- tests/fuzz/7.c | 852 +++++++++++++++++++++++++++++++++++++++++++++ tests/fuzz/7.c.txt | 1 + 3 files changed, 854 insertions(+), 1 deletion(-) create mode 100644 tests/fuzz/7.c create mode 100644 tests/fuzz/7.c.txt diff --git a/src/parseTools.js b/src/parseTools.js index 6a2089ad36f8a..5d3c01798349b 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -692,7 +692,7 @@ function makeCopyI64(value) { function parseArbitraryInt(str, bits) { // We parse the string into a vector of digits, base 10. This is convenient to work on. - assert(bits % 32 == 0 || ('i' + (bits % 32)) in Runtime.INT_TYPES, 'Arbitrary-sized ints must tails that are of legal size'); + assert(bits > 0); // NB: we don't check that the value in str can fit in this amount of bits function str2vec(s) { // index 0 is the highest value var ret = []; diff --git a/tests/fuzz/7.c b/tests/fuzz/7.c new file mode 100644 index 0000000000000..45c0096d9c5ee --- /dev/null +++ b/tests/fuzz/7.c @@ -0,0 +1,852 @@ +/* + * This is a RANDOMLY GENERATED PROGRAM. + * + * Generator: csmith 2.2.0 + * Git version: a8697aa + * Options: --no-volatiles --no-math64 --no-packed-struct + * Seed: 4255021480 + */ + +#include "csmith.h" + + +static long __undefined; + +/* --- Struct/Union Declarations --- */ +union U0 { + uint32_t f0; + uint32_t f1; + uint16_t f2; + int32_t f3; + int16_t f4; +}; + +union U1 { + int32_t f0; + int8_t f1; +}; + +union U2 { + signed f0 : 31; + uint8_t f1; +}; + +/* --- GLOBAL VARIABLES --- */ +static union U2 g_9[5] = {{5L},{5L},{5L},{5L},{5L}}; +static int32_t g_11 = 0xE5C285CEL; +static const int32_t *g_16 = &g_11; +static uint8_t g_66[1] = {0xC8L}; +static uint8_t g_71 = 255UL; +static int32_t g_75 = 0xD78BEA8EL; +static int8_t g_76[5] = {0x1AL,0x1AL,0x1AL,0x1AL,0x1AL}; +static int16_t g_77 = 0x065BL; +static uint32_t g_78[7][9] = {{0x1A9F1398L,0xB1F15F1DL,0x4BD9F5B6L,0x1A9F1398L,0x8559CE79L,0xA768FB0CL,0xB1AAE879L,4294967293UL,0x8559CE79L},{0x8327BC4AL,0xF31BC463L,8UL,7UL,1UL,7UL,1UL,0x00823388L,1UL},{0x9C36DE1FL,0x19045039L,0xA768FB0CL,0x9C36DE1FL,0xB1F15F1DL,4294967293UL,4294967293UL,0x7078C3FCL,0x8559CE79L},{0x6E6AF575L,0x6E6AF575L,1UL,0x8327BC4AL,7UL,1UL,0x00823388L,0x00823388L,1UL},{0x8559CE79L,0x19045039L,0x9C36DE1FL,0x1A9F1398L,4294967293UL,0x9C36DE1FL,4294967291UL,4294967293UL,0xB1F15F1DL},{0x6E6AF575L,1UL,0x8327BC4AL,0x24791A13L,0x00823388L,1UL,0x24791A13L,0x6E6AF575L,7UL},{0x19045039L,0xA768FB0CL,0x19045039L,0x7078C3FCL,0x7078C3FCL,0xB1AAE879L,0x8559CE79L,0x7078C3FCL,0xA768FB0CL}}; +static int32_t *g_83[8][10] = {{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11}}; +static int32_t **g_82 = &g_83[0][9]; +static int32_t g_102 = 0xFD02F95CL; +static uint16_t g_135 = 65534UL; +static int32_t g_144 = 0x2D1F4F54L; +static const uint16_t g_160 = 1UL; +static union U0 g_181 = {4294967292UL}; +static union U0 *g_183 = &g_181; +static union U1 g_202 = {0xD13A1308L}; +static union U1 *g_201 = &g_202; +static int16_t g_209 = 2L; +static int32_t g_211 = 0xAD8558D5L; +static uint16_t g_231 = 65527UL; +static union U1 *g_261 = &g_202; +static union U2 *g_282 = (void*)0; +static union U2 **g_281 = &g_282; +static const int16_t g_328 = 2L; +static int8_t g_390 = 0x65L; +static int32_t g_468 = 0x425A7515L; +static int32_t **g_537 = &g_83[6][2]; +static uint32_t g_547 = 0UL; +static const uint32_t g_573 = 4294967288UL; +static const uint32_t g_575 = 4294967291UL; +static const uint32_t *g_574 = &g_575; +static int16_t g_582 = 0x5594L; +static union U0 **g_587 = &g_183; +static union U0 ***g_586 = &g_587; +static uint16_t *g_593 = &g_231; +static uint16_t **g_592 = &g_593; +static const union U1 g_649 = {-1L}; +static const union U1 *g_648 = &g_649; +static int16_t g_666 = 0xB689L; +static uint32_t g_668 = 2UL; +static union U2 ***g_691 = &g_281; +static union U2 *** const *g_690 = &g_691; +static int32_t g_756 = 0x25866B22L; +static uint8_t g_860 = 0x3DL; +static uint16_t g_894 = 0xD1D4L; +static const int32_t g_947 = 2L; +static uint16_t g_966[5][3] = {{1UL,1UL,0x3378L},{1UL,1UL,1UL},{65535UL,0x3378L,1UL},{1UL,1UL,0x3378L},{1UL,0x3378L,65535UL}}; +static int8_t *g_1030 = (void*)0; +static int8_t **g_1029 = &g_1030; +static union U1 g_1059[9][9] = {{{2L},{9L},{1L},{9L},{2L},{2L},{2L},{1L},{1L}},{{5L},{0x9B1D2FFCL},{0x256D147CL},{0x9B1D2FFCL},{5L},{0x9B1D2FFCL},{5L},{0x256D147CL},{0x256D147CL}},{{9L},{2L},{2L},{2L},{9L},{1L},{9L},{2L},{9L}},{{0x9B1D2FFCL},{5L},{5L},{5L},{0x9B1D2FFCL},{0x256D147CL},{0x256D147CL},{5L},{0x9B1D2FFCL}},{{1L},{9L},{1L},{9L},{2L},{2L},{2L},{9L},{1L}},{{5L},{0x9B1D2FFCL},{0x256D147CL},{0x9B1D2FFCL},{5L},{5L},{5L},{0x256D147CL},{0x256D147CL}},{{9L},{1L},{2L},{2L},{9L},{1L},{9L},{2L},{2L}},{{0x9B1D2FFCL},{5L},{5L},{5L},{0x9B1D2FFCL},{0x256D147CL},{0x9B1D2FFCL},{5L},{0x9B1D2FFCL}},{{1L},{9L},{9L},{9L},{2L},{2L},{2L},{9L},{1L}}}; +static int32_t g_1124 = 0L; +static int16_t g_1254 = 5L; +static int32_t g_1294 = 0x5FC158E7L; +static uint32_t *g_1326 = &g_78[4][2]; +static int16_t *g_1346[7] = {&g_209,&g_582,&g_209,&g_582,&g_1254,&g_1254,&g_1254}; +static union U0 *g_1354 = &g_181; +static uint16_t g_1418 = 0x7548L; +static int8_t * const **g_1432 = (void*)0; +static union U1 **g_1483[6] = {&g_261,&g_261,&g_261,&g_261,&g_261,&g_261}; +static int8_t g_1501 = (-1L); +static const int8_t *g_1582[8] = {(void*)0,(void*)0,(void*)0,&g_1059[4][2].f1,(void*)0,(void*)0,(void*)0,(void*)0}; +static const int8_t **g_1581 = &g_1582[6]; +static const int8_t ***g_1580 = &g_1581; +static uint8_t g_1597 = 1UL; +static int32_t g_1613 = 0L; +static uint8_t **g_1628 = (void*)0; +static int32_t ** const *g_1630 = &g_82; +static int32_t ** const **g_1629 = &g_1630; +static int16_t g_1665[1] = {(-8L)}; + + +/* --- FORWARD DECLARATIONS --- */ +static int16_t func_1(void); +static const int32_t * func_2(uint8_t p_3, union U2 p_4, int32_t * p_5, union U0 p_6, const union U1 p_7); +static int32_t func_19(int32_t p_20); +static const union U1 func_23(const int32_t * p_24, int8_t p_25, uint8_t p_26, const union U0 p_27, const int32_t * p_28); +static const int32_t * func_29(int32_t ** p_30, int32_t * p_31, int32_t * p_32, uint32_t p_33); +static int32_t * func_36(int32_t ** p_37); +static int32_t ** func_38(int16_t p_39, int8_t p_40, union U2 p_41, union U0 p_42); +static int8_t func_45(uint8_t p_46, uint16_t p_47, union U2 p_48, int32_t ** p_49, const uint32_t p_50); +static int8_t func_55(uint8_t p_56, union U1 p_57, int32_t * p_58, uint8_t p_59); +static int32_t * func_61(int16_t p_62, const int32_t ** p_63); + + +/* --- FUNCTIONS --- */ +/* ------------------------------------------ */ +/* + * reads : g_9 g_9.f0 g_11 g_16 g_66 g_71 g_78 g_82 g_77 g_181.f4 g_209 g_202.f0 g_181.f2 g_144 g_83 g_201 g_202 g_537 g_102 g_76 g_231 g_582 g_586 g_575 g_592 g_593 g_468 g_202.f1 g_261 g_649.f0 g_183 g_181 g_574 g_547 g_666 g_668 g_894 g_1124 g_587 g_181.f0 g_1630 g_281 g_282 g_690 g_691 + * writes: g_16 g_66 g_71 g_78 g_76 g_181.f4 g_144 g_547 g_390 g_135 g_83 g_75 g_102 g_11 g_574 g_586 g_231 g_468 g_77 g_209 g_648 g_1124 g_181.f0 g_183 g_282 g_202 + */ +static int16_t func_1(void) +{ /* block id: 0 */ + int8_t l_8 = 0xD2L; + int32_t *l_10 = &g_11; + union U0 l_12[3] = {{0xC63C4078L},{0xC63C4078L},{0xC63C4078L}}; + const union U1 l_13 = {0x54DBBE56L}; + const int32_t *l_15 = &l_12[2].f3; + const int32_t **l_14[1]; + union U2 **l_1476[1]; + union U1 ** const l_1484 = &g_261; + int16_t l_1489 = (-3L); + int32_t l_1490[4][9][7] = {{{0x7722092EL,0xE7360E5FL,0x6D151BE1L,6L,(-5L),8L,0x348F7672L},{0x09844A68L,(-1L),(-9L),1L,0xFFB9EB74L,0xB7C332CFL,0x6178C1E9L},{0L,0x4AEF49C4L,0x579BFEBAL,0x1115582EL,0x1724644DL,1L,0x9A5CF446L},{0xB336F930L,1L,1L,0L,0x3AF81339L,9L,0xB12F7DAAL},{0x61FAFD88L,6L,9L,0xA08F10A1L,0x06B6F60EL,0xFFB9EB74L,0xEAFC93F5L},{6L,0xA08F10A1L,0x06B6F60EL,(-8L),(-7L),0xB12F7DAAL,0xB4CB5279L},{(-5L),(-2L),0xBA853D88L,(-8L),0L,0xDE8A14BCL,0xE7360E5FL},{0xF7A455E7L,0x579BFEBAL,0xEAFC93F5L,0xA08F10A1L,0x1DE7A7EEL,0x348F7672L,(-1L)},{0x579BFEBAL,(-2L),0xDE8A14BCL,0L,0xCC05669DL,0xCC05669DL,0x1E6C6902L}},{{0x3AF81339L,(-7L),(-1L),0x1115582EL,(-2L),0xCB6A97FAL,(-5L)},{3L,(-1L),(-2L),1L,0xEAFC93F5L,0x781D787BL,0x85A2F7F1L},{0x1E6C6902L,0x781D787BL,(-9L),6L,1L,(-7L),1L},{0x579BFEBAL,8L,0x09844A68L,0xE7360E5FL,0x6178C1E9L,0x3AF81339L,1L},{0x348F7672L,(-1L),(-9L),0x566121C2L,4L,0x06B6F60EL,0xCC05669DL},{1L,0x9A5CF446L,(-2L),0L,0x1115582EL,0x1724644DL,0x1115582EL},{0x09844A68L,0x579BFEBAL,(-1L),0x1724644DL,0xC388F8C3L,0xF7A455E7L,0L},{9L,0xA34E9BADL,0xDE8A14BCL,0L,0xF7A455E7L,0x29ABAF8CL,(-1L)},{(-1L),1L,0xEAFC93F5L,1L,1L,2L,9L}},{{(-1L),0x1DE7A7EEL,3L,0x7BF25D80L,(-7L),9L,0x348F7672L},{0xEAFC93F5L,0x1DE7A7EEL,0x7722092EL,0xA34E9BADL,8L,9L,2L},{(-1L),1L,0x0CEE732EL,6L,2L,0x9E61483AL,0x9E61483AL},{0xBA853D88L,0xA34E9BADL,0x6EC18B86L,0xCE872C2BL,0xA34E9BADL,(-1L),0x3AF81339L},{(-7L),0x579BFEBAL,0L,5L,0xEB035C34L,0x6EC18B86L,0x7722092EL},{0x6D151BE1L,0xBBCB4E5FL,0xA34E9BADL,(-1L),(-1L),0xEAFC93F5L,9L},{1L,0x9E61483AL,0xB336F930L,0xAA26BCE5L,0x566121C2L,0x9E61483AL,0xEB035C34L},{2L,0x85A2F7F1L,0xEAC2EEC8L,0xEAFC93F5L,0xBBCB4E5FL,0xB4CB5279L,0x1E6C6902L},{1L,0xFFB9EB74L,0x7722092EL,(-1L),0x96B34700L,0x1FBA7239L,0xB336F930L}},{{0x6D151BE1L,0xC388F8C3L,0x1579862BL,0x06B6F60EL,0x1E6C6902L,0x06B6F60EL,2L},{(-7L),0x09844A68L,2L,0xB4CB5279L,5L,1L,(-1L)},{3L,2L,(-1L),0xEB035C34L,(-1L),0xC388F8C3L,0x85A2F7F1L},{0x4EC6A0E7L,0L,1L,0x3AF81339L,0x7BF25D80L,(-1L),0L},{(-1L),(-1L),0x3AF81339L,(-8L),4L,0x61FAFD88L,0L},{4L,0x929F3853L,0xCB6A97FAL,0L,0xAA26BCE5L,0xCE872C2BL,0x85A2F7F1L},{0x566121C2L,0x4AEF49C4L,6L,0x4EC6A0E7L,(-1L),(-1L),(-1L)},{0x61FAFD88L,0x29ABAF8CL,0xE7360E5FL,0xE7360E5FL,0L,(-2L),2L},{0xB4CB5279L,(-2L),0x1DE7A7EEL,0xE7360E5FL,0xDE8A14BCL,0L,(-8L)}}}; + int32_t l_1499 = 0L; + int32_t l_1503 = 1L; + uint32_t l_1505[3][5][2] = {{{4294967289UL,1UL},{0UL,1UL},{4294967289UL,1UL},{0UL,1UL},{4294967289UL,1UL}},{{0UL,1UL},{4294967289UL,1UL},{0UL,1UL},{4294967289UL,1UL},{0UL,1UL}},{{4294967289UL,1UL},{0UL,1UL},{4294967289UL,1UL},{0UL,1UL},{4294967289UL,1UL}}}; + int32_t l_1530 = (-3L); + int32_t l_1550 = 5L; + int32_t l_1557 = 5L; + union U1 *l_1563 = &g_1059[6][4]; + uint32_t l_1622 = 0x24618042L; + uint16_t l_1656 = 1UL; + uint8_t *l_1682[9][4] = {{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]},{&g_66[0],&g_66[0],&g_66[0],&g_66[0]}}; + uint8_t **l_1681 = &l_1682[8][2]; + int32_t l_1684 = 0L; + int i, j, k; + for (i = 0; i < 1; i++) + l_14[i] = &l_15; + for (i = 0; i < 1; i++) + l_1476[i] = (void*)0; + g_16 = func_2(l_8, g_9[0], l_10, l_12[2], l_13); + for (l_8 = 0; (l_8 < 3); l_8 = safe_add_func_int16_t_s_s(l_8, 8)) + { /* block id: 6 */ + int32_t l_1456 = 0L; + int32_t l_1493 = (-5L); + int32_t l_1494 = 0xCC45616AL; + int32_t l_1498 = 0xF676537EL; + int32_t l_1502[5]; + int8_t l_1525 = (-1L); + const int8_t l_1562 = 8L; + const uint32_t **l_1594 = &g_574; + union U1 l_1610 = {1L}; + union U2 l_1654 = {2L}; + uint32_t l_1685 = 0x72C9CEDCL; + int i; + for (i = 0; i < 5; i++) + l_1502[i] = (-1L); + if (func_19(g_9[0].f0)) + { /* block id: 926 */ + int8_t l_1454 = 0xD7L; + int32_t l_1457[6][4] = {{0x7FED4B30L,1L,0x7FED4B30L,1L},{0x7FED4B30L,1L,0x7FED4B30L,1L},{0x7FED4B30L,1L,0x7FED4B30L,1L},{0x7FED4B30L,1L,0x7FED4B30L,1L},{0x7FED4B30L,1L,0x7FED4B30L,1L},{0x7FED4B30L,1L,0x7FED4B30L,1L}}; + const int32_t *l_1466 = &g_468; + uint16_t l_1488[6]; + union U2 ***l_1529[9] = {&l_1476[0],&l_1476[0],&l_1476[0],&l_1476[0],&l_1476[0],&l_1476[0],&l_1476[0],&l_1476[0],&l_1476[0]}; + int16_t l_1546 = 0x676EL; + const union U0 l_1565 = {4294967292UL}; + union U1 *l_1571 = &g_1059[4][2]; + uint32_t *l_1591 = &l_1505[0][0][0]; + int8_t l_1658 = 3L; + int16_t l_1659 = 0xE414L; + uint32_t l_1660 = 0x579CC0EBL; + uint32_t l_1666 = 0xE040432BL; + uint32_t l_1671 = 0xF8DE41A5L; + union U1 *l_1672 = (void*)0; + union U1 *l_1673[3]; + union U1 *l_1674 = &g_202; + int i, j; + for (i = 0; i < 6; i++) + l_1488[i] = 8UL; + for (i = 0; i < 3; i++) + l_1673[i] = (void*)0; + for (g_144 = 0; (g_144 <= 0); g_144 += 1) + { /* block id: 929 */ + int16_t *l_1455[10] = {&l_12[2].f4,&l_12[2].f4,&l_12[2].f4,&l_12[2].f4,&l_12[2].f4,&l_12[2].f4,&l_12[2].f4,&l_12[2].f4,&l_12[2].f4,&l_12[2].f4}; + uint8_t *l_1463 = &g_860; + const int32_t **l_1487 = &l_15; + int32_t l_1496 = (-2L); + int32_t l_1497 = 0xC7FAF769L; + union U2 l_1538 = {-1L}; + const int8_t l_1539[6][6][7] = {{{0L,0x75L,2L,(-6L),(-6L),0xD3L,0x75L},{0x84L,0L,0x69L,0L,0x84L,0xF4L,7L},{0L,0L,0x75L,0xD3L,(-6L),0L,0x75L},{0xC1L,0x6CL,0x92L,0xF4L,0xC1L,0xF4L,0x92L},{1L,2L,0x75L,0L,(-6L),0xD3L,0xD3L},{0x84L,0L,7L,0xF4L,7L,0x6CL,0x84L}},{{1L,1L,0x75L,2L,0L,0L,0x75L},{0L,0L,0x92L,0x6CL,0L,0L,0L},{1L,0x75L,0xD3L,0L,(-6L),0x75L,0xD3L},{0x84L,0xF4L,0x84L,0L,0x84L,0L,7L},{(-6L),1L,0x75L,0x75L,0L,0L,2L},{0x92L,0x6CL,0xC1L,0L,0xC1L,0x6CL,0L}},{{(-6L),0xD3L,0xD3L,0L,1L,0x75L,0xD3L},{0x69L,0x6CL,7L,0x6CL,0x69L,0x6CL,0x69L},{(-6L),1L,2L,0x75L,0L,(-6L),0xD3L},{0L,0L,0L,0x6CL,0x92L,0x6CL,0xC1L},{0L,0xD3L,0xD3L,(-6L),0L,0x75L,0x75L},{7L,0xF4L,0x69L,0x6CL,0x84L,0xF4L,0x69L}},{{(-6L),0L,2L,0x75L,(-6L),1L,2L},{0x92L,0xF4L,0xC1L,0xF4L,0x92L,0xF4L,0x92L},{0L,0xD3L,0x75L,1L,1L,2L,2L},{0x69L,0L,0x69L,0xF4L,7L,0xF4L,0x69L},{1L,0L,2L,2L,1L,(-6L),0xD3L},{0xC1L,0L,0x92L,0xF4L,0L,0L,0x92L}},{{0L,0x75L,2L,(-6L),0L,0xD3L,0x75L},{0x84L,0L,0x84L,0L,7L,0xF4L,7L},{1L,0L,0xD3L,0xD3L,(-6L),1L,0x75L},{0x92L,0x6CL,0x92L,0L,0xC1L,0L,0x92L},{(-6L),0x75L,0x75L,1L,(-6L),2L,0xD3L},{0x84L,0x6CL,7L,0L,7L,0x6CL,7L}},{{1L,(-6L),0x75L,2L,1L,0L,0xD3L},{0L,0x6CL,0L,0x6CL,0xC1L,0L,0xC1L},{(-6L),0x75L,2L,0L,0L,0xD3L,0xD3L},{7L,0xF4L,7L,0L,0x84L,0x6CL,7L},{0L,1L,0xD3L,0xD3L,0L,1L,2L},{0L,0xF4L,0xC1L,0x6CL,0xC1L,0xF4L,0xC1L}}}; + union U1 *l_1570 = &g_1059[4][2]; + union U0 l_1593 = {1UL}; + int i, j, k; + } + if ((*g_16)) + { /* block id: 1007 */ + union U1 *l_1599 = &g_1059[4][2]; + int32_t l_1604 = 0L; + union U2 l_1625 = {0x22466E4EL}; + uint8_t *l_1627 = (void*)0; + uint8_t **l_1626 = &l_1627; + uint32_t l_1631[4][8] = {{4294967287UL,1UL,4294967288UL,0x1CF551D9L,4294967287UL,0xFC67C7A4L,0UL,1UL},{4294967288UL,4294967288UL,0xD89884B8L,0x1CF551D9L,0xD89884B8L,4294967288UL,0xD89884B8L,4294967287UL},{0UL,0xFC67C7A4L,4294967287UL,4294967287UL,0xD89884B8L,0x8D4BD049L,1UL,4294967288UL},{0x8D4BD049L,4294967287UL,4294967287UL,1UL,0xFC67C7A4L,1UL,4294967287UL,1UL}}; + int i, j; + for (g_71 = 0; (g_71 != 40); ++g_71) + { /* block id: 1010 */ + const int32_t l_1606 = 1L; + } + } + else + { /* block id: 1031 */ + int8_t l_1655 = 0x2AL; + union U2 l_1661 = {-9L}; + int32_t *l_1662 = &l_12[2].f3; + int32_t *l_1663[9] = {&l_1493,&l_1493,&l_1493,&l_1493,&l_1493,&l_1493,&l_1493,&l_1493,&l_1493}; + int32_t l_1664 = 0L; + int i; + for (g_181.f0 = (-24); (g_181.f0 <= 30); ++g_181.f0) + { /* block id: 1034 */ + uint16_t l_1641 = 65535UL; + int8_t *l_1642[7] = {&l_1610.f1,(void*)0,&g_1059[4][2].f1,&g_1059[4][2].f1,&g_1059[4][2].f1,&l_1610.f1,&l_1610.f1}; + int32_t l_1643 = 4L; + uint8_t *l_1657 = &l_1654.f1; + int i; + (*g_587) = &l_12[0]; + g_16 = func_2(((((((void*)0 == (*g_1630)) >= (safe_mul_func_int8_t_s_s((l_1643 = l_1641), (((((safe_add_func_uint32_t_u_u((0L < ((safe_add_func_uint16_t_u_u((*g_593), 0xF41FL)) != (safe_sub_func_uint8_t_u_u(((*l_1657) = ((safe_div_func_uint16_t_u_u(((((func_45(l_1641, l_1493, (l_1654 = l_1654), &l_10, (*l_1466)) ^ l_1655) || 0x95L) >= l_1656) < (*g_593)), l_1610.f0)) == 0x3CL)), l_1658)))), l_1493)) , 6L) , (*l_15)) && l_1659) || l_1641)))) , l_1654.f1) , l_1502[1]) <= l_1660), l_1661, &l_1530, l_12[2], (*g_201)); + if (l_1641) + continue; + } + (*l_10) ^= (*l_1466); + l_1666++; + if ((*l_10)) + break; + } + for (g_547 = 0; (g_547 == 3); g_547 = safe_add_func_uint8_t_u_u(g_547, 8)) + { /* block id: 1048 */ + (***g_690) = (*g_281); + l_1493 ^= l_1494; + } + g_16 = func_2(l_1671, l_1654, &l_1503, l_12[2], ((*l_1674) = l_1610)); + } + else + { /* block id: 1054 */ + int8_t l_1683 = 0x9CL; + l_1502[1] = (safe_div_func_int32_t_s_s((safe_sub_func_int8_t_s_s(l_1562, (safe_rshift_func_uint16_t_u_u((1UL | (((void*)0 == l_1681) | (+l_1683))), 2)))), l_1684)); + if (l_1610.f1) + continue; + } + return l_1685; + } + return (*l_10); +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: + */ +static const int32_t * func_2(uint8_t p_3, union U2 p_4, int32_t * p_5, union U0 p_6, const union U1 p_7) +{ /* block id: 1 */ + return &g_11; +} + + +/* ------------------------------------------ */ +/* + * reads : g_9.f0 g_11 g_16 g_66 g_71 g_78 g_9 g_82 g_77 g_181.f4 g_209 g_202.f0 g_181.f2 g_144 g_83 g_201 g_202 g_537 g_75 g_102 g_76 g_231 g_582 g_586 g_575 g_592 g_593 g_468 g_202.f1 g_261 g_649.f0 g_183 g_181 g_574 g_666 g_668 g_894 g_1124 g_587 g_547 + * writes: g_16 g_66 g_71 g_78 g_76 g_181.f4 g_144 g_547 g_390 g_135 g_83 g_75 g_102 g_11 g_574 g_586 g_231 g_468 g_77 g_209 g_648 g_1124 + */ +static int32_t func_19(int32_t p_20) +{ /* block id: 7 */ + int32_t *l_35 = &g_11; + int32_t **l_34 = &l_35; + union U1 l_60 = {0xAD4F6C55L}; + int8_t *l_84 = &g_76[2]; + union U2 l_85 = {-1L}; + union U0 l_86 = {4294967295UL}; + int32_t *l_1453 = &g_1124; + (*l_1453) |= ((safe_mod_func_uint8_t_u_u((func_23(func_29(l_34, (p_20 , func_36(func_38(g_9[0].f0, ((*l_84) = ((safe_mul_func_int16_t_s_s((((**l_34) && func_45(p_20, (safe_mod_func_uint32_t_u_u(((safe_lshift_func_int8_t_s_s(0xC8L, (func_55(p_20, l_60, func_61((((*g_16) && 0x04518073L) > 0x36L), &g_16), g_11) , (-1L)))) , p_20), g_9[0].f0)), g_9[3], g_82, p_20)) , (**l_34)), g_77)) || (**l_34))), l_85, l_86))), &g_468, p_20), p_20, p_20, l_86, (*l_34)) , 249UL), g_894)) > p_20); + (*l_35) = p_20; + (*g_537) = ((***g_586) , (*g_82)); + return (*g_16); +} + + +/* ------------------------------------------ */ +/* + * reads : g_201 g_202 + * writes: + */ +static const union U1 func_23(const int32_t * p_24, int8_t p_25, uint8_t p_26, const union U0 p_27, const int32_t * p_28) +{ /* block id: 460 */ + uint16_t l_675 = 0UL; + uint8_t *l_684 = &g_9[0].f1; + union U2 l_685 = {0x88367F2CL}; + int32_t **l_686 = (void*)0; + int8_t *l_687[7]; + int32_t l_688 = 0xF0B46BC5L; + union U0 ****l_689 = (void*)0; + const union U2 *l_695[6] = {&l_685,&l_685,&l_685,&l_685,&l_685,&l_685}; + const union U2 **l_694 = &l_695[5]; + const union U2 ***l_693 = &l_694; + const union U2 ****l_692 = &l_693; + int32_t *l_696 = &g_11; + int32_t *l_697 = &l_688; + union U0 **l_709 = &g_183; + int8_t * const *l_716 = (void*)0; + union U0 l_718 = {4294967292UL}; + const union U1 l_725 = {0xCF474642L}; + union U2 l_762 = {-3L}; + union U0 l_770 = {4294967292UL}; + int32_t l_810 = 0x0514C231L; + int32_t l_851[10] = {0L,0L,0L,0L,0L,0L,0L,0L,0L,0L}; + int32_t l_867[5][10][3] = {{{0x9279772DL,(-1L),2L},{0x08D29043L,0xE1F44506L,0x08D29043L},{0xAAC8A26EL,0xE1B3EFFAL,(-3L)},{0xE1F44506L,1L,0x87B510FDL},{0x6D1F2783L,(-3L),0L},{0x27ECB6E8L,0xE8274EACL,0x08D29043L},{0x6D1F2783L,0xC659668AL,0xDCD37698L},{0x8C0733A2L,0x87B510FDL,6L},{0x2820589CL,0xB311FE06L,0x97A0EB8CL},{(-1L),0x4EAB465CL,0xB3893D4FL}},{{(-3L),(-1L),(-1L)},{0x411C5323L,0xBDBD4C74L,1L},{0xB311FE06L,0xDCD37698L,0xDCD37698L},{0x411C5323L,0x8C0733A2L,0xF779865EL},{0x2E256168L,2L,(-5L)},{0x63F4CD2EL,0xBDBD4C74L,0xF779865EL},{0xAAC8A26EL,1L,(-1L)},{1L,0x4EAB465CL,0x8C0733A2L},{(-1L),0xAAC8A26EL,(-1L)},{0x87B510FDL,(-2L),0xEEE97BECL}},{{(-3L),4L,0xC659668AL},{0x27ECB6E8L,0x903B8919L,(-1L)},{6L,(-7L),0xC659668AL},{0xE8274EACL,0xE1F44506L,0x4EAB465CL},{4L,0xC659668AL,0x7F0FCA53L},{0x27ECB6E8L,0x8C0733A2L,1L},{(-1L),0xAAC8A26EL,(-3L)},{(-2L),6L,0x4ED03EDAL},{0x124AF2F5L,(-3L),(-1L)},{1L,(-8L),0xEEE97BECL}},{{0x9279772DL,(-1L),0x9279772DL},{(-1L),0x87B510FDL,1L},{(-1L),0x7F0FCA53L,0L},{0x633BE4BDL,0x27ECB6E8L,0L},{0xAAC8A26EL,(-3L),(-5L)},{0x633BE4BDL,0x903B8919L,0x0402175AL},{2L,(-7L),(-1L)},{0xB3893D4FL,0xC995347EL,0x411C5323L},{(-3L),0x97A0EB8CL,0xDCD37698L},{4L,(-8L),0xB3893D4FL}},{{0xE1B3EFFAL,0xC659668AL,0x7F0FCA53L},{0xC995347EL,0xBB8ED630L,0x0402175AL},{0xE1B3EFFAL,2L,6L},{4L,0xEEE97BECL,0xE1F44506L},{(-5L),0xC659668AL,0L},{(-1L),0x63F4CD2EL,0xBB8ED630L},{0x7F0FCA53L,0x6D1F2783L,2L},{0xBB8ED630L,(-1L),0x4EAB465CL},{(-7L),(-7L),0x6D1F2783L},{4L,(-2L),6L}}}; + uint8_t l_959 = 0xE4L; + const uint16_t *l_1006[2]; + const uint16_t * const *l_1005 = &l_1006[1]; + union U2 l_1009 = {0x4A992D0AL}; + int16_t *l_1022 = &g_181.f4; + const int16_t l_1023 = 0L; + const uint8_t l_1024 = 0x99L; + int8_t l_1025 = 0x25L; + const int32_t l_1026[2][7][1] = {{{0x218A56C6L},{0L},{0x218A56C6L},{0L},{0x218A56C6L},{0L},{0x218A56C6L}},{{0L},{0x218A56C6L},{0L},{0x218A56C6L},{0L},{0x218A56C6L},{0L}}}; + uint8_t l_1035 = 3UL; + int8_t l_1120 = (-1L); + union U2 l_1121 = {0x9CB199ABL}; + int16_t l_1125[3]; + uint8_t l_1133 = 0xB6L; + uint16_t l_1172 = 65535UL; + uint16_t **l_1215 = &g_593; + uint32_t l_1276 = 4UL; + int16_t l_1302 = 0x0B16L; + uint16_t l_1332 = 0x101DL; + uint32_t * const *l_1364 = &g_1326; + uint32_t l_1392 = 4294967295UL; + uint32_t l_1397 = 0x52BECEE6L; + uint8_t l_1433 = 0x91L; + int i, j, k; + for (i = 0; i < 7; i++) + l_687[i] = &g_390; + for (i = 0; i < 2; i++) + l_1006[i] = &l_770.f2; + for (i = 0; i < 3; i++) + l_1125[i] = (-9L); + return (*g_201); +} + + +/* ------------------------------------------ */ +/* + * reads : g_75 g_181.f4 g_78 g_102 g_11 g_76 g_231 g_582 g_209 g_586 g_575 g_592 g_593 g_537 g_83 g_82 g_468 g_66 g_202.f1 g_71 g_77 g_16 g_261 g_202 g_649.f0 g_183 g_181 g_9 g_574 g_666 g_668 g_547 + * writes: g_75 g_181.f4 g_102 g_135 g_11 g_574 g_586 g_231 g_468 g_83 g_390 g_16 g_66 g_71 g_78 g_547 g_77 g_209 g_648 + */ +static const int32_t * func_29(int32_t ** p_30, int32_t * p_31, int32_t * p_32, uint32_t p_33) +{ /* block id: 356 */ + int32_t l_563[3]; + union U2 ***l_623[10][4][1]; + const union U1 *l_647 = &g_202; + int32_t l_660 = 0x63F79464L; + union U0 l_661 = {1UL}; + int32_t **l_667 = (void*)0; + int i, j, k; + for (i = 0; i < 3; i++) + l_563[i] = 0xBA602EADL; + for (i = 0; i < 10; i++) + { + for (j = 0; j < 4; j++) + { + for (k = 0; k < 1; k++) + l_623[i][j][k] = (void*)0; + } + } + for (g_75 = (-22); (g_75 >= (-9)); g_75 = safe_add_func_int8_t_s_s(g_75, 8)) + { /* block id: 359 */ + uint32_t l_584 = 1UL; + uint8_t l_607 = 0xA7L; + uint16_t l_610 = 0x2FA4L; + int32_t **l_637 = &g_83[6][8]; + const int32_t **l_638 = &g_16; + uint16_t *l_644 = &g_135; + union U1 *l_650 = &g_202; + union U2 l_651 = {4L}; + for (g_181.f4 = 6; (g_181.f4 >= 2); g_181.f4 -= 1) + { /* block id: 362 */ + union U2 *l_567 = &g_9[0]; + int32_t * const *l_581[1]; + int16_t l_585 = 0x9959L; + const int32_t **l_599 = &g_16; + union U1 l_633 = {0L}; + int i, j; + for (i = 0; i < 1; i++) + l_581[i] = &g_83[0][9]; + if (g_78[g_181.f4][g_181.f4]) + { /* block id: 363 */ + const int32_t *l_561[5]; + union U2 l_583 = {0x0E2EE145L}; + int i; + for (i = 0; i < 5; i++) + l_561[i] = &g_11; + for (g_102 = 0; (g_102 <= 6); g_102 += 1) + { /* block id: 366 */ + const int32_t **l_562[7][9][2] = {{{(void*)0,(void*)0},{&l_561[2],&l_561[2]},{&l_561[2],&l_561[4]},{&l_561[0],&l_561[2]},{&l_561[2],&l_561[0]},{(void*)0,&l_561[2]},{&l_561[2],&l_561[4]},{&l_561[0],(void*)0},{(void*)0,&l_561[0]}},{{&l_561[2],&l_561[2]},{&l_561[2],(void*)0},{&l_561[2],&l_561[2]},{&l_561[2],(void*)0},{&l_561[2],&l_561[2]},{&l_561[2],(void*)0},{&l_561[0],(void*)0},{&l_561[2],&l_561[4]},{&l_561[2],&l_561[2]}},{{&l_561[0],&l_561[4]},{&l_561[2],&l_561[2]},{(void*)0,&l_561[4]},{&l_561[2],&l_561[2]},{&l_561[0],(void*)0},{&l_561[0],&l_561[2]},{&l_561[2],&l_561[0]},{&l_561[2],(void*)0},{&l_561[2],&l_561[0]}},{{&l_561[2],(void*)0},{&l_561[2],&l_561[4]},{&l_561[2],(void*)0},{&l_561[0],(void*)0},{&l_561[2],&l_561[2]},{&l_561[2],&l_561[4]},{(void*)0,&l_561[2]},{&l_561[2],&l_561[0]},{&l_561[0],&l_561[2]}},{{&l_561[2],&l_561[4]},{(void*)0,(void*)0},{&l_561[0],&l_561[0]},{&l_561[2],&l_561[2]},{&l_561[2],(void*)0},{&l_561[2],&l_561[2]},{&l_561[2],(void*)0},{&l_561[2],&l_561[2]},{&l_561[2],(void*)0}},{{(void*)0,(void*)0},{&l_561[2],&l_561[0]},{&l_561[2],&l_561[2]},{(void*)0,&l_561[4]},{(void*)0,&l_561[2]},{&l_561[0],&l_561[4]},{&l_561[2],&l_561[2]},{(void*)0,(void*)0},{(void*)0,&l_561[2]}},{{&l_561[2],&l_561[0]},{&l_561[2],(void*)0},{&l_561[2],(void*)0},{&l_561[2],(void*)0},{&l_561[2],&l_561[4]},{&l_561[2],(void*)0},{(void*)0,(void*)0},{&l_561[2],&l_561[2]},{&l_561[2],&l_561[4]}}}; + int i, j, k; + l_561[2] = (g_78[g_102][(g_181.f4 + 2)] , l_561[2]); + } + for (g_135 = 0; (g_135 <= 6); g_135 += 1) + { /* block id: 385 */ + uint16_t *l_578[9] = {(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}; + uint16_t **l_591 = &l_578[5]; + int i; + if (l_563[1]) + break; + if (((**p_30) = (**p_30))) + { /* block id: 388 */ + const uint32_t *l_570 = (void*)0; + const uint32_t *l_572 = &g_573; + const uint32_t **l_571[7][6] = {{&l_572,&l_572,&l_572,&l_572,&l_572,&l_572},{&l_572,&l_572,&l_572,&l_572,&l_572,&l_572},{&l_572,&l_572,&l_572,&l_572,&l_572,&l_572},{&l_572,&l_572,&l_572,&l_572,&l_572,&l_572},{&l_572,&l_572,&l_572,&l_572,&l_572,&l_572},{&l_572,&l_572,&l_572,&l_572,&l_572,&l_572},{&l_572,&l_572,&l_572,&l_572,&l_572,&l_572}}; + union U0 ****l_588 = &g_586; + uint8_t *l_594 = &l_583.f1; + union U2 l_595 = {0L}; + int i, j; + l_584 = (((safe_rshift_func_uint16_t_u_s((((p_32 == (g_574 = (l_570 = &g_547))) ^ ((**p_30) = (0UL & (safe_div_func_int8_t_s_s(g_76[3], g_231))))) > g_78[g_181.f4][g_181.f4]), 1)) & (l_578[6] != (func_45((safe_mul_func_uint16_t_u_u((((l_581[0] == &p_31) >= 0x707B488DL) <= g_76[3]), p_33)), g_582, l_583, &g_83[0][9], p_33) , &g_135))) && p_33); + (**p_30) &= (((g_209 , 65535UL) || l_585) && (func_45((((*l_588) = g_586) == &g_587), ((*g_593) &= (((&g_82 != &p_30) ^ (l_563[0] = ((*l_594) = (safe_mul_func_int8_t_s_s(g_575, (l_591 == g_592)))))) <= 0x9676L)), l_595, &g_83[0][9], l_584) && l_563[2])); + return (*g_537); + } + else + { /* block id: 399 */ + if (l_563[0]) + break; + } + if ((**p_30)) + { /* block id: 402 */ + return (*g_82); + } + else + { /* block id: 404 */ + (*p_32) = ((**p_30) &= 0L); + } + } + return (*p_30); + } + else + { /* block id: 410 */ + uint32_t l_601 = 4294967293UL; + int16_t l_606 = 0x86ADL; + uint32_t *l_618 = &g_547; + int16_t *l_619 = &g_77; + union U2 * const **l_622 = (void*)0; + union U2 ****l_624[6][1]; + int32_t l_625 = 7L; + int i, j; + for (i = 0; i < 6; i++) + { + for (j = 0; j < 1; j++) + l_624[i][j] = &l_623[6][0][0]; + } + (*g_537) = (*g_537); + for (g_390 = 0; (g_390 <= 6); g_390 += 1) + { /* block id: 414 */ + const union U0 *l_596[8] = {&g_181,&g_181,&g_181,&g_181,&g_181,&g_181,&g_181,&g_181}; + const union U0 **l_597 = &l_596[7]; + union U1 l_598 = {0xBA0F4ADFL}; + int32_t l_600 = (-8L); + const uint16_t l_604 = 0x3537L; + int i; + (*l_597) = l_596[7]; + if (func_55(((*p_32) && 0xDACB73B6L), l_598, func_61((+(l_563[2] & p_33)), l_599), g_202.f1)) + { /* block id: 416 */ + uint8_t l_605 = 0x27L; + l_601--; + if (l_601) + break; + l_605 = l_604; + } + else + { /* block id: 420 */ + if (l_606) + break; + if (l_607) + break; + (*p_32) = (0x66L || 251UL); + (**p_30) ^= (g_77 & l_584); + } + (**p_30) ^= l_563[0]; + (**p_30) ^= (*p_32); + } + (**p_30) = ((safe_div_func_uint8_t_u_u(l_610, (safe_div_func_int16_t_s_s((g_209 = (safe_unary_minus_func_uint8_t_u(((safe_mod_func_int16_t_s_s(((*l_619) = (((*l_618) = (safe_add_func_uint32_t_u_u(p_33, l_606))) & (l_610 >= 254UL))), 0xFB78L)) == (*p_32))))), (safe_mul_func_int16_t_s_s((((l_622 == (l_623[2][1][0] = l_623[6][0][0])) <= 5L) , (-7L)), 0x2D99L)))))) < 0x64L); + for (g_547 = 0; (g_547 <= 6); g_547 += 1) + { /* block id: 436 */ + union U1 l_634 = {0x8542DBDAL}; + union U2 l_636 = {1L}; + uint32_t l_639 = 0x3777B03DL; + for (g_71 = 0; (g_71 <= 6); g_71 += 1) + { /* block id: 439 */ + l_625 = (**p_30); + } + for (g_77 = 0; (g_77 <= 6); g_77 += 1) + { /* block id: 444 */ + union U2 l_626 = {0x7E9C8075L}; + int32_t *l_635 = &g_102; + } + return (*g_82); + } + } + } + (*l_638) = func_2(((safe_mul_func_int16_t_s_s(g_231, ((((((**l_638) , (**p_30)) <= (((*l_644) = p_33) > (safe_div_func_uint32_t_u_u(func_55(g_78[6][6], (*g_261), (*l_637), ((((g_648 = l_647) == l_650) & g_582) && 1L)), (**p_30))))) >= 0x11L) != 0x1AC1L) | 4294967290UL))) , g_649.f0), l_651, (*g_82), (*g_183), (*l_650)); + } + (**p_30) |= (func_45(((+((safe_mod_func_uint8_t_u_u(l_563[0], (safe_mul_func_int8_t_s_s((safe_add_func_int16_t_s_s((-2L), func_45((safe_mul_func_int16_t_s_s((l_660 = l_563[2]), p_33)), (*g_593), ((l_661 , (safe_add_func_uint16_t_u_u(0UL, (safe_lshift_func_uint8_t_u_u(p_33, 5))))) , (((p_33 ^ 0xBAEAL) & g_202.f1) , g_9[2])), &g_83[0][9], (*g_574)))), l_563[2])))) != 7UL)) & g_666), (**g_592), g_9[0], l_667, p_33) <= g_668); + return (*p_30); +} + + +/* ------------------------------------------ */ +/* + * reads : g_181.f4 g_209 g_202.f0 g_11 g_181.f2 g_144 g_83 g_201 g_202 g_537 + * writes: g_181.f4 g_144 g_547 g_390 g_135 g_66 g_16 g_83 + */ +static int32_t * func_36(int32_t ** p_37) +{ /* block id: 342 */ + int16_t *l_541[5] = {&g_77,&g_77,&g_77,&g_77,&g_77}; + int32_t l_542 = 1L; + int32_t l_543 = 1L; + int32_t *l_544 = &g_144; + union U0 l_545 = {0x4F299A70L}; + uint32_t *l_546 = &g_547; + int8_t *l_548 = &g_390; + uint16_t *l_549 = &g_135; + uint32_t l_550 = 1UL; + union U2 l_551[10][4] = {{{-1L},{-1L},{0x1487E6D1L},{0x1487E6D1L}},{{0x008F65D1L},{-1L},{0x1487E6D1L},{-1L}},{{-1L},{1L},{-1L},{7L}},{{0x9D8FA7ECL},{1L},{0x9D8FA7ECL},{-1L}},{{-1L},{0x008F65D1L},{-1L},{0x9D8FA7ECL}},{{-1L},{7L},{-1L},{-1L}},{{-1L},{0x008F65D1L},{-1L},{0x008F65D1L}},{{-1L},{1L},{0x008F65D1L},{0x1487E6D1L}},{{0x1487E6D1L},{0x1487E6D1L},{-1L},{-1L}},{{0x9D8FA7ECL},{-1L},{-1L},{-1L}}}; + int32_t *l_552[5][10] = {{&g_144,&l_543,&l_543,&l_542,&l_543,&l_543,&g_11,&l_545.f3,&l_542,&l_542},{&l_542,&l_545.f3,&l_543,&l_545.f3,&l_545.f3,&g_144,&l_545.f3,&g_468,&l_543,&l_542},{&g_468,&l_542,&g_144,&l_545.f3,&l_543,&g_468,&l_545.f3,&g_11,&l_545.f3,&g_468},{&l_542,&l_545.f3,&l_545.f3,&l_545.f3,&l_542,&l_545.f3,&g_11,&l_545.f3,&l_543,&g_144},{&l_542,&l_543,&g_468,&l_545.f3,&g_11,&g_468,&g_468,&l_545.f3,&g_144,&g_11}}; + uint32_t l_553 = 8UL; + uint8_t *l_554 = &g_66[0]; + uint16_t l_557[3]; + int i, j; + for (i = 0; i < 3; i++) + l_557[i] = 3UL; + (*l_544) = (((func_45(((safe_mod_func_int16_t_s_s((l_542 &= (g_181.f4 &= 0x1366L)), l_543)) & (l_543 | (((*l_544) = 0x6B1D3010L) == ((l_545 , 0xF9L) < (((*l_546) = l_543) >= ((65535UL >= ((*l_549) = (((*l_548) = g_209) || g_202.f0))) ^ l_550)))))), g_11, l_551[7][0], p_37, l_545.f3) || g_181.f2) == l_545.f0) == g_11); + l_553 ^= (*l_544); + if (g_144) + goto lbl_558; +lbl_558: + g_16 = func_2(((*l_554) = (*l_544)), l_551[8][3], (*p_37), (((safe_lshift_func_uint16_t_u_u((((&g_181 == (l_545 , &g_181)) == (*l_544)) <= 65526UL), 3)) ^ ((!((*l_544) | l_557[1])) <= (*l_544))) , l_545), (*g_201)); + (*g_537) = (*p_37); + return (*g_537); +} + + +/* ------------------------------------------ */ +/* + * reads : g_11 g_77 g_16 g_71 g_82 + * writes: + */ +static int32_t ** func_38(int16_t p_39, int8_t p_40, union U2 p_41, union U0 p_42) +{ /* block id: 19 */ + union U2 l_87 = {-6L}; + int16_t l_92 = 0x69BAL; + int32_t *l_101[5][9][5] = {{{&g_102,&g_11,&g_11,&g_11,(void*)0},{(void*)0,&g_102,(void*)0,&g_102,&g_102},{(void*)0,(void*)0,&g_102,&g_11,&g_11},{&g_11,&g_11,(void*)0,&g_11,&g_11},{&g_102,&g_11,&g_102,&g_11,&g_102},{&g_102,&g_11,&g_102,&g_11,(void*)0},{&g_11,&g_102,(void*)0,&g_11,&g_102},{&g_102,&g_102,&g_102,(void*)0,&g_11},{&g_102,&g_102,&g_11,&g_11,(void*)0}},{{&g_102,(void*)0,&g_11,&g_11,(void*)0},{&g_102,&g_102,&g_102,&g_11,&g_11},{&g_11,&g_11,&g_11,&g_11,&g_102},{&g_11,&g_102,&g_11,&g_11,&g_102},{&g_102,&g_11,&g_102,&g_102,&g_102},{(void*)0,&g_102,&g_102,&g_11,&g_11},{&g_11,&g_102,&g_102,(void*)0,&g_11},{&g_11,&g_102,(void*)0,(void*)0,&g_11},{(void*)0,&g_102,&g_102,&g_11,&g_11}},{{&g_102,&g_11,&g_102,&g_11,&g_11},{&g_102,&g_102,&g_102,&g_102,&g_11},{&g_102,&g_102,&g_11,&g_102,&g_102},{&g_11,(void*)0,&g_102,&g_102,&g_102},{&g_11,&g_11,&g_11,&g_102,&g_102},{&g_102,&g_11,&g_102,&g_102,&g_11},{&g_102,&g_102,&g_102,&g_102,(void*)0},{&g_102,(void*)0,(void*)0,&g_11,&g_102},{&g_102,&g_102,(void*)0,(void*)0,&g_11}},{{&g_102,(void*)0,&g_11,&g_102,&g_11},{&g_102,&g_102,(void*)0,&g_102,&g_102},{&g_102,(void*)0,(void*)0,&g_11,&g_102},{&g_102,&g_11,&g_11,(void*)0,&g_11},{&g_102,(void*)0,&g_102,&g_11,(void*)0},{&g_11,&g_102,&g_102,&g_102,(void*)0},{&g_11,&g_11,&g_102,&g_102,&g_102},{&g_102,&g_11,&g_11,&g_102,&g_102},{&g_102,&g_102,&g_11,&g_11,&g_102}},{{(void*)0,&g_11,&g_102,(void*)0,&g_102},{(void*)0,&g_11,&g_102,&g_102,&g_102},{&g_102,&g_102,&g_102,&g_102,&g_11},{&g_102,&g_11,&g_102,&g_11,&g_102},{&g_11,&g_11,&g_102,&g_11,&g_102},{&g_11,&g_102,&g_102,&g_11,&g_102},{(void*)0,(void*)0,(void*)0,&g_102,&g_102},{(void*)0,&g_102,(void*)0,&g_11,&g_102},{&g_11,&g_102,&g_102,&g_102,&g_102}}}; + uint32_t l_103 = 0xBDDE1E78L; + int8_t l_114 = 0xFAL; + uint32_t l_158 = 7UL; + union U0 *l_180 = &g_181; + union U1 l_193 = {1L}; + int32_t *l_196 = &g_102; + uint32_t l_212 = 0xCC8533B4L; + uint16_t l_263 = 0x3F35L; + int32_t **l_294 = (void*)0; + int32_t ***l_295 = (void*)0; + int32_t ***l_296 = (void*)0; + int32_t ***l_297 = &g_82; + const int32_t **l_298[9] = {&g_16,&g_16,&g_16,&g_16,&g_16,&g_16,&g_16,&g_16,&g_16}; + union U2 **l_324 = &g_282; + union U2 **l_325 = &g_282; + union U1 l_467 = {0x564CF22EL}; + uint32_t l_497 = 0xAD274BE0L; + int32_t l_502[2]; + int16_t l_536 = 7L; + int i, j, k; + for (i = 0; i < 2; i++) + l_502[i] = 1L; + l_103 |= ((((l_87 , p_42) , p_42) , ((g_11 != g_11) != (safe_lshift_func_uint16_t_u_s((g_77 , (safe_mul_func_int8_t_s_s((l_92 < l_92), (safe_mul_func_uint16_t_u_u((safe_lshift_func_uint8_t_u_u(((safe_div_func_int32_t_s_s((safe_div_func_int16_t_s_s((((p_41.f0 = p_42.f4) | (*g_16)) == 0xF910L), g_71)), 0xBA0E3889L)) | 0UL), l_92)), l_92))))), 9)))) ^ 0x556CL); + return (*l_297); +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: + */ +static int8_t func_45(uint8_t p_46, uint16_t p_47, union U2 p_48, int32_t ** p_49, const uint32_t p_50) +{ /* block id: 16 */ + return p_50; +} + + +/* ------------------------------------------ */ +/* + * reads : g_71 g_78 + * writes: g_71 g_78 + */ +static int8_t func_55(uint8_t p_56, union U1 p_57, int32_t * p_58, uint8_t p_59) +{ /* block id: 12 */ + int16_t l_69 = 1L; + int32_t *l_70[8] = {&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11,&g_11}; + int8_t l_74[4][7] = {{4L,4L,4L,4L,4L,4L,4L},{5L,(-5L),5L,(-5L),5L,(-5L),5L},{4L,4L,4L,4L,4L,4L,4L},{5L,(-5L),5L,(-5L),5L,(-5L),5L}}; + int32_t l_81 = 1L; + int i, j; + g_71++; + ++g_78[2][2]; + return l_81; +} + + +/* ------------------------------------------ */ +/* + * reads : g_66 + * writes: g_16 g_66 + */ +static int32_t * func_61(int16_t p_62, const int32_t ** p_63) +{ /* block id: 8 */ + int32_t *l_64 = &g_11; + int32_t *l_65[1]; + int i; + for (i = 0; i < 1; i++) + l_65[i] = &g_11; + (*p_63) = l_64; + ++g_66[0]; + return l_64; +} + + + + +/* ---------------------------------------- */ +int main (int argc, char* argv[]) +{ + int i, j; + int print_hash_value = 0; + if (argc == 2 && strcmp(argv[1], "1") == 0) print_hash_value = 1; + platform_main_begin(); + crc32_gentab(); + func_1(); + for (i = 0; i < 5; i++) + { + transparent_crc(g_9[i].f0, "g_9[i].f0", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_11, "g_11", print_hash_value); + for (i = 0; i < 1; i++) + { + transparent_crc(g_66[i], "g_66[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_71, "g_71", print_hash_value); + transparent_crc(g_75, "g_75", print_hash_value); + for (i = 0; i < 5; i++) + { + transparent_crc(g_76[i], "g_76[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_77, "g_77", print_hash_value); + for (i = 0; i < 7; i++) + { + for (j = 0; j < 9; j++) + { + transparent_crc(g_78[i][j], "g_78[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_102, "g_102", print_hash_value); + transparent_crc(g_135, "g_135", print_hash_value); + transparent_crc(g_144, "g_144", print_hash_value); + transparent_crc(g_160, "g_160", print_hash_value); + transparent_crc(g_181.f2, "g_181.f2", print_hash_value); + transparent_crc(g_181.f4, "g_181.f4", print_hash_value); + transparent_crc(g_202.f0, "g_202.f0", print_hash_value); + transparent_crc(g_202.f1, "g_202.f1", print_hash_value); + transparent_crc(g_209, "g_209", print_hash_value); + transparent_crc(g_211, "g_211", print_hash_value); + transparent_crc(g_231, "g_231", print_hash_value); + transparent_crc(g_328, "g_328", print_hash_value); + transparent_crc(g_390, "g_390", print_hash_value); + transparent_crc(g_468, "g_468", print_hash_value); + transparent_crc(g_547, "g_547", print_hash_value); + transparent_crc(g_573, "g_573", print_hash_value); + transparent_crc(g_575, "g_575", print_hash_value); + transparent_crc(g_582, "g_582", print_hash_value); + transparent_crc(g_649.f0, "g_649.f0", print_hash_value); + transparent_crc(g_649.f1, "g_649.f1", print_hash_value); + transparent_crc(g_666, "g_666", print_hash_value); + transparent_crc(g_668, "g_668", print_hash_value); + transparent_crc(g_756, "g_756", print_hash_value); + transparent_crc(g_860, "g_860", print_hash_value); + transparent_crc(g_894, "g_894", print_hash_value); + transparent_crc(g_947, "g_947", print_hash_value); + for (i = 0; i < 5; i++) + { + for (j = 0; j < 3; j++) + { + transparent_crc(g_966[i][j], "g_966[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + for (i = 0; i < 9; i++) + { + for (j = 0; j < 9; j++) + { + transparent_crc(g_1059[i][j].f0, "g_1059[i][j].f0", print_hash_value); + transparent_crc(g_1059[i][j].f1, "g_1059[i][j].f1", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_1124, "g_1124", print_hash_value); + transparent_crc(g_1254, "g_1254", print_hash_value); + transparent_crc(g_1294, "g_1294", print_hash_value); + transparent_crc(g_1418, "g_1418", print_hash_value); + transparent_crc(g_1501, "g_1501", print_hash_value); + transparent_crc(g_1597, "g_1597", print_hash_value); + transparent_crc(g_1613, "g_1613", print_hash_value); + for (i = 0; i < 1; i++) + { + transparent_crc(g_1665[i], "g_1665[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value); + return 0; +} + +/************************ statistics ************************* +XXX max struct depth: 0 +breakdown: + depth: 0, occurrence: 592 +XXX total union variables: 93 + +XXX non-zero bitfields defined in structs: 1 +XXX zero bitfields defined in structs: 0 +XXX const bitfields defined in structs: 0 +XXX volatile bitfields defined in structs: 0 +XXX structs with bitfields in the program: 68 +breakdown: + indirect level: 0, occurrence: 51 + indirect level: 1, occurrence: 5 + indirect level: 2, occurrence: 5 + indirect level: 3, occurrence: 5 + indirect level: 4, occurrence: 2 +XXX full-bitfields structs in the program: 0 +breakdown: +XXX times a bitfields struct's address is taken: 23 +XXX times a bitfields struct on LHS: 4 +XXX times a bitfields struct on RHS: 99 +XXX times a single bitfield on LHS: 18 +XXX times a single bitfield on RHS: 43 + +XXX max expression depth: 41 +breakdown: + depth: 1, occurrence: 83 + depth: 2, occurrence: 20 + depth: 6, occurrence: 1 + depth: 7, occurrence: 2 + depth: 9, occurrence: 1 + depth: 16, occurrence: 1 + depth: 17, occurrence: 1 + depth: 19, occurrence: 1 + depth: 20, occurrence: 1 + depth: 23, occurrence: 1 + depth: 24, occurrence: 1 + depth: 25, occurrence: 1 + depth: 26, occurrence: 1 + depth: 35, occurrence: 1 + depth: 41, occurrence: 1 + +XXX total number of pointers: 403 + +XXX times a variable address is taken: 932 +XXX times a pointer is dereferenced on RHS: 354 +breakdown: + depth: 1, occurrence: 286 + depth: 2, occurrence: 54 + depth: 3, occurrence: 10 + depth: 4, occurrence: 4 +XXX times a pointer is dereferenced on LHS: 297 +breakdown: + depth: 1, occurrence: 272 + depth: 2, occurrence: 21 + depth: 3, occurrence: 4 +XXX times a pointer is compared with null: 26 +XXX times a pointer is compared with address of another variable: 7 +XXX times a pointer is compared with another pointer: 10 +XXX times a pointer is qualified to be dereferenced: 6446 + +XXX max dereference level: 4 +breakdown: + level: 0, occurrence: 0 + level: 1, occurrence: 1057 + level: 2, occurrence: 375 + level: 3, occurrence: 48 + level: 4, occurrence: 15 +XXX number of pointers point to pointers: 164 +XXX number of pointers point to scalars: 201 +XXX number of pointers point to structs: 0 +XXX percent of pointers has null in alias set: 31 +XXX average alias set size: 1.41 + +XXX times a non-volatile is read: 2062 +XXX times a non-volatile is write: 900 +XXX times a volatile is read: 0 +XXX times read thru a pointer: 0 +XXX times a volatile is write: 0 +XXX times written thru a pointer: 0 +XXX times a volatile is available for access: 0 +XXX percentage of non-volatile access: 100 + +XXX forward jumps: 1 +XXX backward jumps: 12 + +XXX stmts: 80 +XXX max block depth: 5 +breakdown: + depth: 0, occurrence: 27 + depth: 1, occurrence: 4 + depth: 2, occurrence: 7 + depth: 3, occurrence: 14 + depth: 4, occurrence: 14 + depth: 5, occurrence: 14 + +XXX percentage a fresh-made variable is used: 18.2 +XXX percentage an existing variable is used: 81.8 +FYI: the random generator makes assumptions about the integer size. See platform.info for more details. +********************* end of statistics **********************/ + diff --git a/tests/fuzz/7.c.txt b/tests/fuzz/7.c.txt new file mode 100644 index 0000000000000..9d4c76906b55b --- /dev/null +++ b/tests/fuzz/7.c.txt @@ -0,0 +1 @@ +checksum = 40E796EF From 485cee0a7ae5a251f8a83bbb3e3b02802a1b4591 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 08:29:07 -0800 Subject: [PATCH 274/326] parse volatile in cmpxchg, closes #875 --- src/intertyper.js | 1 + tests/cases/cmpxchg_volatile.ll | 548 ++++++++++++++++++++++++++++++++ 2 files changed, 549 insertions(+) create mode 100644 tests/cases/cmpxchg_volatile.ll diff --git a/src/intertyper.js b/src/intertyper.js index cc0f045d1ed32..6c88e765caedb 100644 --- a/src/intertyper.js +++ b/src/intertyper.js @@ -746,6 +746,7 @@ function intertyper(data, sidePass, baseLineNums) { item.tokens.splice(1, 1); } else { assert(item.tokens[0].text == 'cmpxchg') + if (item.tokens[1].text == 'volatile') item.tokens.splice(1, 1); item.op = 'cmpxchg'; } var last = getTokenIndexByText(item.tokens, ';'); diff --git a/tests/cases/cmpxchg_volatile.ll b/tests/cases/cmpxchg_volatile.ll new file mode 100644 index 0000000000000..019fd833c0f55 --- /dev/null +++ b/tests/cases/cmpxchg_volatile.ll @@ -0,0 +1,548 @@ +; ModuleID = 'ta2.bc' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128" +target triple = "i386-pc-linux-gnu" + +%"struct.std::__1::__atomic_base.0" = type { i8 } +%"struct.std::__1::__atomic_base" = type { %"struct.std::__1::__atomic_base.0" } +%"struct.std::__1::atomic" = type { %"struct.std::__1::__atomic_base" } + +@.str = private unnamed_addr constant [8 x i8] c"ta2.cpp\00", align 1 +@__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv = private unnamed_addr constant [63 x i8] c"void do_test() [A = volatile std::__1::atomic, T = char]\00", align 1 +@.str1 = private unnamed_addr constant [43 x i8] c"obj.compare_exchange_weak(x, T(2)) == true\00", align 1 +@.str2 = private unnamed_addr constant [12 x i8] c"obj == T(2)\00", align 1 +@.str3 = private unnamed_addr constant [10 x i8] c"x == T(3)\00", align 1 +@.str4 = private unnamed_addr constant [44 x i8] c"obj.compare_exchange_weak(x, T(1)) == false\00", align 1 +@.str5 = private unnamed_addr constant [10 x i8] c"x == T(2)\00", align 1 +@.str6 = private unnamed_addr constant [45 x i8] c"obj.compare_exchange_strong(x, T(1)) == true\00", align 1 +@.str7 = private unnamed_addr constant [12 x i8] c"obj == T(1)\00", align 1 +@.str8 = private unnamed_addr constant [15 x i8] c"hello, world!\0A\00", align 1 ; [#uses=1 type=[15 x i8]*] + +define i32 @main() ssp { +entry: + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str8, i32 0, i32 0)) ; [#uses=0 type=i32] + call void @_Z4testIVNSt3__16atomicIcEEcEvv() + ret i32 0 +} + +define linkonce_odr void @_Z4testIVNSt3__16atomicIcEEcEvv() ssp { +entry: + call void @_Z7do_testIVNSt3__16atomicIcEEcEvv() + call void @_Z7do_testIVNSt3__16atomicIcEEcEvv() + ret void +} + +define linkonce_odr void @_Z7do_testIVNSt3__16atomicIcEEcEvv() ssp { +entry: + %this.addr.i.i110 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i111 = alloca i32, align 4 + %.atomicdst.i.i112 = alloca i8, align 1 + %this.addr.i113 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i90 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__e.addr.i91 = alloca i8*, align 4 + %__d.addr.i92 = alloca i8, align 1 + %__m.addr.i93 = alloca i32, align 4 + %.atomictmp.i94 = alloca i8, align 1 + %.atomicdst.i95 = alloca i8, align 1 + %this.addr.i.i79 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i80 = alloca i32, align 4 + %.atomicdst.i.i81 = alloca i8, align 1 + %this.addr.i82 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i60 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__e.addr.i61 = alloca i8*, align 4 + %__d.addr.i62 = alloca i8, align 1 + %__m.addr.i63 = alloca i32, align 4 + %.atomictmp.i64 = alloca i8, align 1 + %.atomicdst.i65 = alloca i8, align 1 + %this.addr.i.i49 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i50 = alloca i32, align 4 + %.atomicdst.i.i51 = alloca i8, align 1 + %this.addr.i52 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i46 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__e.addr.i = alloca i8*, align 4 + %__d.addr.i47 = alloca i8, align 1 + %__m.addr.i = alloca i32, align 4 + %.atomictmp.i = alloca i8, align 1 + %.atomicdst.i = alloca i8, align 1 + %this.addr.i.i42 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__m.addr.i.i = alloca i32, align 4 + %.atomicdst.i.i = alloca i8, align 1 + %this.addr.i43 = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %this.addr.i.i.i.i = alloca %"struct.std::__1::__atomic_base.0"*, align 4 + %__d.addr.i.i.i.i = alloca i8, align 1 + %this.addr.i.i.i = alloca %"struct.std::__1::__atomic_base"*, align 4 + %__d.addr.i.i.i = alloca i8, align 1 + %this.addr.i.i = alloca %"struct.std::__1::atomic"*, align 4 + %__d.addr.i.i = alloca i8, align 1 + %this.addr.i = alloca %"struct.std::__1::atomic"*, align 4 + %__d.addr.i = alloca i8, align 1 + %obj = alloca %"struct.std::__1::atomic", align 1 + %x = alloca i8, align 1 + store %"struct.std::__1::atomic"* %obj, %"struct.std::__1::atomic"** %this.addr.i, align 4 + store i8 0, i8* %__d.addr.i, align 1 + %this1.i = load %"struct.std::__1::atomic"** %this.addr.i + %0 = load i8* %__d.addr.i, align 1 + store %"struct.std::__1::atomic"* %this1.i, %"struct.std::__1::atomic"** %this.addr.i.i, align 4 + store i8 %0, i8* %__d.addr.i.i, align 1 + %this1.i.i = load %"struct.std::__1::atomic"** %this.addr.i.i + %1 = bitcast %"struct.std::__1::atomic"* %this1.i.i to %"struct.std::__1::__atomic_base"* + %2 = load i8* %__d.addr.i.i, align 1 + store %"struct.std::__1::__atomic_base"* %1, %"struct.std::__1::__atomic_base"** %this.addr.i.i.i, align 4 + store i8 %2, i8* %__d.addr.i.i.i, align 1 + %this1.i.i.i = load %"struct.std::__1::__atomic_base"** %this.addr.i.i.i + %3 = bitcast %"struct.std::__1::__atomic_base"* %this1.i.i.i to %"struct.std::__1::__atomic_base.0"* + %4 = load i8* %__d.addr.i.i.i, align 1 + store %"struct.std::__1::__atomic_base.0"* %3, %"struct.std::__1::__atomic_base.0"** %this.addr.i.i.i.i, align 4 + store i8 %4, i8* %__d.addr.i.i.i.i, align 1 + %this1.i.i.i.i = load %"struct.std::__1::__atomic_base.0"** %this.addr.i.i.i.i + %__a_.i.i.i.i = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i.i.i.i, i32 0, i32 0 + %5 = load i8* %__d.addr.i.i.i.i, align 1 + store i8 %5, i8* %__a_.i.i.i.i, align 1 + %6 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %6, %"struct.std::__1::__atomic_base.0"** %this.addr.i113, align 4 + %this1.i114 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i113 + store %"struct.std::__1::__atomic_base.0"* %this1.i114, %"struct.std::__1::__atomic_base.0"** %this.addr.i.i110, align 4 + store i32 5, i32* %__m.addr.i.i111, align 4 + %this1.i.i115 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i.i110 + %__a_.i.i116 = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i.i115, i32 0, i32 0 + %7 = load i32* %__m.addr.i.i111, align 4 + switch i32 %7, label %monotonic.i.i117 [ + i32 1, label %acquire.i.i118 + i32 2, label %acquire.i.i118 + i32 5, label %seqcst.i.i119 + ] + +monotonic.i.i117: ; preds = %entry + %8 = load atomic volatile i8* %__a_.i.i116 monotonic, align 1 + store i8 %8, i8* %.atomicdst.i.i112, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + +acquire.i.i118: ; preds = %entry, %entry + %9 = load atomic volatile i8* %__a_.i.i116 acquire, align 1 + store i8 %9, i8* %.atomicdst.i.i112, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + +seqcst.i.i119: ; preds = %entry + %10 = load atomic volatile i8* %__a_.i.i116 seq_cst, align 1 + store i8 %10, i8* %.atomicdst.i.i112, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + +_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120: ; preds = %seqcst.i.i119, %acquire.i.i118, %monotonic.i.i117 + %11 = load i8* %.atomicdst.i.i112 + store i8 %11, i8* %x, align 1 + %12 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %12, %"struct.std::__1::__atomic_base.0"** %this.addr.i90, align 4 + store i8* %x, i8** %__e.addr.i91, align 4 + store i8 2, i8* %__d.addr.i92, align 1 + store i32 5, i32* %__m.addr.i93, align 4 + %this1.i96 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i90 + %__a_.i97 = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i96, i32 0, i32 0 + %13 = load i32* %__m.addr.i93, align 4 + %14 = load i8** %__e.addr.i91, align 4 + %15 = load i8* %__d.addr.i92, align 1 + store i8 %15, i8* %.atomictmp.i94 + %16 = load i32* %__m.addr.i93, align 4 + switch i32 %13, label %monotonic.i99 [ + i32 1, label %acquire.i101 + i32 2, label %acquire.i101 + i32 3, label %release.i103 + i32 4, label %acqrel.i105 + i32 5, label %seqcst.i107 + ] + +monotonic.i99: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %17 = load i8* %14, align 1 + %18 = load i8* %.atomictmp.i94, align 1 + %19 = cmpxchg volatile i8* %__a_.i97, i8 %17, i8 %18 monotonic + store i8 %19, i8* %14, align 1 + %20 = icmp eq i8 %19, %17 + %frombool.i98 = zext i1 %20 to i8 + store i8 %frombool.i98, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +acquire.i101: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120, %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %21 = load i8* %14, align 1 + %22 = load i8* %.atomictmp.i94, align 1 + %23 = cmpxchg volatile i8* %__a_.i97, i8 %21, i8 %22 acquire + store i8 %23, i8* %14, align 1 + %24 = icmp eq i8 %23, %21 + %frombool2.i100 = zext i1 %24 to i8 + store i8 %frombool2.i100, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +release.i103: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %25 = load i8* %14, align 1 + %26 = load i8* %.atomictmp.i94, align 1 + %27 = cmpxchg volatile i8* %__a_.i97, i8 %25, i8 %26 release + store i8 %27, i8* %14, align 1 + %28 = icmp eq i8 %27, %25 + %frombool3.i102 = zext i1 %28 to i8 + store i8 %frombool3.i102, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +acqrel.i105: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %29 = load i8* %14, align 1 + %30 = load i8* %.atomictmp.i94, align 1 + %31 = cmpxchg volatile i8* %__a_.i97, i8 %29, i8 %30 acq_rel + store i8 %31, i8* %14, align 1 + %32 = icmp eq i8 %31, %29 + %frombool4.i104 = zext i1 %32 to i8 + store i8 %frombool4.i104, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +seqcst.i107: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit120 + %33 = load i8* %14, align 1 + %34 = load i8* %.atomictmp.i94, align 1 + %35 = cmpxchg volatile i8* %__a_.i97, i8 %33, i8 %34 seq_cst + store i8 %35, i8* %14, align 1 + %36 = icmp eq i8 %35, %33 + %frombool5.i106 = zext i1 %36 to i8 + store i8 %frombool5.i106, i8* %.atomicdst.i95 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + +_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109: ; preds = %seqcst.i107, %acqrel.i105, %release.i103, %acquire.i101, %monotonic.i99 + %37 = load i8* %.atomicdst.i95 + %tobool.i108 = trunc i8 %37 to i1 + %conv = zext i1 %tobool.i108 to i32 + %cmp = icmp eq i32 %conv, 1 + br i1 %cmp, label %cond.true, label %cond.false + +cond.true: ; preds = %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + br label %cond.end + +cond.false: ; preds = %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit109 + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 21, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([43 x i8]* @.str1, i32 0, i32 0)) + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %38 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %38, %"struct.std::__1::__atomic_base.0"** %this.addr.i82, align 4 + %this1.i83 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i82 + store %"struct.std::__1::__atomic_base.0"* %this1.i83, %"struct.std::__1::__atomic_base.0"** %this.addr.i.i79, align 4 + store i32 5, i32* %__m.addr.i.i80, align 4 + %this1.i.i84 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i.i79 + %__a_.i.i85 = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i.i84, i32 0, i32 0 + %39 = load i32* %__m.addr.i.i80, align 4 + switch i32 %39, label %monotonic.i.i86 [ + i32 1, label %acquire.i.i87 + i32 2, label %acquire.i.i87 + i32 5, label %seqcst.i.i88 + ] + +monotonic.i.i86: ; preds = %cond.end + %40 = load atomic volatile i8* %__a_.i.i85 monotonic, align 1 + store i8 %40, i8* %.atomicdst.i.i81, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit89 + +acquire.i.i87: ; preds = %cond.end, %cond.end + %41 = load atomic volatile i8* %__a_.i.i85 acquire, align 1 + store i8 %41, i8* %.atomicdst.i.i81, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit89 + +seqcst.i.i88: ; preds = %cond.end + %42 = load atomic volatile i8* %__a_.i.i85 seq_cst, align 1 + store i8 %42, i8* %.atomicdst.i.i81, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit89 + +_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit89: ; preds = %seqcst.i.i88, %acquire.i.i87, %monotonic.i.i86 + %43 = load i8* %.atomicdst.i.i81 + %conv3 = sext i8 %43 to i32 + %cmp4 = icmp eq i32 %conv3, 2 + br i1 %cmp4, label %cond.true5, label %cond.false6 + +cond.true5: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit89 + br label %cond.end7 + +cond.false6: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit89 + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 22, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str2, i32 0, i32 0)) + br label %cond.end7 + +cond.end7: ; preds = %cond.false6, %cond.true5 + %44 = load i8* %x, align 1 + %conv8 = sext i8 %44 to i32 + %cmp9 = icmp eq i32 %conv8, 3 + br i1 %cmp9, label %cond.true10, label %cond.false11 + +cond.true10: ; preds = %cond.end7 + br label %cond.end12 + +cond.false11: ; preds = %cond.end7 + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 23, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str3, i32 0, i32 0)) + br label %cond.end12 + +cond.end12: ; preds = %cond.false11, %cond.true10 + %45 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %45, %"struct.std::__1::__atomic_base.0"** %this.addr.i60, align 4 + store i8* %x, i8** %__e.addr.i61, align 4 + store i8 1, i8* %__d.addr.i62, align 1 + store i32 5, i32* %__m.addr.i63, align 4 + %this1.i66 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i60 + %__a_.i67 = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i66, i32 0, i32 0 + %46 = load i32* %__m.addr.i63, align 4 + %47 = load i8** %__e.addr.i61, align 4 + %48 = load i8* %__d.addr.i62, align 1 + store i8 %48, i8* %.atomictmp.i64 + %49 = load i32* %__m.addr.i63, align 4 + switch i32 %46, label %monotonic.i69 [ + i32 1, label %acquire.i71 + i32 2, label %acquire.i71 + i32 3, label %release.i73 + i32 4, label %acqrel.i75 + i32 5, label %seqcst.i77 + ] + +monotonic.i69: ; preds = %cond.end12 + %50 = load i8* %47, align 1 + %51 = load i8* %.atomictmp.i64, align 1 + %52 = cmpxchg volatile i8* %__a_.i67, i8 %50, i8 %51 monotonic + store i8 %52, i8* %47, align 1 + %53 = icmp eq i8 %52, %50 + %frombool.i68 = zext i1 %53 to i8 + store i8 %frombool.i68, i8* %.atomicdst.i65 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit + +acquire.i71: ; preds = %cond.end12, %cond.end12 + %54 = load i8* %47, align 1 + %55 = load i8* %.atomictmp.i64, align 1 + %56 = cmpxchg volatile i8* %__a_.i67, i8 %54, i8 %55 acquire + store i8 %56, i8* %47, align 1 + %57 = icmp eq i8 %56, %54 + %frombool2.i70 = zext i1 %57 to i8 + store i8 %frombool2.i70, i8* %.atomicdst.i65 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit + +release.i73: ; preds = %cond.end12 + %58 = load i8* %47, align 1 + %59 = load i8* %.atomictmp.i64, align 1 + %60 = cmpxchg volatile i8* %__a_.i67, i8 %58, i8 %59 release + store i8 %60, i8* %47, align 1 + %61 = icmp eq i8 %60, %58 + %frombool3.i72 = zext i1 %61 to i8 + store i8 %frombool3.i72, i8* %.atomicdst.i65 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit + +acqrel.i75: ; preds = %cond.end12 + %62 = load i8* %47, align 1 + %63 = load i8* %.atomictmp.i64, align 1 + %64 = cmpxchg volatile i8* %__a_.i67, i8 %62, i8 %63 acq_rel + store i8 %64, i8* %47, align 1 + %65 = icmp eq i8 %64, %62 + %frombool4.i74 = zext i1 %65 to i8 + store i8 %frombool4.i74, i8* %.atomicdst.i65 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit + +seqcst.i77: ; preds = %cond.end12 + %66 = load i8* %47, align 1 + %67 = load i8* %.atomictmp.i64, align 1 + %68 = cmpxchg volatile i8* %__a_.i67, i8 %66, i8 %67 seq_cst + store i8 %68, i8* %47, align 1 + %69 = icmp eq i8 %68, %66 + %frombool5.i76 = zext i1 %69 to i8 + store i8 %frombool5.i76, i8* %.atomicdst.i65 + br label %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit + +_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit: ; preds = %seqcst.i77, %acqrel.i75, %release.i73, %acquire.i71, %monotonic.i69 + %70 = load i8* %.atomicdst.i65 + %tobool.i78 = trunc i8 %70 to i1 + %conv14 = zext i1 %tobool.i78 to i32 + %cmp15 = icmp eq i32 %conv14, 0 + br i1 %cmp15, label %cond.true16, label %cond.false17 + +cond.true16: ; preds = %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit + br label %cond.end18 + +cond.false17: ; preds = %_ZNVSt3__113__atomic_baseIcLb0EE21compare_exchange_weakERccNS_12memory_orderE.exit + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 24, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([44 x i8]* @.str4, i32 0, i32 0)) + br label %cond.end18 + +cond.end18: ; preds = %cond.false17, %cond.true16 + %71 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %71, %"struct.std::__1::__atomic_base.0"** %this.addr.i52, align 4 + %this1.i53 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i52 + store %"struct.std::__1::__atomic_base.0"* %this1.i53, %"struct.std::__1::__atomic_base.0"** %this.addr.i.i49, align 4 + store i32 5, i32* %__m.addr.i.i50, align 4 + %this1.i.i54 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i.i49 + %__a_.i.i55 = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i.i54, i32 0, i32 0 + %72 = load i32* %__m.addr.i.i50, align 4 + switch i32 %72, label %monotonic.i.i56 [ + i32 1, label %acquire.i.i57 + i32 2, label %acquire.i.i57 + i32 5, label %seqcst.i.i58 + ] + +monotonic.i.i56: ; preds = %cond.end18 + %73 = load atomic volatile i8* %__a_.i.i55 monotonic, align 1 + store i8 %73, i8* %.atomicdst.i.i51, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit59 + +acquire.i.i57: ; preds = %cond.end18, %cond.end18 + %74 = load atomic volatile i8* %__a_.i.i55 acquire, align 1 + store i8 %74, i8* %.atomicdst.i.i51, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit59 + +seqcst.i.i58: ; preds = %cond.end18 + %75 = load atomic volatile i8* %__a_.i.i55 seq_cst, align 1 + store i8 %75, i8* %.atomicdst.i.i51, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit59 + +_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit59: ; preds = %seqcst.i.i58, %acquire.i.i57, %monotonic.i.i56 + %76 = load i8* %.atomicdst.i.i51 + %conv20 = sext i8 %76 to i32 + %cmp21 = icmp eq i32 %conv20, 2 + br i1 %cmp21, label %cond.true22, label %cond.false23 + +cond.true22: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit59 + br label %cond.end24 + +cond.false23: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit59 + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 25, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str2, i32 0, i32 0)) + br label %cond.end24 + +cond.end24: ; preds = %cond.false23, %cond.true22 + %77 = load i8* %x, align 1 + %conv25 = sext i8 %77 to i32 + %cmp26 = icmp eq i32 %conv25, 2 + br i1 %cmp26, label %cond.true27, label %cond.false28 + +cond.true27: ; preds = %cond.end24 + br label %cond.end29 + +cond.false28: ; preds = %cond.end24 + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 26, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str5, i32 0, i32 0)) + br label %cond.end29 + +cond.end29: ; preds = %cond.false28, %cond.true27 + store i8 2, i8* %x, align 1 + %78 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %78, %"struct.std::__1::__atomic_base.0"** %this.addr.i46, align 4 + store i8* %x, i8** %__e.addr.i, align 4 + store i8 1, i8* %__d.addr.i47, align 1 + store i32 5, i32* %__m.addr.i, align 4 + %this1.i48 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i46 + %__a_.i = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i48, i32 0, i32 0 + %79 = load i32* %__m.addr.i, align 4 + %80 = load i8** %__e.addr.i, align 4 + %81 = load i8* %__d.addr.i47, align 1 + store i8 %81, i8* %.atomictmp.i + %82 = load i32* %__m.addr.i, align 4 + switch i32 %79, label %monotonic.i [ + i32 1, label %acquire.i + i32 2, label %acquire.i + i32 3, label %release.i + i32 4, label %acqrel.i + i32 5, label %seqcst.i + ] + +monotonic.i: ; preds = %cond.end29 + %83 = load i8* %80, align 1 + %84 = load i8* %.atomictmp.i, align 1 + %85 = cmpxchg volatile i8* %__a_.i, i8 %83, i8 %84 monotonic + store i8 %85, i8* %80, align 1 + %86 = icmp eq i8 %85, %83 + %frombool.i = zext i1 %86 to i8 + store i8 %frombool.i, i8* %.atomicdst.i + br label %_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit + +acquire.i: ; preds = %cond.end29, %cond.end29 + %87 = load i8* %80, align 1 + %88 = load i8* %.atomictmp.i, align 1 + %89 = cmpxchg volatile i8* %__a_.i, i8 %87, i8 %88 acquire + store i8 %89, i8* %80, align 1 + %90 = icmp eq i8 %89, %87 + %frombool2.i = zext i1 %90 to i8 + store i8 %frombool2.i, i8* %.atomicdst.i + br label %_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit + +release.i: ; preds = %cond.end29 + %91 = load i8* %80, align 1 + %92 = load i8* %.atomictmp.i, align 1 + %93 = cmpxchg volatile i8* %__a_.i, i8 %91, i8 %92 release + store i8 %93, i8* %80, align 1 + %94 = icmp eq i8 %93, %91 + %frombool3.i = zext i1 %94 to i8 + store i8 %frombool3.i, i8* %.atomicdst.i + br label %_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit + +acqrel.i: ; preds = %cond.end29 + %95 = load i8* %80, align 1 + %96 = load i8* %.atomictmp.i, align 1 + %97 = cmpxchg volatile i8* %__a_.i, i8 %95, i8 %96 acq_rel + store i8 %97, i8* %80, align 1 + %98 = icmp eq i8 %97, %95 + %frombool4.i = zext i1 %98 to i8 + store i8 %frombool4.i, i8* %.atomicdst.i + br label %_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit + +seqcst.i: ; preds = %cond.end29 + %99 = load i8* %80, align 1 + %100 = load i8* %.atomictmp.i, align 1 + %101 = cmpxchg volatile i8* %__a_.i, i8 %99, i8 %100 seq_cst + store i8 %101, i8* %80, align 1 + %102 = icmp eq i8 %101, %99 + %frombool5.i = zext i1 %102 to i8 + store i8 %frombool5.i, i8* %.atomicdst.i + br label %_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit + +_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit: ; preds = %seqcst.i, %acqrel.i, %release.i, %acquire.i, %monotonic.i + %103 = load i8* %.atomicdst.i + %tobool.i = trunc i8 %103 to i1 + %conv31 = zext i1 %tobool.i to i32 + %cmp32 = icmp eq i32 %conv31, 1 + br i1 %cmp32, label %cond.true33, label %cond.false34 + +cond.true33: ; preds = %_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit + br label %cond.end35 + +cond.false34: ; preds = %_ZNVSt3__113__atomic_baseIcLb0EE23compare_exchange_strongERccNS_12memory_orderE.exit + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 28, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([45 x i8]* @.str6, i32 0, i32 0)) + br label %cond.end35 + +cond.end35: ; preds = %cond.false34, %cond.true33 + %104 = bitcast %"struct.std::__1::atomic"* %obj to %"struct.std::__1::__atomic_base.0"* + store %"struct.std::__1::__atomic_base.0"* %104, %"struct.std::__1::__atomic_base.0"** %this.addr.i43, align 4 + %this1.i44 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i43 + store %"struct.std::__1::__atomic_base.0"* %this1.i44, %"struct.std::__1::__atomic_base.0"** %this.addr.i.i42, align 4 + store i32 5, i32* %__m.addr.i.i, align 4 + %this1.i.i45 = load %"struct.std::__1::__atomic_base.0"** %this.addr.i.i42 + %__a_.i.i = getelementptr inbounds %"struct.std::__1::__atomic_base.0"* %this1.i.i45, i32 0, i32 0 + %105 = load i32* %__m.addr.i.i, align 4 + switch i32 %105, label %monotonic.i.i [ + i32 1, label %acquire.i.i + i32 2, label %acquire.i.i + i32 5, label %seqcst.i.i + ] + +monotonic.i.i: ; preds = %cond.end35 + %106 = load atomic volatile i8* %__a_.i.i monotonic, align 1 + store i8 %106, i8* %.atomicdst.i.i, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit + +acquire.i.i: ; preds = %cond.end35, %cond.end35 + %107 = load atomic volatile i8* %__a_.i.i acquire, align 1 + store i8 %107, i8* %.atomicdst.i.i, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit + +seqcst.i.i: ; preds = %cond.end35 + %108 = load atomic volatile i8* %__a_.i.i seq_cst, align 1 + store i8 %108, i8* %.atomicdst.i.i, align 1 + br label %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit + +_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit: ; preds = %seqcst.i.i, %acquire.i.i, %monotonic.i.i + %109 = load i8* %.atomicdst.i.i + %conv37 = sext i8 %109 to i32 + %cmp38 = icmp eq i32 %conv37, 1 + br i1 %cmp38, label %cond.true39, label %cond.false40 + +cond.true39: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit + br label %cond.end41 + +cond.false40: ; preds = %_ZNVKSt3__113__atomic_baseIcLb0EEcvcEv.exit + call void @__assert_func(i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 29, i8* getelementptr inbounds ([63 x i8]* @__PRETTY_FUNCTION__._Z7do_testIVNSt3__16atomicIcEEcEvv, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str7, i32 0, i32 0)) + br label %cond.end41 + +cond.end41: ; preds = %cond.false40, %cond.true39 + ret void +} + +declare void @__assert_func(i8*, i32, i8*, i8*) +declare i32 @printf(i8*, ...) + From 01371349a2f9dffb41003ec68ac43220381bba9b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 10:15:24 -0800 Subject: [PATCH 275/326] optimize allocate()ion of zeroinit --- src/preamble.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/preamble.js b/src/preamble.js index 8bde7284f28c5..9bc68d8fe5185 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -412,14 +412,6 @@ Module['ALLOC_STACK'] = ALLOC_STACK; Module['ALLOC_STATIC'] = ALLOC_STATIC; Module['ALLOC_NONE'] = ALLOC_NONE; -// Simple unoptimized memset - necessary during startup -var _memset = function(ptr, value, num) { - var stop = ptr + num; - while (ptr < stop) { - {{{ makeSetValue('ptr++', 0, 'value', 'i8', null, true) }}}; - } -} - // allocate(): This is for internal use. You can use it yourself as well, but the interface // is a little tricky (see docs right below). The reason is that it is optimized // for multiple syntaxes to save space in generated code. So you should @@ -453,7 +445,18 @@ function allocate(slab, types, allocator, ptr) { } if (zeroinit) { - _memset(ret, 0, size); + var ptr = ret, stop; +#if USE_TYPED_ARRAYS == 2 + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + {{{ makeSetValue('ptr', '0', '0', 'i32', null, true) }}}; + } +#endif + stop = ret + size; + while (ptr < stop) { + {{{ makeSetValue('ptr++', '0', '0', 'i8', null, true) }}}; + } return ret; } From 1ee2b439f4265d5717a6450e1b26711f0ea85bb6 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 12:49:06 -0800 Subject: [PATCH 276/326] remove ASM_JS warning and add check for exception catching being off in it, the last remaining issue for it --- emcc | 3 --- src/compiler.js | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/emcc b/emcc index 300745400bbdb..b3581ea893f6f 100755 --- a/emcc +++ b/emcc @@ -1268,9 +1268,6 @@ try: execute(shlex.split(js_transform, posix=posix) + [os.path.abspath(final)]) if DEBUG: save_intermediate('transformed') - if shared.Settings.ASM_JS: # XXX temporary wrapping for testing purposes - print >> sys.stderr, 'emcc: ASM_JS mode is highly experimental, and will not work on most codebases yet. It is NOT recommended that you try this yet.' - # It is useful to run several js optimizer passes together, to save on unneeded unparsing/reparsing js_optimizer_queue = [] def flush_js_optimizer_queue(): diff --git a/src/compiler.js b/src/compiler.js index 14816f1e7029f..b40891a537ce0 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -172,6 +172,7 @@ assert(!(USE_TYPED_ARRAYS === 2 && QUANTUM_SIZE !== 4), 'For USE_TYPED_ARRAYS == if (ASM_JS) { assert(!ALLOW_MEMORY_GROWTH, 'Cannot grow asm.js heap'); assert((TOTAL_MEMORY&(TOTAL_MEMORY-1)) == 0, 'asm.js heap must be power of 2'); + assert(DISABLE_EXCEPTION_CATCHING == 1, 'asm.js does not support C++ exceptions yet'); } assert(!(!NAMED_GLOBALS && BUILD_AS_SHARED_LIB)); // shared libraries must have named globals From 3bd0991eb432b0c7ada786a008abf9bf545405a0 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 15:00:00 -0800 Subject: [PATCH 277/326] fix test_cases/inttoptrfloat.ll --- tests/cases/inttoptrfloat.ll | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/cases/inttoptrfloat.ll b/tests/cases/inttoptrfloat.ll index 607539fe20b93..c3349fc4fd587 100644 --- a/tests/cases/inttoptrfloat.ll +++ b/tests/cases/inttoptrfloat.ll @@ -7,11 +7,12 @@ target triple = "i386-pc-linux-gnu" ; [#uses=0] define i32 @main() { entry: - %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), float %b) ; [#uses=0 type=i32] + %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0)) ; [#uses=0 type=i32] %ff = alloca float, align 4 %a = load float* inttoptr (i32 4 to float*), align 4 store float %a, float* %ff, align 4 %b = load float* %ff, align 4 + %call2 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([15 x i8]* @.str, i32 0, i32 0), float %b) ; [#uses=0 type=i32] ret i32 1 } From 8cc0273ae706c88e403ddacefbe795bb9244ab1d Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 15:23:25 -0800 Subject: [PATCH 278/326] remove no-longer-needed INIT_STACK --- src/compiler.js | 2 +- src/runtime.js | 4 ++-- src/settings.js | 1 - tests/runner.py | 2 -- 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/compiler.js b/src/compiler.js index b40891a537ce0..1cd09c30e7bd0 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -179,7 +179,7 @@ assert(!(!NAMED_GLOBALS && BUILD_AS_SHARED_LIB)); // shared libraries must have // Output some info and warnings based on settings if (phase == 'pre') { - if (!MICRO_OPTS || !RELOOP || ASSERTIONS || CHECK_SIGNS || CHECK_OVERFLOWS || INIT_STACK || INIT_HEAP || + if (!MICRO_OPTS || !RELOOP || ASSERTIONS || CHECK_SIGNS || CHECK_OVERFLOWS || INIT_HEAP || !SKIP_STACK_IN_SMALL || SAFE_HEAP || !DISABLE_EXCEPTION_CATCHING) { print('// Note: Some Emscripten settings will significantly limit the speed of the generated code.'); } else { diff --git a/src/runtime.js b/src/runtime.js index e902d27b52da0..7f97da351eb45 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -25,7 +25,7 @@ var RuntimeGenerator = { sep = sep || ';'; if (USE_TYPED_ARRAYS === 2) 'STACKTOP = (STACKTOP + STACKTOP|0 % ' + ({{{ QUANTUM_SIZE }}} - (isNumber(size) ? Math.min(size, {{{ QUANTUM_SIZE }}}) : {{{ QUANTUM_SIZE }}})) + ')' + sep; // The stack is always QUANTUM SIZE aligned, so we may not need to force alignment here - var ret = RuntimeGenerator.alloc(size, 'STACK', INIT_STACK, sep, USE_TYPED_ARRAYS != 2 || (isNumber(size) && parseInt(size) % {{{ QUANTUM_SIZE }}} == 0)); + var ret = RuntimeGenerator.alloc(size, 'STACK', false, sep, USE_TYPED_ARRAYS != 2 || (isNumber(size) && parseInt(size) % {{{ QUANTUM_SIZE }}} == 0)); if (ASSERTIONS) { ret += sep + 'assert(STACKTOP|0 < STACK_MAX|0)'; } @@ -45,7 +45,7 @@ var RuntimeGenerator = { if (ASSERTIONS) { ret += '; assert(STACKTOP < STACK_MAX)'; } - if (INIT_STACK) { + if (false) { ret += '; _memset(' + asmCoercion('__stackBase__', 'i32') + ', 0, ' + initial + ')'; } return ret; diff --git a/src/settings.js b/src/settings.js index 3fd313263d3b5..e260ed2a2b960 100644 --- a/src/settings.js +++ b/src/settings.js @@ -37,7 +37,6 @@ var VERBOSE = 0; // When set to 1, will generate more verbose output during comp var INVOKE_RUN = 1; // Whether we will call run(). Disable if you embed the generated // code in your own, and will call run() yourself at the right time -var INIT_STACK = 0; // Whether to initialize memory on the stack to 0. var INIT_HEAP = 0; // Whether to initialize memory anywhere other than the stack to 0. var TOTAL_STACK = 5*1024*1024; // The total stack size. There is no way to enlarge the stack, so this // value must be large enough for the program's requirements. If diff --git a/tests/runner.py b/tests/runner.py index 8b6e54af83c55..1858ab4516007 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -6912,7 +6912,6 @@ def test_lua(self): extra_emscripten_args=['-H', 'libc/fcntl.h,libc/sys/unistd.h,poll.h,libc/math.h,libc/langinfo.h,libc/time.h']) def get_freetype(self): - Settings.INIT_STACK = 1 # TODO: Investigate why this is necessary return self.get_library('freetype', os.path.join('objs', '.libs', 'libfreetype.a')) @@ -8341,7 +8340,6 @@ def setUp(self): Settings.CORRECT_ROUNDINGS = 0 Settings.CORRECT_OVERFLOWS_LINES = CORRECT_SIGNS_LINES = CORRECT_ROUNDINGS_LINES = SAFE_HEAP_LINES = [] Settings.CHECK_SIGNS = 0 #1-(embetter or llvm_opts) - Settings.INIT_STACK = 0 Settings.RUNTIME_TYPE_INFO = 0 Settings.DISABLE_EXCEPTION_CATCHING = 0 Settings.INCLUDE_FULL_LIBRARY = 0 From ab45ff99a7ebae47372492f7f1d445e4892aaf7e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 15:49:36 -0800 Subject: [PATCH 279/326] disable test_dlmalloc, it is not comparable to native due to syscalls anyhow --- tests/runner.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index 1858ab4516007..2515ef336400e 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11213,7 +11213,7 @@ def test_enet(self): Building.COMPILER_TEST_OPTS = [] TEST_REPS = 4 - TOTAL_TESTS = 9 + TOTAL_TESTS = 8 tests_done = 0 total_times = map(lambda x: 0., range(TOTAL_TESTS)) @@ -11520,11 +11520,6 @@ def test_life(self): -------------------------------- ''', shared_args=['-std=c99'], force_c=True) - def test_dlmalloc(self): - # XXX This seems to have regressed slightly with emcc. Are -g and the signs lines passed properly? - src = open(path_from_root('system', 'lib', 'dlmalloc.c'), 'r').read() + '\n\n\n' + open(path_from_root('tests', 'dlmalloc_test.c'), 'r').read() - self.do_benchmark('dlmalloc', src, ['400', '3000'], '*3000,0*') - def test_zlib(self): src = open(path_from_root('tests', 'zlib', 'benchmark.c'), 'r').read() emcc_args = self.get_library('zlib', os.path.join('libz.a'), make_args=['libz.a']) + \ From 02cdea5859956e1bffcdc1f26a188200a529c53a Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Sun, 3 Mar 2013 21:11:57 -0800 Subject: [PATCH 280/326] do not emit bash on legalized variables of <= 32 bits --- src/analyzer.js | 11 +- src/parseTools.js | 1 - tests/fuzz/8.c | 2214 ++++++++++++++++++++++++++++++++++++++++++++ tests/fuzz/8.c.txt | 1 + 4 files changed, 2218 insertions(+), 9 deletions(-) create mode 100644 tests/fuzz/8.c create mode 100644 tests/fuzz/8.c.txt diff --git a/src/analyzer.js b/src/analyzer.js index f9b0c5af8b3d0..ecb5ea6b03d52 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -122,7 +122,8 @@ function analyzer(data, sidePass) { // Legalization if (USE_TYPED_ARRAYS == 2) { function getLegalVars(base, bits, allowLegal) { - if (allowLegal && bits <= 32) return [{ ident: base, bits: bits }]; + bits = bits || 32; // things like pointers are all i32, but show up as 0 bits from getBits + if (allowLegal && bits <= 32) return [{ ident: base + ('i' + bits in Runtime.INT_TYPES ? '' : '$0'), bits: bits }]; if (isNumber(base)) return getLegalLiterals(base, bits); var ret = new Array(Math.ceil(bits/32)); var i = 0; @@ -647,13 +648,7 @@ function analyzer(data, sidePass) { default: throw 'Invalid mathop for legalization: ' + [value.op, item.lineNum, dump(item)]; } // Do the legalization - var sourceElements; - if (sourceBits <= 32) { - // The input is a legal type - sourceElements = [{ ident: value.params[0].ident, bits: sourceBits }]; - } else { - sourceElements = getLegalVars(value.params[0].ident, sourceBits); - } + var sourceElements = getLegalVars(value.params[0].ident, sourceBits, true); if (!isNumber(shifts)) { // We can't statically legalize this, do the operation at runtime TODO: optimize assert(sourceBits == 64, 'TODO: handle nonconstant shifts on != 64 bits'); diff --git a/src/parseTools.js b/src/parseTools.js index 5d3c01798349b..7f4f3a181ec96 100644 --- a/src/parseTools.js +++ b/src/parseTools.js @@ -2203,7 +2203,6 @@ function processMathop(item) { case 'ne': case 'eq': { // We must sign them, so we do not compare -1 to 255 (could have unsigned them both too) // since LLVM tells us if <=, >= etc. comparisons are signed, but not == and !=. - assert(paramTypes[0] == paramTypes[1]); idents[0] = makeSignOp(idents[0], paramTypes[0], 're'); idents[1] = makeSignOp(idents[1], paramTypes[1], 're'); return idents[0] + (variant === 'eq' ? '==' : '!=') + idents[1]; diff --git a/tests/fuzz/8.c b/tests/fuzz/8.c new file mode 100644 index 0000000000000..2dbaa5b2c816c --- /dev/null +++ b/tests/fuzz/8.c @@ -0,0 +1,2214 @@ +/* + * This is a RANDOMLY GENERATED PROGRAM. + * + * Generator: csmith 2.2.0 + * Git version: a8697aa + * Options: --no-volatiles --no-math64 --no-packed-struct + * Seed: 958095120 + */ + +#include "csmith.h" + + +static long __undefined; + +/* --- Struct/Union Declarations --- */ +struct S0 { + signed f0 : 22; + unsigned f1 : 19; + const unsigned f2 : 9; +}; + +struct S1 { + uint8_t f0; + unsigned f1 : 17; +}; + +struct S2 { + const struct S0 f0; + int32_t f1; + struct S0 f2; + uint16_t f3; + const uint32_t f4; + uint32_t f5; + struct S1 f6; + const struct S0 f7; + const uint32_t f8; +}; + +union U3 { + int8_t f0; + signed f1 : 1; + uint8_t f2; + int8_t f3; +}; + +/* --- GLOBAL VARIABLES --- */ +static int32_t g_8 = 0xD069F498L; +static int16_t g_54[10][9] = {{0L,0xDAE1L,(-1L),(-6L),0x7DA8L,(-6L),0x40C8L,0xDAE1L,0x1D9DL},{0xB79AL,(-1L),(-1L),0xD900L,(-6L),0xD17BL,1L,0L,1L},{0xB79AL,9L,0x0DE2L,1L,0L,(-6L),(-6L),0L,0x890FL},{0xD17BL,0xD900L,0xD17BL,(-6L),1L,(-6L),0xD900L,9L,0x40C8L},{0x7DA8L,0x40C8L,0x5FE9L,(-6L),6L,0xB79AL,1L,0x4C3DL,0L},{1L,(-1L),0xB79AL,0x4C3DL,0x1D9DL,0x1D9DL,0x5FE9L,(-6L),1L},{0x1D9DL,0x0DE2L,0L,(-1L),0xD17BL,1L,(-6L),(-6L),1L},{(-6L),0xD17BL,0x4C3DL,0x890FL,1L,0x890FL,0x4C3DL,0xD17BL,0xD900L},{(-1L),0x5FE9L,0x5FE9L,0L,0x890FL,0x0DE2L,(-1L),0xD900L,0x7DA8L},{1L,0xB79AL,6L,0xDAE1L,0xDAE1L,0L,0x890FL,(-6L),0x0DE2L}}; +static struct S0 g_60 = {1766,696,10}; +static uint8_t g_67 = 7UL; +static struct S2 g_70 = {{-1862,222,13},0xB8BF5144L,{-1033,470,13},0x4A9FL,7UL,0x06D673C0L,{0x29L,4},{249,44,17},0UL}; +static uint16_t g_79 = 0UL; +static const struct S0 *g_113 = &g_70.f7; +static const struct S0 ** const g_112 = &g_113; +static int32_t *g_125 = &g_8; +static int32_t **g_124 = &g_125; +static uint8_t g_141 = 0x42L; +static struct S1 *g_156[4][8][8] = {{{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}},{{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}},{{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}},{{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0},{(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0,(void*)0}}}; +static uint8_t g_203[10] = {0x5BL,0x5BL,0x5BL,0x5BL,0x5BL,0x5BL,0x5BL,0x5BL,0x5BL,0x5BL}; +static uint32_t g_217[5] = {0xFF553064L,0xFF553064L,0xFF553064L,0xFF553064L,0xFF553064L}; +static int16_t g_234 = 0x7821L; +static uint16_t g_235 = 0xABFCL; +static int16_t g_252 = 0xF752L; +static int16_t g_254[10] = {0x0379L,0x0379L,0x0379L,0x0379L,0x0379L,0x0379L,0x0379L,0x0379L,0x0379L,0x0379L}; +static uint16_t g_255 = 5UL; +static struct S0 *g_259 = &g_70.f2; +static struct S0 **g_258 = &g_259; +static const int8_t g_281 = 0x46L; +static int32_t g_285[7] = {0L,0L,0L,0L,0L,0L,0L}; +static union U3 g_304 = {-8L}; +static uint32_t g_351 = 0x1A7B9ABFL; +static struct S1 g_361 = {252UL,209}; +static uint8_t g_371[6] = {0x1EL,0x1EL,0x1EL,1UL,1UL,1UL}; +static uint8_t g_389[7] = {0x18L,0x18L,0x18L,0x18L,0x18L,0x18L,0x18L}; +static uint8_t g_397[9][9] = {{1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL},{255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL},{1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL},{255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL},{1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL},{255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL},{1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL},{255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL,255UL},{1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL,0xA8L,1UL}}; +static const int16_t g_449 = 0x06B9L; +static union U3 g_489 = {1L}; +static const union U3 g_524 = {0xFCL}; +static struct S1 **g_538[1] = {(void*)0}; +static uint16_t g_621[10][2][6] = {{{65533UL,65533UL,0UL,0x5037L,0xE95EL,65533UL},{4UL,65533UL,0x38D8L,65533UL,0xE95EL,65527UL}},{{65527UL,0UL,0x5037L,0x68F9L,0x68F9L,4UL},{0xE95EL,0UL,0x68F9L,65527UL,0x68F9L,0xE95EL}},{{0x5037L,0xE95EL,0UL,0UL,4UL,0x38D8L},{65533UL,0xE95EL,65527UL,0x5037L,4UL,0x240AL}},{{0x68F9L,0x68F9L,0x5037L,0x38D8L,0x5037L,0x68F9L},{65527UL,0x68F9L,0xE95EL,0x68F9L,0x5037L,0UL}},{{0UL,4UL,65533UL,0x240AL,0x240AL,65527UL},{0x5037L,0x5037L,0x240AL,0UL,0x240AL,0x5037L}},{{0x38D8L,0x5037L,4UL,4UL,65527UL,0xE95EL},{0x68F9L,0x240AL,0UL,0x38D8L,65527UL,65533UL}},{{0x240AL,0x240AL,0x38D8L,0xE95EL,0x38D8L,0x240AL},{0UL,65527UL,0x5037L,0x240AL,0x38D8L,4UL}},{{0x5037L,65527UL,0x68F9L,65533UL,65533UL,0UL},{0x38D8L,0x38D8L,65533UL,4UL,65533UL,0x38D8L}},{{0x68F9L,0x38D8L,65527UL,65527UL,0UL,0x240AL},{0x240AL,65533UL,4UL,0xE95EL,0UL,0x68F9L}},{{0UL,65533UL,0xE95EL,0x5037L,0xE95EL,0UL},{4UL,0UL,0x38D8L,65533UL,0x68F9L,65527UL}}}; +static const union U3 *g_664 = &g_489; +static const union U3 **g_663[6][1][8] = {{{&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664}},{{&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664}},{{&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664}},{{&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664}},{{&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664}},{{&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664,&g_664}}}; +static int16_t g_739[6] = {3L,3L,0x0F38L,4L,0x0F38L,3L}; +static int8_t g_745 = (-1L); +static int32_t g_747 = 1L; +static uint32_t g_829[2] = {0x935C6A21L,0x935C6A21L}; +static int32_t g_864[9][5][1] = {{{0xF6C99171L},{0x23E90A78L},{0x23E90A78L},{0x23E90A78L},{0xF6C99171L}},{{0xF6C99171L},{0xF6C99171L},{0xFB433239L},{0x23E90A78L},{0xFB433239L}},{{0x23E90A78L},{0xF6C99171L},{0x23E90A78L},{0xFB433239L},{0xFB433239L}},{{0xFB433239L},{0x23E90A78L},{0x23E90A78L},{0x23E90A78L},{0xF6C99171L}},{{0xFB433239L},{0xF6C99171L},{0xFB433239L},{0x23E90A78L},{0xFB433239L}},{{0xF6C99171L},{0xF6C99171L},{0x23E90A78L},{0xFB433239L},{0xFB433239L}},{{0xFB433239L},{0x23E90A78L},{0x23E90A78L},{0x23E90A78L},{0xF6C99171L}},{{0xFB433239L},{0xF6C99171L},{0x23E90A78L},{0x23E90A78L},{0xFB433239L}},{{0xF6C99171L},{0xF6C99171L},{0xF6C99171L},{0xFB433239L},{0xFB433239L}}}; +static const struct S2 g_873[10] = {{{-1400,335,11},0xAFE2933CL,{1507,179,3},0UL,0xD51EF24AL,4294967287UL,{0UL,25},{-1032,20,21},0x5CBAB4F1L},{{-1400,335,11},0xAFE2933CL,{1507,179,3},0UL,0xD51EF24AL,4294967287UL,{0UL,25},{-1032,20,21},0x5CBAB4F1L},{{1703,485,7},0x9C6C5086L,{1741,654,6},2UL,1UL,1UL,{255UL,223},{-1994,192,10},0UL},{{-350,118,17},0x8ED3ED5FL,{-1139,317,18},0x4A33L,0x123C372FL,1UL,{1UL,331},{-1160,101,7},0x29F7AFD7L},{{1703,485,7},0x9C6C5086L,{1741,654,6},2UL,1UL,1UL,{255UL,223},{-1994,192,10},0UL},{{1703,485,7},0x9C6C5086L,{1741,654,6},2UL,1UL,1UL,{255UL,223},{-1994,192,10},0UL},{{1703,485,7},0x9C6C5086L,{1741,654,6},2UL,1UL,1UL,{255UL,223},{-1994,192,10},0UL},{{-350,118,17},0x8ED3ED5FL,{-1139,317,18},0x4A33L,0x123C372FL,1UL,{1UL,331},{-1160,101,7},0x29F7AFD7L},{{1838,85,6},-1L,{-806,565,13},0x04AFL,0x3473F18AL,0xFFEB4ACFL,{0UL,71},{1706,355,4},1UL},{{-350,118,17},0x8ED3ED5FL,{-1139,317,18},0x4A33L,0x123C372FL,1UL,{1UL,331},{-1160,101,7},0x29F7AFD7L}}; +static uint8_t *g_904 = (void*)0; +static uint8_t **g_903 = &g_904; +static int8_t g_921 = (-1L); +static uint8_t ***g_962 = &g_903; +static int8_t g_973 = 0x25L; +static uint32_t g_987[1][5][1] = {{{0xCEE53CD7L},{0xCEE53CD7L},{0xCEE53CD7L},{0xCEE53CD7L},{0xCEE53CD7L}}}; +static struct S2 g_994 = {{1271,119,9},0x1F922EA6L,{-338,152,14},65535UL,9UL,4294967295UL,{0x06L,47},{1040,71,21},0x0F9F6E59L}; +static int8_t g_1120[4] = {1L,1L,1L,1L}; +static const uint32_t **g_1134 = (void*)0; +static union U3 **g_1183 = (void*)0; +static int16_t g_1191 = 7L; +static struct S2 *g_1269 = (void*)0; +static struct S1 ***g_1322 = &g_538[0]; +static struct S1 ****g_1321[3] = {&g_1322,&g_1322,&g_1322}; +static uint32_t g_1371 = 0x6AB0ECFCL; +static int8_t ** const g_1385 = (void*)0; +static struct S2 g_1439 = {{-1864,157,10},0L,{995,67,13},65526UL,0xEDB13D73L,0x2334F1D6L,{0UL,199},{1788,370,3},0xDA46817DL}; +static int32_t g_1441 = 0x14E17A81L; +static int16_t *g_1525 = &g_739[5]; +static int16_t **g_1524 = &g_1525; +static const int16_t **g_1528 = (void*)0; +static const int16_t **g_1529 = (void*)0; +static union U3 *g_1634 = &g_489; +static struct S2 g_1672 = {{-1762,333,7},0xF4A56E7FL,{419,337,19},0x9753L,0xC99B31FFL,0x7AE3A617L,{255UL,192},{1333,52,11},5UL}; + + +/* --- FORWARD DECLARATIONS --- */ +static uint32_t func_1(void); +static uint16_t func_2(int32_t p_3, uint8_t p_4, int16_t p_5, union U3 p_6, const uint32_t p_7); +static union U3 func_10(int8_t p_11, struct S1 p_12, uint32_t p_13, uint16_t p_14); +static struct S1 func_19(int16_t p_20, union U3 p_21, uint8_t p_22, uint8_t p_23); +static uint16_t func_24(uint32_t p_25, struct S0 p_26, union U3 p_27, uint32_t p_28, const union U3 p_29); +static struct S0 func_30(const int8_t p_31, union U3 p_32); +static union U3 func_33(int8_t p_34, int16_t p_35, int32_t p_36); +static struct S1 * func_39(int32_t p_40, uint16_t p_41, struct S1 * p_42, struct S1 * p_43); +static struct S1 * func_45(int32_t p_46, uint32_t p_47); +static struct S0 * func_55(int16_t p_56, struct S0 * p_57); + + +/* --- FUNCTIONS --- */ +/* ------------------------------------------ */ +/* + * reads : g_8 g_54 g_60.f0 g_70 g_79 g_112 g_124 g_125 g_141 g_156 g_67 g_60.f2 g_203 g_217 g_235 g_255 g_258 g_252 g_259 g_281 g_285 g_304 g_304.f3 g_304.f2 g_351 g_361 g_371 g_254 g_389 g_397 g_234 g_449 g_489 g_113 g_524.f2 g_489.f2 g_664 g_489.f3 g_489.f0 g_873.f2.f2 g_739 g_903 g_873.f6.f0 g_921 g_873.f8 g_873.f4 g_873.f0.f0 g_873.f2.f1 g_973 g_987 g_829 g_994.f4 g_994.f2.f2 g_994.f8 g_873.f5 g_747 g_873.f7.f0 g_994.f0.f2 g_60.f1 g_994.f2.f0 g_745 g_1134 g_994.f1 g_621 g_864 g_1191 g_1321 g_994.f7.f0 g_1371 g_1524 g_1528 g_1525 g_663 g_1439.f2.f2 g_1439.f0.f1 g_873.f3 g_524.f3 g_873.f0.f1 g_1120 g_1439.f6.f0 g_1439.f0.f0 g_1672.f0.f0 g_994.f0.f1 g_1439.f6.f1 g_1672.f6.f1 + * writes: g_54 g_67 g_79 g_70.f2.f0 g_70.f6.f0 g_70.f6 g_60.f0 g_70.f5 g_141 g_125 g_203 g_217 g_70.f1 g_235 g_234 g_255 g_252 g_285 g_156 g_70.f3 g_351 g_254 g_304.f0 g_371 g_389 g_361 g_304.f3 g_489.f1 g_113 g_538 g_489.f2 g_489.f3 g_962 g_489 g_397 g_994.f2.f0 g_1134 g_8 g_304 g_745 g_1371 g_663 g_829 g_1524 g_1529 g_739 g_994.f3 g_1439.f3 g_1191 g_258 g_1634 + */ +static uint32_t func_1(void) +{ /* block id: 0 */ + uint16_t l_9 = 0xCD40L; + int16_t l_38[6] = {(-6L),(-6L),(-6L),(-6L),(-6L),(-6L)}; + const union U3 l_312[4] = {{0xF3L},{0xF3L},{0xF3L},{0xF3L}}; + int8_t *l_360 = &g_304.f0; + union U3 l_754[4] = {{0x5FL},{0x5FL},{0x5FL},{0x5FL}}; + struct S0 l_1127 = {-277,713,18}; + struct S1 l_1192 = {0xBBL,139}; + uint8_t ***l_1201 = &g_903; + struct S0 **l_1216[8] = {&g_259,&g_259,&g_259,&g_259,&g_259,&g_259,&g_259,&g_259}; + int32_t *l_1225 = &g_285[4]; + int32_t l_1234 = 0xDF42B7A1L; + union U3 l_1276 = {0x45L}; + uint32_t l_1323[6]; + int8_t l_1345 = 0x20L; + union U3 l_1347 = {0x5CL}; + union U3 *l_1352 = (void*)0; + int16_t l_1369[10][2] = {{0xA13FL,0L},{0xA13FL,0xEBB6L},{(-4L),(-4L)},{0xA13FL,(-4L)},{(-4L),0L},{0L,(-4L)},{0L,0L},{(-4L),0xA13FL},{0L,0xA13FL},{0xA13FL,0L}}; + const uint8_t l_1401[8] = {248UL,248UL,248UL,248UL,248UL,248UL,248UL,248UL}; + const uint32_t l_1419 = 0xEC2B74D4L; + int32_t l_1449 = 0x929224DFL; + int32_t l_1451 = (-8L); + int32_t l_1452[2]; + int32_t l_1453 = 1L; + const union U3 l_1493 = {0x90L}; + const union U3 l_1556 = {0L}; + uint32_t l_1574 = 0x9C50339FL; + struct S2 *l_1671 = &g_1672; + const int32_t *l_1719 = &l_1453; + const int32_t **l_1718[9] = {&l_1719,&l_1719,&l_1719,&l_1719,&l_1719,&l_1719,&l_1719,&l_1719,&l_1719}; + int i, j; + for (i = 0; i < 6; i++) + l_1323[i] = 1UL; + for (i = 0; i < 2; i++) + l_1452[i] = 0xF2D303A9L; + if ((func_2(g_8, l_9, l_9, (l_754[3] = func_10(((*l_360) = ((safe_add_func_int32_t_s_s(g_8, ((safe_mul_func_int8_t_s_s(((func_19((func_24(l_9, func_30(l_9, func_33((0xE55B65ABL != (safe_unary_minus_func_int16_t_s(((g_8 , 0xB5BFL) == l_38[0])))), g_8, l_9)), g_304, g_304.f3, l_312[1]) > (-7L)), g_304, g_281, l_38[1]) , 0x6988L) > 1L), 0xA3L)) & g_70.f4))) , l_312[1].f3)), g_361, l_312[1].f3, g_70.f2.f2)), l_312[1].f3) != l_312[1].f2)) + { /* block id: 684 */ + struct S1 ***l_1110 = (void*)0; + struct S1 ****l_1109 = &l_1110; + uint32_t l_1115 = 4294967289UL; + uint16_t *l_1123 = &g_994.f3; + union U3 *l_1126 = &g_304; + uint32_t *l_1128 = (void*)0; + uint32_t *l_1129 = &g_829[1]; + int32_t *l_1130 = &g_994.f1; + struct S0 l_1187 = {1711,690,10}; + int32_t l_1233 = 6L; + int32_t l_1235 = 9L; + uint16_t l_1240 = 0x94D0L; + const union U3 l_1247 = {0x97L}; + int8_t l_1284 = (-3L); + struct S1 l_1294 = {251UL,278}; + int8_t l_1301[2]; + int8_t **l_1316 = &l_360; + int8_t ***l_1315 = &l_1316; + union U3 l_1324 = {0xAFL}; + union U3 l_1344 = {0L}; + int i; + for (i = 0; i < 2; i++) + l_1301[i] = 5L; + if (l_312[1].f2) + { /* block id: 689 */ + uint16_t l_1136 = 0x2987L; + for (g_252 = 0; (g_252 != 2); g_252++) + { /* block id: 692 */ + int32_t l_1133 = (-1L); + const uint32_t ***l_1135 = &g_1134; + int32_t *l_1137 = &g_8; + if (l_38[3]) + break; + (*l_1137) |= (l_1133 , ((((*l_1135) = g_1134) != (void*)0) || l_1136)); + } + } + else + { /* block id: 697 */ + union U3 l_1164 = {1L}; + int16_t *l_1180 = &l_38[0]; + int16_t **l_1179 = &l_1180; + union U3 **l_1190 = &l_1126; + int32_t * const l_1221[7][10] = {{&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0},{&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0},{&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0},{&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0},{&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0},{&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0},{&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0,&g_8,(void*)0}}; + struct S1 l_1223 = {0xEBL,121}; + struct S0 l_1248 = {1351,604,9}; + int16_t l_1279[4]; + const struct S2 l_1314 = {{1802,353,14},0x3F82D2C5L,{-600,686,5},0x3667L,0x9173B856L,1UL,{0x91L,155},{-1532,265,3},2UL}; + union U3 l_1346 = {0xBAL}; + int16_t l_1348 = 0xD08AL; + struct S1 l_1349[4][4][7] = {{{{6UL,66},{0x30L,289},{0UL,48},{0x51L,94},{0UL,48},{0x84L,29},{6UL,66}},{{0xE0L,225},{0xE0L,225},{0xE0L,225},{255UL,294},{255UL,294},{255UL,294},{0xE0L,225}},{{0UL,48},{0x84L,29},{6UL,66},{0x84L,29},{0UL,48},{0x30L,289},{0UL,54}},{{0xE0L,225},{0xE0L,225},{1UL,285},{255UL,294},{1UL,285},{0xE0L,225},{1UL,285}}},{{{6UL,66},{0x51L,94},{6UL,66},{0x30L,289},{6UL,66},{0x30L,289},{0UL,48}},{{1UL,285},{0xE0L,225},{1UL,285},{0xE0L,225},{255UL,294},{255UL,294},{255UL,294}},{{0UL,48},{0x84L,29},{0UL,54},{0x30L,289},{0UL,54},{0x51L,94},{0UL,48}},{{1UL,285},{1UL,285},{1UL,285},{0xE0L,225},{0xE0L,225},{0xE0L,225},{1UL,285}}},{{{0UL,54},{0x51L,94},{0UL,48},{0x51L,94},{0UL,54},{0x84L,29},{6UL,66}},{{1UL,285},{1UL,285},{255UL,294},{0xE0L,225},{255UL,294},{1UL,285},{255UL,294}},{{0UL,48},{0x30L,289},{0UL,48},{0x84L,29},{0UL,48},{0x84L,29},{0UL,54}},{{255UL,294},{1UL,285},{255UL,294},{1UL,285},{0xE0L,225},{0xE0L,225},{0xE0L,225}}},{{{0UL,54},{0x51L,94},{6UL,66},{0x84L,29},{6UL,66},{0x30L,289},{0UL,54}},{{255UL,294},{255UL,294},{255UL,294},{1UL,285},{1UL,285},{1UL,285},{255UL,294}},{{6UL,66},{0x30L,289},{0UL,54},{0x30L,289},{6UL,66},{0x51L,94},{0UL,48}},{{255UL,294},{255UL,294},{0xE0L,225},{1UL,285},{1UL,285},{255UL,294},{0xE0L,225}}}}; + int i, j, k; + for (i = 0; i < 4; i++) + l_1279[i] = (-6L); + for (l_1115 = 0; (l_1115 != 57); l_1115 = safe_add_func_int8_t_s_s(l_1115, 2)) + { /* block id: 700 */ + int16_t l_1163 = 0x7843L; + struct S1 l_1173 = {4UL,105}; + int16_t **l_1182 = (void*)0; + union U3 l_1188 = {-1L}; + const union U3 l_1189 = {9L}; + uint8_t ** const l_1200 = (void*)0; + uint8_t ** const *l_1199[2]; + uint8_t ** const **l_1198 = &l_1199[1]; + int32_t l_1236 = 1L; + int32_t l_1237 = 4L; + int16_t l_1239[5] = {1L,1L,1L,1L,1L}; + const int32_t l_1262 = 0x1349BCC1L; + int i; + for (i = 0; i < 2; i++) + l_1199[i] = &l_1200; + } + for (g_234 = (-12); (g_234 > (-8)); ++g_234) + { /* block id: 787 */ + int32_t l_1272 = 0x5F87868CL; + uint8_t *l_1273 = &l_754[3].f2; + union U3 l_1281 = {0x49L}; + const uint32_t *l_1328 = (void*)0; + const uint32_t **l_1327 = &l_1328; + int32_t *l_1329[2][4]; + int i, j; + for (i = 0; i < 2; i++) + { + for (j = 0; j < 4; j++) + l_1329[i][j] = &l_1272; + } + if ((g_739[5] || (((((((*l_1225) >= (~0x6CL)) , (0x48D5L ^ (((((*l_1225) != 0x13D4L) , (void*)0) == (*l_1179)) && (*l_1225)))) > 1L) <= l_1279[2]) , 0x53A9BAF2L) < 0UL))) + { /* block id: 789 */ + int32_t l_1280 = 0x5CD13976L; + int8_t *l_1285 = &l_1276.f3; + uint8_t *l_1286 = (void*)0; + uint8_t *l_1287 = &g_203[3]; + struct S1 l_1288 = {0xDEL,11}; + uint16_t l_1299 = 0xE6BCL; + l_1288 = func_19(l_1280, ((**l_1190) = l_1281), ((*l_1273) ^= 0xD9L), ((*l_1287) |= ((g_994.f1 & (((l_1280 > (4UL >= g_621[1][0][1])) ^ ((*l_1285) ^= (g_745 = l_1284))) <= g_397[7][7])) > 1UL))); + if (l_1187.f2) + { /* block id: 796 */ + const uint8_t *l_1290 = &l_1276.f2; + const uint8_t ** const l_1289[4] = {&l_1290,&l_1290,&l_1290,&l_1290}; + const uint8_t **l_1292 = (void*)0; + const uint8_t ***l_1291 = &l_1292; + struct S1 *l_1293[7]; + int i; + for (i = 0; i < 7; i++) + l_1293[i] = &g_994.f6; + (*l_1291) = l_1289[1]; + l_1294 = l_1192; + return l_1281.f2; + } + else + { /* block id: 800 */ + struct S0 l_1300 = {1603,306,9}; + const struct S1 *l_1320 = &g_70.f6; + const struct S1 **l_1319 = &l_1320; + const struct S1 ***l_1318 = &l_1319; + const struct S1 ****l_1317 = &l_1318; + uint32_t * const l_1326 = &g_217[1]; + uint32_t * const *l_1325 = &l_1326; + (*l_1225) = (-6L); + (*l_1225) = l_1281.f2; + if (l_1301[1]) + break; + l_1300.f0 &= (((l_1299 ^ ((safe_add_func_int16_t_s_s((g_864[8][4][0] | g_1191), (l_1294.f1 , ((safe_lshift_func_uint8_t_u_u(l_1294.f0, 2)) == (&g_217[1] == l_1221[2][6]))))) , ((--(*l_1287)) | (func_30((safe_mul_func_uint8_t_u_u(0x1FL, ((safe_lshift_func_uint8_t_u_u((safe_div_func_int8_t_s_s((((((((l_1314 , l_1115) < 0xE394C0B6L) , l_1315) != (void*)0) , l_1317) == g_1321[2]) || l_1323[5]), 246UL)), 7)) | l_1240))), l_1324) , l_1294.f0)))) , l_1325) != l_1327); + } + } + else + { /* block id: 808 */ + (*l_1225) = l_1324.f0; + l_1329[0][1] = &l_1233; + } + } + l_1349[1][1][4] = func_19((safe_lshift_func_uint8_t_u_u(((((void*)0 != &l_1201) != (((0xA1DDCCE8L < (*l_1225)) , l_754[3]) , (*l_1225))) <= 0x8222L), (*l_1225))), (*l_1126), l_1348, (*l_1225)); + } + } + else + { /* block id: 818 */ + union U3 *l_1350 = &l_1276; + union U3 **l_1351[2]; + uint32_t l_1353 = 4UL; + int32_t l_1366 = 0x100FF667L; + const uint16_t *l_1388[2][7][5] = {{{&l_9,(void*)0,&g_994.f3,&g_255,&g_994.f3},{(void*)0,(void*)0,&g_873[1].f3,(void*)0,(void*)0},{&g_994.f3,&g_994.f3,(void*)0,&l_9,(void*)0},{&g_255,&g_621[0][1][1],&l_9,(void*)0,&g_994.f3},{&g_70.f3,&g_873[1].f3,&g_255,&g_70.f3,(void*)0},{&g_873[1].f3,&g_621[0][1][1],&g_873[1].f3,&g_255,&g_994.f3},{&g_873[1].f3,&g_994.f3,(void*)0,&g_255,&g_70.f3}},{{(void*)0,(void*)0,&g_873[1].f3,&g_70.f3,&l_9},{&g_621[6][1][5],(void*)0,&g_621[0][1][1],(void*)0,&g_621[6][1][5]},{(void*)0,&g_70.f3,&l_9,&l_9,&g_255},{&g_873[1].f3,(void*)0,&l_9,(void*)0,(void*)0},{&g_873[1].f3,(void*)0,&g_621[0][1][1],&g_255,&g_70.f3},{&g_70.f3,(void*)0,&g_873[1].f3,&g_873[1].f3,(void*)0},{&g_255,&g_873[1].f3,(void*)0,(void*)0,&g_255}}}; + uint32_t *l_1397 = &g_217[1]; + uint32_t **l_1396 = &l_1397; + union U3 l_1400[4] = {{0x80L},{0x80L},{0x80L},{0x80L}}; + uint8_t l_1414 = 0x11L; + uint32_t l_1432 = 4294967294UL; + struct S2 *l_1438 = &g_1439; + int32_t l_1444 = 0xD7977A03L; + int32_t l_1445 = 1L; + int32_t l_1446 = 1L; + int32_t l_1447 = 0xA62D7EDBL; + int32_t l_1454 = 0x06D6FB74L; + int8_t l_1455 = (-6L); + uint32_t l_1456 = 0xE877AD48L; + uint16_t l_1467 = 2UL; + uint8_t *l_1494 = (void*)0; + uint8_t *l_1495 = &g_397[6][7]; + union U3 l_1498 = {0xC6L}; + int16_t l_1499 = 0xE9BFL; + struct S1 l_1533[6][8][5] = {{{{0UL,13},{255UL,320},{0x52L,217},{0UL,173},{0xC3L,289}},{{1UL,61},{247UL,80},{0UL,219},{0xC3L,289},{0UL,173}},{{248UL,194},{255UL,320},{0x87L,37},{0UL,219},{0x52L,217}},{{1UL,332},{0UL,18},{247UL,80},{1UL,61},{247UL,80}},{{1UL,61},{0xC3L,289},{0x24L,89},{0x40L,287},{0x85L,59}},{{0x23L,289},{0UL,13},{0xC0L,7},{0x40L,287},{0xBDL,201}},{{0x31L,83},{252UL,64},{0xBDL,201},{1UL,61},{0xC3L,289}},{{0UL,173},{0x40L,287},{255UL,156},{0UL,219},{0x23L,289}}},{{{0x85L,59},{1UL,332},{0xEEL,78},{0xC3L,289},{0x3DL,296}},{{1UL,274},{252UL,64},{247UL,80},{0UL,173},{0x40L,287}},{{0x85L,59},{0UL,219},{0UL,128},{0x52L,217},{248UL,194}},{{0UL,173},{0x31L,83},{0x23L,289},{247UL,80},{0x3DL,296}},{{0x31L,83},{0UL,18},{0x52L,217},{0x85L,59},{0UL,219}},{{0x23L,289},{0x52L,217},{0x52L,217},{0xBDL,201},{0x88L,333}},{{1UL,61},{1UL,274},{0x23L,289},{0xC3L,289},{0xBDL,201}},{{1UL,332},{255UL,320},{0UL,128},{0x23L,289},{0x52L,217}}},{{{248UL,194},{0xBDL,201},{247UL,80},{0x3DL,296},{0UL,31}},{{1UL,61},{0x31L,83},{0xEEL,78},{0x40L,287},{0x52L,217}},{{0UL,13},{0UL,13},{255UL,156},{248UL,194},{0xBDL,201}},{{0x88L,333},{0x3DL,296},{0xBDL,201},{0x3DL,296},{0x88L,333}},{{0UL,173},{1UL,332},{0xC0L,7},{0UL,219},{0UL,219}},{{255UL,320},{1UL,332},{0x24L,89},{0x88L,333},{0x3DL,296}},{{0UL,31},{0x3DL,296},{247UL,80},{0xBDL,201},{248UL,194}},{{0x85L,59},{0UL,13},{0x87L,37},{0x52L,217},{0x40L,287}}},{{{0UL,18},{0x31L,83},{0UL,219},{0UL,31},{0x3DL,296}},{{0x88L,333},{0xBDL,201},{0x52L,217},{0x52L,217},{0x23L,289}},{{0x23L,289},{255UL,320},{0x85L,59},{0xBDL,201},{0xC3L,289}},{{252UL,64},{1UL,274},{0UL,219},{0x88L,333},{0xBDL,201}},{{248UL,194},{0x52L,217},{0UL,128},{0UL,219},{0x85L,59}},{{248UL,194},{0UL,18},{0UL,31},{0x3DL,296},{247UL,80}},{{252UL,64},{0x31L,83},{0x24L,89},{248UL,194},{0x52L,217}},{{0x23L,289},{0UL,219},{255UL,156},{0x40L,287},{0UL,173}}},{{{0x88L,333},{252UL,64},{0UL,173},{0x3DL,296},{0x23L,289}},{{0UL,18},{1UL,332},{255UL,156},{0x23L,289},{248UL,194}},{{0x85L,59},{0x40L,287},{0x24L,89},{0xC3L,289},{0xFAL,126}},{{0UL,31},{252UL,64},{0UL,31},{0xBDL,201},{0UL,173}},{{255UL,320},{0UL,13},{0UL,128},{0x85L,59},{0UL,173}},{{0UL,173},{0xC3L,289},{0UL,219},{247UL,80},{0xFAL,126}},{{0x88L,333},{0UL,18},{0x85L,59},{0x52L,217},{248UL,194}},{{0UL,13},{255UL,320},{0x52L,217},{0UL,173},{0x23L,289}}},{{{1UL,61},{247UL,80},{0UL,219},{0xC3L,289},{0x43L,140}},{{248UL,194},{255UL,320},{0x87L,37},{0UL,219},{0xEEL,78}},{{1UL,332},{0UL,18},{247UL,80},{1UL,61},{0x87L,37}},{{1UL,61},{0xC3L,289},{0x24L,89},{0x40L,287},{255UL,125}},{{0x23L,289},{0UL,13},{252UL,64},{0x40L,287},{9UL,327}},{{0x31L,83},{252UL,64},{9UL,327},{1UL,61},{0x23L,289}},{{0UL,173},{0x40L,287},{1UL,61},{0UL,219},{1UL,332}},{{0x85L,59},{1UL,332},{5UL,232},{0xC3L,289},{1UL,212}}}}; + struct S0 l_1644 = {-1878,566,19}; + int16_t ***l_1649 = (void*)0; + struct S1 *l_1713[4] = {(void*)0,(void*)0,(void*)0,(void*)0}; + uint32_t l_1743 = 4294967294UL; + int i, j, k; + for (i = 0; i < 2; i++) + l_1351[i] = &l_1350; + l_1352 = l_1350; +lbl_1543: + if ((l_1353 = ((*l_1225) | (*l_1225)))) + { /* block id: 821 */ + uint16_t l_1357 = 0x8178L; + union U3 *l_1358 = &l_1347; + const uint32_t l_1363[2][8][10] = {{{0x05B69A1BL,0UL,4294967288UL,1UL,0xB0DB8155L,4294967288UL,0xB0DB8155L,1UL,0UL,0x05B69A1BL},{1UL,0x05B69A1BL,0UL,0xB0DB8155L,4294967288UL,0UL,0UL,0xB0DB8155L,0x05B69A1BL,1UL},{0xB0DB8155L,0xB0DB8155L,0x05B69A1BL,4294967288UL,0UL,0x05B69A1BL,0x05B69A1BL,4294967288UL,1UL,0xB0DB8155L},{4294967288UL,4294967288UL,1UL,0UL,0x05B69A1BL,1UL,1UL,0UL,0xB0DB8155L,4294967288UL},{0UL,0UL,0xB0DB8155L,0x05B69A1BL,1UL,0xB0DB8155L,0xB0DB8155L,0x05B69A1BL,4294967288UL,0UL},{0x05B69A1BL,0x05B69A1BL,4294967288UL,1UL,4294967288UL,4294967288UL,4294967288UL,1UL,0UL,1UL},{1UL,1UL,0UL,0xB0DB8155L,0UL,0UL,0UL,0xB0DB8155L,0x05B69A1BL,0xB0DB8155L},{0xB0DB8155L,0xB0DB8155L,0x05B69A1BL,4294967288UL,0x05B69A1BL,0x05B69A1BL,0x05B69A1BL,4294967288UL,1UL,4294967288UL}},{{4294967288UL,4294967288UL,0xB0DB8155L,0UL,1UL,1UL,1UL,0x05B69A1BL,0xB0DB8155L,0UL},{0UL,0UL,4294967288UL,0x05B69A1BL,0xB0DB8155L,0xB0DB8155L,0xB0DB8155L,1UL,4294967288UL,0x05B69A1BL},{0x05B69A1BL,0x05B69A1BL,0UL,1UL,4294967288UL,4294967288UL,4294967288UL,0xB0DB8155L,0UL,1UL},{0xB0DB8155L,1UL,0x05B69A1BL,0xB0DB8155L,0UL,0x05B69A1BL,0UL,4294967288UL,0x05B69A1BL,0xB0DB8155L},{4294967288UL,0xB0DB8155L,1UL,4294967288UL,0x05B69A1BL,1UL,0x05B69A1BL,0UL,1UL,4294967288UL},{0UL,4294967288UL,0xB0DB8155L,0UL,1UL,0xB0DB8155L,1UL,0x05B69A1BL,4294967288UL,0UL},{0x05B69A1BL,0UL,4294967288UL,1UL,0xB0DB8155L,4294967288UL,0xB0DB8155L,1UL,0UL,0x05B69A1BL},{1UL,0x05B69A1BL,0UL,0xB0DB8155L,4294967288UL,0UL,4294967288UL,0xB0DB8155L,0x05B69A1BL,1UL}}}; + uint16_t *l_1364[10][8][3] = {{{&g_994.f3,&g_255,&l_9},{&l_9,&l_9,&l_1357},{&g_994.f3,&g_994.f3,&g_255},{&g_79,(void*)0,&g_255},{(void*)0,&g_621[2][1][5],(void*)0},{&g_79,(void*)0,&g_621[4][0][2]},{&g_994.f3,&g_994.f3,(void*)0},{(void*)0,(void*)0,&g_255}},{{(void*)0,&g_994.f3,&g_79},{&g_79,&g_79,&g_621[0][1][1]},{&g_70.f3,&l_9,&l_9},{&l_9,(void*)0,(void*)0},{&g_621[0][1][1],&g_621[0][1][1],&g_70.f3},{(void*)0,&g_79,&g_235},{&g_994.f3,&g_621[0][1][1],&l_1357},{&g_79,&g_70.f3,(void*)0}},{{&g_70.f3,(void*)0,&g_621[0][1][1]},{&g_621[0][1][1],(void*)0,&g_70.f3},{(void*)0,&g_621[2][1][5],&g_70.f3},{&g_621[0][1][1],&l_1357,&g_235},{&l_9,&g_994.f3,&g_994.f3},{(void*)0,(void*)0,(void*)0},{(void*)0,&l_1357,&g_994.f3},{&g_70.f3,(void*)0,&g_994.f3}},{{&g_70.f3,&g_235,(void*)0},{&g_255,&g_255,&g_70.f3},{(void*)0,&g_994.f3,&l_9},{&l_9,(void*)0,&l_9},{&l_9,&g_255,&g_621[0][1][1]},{&l_1357,&g_621[0][1][1],&l_9},{&g_255,&l_1357,&g_255},{&g_255,&g_621[4][1][0],(void*)0}},{{(void*)0,(void*)0,&g_255},{&g_621[4][0][2],&l_1357,&l_9},{(void*)0,&g_255,&g_621[0][1][1]},{&g_255,&g_621[0][1][1],&g_79},{&g_79,(void*)0,&g_255},{&g_621[0][1][1],&g_79,&g_994.f3},{&l_9,&g_621[0][1][1],(void*)0},{(void*)0,(void*)0,&g_70.f3}},{{&g_70.f3,&g_235,(void*)0},{&g_235,(void*)0,&l_1357},{&l_1357,&g_70.f3,&g_235},{(void*)0,&l_9,(void*)0},{&g_621[0][1][1],&g_994.f3,(void*)0},{&g_70.f3,(void*)0,&l_9},{&g_70.f3,&g_994.f3,&g_621[2][1][5]},{&g_235,&l_9,&g_79}},{{&g_994.f3,&g_994.f3,(void*)0},{(void*)0,&g_235,&g_79},{&g_994.f3,&g_994.f3,&g_255},{&g_994.f3,&g_70.f3,(void*)0},{(void*)0,(void*)0,&g_255},{&g_70.f3,&g_621[4][1][0],&l_9},{&l_9,&g_621[0][1][1],(void*)0},{&l_9,&g_70.f3,&g_235}},{{&g_255,&g_994.f3,&l_9},{&l_9,&l_9,(void*)0},{&g_255,(void*)0,&g_255},{(void*)0,(void*)0,&g_994.f3},{&g_255,(void*)0,&g_994.f3},{&l_9,&g_235,&l_9},{&g_621[0][1][1],(void*)0,&g_994.f3},{&g_79,&g_235,&g_235}},{{&g_255,&g_994.f3,&l_1357},{&g_994.f3,&g_621[4][0][2],&g_70.f3},{(void*)0,(void*)0,&g_994.f3},{&g_70.f3,&l_9,(void*)0},{&g_255,&g_621[0][1][1],&l_1357},{&l_1357,&g_79,(void*)0},{&g_235,&g_235,&l_9},{(void*)0,(void*)0,(void*)0}},{{(void*)0,&g_621[0][1][1],&g_994.f3},{&l_9,&g_79,(void*)0},{&g_70.f3,&g_235,&g_79},{&g_79,(void*)0,(void*)0},{(void*)0,&g_255,&g_994.f3},{&g_79,&g_79,&g_621[4][0][2]},{&g_255,&g_255,&l_9},{(void*)0,&g_621[4][1][0],(void*)0}}}; + int32_t l_1365 = 0x47BABE44L; + int i, j, k; + l_1366 = (safe_rshift_func_uint16_t_u_u((l_1365 |= ((safe_unary_minus_func_uint8_t_u((l_1357 < ((safe_mod_func_int32_t_s_s((safe_sub_func_int16_t_s_s(((l_1357 == (l_1353 > 0xE5L)) & g_994.f7.f0), 0xF43BL)), l_1363[0][0][1])) , 9UL)))) <= 7L)), 8)); + } + else + { /* block id: 825 */ + int32_t *l_1367 = &g_285[6]; + int32_t *l_1368[6] = {(void*)0,&g_8,&g_285[0],&g_285[0],(void*)0,&g_8}; + int16_t l_1370 = 1L; + uint16_t l_1461 = 65526UL; + union U3 *l_1486 = &l_754[2]; + int i; + g_1371++; + l_1366 = (safe_mul_func_uint8_t_u_u(g_70.f7.f2, g_304.f3)); + for (l_1276.f2 = 0; (l_1276.f2 <= 8); l_1276.f2 += 1) + { /* block id: 830 */ + uint8_t l_1378[5] = {0x4DL,0x4DL,0x4DL,0x4DL,0x4DL}; + union U3 l_1395[6][4][6] = {{{{0x3FL},{1L},{0x00L},{1L},{0x76L},{1L}},{{1L},{0x76L},{0x98L},{1L},{0x3FL},{0x96L}},{{0x3FL},{8L},{0xC5L},{0x98L},{0x3FL},{0x3FL}},{{8L},{0x86L},{0x86L},{0xC5L},{0x3FL},{1L}}},{{{1L},{8L},{0x98L},{0x3FL},{0x86L},{1L}},{{0x76L},{0x96L},{0x3FL},{0x00L},{0x00L},{1L}},{{0x3FL},{0x3FL},{0x98L},{0xC5L},{0x98L},{0L}},{{0x3FL},{0xC5L},{0x76L},{0x96L},{1L},{0x76L}}},{{{0x3FL},{8L},{0L},{0xC5L},{0x00L},{1L}},{{0x86L},{8L},{0x04L},{1L},{0xC5L},{0x04L}},{{0x00L},{8L},{0x98L},{0x76L},{0x00L},{0x76L}},{{0x98L},{0x04L},{0x98L},{0L},{0L},{8L}}},{{{1L},{0L},{0x98L},{0xC5L},{0x04L},{0x76L}},{{0x96L},{0x76L},{8L},{0xC5L},{1L},{0xC5L}},{{0xC5L},{1L},{1L},{0xC5L},{0x00L},{0x98L}},{{0x00L},{1L},{0x86L},{1L},{0x00L},{0x00L}}},{{{0L},{1L},{1L},{0x86L},{0x00L},{0x76L}},{{0x04L},{0L},{0xC5L},{0x00L},{1L},{0x76L}},{{1L},{0x98L},{0x00L},{8L},{8L},{0x76L}},{{0x00L},{0x00L},{1L},{0x3FL},{1L},{0x96L}}},{{{0x00L},{0x86L},{1L},{0x98L},{0x76L},{1L}},{{0x00L},{0L},{0x96L},{0x86L},{0x98L},{0x04L}},{{1L},{0L},{0x3FL},{0x04L},{0x86L},{0x3FL}},{{0x98L},{0L},{1L},{1L},{8L},{1L}}}}; + int32_t l_1406 = 0x84A3375CL; + int32_t l_1409[2][7][7] = {{{(-1L),0x5E4ADE58L,0xA92151E5L,0x4456E609L,0x4456E609L,0x058BA5DFL,(-8L)},{6L,8L,0L,(-3L),0xA1BC5B01L,0L,0L},{(-8L),0x682FACEEL,0xA92151E5L,0x1002CC41L,(-1L),0xA92151E5L,(-1L)},{0x8DB6EE34L,(-8L),8L,0L,0xFA31E86AL,(-3L),0x9B3A76E7L},{0xA92151E5L,0x682FACEEL,0x5E4ADE58L,0xFE2A663DL,0x636A4255L,0x058BA5DFL,(-1L)},{0L,0x710534E2L,0L,6L,0L,0x710534E2L,0x710534E2L},{0xA92151E5L,(-1L),0L,0x058BA5DFL,(-1L),0x1002CC41L,0x682FACEEL}},{{8L,1L,0x8DB6EE34L,0xA1BC5B01L,(-8L),0L,0x710534E2L},{0x5E4ADE58L,0x62B1F322L,0x1002CC41L,0xFE2A663DL,0x62B1F322L,0x4456E609L,0x636A4255L},{0L,8L,0x8DB6EE34L,8L,0xFA31E86AL,0L,0x4E0C0582L},{0L,(-1L),0x682FACEEL,0x682FACEEL,(-8L),(-1L),(-8L)},{0x8DB6EE34L,8L,(-3L),6L,0xFA31E86AL,0xA1BC5B01L,6L},{0x1002CC41L,0x1002CC41L,0xFE2A663DL,0x62B1F322L,0x4456E609L,0xA92151E5L,(-1L)},{0x8DB6EE34L,0xFA31E86AL,0x8DB6EE34L,(-3L),6L,0x9B3A76E7L,(-3L)}}}; + int16_t l_1411 = 1L; + int32_t **l_1435 = &l_1368[1]; + int32_t *l_1440 = &l_1406; + int16_t l_1460 = (-9L); + int32_t l_1474 = 3L; + int i, j, k; + } + } + if (((*l_1225) && 0x7FFFL)) + { /* block id: 894 */ + const union U3 ***l_1496 = &g_663[0][0][3]; + const int32_t l_1497 = (-2L); + int32_t l_1504 = 1L; + uint8_t l_1505 = 255UL; + struct S0 l_1555[4] = {{85,152,2},{85,152,2},{85,152,2},{85,152,2}}; + struct S1 *l_1577 = &g_361; + int16_t *l_1584 = &g_1191; + int16_t *l_1597 = &g_252; + int16_t *l_1598[7]; + int i; + for (i = 0; i < 7; i++) + l_1598[i] = &l_1499; + (*l_1496) = &g_664; + (*l_1225) |= (0xE8E8L != (6L == ((void*)0 != &g_1183))); + if (((l_1497 , l_1497) , ((l_1497 < l_1499) , (*l_1225)))) + { /* block id: 897 */ + int16_t l_1500 = 0x9452L; + int32_t *l_1501 = &g_8; + int32_t *l_1502 = (void*)0; + int32_t *l_1503[10] = {&g_8,&l_1444,&l_1452[0],&l_1366,&l_1444,&l_1444,&l_1452[0],&g_8,&l_1445,&l_1452[0]}; + int8_t l_1515 = 0x77L; + uint32_t l_1527[2][1]; + struct S1 l_1534 = {1UL,311}; + struct S2 **l_1548 = &g_1269; + union U3 l_1551 = {0x44L}; + int i, j; + for (i = 0; i < 2; i++) + { + for (j = 0; j < 1; j++) + l_1527[i][j] = 1UL; + } + l_1505++; + for (l_1498.f3 = 9; (l_1498.f3 != 23); ++l_1498.f3) + { /* block id: 901 */ + uint16_t *l_1510 = &g_994.f3; + uint32_t *l_1516 = (void*)0; + uint32_t *l_1517 = &g_829[0]; + int16_t ***l_1526 = &g_1524; + int32_t l_1532 = 0x6526D43DL; + (*l_1225) = (((((*l_1517) = (((l_1510 != &l_9) != l_1505) || (*l_1225))) ^ (*l_1501)) >= (*l_1501)) > l_1447); + (*l_1501) ^= 0xD0C593A4L; + l_1534 = ((g_351 > (safe_mod_func_uint8_t_u_u(((((*l_360) = g_60.f0) == g_70.f8) && ((*g_1525) &= (safe_sub_func_uint32_t_u_u(l_1505, (safe_sub_func_uint16_t_u_u((((*l_1526) = g_1524) == (g_1529 = (l_1527[1][0] , g_1528))), (safe_div_func_int32_t_s_s(l_1455, l_1532)))))))), 5L))) , l_1533[3][4][3]); + return g_873[1].f8; + } + for (g_489.f2 = 0; (g_489.f2 > 35); g_489.f2 = safe_add_func_int16_t_s_s(g_489.f2, 1)) + { /* block id: 915 */ + uint8_t l_1540 = 1UL; + int32_t *l_1557 = &l_1452[0]; + struct S2 **l_1558 = &g_1269; + uint16_t l_1561[5][8] = {{0xD1F5L,65535UL,1UL,0xC146L,0xD1F5L,65535UL,65528UL,8UL},{0xC146L,0xC146L,1UL,65535UL,1UL,1UL,8UL,65528UL},{1UL,1UL,1UL,0xD1F5L,1UL,1UL,1UL,8UL},{0xD1F5L,1UL,8UL,65535UL,1UL,1UL,65528UL,1UL},{1UL,0xC146L,0xC146L,65528UL,1UL,1UL,0xC146L,65528UL}}; + union U3 l_1573 = {0xCFL}; + struct S1 **l_1576[7][9][3] = {{{&g_156[2][2][2],&g_156[2][3][6],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][7][2],(void*)0},{&g_156[2][1][7],&g_156[2][7][2],&g_156[2][1][7]},{&g_156[2][3][6],&g_156[0][2][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],(void*)0},{&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][6]},{&g_156[2][1][7],&g_156[2][1][7],&g_156[0][5][3]},{&g_156[2][1][7],&g_156[3][2][3],&g_156[2][1][7]}},{{&g_156[0][1][7],&g_156[2][4][0],(void*)0},{&g_156[2][1][7],&g_156[2][2][2],&g_156[2][7][2]},{&g_156[2][1][7],&g_156[0][5][3],&g_156[2][2][2]},{&g_156[2][4][0],&g_156[2][7][2],&g_156[3][2][3]},{&g_156[2][7][2],&g_156[0][5][3],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],&g_156[2][7][2]},{&g_156[2][1][7],&g_156[2][7][2],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[0][1][7],(void*)0}},{{&g_156[2][1][6],&g_156[2][1][7],&g_156[0][3][0]},{&g_156[2][1][7],(void*)0,&g_156[2][2][2]},{&g_156[0][3][0],&g_156[2][1][7],(void*)0},{&g_156[2][1][7],&g_156[3][2][3],&g_156[0][1][7]},{&g_156[0][5][3],&g_156[2][1][7],&g_156[2][7][2]},{&g_156[2][1][7],&g_156[2][1][7],&g_156[0][5][3]},{(void*)0,&g_156[0][5][3],&g_156[2][1][7]},{&g_156[0][3][0],&g_156[0][3][0],(void*)0},{(void*)0,&g_156[2][1][6],&g_156[2][7][2]}},{{&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],(void*)0},{&g_156[2][1][7],&g_156[0][2][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[0][1][7],&g_156[2][1][6]},{&g_156[2][1][7],(void*)0,&g_156[0][5][3]},{&g_156[0][5][3],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],(void*)0},{&g_156[2][1][7],&g_156[2][1][7],&g_156[2][7][2]},{&g_156[0][2][7],&g_156[2][1][7],&g_156[2][2][2]}},{{&g_156[2][1][7],&g_156[0][3][0],&g_156[3][2][3]},{&g_156[1][4][6],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[3][2][3],&g_156[2][7][2],&g_156[2][7][2]},{&g_156[0][3][0],&g_156[2][1][6],&g_156[2][1][7]},{&g_156[0][2][7],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],(void*)0},{&g_156[2][7][2],(void*)0,&g_156[0][3][0]},{&g_156[3][2][3],&g_156[3][2][3],&g_156[2][2][2]},{&g_156[2][7][2],&g_156[2][1][7],(void*)0}},{{(void*)0,&g_156[2][1][7],&g_156[0][1][7]},{&g_156[2][3][6],&g_156[2][1][7],&g_156[2][7][2]},{&g_156[0][1][7],&g_156[2][2][2],&g_156[0][5][3]},{&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[2][7][2],&g_156[2][1][7],(void*)0},{(void*)0,&g_156[1][4][6],&g_156[2][7][2]},{&g_156[0][5][3],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[0][1][7],&g_156[0][1][7],(void*)0},{&g_156[2][2][2],&g_156[2][1][7],&g_156[2][1][7]}},{{&g_156[0][2][7],&g_156[2][1][7],&g_156[2][1][6]},{&g_156[2][4][0],(void*)0,&g_156[0][5][3]},{&g_156[2][3][6],(void*)0,&g_156[2][1][7]},{&g_156[2][1][7],&g_156[2][1][7],(void*)0},{&g_156[2][2][2],&g_156[2][1][7],&g_156[2][7][2]},{&g_156[2][1][7],&g_156[2][3][6],&g_156[2][2][2]},{&g_156[2][1][7],&g_156[2][1][7],&g_156[3][2][3]},{&g_156[2][1][6],&g_156[2][3][6],&g_156[2][1][7]},{(void*)0,&g_156[0][3][0],&g_156[2][7][2]}}}; + int i, j, k; + for (g_304.f3 = 18; (g_304.f3 != 4); g_304.f3 = safe_sub_func_uint32_t_u_u(g_304.f3, 1)) + { /* block id: 918 */ + int16_t l_1539 = 0x0075L; + int16_t ***l_1544 = (void*)0; + int16_t ***l_1545 = &g_1524; + l_1540++; + if (g_994.f7.f0) + goto lbl_1543; + (*l_1545) = &g_1525; + (*l_1225) = g_70.f6.f0; + } + for (l_1366 = 12; (l_1366 != (-7)); l_1366--) + { /* block id: 926 */ + (*l_1225) ^= (l_1548 != (void*)0); + if (l_1497) + continue; + (*l_1501) &= (l_1504 &= (*l_1225)); + (*g_124) = &g_285[0]; + } + if (((*l_1501) = ((safe_div_func_int16_t_s_s(func_24((l_1551 , (safe_unary_minus_func_int32_t_s((l_1504 && (l_1504 != (func_24((safe_add_func_uint32_t_u_u(l_1497, (*l_1225))), (**g_112), (*g_664), g_994.f0.f2, (*g_664)) > 0xBCL)))))), l_1555[0], (***l_1496), l_1432, l_1556), (-9L))) != 255UL))) + { /* block id: 934 */ + struct S2 ***l_1559[6][8][5] = {{{&l_1558,&l_1548,&l_1558,&l_1558,(void*)0},{&l_1558,&l_1548,&l_1558,&l_1558,&l_1548},{&l_1558,&l_1558,&l_1548,&l_1548,&l_1558},{(void*)0,&l_1548,&l_1548,&l_1558,&l_1548},{&l_1558,&l_1548,&l_1548,&l_1548,&l_1558},{&l_1558,&l_1558,(void*)0,&l_1558,&l_1548},{&l_1548,&l_1558,&l_1558,(void*)0,&l_1548},{(void*)0,&l_1548,(void*)0,&l_1548,(void*)0}},{{(void*)0,&l_1558,&l_1558,&l_1548,&l_1558},{&l_1548,(void*)0,(void*)0,&l_1558,&l_1558},{&l_1558,&l_1548,&l_1548,&l_1548,&l_1548},{&l_1558,&l_1548,&l_1558,&l_1558,&l_1558},{&l_1558,&l_1548,&l_1548,&l_1548,&l_1548},{&l_1548,&l_1548,&l_1548,&l_1558,&l_1548},{&l_1558,&l_1558,&l_1548,(void*)0,&l_1548},{&l_1558,&l_1558,(void*)0,&l_1548,&l_1558}},{{(void*)0,&l_1558,&l_1548,&l_1548,(void*)0},{&l_1548,&l_1558,&l_1558,&l_1558,&l_1548},{&l_1558,&l_1558,&l_1558,&l_1548,&l_1558},{&l_1558,&l_1558,&l_1548,&l_1558,(void*)0},{&l_1548,&l_1548,(void*)0,&l_1548,&l_1548},{&l_1548,&l_1558,&l_1548,&l_1558,&l_1558},{&l_1548,(void*)0,&l_1558,&l_1558,&l_1548},{&l_1548,&l_1558,&l_1558,&l_1548,&l_1558}},{{(void*)0,&l_1558,&l_1558,&l_1548,(void*)0},{&l_1548,&l_1558,&l_1548,&l_1558,(void*)0},{&l_1548,&l_1548,&l_1548,&l_1548,&l_1548},{(void*)0,&l_1558,(void*)0,&l_1558,&l_1548},{&l_1558,&l_1548,(void*)0,&l_1548,&l_1548},{&l_1558,(void*)0,&l_1558,&l_1548,&l_1548},{&l_1548,(void*)0,&l_1558,&l_1558,&l_1548},{&l_1558,&l_1558,&l_1548,&l_1548,&l_1548}},{{&l_1558,&l_1548,&l_1558,&l_1548,&l_1558},{&l_1558,(void*)0,&l_1558,&l_1558,&l_1558},{&l_1558,&l_1548,&l_1548,&l_1548,&l_1558},{(void*)0,&l_1548,&l_1548,&l_1558,&l_1558},{&l_1548,&l_1548,&l_1558,&l_1558,&l_1548},{&l_1558,&l_1548,&l_1548,&l_1548,&l_1558},{&l_1548,&l_1558,&l_1558,&l_1558,(void*)0},{&l_1558,(void*)0,&l_1558,&l_1548,&l_1548}},{{&l_1558,&l_1558,&l_1558,&l_1548,&l_1558},{(void*)0,(void*)0,&l_1548,&l_1558,&l_1548},{&l_1558,&l_1548,&l_1548,&l_1548,&l_1558},{(void*)0,&l_1558,&l_1558,&l_1558,(void*)0},{&l_1548,(void*)0,(void*)0,&l_1558,&l_1548},{&l_1548,&l_1548,&l_1558,&l_1548,(void*)0},{&l_1548,&l_1548,&l_1558,&l_1558,&l_1558},{&l_1558,&l_1548,&l_1548,&l_1548,&l_1558}}}; + int i, j, k; + (*g_124) = l_1557; + if ((*l_1225)) + break; + l_1548 = l_1558; + } + else + { /* block id: 938 */ + uint16_t l_1560 = 1UL; + int32_t l_1572 = 0x359A7594L; + uint16_t *l_1575 = &g_994.f3; + l_1561[1][4] = (l_1560 < g_1439.f2.f2); + (*l_1501) &= ((&g_829[1] == ((safe_sub_func_int32_t_s_s((((l_1192 , 0UL) > (safe_mod_func_uint16_t_u_u((((*l_360) = (safe_add_func_int32_t_s_s(((g_1439.f3 = ((*l_1575) = ((((safe_rshift_func_int8_t_s_s(func_24((++(**l_1396)), func_30((l_1572 = (l_1400[1].f3 , g_987[0][0][0])), ((*l_1352) = l_1573)), (***l_1496), g_449, l_1573), l_1574)) || l_1572) > (-1L)) ^ 1L))) == l_1498.f2), (*l_1557)))) | l_1555[0].f1), g_70.f7.f1))) <= l_1498.f2), l_1560)) , &g_829[1])) == g_361.f1); + } + l_1577 = &l_1533[4][0][4]; + } + } + else + { /* block id: 950 */ + for (g_79 = (-14); (g_79 < 4); g_79 = safe_add_func_uint16_t_u_u(g_79, 8)) + { /* block id: 953 */ + for (g_489.f2 = 0; (g_489.f2 <= 0); g_489.f2 += 1) + { /* block id: 956 */ + int i, j; + return g_54[(g_489.f2 + 1)][(g_489.f2 + 1)]; + } + } + } + (*g_124) = (((l_1504 = (g_54[9][7] &= (safe_add_func_uint8_t_u_u(((((*l_1495) = (*l_1225)) != (*l_1225)) >= l_1504), ((((*l_1225) ^ (safe_rshift_func_int16_t_s_s((((**g_1524) && ((*l_1584) = ((*g_113) , ((*g_1525) = (*g_1525))))) ^ (safe_lshift_func_int8_t_s_s(((((*l_1597) = (safe_lshift_func_int16_t_s_u((safe_rshift_func_int8_t_s_u((safe_add_func_uint8_t_u_u((safe_rshift_func_uint16_t_u_u(l_1505, (safe_lshift_func_int8_t_s_u((((8UL > g_1439.f0.f1) <= (-1L)) == l_1353), 7)))), (-7L))), 4)), g_254[0]))) == l_1555[0].f2) < l_1505), l_1353))), l_1353))) , l_1498.f0) == (*l_1225)))))) <= l_1505) , (void*)0); + } + else + { /* block id: 968 */ + int32_t *l_1599 = &g_1441; + int32_t *l_1600 = (void*)0; + int32_t l_1601 = 0xAE42B3BBL; + int32_t *l_1602 = &l_1446; + int32_t *l_1603 = &l_1454; + int32_t *l_1604 = &l_1449; + int32_t *l_1605[1][10] = {{&l_1449,&l_1447,(void*)0,&l_1447,(void*)0,&l_1449,&l_1449,&l_1449,&l_1447,&l_1447}}; + uint32_t l_1606[4]; + int i, j; + for (i = 0; i < 4; i++) + l_1606[i] = 0x8DE90388L; + ++l_1606[1]; + for (l_1454 = 28; (l_1454 == (-8)); l_1454 = safe_sub_func_uint16_t_u_u(l_1454, 1)) + { /* block id: 972 */ + struct S0 ***l_1611 = &g_258; + int32_t l_1612 = 0x4D626EE6L; + (*l_1611) = &g_259; + l_1612 &= (*l_1225); + return (*l_1225); + } + } + if ((*l_1225)) + { /* block id: 978 */ + uint32_t l_1621 = 0x24DC288AL; + union U3 l_1645 = {0xB5L}; + int32_t l_1655 = 0xD35CC852L; + int16_t ***l_1656 = &g_1524; + (*l_1225) &= 0xB443BAC4L; + for (l_1498.f0 = (-13); (l_1498.f0 < (-15)); l_1498.f0--) + { /* block id: 982 */ + uint16_t l_1615 = 0x80FAL; + int32_t l_1650[9][3][8] = {{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}},{{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L},{0x9D1FDFD4L,0x9D1FDFD4L,5L,0x9102FFFDL,1L,1L,0x9102FFFDL,5L}}}; + struct S0 l_1654[6][8] = {{{388,541,14},{-1172,584,11},{-1559,260,10},{1907,696,16},{388,541,14},{210,414,5},{-221,347,11},{394,258,18}},{{388,541,14},{-1191,582,1},{1907,696,16},{394,258,18},{394,258,18},{-221,347,11},{-1559,260,10},{-221,347,11}},{{-1559,260,10},{-1191,582,1},{-221,347,11},{-1191,582,1},{210,414,5},{-1191,582,1},{394,258,18},{-1559,260,10}},{{-1172,584,11},{-1172,584,11},{-221,347,11},{210,414,5},{388,541,14},{388,541,14},{-1559,260,10},{394,258,18}},{{-221,347,11},{-1962,219,9},{1907,696,16},{-1191,582,1},{1907,696,16},{-221,347,11},{1907,696,16},{-1559,260,10}},{{210,414,5},{388,541,14},{-1559,260,10},{-1172,584,11},{1907,696,16},{-1962,219,9},{-1962,219,9},{-221,347,11}}}; + int i, j, k; + for (l_1574 = 0; (l_1574 <= 7); l_1574 += 1) + { /* block id: 985 */ + uint32_t l_1616 = 0xFD122033L; + if (l_1615) + break; + l_1192 = ((l_1615 > ((*l_1495) = l_1616)) , l_1192); + } + for (l_1347.f0 = 0; (l_1347.f0 <= (-15)); l_1347.f0 = safe_sub_func_int32_t_s_s(l_1347.f0, 4)) + { /* block id: 992 */ + uint16_t l_1633 = 0xA3D7L; + const union U3 l_1646 = {0x27L}; + uint32_t *l_1667 = &g_351; + (*l_1225) = (safe_mul_func_int8_t_s_s(l_1621, 255UL)); + for (g_1371 = (-11); (g_1371 == 25); g_1371++) + { /* block id: 996 */ + int32_t l_1632 = 0x9A959592L; + int32_t *l_1635 = &l_1446; + int32_t *l_1647 = (void*)0; + int32_t *l_1648 = &l_1447; + int16_t *l_1653 = &l_1369[8][0]; + (*l_1635) |= ((*l_1225) &= ((safe_rshift_func_int16_t_s_u(((g_1634 = (((*l_1495) = (((*l_360) = ((func_30(l_1414, (*l_1350)) , (g_873[1].f3 == ((0x08L != ((&g_79 != &l_1467) == (safe_sub_func_uint32_t_u_u((safe_lshift_func_uint16_t_u_u(((safe_div_func_uint16_t_u_u(((l_1366 , l_1632) && l_1632), 0x707FL)) , g_524.f3), 10)), 0x0E96D649L)))) , 0xD5DCL))) <= 65527UL)) < l_1633)) , &g_489)) != (void*)0), 5)) , l_1633)); + (*l_1648) ^= (safe_mod_func_uint8_t_u_u((safe_add_func_int16_t_s_s(((*l_1635) , func_24((safe_mul_func_int16_t_s_s((safe_add_func_int32_t_s_s((3L || l_1444), ((void*)0 == &g_829[1]))), (g_873[1].f0.f1 != (*l_1225)))), l_1644, (l_1645 = (*l_1350)), (*l_1225), l_1646)), (**g_1524))), 249UL)); + (*l_1225) = ((*l_1648) = (((l_1649 = &g_1524) == (func_19((**g_1524), ((((l_1650[5][0][4] = l_1446) , 0xBA97B269L) || (safe_mod_func_int16_t_s_s(l_1646.f2, g_70.f8))) , (*g_664)), l_1655, l_1646.f3) , l_1656)) < 0xB04F3DDBL)); + (*l_1225) &= (safe_div_func_int16_t_s_s(l_1645.f2, l_1655)); + } + for (g_745 = 0; (g_745 <= 1); g_745 += 1) + { /* block id: 1013 */ + int i; + l_1452[g_745] = l_1452[g_745]; + l_1438 = (void*)0; + } + (*l_1225) ^= (l_1366 = ((l_1645.f2 , g_1120[2]) > ((*l_1667) = g_994.f2.f2))); + } + } + } + else + { /* block id: 1022 */ + struct S2 **l_1670[4][9] = {{&l_1438,&l_1438,&g_1269,&g_1269,(void*)0,&g_1269,&l_1438,&l_1438,(void*)0},{&g_1269,(void*)0,(void*)0,&g_1269,&g_1269,&g_1269,&l_1438,&l_1438,&l_1438},{(void*)0,&l_1438,&l_1438,(void*)0,&g_1269,(void*)0,&l_1438,(void*)0,&l_1438},{&g_1269,&g_1269,&g_1269,&l_1438,(void*)0,&l_1438,&g_1269,&l_1438,&l_1438}}; + int32_t l_1687 = 0xC0D3F221L; + int32_t *l_1688 = &l_1451; + union U3 l_1689 = {6L}; + union U3 *l_1696[8][9][1] = {{{&l_1689},{&l_1689},{&g_304},{&l_1400[1]},{&l_1689},{&l_1689},{&l_1276},{&l_1689},{&l_1689}},{{&l_1347},{&l_1689},{&l_1400[1]},{&g_304},{&l_1400[1]},{&l_1276},{&l_1689},{&l_1276},{&l_1347}},{{&g_304},{&l_1347},{&g_304},{&l_1689},{&g_304},{&l_1689},{&l_1689},{&l_1689},{&l_1689}},{{&l_1400[1]},{&l_1689},{&l_1400[1]},{&l_1276},{&l_1400[1]},{&l_1689},{&l_1347},{&l_1276},{&l_1400[1]}},{{&g_304},{&l_1347},{&l_1276},{&l_1689},{&g_304},{&l_1347},{&l_1689},{&l_1347},{&g_304}},{{&l_1400[1]},{&g_304},{&l_1689},{&l_1276},{&l_1689},{&l_1689},{&l_1347},{&l_1689},{&l_1400[1]}},{{&g_304},{&l_1400[1]},{&l_1276},{&l_1347},{&l_1276},{&l_1347},{&g_304},{&l_1347},{&g_304}},{{&l_1689},{&g_304},{&l_1689},{&l_1689},{&l_1689},{&l_1689},{&l_1400[1]},{&l_1689},{&l_1689}}}; + union U3 *l_1697[6][7] = {{&l_1400[1],&l_754[3],&l_1347,&l_1689,&l_1347,&l_1347,(void*)0},{(void*)0,&l_1400[1],(void*)0,&l_1400[1],&l_754[0],&l_1347,&g_304},{&l_1347,&g_304,(void*)0,(void*)0,&l_754[3],&g_489,&l_1347},{&l_1400[1],&l_1400[1],&l_754[0],&l_1347,&l_754[0],&l_1400[1],&l_1400[1]},{&l_754[0],&l_1347,&g_304,&l_1347,&l_1347,(void*)0,&g_304},{&g_489,&g_304,(void*)0,&l_1347,(void*)0,&l_754[0],&l_1400[1]}}; + union U3 *l_1698[2]; + union U3 *l_1699 = &l_754[3]; + uint8_t l_1700 = 0xD5L; + struct S1 *l_1711 = &g_1672.f6; + uint8_t * const *l_1715 = (void*)0; + uint32_t l_1730 = 0xEB5B1C50L; + int32_t l_1736 = 9L; + int32_t *l_1737 = &g_8; + int32_t *l_1738 = &l_1447; + int32_t *l_1739 = (void*)0; + int32_t *l_1740 = &l_1366; + int32_t *l_1741 = &l_1444; + int32_t *l_1742[7]; + int i, j, k; + for (i = 0; i < 2; i++) + l_1698[i] = &l_1400[0]; + for (i = 0; i < 7; i++) + l_1742[i] = &l_1687; + (*l_1225) = (safe_sub_func_int16_t_s_s((((l_1671 = &g_994) == (void*)0) , (safe_div_func_uint16_t_u_u((0xB6A98EE7L & func_24((safe_rshift_func_int16_t_s_u((((*l_1688) = ((-1L) <= ((*l_1225) = ((safe_add_func_int32_t_s_s((0L > ((*l_1225) | (!((*l_360) = (safe_div_func_int32_t_s_s((safe_mod_func_uint32_t_u_u((safe_mul_func_uint16_t_u_u((safe_lshift_func_int16_t_s_s((((((*l_1225) != (*l_1225)) > g_235) , l_1671) == (void*)0), 2)), (*g_1525))), 0xECDF187DL)), l_1687)))))), l_1687)) , (*l_1225))))) | 1L), g_1439.f6.f0)), (**g_112), l_1689, g_1439.f0.f0, l_1689)), g_1120[2]))), 1UL)); + if (((*l_1688) = ((((safe_add_func_uint16_t_u_u((safe_sub_func_int32_t_s_s(7L, (((((*l_1225) = (g_1672.f0.f0 != l_1432)) , &g_873[1]) != &g_873[1]) & (*l_1688)))), g_873[1].f4)) | l_1446) == g_217[1]) > l_1700))) + { /* block id: 1031 */ + int8_t *l_1705[4]; + uint8_t * const * const l_1714[6][7] = {{(void*)0,&g_904,&g_904,(void*)0,(void*)0,&g_904,&g_904},{&l_1494,&g_904,&l_1494,&g_904,&l_1494,&g_904,&l_1494},{(void*)0,(void*)0,&g_904,&g_904,(void*)0,(void*)0,&g_904},{&l_1494,&g_904,&l_1494,&g_904,&l_1494,&g_904,&l_1494},{(void*)0,&g_904,&g_904,(void*)0,(void*)0,&g_904,&g_904},{&l_1494,&g_904,&l_1494,&g_904,&l_1494,&g_904,&l_1494}}; + int32_t l_1731 = 0x43CC042CL; + int i, j; + for (i = 0; i < 4; i++) + l_1705[i] = &g_921; + if (g_255) + { /* block id: 1032 */ + (*g_124) = &l_1687; + } + else + { /* block id: 1034 */ + uint32_t *l_1701 = (void*)0; + uint32_t *l_1702 = &g_829[0]; + uint32_t **l_1706 = &l_1397; + const int32_t ***l_1720 = (void*)0; + const int32_t ***l_1721 = &l_1718[5]; + int32_t l_1732 = 0x93DFC5F6L; + (*l_1225) &= (*l_1688); + if ((((*l_1702)--) == ((void*)0 != l_1705[3]))) + { /* block id: 1037 */ + uint32_t ***l_1707 = &l_1396; + int32_t l_1710[10][6] = {{6L,0x3B16ECF0L,0L,(-8L),0x3B16ECF0L,0x3B16ECF0L},{0x3B16ECF0L,8L,8L,0x0A6BF73EL,0L,0x3B16ECF0L},{0x0F36165FL,(-8L),0L,0L,8L,0L},{0x0F36165FL,6L,0x0F36165FL,0x0A6BF73EL,0x3B16ECF0L,(-8L)},{0x3B16ECF0L,6L,0x0A6BF73EL,8L,8L,0x0F36165FL},{(-8L),(-8L),0x0A6BF73EL,(-8L),6L,(-8L)},{0x0F36165FL,0x0A6BF73EL,0x0F36165FL,(-8L),0L,0L},{(-8L),0L,6L,8L,0L,0L},{0L,0x0A6BF73EL,0x0A6BF73EL,0x0F36165FL,6L,0L},{0x3B16ECF0L,(-8L),6L,6L,0x0A6BF73EL,6L}}; + int i, j; + (*l_1707) = l_1706; + (*l_1688) = (safe_add_func_uint8_t_u_u((*l_1688), l_1710[5][3])); + return l_1400[1].f2; + } + else + { /* block id: 1041 */ + struct S1 **l_1712[8] = {&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7]}; + int i; + l_1713[0] = l_1711; + l_1715 = l_1714[4][4]; + } + (*l_1225) &= ((l_1445 & (safe_sub_func_uint32_t_u_u(g_829[0], (*l_1688)))) ^ ((&l_1688 != ((*l_1721) = l_1718[5])) ^ ((safe_mul_func_int16_t_s_s((safe_lshift_func_uint16_t_u_s(g_994.f0.f1, 2)), ((safe_rshift_func_int8_t_s_u(((l_1732 = (safe_mul_func_int8_t_s_s(0x77L, (((*l_1719) | l_1731) , (*l_1688))))) > (*l_1688)), (*l_1688))) & 0xEAL))) & 0UL))); + for (g_1191 = 0; (g_1191 > 17); g_1191 = safe_add_func_int32_t_s_s(g_1191, 6)) + { /* block id: 1050 */ + uint16_t l_1735 = 65535UL; + if (l_1735) + break; + } + } + } + else + { /* block id: 1054 */ + return g_1439.f6.f1; + } + ++l_1743; + } + } + (*l_1225) = (*l_1719); + return g_1672.f6.f1; +} + + +/* ------------------------------------------ */ +/* + * reads : g_60.f2 g_285 g_70.f3 g_141 g_217 g_60.f0 g_252 g_70.f2.f0 g_304.f2 g_351 g_70.f6.f1 g_524.f2 g_79 g_304.f3 g_8 g_113 g_70.f7 g_449 g_124 g_489.f2 g_664 g_489 g_489.f3 g_67 g_70.f0.f0 g_361.f1 g_489.f0 g_873.f2.f2 g_739 g_70.f0.f2 g_903 g_258 g_259 g_70.f2 g_235 g_873.f6.f0 g_70.f6.f0 g_921 g_281 g_873.f8 g_873.f4 g_54 g_70 g_112 g_873.f0.f0 g_873.f2.f1 g_125 g_973 g_987 g_829 g_994.f4 g_994.f2.f2 g_994.f8 g_254 g_873.f5 g_747 g_873.f7.f0 g_994.f0.f2 g_397 g_60.f1 g_994.f2.f0 g_745 g_255 + * writes: g_285 g_252 g_141 g_70.f3 g_351 g_70.f2.f0 g_125 g_489.f2 g_489.f3 g_361.f1 g_254 g_235 g_67 g_79 g_113 g_962 g_489 g_397 g_994.f2.f0 g_217 g_70.f6 + */ +static uint16_t func_2(int32_t p_3, uint8_t p_4, int16_t p_5, union U3 p_6, const uint32_t p_7) +{ /* block id: 483 */ + uint32_t l_755 = 0UL; + struct S2 l_758 = {{-918,375,16},0xEEC353FBL,{-1257,392,8},2UL,6UL,0x5AFAA565L,{7UL,310},{738,206,0},1UL}; + union U3 l_761[3] = {{-1L},{-1L},{-1L}}; + uint32_t l_762 = 4294967286UL; + uint8_t *l_763 = &g_397[6][7]; + int32_t *l_764 = (void*)0; + int32_t *l_765 = &g_285[0]; + int32_t l_770 = (-10L); + struct S2 *l_772 = (void*)0; + struct S2 **l_771[1][4]; + int32_t l_799 = 0x7D10B75FL; + int32_t l_800 = (-6L); + int32_t l_801[9] = {9L,9L,(-9L),0x1EECED55L,(-9L),9L,(-9L),9L,0x1EECED55L}; + uint8_t l_809 = 0x7BL; + struct S0 **l_814 = &g_259; + int16_t *l_850 = &g_254[9]; + uint8_t l_865[6][10] = {{9UL,4UL,0UL,0x85L,1UL,0xFDL,0x85L,0x85L,1UL,9UL},{0x85L,9UL,9UL,1UL,1UL,0x85L,0x85L,0UL,0x85L,4UL},{9UL,1UL,0x85L,9UL,9UL,1UL,0UL,0x85L,0x85L,0xFDL},{9UL,0x85L,4UL,4UL,1UL,4UL,1UL,4UL,0xFDL,1UL},{1UL,1UL,4UL,0xFDL,1UL,1UL,9UL,1UL,0x85L,0UL},{0UL,9UL,0UL,1UL,0UL,4UL,9UL,9UL,0x85L,9UL}}; + uint32_t l_899 = 0xBDBB613DL; + int32_t l_908 = 0x1E925F72L; + uint8_t l_930 = 255UL; + struct S0 ****l_975 = (void*)0; + const union U3 l_1048 = {0x9EL}; + int i, j; + for (i = 0; i < 1; i++) + { + for (j = 0; j < 4; j++) + l_771[i][j] = &l_772; + } + l_755--; + (*l_765) &= (l_758 , (((~g_60.f2) , &g_739[5]) != &g_254[6])); + (*l_765) = func_24((safe_mod_func_uint8_t_u_u(g_70.f3, (safe_rshift_func_uint8_t_u_u(((((p_6.f2 > ((p_6.f0 ^ (*l_765)) ^ p_6.f3)) , l_758) , p_6.f3) ^ ((l_758.f6 , ((l_770 , l_771[0][3]) == (void*)0)) <= p_6.f0)), 7)))), l_758.f0, l_761[1], g_70.f3, l_761[1]); + if ((*l_765)) + { /* block id: 489 */ + int16_t l_781 = 0x1E28L; + uint8_t **l_783 = (void*)0; + uint8_t ***l_782 = &l_783; + int32_t l_794 = (-1L); + int32_t l_796[1]; + struct S1 *l_807 = &l_758.f6; + int32_t *l_808[7][5] = {{(void*)0,&g_8,&l_799,&l_799,&l_796[0]},{(void*)0,(void*)0,&l_799,&g_285[0],(void*)0},{&g_8,&l_794,(void*)0,&l_799,(void*)0},{(void*)0,&l_794,&l_796[0],&g_8,&g_8},{(void*)0,&g_285[0],(void*)0,&l_799,(void*)0},{&l_794,(void*)0,&l_794,(void*)0,(void*)0},{&g_285[0],&g_285[0],(void*)0,(void*)0,&l_794}}; + int i, j; + for (i = 0; i < 1; i++) + l_796[i] = 2L; + p_6.f1 = p_3; + if ((safe_mod_func_int16_t_s_s((g_70.f6.f1 | (safe_rshift_func_int8_t_s_u((safe_add_func_int8_t_s_s((safe_rshift_func_int16_t_s_s(((*l_765) = l_781), 15)), ((((((*l_782) = (void*)0) != (void*)0) , (safe_unary_minus_func_int16_t_s(g_524.f2))) && ((l_781 && (((((p_7 <= p_6.f1) < (safe_sub_func_uint32_t_u_u((safe_div_func_int32_t_s_s((safe_add_func_int8_t_s_s(((0L > g_79) < 1UL), l_781)), g_524.f2)), 0xD5B1C253L))) > 0xE7AFE5B4L) & 0xB3L) & p_6.f1)) <= 0x4BA776FBL)) , p_6.f1))), g_304.f3))), p_3))) + { /* block id: 493 */ + return g_8; + } + else + { /* block id: 495 */ + int8_t l_797[1]; + int32_t l_798[9]; + uint32_t l_802 = 4294967295UL; + struct S1 *l_805 = (void*)0; + int i; + for (i = 0; i < 1; i++) + l_797[i] = (-1L); + for (i = 0; i < 9; i++) + l_798[i] = 0L; + for (g_351 = 10; (g_351 < 10); ++g_351) + { /* block id: 498 */ + int32_t *l_793 = &g_285[0]; + int32_t *l_795[2]; + struct S1 **l_806[4][10] = {{&g_156[2][2][2],&g_156[2][5][4],&g_156[3][4][1],&g_156[2][1][7],&g_156[2][5][4],&g_156[2][1][7],&g_156[3][1][3],&g_156[2][2][2],&g_156[3][4][1],&g_156[3][1][3]},{&g_156[3][1][3],&g_156[2][2][2],&g_156[2][1][7],&g_156[2][2][2],&g_156[2][2][2],&g_156[2][2][2],&g_156[2][5][4],&g_156[3][4][1],&g_156[2][1][7],&g_156[2][1][7]},{&g_156[2][1][7],&g_156[3][1][3],&g_156[2][5][4],&g_156[3][4][1],&g_156[3][1][3],&g_156[3][4][1],&g_156[2][2][2],&g_156[2][1][7],&g_156[2][5][4],&g_156[2][2][2]},{&g_156[2][2][2],&g_156[2][1][7],&g_156[3][4][1],&g_156[2][1][7],&g_156[2][1][7],&g_156[2][1][7],&g_156[3][1][3],&g_156[2][5][4],&g_156[3][4][1],&g_156[3][4][1]}}; + int i, j; + for (i = 0; i < 2; i++) + l_795[i] = (void*)0; + --l_802; + l_807 = l_805; + } + } + ++l_809; + } + else + { /* block id: 504 */ + uint32_t l_812 = 4UL; + struct S0 ***l_823 = &g_258; + union U3 l_828 = {-8L}; + struct S1 ***l_833[8][7] = {{(void*)0,&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0]},{&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0],(void*)0,&g_538[0]},{&g_538[0],&g_538[0],&g_538[0],&g_538[0],(void*)0,&g_538[0],&g_538[0]},{&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0],(void*)0,&g_538[0]},{(void*)0,(void*)0,&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0]},{&g_538[0],&g_538[0],(void*)0,&g_538[0],&g_538[0],&g_538[0],&g_538[0]},{&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0],&g_538[0]},{&g_538[0],(void*)0,(void*)0,(void*)0,&g_538[0],&g_538[0],&g_538[0]}}; + int32_t l_857 = 0xBD36499BL; + int32_t l_895 = 0x949E899AL; + int32_t l_896 = 0xA891575AL; + int32_t l_897[3]; + int32_t *l_929[8][2] = {{(void*)0,(void*)0},{(void*)0,(void*)0},{(void*)0,(void*)0},{(void*)0,&l_801[0]},{&l_801[0],&l_801[0]},{(void*)0,(void*)0},{(void*)0,(void*)0},{(void*)0,(void*)0}}; + struct S2 *l_992 = &l_758; + uint8_t **l_1011 = &g_904; + struct S2 ***l_1061 = &l_771[0][3]; + uint8_t l_1101 = 0UL; + int i, j; + for (i = 0; i < 3; i++) + l_897[i] = 0x4C16D487L; + if (l_812) + { /* block id: 505 */ + int32_t l_813 = 1L; + struct S0 ***l_821[5][5] = {{&l_814,&l_814,(void*)0,&g_258,(void*)0},{&l_814,&g_258,&g_258,&g_258,&l_814},{(void*)0,&l_814,&l_814,&l_814,(void*)0},{&g_258,&l_814,&l_814,&l_814,&l_814},{&l_814,&g_258,(void*)0,&g_258,(void*)0}}; + struct S0 ****l_822 = &l_821[3][2]; + uint16_t *l_824[6][10][4] = {{{&g_235,(void*)0,&g_70.f3,&g_255},{&g_235,&g_70.f3,&g_255,(void*)0},{&g_255,&l_758.f3,(void*)0,&g_70.f3},{(void*)0,&g_79,(void*)0,&g_79},{&g_255,&g_235,&g_255,(void*)0},{&g_235,&g_79,&g_255,&g_235},{&g_235,&l_758.f3,(void*)0,&g_621[0][1][1]},{&g_255,&g_621[0][1][1],&g_621[0][1][1],&g_255},{&g_235,(void*)0,&g_621[0][1][1],(void*)0},{&g_235,(void*)0,&g_255,&g_235}},{{&l_758.f3,(void*)0,&g_235,&g_235},{&g_235,(void*)0,&g_79,&l_758.f3},{&g_235,&g_70.f3,&g_255,(void*)0},{&g_70.f3,&g_255,&g_70.f3,&g_235},{&g_255,&l_758.f3,&g_255,&l_758.f3},{&g_621[0][1][1],(void*)0,&g_255,&g_235},{&g_79,(void*)0,&g_235,&g_255},{&g_255,&g_235,&g_621[0][1][1],&g_621[0][1][1]},{&l_758.f3,&l_758.f3,&l_758.f3,&g_235},{&g_70.f3,&g_79,&l_758.f3,&l_758.f3}},{{(void*)0,&g_79,&g_255,(void*)0},{&g_621[0][1][1],&g_255,&g_235,&l_758.f3},{&g_621[0][1][1],&g_255,(void*)0,&g_621[0][1][1]},{(void*)0,&l_758.f3,&g_255,&l_758.f3},{&g_621[0][1][1],&g_235,&l_758.f3,&g_621[0][1][1]},{(void*)0,(void*)0,&g_621[0][1][1],&l_758.f3},{&g_79,&g_255,&l_758.f3,(void*)0},{&g_255,&g_255,&g_79,&g_255},{(void*)0,&g_621[0][1][1],&g_235,&g_621[0][1][1]},{&g_235,&g_255,&g_255,&g_235}},{{&g_79,&l_758.f3,&g_235,&g_70.f3},{&g_621[0][1][1],&g_621[1][1][1],(void*)0,(void*)0},{&g_621[1][1][1],&g_235,(void*)0,&g_621[0][1][1]},{&g_621[0][1][1],(void*)0,&l_758.f3,&g_621[0][1][1]},{&g_79,&g_621[0][1][1],&g_255,&g_235},{&g_255,(void*)0,(void*)0,&g_621[1][1][1]},{&g_621[0][1][1],&g_255,&g_255,(void*)0},{&g_235,&l_758.f3,&g_70.f3,&g_70.f3},{&g_235,&g_70.f3,(void*)0,&l_758.f3},{(void*)0,(void*)0,&g_255,&g_70.f3}},{{&l_758.f3,(void*)0,(void*)0,&g_255},{&g_255,&g_255,(void*)0,&g_255},{&g_79,&g_621[0][1][1],&g_79,&g_255},{&g_235,(void*)0,&g_235,(void*)0},{&g_621[0][1][1],&l_758.f3,(void*)0,(void*)0},{&g_255,&g_235,(void*)0,&l_758.f3},{&g_255,(void*)0,(void*)0,&g_255},{&g_255,(void*)0,&g_621[0][1][1],(void*)0},{(void*)0,(void*)0,&g_255,(void*)0},{&g_70.f3,&l_758.f3,&g_70.f3,&g_235}},{{&g_79,&g_621[1][1][1],&g_235,(void*)0},{(void*)0,(void*)0,&g_70.f3,&g_255},{&g_235,(void*)0,&g_621[0][1][1],&l_758.f3},{&g_621[0][1][1],&g_235,(void*)0,(void*)0},{&g_255,&g_235,&g_235,(void*)0},{(void*)0,(void*)0,&g_621[0][1][1],&g_255},{&g_235,&g_255,&g_621[0][1][1],&g_255},{&g_235,&g_621[0][1][1],(void*)0,&g_235},{&l_758.f3,(void*)0,&g_70.f3,&g_255},{&g_235,(void*)0,(void*)0,&l_758.f3}}}; + int32_t l_825 = (-3L); + union U3 *l_830[9][10] = {{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]},{&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0],&l_761[0]}}; + struct S1 l_846[3] = {{8UL,274},{8UL,274},{8UL,274}}; + const struct S2 *l_875 = &g_873[1]; + const struct S2 **l_874 = &l_875; + int32_t l_889 = 7L; + int32_t l_891 = 0xD6DC0909L; + int32_t l_893 = 0x73944F16L; + int32_t l_898 = 0xDC9222DBL; + uint8_t **l_905 = &l_763; + int i, j, k; + if ((func_24(l_813, (*g_113), (p_6 = p_6), g_449, l_761[0]) , p_7)) + { /* block id: 510 */ +lbl_937: + (*g_124) = &l_825; + } + else + { /* block id: 512 */ + struct S0 l_841 = {907,644,18}; + int32_t l_890 = 0xB398AC28L; + int32_t l_894[4][10] = {{(-10L),(-10L),0xC401171EL,(-1L),(-2L),(-2L),0x249327B8L,(-2L),1L,0x1A769766L},{0x1A769766L,0x249327B8L,0x1A769766L,(-2L),0x1A769766L,0xC401171EL,0x249327B8L,0x249327B8L,1L,0x249327B8L},{1L,0xC401171EL,0xC401171EL,(-2L),0xC401171EL,(-10L),0xC401171EL,(-1L),(-2L),(-2L)},{(-2L),0x1A769766L,(-10L),0x249327B8L,0x249327B8L,0xC401171EL,0x249327B8L,(-1L),0x249327B8L,(-2L)}}; + union U3 l_913 = {0x54L}; + struct S1 l_922[6] = {{0xAFL,120},{0xAFL,120},{0xAFL,120},{0xAFL,120},{0xAFL,120},{0xAFL,120}}; + int i, j; + for (g_489.f2 = (-26); (g_489.f2 <= 10); g_489.f2 = safe_add_func_uint16_t_u_u(g_489.f2, 4)) + { /* block id: 515 */ + struct S1 ****l_834 = &l_833[2][1]; + int32_t l_842 = 4L; + int32_t *l_843 = &l_801[0]; + (*l_843) |= func_24((((*l_834) = l_833[7][5]) == (void*)0), (*g_113), p_6, ((safe_mul_func_int16_t_s_s((safe_mul_func_int16_t_s_s((safe_mod_func_uint32_t_u_u(((func_24(p_4, l_841, p_6, p_4, (*g_664)) , 1UL) & 8UL), 6L)), 0UL)), p_5)) , l_842), p_6); + (*l_843) = (p_6.f2 | 0x93078A12L); + if (l_828.f2) + continue; + } + if ((&g_70 != (void*)0)) + { /* block id: 521 */ + int32_t *l_860 = (void*)0; + for (l_828.f3 = (-28); (l_828.f3 >= 25); l_828.f3 = safe_add_func_int32_t_s_s(l_828.f3, 8)) + { /* block id: 524 */ + int16_t **l_847 = (void*)0; + int16_t *l_849[6][4][6] = {{{&g_252,&g_254[9],&g_254[9],&g_739[3],&g_252,&g_254[6]},{&g_252,&g_252,&g_252,&g_252,(void*)0,&g_54[7][8]},{&g_54[7][8],&g_54[7][8],(void*)0,&g_252,&g_54[7][8],&g_54[7][8]},{&g_252,(void*)0,&g_739[3],&g_54[7][8],&g_252,&g_252}},{{(void*)0,&g_54[7][8],&g_252,&g_252,&g_254[6],&g_254[9]},{&g_254[9],&g_252,&g_254[6],(void*)0,&g_254[9],&g_252},{&g_54[7][8],&g_254[6],&g_54[7][8],&g_254[9],&g_252,(void*)0},{&g_254[6],&g_254[9],&g_54[7][8],&g_54[7][8],&g_252,&g_739[3]}},{{&g_739[3],&g_252,&g_252,&g_254[6],&g_739[3],&g_252},{&g_252,&g_252,&g_254[9],&g_739[3],&g_54[7][8],&g_254[6]},{&g_252,&g_739[3],&g_252,&g_252,(void*)0,&g_54[7][8]},{&g_54[7][8],&g_54[7][8],(void*)0,&g_252,&g_54[7][8],&g_54[7][8]}},{{&g_252,(void*)0,&g_739[3],&g_54[7][8],&g_252,&g_252},{&g_252,&g_54[7][8],&g_252,&g_739[3],&g_254[6],&g_254[9]},{&g_252,&g_252,&g_254[6],&g_252,&g_254[9],&g_252},{&g_54[7][8],&g_254[6],&g_54[7][8],&g_252,&g_252,(void*)0}},{{&g_252,&g_254[9],&g_54[7][8],&g_54[7][8],&g_252,&g_739[3]},{(void*)0,&g_252,&g_252,&g_252,&g_739[3],&g_252},{&g_254[9],&g_252,&g_254[9],(void*)0,&g_54[7][8],&g_254[6]},{&g_54[7][8],&g_739[3],&g_252,&g_254[9],(void*)0,&g_54[7][8]}},{{&g_254[6],&g_54[7][8],(void*)0,&g_54[7][8],&g_54[7][8],&g_54[7][8]},{&g_739[3],(void*)0,&g_739[3],&g_254[6],&g_252,&g_252},{&g_252,&g_54[7][8],&g_252,&g_739[3],&g_254[6],&g_254[9]},{&g_252,&g_252,&g_254[6],&g_252,&g_254[9],&g_252}}}; + int16_t **l_848 = &l_849[3][3][4]; + int i, j, k; + } + for (g_489.f3 = 0; (g_489.f3 >= (-14)); --g_489.f3) + { /* block id: 531 */ + (*g_124) = l_860; + } + } + else + { /* block id: 534 */ + int32_t *l_861 = &l_801[5]; + int32_t *l_862 = &l_799; + int32_t *l_863[8][3][2] = {{{&l_801[7],&l_825},{&l_801[0],&l_801[0]},{&l_801[7],&l_801[0]}},{{&l_801[0],&l_825},{&l_801[7],&l_825},{&l_801[0],&l_801[0]}},{{&l_801[7],&l_801[0]},{&l_801[0],&l_825},{&l_801[7],&l_825}},{{&l_801[0],&l_801[0]},{&l_801[7],&l_801[0]},{&l_801[0],&l_825}},{{&l_801[7],&l_825},{&l_801[0],&l_801[0]},{&l_801[7],&l_801[0]}},{{&l_801[0],&l_825},{&l_801[7],&l_825},{&l_801[0],&l_801[0]}},{{&l_801[7],&l_801[0]},{&l_801[0],&l_825},{&l_801[7],&l_825}},{{&l_801[0],&l_801[0]},{&l_801[7],&l_801[0]},{&l_801[0],&l_825}}}; + const struct S2 *l_872 = &g_873[1]; + const struct S2 **l_871[8] = {&l_872,&l_872,&l_872,&l_872,&l_872,&l_872,&l_872,&l_872}; + const struct S2 ***l_870 = &l_871[6]; + const struct S2 ***l_876 = &l_874; + uint32_t *l_879[10] = {&g_829[1],&g_829[1],&g_829[1],&g_829[1],(void*)0,&g_829[1],&g_829[1],&g_829[1],(void*)0,&g_829[1]}; + int i, j, k; + l_861 = &l_813; + l_865[1][4]--; + (*l_862) |= ((((((*l_870) = ((safe_mod_func_uint16_t_u_u(p_6.f2, 2UL)) , (void*)0)) != ((*l_876) = l_874)) && ((((g_361.f1 &= (safe_mod_func_int8_t_s_s((((l_813 |= l_828.f3) > p_6.f2) != g_67), g_70.f0.f0))) , (safe_sub_func_int32_t_s_s(((*l_765) = ((safe_mul_func_uint16_t_u_u((safe_sub_func_int8_t_s_s((g_489.f0 <= g_873[1].f2.f2), p_5)), g_739[5])) | g_8)), 4294967295UL))) & p_6.f3) , p_7)) > g_70.f0.f2) == g_739[4]); + } + for (l_758.f3 = 0; (l_758.f3 <= 0); l_758.f3 += 1) + { /* block id: 546 */ + uint32_t l_886 = 0xFF8F26A0L; + int32_t *l_887 = (void*)0; + int32_t *l_888[4] = {&l_800,&l_800,&l_800,&l_800}; + int32_t l_892 = 0x5B16BAD7L; + union U3 l_902 = {0xEAL}; + int8_t *l_914 = &l_828.f0; + int i; + l_758.f2.f0 |= ((*l_765) = l_886); + ++l_899; + for (l_809 = 0; (l_809 <= 0); l_809 += 1) + { /* block id: 552 */ + l_846[1] = func_19(l_825, (l_846[2].f0 , l_902), (g_903 != l_905), (((***l_823) , func_24(l_896, (***l_823), p_6, l_891, p_6)) <= 0UL)); + if (l_908) + continue; + } + l_922[4] = func_19((safe_sub_func_uint32_t_u_u((safe_sub_func_uint8_t_u_u(l_891, func_24((((l_913 , (((*l_914) = (0x68L != p_6.f2)) && p_6.f2)) , 0xA0L) == ((g_235--) && (safe_add_func_int16_t_s_s((g_873[1].f6.f0 | (safe_div_func_uint32_t_u_u(4294967295UL, l_895))), p_4)))), (**g_258), (*g_664), g_70.f6.f0, l_913))), 1UL)), p_6, p_4, g_921); + for (g_70.f3 = 0; (g_70.f3 <= 0); g_70.f3 += 1) + { /* block id: 561 */ + uint16_t l_923 = 0x3B19L; + int32_t * const l_926 = &l_801[0]; + int32_t **l_927 = (void*)0; + int32_t **l_928 = &l_888[0]; + (*l_765) ^= l_812; + ++l_923; + (*l_928) = l_926; + } + } + l_929[0][1] = ((*g_124) = &l_894[0][8]); + } + l_930++; + for (p_4 = 6; (p_4 >= 14); p_4 = safe_add_func_int8_t_s_s(p_4, 1)) + { /* block id: 573 */ + struct S1 l_940[5][2][4] = {{{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}},{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}}},{{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}},{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}}},{{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}},{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}}},{{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}},{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}}},{{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}},{{0x96L,209},{0x49L,359},{0x96L,209},{0x49L,359}}}}; + int i, j, k; + for (l_799 = 0; (l_799 <= (-15)); l_799 = safe_sub_func_uint32_t_u_u(l_799, 5)) + { /* block id: 576 */ + if (g_70.f0.f0) + goto lbl_937; + for (g_351 = 17; (g_351 >= 55); g_351 = safe_add_func_int8_t_s_s(g_351, 8)) + { /* block id: 580 */ + struct S1 l_941 = {0xAAL,212}; + int32_t l_948 = (-1L); + l_941 = l_940[4][1][2]; + (*l_765) = (+(l_948 |= (((l_825 == (safe_rshift_func_uint16_t_u_u(p_6.f2, 12))) , 0xB9584012L) == (safe_mul_func_uint16_t_u_u(((+(g_235 ^= (safe_sub_func_uint32_t_u_u(g_281, (0x1EL == (&p_7 == (void*)0)))))) ^ l_940[4][1][2].f1), g_60.f2))))); + } + (*g_112) = func_55(g_873[1].f8, func_55(g_873[1].f4, (**l_823))); + } + } + (*l_765) |= (&l_755 == &g_351); + } + else + { /* block id: 590 */ + int8_t *l_953 = (void*)0; + int8_t *l_954 = (void*)0; + int8_t *l_955 = &l_828.f3; + int8_t *l_956 = &l_761[1].f0; + int32_t l_958 = 0x9DAD464FL; + uint8_t ** const *l_963 = &g_903; + struct S2 *l_993 = &g_994; + int32_t l_999 = 0x1FC6B783L; + union U3 l_1000 = {2L}; + int32_t l_1004 = (-3L); + int32_t l_1023 = 4L; + int32_t l_1024 = 1L; + int32_t l_1025 = 0x8524DFEBL; + struct S1 l_1036[8][9] = {{{248UL,94},{0xF8L,338},{0xE8L,272},{0xF8L,338},{0x26L,289},{0xF8L,338},{253UL,183},{0x81L,69},{0xE8L,272}},{{0UL,304},{250UL,353},{246UL,358},{246UL,358},{0UL,304},{0x63L,23},{0UL,304},{0UL,304},{0UL,304}},{{248UL,80},{0xF8L,338},{253UL,183},{255UL,52},{0xE8L,272},{0x30L,130},{253UL,183},{255UL,52},{0x26L,289}},{{0x63L,23},{0UL,304},{246UL,358},{0x63L,23},{246UL,358},{250UL,353},{0x2FL,317},{0UL,304},{250UL,353}},{{0xE8L,272},{0xEAL,336},{0xE8L,272},{255UL,52},{253UL,183},{0x81L,69},{248UL,94},{0x81L,69},{0x26L,289}},{{0x2FL,317},{246UL,358},{0UL,304},{246UL,358},{246UL,358},{246UL,358},{250UL,353},{0x63L,23},{0UL,304}},{{0xE8L,272},{0x30L,130},{0x26L,289},{0xF8L,338},{0xE8L,272},{0x81L,69},{0xE8L,272},{0xEAL,336},{0xE8L,272}},{{0x63L,23},{246UL,358},{250UL,353},{0x2FL,317},{0UL,304},{250UL,353},{250UL,353},{0x2FL,317},{246UL,358}}}; + uint8_t l_1049 = 0xCDL; + uint16_t l_1052 = 4UL; + struct S1 *l_1053 = &g_70.f6; + struct S0 l_1102 = {810,622,17}; + int i, j; + if ((0UL && ((((safe_add_func_int32_t_s_s(((safe_unary_minus_func_uint16_t_u(p_5)) , 0x17D517E7L), 0xF3F259D8L)) || (255UL < ((*l_956) = ((*l_955) = (safe_unary_minus_func_int32_t_s((*l_765))))))) <= p_6.f0) && (!(((safe_unary_minus_func_uint32_t_u(g_54[6][1])) || (((((*l_850) = (*l_765)) > 0L) | l_958) > g_873[1].f0.f0)) || p_5))))) + { /* block id: 594 */ + int32_t *l_965 = &l_958; + int32_t l_977[9] = {1L,1L,1L,1L,1L,1L,1L,1L,1L}; + uint32_t l_1026 = 0xEA2335E4L; + int i; + if ((+(safe_mod_func_int16_t_s_s(g_285[0], g_873[1].f2.f1)))) + { /* block id: 595 */ + uint8_t ****l_961 = (void*)0; + uint8_t ** const **l_964 = &l_963; + (*l_765) = ((g_962 = &g_903) == ((*l_964) = l_963)); + } + else + { /* block id: 599 */ + uint32_t l_968 = 4294967295UL; + int32_t l_976 = 0x3FD06290L; + struct S0 ****l_996 = &l_823; + int32_t l_1019 = 0xF3E25FD9L; + (*g_124) = l_965; + if ((safe_sub_func_int8_t_s_s(p_4, ((void*)0 != &p_5)))) + { /* block id: 601 */ + struct S0 ****l_974 = &l_823; + uint32_t l_978[1]; + int i; + for (i = 0; i < 1; i++) + l_978[i] = 1UL; + (*g_124) = (*g_124); + l_968--; + (**g_124) = (safe_rshift_func_uint8_t_u_s(g_973, (l_974 == l_975))); + l_978[0]++; + } + else + { /* block id: 606 */ + union U3 *l_981 = &g_489; + union U3 *l_986 = &g_489; + uint32_t *l_989 = &g_217[4]; + uint32_t **l_988 = &l_989; + int32_t l_995 = (-1L); + uint32_t *l_1001 = (void*)0; + uint32_t *l_1002 = (void*)0; + uint32_t *l_1003 = &l_755; + l_981 = &p_6; + l_977[0] &= ((*l_765) < ((safe_rshift_func_uint16_t_u_s((safe_sub_func_uint32_t_u_u(g_70.f5, (((**g_124) <= ((l_828 = ((*l_986) = ((*l_981) = (*l_981)))) , g_987[0][0][0])) ^ ((l_976 , ((*l_988) = &l_762)) == &l_968)))), 8)) <= (safe_mul_func_int8_t_s_s((((**l_814) , g_829[1]) , g_987[0][0][0]), g_987[0][0][0])))); + l_993 = l_992; + l_1004 ^= ((((**g_124) = ((void*)0 != l_850)) != ((*l_1003) |= (p_6.f3 <= ((l_995 > (g_994.f4 & ((void*)0 == l_996))) == ((l_976 , ((safe_mod_func_int16_t_s_s(func_24(((func_19(p_4, p_6, l_999, g_70.f0.f2) , &g_962) != (void*)0), (*g_259), l_1000, g_994.f2.f2, p_6), 2L)) , l_995)) == l_995))))) , 0L); + } + for (l_908 = (-21); (l_908 >= (-30)); l_908 = safe_sub_func_int16_t_s_s(l_908, 2)) + { /* block id: 620 */ + int32_t l_1018 = 0x7BA02CBBL; + uint32_t l_1020 = 0xB5190745L; + (*g_124) = (void*)0; + l_1018 |= (safe_div_func_uint16_t_u_u((p_6.f0 >= (g_70.f6.f1 == (safe_div_func_uint16_t_u_u((((void*)0 != l_1011) == ((((safe_lshift_func_uint8_t_u_u(((*l_763) = ((safe_sub_func_int16_t_s_s((*l_965), p_7)) && (((safe_add_func_int16_t_s_s((func_24(p_6.f0, (p_6.f3 , (g_70 , (**l_814))), l_1000, g_873[1].f0.f0, p_6) < g_994.f8), p_5)) || 65531UL) && p_4))), 6)) , (void*)0) != &g_258) & p_6.f2)), 0xBE32L)))), p_6.f2)); + l_1020--; + l_1026++; + } + } + } + else + { /* block id: 628 */ + int8_t l_1050[1]; + uint32_t l_1051 = 0x8A9C3866L; + int32_t **l_1060 = &l_929[2][1]; + const struct S2 *l_1064 = &g_873[1]; + const struct S2 **l_1063[2][1]; + const struct S2 ***l_1062 = &l_1063[0][0]; + int32_t *l_1065 = (void*)0; + struct S0 l_1066 = {-1073,606,6}; + union U3 l_1090 = {-1L}; + int i, j; + for (i = 0; i < 1; i++) + l_1050[i] = 0xE6L; + for (i = 0; i < 2; i++) + { + for (j = 0; j < 1; j++) + l_1063[i][j] = &l_1064; + } + for (l_1004 = (-27); (l_1004 == (-28)); --l_1004) + { /* block id: 631 */ + int32_t l_1031 = 0x2CB25B1DL; + int32_t l_1047[1]; + int i; + for (i = 0; i < 1; i++) + l_1047[i] = 0L; + l_1051 |= (((l_1031 & (safe_mod_func_uint16_t_u_u((safe_add_func_int16_t_s_s((0UL == ((((l_1036[2][1] , ((g_254[9] || p_7) | (((safe_div_func_int16_t_s_s((p_5 ^= func_24((~(p_7 < (0x33L > (l_1047[0] = (func_24((safe_add_func_int8_t_s_s(((*l_955) = (safe_rshift_func_uint16_t_u_s((!(((***l_823) , ((*l_956) = (safe_div_func_int16_t_s_s(g_873[1].f5, g_747)))) && p_7)), p_6.f0))), 0x6FL)), (**g_258), p_6, p_6.f2, p_6) , 5L))))), (**g_112), p_6, g_70.f0.f0, l_1048)), g_873[1].f7.f0)) & 0xB1A9L) || l_1049))) == l_1050[0]) < p_6.f0) >= l_1036[2][1].f0)), (-1L))), p_6.f0))) | (-2L)) && l_958); + if (l_1052) + continue; + for (l_1000.f2 = 0; (l_1000.f2 <= 3); l_1000.f2 += 1) + { /* block id: 640 */ + union U3 *l_1055 = &l_761[2]; + union U3 **l_1054 = &l_1055; + l_1053 = l_1053; + if (l_958) + break; + (*l_1054) = &p_6; + } + } + (*l_765) ^= (((((((g_994.f0.f2 , g_70.f0.f2) , 0x98L) | g_70.f0.f0) > 0x78B4L) , 0xC9L) , (void*)0) != &g_156[2][1][7]); + if (p_6.f0) + { /* block id: 649 */ + struct S0 l_1067 = {-745,148,10}; + const union U3 l_1068 = {0xE6L}; + const union U3 l_1075 = {0xB9L}; + l_1066.f0 ^= (p_6.f0 | ((**l_1061) == ((safe_mul_func_uint16_t_u_u(func_24((safe_rshift_func_uint16_t_u_s(((safe_div_func_uint16_t_u_u((func_24((g_70 , g_397[6][7]), (***l_823), p_6, l_1067.f1, l_1075) == g_60.f1), l_1036[2][1].f1)) && p_4), g_70.f4)), (**g_112), l_828, p_6.f2, p_6), p_3)) , (**l_1061)))); + for (l_899 = 0; (l_899 != 57); l_899++) + { /* block id: 653 */ + return g_60.f1; + } + } + else + { /* block id: 656 */ + union U3 *l_1078 = &l_1000; + int32_t l_1083 = 0xDF239507L; + int32_t l_1091 = 0xD9436DE9L; + g_994.f2.f0 ^= func_24((((l_958 = 65527UL) || g_70.f0.f1) , g_70.f0.f0), func_30(p_7, l_761[1]), ((*l_1078) = p_6), (safe_add_func_int16_t_s_s((safe_add_func_uint8_t_u_u(l_1023, (l_999 , l_1083))), g_217[4])), p_6); + if (l_1083) + { /* block id: 660 */ + int8_t l_1084 = 0x40L; + (*g_124) = (*l_1060); + return l_1084; + } + else + { /* block id: 663 */ + const uint8_t l_1087 = 1UL; + uint32_t *l_1089 = &g_217[1]; + union U3 l_1092 = {-1L}; + struct S0 l_1103[3] = {{-1416,536,19},{-1416,536,19},{-1416,536,19}}; + int32_t l_1104 = (-8L); + int i; + (*l_765) = (safe_rshift_func_uint8_t_u_u(p_3, l_1087)); + (*l_1053) = (((*l_850) ^= g_304.f2) , func_19(((safe_unary_minus_func_int8_t_s((l_1091 |= (+func_24(((*l_1089) ^= p_3), (**g_112), l_1090, l_1023, p_6))))) <= (p_6 , ((void*)0 != &g_449))), l_1092, p_6.f2, p_7)); + (*g_124) = &g_285[4]; + l_1104 ^= (g_235 | func_24((func_24(((~((l_999 = func_24((p_6.f0 , (safe_div_func_int32_t_s_s(((safe_mul_func_int16_t_s_s(p_3, l_1092.f2)) == g_235), (-4L)))), l_1103[2], p_6, p_5, p_6)) , g_745)) || l_1036[2][1].f1), l_1066, l_828, p_6.f3, p_6) && 0x6F55L), (*g_113), p_6, g_255, p_6)); + } + } + (*g_124) = (*l_1060); + } + for (l_1101 = 0; l_1101 < 7; l_1101 += 1) + { + g_285[l_1101] = (-9L); + } + } + (*g_124) = (void*)0; + } + return g_873[1].f4; +} + + +/* ------------------------------------------ */ +/* + * reads : g_70.f3 g_371 g_252 g_254 g_285 g_70.f5 g_389 g_351 g_397 g_54 g_304 g_141 g_217 g_60.f0 g_70.f2.f0 g_304.f2 g_124 g_70 g_234 g_125 g_449 g_304.f3 g_489 g_258 g_259 g_203 g_112 g_113 g_235 g_255 + * writes: g_70.f3 g_371 g_252 g_285 g_70.f5 g_389 g_351 g_54 g_141 g_70.f2.f0 g_203 g_254 g_361 g_234 g_125 g_304.f3 g_489.f1 g_113 g_538 + */ +static union U3 func_10(int8_t p_11, struct S1 p_12, uint32_t p_13, uint16_t p_14) +{ /* block id: 245 */ + int32_t l_362 = 0xE1E14E08L; + int32_t l_366 = 0xFEEB1536L; + int32_t l_367 = 0xEBD9CC5EL; + int32_t l_369 = 0xC11021ADL; + int32_t l_370[1][1]; + int16_t l_378 = 6L; + union U3 l_399[7] = {{0L},{0L},{0L},{0L},{0L},{0L},{0L}}; + struct S1 l_411 = {0x94L,26}; + uint32_t l_412 = 1UL; + struct S2 l_419 = {{-1658,138,1},0x63A0385EL,{552,221,3},7UL,1UL,4294967295UL,{255UL,122},{68,637,6},4294967286UL}; + uint8_t *l_420 = &g_389[4]; + int32_t l_427 = 5L; + uint8_t l_441 = 1UL; + int16_t l_486 = (-6L); + uint32_t l_500 = 5UL; + struct S2 *l_518 = &g_70; + struct S2 **l_517[10][1] = {{&l_518},{(void*)0},{(void*)0},{(void*)0},{&l_518},{&l_518},{&l_518},{&l_518},{&l_518},{&l_518}}; + struct S1 **l_536 = &g_156[3][0][0]; + struct S0 ***l_539 = &g_258; + int32_t l_614 = (-1L); + int8_t l_618 = 0x00L; + int16_t l_619 = 1L; + int32_t l_704 = 0L; + uint32_t l_741 = 4294967286UL; + int i, j; + for (i = 0; i < 1; i++) + { + for (j = 0; j < 1; j++) + l_370[i][j] = 5L; + } +lbl_396: + for (g_70.f3 = 0; (g_70.f3 <= 9); g_70.f3 += 1) + { /* block id: 248 */ + int32_t *l_363 = &g_285[0]; + int32_t *l_364 = (void*)0; + int32_t *l_365[8] = {&l_362,&l_362,&l_362,&l_362,&l_362,&l_362,&l_362,&l_362}; + int32_t l_368[6] = {(-6L),(-6L),(-6L),(-6L),(-6L),(-6L)}; + int i; + g_371[3]--; + for (g_252 = 9; (g_252 >= 0); g_252 -= 1) + { /* block id: 252 */ + uint32_t l_374 = 0x66269D93L; + ++l_374; + } + g_285[5] |= (g_254[g_70.f3] == 0x67D3L); + for (g_70.f5 = 0; (g_70.f5 <= 5); g_70.f5 += 1) + { /* block id: 258 */ + int32_t l_377 = 0xDD09BC50L; + int8_t l_379 = 7L; + int32_t l_380 = 0xAE3961EAL; + int32_t l_381 = 0x42FC192AL; + int32_t l_382 = 7L; + int32_t l_383 = 0x9ACD6B56L; + int32_t l_384 = 0x3B7FE7ACL; + int32_t l_385 = 1L; + int32_t l_386 = 0x72941B8CL; + int32_t l_387 = 0x1F5CE4DAL; + int32_t l_388 = 0x3F1211D8L; + int i; + --g_389[4]; + } + } + for (l_369 = 0; (l_369 < 0); l_369 = safe_add_func_uint32_t_u_u(l_369, 1)) + { /* block id: 264 */ + struct S0 l_398 = {-1582,239,17}; + int8_t l_400 = 0xDBL; + uint8_t *l_407 = &g_203[9]; + struct S1 *l_408 = &g_361; + for (g_351 = (-14); (g_351 < 46); ++g_351) + { /* block id: 267 */ + if (g_252) + goto lbl_396; + if (g_397[6][7]) + break; + } + (*l_408) = func_19((g_54[7][8] ^= (l_398 , (p_12.f1 | p_13))), l_399[5], l_399[5].f3, ((*l_407) = (p_14 == (~((p_14 > l_400) | (safe_div_func_uint16_t_u_u(func_24((safe_rshift_func_uint16_t_u_u(((((safe_mod_func_uint32_t_u_u(p_14, 0x7A0AC41DL)) , 1UL) != l_398.f0) && 65527UL), p_13)), l_398, l_399[1], l_399[5].f2, g_304), p_14))))))); + } + if (((safe_mul_func_int16_t_s_s((l_411 , l_412), ((p_12.f1 || ((safe_add_func_uint16_t_u_u((&g_156[2][1][7] != ((l_370[0][0] <= ((p_12.f1 & (((safe_rshift_func_uint8_t_u_u(((*l_420) = (safe_add_func_int32_t_s_s((l_419 , (l_367 |= (0x12A3BDFEL != ((4L > p_14) , 4294967295UL)))), l_362))), p_12.f1)) | 0xA0E8L) & l_362)) | l_419.f7.f2)) , (void*)0)), 0x28D3L)) < l_419.f3)) == 0xC3C018DCL))) > p_11)) + { /* block id: 277 */ + int32_t l_424 = 0x94D545F5L; + int32_t l_431 = 0L; + int32_t l_433 = 0x2D02096CL; + int32_t l_439 = 9L; + int32_t l_440 = 0xE3C3D422L; + int16_t *l_446 = &g_54[6][7]; + union U3 l_450 = {-10L}; + uint32_t l_461[7] = {0x9D54AD48L,0UL,0x9D54AD48L,0UL,0x8A9DE29EL,0UL,0x8A9DE29EL}; + int8_t *l_487 = &g_304.f3; + union U3 *l_488 = &l_399[5]; + struct S1 l_509 = {246UL,50}; + int16_t l_542 = 0xB5B2L; + int i; + for (p_12.f0 = 0; (p_12.f0 <= 4); p_12.f0 += 1) + { /* block id: 280 */ + int32_t l_423[4][2] = {{0x80E682F7L,2L},{0x80E682F7L,2L},{0x80E682F7L,2L},{0x80E682F7L,2L}}; + int i, j; + for (g_234 = 2; (g_234 <= 8); g_234 += 1) + { /* block id: 283 */ + int8_t l_425 = 0x0AL; + int32_t l_426 = 0xFD18EFFAL; + int32_t l_430 = 0x97BB54BDL; + int32_t l_432 = 0x0CE76D96L; + int32_t l_434 = 0x76B98D45L; + int32_t l_438 = 0xF3D00703L; + for (g_70.f5 = 1; (g_70.f5 <= 4); g_70.f5 += 1) + { /* block id: 286 */ + int32_t *l_421 = &g_285[0]; + int32_t l_428 = 0L; + int32_t l_429 = 0x3C8A0015L; + int32_t l_435 = 5L; + int32_t l_436 = 1L; + int32_t l_437 = 0x0061209BL; + int i, j; + for (g_361.f0 = 0; (g_361.f0 <= 8); g_361.f0 += 1) + { /* block id: 289 */ + (*g_124) = (void*)0; + } + if ((g_70 , ((*l_421) ^= g_54[(g_234 + 1)][(g_70.f5 + 1)]))) + { /* block id: 293 */ + int32_t *l_422[7] = {&l_370[0][0],&l_370[0][0],&l_370[0][0],&l_370[0][0],&l_370[0][0],&l_370[0][0],&l_370[0][0]}; + int i, j; + l_423[2][0] &= ((*l_421) = g_54[(g_70.f5 + 4)][g_234]); + (*g_124) = l_422[4]; + ++l_441; + (**g_124) ^= g_397[g_234][g_70.f5]; + } + else + { /* block id: 299 */ + const struct S2 l_444 = {{-725,623,1},0xCA113D64L,{-36,526,18},0xFD0AL,2UL,0x325F462AL,{0x24L,77},{1998,387,3},4294967292UL}; + const int16_t *l_448[9][3] = {{&g_449,&g_449,&g_449},{&g_449,&g_449,&g_449},{&g_449,&g_449,&g_449},{&g_449,(void*)0,&g_449},{&g_449,&g_449,&g_449},{&g_449,(void*)0,&g_449},{&g_449,&g_449,&g_449},{&g_449,&g_449,(void*)0},{&g_449,&g_449,&g_449}}; + const int16_t **l_447 = &l_448[2][1]; + int i, j; + l_423[2][0] &= (g_389[g_70.f5] > (l_444 , ((safe_unary_minus_func_uint16_t_u((l_446 != ((*l_447) = &g_234)))) || g_389[p_12.f0]))); + (*g_124) = &g_8; + (*l_421) &= l_431; + } + } + } + for (l_419.f6.f0 = 3; (l_419.f6.f0 <= 8); l_419.f6.f0 += 1) + { /* block id: 309 */ + int i, j; + if (g_54[l_419.f6.f0][(p_12.f0 + 3)]) + break; + } + for (g_70.f5 = 0; (g_70.f5 <= 4); g_70.f5 += 1) + { /* block id: 314 */ + return l_450; + } + } + if ((l_446 != l_446)) + { /* block id: 318 */ + int32_t *l_451 = &l_370[0][0]; + int32_t *l_452 = &l_439; + int32_t *l_453 = &l_427; + int32_t *l_454 = (void*)0; + int32_t l_455 = 0L; + int32_t *l_456 = &l_366; + int32_t l_457 = 1L; + int32_t *l_458 = &l_427; + int32_t *l_459[9]; + int32_t l_460 = 0xC37D6EB4L; + int i; + for (i = 0; i < 9; i++) + l_459[i] = &l_427; + l_461[0]++; + } + else + { /* block id: 320 */ + uint16_t l_473 = 0x49B7L; + struct S1 **l_479[4]; + struct S1 ***l_478 = &l_479[2]; + int i; + for (i = 0; i < 4; i++) + l_479[i] = &g_156[2][1][7]; + (*g_124) = (g_304 , ((safe_rshift_func_uint16_t_u_u((&g_156[2][2][3] == ((*l_478) = ((l_419 , ((safe_unary_minus_func_int32_t_s((((l_419 , (safe_mod_func_int8_t_s_s((p_12.f1 || (safe_add_func_int32_t_s_s((safe_rshift_func_int8_t_s_u(l_473, 4)), ((safe_add_func_int16_t_s_s(0xF2F6L, (safe_add_func_uint16_t_u_u(g_449, (((((func_30((g_70.f3 <= 4294967288UL), g_304) , l_439) || 0x5133L) , l_473) && 0x3730C2AAL) , l_431))))) , g_285[0])))), g_70.f6.f1))) & p_14) , 0xF7A3E2A1L))) == p_12.f0)) , &g_156[0][0][6]))), 4)) , (void*)0)); + } + if ((safe_mul_func_uint16_t_u_u((safe_sub_func_int16_t_s_s(((((((l_419.f7.f1 | (safe_lshift_func_int8_t_s_u(l_486, 2))) | l_431) <= func_24(l_450.f3, func_30(((*l_487) ^= g_70.f6.f0), ((*l_488) = l_450)), g_489, (g_389[4] , l_362), g_489)) >= p_13) != 6L) | 0xAFF3E48AL), 0x0CA3L)), p_12.f1))) + { /* block id: 326 */ + struct S1 *l_492 = &l_419.f6; + int32_t l_499 = 0xD4FC97C9L; + const int32_t l_506 = 0xD029A9FEL; + struct S1 ***l_537[5][10][1] = {{{&l_536},{(void*)0},{&l_536},{&l_536},{&l_536},{(void*)0},{&l_536},{&l_536},{&l_536},{(void*)0}},{{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{(void*)0}},{{&l_536},{&l_536},{&l_536},{(void*)0},{&l_536},{&l_536},{&l_536},{(void*)0},{&l_536},{&l_536}},{{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{&l_536},{(void*)0},{&l_536},{&l_536}},{{&l_536},{(void*)0},{&l_536},{&l_536},{&l_536},{(void*)0},{&l_536},{&l_536},{&l_536},{&l_536}}}; + int i, j, k; + for (l_450.f0 = 0; (l_450.f0 < (-19)); l_450.f0 = safe_sub_func_uint8_t_u_u(l_450.f0, 3)) + { /* block id: 329 */ + g_489.f1 = ((**g_258) , 0x04E13DBBL); + } + (*l_492) = p_12; + for (g_141 = 0; (g_141 <= 9); g_141 += 1) + { /* block id: 335 */ + int32_t *l_493 = &l_431; + int32_t *l_494 = &l_427; + int32_t *l_495 = &l_370[0][0]; + int32_t *l_496 = &g_285[5]; + int32_t *l_497 = &l_433; + int32_t *l_498[2][6] = {{&l_440,(void*)0,&l_424,&l_424,&l_440,(void*)0},{(void*)0,&l_424,&l_440,&l_440,&l_424,&l_424}}; + struct S2 l_516 = {{-705,478,14},-2L,{874,439,19},0xA709L,0x881E990DL,0x2BEB2506L,{3UL,214},{1184,19,1},0UL}; + int i, j; + ++l_500; + for (l_439 = 0; (l_439 <= 3); l_439 += 1) + { /* block id: 339 */ + uint16_t *l_505 = (void*)0; + uint32_t l_531 = 0x08858FF4L; + int i; + (*l_493) &= (((g_254[(l_439 + 5)] = (safe_rshift_func_uint16_t_u_s(0xA922L, 9))) || ((l_499 = g_254[(l_439 + 5)]) <= (0L && l_506))) , ((~(*l_495)) & ((safe_add_func_uint32_t_u_u(g_70.f7.f2, (l_509 , (func_30(p_11, l_399[(l_439 + 2)]) , p_11)))) != 0x9845L))); + if (((((p_14 >= (safe_sub_func_uint32_t_u_u(((!(safe_mul_func_uint16_t_u_u((l_516 , (g_70.f0.f1 > ((void*)0 != &l_420))), ((g_70.f7.f2 , l_517[7][0]) != (void*)0)))) <= (p_12.f1 == l_419.f7.f0)), (*l_497)))) | g_54[7][8]) , l_419.f7.f2) != p_12.f0)) + { /* block id: 343 */ + int8_t l_519 = 1L; + int i; + (*l_492) = func_19(l_519, l_399[(l_439 + 3)], g_141, (safe_rshift_func_int8_t_s_u(l_424, 4))); + } + else + { /* block id: 345 */ + const union U3 *l_523 = &g_524; + const union U3 **l_522 = &l_523; + const union U3 *l_526[4]; + const union U3 **l_525 = &l_526[1]; + int i; + for (i = 0; i < 4; i++) + l_526[i] = &g_524; + (*l_525) = ((*l_522) = &g_304); + } + if (((p_14 <= ((safe_sub_func_uint8_t_u_u(((l_509.f0 | (p_11 > (safe_div_func_uint8_t_u_u(l_506, g_203[3])))) & ((1UL || (p_12.f1 , ((*l_420) |= ((0L ^ ((((l_531 < p_14) , l_509.f0) ^ l_419.f7.f1) && l_399[(l_439 + 2)].f0)) < 0xFFL)))) ^ g_70.f0.f0)), p_12.f0)) | p_11)) , l_399[(l_439 + 2)].f2)) + { /* block id: 350 */ + (*l_495) |= 0xA66C8E15L; + if (g_54[7][8]) + continue; + } + else + { /* block id: 353 */ + struct S1 l_532[4][5] = {{{248UL,224},{0x00L,328},{248UL,224},{0x00L,328},{248UL,224}},{{1UL,256},{1UL,256},{0x44L,66},{0x44L,66},{1UL,256}},{{1UL,32},{0x00L,328},{1UL,32},{0x00L,328},{1UL,32}},{{1UL,256},{0x44L,66},{0x44L,66},{1UL,256},{1UL,256}}}; + int i, j; + if (p_12.f0) + break; + (*l_492) = l_532[1][4]; + (*g_112) = (*g_112); + (*l_494) &= p_11; + } + (*g_124) = &g_285[0]; + for (l_419.f1 = 0; (l_419.f1 <= 3); l_419.f1 += 1) + { /* block id: 362 */ + uint32_t l_533 = 0x67712ECBL; + l_533--; + } + } + } + g_538[0] = l_536; + } + else + { /* block id: 368 */ + int16_t *l_543 = &g_252; + int32_t l_544 = (-2L); + p_12 = func_19(((l_539 == ((p_13 || ((((safe_rshift_func_int16_t_s_s(0x08C2L, 10)) > l_542) > (&g_234 != (g_235 , l_543))) & (&g_281 == (l_544 , (void*)0)))) , (void*)0)) > g_255), g_304, p_11, p_12.f1); + p_12 = l_509; + } + } + else + { /* block id: 372 */ + struct S1 l_550 = {255UL,4}; + union U3 l_567 = {0xA4L}; + int32_t l_579 = 1L; + int32_t l_607 = 0x343D702DL; + int32_t l_612[7] = {(-1L),(-1L),(-1L),1L,(-1L),(-1L),(-1L)}; + int32_t l_615 = 0x18B8815EL; + struct S0 l_644[9][3][6] = {{{{-416,386,14},{-353,567,15},{386,372,5},{755,243,19},{1570,267,4},{-1320,589,0}},{{1412,38,7},{-642,380,10},{1570,267,4},{-1688,534,20},{648,78,16},{449,197,0}},{{755,243,19},{537,229,7},{3,417,2},{-353,567,15},{-168,240,13},{449,197,0}}},{{{-1320,589,0},{1069,372,3},{1570,267,4},{1272,217,19},{3,417,2},{515,645,21}},{{1032,590,8},{-194,10,0},{-416,386,14},{836,386,12},{346,610,7},{346,610,7}},{{-353,567,15},{755,243,19},{755,243,19},{-1832,170,15},{755,243,19},{-1320,589,0}}},{{{1069,372,3},{-1832,170,15},{-353,567,15},{-642,380,10},{-1688,534,20},{1272,217,19}},{{3,417,2},{386,372,5},{-194,10,0},{1032,590,8},{-353,567,15},{1232,130,10}},{{3,417,2},{-416,386,14},{-105,256,14},{-642,380,10},{1272,217,19},{-168,240,13}}},{{{1069,372,3},{-1688,534,20},{-1974,600,18},{-1832,170,15},{836,386,12},{1069,372,3}},{{-353,567,15},{1412,38,7},{-100,325,0},{836,386,12},{-1832,170,15},{449,197,0}},{{1069,372,3},{1232,130,10},{648,78,16},{449,197,0},{-642,380,10},{1942,177,18}}},{{{515,645,21},{1942,177,18},{1272,217,19},{1602,197,15},{1032,590,8},{-416,386,14}},{{-1320,589,0},{1942,177,18},{449,197,0},{1232,130,10},{-642,380,10},{-1832,170,15}},{{1570,267,4},{1232,130,10},{515,645,21},{-1320,589,0},{-1832,170,15},{648,78,16}}},{{{-194,10,0},{1412,38,7},{386,372,5},{386,372,5},{836,386,12},{386,372,5}},{{3,417,2},{-1688,534,20},{3,417,2},{836,386,12},{1272,217,19},{1570,267,4}},{{449,197,0},{-416,386,14},{-1975,372,0},{648,78,16},{1602,197,15},{3,417,2}}},{{{1232,130,10},{-416,386,14},{-1975,372,0},{755,243,19},{1232,130,10},{1570,267,4}},{{-1975,372,0},{-353,567,15},{3,417,2},{537,229,7},{-1320,589,0},{386,372,5}},{{537,229,7},{-1320,589,0},{386,372,5},{-1832,170,15},{386,372,5},{648,78,16}}},{{{-1688,534,20},{1942,177,18},{515,645,21},{1032,590,8},{836,386,12},{-1832,170,15}},{{346,610,7},{-100,325,0},{449,197,0},{515,645,21},{648,78,16},{-416,386,14}},{{-642,380,10},{1032,590,8},{449,197,0},{515,645,21},{755,243,19},{-105,256,14}}},{{{346,610,7},{-1240,227,3},{755,243,19},{1032,590,8},{537,229,7},{-1974,600,18}},{{-1688,534,20},{1602,197,15},{-642,380,10},{-1832,170,15},{-1832,170,15},{-100,325,0}},{{537,229,7},{537,229,7},{-1975,372,0},{537,229,7},{1032,590,8},{648,78,16}}}}; + int32_t l_674 = 0x3894630CL; + uint32_t l_691[7] = {4294967294UL,4294967294UL,4294967294UL,4294967294UL,4294967294UL,4294967294UL,4294967294UL}; + const int32_t *l_708 = (void*)0; + const int32_t *l_709 = &l_362; + int i, j, k; + l_419.f2.f0 ^= 0x0E521611L; + for (g_234 = 19; (g_234 <= 21); g_234++) + { /* block id: 376 */ + union U3 l_555 = {6L}; + int32_t l_568 = 0x3DA5E9D1L; + union U3 l_576 = {-1L}; + uint32_t l_578[4] = {4294967288UL,4294967288UL,4294967288UL,4294967288UL}; + struct S0 l_593 = {125,387,1}; + int32_t l_613 = 0xA08FAB05L; + int32_t l_617 = 8L; + const union U3 **l_665 = &g_664; + const union U3 l_675 = {1L}; + int32_t l_727 = (-10L); + int32_t l_728 = 0xB2D0C4B9L; + int32_t l_731 = 0x2C7BC777L; + int32_t l_732 = (-1L); + int32_t l_733 = (-1L); + int32_t l_735 = 0L; + int32_t l_736 = 0x63764777L; + int32_t l_737 = (-6L); + int32_t l_738[3]; + int16_t l_740[3][5][5] = {{{1L,3L,0x58C2L,0L,1L},{0x9C69L,0x938FL,0x58C2L,(-1L),0xDF69L},{0x58C2L,0L,0x37AAL,0x37AAL,0x7061L},{(-2L),(-1L),1L,(-1L),1L},{0x58C2L,(-1L),1L,3L,0xB254L}},{{0xD5DDL,9L,0x7061L,0xB254L,0x9C69L},{1L,(-1L),0x9C69L,0xB254L,0L},{(-1L),1L,0x318EL,0xB254L,(-1L)},{9L,0xD5DDL,0x37AAL,3L,0x37AAL},{0x58C2L,0x58C2L,9L,0x58C2L,(-1L)}},{{(-1L),0xD5DDL,(-1L),1L,3L},{0x7061L,0L,0x58C2L,1L,0xB254L},{1L,1L,0x3AA0L,0x7061L,0xB254L},{(-1L),9L,0xF9C9L,(-1L),0xB254L},{0x318EL,0xB254L,9L,3L,3L}}}; + int32_t l_746 = 0xF7B220A1L; + uint32_t *l_753 = &l_578[1]; + int i, j, k; + for (i = 0; i < 3; i++) + l_738[i] = 1L; + for (p_14 = (-16); (p_14 == 54); p_14 = safe_add_func_uint32_t_u_u(p_14, 3)) + { /* block id: 379 */ + struct S1 *l_549 = (void*)0; + l_550 = p_12; + } + } + } + return l_399[6]; +} + + +/* ------------------------------------------ */ +/* + * reads : + * writes: g_254 + */ +static struct S1 func_19(int16_t p_20, union U3 p_21, uint8_t p_22, uint8_t p_23) +{ /* block id: 240 */ + struct S1 l_359 = {255UL,212}; + l_359 = l_359; + for (p_23 = 0; p_23 < 10; p_23 += 1) + { + g_254[p_23] = 0x93DCL; + } + return l_359; +} + + +/* ------------------------------------------ */ +/* + * reads : g_252 g_141 g_70.f3 g_285 g_217 g_60.f0 g_70.f2.f0 g_304.f2 g_351 + * writes: g_252 g_141 g_70.f3 g_285 g_351 g_70.f2.f0 + */ +static uint16_t func_24(uint32_t p_25, struct S0 p_26, union U3 p_27, uint32_t p_28, const union U3 p_29) +{ /* block id: 200 */ + uint32_t l_317 = 0x2C0D943BL; + int32_t l_325 = 1L; + int32_t l_326 = 0xFC5A9C8AL; + int32_t l_327[4] = {2L,2L,2L,2L}; + const uint16_t *l_347 = &g_70.f3; + uint8_t l_357 = 1UL; + int32_t *l_358[10][7] = {{&g_285[0],&l_325,&g_285[6],&g_285[6],&l_327[0],(void*)0,&g_285[0]},{&g_285[0],&l_326,&g_285[1],(void*)0,&g_285[5],&g_8,&l_327[0]},{&g_285[6],&g_8,&g_285[0],&g_285[6],&l_325,(void*)0,&l_326},{&l_327[0],&l_327[0],&g_8,&g_8,&g_285[1],&l_327[0],&l_326},{&g_8,&l_327[0],&g_285[0],(void*)0,&l_326,&g_8,&l_325},{(void*)0,&l_325,&g_285[0],&g_285[6],&l_327[0],&g_8,&g_285[5]},{&g_285[5],(void*)0,(void*)0,&g_285[0],&l_327[0],(void*)0,&g_285[0]},{&g_285[0],&g_285[2],(void*)0,&l_327[0],&l_327[0],&g_8,&g_8},{&g_285[6],&l_327[0],&l_325,&l_325,&g_8,&g_285[6],&l_326},{&g_8,&g_285[2],&l_327[0],&l_325,&g_285[2],&g_8,&g_285[0]}}; + int i, j; + for (g_252 = 0; (g_252 <= 27); g_252++) + { /* block id: 203 */ + uint8_t l_315 = 0x02L; + l_315 = (-1L); + if (l_315) + continue; + } + for (g_141 = 0; (g_141 <= 6); g_141 += 1) + { /* block id: 209 */ + uint16_t l_316 = 65535UL; + uint32_t *l_350 = &g_351; + uint16_t l_352[7][5] = {{0xA96EL,0xDB85L,0UL,65527UL,0xDB85L},{65530UL,0x12FEL,0x616FL,0x41E1L,0x12FEL},{2UL,0UL,65527UL,0xA96EL,0UL},{0x616FL,0xC937L,0x12FEL,65530UL,0xC937L},{0xDB85L,2UL,0xA96EL,2UL,2UL},{0x12FEL,0x41E1L,65530UL,0x616FL,0x41E1L},{0xA96EL,0xDB85L,2UL,0xDB85L,0xDB85L}}; + struct S2 *l_354 = &g_70; + struct S2 **l_353 = &l_354; + int i, j; + for (g_70.f3 = 1; (g_70.f3 <= 4); g_70.f3 += 1) + { /* block id: 212 */ + uint8_t l_329 = 1UL; + int i; + if (g_285[g_141]) + { /* block id: 213 */ + int i; + return g_217[g_70.f3]; + } + else + { /* block id: 215 */ + int32_t l_328[5][4] = {{0L,(-1L),0L,(-1L)},{0L,(-1L),0L,(-1L)},{0L,(-1L),0L,(-1L)},{0L,(-1L),0L,(-1L)},{0L,(-1L),0L,(-1L)}}; + struct S1 * const l_335 = &g_70.f6; + struct S1 l_336 = {0xC7L,109}; + int i, j; + if (((l_316 ^ l_317) >= p_25)) + { /* block id: 216 */ + int32_t *l_318 = &g_285[5]; + int32_t *l_319 = &g_285[3]; + int32_t *l_320 = &g_285[g_141]; + int32_t *l_321 = &g_285[0]; + int32_t *l_322 = &g_285[0]; + int32_t *l_323 = &g_285[6]; + int32_t *l_324[2][6][1] = {{{&g_285[6]},{&g_8},{&g_8},{&g_285[0]},{&g_8},{&g_285[g_141]}},{{&g_285[5]},{&g_285[6]},{&g_8},{&g_285[5]},{&g_285[5]},{&g_285[0]}}}; + int i, j, k; + ++l_329; + for (p_27.f0 = 4; (p_27.f0 >= 0); p_27.f0 -= 1) + { /* block id: 220 */ + struct S1 *l_334[7][9] = {{&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,(void*)0},{&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,(void*)0},{&g_70.f6,(void*)0,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6},{&g_70.f6,(void*)0,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6},{&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6},{(void*)0,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6},{&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6}}; + int i, j; + (*l_323) |= (safe_mul_func_int16_t_s_s((((void*)0 == &g_252) == ((l_334[3][5] != l_335) <= (l_336 , g_60.f0))), 0x9EE5L)); + l_319 = &g_285[g_141]; + } + } + else + { /* block id: 224 */ + return g_252; + } + } + if (l_325) + break; + } + g_285[g_141] = (safe_add_func_int8_t_s_s((((func_30((p_27.f3 = (safe_add_func_uint32_t_u_u(((*l_350) = ((g_285[g_141] <= (g_285[g_141] , (safe_mul_func_int8_t_s_s(g_285[g_141], (safe_div_func_uint8_t_u_u((safe_add_func_int16_t_s_s(((void*)0 == l_347), ((safe_lshift_func_int8_t_s_s(g_285[g_141], p_26.f1)) < ((p_29.f0 , p_25) <= g_60.f0)))), 1UL)))))) >= 251UL)), 0x952115EFL))), p_29) , 4L) , l_326) <= p_26.f0), l_352[2][1])); + (*l_353) = (void*)0; + p_26.f0 |= (safe_add_func_uint32_t_u_u((((*l_350) = (0x42L | ((-1L) == l_327[0]))) , ((*l_350) |= g_304.f2)), l_357)); + } + l_358[9][0] = &l_327[1]; + return p_27.f3; +} + + +/* ------------------------------------------ */ +/* + * reads : g_70.f3 g_70.f2.f0 + * writes: g_70.f3 g_70.f2.f0 + */ +static struct S0 func_30(const int8_t p_31, union U3 p_32) +{ /* block id: 192 */ + int32_t l_310 = (-1L); + struct S0 l_311 = {-1116,303,5}; + for (g_70.f3 = 0; (g_70.f3 == 52); g_70.f3 = safe_add_func_uint32_t_u_u(g_70.f3, 5)) + { /* block id: 195 */ + uint32_t l_307 = 0UL; + int32_t *l_308 = (void*)0; + int32_t *l_309[5][9][3] = {{{&g_8,&g_285[0],&g_8},{&g_8,&g_8,(void*)0},{&g_8,(void*)0,&g_8},{&g_8,&g_285[0],&g_285[0]},{&g_8,(void*)0,&g_285[0]},{&g_8,&g_8,&g_8},{&g_8,&g_8,(void*)0},{&g_8,(void*)0,(void*)0},{&g_8,&g_285[0],&g_8}},{{&g_8,(void*)0,&g_8},{&g_8,&g_8,(void*)0},{&g_8,&g_8,&g_285[0]},{&g_8,(void*)0,(void*)0},{&g_8,&g_285[0],&g_8},{&g_8,(void*)0,&g_8},{&g_8,&g_8,(void*)0},{&g_8,&g_8,&g_285[0]},{(void*)0,(void*)0,(void*)0}},{{(void*)0,&g_285[0],&g_8},{&g_8,&g_285[0],&g_8},{&g_8,&g_8,(void*)0},{&g_8,&g_8,&g_285[0]},{(void*)0,&g_285[0],(void*)0},{(void*)0,&g_8,&g_8},{&g_8,&g_285[0],&g_8},{&g_8,&g_8,&g_285[0]},{&g_8,&g_8,&g_8}},{{(void*)0,&g_285[0],&g_285[0]},{(void*)0,&g_8,&g_8},{&g_8,&g_285[0],&g_8},{&g_8,&g_8,&g_285[0]},{&g_8,&g_8,&g_8},{&g_285[0],&g_285[0],&g_285[0]},{&g_285[0],&g_8,&g_8},{&g_8,&g_285[0],&g_8},{(void*)0,&g_8,&g_285[0]}},{{&g_8,&g_8,&g_8},{&g_285[0],&g_8,&g_285[0]},{&g_285[0],&g_8,&g_8},{&g_8,&g_8,&g_8},{(void*)0,&g_8,&g_285[0]},{&g_8,&g_8,&g_8},{&g_285[0],&g_8,&g_8},{&g_285[0],&g_8,&g_8},{&g_8,&g_8,&g_8}}}; + int i, j, k; + g_70.f2.f0 |= (p_32 , p_32.f2); + l_310 |= p_31; + } + return l_311; +} + + +/* ------------------------------------------ */ +/* + * reads : g_8 g_54 g_60.f0 g_70 g_79 g_112 g_124 g_125 g_141 g_156 g_67 g_60.f2 g_203 g_217 g_235 g_255 g_258 g_252 g_259 g_281 g_285 g_304 + * writes: g_54 g_67 g_79 g_70.f2.f0 g_70.f6.f0 g_70.f6 g_60.f0 g_70.f5 g_141 g_125 g_203 g_217 g_70.f1 g_235 g_234 g_255 g_252 g_285 g_156 + */ +static union U3 func_33(int8_t p_34, int16_t p_35, int32_t p_36) +{ /* block id: 1 */ + int8_t l_44 = (-8L); + int16_t *l_52 = (void*)0; + int16_t *l_53 = &g_54[7][8]; + struct S1 *l_282 = (void*)0; + struct S1 **l_287 = &g_156[2][1][7]; + struct S1 **l_288 = &l_282; + int32_t l_289[5] = {1L,1L,1L,1L,1L}; + int32_t *l_290 = &g_285[0]; + int32_t *l_291 = (void*)0; + int32_t *l_292 = &l_289[0]; + int32_t *l_293 = &l_289[3]; + int32_t *l_294 = (void*)0; + int32_t *l_295 = &g_285[0]; + int32_t *l_296 = &g_285[0]; + int32_t *l_297 = &l_289[3]; + int32_t *l_298[1]; + int32_t l_299 = (-1L); + int32_t l_300 = 0x460548ABL; + uint16_t l_301 = 0x1E4AL; + int i; + for (i = 0; i < 1; i++) + l_298[i] = (void*)0; + (*l_288) = ((*l_287) = func_39(l_44, g_8, func_45((safe_lshift_func_uint16_t_u_s((safe_div_func_int8_t_s_s(p_35, 0x53L)), ((*l_53) = g_8))), g_8), l_282)); + l_301--; + return g_304; +} + + +/* ------------------------------------------ */ +/* + * reads : g_285 + * writes: g_285 + */ +static struct S1 * func_39(int32_t p_40, uint16_t p_41, struct S1 * p_42, struct S1 * p_43) +{ /* block id: 185 */ + uint32_t l_283 = 0x3C929064L; + int32_t *l_284 = &g_285[0]; + struct S1 *l_286 = (void*)0; + (*l_284) |= l_283; + return l_286; +} + + +/* ------------------------------------------ */ +/* + * reads : g_54 g_60.f0 g_70 g_8 g_79 g_112 g_124 g_125 g_141 g_156 g_60.f2 g_203 g_217 g_235 g_255 g_258 g_252 g_259 g_281 g_67 + * writes: g_67 g_79 g_70.f2.f0 g_70.f6.f0 g_70.f6 g_60.f0 g_70.f5 g_54 g_141 g_125 g_203 g_217 g_70.f1 g_235 g_234 g_255 g_252 + */ +static struct S1 * func_45(int32_t p_46, uint32_t p_47) +{ /* block id: 3 */ + struct S0 *l_59 = &g_60; + struct S0 **l_82 = &l_59; + int32_t * const l_83 = &g_8; + int32_t *l_85 = &g_8; + int32_t **l_84 = &l_85; + uint16_t l_105 = 0x9B7AL; + int32_t l_107[8] = {0xA1CE40C6L,0xA1CE40C6L,0xA1CE40C6L,0xA1CE40C6L,0xA1CE40C6L,0xA1CE40C6L,0xA1CE40C6L,0xA1CE40C6L}; + union U3 l_114 = {0xF1L}; + struct S1 l_247[7][10][1] = {{{{0x1EL,184}},{{0x79L,135}},{{5UL,49}},{{0xA4L,104}},{{0x43L,70}},{{0x25L,42}},{{0x43L,70}},{{0xA4L,104}},{{5UL,49}},{{0x79L,135}}},{{{0x1EL,184}},{{0xA4L,104}},{{252UL,79}},{{0x25L,42}},{{252UL,79}},{{0xA4L,104}},{{0x1EL,184}},{{0x79L,135}},{{5UL,49}},{{0xA4L,104}}},{{{0x43L,70}},{{0x25L,42}},{{0x43L,70}},{{0xA4L,104}},{{5UL,49}},{{0x79L,135}},{{0x1EL,184}},{{0xA4L,104}},{{252UL,79}},{{0x25L,42}}},{{{252UL,79}},{{0xA4L,104}},{{0x1EL,184}},{{0x79L,135}},{{5UL,49}},{{0xA4L,104}},{{0x43L,70}},{{0x25L,42}},{{0x43L,70}},{{0xA4L,104}}},{{{5UL,49}},{{0x79L,135}},{{0x1EL,184}},{{0xA4L,104}},{{252UL,79}},{{0x25L,42}},{{252UL,79}},{{0xA4L,104}},{{0x1EL,184}},{{0x79L,135}}},{{{5UL,49}},{{0xA4L,104}},{{0x43L,70}},{{0x25L,42}},{{0x43L,70}},{{0xA4L,104}},{{5UL,49}},{{0x79L,135}},{{0x1EL,184}},{{0xA4L,104}}},{{{252UL,79}},{{0x25L,42}},{{252UL,79}},{{0xA4L,104}},{{0x1EL,184}},{{0x79L,135}},{{5UL,49}},{{0xA4L,104}},{{0x43L,70}},{{0x25L,42}}}}; + int i, j, k; + (*l_82) = func_55((safe_unary_minus_func_uint8_t_u((l_59 != (void*)0))), &g_60); + (*l_84) = l_83; + if ((**l_84)) + { /* block id: 12 */ + uint16_t l_123[10][5]; + int32_t l_126 = 0L; + int i, j; + for (i = 0; i < 10; i++) + { + for (j = 0; j < 5; j++) + l_123[i][j] = 0xDDF1L; + } + for (p_46 = (-1); (p_46 < (-18)); p_46 = safe_sub_func_int16_t_s_s(p_46, 8)) + { /* block id: 15 */ + uint32_t l_90 = 0xCF63D7CBL; + int32_t l_103 = 0xA8BA3176L; + const struct S0 *l_111[5][10] = {{&g_70.f2,&g_70.f2,&g_70.f0,&g_60,&g_70.f2,&g_70.f0,&g_70.f0,&g_60,&g_70.f2,&g_60},{&g_60,&g_60,&g_70.f2,&g_70.f2,&g_70.f2,&g_70.f2,&g_70.f2,&g_70.f0,&g_60,&g_70.f0},{&g_70.f0,&g_70.f0,&g_70.f2,&g_70.f2,&g_60,&g_70.f2,&g_60,&g_70.f2,&g_70.f0,&g_70.f2},{&g_70.f2,&g_70.f2,&g_70.f2,&g_60,&g_70.f0,&g_70.f2,&g_70.f0,&g_70.f2,&g_70.f2,&g_60},{&g_70.f2,&g_70.f2,&g_70.f2,&g_70.f0,&g_70.f2,&g_60,&g_70.f2,&g_70.f2,&g_70.f2,&g_70.f0}}; + const struct S0 **l_110 = &l_111[2][5]; + struct S1 l_116 = {0xCAL,42}; + int i, j; + g_70.f2.f0 |= (safe_sub_func_uint32_t_u_u((0xE0L < (l_90 || g_70.f0.f0)), (-1L))); + if (((void*)0 == &g_54[7][8])) + { /* block id: 17 */ + int32_t l_97[7][8][4] = {{{(-3L),(-3L),0xFED72739L,0x8FEE3948L},{(-4L),0xBC662C87L,(-1L),(-1L)},{(-1L),4L,4L,(-3L)},{4L,(-3L),0x2ABD0CEAL,0xD32418DFL},{0xBC662C87L,0x429AA74CL,0x429AA74CL,0x8FEE3948L},{1L,0xD32418DFL,(-1L),0xC6490BB3L},{0x8DDDCD3EL,0xAAA56D44L,(-3L),0x8FEE3948L},{1L,(-3L),(-10L),0xAAA56D44L}},{{0xC6490BB3L,1L,1L,0xFED72739L},{(-1L),0xA2B653F5L,(-3L),0xA2B653F5L},{0x8AADD0F3L,6L,0x8FEE3948L,0xBC662C87L},{1L,(-4L),0xBC662C87L,(-3L)},{0xFED72739L,0x0324A0BDL,0xBC662C87L,6L},{1L,0xFED72739L,0xC6490BB3L,1L},{1L,0x2ABD0CEAL,0xD32418DFL,0xD32418DFL},{4L,4L,(-3L),0x2ABD0CEAL}},{{0x2ABD0CEAL,(-1L),(-1L),(-1L)},{(-4L),0xFED72739L,0x7B59BB01L,4L},{(-1L),0x429AA74CL,0L,4L},{0x429AA74CL,(-4L),0xAAA56D44L,(-1L)},{(-10L),(-3L),0x0324A0BDL,0x8DDDCD3EL},{1L,0xA2B653F5L,1L,0x7B59BB01L},{0x429AA74CL,6L,0x429AA74CL,(-3L)},{0x7B59BB01L,(-3L),0xAAA56D44L,(-10L)}},{{0xBC662C87L,4L,0x7B59BB01L,(-4L)},{0xBC662C87L,0xD32418DFL,0xAAA56D44L,(-10L)},{0x8FEE3948L,0x0324A0BDL,(-3L),(-1L)},{(-3L),(-3L),(-3L),0xD32418DFL},{(-1L),0xD32418DFL,(-1L),0xBC662C87L},{(-1L),0xC6490BB3L,0x8FEE3948L,(-10L)},{0xAAA56D44L,0x2ABD0CEAL,(-1L),0x0324A0BDL},{0xA2B653F5L,0x2ABD0CEAL,0xBC662C87L,(-10L)}},{{0xD32418DFL,0xBC662C87L,0L,0x2ABD0CEAL},{0x0324A0BDL,0xAAA56D44L,0x429AA74CL,0x7B59BB01L},{1L,1L,0xC6490BB3L,1L},{(-4L),(-1L),(-10L),(-1L)},{0xD32418DFL,0x8FEE3948L,(-1L),0xD32418DFL},{0xAAA56D44L,0x8AADD0F3L,(-1L),(-1L)},{0xAAA56D44L,0x7B59BB01L,(-10L),0x429AA74CL},{0x429AA74CL,(-1L),0x2ABD0CEAL,0x2ABD0CEAL}},{{(-1L),(-1L),0xD32418DFL,(-1L)},{(-1L),(-3L),1L,0x8AADD0F3L},{0x8FEE3948L,0x7B59BB01L,6L,(-3L)},{1L,0x8FEE3948L,1L,(-3L)},{0xC6490BB3L,0x7B59BB01L,6L,1L},{0xA2B653F5L,0xD32418DFL,0x8AADD0F3L,4L},{(-4L),1L,0x429AA74CL,6L},{0xC6490BB3L,4L,0x8FEE3948L,0xD32418DFL}},{{0x8DDDCD3EL,0xC6490BB3L,6L,0L},{0x0324A0BDL,(-1L),0x8DDDCD3EL,0x8FEE3948L},{0x0324A0BDL,0x2ABD0CEAL,6L,0xA2B653F5L},{(-10L),0x8AADD0F3L,0xC6490BB3L,0x429AA74CL},{0xBC662C87L,(-3L),(-3L),0x2ABD0CEAL},{(-3L),0xBC662C87L,(-1L),(-1L)},{0x8AADD0F3L,0x0324A0BDL,(-10L),0xA2B653F5L},{0x2ABD0CEAL,(-1L),0x429AA74CL,0L}}}; + uint16_t *l_102[8][9][3] = {{{(void*)0,&g_70.f3,&g_79},{&g_79,&g_70.f3,&g_70.f3},{&g_79,(void*)0,&g_70.f3},{&g_79,(void*)0,&g_70.f3},{&g_70.f3,(void*)0,&g_79},{(void*)0,&g_70.f3,&g_70.f3},{(void*)0,&g_70.f3,(void*)0},{&g_70.f3,(void*)0,&g_70.f3},{(void*)0,(void*)0,&g_79}},{{(void*)0,&g_70.f3,(void*)0},{(void*)0,(void*)0,&g_70.f3},{&g_79,&g_79,&g_70.f3},{&g_70.f3,(void*)0,&g_70.f3},{&g_79,&g_70.f3,(void*)0},{&g_79,&g_70.f3,&g_79},{&g_70.f3,&g_79,&g_70.f3},{&g_70.f3,&g_70.f3,&g_70.f3},{&g_70.f3,&g_70.f3,(void*)0}},{{&g_70.f3,&g_79,&g_79},{&g_70.f3,&g_70.f3,&g_79},{&g_79,&g_79,&g_79},{&g_79,&g_79,&g_79},{&g_79,&g_79,&g_70.f3},{(void*)0,&g_79,&g_79},{(void*)0,&g_79,(void*)0},{&g_70.f3,&g_79,&g_79},{&g_79,(void*)0,&g_70.f3}},{{(void*)0,&g_70.f3,&g_79},{&g_79,&g_79,&g_79},{&g_79,(void*)0,(void*)0},{&g_79,(void*)0,&g_79},{&g_79,(void*)0,&g_70.f3},{&g_79,(void*)0,&g_70.f3},{&g_70.f3,(void*)0,&g_79},{&g_79,&g_79,(void*)0},{&g_79,&g_70.f3,&g_79}},{{&g_79,&g_79,&g_79},{&g_70.f3,&g_70.f3,&g_70.f3},{(void*)0,(void*)0,&g_70.f3},{&g_79,(void*)0,&g_79},{&g_70.f3,&g_70.f3,&g_79},{(void*)0,&g_79,&g_70.f3},{&g_79,(void*)0,&g_79},{&g_70.f3,(void*)0,&g_79},{(void*)0,&g_79,&g_70.f3}},{{&g_70.f3,&g_70.f3,&g_70.f3},{&g_79,&g_70.f3,&g_70.f3},{&g_79,&g_79,&g_79},{&g_79,&g_70.f3,&g_79},{&g_79,&g_70.f3,&g_70.f3},{&g_79,&g_79,(void*)0},{&g_79,(void*)0,&g_79},{&g_79,&g_79,&g_79},{&g_70.f3,&g_79,(void*)0}},{{&g_70.f3,&g_70.f3,&g_70.f3},{(void*)0,(void*)0,&g_79},{&g_79,&g_79,&g_70.f3},{&g_79,(void*)0,(void*)0},{(void*)0,&g_79,(void*)0},{(void*)0,&g_70.f3,&g_70.f3},{&g_70.f3,&g_79,&g_70.f3},{(void*)0,&g_70.f3,&g_70.f3},{(void*)0,&g_79,&g_79}},{{&g_79,&g_70.f3,&g_79},{&g_79,(void*)0,&g_70.f3},{(void*)0,&g_79,(void*)0},{&g_79,(void*)0,(void*)0},{(void*)0,&g_70.f3,&g_79},{&g_79,&g_79,&g_70.f3},{&g_79,&g_79,&g_79},{&g_79,&g_79,(void*)0},{&g_79,(void*)0,&g_70.f3}}}; + uint8_t *l_104 = &g_70.f6.f0; + int i, j, k; + g_70.f2.f0 ^= (safe_lshift_func_int16_t_s_s(p_46, p_46)); + if (((0L & (safe_mul_func_int16_t_s_s((((*l_104) ^= ((safe_rshift_func_int8_t_s_s(((+p_46) , g_70.f0.f0), p_47)) < (0L && (l_97[2][3][1] ^ (p_47 < (safe_lshift_func_int16_t_s_s(((p_47 , (safe_mul_func_uint16_t_u_u((l_103 &= l_97[2][3][1]), p_47))) && (-8L)), 5))))))) , l_105), 0L))) , l_97[2][3][1])) + { /* block id: 21 */ + int32_t *l_106[7] = {&l_103,&l_97[0][2][3],&l_97[0][2][3],&g_8,&l_103,&l_103,&l_97[0][2][3]}; + int i; + l_107[5] = l_97[2][3][1]; + } + else + { /* block id: 23 */ + uint16_t l_115 = 1UL; + struct S1 *l_117 = &g_70.f6; + struct S1 *l_118 = &l_116; + int32_t l_128[4][4] = {{0xAE0EBF16L,1L,0xAE0EBF16L,1L},{0xAE0EBF16L,1L,0xAE0EBF16L,1L},{0xAE0EBF16L,1L,0xAE0EBF16L,1L},{0xAE0EBF16L,1L,0xAE0EBF16L,1L}}; + int32_t *l_129 = (void*)0; + int32_t *l_130 = &l_128[2][3]; + int32_t *l_131 = &l_126; + int32_t *l_132 = &l_97[3][6][0]; + int32_t *l_133 = &l_126; + int32_t *l_134 = &l_107[5]; + int32_t *l_135 = &l_97[5][3][3]; + int32_t *l_136 = &l_128[2][3]; + int32_t *l_137 = &l_126; + int32_t *l_138 = &l_126; + int32_t *l_139 = &l_103; + int32_t *l_140[5][10] = {{&l_107[6],&l_103,&g_8,&l_126,&l_103,&g_8,&l_126,(void*)0,&l_107[5],&g_8},{&l_107[5],&l_103,(void*)0,&l_103,&g_8,&l_97[2][3][1],&l_107[5],(void*)0,&l_126,&g_8},{&l_107[5],&l_126,&l_126,&l_107[5],(void*)0,&g_8,&g_8,&l_128[2][3],&l_103,&l_107[1]},{(void*)0,&l_107[5],(void*)0,(void*)0,(void*)0,&l_126,&g_8,&l_128[0][2],&l_107[5],&l_103},{&l_107[5],&g_8,(void*)0,&g_8,(void*)0,&l_126,&l_107[5],&l_126,(void*)0,&g_8}}; + int i, j; + if ((g_70.f7 , (safe_mul_func_uint16_t_u_u(g_54[2][3], ((l_110 != g_112) && ((p_47 == (l_114 , (l_115 & (p_46 ^ ((((((*l_118) = ((*l_117) = l_116)) , g_70.f4) > g_70.f2.f2) , p_47) & 0xF1956382L))))) > l_115)))))) + { /* block id: 26 */ + int16_t *l_121[6] = {&g_54[7][8],&g_54[7][8],&g_54[7][8],&g_54[7][8],&g_54[7][8],&g_54[7][8]}; + int16_t **l_120 = &l_121[4]; + uint32_t *l_122 = &g_70.f5; + int i; + g_60.f0 |= (safe_unary_minus_func_uint16_t_u(p_47)); + g_70.f2.f0 &= (((*l_120) = &g_54[7][8]) != &g_54[9][4]); + l_126 &= ((((*l_122) = (p_47 != (*l_85))) , ((**l_120) = ((((*l_104) = 0UL) > g_70.f7.f0) >= (l_123[6][1] != ((void*)0 == g_124))))) & p_46); + } + else + { /* block id: 34 */ + int32_t *l_127[4] = {&l_97[2][3][1],&l_97[2][3][1],&l_97[2][3][1],&l_97[2][3][1]}; + int i; + if ((**g_124)) + break; + g_70.f2.f0 &= l_116.f1; + } + --g_141; + } + l_103 |= 0x9AB640BFL; + l_97[4][3][2] |= (g_8 >= ((p_47 >= (safe_mod_func_uint32_t_u_u(l_103, 8UL))) < p_47)); + } + else + { /* block id: 42 */ + int32_t l_149[4] = {0xBC5006F5L,0xBC5006F5L,0xBC5006F5L,0xBC5006F5L}; + int i; + (*g_124) = (*g_124); + for (l_114.f2 = (-1); (l_114.f2 >= 24); ++l_114.f2) + { /* block id: 46 */ + int32_t *l_148[5]; + struct S1 *l_150 = (void*)0; + struct S1 *l_151 = &l_116; + int i; + for (i = 0; i < 5; i++) + l_148[i] = &l_107[5]; + l_149[0] &= (g_60.f0 |= p_46); + (*l_151) = l_116; + for (g_141 = 0; (g_141 >= 36); ++g_141) + { /* block id: 52 */ + if (p_47) + break; + (*l_151) = (g_70 , g_70.f6); + (*l_151) = g_70.f6; + } + } + for (l_105 = (-28); (l_105 != 42); l_105 = safe_add_func_uint32_t_u_u(l_105, 1)) + { /* block id: 60 */ + return g_156[2][1][7]; + } + } + } + } + else + { /* block id: 65 */ + uint32_t l_168 = 0UL; + int32_t l_174 = 8L; + int32_t l_206 = 0L; + int32_t l_215 = 0x8159E85BL; + uint16_t l_272 = 65534UL; + struct S0 *l_277 = &g_70.f2; + struct S2 l_280 = {{1515,507,0},0xA1E9C32DL,{1725,421,11},0xA2D4L,4294967293UL,4294967295UL,{0x17L,183},{209,374,19},0UL}; +lbl_268: + for (p_47 = (-26); (p_47 == 39); p_47++) + { /* block id: 68 */ + int32_t *l_159 = &g_8; + int32_t l_162 = 0L; + struct S1 l_178 = {252UL,162}; + int32_t l_214 = 0x89B60EE2L; + (*g_124) = ((*l_84) = l_159); + if (p_47) + { /* block id: 71 */ + int8_t l_164 = (-10L); + for (g_70.f6.f0 = 0; (g_70.f6.f0 <= 3); g_70.f6.f0 += 1) + { /* block id: 74 */ + if ((**g_124)) + break; + for (p_46 = 3; (p_46 >= 0); p_46 -= 1) + { /* block id: 78 */ + int32_t *l_160 = (void*)0; + int32_t *l_161 = &l_107[5]; + if ((*g_125)) + break; + (*l_161) |= (*g_125); + if ((*g_125)) + continue; + } + l_162 &= (*l_159); + for (g_67 = 0; (g_67 <= 3); g_67 += 1) + { /* block id: 86 */ + int32_t *l_163 = &l_107[5]; + int32_t *l_165 = &l_162; + int32_t *l_166 = &l_107[5]; + int32_t *l_167 = &l_162; + (*l_163) = 0x1E9C1B1BL; + l_168--; + } + } + } + else + { /* block id: 91 */ + uint32_t l_175 = 4294967291UL; + struct S1 *l_183 = &g_70.f6; + uint8_t *l_184 = (void*)0; + int32_t l_193 = 0x0082912AL; + int32_t l_216 = 4L; + if ((*l_85)) + { /* block id: 92 */ + int32_t *l_171 = (void*)0; + int32_t *l_172 = &l_107[4]; + int32_t *l_173[2][4]; + struct S1 *l_179[8] = {&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6,&g_70.f6}; + int i, j; + for (i = 0; i < 2; i++) + { + for (j = 0; j < 4; j++) + l_173[i][j] = &l_107[0]; + } + l_175--; + if ((**g_124)) + continue; + l_178 = l_178; + for (g_67 = 0; (g_67 < 1); g_67++) + { /* block id: 98 */ + struct S1 *l_182 = &l_178; + return l_183; + } + } + else + { /* block id: 101 */ + uint8_t **l_185 = (void*)0; + uint8_t **l_186 = &l_184; + int32_t l_197 = 0xDAA83F59L; + int32_t *l_198 = (void*)0; + int32_t *l_199 = &l_107[5]; + int32_t *l_200 = &l_174; + int32_t *l_201 = &l_193; + int32_t *l_202[6][10][4] = {{{(void*)0,(void*)0,&l_197,(void*)0},{(void*)0,&l_107[7],&l_197,&l_107[4]},{&l_197,&l_193,&l_107[0],&l_174},{&l_193,(void*)0,&l_162,&l_197},{&l_197,&l_162,&l_193,&l_107[4]},{&l_174,&l_197,&l_174,&l_197},{&l_174,&l_193,&l_107[0],(void*)0},{&l_107[4],&l_107[5],&l_162,&l_174},{&l_107[5],&l_174,&l_107[5],&l_174},{&l_107[5],&l_107[5],(void*)0,&l_107[5]}},{{&l_107[5],(void*)0,(void*)0,&g_8},{&l_174,&g_8,(void*)0,(void*)0},{&l_107[5],&l_162,&l_193,(void*)0},{&l_107[5],&l_107[5],(void*)0,&g_8},{&l_107[4],&l_107[5],&l_174,&l_107[1]},{(void*)0,&l_193,&l_107[4],&l_197},{&g_8,&g_8,&l_197,&l_107[5]},{&l_193,&l_107[7],(void*)0,&l_107[5]},{&l_107[5],&l_162,&l_107[5],(void*)0},{&l_107[1],&l_107[5],&l_197,&l_197}},{{&l_193,(void*)0,(void*)0,&l_193},{&l_174,&l_107[4],&l_162,&l_107[5]},{&l_193,&l_107[5],&l_197,&l_174},{&l_107[5],&l_193,&l_193,&l_107[5]},{&l_107[5],&l_193,&l_197,&g_8},{&l_193,&l_193,&l_107[4],(void*)0},{&g_8,(void*)0,(void*)0,&g_8},{(void*)0,&l_197,&l_107[0],&l_107[4]},{&l_107[5],&l_174,(void*)0,&l_162},{&l_107[4],&l_197,&l_162,&l_193}},{{&l_107[5],&l_107[5],(void*)0,&l_107[7]},{(void*)0,&l_193,(void*)0,&l_193},{(void*)0,&l_162,&l_197,&l_107[5]},{&l_107[5],&l_193,&l_107[7],&l_193},{&l_193,(void*)0,&l_197,&l_197},{(void*)0,&l_162,&l_174,&l_162},{&l_174,&l_193,&l_174,&g_8},{&l_107[5],(void*)0,&l_107[4],&l_162},{&l_107[7],&l_193,&l_107[5],&l_107[4]},{&l_193,&l_193,&l_197,&l_162}},{{(void*)0,(void*)0,&l_107[5],&l_107[7]},{&l_197,(void*)0,&l_174,&l_107[5]},{(void*)0,&l_107[5],&l_107[5],&l_107[5]},{&l_193,&l_174,&l_107[5],&l_193},{&l_107[4],&l_107[5],&l_197,(void*)0},{&l_174,&l_197,&l_193,(void*)0},{&l_193,&l_162,&g_8,&l_193},{(void*)0,(void*)0,&l_193,&l_193},{&l_197,&l_193,&l_107[5],&l_107[4]},{&l_107[5],&l_174,&l_107[1],(void*)0}},{{&l_197,&l_107[5],&l_107[5],&l_193},{&l_107[4],&l_107[4],&l_197,&l_197},{&l_193,&l_193,&l_193,&l_107[0]},{&l_162,&g_8,&l_107[5],(void*)0},{&l_107[5],&l_162,&l_107[5],&l_193},{&l_193,&g_8,&l_193,&l_174},{&l_193,&l_197,&l_174,&g_8},{(void*)0,&l_193,&l_193,&g_8},{&l_107[5],(void*)0,&l_107[5],(void*)0},{&l_197,&l_193,&l_107[4],&l_197}}}; + int i, j, k; + if (((((((*l_186) = l_184) == &g_67) && (safe_rshift_func_uint8_t_u_s(g_79, 6))) <= ((safe_mul_func_int16_t_s_s(p_46, (**l_84))) | (safe_rshift_func_uint16_t_u_s((&g_113 != &l_59), 14)))) <= g_60.f2)) + { /* block id: 103 */ + struct S2 **l_194 = (void*)0; + struct S2 *l_196 = &g_70; + struct S2 **l_195 = &l_196; + l_193 ^= (**g_124); + (*l_195) = &g_70; + (*g_124) = ((*l_84) = &l_162); + if (l_197) + break; + } + else + { /* block id: 109 */ + if (l_197) + break; + (*g_124) = &l_162; + } + g_203[3]++; + } + if (p_47) + { /* block id: 115 */ + if ((**l_84)) + break; + } + else + { /* block id: 117 */ + int32_t *l_207 = &l_193; + int32_t *l_208 = &l_193; + int32_t *l_209 = &l_193; + int32_t *l_210 = &l_107[5]; + int32_t *l_211 = &l_162; + int32_t *l_212 = &l_107[1]; + int32_t *l_213[6][4] = {{(void*)0,&l_107[2],(void*)0,&l_107[2]},{(void*)0,&l_107[2],(void*)0,&l_107[2]},{(void*)0,&l_107[2],(void*)0,&l_107[2]},{(void*)0,&l_107[2],(void*)0,&l_107[2]},{(void*)0,&l_107[2],(void*)0,&l_107[2]},{(void*)0,&l_107[2],(void*)0,&l_107[2]}}; + int i, j; + l_206 |= (l_174 = (**g_124)); + g_217[1]--; + } + } + for (l_168 = 0; (l_168 <= 15); l_168++) + { /* block id: 125 */ + uint16_t l_227 = 65535UL; + for (g_141 = 25; (g_141 < 10); --g_141) + { /* block id: 128 */ + uint32_t l_224[10] = {0x72F24C6DL,0x72F24C6DL,0x72F24C6DL,0x72F24C6DL,0x72F24C6DL,0x72F24C6DL,0x72F24C6DL,0x72F24C6DL,0x72F24C6DL,0x72F24C6DL}; + int i; + --l_224[8]; + l_227 = (-9L); + } + l_174 |= (*g_125); + } + } + for (g_70.f1 = 6; (g_70.f1 == 4); --g_70.f1) + { /* block id: 137 */ + int32_t *l_230 = &l_206; + int32_t *l_231 = &l_215; + int32_t *l_232 = (void*)0; + int32_t *l_233[1]; + struct S1 l_265 = {0UL,164}; + int i; + for (i = 0; i < 1; i++) + l_233[i] = &l_174; + g_235--; + for (l_215 = 0; (l_215 <= (-16)); l_215--) + { /* block id: 141 */ + struct S1 l_248[1][4][6] = {{{{9UL,284},{254UL,195},{9UL,284},{255UL,160},{9UL,284},{0x5BL,115}},{{0x72L,235},{0x79L,274},{255UL,160},{0x5BL,115},{0x5BL,115},{255UL,160}},{{254UL,195},{254UL,195},{254UL,155},{254UL,195},{0x79L,274},{254UL,195}},{{254UL,155},{254UL,155},{255UL,160},{0x79L,274},{0x72L,235},{0x72L,235}}}}; + int32_t l_251 = 0x6C6B0ADAL; + int i, j, k; + for (g_70.f5 = 6; (g_70.f5 != 46); ++g_70.f5) + { /* block id: 144 */ + int32_t *l_242 = (void*)0; + int32_t l_253[1][5][6] = {{{0xBA40BAC5L,0x923D8348L,0L,0x16EABE1CL,0x923D8348L,0x923D8348L},{0x923D8348L,0xB0590F93L,0x16EABE1CL,0xC21EBF77L,0L,0x6348B1DDL},{0x6348B1DDL,0xBA40BAC5L,0x923D8348L,0L,0x16EABE1CL,0x923D8348L},{0xC21EBF77L,0L,0xC21EBF77L,0xB0590F93L,0x6348B1DDL,0xBA40BAC5L},{0x6348B1DDL,0x923D8348L,0xB0590F93L,0xBA40BAC5L,0xBA40BAC5L,0xC21EBF77L}}}; + int i, j, k; + for (l_105 = 0; (l_105 <= 9); l_105 += 1) + { /* block id: 147 */ + int i; + (*g_124) = l_242; + (*l_230) ^= (safe_mul_func_int16_t_s_s((g_203[l_105] || 0L), (g_70.f5 < (p_46 == (safe_rshift_func_int8_t_s_s(p_46, 1)))))); + } + for (g_234 = 0; (g_234 <= 3); g_234 += 1) + { /* block id: 153 */ + l_248[0][1][0] = l_247[5][5][0]; + } + if ((safe_lshift_func_uint8_t_u_u(p_47, 4))) + { /* block id: 156 */ + struct S0 ***l_260 = &l_82; + g_255--; + l_174 &= (&g_113 != ((*l_260) = g_258)); + } + else + { /* block id: 160 */ + uint32_t l_261 = 0xCEF78231L; + ++l_261; + return g_156[1][6][3]; + } + } + (*l_230) &= l_251; + if (p_46) + break; + if ((l_251 = (l_174 |= ((*l_230) = (g_70.f7.f1 <= p_46))))) + { /* block id: 170 */ + const struct S1 l_264 = {250UL,40}; + l_265 = l_264; + } + else + { /* block id: 172 */ + uint16_t l_269 = 0xB5A1L; + for (g_252 = 0; (g_252 <= 7); ++g_252) + { /* block id: 175 */ + if (l_105) + goto lbl_268; + if (l_269) + continue; + } + } + } + } + l_215 = (((safe_mod_func_int32_t_s_s(((l_272 >= (safe_mul_func_uint16_t_u_u((safe_div_func_int8_t_s_s((((l_168 | (l_277 != (*g_258))) ^ g_70.f2.f2) < (safe_add_func_int16_t_s_s((l_280 , ((p_46 <= ((((g_281 ^ ((void*)0 == &l_280)) , 0xF0L) != g_8) <= p_47)) < 1L)), p_46))), p_46)), (-7L)))) < l_280.f2.f0), p_47)) ^ 4294967290UL) & 1UL); + } + return g_156[2][1][7]; +} + + +/* ------------------------------------------ */ +/* + * reads : g_54 g_60.f0 g_70 g_8 g_79 + * writes: g_67 g_79 + */ +static struct S0 * func_55(int16_t p_56, struct S0 * p_57) +{ /* block id: 4 */ + uint8_t *l_65 = (void*)0; + uint8_t *l_66 = &g_67; + int32_t l_73 = (-6L); + int32_t l_74 = 0x4EE4B4BCL; + int32_t l_75 = 1L; + int32_t *l_76 = &l_75; + int32_t *l_77 = &l_75; + int32_t *l_78[9][4] = {{&l_75,&l_73,&l_75,&l_75},{(void*)0,&l_75,&g_8,&g_8},{(void*)0,&l_75,(void*)0,&g_8},{&l_75,&l_73,&l_73,&g_8},{&g_8,&l_75,&g_8,&g_8},{&l_73,&l_73,&l_73,&g_8},{&l_75,&g_8,&l_75,&l_73},{&g_8,(void*)0,&l_75,(void*)0},{&l_75,&l_75,&g_8,&g_8}}; + int i, j; + l_75 |= (((safe_sub_func_uint8_t_u_u(g_54[7][8], (safe_mod_func_uint8_t_u_u(((*l_66) = g_60.f0), (safe_mul_func_int8_t_s_s((p_56 , (((g_70 , (g_54[5][5] && (0L | g_70.f8))) , (safe_lshift_func_int8_t_s_s((l_73 >= (((l_74 = g_70.f6.f0) > l_73) >= l_73)), 4))) < l_73)), 5UL)))))) , g_8) & l_73); + --g_79; + return p_57; +} + + + + +/* ---------------------------------------- */ +int main (int argc, char* argv[]) +{ + int i, j, k; + int print_hash_value = 0; + if (argc == 2 && strcmp(argv[1], "1") == 0) print_hash_value = 1; + platform_main_begin(); + crc32_gentab(); + func_1(); + transparent_crc(g_8, "g_8", print_hash_value); + for (i = 0; i < 10; i++) + { + for (j = 0; j < 9; j++) + { + transparent_crc(g_54[i][j], "g_54[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_60.f0, "g_60.f0", print_hash_value); + transparent_crc(g_60.f1, "g_60.f1", print_hash_value); + transparent_crc(g_60.f2, "g_60.f2", print_hash_value); + transparent_crc(g_67, "g_67", print_hash_value); + transparent_crc(g_70.f0.f0, "g_70.f0.f0", print_hash_value); + transparent_crc(g_70.f0.f1, "g_70.f0.f1", print_hash_value); + transparent_crc(g_70.f0.f2, "g_70.f0.f2", print_hash_value); + transparent_crc(g_70.f1, "g_70.f1", print_hash_value); + transparent_crc(g_70.f2.f0, "g_70.f2.f0", print_hash_value); + transparent_crc(g_70.f2.f1, "g_70.f2.f1", print_hash_value); + transparent_crc(g_70.f2.f2, "g_70.f2.f2", print_hash_value); + transparent_crc(g_70.f3, "g_70.f3", print_hash_value); + transparent_crc(g_70.f4, "g_70.f4", print_hash_value); + transparent_crc(g_70.f5, "g_70.f5", print_hash_value); + transparent_crc(g_70.f6.f0, "g_70.f6.f0", print_hash_value); + transparent_crc(g_70.f6.f1, "g_70.f6.f1", print_hash_value); + transparent_crc(g_70.f7.f0, "g_70.f7.f0", print_hash_value); + transparent_crc(g_70.f7.f1, "g_70.f7.f1", print_hash_value); + transparent_crc(g_70.f7.f2, "g_70.f7.f2", print_hash_value); + transparent_crc(g_70.f8, "g_70.f8", print_hash_value); + transparent_crc(g_79, "g_79", print_hash_value); + transparent_crc(g_141, "g_141", print_hash_value); + for (i = 0; i < 10; i++) + { + transparent_crc(g_203[i], "g_203[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + for (i = 0; i < 5; i++) + { + transparent_crc(g_217[i], "g_217[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_234, "g_234", print_hash_value); + transparent_crc(g_235, "g_235", print_hash_value); + transparent_crc(g_252, "g_252", print_hash_value); + for (i = 0; i < 10; i++) + { + transparent_crc(g_254[i], "g_254[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_255, "g_255", print_hash_value); + transparent_crc(g_281, "g_281", print_hash_value); + for (i = 0; i < 7; i++) + { + transparent_crc(g_285[i], "g_285[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_304.f0, "g_304.f0", print_hash_value); + transparent_crc(g_304.f2, "g_304.f2", print_hash_value); + transparent_crc(g_304.f3, "g_304.f3", print_hash_value); + transparent_crc(g_351, "g_351", print_hash_value); + transparent_crc(g_361.f0, "g_361.f0", print_hash_value); + transparent_crc(g_361.f1, "g_361.f1", print_hash_value); + for (i = 0; i < 6; i++) + { + transparent_crc(g_371[i], "g_371[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + for (i = 0; i < 7; i++) + { + transparent_crc(g_389[i], "g_389[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + for (i = 0; i < 9; i++) + { + for (j = 0; j < 9; j++) + { + transparent_crc(g_397[i][j], "g_397[i][j]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d]\n", i, j); + + } + } + transparent_crc(g_449, "g_449", print_hash_value); + transparent_crc(g_524.f0, "g_524.f0", print_hash_value); + transparent_crc(g_524.f2, "g_524.f2", print_hash_value); + transparent_crc(g_524.f3, "g_524.f3", print_hash_value); + for (i = 0; i < 10; i++) + { + for (j = 0; j < 2; j++) + { + for (k = 0; k < 6; k++) + { + transparent_crc(g_621[i][j][k], "g_621[i][j][k]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + for (i = 0; i < 6; i++) + { + transparent_crc(g_739[i], "g_739[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_745, "g_745", print_hash_value); + transparent_crc(g_747, "g_747", print_hash_value); + for (i = 0; i < 2; i++) + { + transparent_crc(g_829[i], "g_829[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + for (i = 0; i < 9; i++) + { + for (j = 0; j < 5; j++) + { + for (k = 0; k < 1; k++) + { + transparent_crc(g_864[i][j][k], "g_864[i][j][k]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + for (i = 0; i < 10; i++) + { + transparent_crc(g_873[i].f0.f0, "g_873[i].f0.f0", print_hash_value); + transparent_crc(g_873[i].f0.f1, "g_873[i].f0.f1", print_hash_value); + transparent_crc(g_873[i].f0.f2, "g_873[i].f0.f2", print_hash_value); + transparent_crc(g_873[i].f1, "g_873[i].f1", print_hash_value); + transparent_crc(g_873[i].f2.f0, "g_873[i].f2.f0", print_hash_value); + transparent_crc(g_873[i].f2.f1, "g_873[i].f2.f1", print_hash_value); + transparent_crc(g_873[i].f2.f2, "g_873[i].f2.f2", print_hash_value); + transparent_crc(g_873[i].f3, "g_873[i].f3", print_hash_value); + transparent_crc(g_873[i].f4, "g_873[i].f4", print_hash_value); + transparent_crc(g_873[i].f5, "g_873[i].f5", print_hash_value); + transparent_crc(g_873[i].f6.f0, "g_873[i].f6.f0", print_hash_value); + transparent_crc(g_873[i].f6.f1, "g_873[i].f6.f1", print_hash_value); + transparent_crc(g_873[i].f7.f0, "g_873[i].f7.f0", print_hash_value); + transparent_crc(g_873[i].f7.f1, "g_873[i].f7.f1", print_hash_value); + transparent_crc(g_873[i].f7.f2, "g_873[i].f7.f2", print_hash_value); + transparent_crc(g_873[i].f8, "g_873[i].f8", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_921, "g_921", print_hash_value); + transparent_crc(g_973, "g_973", print_hash_value); + for (i = 0; i < 1; i++) + { + for (j = 0; j < 5; j++) + { + for (k = 0; k < 1; k++) + { + transparent_crc(g_987[i][j][k], "g_987[i][j][k]", print_hash_value); + if (print_hash_value) printf("index = [%d][%d][%d]\n", i, j, k); + + } + } + } + transparent_crc(g_994.f0.f0, "g_994.f0.f0", print_hash_value); + transparent_crc(g_994.f0.f1, "g_994.f0.f1", print_hash_value); + transparent_crc(g_994.f0.f2, "g_994.f0.f2", print_hash_value); + transparent_crc(g_994.f1, "g_994.f1", print_hash_value); + transparent_crc(g_994.f2.f0, "g_994.f2.f0", print_hash_value); + transparent_crc(g_994.f2.f1, "g_994.f2.f1", print_hash_value); + transparent_crc(g_994.f2.f2, "g_994.f2.f2", print_hash_value); + transparent_crc(g_994.f3, "g_994.f3", print_hash_value); + transparent_crc(g_994.f4, "g_994.f4", print_hash_value); + transparent_crc(g_994.f5, "g_994.f5", print_hash_value); + transparent_crc(g_994.f6.f0, "g_994.f6.f0", print_hash_value); + transparent_crc(g_994.f6.f1, "g_994.f6.f1", print_hash_value); + transparent_crc(g_994.f7.f0, "g_994.f7.f0", print_hash_value); + transparent_crc(g_994.f7.f1, "g_994.f7.f1", print_hash_value); + transparent_crc(g_994.f7.f2, "g_994.f7.f2", print_hash_value); + transparent_crc(g_994.f8, "g_994.f8", print_hash_value); + for (i = 0; i < 4; i++) + { + transparent_crc(g_1120[i], "g_1120[i]", print_hash_value); + if (print_hash_value) printf("index = [%d]\n", i); + + } + transparent_crc(g_1191, "g_1191", print_hash_value); + transparent_crc(g_1371, "g_1371", print_hash_value); + transparent_crc(g_1439.f0.f0, "g_1439.f0.f0", print_hash_value); + transparent_crc(g_1439.f0.f1, "g_1439.f0.f1", print_hash_value); + transparent_crc(g_1439.f0.f2, "g_1439.f0.f2", print_hash_value); + transparent_crc(g_1439.f1, "g_1439.f1", print_hash_value); + transparent_crc(g_1439.f2.f0, "g_1439.f2.f0", print_hash_value); + transparent_crc(g_1439.f2.f1, "g_1439.f2.f1", print_hash_value); + transparent_crc(g_1439.f2.f2, "g_1439.f2.f2", print_hash_value); + transparent_crc(g_1439.f3, "g_1439.f3", print_hash_value); + transparent_crc(g_1439.f4, "g_1439.f4", print_hash_value); + transparent_crc(g_1439.f5, "g_1439.f5", print_hash_value); + transparent_crc(g_1439.f6.f0, "g_1439.f6.f0", print_hash_value); + transparent_crc(g_1439.f6.f1, "g_1439.f6.f1", print_hash_value); + transparent_crc(g_1439.f7.f0, "g_1439.f7.f0", print_hash_value); + transparent_crc(g_1439.f7.f1, "g_1439.f7.f1", print_hash_value); + transparent_crc(g_1439.f7.f2, "g_1439.f7.f2", print_hash_value); + transparent_crc(g_1439.f8, "g_1439.f8", print_hash_value); + transparent_crc(g_1441, "g_1441", print_hash_value); + transparent_crc(g_1672.f0.f0, "g_1672.f0.f0", print_hash_value); + transparent_crc(g_1672.f0.f1, "g_1672.f0.f1", print_hash_value); + transparent_crc(g_1672.f0.f2, "g_1672.f0.f2", print_hash_value); + transparent_crc(g_1672.f1, "g_1672.f1", print_hash_value); + transparent_crc(g_1672.f2.f0, "g_1672.f2.f0", print_hash_value); + transparent_crc(g_1672.f2.f1, "g_1672.f2.f1", print_hash_value); + transparent_crc(g_1672.f2.f2, "g_1672.f2.f2", print_hash_value); + transparent_crc(g_1672.f3, "g_1672.f3", print_hash_value); + transparent_crc(g_1672.f4, "g_1672.f4", print_hash_value); + transparent_crc(g_1672.f5, "g_1672.f5", print_hash_value); + transparent_crc(g_1672.f6.f0, "g_1672.f6.f0", print_hash_value); + transparent_crc(g_1672.f6.f1, "g_1672.f6.f1", print_hash_value); + transparent_crc(g_1672.f7.f0, "g_1672.f7.f0", print_hash_value); + transparent_crc(g_1672.f7.f1, "g_1672.f7.f1", print_hash_value); + transparent_crc(g_1672.f7.f2, "g_1672.f7.f2", print_hash_value); + transparent_crc(g_1672.f8, "g_1672.f8", print_hash_value); + platform_main_end(crc32_context ^ 0xFFFFFFFFUL, print_hash_value); + return 0; +} + +/************************ statistics ************************* +XXX max struct depth: 2 +breakdown: + depth: 0, occurrence: 514 + depth: 1, occurrence: 51 + depth: 2, occurrence: 8 +XXX total union variables: 51 + +XXX non-zero bitfields defined in structs: 5 +XXX zero bitfields defined in structs: 0 +XXX const bitfields defined in structs: 1 +XXX volatile bitfields defined in structs: 0 +XXX structs with bitfields in the program: 167 +breakdown: + indirect level: 0, occurrence: 110 + indirect level: 1, occurrence: 28 + indirect level: 2, occurrence: 17 + indirect level: 3, occurrence: 6 + indirect level: 4, occurrence: 6 +XXX full-bitfields structs in the program: 22 +breakdown: + indirect level: 0, occurrence: 22 +XXX times a bitfields struct's address is taken: 128 +XXX times a bitfields struct on LHS: 26 +XXX times a bitfields struct on RHS: 257 +XXX times a single bitfield on LHS: 22 +XXX times a single bitfield on RHS: 141 + +XXX max expression depth: 38 +breakdown: + depth: 1, occurrence: 395 + depth: 2, occurrence: 99 + depth: 3, occurrence: 7 + depth: 4, occurrence: 7 + depth: 5, occurrence: 6 + depth: 6, occurrence: 3 + depth: 7, occurrence: 2 + depth: 8, occurrence: 3 + depth: 11, occurrence: 4 + depth: 12, occurrence: 3 + depth: 13, occurrence: 1 + depth: 14, occurrence: 2 + depth: 15, occurrence: 5 + depth: 16, occurrence: 3 + depth: 17, occurrence: 5 + depth: 18, occurrence: 2 + depth: 19, occurrence: 3 + depth: 20, occurrence: 2 + depth: 21, occurrence: 2 + depth: 23, occurrence: 4 + depth: 24, occurrence: 1 + depth: 25, occurrence: 3 + depth: 26, occurrence: 1 + depth: 27, occurrence: 2 + depth: 30, occurrence: 3 + depth: 37, occurrence: 1 + depth: 38, occurrence: 1 + +XXX total number of pointers: 473 + +XXX times a variable address is taken: 1070 +XXX times a pointer is dereferenced on RHS: 207 +breakdown: + depth: 1, occurrence: 164 + depth: 2, occurrence: 36 + depth: 3, occurrence: 7 +XXX times a pointer is dereferenced on LHS: 256 +breakdown: + depth: 1, occurrence: 246 + depth: 2, occurrence: 10 +XXX times a pointer is compared with null: 24 +XXX times a pointer is compared with address of another variable: 4 +XXX times a pointer is compared with another pointer: 11 +XXX times a pointer is qualified to be dereferenced: 6567 + +XXX max dereference level: 4 +breakdown: + level: 0, occurrence: 0 + level: 1, occurrence: 1418 + level: 2, occurrence: 286 + level: 3, occurrence: 49 + level: 4, occurrence: 7 +XXX number of pointers point to pointers: 137 +XXX number of pointers point to scalars: 260 +XXX number of pointers point to structs: 53 +XXX percent of pointers has null in alias set: 27.5 +XXX average alias set size: 1.4 + +XXX times a non-volatile is read: 1744 +XXX times a non-volatile is write: 819 +XXX times a volatile is read: 0 +XXX times read thru a pointer: 0 +XXX times a volatile is write: 0 +XXX times written thru a pointer: 0 +XXX times a volatile is available for access: 0 +XXX percentage of non-volatile access: 100 + +XXX forward jumps: 0 +XXX backward jumps: 5 + +XXX stmts: 369 +XXX max block depth: 5 +breakdown: + depth: 0, occurrence: 33 + depth: 1, occurrence: 33 + depth: 2, occurrence: 52 + depth: 3, occurrence: 52 + depth: 4, occurrence: 88 + depth: 5, occurrence: 111 + +XXX percentage a fresh-made variable is used: 18.1 +XXX percentage an existing variable is used: 81.9 +FYI: the random generator makes assumptions about the integer size. See platform.info for more details. +********************* end of statistics **********************/ + diff --git a/tests/fuzz/8.c.txt b/tests/fuzz/8.c.txt new file mode 100644 index 0000000000000..02f9ff4a188a5 --- /dev/null +++ b/tests/fuzz/8.c.txt @@ -0,0 +1 @@ +checksum = 38B8E180 From bbda9eeaf9d1dd4f02f7507902dcbcff188485fb Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 10:20:55 -0800 Subject: [PATCH 281/326] rename test to avoid grep for 'error' to see it --- tests/runner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/runner.py b/tests/runner.py index 2515ef336400e..120a965d8725a 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -5086,7 +5086,7 @@ def test_printf_more(self): ''' self.do_run(src, '22 : me and myself 25 1.34\n21 waka 95\n') - def test_perror(self): + def test_perrar(self): src = r''' #include #include From 6792da20da77ad24bbce3d1c05b883d25ac0ef4b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 10:47:09 -0800 Subject: [PATCH 282/326] fix cmpxchg for asm --- src/jsifier.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jsifier.js b/src/jsifier.js index ca404258fdb3a..ff58ece2e7a04 100644 --- a/src/jsifier.js +++ b/src/jsifier.js @@ -1210,7 +1210,7 @@ function JSify(data, functionsOnly, givenFunctions) { case 'xchg': return '(tempValue=' + makeGetValue(param1, 0, type) + ',' + makeSetValue(param1, 0, param2, type, null, null, null, null, ',') + ',tempValue)'; case 'cmpxchg': { var param3 = finalizeLLVMParameter(item.params[2]); - return '(tempValue=' + makeGetValue(param1, 0, type) + ',(' + makeGetValue(param1, 0, type) + '==' + param2 + ' ? ' + makeSetValue(param1, 0, param3, type, null, null, null, null, ',') + ' : 0),tempValue)'; + return '(tempValue=' + makeGetValue(param1, 0, type) + ',(' + makeGetValue(param1, 0, type) + '==(' + param2 + '|0) ? ' + makeSetValue(param1, 0, param3, type, null, null, null, null, ',') + ' : 0),tempValue)'; } default: throw 'unhandled atomic op: ' + item.op; } From cc67e1985f0f13a3fc1b16d079247be2c3d7a88b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 12:45:02 -0800 Subject: [PATCH 283/326] options to save files in csmith driver --- tests/fuzz/csmith_driver.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index 3fa58db69f443..f79b9180b0498 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -30,13 +30,15 @@ while 1: print 'Tried %d, notes: %s' % (tried, notes) - tried += 1 print '1) Generate C' shared.execute([CSMITH, '--no-volatiles', '--no-math64', '--no-packed-struct'],# + #['--max-block-depth', '2', '--max-block-size', '2', '--max-expr-complexity', '2', '--max-funcs', '2'], stdout=open(filename + '.c', 'w')) + #shutil.copyfile(filename + '.c', 'testcase%d.c' % tried) print '1) Generate C... %.2f K of C source' % (len(open(filename + '.c').read())/1024.) + tried += 1 + print '2) Compile natively' shared.try_delete(filename) shared.execute([shared.CLANG_CC, '-O2', filename + '.c', '-o', filename + '1'] + CSMITH_CFLAGS, stderr=PIPE) # + shared.EMSDK_OPTS @@ -46,11 +48,11 @@ shared.execute([shared.CLANG_CC, filename + '.c', '-o', filename + '3'] + CSMITH_CFLAGS, stderr=PIPE) print '3) Run natively' try: - correct1 = shared.timeout_run(Popen([filename + '1'], stdout=PIPE, stderr=PIPE), 5) + correct1 = shared.timeout_run(Popen([filename + '1'], stdout=PIPE, stderr=PIPE), 3) if 'Segmentation fault' in correct1 or len(correct1) < 10: raise Exception('segfault') - correct2 = shared.timeout_run(Popen([filename + '2'], stdout=PIPE, stderr=PIPE), 5) + correct2 = shared.timeout_run(Popen([filename + '2'], stdout=PIPE, stderr=PIPE), 3) if 'Segmentation fault' in correct2 or len(correct2) < 10: raise Exception('segfault') - correct3 = shared.timeout_run(Popen([filename + '3'], stdout=PIPE, stderr=PIPE), 5) + correct3 = shared.timeout_run(Popen([filename + '3'], stdout=PIPE, stderr=PIPE), 3) if 'Segmentation fault' in correct3 or len(correct3) < 10: raise Exception('segfault') if correct1 != correct3: raise Exception('clang opts change result') except Exception, e: @@ -82,6 +84,9 @@ def try_js(args): except Exception, e: print e normal = False + open('testcase%d.js' % tried, 'w').write( + open(filename + '.js').read().replace(' var ret = run();', ' var ret = run(["1"]);') + ) if not ok: print "EMSCRIPTEN BUG" notes['embug'] += 1 From 11aece9dd9a23e1620e806163bf27519f5bdb8a8 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 13:15:42 -0800 Subject: [PATCH 284/326] disable csmith js logging by default --- tests/fuzz/csmith_driver.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/fuzz/csmith_driver.py b/tests/fuzz/csmith_driver.py index f79b9180b0498..6c6965df4005d 100755 --- a/tests/fuzz/csmith_driver.py +++ b/tests/fuzz/csmith_driver.py @@ -84,9 +84,9 @@ def try_js(args): except Exception, e: print e normal = False - open('testcase%d.js' % tried, 'w').write( - open(filename + '.js').read().replace(' var ret = run();', ' var ret = run(["1"]);') - ) + #open('testcase%d.js' % tried, 'w').write( + # open(filename + '.js').read().replace(' var ret = run();', ' var ret = run(["1"]);') + #) if not ok: print "EMSCRIPTEN BUG" notes['embug'] += 1 From 719e805ecfe14ec3582bb8285527e4a9fde5cb21 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 13:26:22 -0800 Subject: [PATCH 285/326] compress jcache entries, to minimize disk IO --- tools/shared.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index f5f6a17bd4f98..4b12942c99ee2 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1,4 +1,4 @@ -import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle +import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp @@ -1271,7 +1271,11 @@ def get(shortkey, keys): if not os.path.exists(cachename): if DEBUG_CACHE: print >> sys.stderr, 'jcache none at all' return - data = cPickle.Unpickler(open(cachename, 'rb')).load() + try: + data = cPickle.loads(zlib.decompress(open(cachename).read())) + except Exception, e: + if DEBUG_CACHE: print >> sys.stderr, 'jcache decompress/unpickle error:', e + return if len(data) != 2: if DEBUG_CACHE: print >> sys.stderr, 'jcache error in get' return @@ -1291,7 +1295,13 @@ def get(shortkey, keys): def set(shortkey, keys, value): if DEBUG_CACHE: print >> sys.stderr, 'save to cache', shortkey cachename = JCache.get_cachename(shortkey) - cPickle.Pickler(open(cachename, 'wb')).dump([keys, value]) + try: + f = open(cachename, 'w') + f.write(zlib.compress(cPickle.dumps([keys, value]))) + f.close() + except Exception, e: + if DEBUG_CACHE: print >> sys.stderr, 'jcache compress/pickle error:', e + return #if DEBUG: # for i in range(len(keys)): # open(cachename + '.key' + str(i), 'w').write(keys[i]) From 26a3a085fc1be4f3d648a2e5e6b05c54f4b04a00 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 17:07:25 -0800 Subject: [PATCH 286/326] emscripten_jcache_printf --- emcc | 17 ++++++++++++++++ src/library.js | 17 ++++++++++++++++ system/include/emscripten/emscripten.h | 22 ++++++++++++++++++++ tests/hello_libcxx_mod2.cpp | 10 +++++++++ tests/hello_libcxx_mod2a.cpp | 11 ++++++++++ tests/runner.py | 27 ++++++++++++++++++++++++- tools/shared.py | 28 +++++++++++++++++++++++++- 7 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 tests/hello_libcxx_mod2.cpp create mode 100644 tests/hello_libcxx_mod2a.cpp diff --git a/emcc b/emcc index b3581ea893f6f..f644b924ab8e3 100755 --- a/emcc +++ b/emcc @@ -421,6 +421,22 @@ Options that are modified or new in %s include: 'jsfuncs' will be cached. So avoid modifying globals to let caching work fully. + To work around the problem mentioned in the + previous paragraph, you can use + + emscripten_jcache_printf + + when adding debug printfs to your code. That + function is specially preprocessed so that it + does not create a constant string global for + its first argument. See emscripten.h for more + details. Note in particular that you need to + already have a call to that function in your + code *before* you add one and do an incremental + build, so that adding an external reference + (also a global property) does not invalidate + everything. + --clear-cache Manually clears the cache of compiled emscripten system libraries (libc++, libc++abi, libc). This is normally @@ -978,6 +994,7 @@ try: for input_file in input_files: if input_file.endswith(SOURCE_SUFFIXES): if DEBUG: print >> sys.stderr, 'emcc: compiling source file: ', input_file + input_file = shared.Building.preprocess(input_file, in_temp(uniquename(input_file))) output_file = in_temp(unsuffixed(uniquename(input_file)) + '.o') temp_files.append(output_file) args = newargs + ['-emit-llvm', '-c', input_file, '-o', output_file] diff --git a/src/library.js b/src/library.js index 1676a82c9bf88..1cd7e3f5833d7 100644 --- a/src/library.js +++ b/src/library.js @@ -7368,6 +7368,23 @@ LibraryManager.library = { emscripten_random: function() { return Math.random(); }, + + emscripten_jcache_printf___deps: ['_formatString'], + emscripten_jcache_printf_: function(varargs) { + var MAX = 10240; + if (!_emscripten_jcache_printf_.buffer) { + _emscripten_jcache_printf_.buffer = _malloc(MAX); + } + var i = 0; + do { + var curr = {{{ makeGetValue('varargs', 'i*4', 'i8') }}}; + {{{ makeSetValue('_emscripten_jcache_printf_.buffer', 'i', 'curr', 'i8') }}}; + i++; + assert(i*4 < MAX); + } while (curr != 0); + Module.print(intArrayToString(__formatString(_emscripten_jcache_printf_.buffer, varargs + i*4)).replace('\\n', '')); + Runtime.stackAlloc(-4*i); // free up the stack space we know is ok to free + }, }; function autoAddDeps(object, name) { diff --git a/system/include/emscripten/emscripten.h b/system/include/emscripten/emscripten.h index 93551f39fecc6..e667086958879 100644 --- a/system/include/emscripten/emscripten.h +++ b/system/include/emscripten/emscripten.h @@ -345,6 +345,28 @@ extern void EMSCRIPTEN_PROFILE_INIT(int max); extern void EMSCRIPTEN_PROFILE_BEGIN(int id); extern void EMSCRIPTEN_PROFILE_END(int id); +/* + * jcache-friendly printf. printf in general will receive a string + * literal, which becomes a global constant, which invalidates all + * jcache entries. emscripten_jcache_printf is parsed before + * clang into something without any string literals, so you can + * add such printouts to your code and only the (chunk containing + * the) function you modify will be invalided and recompiled. + * + * Note in particular that you need to already have a call to this + * function in your code *before* you add one and do an incremental + * build, so that adding an external reference does not invalidate + * everything. + * + * This function assumes the first argument is a string literal + * (otherwise you don't need it), and the other arguments, if any, + * are neither strings nor complex expressions (but just simple + * variables). (You can create a variable to store a complex + * expression on the previous line, if necessary.) + */ +void emscripten_jcache_printf(const char *format, ...); +void emscripten_jcache_printf_(...); /* internal use */ + #ifdef __cplusplus } #endif diff --git a/tests/hello_libcxx_mod2.cpp b/tests/hello_libcxx_mod2.cpp new file mode 100644 index 0000000000000..b18a523a872ac --- /dev/null +++ b/tests/hello_libcxx_mod2.cpp @@ -0,0 +1,10 @@ +#include +#include + +int main() +{ + std::cout << "hello, world!" << std::endl; + emscripten_jcache_printf("waka %d waka\n", 5); + return 0; +} + diff --git a/tests/hello_libcxx_mod2a.cpp b/tests/hello_libcxx_mod2a.cpp new file mode 100644 index 0000000000000..f48ad4fe4a69e --- /dev/null +++ b/tests/hello_libcxx_mod2a.cpp @@ -0,0 +1,11 @@ +#include +#include + +int main() +{ + std::cout << "hello, world!" << std::endl; + emscripten_jcache_printf("waka %d waka\n", 5); + emscripten_jcache_printf("yet another printf %.2f %d\n", 5.5, 66); + return 0; +} + diff --git a/tests/runner.py b/tests/runner.py index 120a965d8725a..29c15950b4a46 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -9749,6 +9749,23 @@ def test_optimize_normally(self): if optimize_normally: del os.environ['EMCC_OPTIMIZE_NORMALLY'] del os.environ['EMCC_DEBUG'] + def test_jcache_printf(self): + open(self.in_dir('src.cpp'), 'w').write(r''' + #include + #include + #include + int main() { + emscripten_jcache_printf("hello world\n"); + emscripten_jcache_printf("hello %d world\n", 5); + emscripten_jcache_printf("hello %.3f world\n", 123.456789123); + emscripten_jcache_printf("hello %llx world\n", 0x1234567811223344ULL); + return 0; + } + ''') + Popen([PYTHON, EMCC, self.in_dir('src.cpp')]).communicate() + output = run_js('a.out.js') + self.assertIdentical('hello world\nhello 5 world\nhello 123.457 world\nhello 1234567811223300 world\n', output) + def test_conftest_s_flag_passing(self): open(os.path.join(self.get_dir(), 'conftest.c'), 'w').write(r''' int main() { @@ -11992,9 +12009,17 @@ def test_jcache(self): # finally, build a file close to the previous, to see that some chunks are found in the cache and some not (['--jcache'], 'hello_libcxx_mod1.cpp', False, True, True, True, True, True, []), # win on pre, mix on funcs, mix on jsfuncs (['--jcache'], 'hello_libcxx_mod1.cpp', False, True, False, True, False, True, []), + (None, None, None, None, None, None, None, None, None), # clear + (['--jcache'], 'hello_libcxx_mod2.cpp', True, False, True, False, True, False, []), # load into cache + (['--jcache'], 'hello_libcxx_mod2a.cpp', False, True, True, True, True, True, []) # add a printf, do not lose everything ]: - print >> sys.stderr, args, input_file, expect_pre_save, expect_pre_load, expect_funcs_save, expect_funcs_load, expect_jsfuncs_save, expect_jsfuncs_load, expected self.clear() + if args is None: + Cache.erase() + continue + + print >> sys.stderr, args, input_file, expect_pre_save, expect_pre_load, expect_funcs_save, expect_funcs_load, expect_jsfuncs_save, expect_jsfuncs_load, expected + out, err = Popen([PYTHON, EMCC, '-O2', path_from_root('tests', input_file)] + args, stdout=PIPE, stderr=PIPE).communicate() errtail = err.split('emcc invocation')[-1] self.assertContained('hello, world!', run_js('a.out.js'), errtail) diff --git a/tools/shared.py b/tools/shared.py index 4b12942c99ee2..c5774c1a726fe 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1,4 +1,4 @@ -import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib +import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib, re from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp @@ -1202,6 +1202,32 @@ def make(opt_level): print >> sys.stderr, 'bootstrapping relooper failed. You may need to manually create src/relooper.js by compiling it, see src/relooper/emscripten' 1/0 + @staticmethod + def preprocess(infile, outfile): + ''' + Preprocess source C/C++ in some special ways that emscripten needs. Returns + a filename (potentially the same one if nothing was changed). + + Currently this only does emscripten_jcache_printf(..) rewriting. + ''' + src = open(infile).read() # stack warning on jcacheprintf! in docs # add jcache printf test separatrely, for content of printf + if 'emscripten_jcache_printf' not in src: return infile + def fix(m): + text = m.groups(0)[0] + assert text.count('(') == 1 and text.count(')') == 1, 'must have simple expressions in emscripten_jcache_printf calls, no parens' + assert text.count('"') == 2, 'must have simple expressions in emscripten_jcache_printf calls, no strings as varargs parameters' + start = text.index('(') + end = text.rindex(')') + args = text[start+1:end].split(',') + args = map(lambda x: x.strip(), args) + if args[0][0] == '"': + # flatten out + args = map(lambda x: str(ord(x)), args[0][1:len(args[0])-1]) + ['0'] + args[1:] + return 'emscripten_jcache_printf_(' + ','.join(args) + ')' + src = re.sub(r'(emscripten_jcache_printf\([^)]+\))', lambda m: fix(m), src) + open(outfile, 'w').write(src) + return outfile + # Permanent cache for dlmalloc and stdlibc++ class Cache: dirname = os.environ.get('EM_CACHE') From 6de84bc7daffe278f46c4a4fa5c02160799a7a29 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 17:24:47 -0800 Subject: [PATCH 287/326] disable emscripten_jcache_printf in non-C++ --- system/include/emscripten/emscripten.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/system/include/emscripten/emscripten.h b/system/include/emscripten/emscripten.h index e667086958879..427dda0cc5592 100644 --- a/system/include/emscripten/emscripten.h +++ b/system/include/emscripten/emscripten.h @@ -364,8 +364,10 @@ extern void EMSCRIPTEN_PROFILE_END(int id); * variables). (You can create a variable to store a complex * expression on the previous line, if necessary.) */ +#ifdef __cplusplus void emscripten_jcache_printf(const char *format, ...); void emscripten_jcache_printf_(...); /* internal use */ +#endif #ifdef __cplusplus } From 5a6db03cf21b46ec67d738f2b3f46d3719a5765d Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 17:30:23 -0800 Subject: [PATCH 288/326] fix test_structbyval --- tests/runner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/runner.py b/tests/runner.py index 29c15950b4a46..c9c8ac9e91108 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -3811,6 +3811,8 @@ def test_varargs_byval(self): ''') def test_structbyval(self): + Settings.INLINING_LIMIT = 50 + # part 1: make sure that normally, passing structs by value works src = r''' From 90b9f2199f263f8feaa7ffb16d0c2cb42dcc9275 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 4 Mar 2013 18:00:38 -0800 Subject: [PATCH 289/326] experimental partial jni support --- third_party/jni/emjvm.cpp | 133 +++++ third_party/jni/emjvm.h | 8 + third_party/jni/emjvm.js | 180 ++++++ third_party/jni/jni.h | 1154 +++++++++++++++++++++++++++++++++++++ 4 files changed, 1475 insertions(+) create mode 100644 third_party/jni/emjvm.cpp create mode 100644 third_party/jni/emjvm.h create mode 100644 third_party/jni/emjvm.js create mode 100644 third_party/jni/jni.h diff --git a/third_party/jni/emjvm.cpp b/third_party/jni/emjvm.cpp new file mode 100644 index 0000000000000..77ec387121b36 --- /dev/null +++ b/third_party/jni/emjvm.cpp @@ -0,0 +1,133 @@ + +// Emscripten shims for JVM support + +#include +#include +#include +#include + +#include "emjvm.h" + +// invoke interface + +jint DestroyJavaVM(JavaVM*) { exit(55); return NULL; } +jint AttachCurrentThread(JavaVM*, JNIEnv**, void*) { exit(66); return NULL; } +jint DetachCurrentThread(JavaVM*) { exit(77); return NULL; } +jint GetEnv(JavaVM*, void** env, jint); // forward def +jint AttachCurrentThreadAsDaemon(JavaVM*, JNIEnv**, void*) { exit(88); return NULL; } + +// env - some of these are externs that are implemented in JS + +jobject EMJVM_NewGlobalRef(JNIEnv*, jobject obj) { + return obj; // XXX no global refcounting, we just keep global singletons alive etc. +} + +extern "C" { + extern jstring emjvm_newString(const jchar *chars, jsize len); +} +jstring EMJVM_NewString(JNIEnv*, const jchar* unicodeChars, jsize len) { + return emjvm_newString(unicodeChars, len); +} + +extern "C" { + extern jclass emjvm_getObjectClass(JNIEnv*, jobject obj); +} + +extern "C" { + extern jmethodID emjvm_getMethodID(jclass, const char*, const char*); +} +extern jmethodID EMJVM_GetMethodID(JNIEnv*, jclass clazz, const char* methodName, const char* sig) { + return emjvm_getMethodID(clazz, methodName, sig); +} + +extern "C" { + extern jobject emjvm_callObjectMethod(JNIEnv*, jobject, jmethodID, va_list); + + extern void emjvm_deleteLocalRef(JNIEnv*, jobject); + + jsize emjvm_getArrayLength(JNIEnv*, jarray); + + void emjvm_getByteArrayRegion(JNIEnv*, jbyteArray, jsize, jsize, jbyte*); + + jclass emjvm_findClass(JNIEnv*, const char*); + + jmethodID emjvm_getStaticMethodID(JNIEnv*, jclass, const char*, const char*); + + jobject emjvm_callStaticObjectMethod(JNIEnv*, jclass, jmethodID, va_list); + + jboolean emjvm_callBooleanMethod(JNIEnv*, jobject, jmethodID, va_list); + jboolean emjvm_callStaticBooleanMethod(JNIEnv*, jclass, jmethodID, va_list); + + void emjvm_callVoidMethod(JNIEnv*, jobject, jmethodID, va_list); + + jint emjvm_callIntMethod(JNIEnv*, jobject, jmethodID, va_list); + + const char* emjvm_getStringUTFChars(JNIEnv*, jstring, jboolean*); + jsize emjvm_getStringUTFLength(JNIEnv*, jstring); + void emjvm_releaseStringUTFChars(JNIEnv*, jstring, const char*); +} + +// JVM + +struct EmJVM { + JavaVM jvm; + JNIInvokeInterface jvmFunctions; + + JNIEnv env; + JNINativeInterface envFunctions; + + EmJVM() { + // jvm + jvm.functions = &jvmFunctions; + + jvmFunctions.DestroyJavaVM = DestroyJavaVM; + jvmFunctions.AttachCurrentThread = AttachCurrentThread; + jvmFunctions.DetachCurrentThread = DetachCurrentThread; + jvmFunctions.GetEnv = GetEnv; + jvmFunctions.AttachCurrentThreadAsDaemon = AttachCurrentThreadAsDaemon; + + // env + memset(&envFunctions, 0, sizeof(envFunctions)); + + env.functions = &envFunctions; + + envFunctions.NewGlobalRef = EMJVM_NewGlobalRef; + envFunctions.NewString = EMJVM_NewString; + envFunctions.GetObjectClass = emjvm_getObjectClass; + envFunctions.GetMethodID = EMJVM_GetMethodID; + envFunctions.CallObjectMethodV = emjvm_callObjectMethod; + envFunctions.DeleteLocalRef = emjvm_deleteLocalRef; + envFunctions.GetArrayLength = emjvm_getArrayLength; + envFunctions.GetByteArrayRegion = emjvm_getByteArrayRegion; + envFunctions.FindClass = emjvm_findClass; + envFunctions.GetStaticMethodID = emjvm_getStaticMethodID; + envFunctions.CallStaticObjectMethodV = emjvm_callStaticObjectMethod; + envFunctions.CallBooleanMethodV = emjvm_callBooleanMethod; + envFunctions.CallStaticBooleanMethodV = emjvm_callStaticBooleanMethod; + envFunctions.CallVoidMethodV = emjvm_callVoidMethod; + envFunctions.CallIntMethodV = emjvm_callIntMethod; + envFunctions.GetStringUTFChars = emjvm_getStringUTFChars; + envFunctions.GetStringUTFLength = emjvm_getStringUTFLength; + envFunctions.ReleaseStringUTFChars = emjvm_releaseStringUTFChars; + } +}; + +EmJVM emJVM; + +// implement forward defs + +jint GetEnv(JavaVM*, void** env, jint) { + *env = &emJVM.env; + return 0; +} + +// external access from JS + +extern "C" { + +JavaVM* emscripten_get_jvm() { return &emJVM.jvm; } + +JNIEnv* emscripten_get_jni_env() { return &emJVM.env; } + +} + diff --git a/third_party/jni/emjvm.h b/third_party/jni/emjvm.h new file mode 100644 index 0000000000000..fb09413a634c3 --- /dev/null +++ b/third_party/jni/emjvm.h @@ -0,0 +1,8 @@ + +#include "jni.h" + +extern "C" { + extern JavaVM* emscripten_get_jvm(); + extern JNIEnv* emscripten_get_jni_env(); +} + diff --git a/third_party/jni/emjvm.js b/third_party/jni/emjvm.js new file mode 100644 index 0000000000000..e422d20892a33 --- /dev/null +++ b/third_party/jni/emjvm.js @@ -0,0 +1,180 @@ + +var EmJVM = { + debug: false, + + nextId: 0, + objects: {}, + classNames: {}, // class name => singleton object + + addObject: function(o) { + var ret = EmJVM.nextId++; + EmJVM.objects[ret] = o; + o.id = ret; + o.refs = 1; + o.nextMethodId = 0; + // XXX Module.print('add object ' + JSON.stringify(o).substr(0, 80) + (ret > 5285 ? new Error().stack : '')); + return ret; + }, + + addSingletonObject: function(o) { + EmJVM.classNames[o.name] = o; + return EmJVM.addObject(o); + }, + + createString: function(data) { + return EmJVM.addObject({ name: 'string', value: data }); + }, + + createByteArray: function(data) { + return EmJVM.addObject({ name: 'byteArray', value: data }); + }, +}; + +function widecharToString(ptr, len) { + var nullTerminated = typeof(len) == "undefined"; + var ret = ""; + var i = 0; + var t; + while (1) { + t = getValue(ptr + 2 * i, 'i16'); + if (nullTerminated && t == 0) break; + if (t != 0) { + ret += String.fromCharCode(t); + } + ++i; + if (!nullTerminated && i == len) break; + }; + return ret; +} + +function _emjvm_newString(chars, len) { + return EmJVM.createString(widecharToString(chars, len)); +} + +function _emjvm_getStringUTFChars(jniEnv, string, isCopy) { + var obj = EmJVM.objects[string]; + assert(obj.name == 'string'); + if (isCopy) setValue(isCopy, 'i8', 1); + var buffer = _malloc(obj.value.length+1); + writeStringToMemory(obj.value, buffer); + return buffer; +} + +function _emjvm_getStringUTFLength(jniEnv, string) { + var obj = EmJVM.objects[string]; + if (obj.value) { + return obj.value.length; + } + return 0; +} + +function _emjvm_releaseStringUTFChars(jniEnv, string, utf) { +} + +function _emjvm_getObjectClass(env, jobject) { + if (EmJVM.debug) { + console.log('EMJVM_GetObjectClass+AddLocalRef: ' + [jobject]); + } + var obj = EmJVM.objects[jobject]; + obj.refs++; + return jobject; +} + +function _emjvm_getMethodID(jclass, name, sig) { + if (EmJVM.debug) { + console.log('EMJVM_GetMethodID: ' + [jclass, Pointer_stringify(name), Pointer_stringify(sig)]); + console.log('EMJVM_GetMethodID: ' + [EmJVM.objects[jclass].name]); + } + // assumes class <--> object, just called on singletons + name = Pointer_stringify(name); + var obj = EmJVM.objects[jclass]; + if (!obj[name]) { + throw 'missing implementation for ' + obj.name + '::' + name + ' : ' + new Error().stack; + } + if (!obj[name + '__methodId']) { + var methodId = obj.nextMethodId++; + obj[name + '__methodId'] = methodId; + obj['method__' + methodId] = obj[name]; + obj['methodName__' + methodId] = name; + } + return obj[name + '__methodId']; +} + +function _emjvm_getStaticMethodID(jniEnv, jclass, name, sig) { + // Pretend this to be the same as looking up a non-static method + return _emjvm_getMethodID(jclass, name, sig); +} + +function _emjvm_callObjectMethod(jniEnv, jobject, methodId, varargs) { + if (EmJVM.debug) { + console.log('EMJVM_CallObjectMethod: ' + [jobject, EmJVM.objects[jobject].name, methodId, EmJVM.objects[jobject]['methodName__' + methodId]]); + } + return EmJVM.objects[jobject]['method__' + methodId](varargs); +} + +function _emjvm_callStaticObjectMethod(jniEnv, jclass, methodId, varargs) { + // Pretend this to be the same as calling a non-static method + return _emjvm_callObjectMethod(jniEnv, jclass, methodId, varargs); +} + +function _emjvm_callStaticBooleanMethod(jniEnv, jclass, methodId, varargs) { + // Only differs in return type + return _emjvm_callStaticObjectMethod(jniEnv, jclass, methodId, varargs); +} + +function _emjvm_callBooleanMethod(jniEnv, jobject, methodId, varargs) { + // Pretend this to be the same as calling a non-static method + return _emjvm_callStaticBooleanMethod(jniEnv, jobject, methodId, varargs); +} + +function _emjvm_callVoidMethod(jniEnv, jobject, methodId, varargs) { + _emjvm_callObjectMethod(jniEnv, jobject, methodId, varargs); +} + +function _emjvm_callIntMethod(jniEnv, jobject, methodId, varargs) { + return _emjvm_callObjectMethod(jniEnv, jobject, methodId, varargs); +} + +function _emjvm_deleteLocalRef(jniEnv, jobject) { + if (EmJVM.debug) { + console.log('EMJVM_DeleteLocalRef: ' + [jobject]); + } + var obj = EmJVM.objects[jobject]; + obj.refs--; + if (obj.refs == 0) { + if (EmJVM.debug) { + console.log('EMJVM_DeleteLocalRef: remove ' + obj.name); + } + delete EmJVM.objects[jobject]; + } +} + +function _emjvm_getArrayLength(jniEnv, jobject) { + var obj = EmJVM.objects[jobject]; + assert(obj.name == 'byteArray'); + return obj.value.length; +} + +function _emjvm_getByteArrayRegion(jniEnv, jobject, start, len, buf) { + var obj = EmJVM.objects[jobject]; + assert(obj.name == 'byteArray'); + assert(obj.value); // we set this to null below and assume we are never called again + if (EmJVM.debug) { + console.log('emjvm_getByteArrayRegion: ' + [jobject, obj.value.length, start, len, buf]); + } + assert(start + len <= obj.value.length); + assert(len == obj.value.length); // we assume users read it all, and we can now copy it all with set() and then free it + HEAPU8.set(obj.value, buf); + obj.value = null; // XXX assume byte arrays are one-shot +} + +function _emjvm_findClass(env, name) { + name = Pointer_stringify(name); + if (EmJVM.debug) { + console.log('emjvm_findClass: ' + [name]); + } + var obj = EmJVM.classNames[name]; + assert(obj); + return obj.id; +} + diff --git a/third_party/jni/jni.h b/third_party/jni/jni.h new file mode 100644 index 0000000000000..b425dd42f37ca --- /dev/null +++ b/third_party/jni/jni.h @@ -0,0 +1,1154 @@ +/* +* Copyright (C) 2006 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* + * JNI specification, as defined by Sun: + * http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html + * + * Everything here is expected to be VM-neutral. + */ +#ifndef _JNI_H +#define _JNI_H + +#include + +/* + * Primitive types that match up with Java equivalents. + */ +#ifdef HAVE_INTTYPES_H +# include /* C99 */ +typedef uint8_t jboolean; /* unsigned 8 bits */ +typedef int8_t jbyte; /* signed 8 bits */ +typedef uint16_t jchar; /* unsigned 16 bits */ +typedef int16_t jshort; /* signed 16 bits */ +typedef int32_t jint; /* signed 32 bits */ +typedef int64_t jlong; /* signed 64 bits */ +typedef float jfloat; /* 32-bit IEEE 754 */ +typedef double jdouble; /* 64-bit IEEE 754 */ +#else +typedef unsigned char jboolean; /* unsigned 8 bits */ +typedef signed char jbyte; /* signed 8 bits */ +typedef unsigned short jchar; /* unsigned 16 bits */ +typedef short jshort; /* signed 16 bits */ +typedef int jint; /* signed 32 bits */ +typedef long long jlong; /* signed 64 bits */ +typedef float jfloat; /* 32-bit IEEE 754 */ +typedef double jdouble; /* 64-bit IEEE 754 */ +#endif + +/* "cardinal indices and sizes" */ +typedef jint jsize; + +#ifdef __cplusplus +/* + * Reference types, in C++ + */ +class _jobject {}; +class _jclass : public _jobject {}; +class _jstring : public _jobject {}; +class _jarray : public _jobject {}; +class _jobjectArray : public _jarray {}; +class _jbooleanArray : public _jarray {}; +class _jbyteArray : public _jarray {}; +class _jcharArray : public _jarray {}; +class _jshortArray : public _jarray {}; +class _jintArray : public _jarray {}; +class _jlongArray : public _jarray {}; +class _jfloatArray : public _jarray {}; +class _jdoubleArray : public _jarray {}; +class _jthrowable : public _jobject {}; + +typedef _jobject* jobject; +typedef _jclass* jclass; +typedef _jstring* jstring; +typedef _jarray* jarray; +typedef _jobjectArray* jobjectArray; +typedef _jbooleanArray* jbooleanArray; +typedef _jbyteArray* jbyteArray; +typedef _jcharArray* jcharArray; +typedef _jshortArray* jshortArray; +typedef _jintArray* jintArray; +typedef _jlongArray* jlongArray; +typedef _jfloatArray* jfloatArray; +typedef _jdoubleArray* jdoubleArray; +typedef _jthrowable* jthrowable; +typedef _jobject* jweak; + + +#else /* not __cplusplus */ + +/* + * Reference types, in C. + */ +typedef void* jobject; +typedef jobject jclass; +typedef jobject jstring; +typedef jobject jarray; +typedef jarray jobjectArray; +typedef jarray jbooleanArray; +typedef jarray jbyteArray; +typedef jarray jcharArray; +typedef jarray jshortArray; +typedef jarray jintArray; +typedef jarray jlongArray; +typedef jarray jfloatArray; +typedef jarray jdoubleArray; +typedef jobject jthrowable; +typedef jobject jweak; + +#endif /* not __cplusplus */ + +struct _jfieldID; /* opaque structure */ +typedef struct _jfieldID* jfieldID; /* field IDs */ + +struct _jmethodID; /* opaque structure */ +typedef struct _jmethodID* jmethodID; /* method IDs */ + +struct JNIInvokeInterface; + +typedef union jvalue { + jboolean z; + jbyte b; + jchar c; + jshort s; + jint i; + jlong j; + jfloat f; + jdouble d; + jobject l; +} jvalue; + +typedef enum jobjectRefType { + JNIInvalidRefType = 0, + JNILocalRefType = 1, + JNIGlobalRefType = 2, + JNIWeakGlobalRefType = 3 +} jobjectRefType; + +typedef struct { + const char* name; + const char* signature; + void* fnPtr; +} JNINativeMethod; + +struct _JNIEnv; +struct _JavaVM; +typedef const struct JNINativeInterface* C_JNIEnv; + +#if defined(__cplusplus) +typedef _JNIEnv JNIEnv; +typedef _JavaVM JavaVM; +#else +typedef const struct JNINativeInterface* JNIEnv; +typedef const struct JNIInvokeInterface* JavaVM; +#endif + +/* + * Table of interface function pointers. + */ +struct JNINativeInterface { + void* reserved0; + void* reserved1; + void* reserved2; + void* reserved3; + + jint (*GetVersion)(JNIEnv *); + + jclass (*DefineClass)(JNIEnv*, const char*, jobject, const jbyte*, + jsize); + jclass (*FindClass)(JNIEnv*, const char*); + + jmethodID (*FromReflectedMethod)(JNIEnv*, jobject); + jfieldID (*FromReflectedField)(JNIEnv*, jobject); + /* spec doesn't show jboolean parameter */ + jobject (*ToReflectedMethod)(JNIEnv*, jclass, jmethodID, jboolean); + + jclass (*GetSuperclass)(JNIEnv*, jclass); + jboolean (*IsAssignableFrom)(JNIEnv*, jclass, jclass); + + /* spec doesn't show jboolean parameter */ + jobject (*ToReflectedField)(JNIEnv*, jclass, jfieldID, jboolean); + + jint (*Throw)(JNIEnv*, jthrowable); + jint (*ThrowNew)(JNIEnv *, jclass, const char *); + jthrowable (*ExceptionOccurred)(JNIEnv*); + void (*ExceptionDescribe)(JNIEnv*); + void (*ExceptionClear)(JNIEnv*); + void (*FatalError)(JNIEnv*, const char*); + + jint (*PushLocalFrame)(JNIEnv*, jint); + jobject (*PopLocalFrame)(JNIEnv*, jobject); + + jobject (*NewGlobalRef)(JNIEnv*, jobject); + void (*DeleteGlobalRef)(JNIEnv*, jobject); + void (*DeleteLocalRef)(JNIEnv*, jobject); + jboolean (*IsSameObject)(JNIEnv*, jobject, jobject); + + jobject (*NewLocalRef)(JNIEnv*, jobject); + jint (*EnsureLocalCapacity)(JNIEnv*, jint); + + jobject (*AllocObject)(JNIEnv*, jclass); + jobject (*NewObject)(JNIEnv*, jclass, jmethodID, ...); + jobject (*NewObjectV)(JNIEnv*, jclass, jmethodID, va_list); + jobject (*NewObjectA)(JNIEnv*, jclass, jmethodID, jvalue*); + + jclass (*GetObjectClass)(JNIEnv*, jobject); + jboolean (*IsInstanceOf)(JNIEnv*, jobject, jclass); + jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); + + jobject (*CallObjectMethod)(JNIEnv*, jobject, jmethodID, ...); + jobject (*CallObjectMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jobject (*CallObjectMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jboolean (*CallBooleanMethod)(JNIEnv*, jobject, jmethodID, ...); + jboolean (*CallBooleanMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jboolean (*CallBooleanMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jbyte (*CallByteMethod)(JNIEnv*, jobject, jmethodID, ...); + jbyte (*CallByteMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jbyte (*CallByteMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jchar (*CallCharMethod)(JNIEnv*, jobject, jmethodID, ...); + jchar (*CallCharMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jchar (*CallCharMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jshort (*CallShortMethod)(JNIEnv*, jobject, jmethodID, ...); + jshort (*CallShortMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jshort (*CallShortMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, ...); + jint (*CallIntMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jint (*CallIntMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jlong (*CallLongMethod)(JNIEnv*, jobject, jmethodID, ...); + jlong (*CallLongMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jlong (*CallLongMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jfloat (*CallFloatMethod)(JNIEnv*, jobject, jmethodID, ...); + jfloat (*CallFloatMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jfloat (*CallFloatMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + jdouble (*CallDoubleMethod)(JNIEnv*, jobject, jmethodID, ...); + jdouble (*CallDoubleMethodV)(JNIEnv*, jobject, jmethodID, va_list); + jdouble (*CallDoubleMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); + void (*CallVoidMethodV)(JNIEnv*, jobject, jmethodID, va_list); + void (*CallVoidMethodA)(JNIEnv*, jobject, jmethodID, jvalue*); + + jobject (*CallNonvirtualObjectMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jobject (*CallNonvirtualObjectMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jobject (*CallNonvirtualObjectMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jboolean (*CallNonvirtualBooleanMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jboolean (*CallNonvirtualBooleanMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jboolean (*CallNonvirtualBooleanMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jbyte (*CallNonvirtualByteMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jbyte (*CallNonvirtualByteMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jbyte (*CallNonvirtualByteMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jchar (*CallNonvirtualCharMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jchar (*CallNonvirtualCharMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jchar (*CallNonvirtualCharMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jshort (*CallNonvirtualShortMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jshort (*CallNonvirtualShortMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jshort (*CallNonvirtualShortMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jint (*CallNonvirtualIntMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jint (*CallNonvirtualIntMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jint (*CallNonvirtualIntMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jlong (*CallNonvirtualLongMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jlong (*CallNonvirtualLongMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jlong (*CallNonvirtualLongMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jfloat (*CallNonvirtualFloatMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jfloat (*CallNonvirtualFloatMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jfloat (*CallNonvirtualFloatMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + jdouble (*CallNonvirtualDoubleMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + jdouble (*CallNonvirtualDoubleMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + jdouble (*CallNonvirtualDoubleMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + void (*CallNonvirtualVoidMethod)(JNIEnv*, jobject, jclass, + jmethodID, ...); + void (*CallNonvirtualVoidMethodV)(JNIEnv*, jobject, jclass, + jmethodID, va_list); + void (*CallNonvirtualVoidMethodA)(JNIEnv*, jobject, jclass, + jmethodID, jvalue*); + + jfieldID (*GetFieldID)(JNIEnv*, jclass, const char*, const char*); + + jobject (*GetObjectField)(JNIEnv*, jobject, jfieldID); + jboolean (*GetBooleanField)(JNIEnv*, jobject, jfieldID); + jbyte (*GetByteField)(JNIEnv*, jobject, jfieldID); + jchar (*GetCharField)(JNIEnv*, jobject, jfieldID); + jshort (*GetShortField)(JNIEnv*, jobject, jfieldID); + jint (*GetIntField)(JNIEnv*, jobject, jfieldID); + jlong (*GetLongField)(JNIEnv*, jobject, jfieldID); + jfloat (*GetFloatField)(JNIEnv*, jobject, jfieldID); + jdouble (*GetDoubleField)(JNIEnv*, jobject, jfieldID); + + void (*SetObjectField)(JNIEnv*, jobject, jfieldID, jobject); + void (*SetBooleanField)(JNIEnv*, jobject, jfieldID, jboolean); + void (*SetByteField)(JNIEnv*, jobject, jfieldID, jbyte); + void (*SetCharField)(JNIEnv*, jobject, jfieldID, jchar); + void (*SetShortField)(JNIEnv*, jobject, jfieldID, jshort); + void (*SetIntField)(JNIEnv*, jobject, jfieldID, jint); + void (*SetLongField)(JNIEnv*, jobject, jfieldID, jlong); + void (*SetFloatField)(JNIEnv*, jobject, jfieldID, jfloat); + void (*SetDoubleField)(JNIEnv*, jobject, jfieldID, jdouble); + + jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*); + + jobject (*CallStaticObjectMethod)(JNIEnv*, jclass, jmethodID, ...); + jobject (*CallStaticObjectMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jobject (*CallStaticObjectMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + jboolean (*CallStaticBooleanMethod)(JNIEnv*, jclass, jmethodID, ...); + jboolean (*CallStaticBooleanMethodV)(JNIEnv*, jclass, jmethodID, + va_list); + jboolean (*CallStaticBooleanMethodA)(JNIEnv*, jclass, jmethodID, + jvalue*); + jbyte (*CallStaticByteMethod)(JNIEnv*, jclass, jmethodID, ...); + jbyte (*CallStaticByteMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jbyte (*CallStaticByteMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + jchar (*CallStaticCharMethod)(JNIEnv*, jclass, jmethodID, ...); + jchar (*CallStaticCharMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jchar (*CallStaticCharMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + jshort (*CallStaticShortMethod)(JNIEnv*, jclass, jmethodID, ...); + jshort (*CallStaticShortMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jshort (*CallStaticShortMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + jint (*CallStaticIntMethod)(JNIEnv*, jclass, jmethodID, ...); + jint (*CallStaticIntMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jint (*CallStaticIntMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + jlong (*CallStaticLongMethod)(JNIEnv*, jclass, jmethodID, ...); + jlong (*CallStaticLongMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jlong (*CallStaticLongMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + jfloat (*CallStaticFloatMethod)(JNIEnv*, jclass, jmethodID, ...); + jfloat (*CallStaticFloatMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jfloat (*CallStaticFloatMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + jdouble (*CallStaticDoubleMethod)(JNIEnv*, jclass, jmethodID, ...); + jdouble (*CallStaticDoubleMethodV)(JNIEnv*, jclass, jmethodID, va_list); + jdouble (*CallStaticDoubleMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...); + void (*CallStaticVoidMethodV)(JNIEnv*, jclass, jmethodID, va_list); + void (*CallStaticVoidMethodA)(JNIEnv*, jclass, jmethodID, jvalue*); + + jfieldID (*GetStaticFieldID)(JNIEnv*, jclass, const char*, + const char*); + + jobject (*GetStaticObjectField)(JNIEnv*, jclass, jfieldID); + jboolean (*GetStaticBooleanField)(JNIEnv*, jclass, jfieldID); + jbyte (*GetStaticByteField)(JNIEnv*, jclass, jfieldID); + jchar (*GetStaticCharField)(JNIEnv*, jclass, jfieldID); + jshort (*GetStaticShortField)(JNIEnv*, jclass, jfieldID); + jint (*GetStaticIntField)(JNIEnv*, jclass, jfieldID); + jlong (*GetStaticLongField)(JNIEnv*, jclass, jfieldID); + jfloat (*GetStaticFloatField)(JNIEnv*, jclass, jfieldID); + jdouble (*GetStaticDoubleField)(JNIEnv*, jclass, jfieldID); + + void (*SetStaticObjectField)(JNIEnv*, jclass, jfieldID, jobject); + void (*SetStaticBooleanField)(JNIEnv*, jclass, jfieldID, jboolean); + void (*SetStaticByteField)(JNIEnv*, jclass, jfieldID, jbyte); + void (*SetStaticCharField)(JNIEnv*, jclass, jfieldID, jchar); + void (*SetStaticShortField)(JNIEnv*, jclass, jfieldID, jshort); + void (*SetStaticIntField)(JNIEnv*, jclass, jfieldID, jint); + void (*SetStaticLongField)(JNIEnv*, jclass, jfieldID, jlong); + void (*SetStaticFloatField)(JNIEnv*, jclass, jfieldID, jfloat); + void (*SetStaticDoubleField)(JNIEnv*, jclass, jfieldID, jdouble); + + jstring (*NewString)(JNIEnv*, const jchar*, jsize); + jsize (*GetStringLength)(JNIEnv*, jstring); + const jchar* (*GetStringChars)(JNIEnv*, jstring, jboolean*); + void (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*); + jstring (*NewStringUTF)(JNIEnv*, const char*); + jsize (*GetStringUTFLength)(JNIEnv*, jstring); + /* JNI spec says this returns const jbyte*, but that's inconsistent */ + const char* (*GetStringUTFChars)(JNIEnv*, jstring, jboolean*); + void (*ReleaseStringUTFChars)(JNIEnv*, jstring, const char*); + jsize (*GetArrayLength)(JNIEnv*, jarray); + jobjectArray (*NewObjectArray)(JNIEnv*, jsize, jclass, jobject); + jobject (*GetObjectArrayElement)(JNIEnv*, jobjectArray, jsize); + void (*SetObjectArrayElement)(JNIEnv*, jobjectArray, jsize, jobject); + + jbooleanArray (*NewBooleanArray)(JNIEnv*, jsize); + jbyteArray (*NewByteArray)(JNIEnv*, jsize); + jcharArray (*NewCharArray)(JNIEnv*, jsize); + jshortArray (*NewShortArray)(JNIEnv*, jsize); + jintArray (*NewIntArray)(JNIEnv*, jsize); + jlongArray (*NewLongArray)(JNIEnv*, jsize); + jfloatArray (*NewFloatArray)(JNIEnv*, jsize); + jdoubleArray (*NewDoubleArray)(JNIEnv*, jsize); + + jboolean* (*GetBooleanArrayElements)(JNIEnv*, jbooleanArray, jboolean*); + jbyte* (*GetByteArrayElements)(JNIEnv*, jbyteArray, jboolean*); + jchar* (*GetCharArrayElements)(JNIEnv*, jcharArray, jboolean*); + jshort* (*GetShortArrayElements)(JNIEnv*, jshortArray, jboolean*); + jint* (*GetIntArrayElements)(JNIEnv*, jintArray, jboolean*); + jlong* (*GetLongArrayElements)(JNIEnv*, jlongArray, jboolean*); + jfloat* (*GetFloatArrayElements)(JNIEnv*, jfloatArray, jboolean*); + jdouble* (*GetDoubleArrayElements)(JNIEnv*, jdoubleArray, jboolean*); + + void (*ReleaseBooleanArrayElements)(JNIEnv*, jbooleanArray, + jboolean*, jint); + void (*ReleaseByteArrayElements)(JNIEnv*, jbyteArray, + jbyte*, jint); + void (*ReleaseCharArrayElements)(JNIEnv*, jcharArray, + jchar*, jint); + void (*ReleaseShortArrayElements)(JNIEnv*, jshortArray, + jshort*, jint); + void (*ReleaseIntArrayElements)(JNIEnv*, jintArray, + jint*, jint); + void (*ReleaseLongArrayElements)(JNIEnv*, jlongArray, + jlong*, jint); + void (*ReleaseFloatArrayElements)(JNIEnv*, jfloatArray, + jfloat*, jint); + void (*ReleaseDoubleArrayElements)(JNIEnv*, jdoubleArray, + jdouble*, jint); + + void (*GetBooleanArrayRegion)(JNIEnv*, jbooleanArray, + jsize, jsize, jboolean*); + void (*GetByteArrayRegion)(JNIEnv*, jbyteArray, + jsize, jsize, jbyte*); + void (*GetCharArrayRegion)(JNIEnv*, jcharArray, + jsize, jsize, jchar*); + void (*GetShortArrayRegion)(JNIEnv*, jshortArray, + jsize, jsize, jshort*); + void (*GetIntArrayRegion)(JNIEnv*, jintArray, + jsize, jsize, jint*); + void (*GetLongArrayRegion)(JNIEnv*, jlongArray, + jsize, jsize, jlong*); + void (*GetFloatArrayRegion)(JNIEnv*, jfloatArray, + jsize, jsize, jfloat*); + void (*GetDoubleArrayRegion)(JNIEnv*, jdoubleArray, + jsize, jsize, jdouble*); + + /* spec shows these without const; some jni.h do, some don't */ + void (*SetBooleanArrayRegion)(JNIEnv*, jbooleanArray, + jsize, jsize, const jboolean*); + void (*SetByteArrayRegion)(JNIEnv*, jbyteArray, + jsize, jsize, const jbyte*); + void (*SetCharArrayRegion)(JNIEnv*, jcharArray, + jsize, jsize, const jchar*); + void (*SetShortArrayRegion)(JNIEnv*, jshortArray, + jsize, jsize, const jshort*); + void (*SetIntArrayRegion)(JNIEnv*, jintArray, + jsize, jsize, const jint*); + void (*SetLongArrayRegion)(JNIEnv*, jlongArray, + jsize, jsize, const jlong*); + void (*SetFloatArrayRegion)(JNIEnv*, jfloatArray, + jsize, jsize, const jfloat*); + void (*SetDoubleArrayRegion)(JNIEnv*, jdoubleArray, + jsize, jsize, const jdouble*); + + jint (*RegisterNatives)(JNIEnv*, jclass, const JNINativeMethod*, + jint); + jint (*UnregisterNatives)(JNIEnv*, jclass); + jint (*MonitorEnter)(JNIEnv*, jobject); + jint (*MonitorExit)(JNIEnv*, jobject); + jint (*GetJavaVM)(JNIEnv*, JavaVM**); + + void (*GetStringRegion)(JNIEnv*, jstring, jsize, jsize, jchar*); + void (*GetStringUTFRegion)(JNIEnv*, jstring, jsize, jsize, char*); + + void* (*GetPrimitiveArrayCritical)(JNIEnv*, jarray, jboolean*); + void (*ReleasePrimitiveArrayCritical)(JNIEnv*, jarray, void*, jint); + + const jchar* (*GetStringCritical)(JNIEnv*, jstring, jboolean*); + void (*ReleaseStringCritical)(JNIEnv*, jstring, const jchar*); + + jweak (*NewWeakGlobalRef)(JNIEnv*, jobject); + void (*DeleteWeakGlobalRef)(JNIEnv*, jweak); + + jboolean (*ExceptionCheck)(JNIEnv*); + + jobject (*NewDirectByteBuffer)(JNIEnv*, void*, jlong); + void* (*GetDirectBufferAddress)(JNIEnv*, jobject); + jlong (*GetDirectBufferCapacity)(JNIEnv*, jobject); + + /* added in JNI 1.6 */ + jobjectRefType (*GetObjectRefType)(JNIEnv*, jobject); +}; + +/* + * C++ object wrapper. + * + * This is usually overlaid on a C struct whose first element is a + * JNINativeInterface*. We rely somewhat on compiler behavior. + */ +struct _JNIEnv { + /* do not rename this; it does not seem to be entirely opaque */ + const struct JNINativeInterface* functions; + +#if defined(__cplusplus) + + jint GetVersion() + { return functions->GetVersion(this); } + + jclass DefineClass(const char *name, jobject loader, const jbyte* buf, + jsize bufLen) + { return functions->DefineClass(this, name, loader, buf, bufLen); } + + jclass FindClass(const char* name) + { return functions->FindClass(this, name); } + + jmethodID FromReflectedMethod(jobject method) + { return functions->FromReflectedMethod(this, method); } + + jfieldID FromReflectedField(jobject field) + { return functions->FromReflectedField(this, field); } + + jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) + { return functions->ToReflectedMethod(this, cls, methodID, isStatic); } + + jclass GetSuperclass(jclass clazz) + { return functions->GetSuperclass(this, clazz); } + + jboolean IsAssignableFrom(jclass clazz1, jclass clazz2) + { return functions->IsAssignableFrom(this, clazz1, clazz2); } + + jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) + { return functions->ToReflectedField(this, cls, fieldID, isStatic); } + + jint Throw(jthrowable obj) + { return functions->Throw(this, obj); } + + jint ThrowNew(jclass clazz, const char* message) + { return functions->ThrowNew(this, clazz, message); } + + jthrowable ExceptionOccurred() + { return functions->ExceptionOccurred(this); } + + void ExceptionDescribe() + { functions->ExceptionDescribe(this); } + + void ExceptionClear() + { functions->ExceptionClear(this); } + + void FatalError(const char* msg) + { functions->FatalError(this, msg); } + + jint PushLocalFrame(jint capacity) + { return functions->PushLocalFrame(this, capacity); } + + jobject PopLocalFrame(jobject result) + { return functions->PopLocalFrame(this, result); } + + jobject NewGlobalRef(jobject obj) + { return functions->NewGlobalRef(this, obj); } + + void DeleteGlobalRef(jobject globalRef) + { functions->DeleteGlobalRef(this, globalRef); } + + void DeleteLocalRef(jobject localRef) + { functions->DeleteLocalRef(this, localRef); } + + jboolean IsSameObject(jobject ref1, jobject ref2) + { return functions->IsSameObject(this, ref1, ref2); } + + jobject NewLocalRef(jobject ref) + { return functions->NewLocalRef(this, ref); } + + jint EnsureLocalCapacity(jint capacity) + { return functions->EnsureLocalCapacity(this, capacity); } + + jobject AllocObject(jclass clazz) + { return functions->AllocObject(this, clazz); } + + jobject NewObject(jclass clazz, jmethodID methodID, ...) + { + va_list args; + va_start(args, methodID); + jobject result = functions->NewObjectV(this, clazz, methodID, args); + va_end(args); + return result; + } + + jobject NewObjectV(jclass clazz, jmethodID methodID, va_list args) + { return functions->NewObjectV(this, clazz, methodID, args); } + + jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue* args) + { return functions->NewObjectA(this, clazz, methodID, args); } + + jclass GetObjectClass(jobject obj) + { return functions->GetObjectClass(this, obj); } + + jboolean IsInstanceOf(jobject obj, jclass clazz) + { return functions->IsInstanceOf(this, obj, clazz); } + + jmethodID GetMethodID(jclass clazz, const char* name, const char* sig) + { return functions->GetMethodID(this, clazz, name, sig); } + +#define CALL_TYPE_METHOD(_jtype, _jname) \ + _jtype Call##_jname##Method(jobject obj, jmethodID methodID, ...) \ + { \ + _jtype result; \ + va_list args; \ + va_start(args, methodID); \ + result = functions->Call##_jname##MethodV(this, obj, methodID, \ + args); \ + va_end(args); \ + return result; \ + } +#define CALL_TYPE_METHODV(_jtype, _jname) \ + _jtype Call##_jname##MethodV(jobject obj, jmethodID methodID, \ + va_list args) \ + { return functions->Call##_jname##MethodV(this, obj, methodID, args); } +#define CALL_TYPE_METHODA(_jtype, _jname) \ + _jtype Call##_jname##MethodA(jobject obj, jmethodID methodID, \ + jvalue* args) \ + { return functions->Call##_jname##MethodA(this, obj, methodID, args); } + +#define CALL_TYPE(_jtype, _jname) \ + CALL_TYPE_METHOD(_jtype, _jname) \ + CALL_TYPE_METHODV(_jtype, _jname) \ + CALL_TYPE_METHODA(_jtype, _jname) + + CALL_TYPE(jobject, Object) + CALL_TYPE(jboolean, Boolean) + CALL_TYPE(jbyte, Byte) + CALL_TYPE(jchar, Char) + CALL_TYPE(jshort, Short) + CALL_TYPE(jint, Int) + CALL_TYPE(jlong, Long) + CALL_TYPE(jfloat, Float) + CALL_TYPE(jdouble, Double) + + void CallVoidMethod(jobject obj, jmethodID methodID, ...) + { + va_list args; + va_start(args, methodID); + functions->CallVoidMethodV(this, obj, methodID, args); + va_end(args); + } + void CallVoidMethodV(jobject obj, jmethodID methodID, va_list args) + { functions->CallVoidMethodV(this, obj, methodID, args); } + void CallVoidMethodA(jobject obj, jmethodID methodID, jvalue* args) + { functions->CallVoidMethodA(this, obj, methodID, args); } + +#define CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ + _jtype CallNonvirtual##_jname##Method(jobject obj, jclass clazz, \ + jmethodID methodID, ...) \ + { \ + _jtype result; \ + va_list args; \ + va_start(args, methodID); \ + result = functions->CallNonvirtual##_jname##MethodV(this, obj, \ + clazz, methodID, args); \ + va_end(args); \ + return result; \ + } +#define CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ + _jtype CallNonvirtual##_jname##MethodV(jobject obj, jclass clazz, \ + jmethodID methodID, va_list args) \ + { return functions->CallNonvirtual##_jname##MethodV(this, obj, clazz, \ + methodID, args); } +#define CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) \ + _jtype CallNonvirtual##_jname##MethodA(jobject obj, jclass clazz, \ + jmethodID methodID, jvalue* args) \ + { return functions->CallNonvirtual##_jname##MethodA(this, obj, clazz, \ + methodID, args); } + +#define CALL_NONVIRT_TYPE(_jtype, _jname) \ + CALL_NONVIRT_TYPE_METHOD(_jtype, _jname) \ + CALL_NONVIRT_TYPE_METHODV(_jtype, _jname) \ + CALL_NONVIRT_TYPE_METHODA(_jtype, _jname) + + CALL_NONVIRT_TYPE(jobject, Object) + CALL_NONVIRT_TYPE(jboolean, Boolean) + CALL_NONVIRT_TYPE(jbyte, Byte) + CALL_NONVIRT_TYPE(jchar, Char) + CALL_NONVIRT_TYPE(jshort, Short) + CALL_NONVIRT_TYPE(jint, Int) + CALL_NONVIRT_TYPE(jlong, Long) + CALL_NONVIRT_TYPE(jfloat, Float) + CALL_NONVIRT_TYPE(jdouble, Double) + + void CallNonvirtualVoidMethod(jobject obj, jclass clazz, + jmethodID methodID, ...) + { + va_list args; + va_start(args, methodID); + functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); + va_end(args); + } + void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, + jmethodID methodID, va_list args) + { functions->CallNonvirtualVoidMethodV(this, obj, clazz, methodID, args); } + void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, + jmethodID methodID, jvalue* args) + { functions->CallNonvirtualVoidMethodA(this, obj, clazz, methodID, args); } + + jfieldID GetFieldID(jclass clazz, const char* name, const char* sig) + { return functions->GetFieldID(this, clazz, name, sig); } + + jobject GetObjectField(jobject obj, jfieldID fieldID) + { return functions->GetObjectField(this, obj, fieldID); } + jboolean GetBooleanField(jobject obj, jfieldID fieldID) + { return functions->GetBooleanField(this, obj, fieldID); } + jbyte GetByteField(jobject obj, jfieldID fieldID) + { return functions->GetByteField(this, obj, fieldID); } + jchar GetCharField(jobject obj, jfieldID fieldID) + { return functions->GetCharField(this, obj, fieldID); } + jshort GetShortField(jobject obj, jfieldID fieldID) + { return functions->GetShortField(this, obj, fieldID); } + jint GetIntField(jobject obj, jfieldID fieldID) + { return functions->GetIntField(this, obj, fieldID); } + jlong GetLongField(jobject obj, jfieldID fieldID) + { return functions->GetLongField(this, obj, fieldID); } + jfloat GetFloatField(jobject obj, jfieldID fieldID) + { return functions->GetFloatField(this, obj, fieldID); } + jdouble GetDoubleField(jobject obj, jfieldID fieldID) + { return functions->GetDoubleField(this, obj, fieldID); } + + void SetObjectField(jobject obj, jfieldID fieldID, jobject value) + { functions->SetObjectField(this, obj, fieldID, value); } + void SetBooleanField(jobject obj, jfieldID fieldID, jboolean value) + { functions->SetBooleanField(this, obj, fieldID, value); } + void SetByteField(jobject obj, jfieldID fieldID, jbyte value) + { functions->SetByteField(this, obj, fieldID, value); } + void SetCharField(jobject obj, jfieldID fieldID, jchar value) + { functions->SetCharField(this, obj, fieldID, value); } + void SetShortField(jobject obj, jfieldID fieldID, jshort value) + { functions->SetShortField(this, obj, fieldID, value); } + void SetIntField(jobject obj, jfieldID fieldID, jint value) + { functions->SetIntField(this, obj, fieldID, value); } + void SetLongField(jobject obj, jfieldID fieldID, jlong value) + { functions->SetLongField(this, obj, fieldID, value); } + void SetFloatField(jobject obj, jfieldID fieldID, jfloat value) + { functions->SetFloatField(this, obj, fieldID, value); } + void SetDoubleField(jobject obj, jfieldID fieldID, jdouble value) + { functions->SetDoubleField(this, obj, fieldID, value); } + + jmethodID GetStaticMethodID(jclass clazz, const char* name, const char* sig) + { return functions->GetStaticMethodID(this, clazz, name, sig); } + +#define CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ + _jtype CallStatic##_jname##Method(jclass clazz, jmethodID methodID, \ + ...) \ + { \ + _jtype result; \ + va_list args; \ + va_start(args, methodID); \ + result = functions->CallStatic##_jname##MethodV(this, clazz, \ + methodID, args); \ + va_end(args); \ + return result; \ + } +#define CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ + _jtype CallStatic##_jname##MethodV(jclass clazz, jmethodID methodID, \ + va_list args) \ + { return functions->CallStatic##_jname##MethodV(this, clazz, methodID, \ + args); } +#define CALL_STATIC_TYPE_METHODA(_jtype, _jname) \ + _jtype CallStatic##_jname##MethodA(jclass clazz, jmethodID methodID, \ + jvalue* args) \ + { return functions->CallStatic##_jname##MethodA(this, clazz, methodID, \ + args); } + +#define CALL_STATIC_TYPE(_jtype, _jname) \ + CALL_STATIC_TYPE_METHOD(_jtype, _jname) \ + CALL_STATIC_TYPE_METHODV(_jtype, _jname) \ + CALL_STATIC_TYPE_METHODA(_jtype, _jname) + + CALL_STATIC_TYPE(jobject, Object) + CALL_STATIC_TYPE(jboolean, Boolean) + CALL_STATIC_TYPE(jbyte, Byte) + CALL_STATIC_TYPE(jchar, Char) + CALL_STATIC_TYPE(jshort, Short) + CALL_STATIC_TYPE(jint, Int) + CALL_STATIC_TYPE(jlong, Long) + CALL_STATIC_TYPE(jfloat, Float) + CALL_STATIC_TYPE(jdouble, Double) + + void CallStaticVoidMethod(jclass clazz, jmethodID methodID, ...) + { + va_list args; + va_start(args, methodID); + functions->CallStaticVoidMethodV(this, clazz, methodID, args); + va_end(args); + } + void CallStaticVoidMethodV(jclass clazz, jmethodID methodID, va_list args) + { functions->CallStaticVoidMethodV(this, clazz, methodID, args); } + void CallStaticVoidMethodA(jclass clazz, jmethodID methodID, jvalue* args) + { functions->CallStaticVoidMethodA(this, clazz, methodID, args); } + + jfieldID GetStaticFieldID(jclass clazz, const char* name, const char* sig) + { return functions->GetStaticFieldID(this, clazz, name, sig); } + + jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticObjectField(this, clazz, fieldID); } + jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticBooleanField(this, clazz, fieldID); } + jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticByteField(this, clazz, fieldID); } + jchar GetStaticCharField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticCharField(this, clazz, fieldID); } + jshort GetStaticShortField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticShortField(this, clazz, fieldID); } + jint GetStaticIntField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticIntField(this, clazz, fieldID); } + jlong GetStaticLongField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticLongField(this, clazz, fieldID); } + jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticFloatField(this, clazz, fieldID); } + jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) + { return functions->GetStaticDoubleField(this, clazz, fieldID); } + + void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) + { functions->SetStaticObjectField(this, clazz, fieldID, value); } + void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) + { functions->SetStaticBooleanField(this, clazz, fieldID, value); } + void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) + { functions->SetStaticByteField(this, clazz, fieldID, value); } + void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) + { functions->SetStaticCharField(this, clazz, fieldID, value); } + void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) + { functions->SetStaticShortField(this, clazz, fieldID, value); } + void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) + { functions->SetStaticIntField(this, clazz, fieldID, value); } + void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) + { functions->SetStaticLongField(this, clazz, fieldID, value); } + void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) + { functions->SetStaticFloatField(this, clazz, fieldID, value); } + void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) + { functions->SetStaticDoubleField(this, clazz, fieldID, value); } + + jstring NewString(const jchar* unicodeChars, jsize len) + { return functions->NewString(this, unicodeChars, len); } + + jsize GetStringLength(jstring string) + { return functions->GetStringLength(this, string); } + + const jchar* GetStringChars(jstring string, jboolean* isCopy) + { return functions->GetStringChars(this, string, isCopy); } + + void ReleaseStringChars(jstring string, const jchar* chars) + { functions->ReleaseStringChars(this, string, chars); } + + jstring NewStringUTF(const char* bytes) + { return functions->NewStringUTF(this, bytes); } + + jsize GetStringUTFLength(jstring string) + { return functions->GetStringUTFLength(this, string); } + + const char* GetStringUTFChars(jstring string, jboolean* isCopy) + { return functions->GetStringUTFChars(this, string, isCopy); } + + void ReleaseStringUTFChars(jstring string, const char* utf) + { functions->ReleaseStringUTFChars(this, string, utf); } + + jsize GetArrayLength(jarray array) + { return functions->GetArrayLength(this, array); } + + jobjectArray NewObjectArray(jsize length, jclass elementClass, + jobject initialElement) + { return functions->NewObjectArray(this, length, elementClass, + initialElement); } + + jobject GetObjectArrayElement(jobjectArray array, jsize index) + { return functions->GetObjectArrayElement(this, array, index); } + + void SetObjectArrayElement(jobjectArray array, jsize index, jobject value) + { functions->SetObjectArrayElement(this, array, index, value); } + + jbooleanArray NewBooleanArray(jsize length) + { return functions->NewBooleanArray(this, length); } + jbyteArray NewByteArray(jsize length) + { return functions->NewByteArray(this, length); } + jcharArray NewCharArray(jsize length) + { return functions->NewCharArray(this, length); } + jshortArray NewShortArray(jsize length) + { return functions->NewShortArray(this, length); } + jintArray NewIntArray(jsize length) + { return functions->NewIntArray(this, length); } + jlongArray NewLongArray(jsize length) + { return functions->NewLongArray(this, length); } + jfloatArray NewFloatArray(jsize length) + { return functions->NewFloatArray(this, length); } + jdoubleArray NewDoubleArray(jsize length) + { return functions->NewDoubleArray(this, length); } + + jboolean* GetBooleanArrayElements(jbooleanArray array, jboolean* isCopy) + { return functions->GetBooleanArrayElements(this, array, isCopy); } + jbyte* GetByteArrayElements(jbyteArray array, jboolean* isCopy) + { return functions->GetByteArrayElements(this, array, isCopy); } + jchar* GetCharArrayElements(jcharArray array, jboolean* isCopy) + { return functions->GetCharArrayElements(this, array, isCopy); } + jshort* GetShortArrayElements(jshortArray array, jboolean* isCopy) + { return functions->GetShortArrayElements(this, array, isCopy); } + jint* GetIntArrayElements(jintArray array, jboolean* isCopy) + { return functions->GetIntArrayElements(this, array, isCopy); } + jlong* GetLongArrayElements(jlongArray array, jboolean* isCopy) + { return functions->GetLongArrayElements(this, array, isCopy); } + jfloat* GetFloatArrayElements(jfloatArray array, jboolean* isCopy) + { return functions->GetFloatArrayElements(this, array, isCopy); } + jdouble* GetDoubleArrayElements(jdoubleArray array, jboolean* isCopy) + { return functions->GetDoubleArrayElements(this, array, isCopy); } + + void ReleaseBooleanArrayElements(jbooleanArray array, jboolean* elems, + jint mode) + { functions->ReleaseBooleanArrayElements(this, array, elems, mode); } + void ReleaseByteArrayElements(jbyteArray array, jbyte* elems, + jint mode) + { functions->ReleaseByteArrayElements(this, array, elems, mode); } + void ReleaseCharArrayElements(jcharArray array, jchar* elems, + jint mode) + { functions->ReleaseCharArrayElements(this, array, elems, mode); } + void ReleaseShortArrayElements(jshortArray array, jshort* elems, + jint mode) + { functions->ReleaseShortArrayElements(this, array, elems, mode); } + void ReleaseIntArrayElements(jintArray array, jint* elems, + jint mode) + { functions->ReleaseIntArrayElements(this, array, elems, mode); } + void ReleaseLongArrayElements(jlongArray array, jlong* elems, + jint mode) + { functions->ReleaseLongArrayElements(this, array, elems, mode); } + void ReleaseFloatArrayElements(jfloatArray array, jfloat* elems, + jint mode) + { functions->ReleaseFloatArrayElements(this, array, elems, mode); } + void ReleaseDoubleArrayElements(jdoubleArray array, jdouble* elems, + jint mode) + { functions->ReleaseDoubleArrayElements(this, array, elems, mode); } + + void GetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, + jboolean* buf) + { functions->GetBooleanArrayRegion(this, array, start, len, buf); } + void GetByteArrayRegion(jbyteArray array, jsize start, jsize len, + jbyte* buf) + { functions->GetByteArrayRegion(this, array, start, len, buf); } + void GetCharArrayRegion(jcharArray array, jsize start, jsize len, + jchar* buf) + { functions->GetCharArrayRegion(this, array, start, len, buf); } + void GetShortArrayRegion(jshortArray array, jsize start, jsize len, + jshort* buf) + { functions->GetShortArrayRegion(this, array, start, len, buf); } + void GetIntArrayRegion(jintArray array, jsize start, jsize len, + jint* buf) + { functions->GetIntArrayRegion(this, array, start, len, buf); } + void GetLongArrayRegion(jlongArray array, jsize start, jsize len, + jlong* buf) + { functions->GetLongArrayRegion(this, array, start, len, buf); } + void GetFloatArrayRegion(jfloatArray array, jsize start, jsize len, + jfloat* buf) + { functions->GetFloatArrayRegion(this, array, start, len, buf); } + void GetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, + jdouble* buf) + { functions->GetDoubleArrayRegion(this, array, start, len, buf); } + + void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, + const jboolean* buf) + { functions->SetBooleanArrayRegion(this, array, start, len, buf); } + void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, + const jbyte* buf) + { functions->SetByteArrayRegion(this, array, start, len, buf); } + void SetCharArrayRegion(jcharArray array, jsize start, jsize len, + const jchar* buf) + { functions->SetCharArrayRegion(this, array, start, len, buf); } + void SetShortArrayRegion(jshortArray array, jsize start, jsize len, + const jshort* buf) + { functions->SetShortArrayRegion(this, array, start, len, buf); } + void SetIntArrayRegion(jintArray array, jsize start, jsize len, + const jint* buf) + { functions->SetIntArrayRegion(this, array, start, len, buf); } + void SetLongArrayRegion(jlongArray array, jsize start, jsize len, + const jlong* buf) + { functions->SetLongArrayRegion(this, array, start, len, buf); } + void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, + const jfloat* buf) + { functions->SetFloatArrayRegion(this, array, start, len, buf); } + void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, + const jdouble* buf) + { functions->SetDoubleArrayRegion(this, array, start, len, buf); } + + jint RegisterNatives(jclass clazz, const JNINativeMethod* methods, + jint nMethods) + { return functions->RegisterNatives(this, clazz, methods, nMethods); } + + jint UnregisterNatives(jclass clazz) + { return functions->UnregisterNatives(this, clazz); } + + jint MonitorEnter(jobject obj) + { return functions->MonitorEnter(this, obj); } + + jint MonitorExit(jobject obj) + { return functions->MonitorExit(this, obj); } + + jint GetJavaVM(JavaVM** vm) + { return functions->GetJavaVM(this, vm); } + + void GetStringRegion(jstring str, jsize start, jsize len, jchar* buf) + { functions->GetStringRegion(this, str, start, len, buf); } + + void GetStringUTFRegion(jstring str, jsize start, jsize len, char* buf) + { return functions->GetStringUTFRegion(this, str, start, len, buf); } + + void* GetPrimitiveArrayCritical(jarray array, jboolean* isCopy) + { return functions->GetPrimitiveArrayCritical(this, array, isCopy); } + + void ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode) + { functions->ReleasePrimitiveArrayCritical(this, array, carray, mode); } + + const jchar* GetStringCritical(jstring string, jboolean* isCopy) + { return functions->GetStringCritical(this, string, isCopy); } + + void ReleaseStringCritical(jstring string, const jchar* carray) + { functions->ReleaseStringCritical(this, string, carray); } + + jweak NewWeakGlobalRef(jobject obj) + { return functions->NewWeakGlobalRef(this, obj); } + + void DeleteWeakGlobalRef(jweak obj) + { functions->DeleteWeakGlobalRef(this, obj); } + + jboolean ExceptionCheck() + { return functions->ExceptionCheck(this); } + + jobject NewDirectByteBuffer(void* address, jlong capacity) + { return functions->NewDirectByteBuffer(this, address, capacity); } + + void* GetDirectBufferAddress(jobject buf) + { return functions->GetDirectBufferAddress(this, buf); } + + jlong GetDirectBufferCapacity(jobject buf) + { return functions->GetDirectBufferCapacity(this, buf); } + + /* added in JNI 1.6 */ + jobjectRefType GetObjectRefType(jobject obj) + { return functions->GetObjectRefType(this, obj); } +#endif /*__cplusplus*/ +}; + + +/* + * JNI invocation interface. + */ +struct JNIInvokeInterface { + void* reserved0; + void* reserved1; + void* reserved2; + + jint (*DestroyJavaVM)(JavaVM*); + jint (*AttachCurrentThread)(JavaVM*, JNIEnv**, void*); + jint (*DetachCurrentThread)(JavaVM*); + jint (*GetEnv)(JavaVM*, void**, jint); + jint (*AttachCurrentThreadAsDaemon)(JavaVM*, JNIEnv**, void*); +}; + +/* + * C++ version. + */ +struct _JavaVM { + const struct JNIInvokeInterface* functions; + +#if defined(__cplusplus) + jint DestroyJavaVM() + { return functions->DestroyJavaVM(this); } + jint AttachCurrentThread(JNIEnv** p_env, void* thr_args) + { return functions->AttachCurrentThread(this, p_env, thr_args); } + jint DetachCurrentThread() + { return functions->DetachCurrentThread(this); } + jint GetEnv(void** env, jint version) + { return functions->GetEnv(this, env, version); } + jint AttachCurrentThreadAsDaemon(JNIEnv** p_env, void* thr_args) + { return functions->AttachCurrentThreadAsDaemon(this, p_env, thr_args); } +#endif /*__cplusplus*/ +}; + +struct JavaVMAttachArgs { + jint version; /* must be >= JNI_VERSION_1_2 */ + const char* name; /* NULL or name of thread as modified UTF-8 str */ + jobject group; /* global ref of a ThreadGroup object, or NULL */ +}; +typedef struct JavaVMAttachArgs JavaVMAttachArgs; + +/* + * JNI 1.2+ initialization. (As of 1.6, the pre-1.2 structures are no + * longer supported.) + */ +typedef struct JavaVMOption { + const char* optionString; + void* extraInfo; +} JavaVMOption; + +typedef struct JavaVMInitArgs { + jint version; /* use JNI_VERSION_1_2 or later */ + + jint nOptions; + JavaVMOption* options; + jboolean ignoreUnrecognized; +} JavaVMInitArgs; + +#ifdef __cplusplus +extern "C" { +#endif +/* + * VM initialization functions. + * + * Note these are the only symbols exported for JNI by the VM. + */ +jint JNI_GetDefaultJavaVMInitArgs(void*); +jint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*); +jint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*); + +/* + * Prototypes for functions exported by loadable shared libs. These are + * called by JNI, not provided by JNI. + */ +jint JNI_OnLoad(JavaVM* vm, void* reserved); +void JNI_OnUnload(JavaVM* vm, void* reserved); + +#ifdef __cplusplus +} +#endif + + +/* + * Manifest constants. + */ +#define JNI_FALSE 0 +#define JNI_TRUE 1 + +#define JNI_VERSION_1_1 0x00010001 +#define JNI_VERSION_1_2 0x00010002 +#define JNI_VERSION_1_4 0x00010004 +#define JNI_VERSION_1_6 0x00010006 + +#define JNI_OK (0) /* no error */ +#define JNI_ERR (-1) /* generic error */ +#define JNI_EDETACHED (-2) /* thread detached from the VM */ +#define JNI_EVERSION (-3) /* JNI version error */ + +#define JNI_COMMIT 1 /* copy content, do not free buffer */ +#define JNI_ABORT 2 /* free buffer w/o copying back */ + +/* need these for Windows-aware headers */ +#define JNIIMPORT +#define JNIEXPORT +#define JNICALL + +#endif /*_JNI_H*/ From c83c53bfe50f8805a0a4ea8bebdac030a2ac53d1 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 28 Jan 2013 17:38:04 -0800 Subject: [PATCH 290/326] Remove TempFiles's dependency on global and environment variables --- emscripten.py | 6 ++++-- tools/js_optimizer.py | 2 +- tools/shared.py | 16 ++++++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/emscripten.py b/emscripten.py index 1fc5f190d1d94..3ceb0c8e3c9cd 100755 --- a/emscripten.py +++ b/emscripten.py @@ -32,7 +32,7 @@ def path_from_root(*pathelems): """ return os.path.join(__rootpath__, *pathelems) -temp_files = shared.TempFiles() +temp_files = shared.ConfigureTempFiles() compiler_engine = None jcache = False @@ -574,7 +574,7 @@ def lookup(value): emscript(args.infile, settings, args.outfile, libraries) -if __name__ == '__main__': +def main(): parser = optparse.OptionParser( usage='usage: %prog [-h] [-H HEADERS] [-o OUTFILE] [-c COMPILER_ENGINE] [-s FOO=BAR]* infile', description=('You should normally never use this! Use emcc instead. ' @@ -618,3 +618,5 @@ def lookup(value): temp_files.run_and_clean(lambda: main(keywords)) +if __name__ == '__main__': + main() diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 231c6257e98f4..c1e800c32c2cc 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -2,7 +2,7 @@ import os, sys, subprocess, multiprocessing, re import shared -temp_files = shared.TempFiles() +temp_files = shared.ConfigureTempFiles() __rootpath__ = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) def path_from_root(*pathelems): diff --git a/tools/shared.py b/tools/shared.py index c5774c1a726fe..0580cf03f2546 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -425,7 +425,10 @@ def try_delete(filename): pass class TempFiles: - def __init__(self): + def __init__(self, tmp, saveDebugFiles=False): + self.tmp = tmp + self.saveDebugFiles = saveDebugFiles + self.to_clean = [] def note(self, filename): @@ -433,13 +436,13 @@ def note(self, filename): def get(self, suffix): """Returns a named temp file with the given prefix.""" - named_file = tempfile.NamedTemporaryFile(dir=TEMP_DIR if not DEBUG else EMSCRIPTEN_TEMP_DIR, suffix=suffix, delete=False) + named_file = tempfile.NamedTemporaryFile(dir=self.tmp, suffix=suffix, delete=False) self.note(named_file.name) return named_file def clean(self): - if os.environ.get('EMCC_DEBUG_SAVE'): - print >> sys.stderr, 'not cleaning up temp files since in debug-save mode, see them in %s' % EMSCRIPTEN_TEMP_DIR + if self.saveDebugFiles: + print >> sys.stderr, 'not cleaning up temp files since in debug-save mode, see them in %s' % (self.tmp,) return for filename in self.to_clean: try_delete(filename) @@ -451,6 +454,11 @@ def run_and_clean(self, func): finally: self.clean() +def ConfigureTempFiles(): + return TempFiles( + tmp=TEMP_DIR if not DEBUG else EMSCRIPTEN_TEMP_DIR, + saveDebugFiles=os.environ.get('EMCC_DEBUG_SAVE')) + # Utilities def check_engine(engine): From 8dc0e2b7deca6b366066a1b94fe31b7ba4a2b2d0 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 28 Jan 2013 17:58:21 -0800 Subject: [PATCH 291/326] Make a Configuration object holding formerly global variables. --- tools/shared.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index 0580cf03f2546..f46942e6dc813 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -300,20 +300,24 @@ def build_llvm_tool_path(tool): TEMP_DIR = '/tmp' CANONICAL_TEMP_DIR = os.path.join(TEMP_DIR, 'emscripten_temp') -EMSCRIPTEN_TEMP_DIR = None -DEBUG = os.environ.get('EMCC_DEBUG') -if DEBUG == "0": - DEBUG = None -DEBUG_CACHE = DEBUG and "cache" in DEBUG +class Configuration: + def __init__(self, environ=os.environ): + self.DEBUG = environ.get('EMCC_DEBUG') + self.EMSCRIPTEN_TEMP_DIR = None -if DEBUG: - try: - EMSCRIPTEN_TEMP_DIR = CANONICAL_TEMP_DIR - if not os.path.exists(EMSCRIPTEN_TEMP_DIR): - os.makedirs(EMSCRIPTEN_TEMP_DIR) - except Exception, e: - print >> sys.stderr, e, 'Could not create canonical temp dir. Check definition of TEMP_DIR in ~/.emscripten' + if self.DEBUG: + try: + self.EMSCRIPTEN_TEMP_DIR = CANONICAL_TEMP_DIR + if not os.path.exists(EMSCRIPTEN_TEMP_DIR): + os.makedirs(EMSCRIPTEN_TEMP_DIR) + except Exception, e: + print >> sys.stderr, e, 'Could not create canonical temp dir. Check definition of TEMP_DIR in ~/.emscripten' + +configuration = Configuration() +DEBUG = configuration.DEBUG +EMSCRIPTEN_TEMP_DIR = configuration.EMSCRIPTEN_TEMP_DIR +DEBUG_CACHE = DEBUG and "cache" in DEBUG if not EMSCRIPTEN_TEMP_DIR: EMSCRIPTEN_TEMP_DIR = tempfile.mkdtemp(prefix='emscripten_temp_', dir=TEMP_DIR) @@ -454,9 +458,9 @@ def run_and_clean(self, func): finally: self.clean() -def ConfigureTempFiles(): +def ConfigureTempFiles(configuration=configuration): return TempFiles( - tmp=TEMP_DIR if not DEBUG else EMSCRIPTEN_TEMP_DIR, + tmp=TEMP_DIR if not configuration.DEBUG else configuration.EMSCRIPTEN_TEMP_DIR, saveDebugFiles=os.environ.get('EMCC_DEBUG_SAVE')) # Utilities From 531931628897969a228c83f136d231599f486a70 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 28 Jan 2013 18:08:22 -0800 Subject: [PATCH 292/326] Integrate azakai's style feedback and make sanity tests pass again. --- emscripten.py | 7 ++++--- tools/js_optimizer.py | 2 +- tools/shared.py | 15 ++++++++------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/emscripten.py b/emscripten.py index 3ceb0c8e3c9cd..1fc0eed2479f2 100755 --- a/emscripten.py +++ b/emscripten.py @@ -32,7 +32,8 @@ def path_from_root(*pathelems): """ return os.path.join(__rootpath__, *pathelems) -temp_files = shared.ConfigureTempFiles() +configuration = shared.Configuration(environ=os.environ) +temp_files = shared.make_temp_files() compiler_engine = None jcache = False @@ -574,7 +575,7 @@ def lookup(value): emscript(args.infile, settings, args.outfile, libraries) -def main(): +def _main(): parser = optparse.OptionParser( usage='usage: %prog [-h] [-H HEADERS] [-o OUTFILE] [-c COMPILER_ENGINE] [-s FOO=BAR]* infile', description=('You should normally never use this! Use emcc instead. ' @@ -619,4 +620,4 @@ def main(): temp_files.run_and_clean(lambda: main(keywords)) if __name__ == '__main__': - main() + _main() diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index c1e800c32c2cc..533242b218f2b 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -2,7 +2,7 @@ import os, sys, subprocess, multiprocessing, re import shared -temp_files = shared.ConfigureTempFiles() +temp_files = shared.make_temp_files() __rootpath__ = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) def path_from_root(*pathelems): diff --git a/tools/shared.py b/tools/shared.py index f46942e6dc813..1005a48db877a 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -302,7 +302,7 @@ def build_llvm_tool_path(tool): CANONICAL_TEMP_DIR = os.path.join(TEMP_DIR, 'emscripten_temp') class Configuration: - def __init__(self, environ=os.environ): + def __init__(self, environ): self.DEBUG = environ.get('EMCC_DEBUG') self.EMSCRIPTEN_TEMP_DIR = None @@ -314,7 +314,8 @@ def __init__(self, environ=os.environ): except Exception, e: print >> sys.stderr, e, 'Could not create canonical temp dir. Check definition of TEMP_DIR in ~/.emscripten' -configuration = Configuration() +configuration = Configuration( + environ=os.environ) DEBUG = configuration.DEBUG EMSCRIPTEN_TEMP_DIR = configuration.EMSCRIPTEN_TEMP_DIR DEBUG_CACHE = DEBUG and "cache" in DEBUG @@ -429,9 +430,9 @@ def try_delete(filename): pass class TempFiles: - def __init__(self, tmp, saveDebugFiles=False): + def __init__(self, tmp, save_debug_files=False): self.tmp = tmp - self.saveDebugFiles = saveDebugFiles + self.save_debug_files = save_debug_files self.to_clean = [] @@ -445,7 +446,7 @@ def get(self, suffix): return named_file def clean(self): - if self.saveDebugFiles: + if self.save_debug_files: print >> sys.stderr, 'not cleaning up temp files since in debug-save mode, see them in %s' % (self.tmp,) return for filename in self.to_clean: @@ -458,10 +459,10 @@ def run_and_clean(self, func): finally: self.clean() -def ConfigureTempFiles(configuration=configuration): +def make_temp_files(configuration=configuration): return TempFiles( tmp=TEMP_DIR if not configuration.DEBUG else configuration.EMSCRIPTEN_TEMP_DIR, - saveDebugFiles=os.environ.get('EMCC_DEBUG_SAVE')) + save_debug_files=os.environ.get('EMCC_DEBUG_SAVE')) # Utilities From b32d0644551903091ad873b52fe9de920ea07020 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 28 Jan 2013 18:21:43 -0800 Subject: [PATCH 293/326] Add command line option to emscripten.py to suppress usage warning --- emscripten.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/emscripten.py b/emscripten.py index 1fc0eed2479f2..a817ade321a38 100755 --- a/emscripten.py +++ b/emscripten.py @@ -11,13 +11,6 @@ import os, sys, json, optparse, subprocess, re, time, multiprocessing -if not os.environ.get('EMSCRIPTEN_SUPPRESS_USAGE_WARNING'): - print >> sys.stderr, ''' -============================================================== -WARNING: You should normally never use this! Use emcc instead. -============================================================== - ''' - from tools import shared DEBUG = os.environ.get('EMCC_DEBUG') @@ -575,7 +568,7 @@ def lookup(value): emscript(args.infile, settings, args.outfile, libraries) -def _main(): +def _main(environ): parser = optparse.OptionParser( usage='usage: %prog [-h] [-H HEADERS] [-o OUTFILE] [-c COMPILER_ENGINE] [-s FOO=BAR]* infile', description=('You should normally never use this! Use emcc instead. ' @@ -606,9 +599,21 @@ def _main(): action='store_true', default=False, help=('Enable jcache (ccache-like caching of compilation results, for faster incremental builds).')) + parser.add_option('--suppressUsageWarning', + action='store_true', + default=environ.get('EMSCRIPTEN_SUPPRESS_USAGE_WARNING'), + help=('Suppress usage warning')) # Convert to the same format that argparse would have produced. keywords, positional = parser.parse_args() + + if not keywords.suppressUsageWarning: + print >> sys.stderr, ''' +============================================================== +WARNING: You should normally never use this! Use emcc instead. +============================================================== + ''' + if len(positional) != 1: raise RuntimeError('Must provide exactly one positional argument.') keywords.infile = os.path.abspath(positional[0]) @@ -620,4 +625,4 @@ def _main(): temp_files.run_and_clean(lambda: main(keywords)) if __name__ == '__main__': - _main() + _main(environ=os.environ) From eff17663bc9460f1f760eaeb9be04450347eba1e Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 28 Jan 2013 18:44:46 -0800 Subject: [PATCH 294/326] Pass configuration into emscript --- emscripten.py | 13 +++++-------- tools/shared.py | 9 ++++++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/emscripten.py b/emscripten.py index a817ade321a38..a0b347512f88e 100755 --- a/emscripten.py +++ b/emscripten.py @@ -13,11 +13,6 @@ from tools import shared -DEBUG = os.environ.get('EMCC_DEBUG') -if DEBUG == "0": - DEBUG = None -DEBUG_CACHE = DEBUG and "cache" in DEBUG - __rootpath__ = os.path.abspath(os.path.dirname(__file__)) def path_from_root(*pathelems): """Returns the absolute path for which the given path elements are @@ -53,7 +48,7 @@ def process_funcs(args): shared.try_delete(funcs_file) return out -def emscript(infile, settings, outfile, libraries=[]): +def emscript(configuration, infile, settings, outfile, libraries=[]): """Runs the emscripten LLVM-to-JS compiler. We parallelize as much as possible Args: @@ -63,6 +58,8 @@ def emscript(infile, settings, outfile, libraries=[]): outfile: The file where the output is written. """ + DEBUG = configuration.DEBUG + DEBUG_CACHE = configuration.DEBUG_CACHE compiler = path_from_root('src', 'compiler.js') # Parallelization: We run 3 phases: @@ -70,7 +67,7 @@ def emscript(infile, settings, outfile, libraries=[]): # 2 aka 'funcs': Process functions. We can parallelize this, working on each function independently. # 3 aka 'post' : Process globals, generate postamble and finishing touches. - if DEBUG: print >> sys.stderr, 'emscript: ll=>js' + configuration.debug_log('emscript: ll=>js') if jcache: shared.JCache.ensure() @@ -566,7 +563,7 @@ def lookup(value): # Compile the assembly to Javascript. if settings.get('RELOOP'): shared.Building.ensure_relooper() - emscript(args.infile, settings, args.outfile, libraries) + emscript(configuration, args.infile, settings, args.outfile, libraries) def _main(environ): parser = optparse.OptionParser( diff --git a/tools/shared.py b/tools/shared.py index 1005a48db877a..585b2af235976 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -304,6 +304,9 @@ def build_llvm_tool_path(tool): class Configuration: def __init__(self, environ): self.DEBUG = environ.get('EMCC_DEBUG') + if self.DEBUG == "0": + self.DEBUG = None + self.DEBUG_CACHE = self.DEBUG and "cache" in self.DEBUG self.EMSCRIPTEN_TEMP_DIR = None if self.DEBUG: @@ -314,11 +317,15 @@ def __init__(self, environ): except Exception, e: print >> sys.stderr, e, 'Could not create canonical temp dir. Check definition of TEMP_DIR in ~/.emscripten' + def debug_log(self, msg): + if self.DEBUG: + print >> sys.stderr, msg + configuration = Configuration( environ=os.environ) DEBUG = configuration.DEBUG EMSCRIPTEN_TEMP_DIR = configuration.EMSCRIPTEN_TEMP_DIR -DEBUG_CACHE = DEBUG and "cache" in DEBUG +DEBUG_CACHE = configuration.DEBUG_CACHE if not EMSCRIPTEN_TEMP_DIR: EMSCRIPTEN_TEMP_DIR = tempfile.mkdtemp(prefix='emscripten_temp_', dir=TEMP_DIR) From bd4bc7050b70b71d035327199a18a8e0725d7f1d Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Tue, 29 Jan 2013 12:43:37 -0800 Subject: [PATCH 295/326] allow cwd-relative paths when passing --compiler to emscripten.py --- emscripten.py | 18 +++++++++++++++--- tools/shared.py | 11 +++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/emscripten.py b/emscripten.py index a0b347512f88e..1ea6e0d71384c 100755 --- a/emscripten.py +++ b/emscripten.py @@ -44,7 +44,12 @@ def process_funcs(args): ll = ''.join(funcs) + '\n' + meta funcs_file = temp_files.get('.func_%d.ll' % i).name open(funcs_file, 'w').write(ll) - out = shared.run_js(compiler, compiler_engine, [settings_file, funcs_file, 'funcs', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) + out = shared.run_js( + compiler, + engine=os.path.abspath(compiler_engine), + args=[settings_file, funcs_file, 'funcs', forwarded_file] + libraries, + stdout=subprocess.PIPE, + cwd=path_from_root('src')) shared.try_delete(funcs_file) return out @@ -206,12 +211,15 @@ def load_from_cache(chunk): # TODO: minimize size of forwarded data from funcs to what we actually need - if cores == 1 and total_ll_size < MAX_CHUNK_SIZE: assert len(chunks) == 1, 'no point in splitting up without multiple cores' + if cores == 1 and total_ll_size < MAX_CHUNK_SIZE: + assert len(chunks) == 1, 'no point in splitting up without multiple cores' if len(chunks) > 0: if DEBUG: print >> sys.stderr, ' emscript: phase 2 working on %d chunks %s (intended chunk size: %.2f MB, meta: %.2f MB, forwarded: %.2f MB, total: %.2f MB)' % (len(chunks), ('using %d cores' % cores) if len(chunks) > 1 else '', chunk_size/(1024*1024.), len(meta)/(1024*1024.), len(forwarded_data)/(1024*1024.), total_ll_size/(1024*1024.)) - commands = [(i, chunks[i], meta, settings_file, compiler, forwarded_file, libraries) for i in range(len(chunks))] + commands = [ + (i, chunks[i], meta, settings_file, compiler, forwarded_file, libraries) + for i in range(len(chunks))] if len(chunks) > 1: pool = multiprocessing.Pool(processes=cores) @@ -616,7 +624,11 @@ def _main(environ): keywords.infile = os.path.abspath(positional[0]) if isinstance(keywords.outfile, basestring): keywords.outfile = open(keywords.outfile, 'w') + + global compiler_engine compiler_engine = keywords.compiler + + global jcache jcache = keywords.jcache temp_files.run_and_clean(lambda: main(keywords)) diff --git a/tools/shared.py b/tools/shared.py index 585b2af235976..7005dee4fa758 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -497,9 +497,16 @@ def timeout_run(proc, timeout, note='unnamed process', full_output=False): def run_js(filename, engine=None, args=[], check_timeout=False, stdout=PIPE, stderr=None, cwd=None, full_output=False): if engine is None: engine = JS_ENGINES[0] engine = listify(engine) - #if not WINDOWS: 'd8' in engine[0] or 'node' in engine[0]: engine += ['--stack_size=8192'] # needed for some big projects command = engine + [filename] + (['--'] if 'd8' in engine[0] else []) + args - return timeout_run(Popen(command, stdout=stdout, stderr=stderr, cwd=cwd), 15*60 if check_timeout else None, 'Execution', full_output=full_output) + return timeout_run( + Popen( + command, + stdout=stdout, + stderr=stderr, + cwd=cwd), + 15*60 if check_timeout else None, + 'Execution', + full_output=full_output) def to_cc(cxx): # By default, LLVM_GCC and CLANG are really the C++ versions. This gets an explicit C version From cc9cc70e87d8f4b00aa869453802bf7eee718a4d Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Tue, 29 Jan 2013 17:42:03 -0800 Subject: [PATCH 296/326] Delete the compiled relooper.js (but allow specification of an arbitrary relooper) --- emscripten.py | 3 +++ src/compiler.js | 2 +- src/settings.js | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/emscripten.py b/emscripten.py index 1ea6e0d71384c..2ada0b0d21ac8 100755 --- a/emscripten.py +++ b/emscripten.py @@ -624,6 +624,9 @@ def _main(environ): keywords.infile = os.path.abspath(positional[0]) if isinstance(keywords.outfile, basestring): keywords.outfile = open(keywords.outfile, 'w') + if keywords.relooper: + shared.RELOOPER = os.path.abspath(keywords.relooper) + keywords.settings.append("RELOOPER=" + json.dumps(shared.RELOOPER)) global compiler_engine compiler_engine = keywords.compiler diff --git a/src/compiler.js b/src/compiler.js index 1cd09c30e7bd0..3047daf1ae8b9 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -199,7 +199,7 @@ load('parseTools.js'); load('intertyper.js'); load('analyzer.js'); load('jsifier.js'); -if (RELOOP) load('relooper.js') +if (RELOOP) load(RELOOPER) globalEval(processMacros(preprocess(read('runtime.js')))); Runtime.QUANTUM_SIZE = QUANTUM_SIZE; diff --git a/src/settings.js b/src/settings.js index e260ed2a2b960..1bfcf92ac552a 100644 --- a/src/settings.js +++ b/src/settings.js @@ -58,6 +58,8 @@ var ALLOW_MEMORY_GROWTH = 0; // If false, we abort with an error if we try to al // Code embetterments var MICRO_OPTS = 1; // Various micro-optimizations, like nativizing variables var RELOOP = 0; // Recreate js native loops from llvm data +var RELOOPER = 'relooper.js'; // Loads the relooper from this path relative to compiler.js + var USE_TYPED_ARRAYS = 2; // Use typed arrays for the heap. See https://github.com/kripken/emscripten/wiki/Code-Generation-Modes/ // 0 means no typed arrays are used. // 1 has two heaps, IHEAP (int32) and FHEAP (double), From 74b72bba490d30824ce444d84a02c7fee8881140 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Tue, 29 Jan 2013 18:07:16 -0800 Subject: [PATCH 297/326] Kill compiler_engine global variable and use the specified compiler engine for every invocation in emscripten.py --- emscripten.py | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/emscripten.py b/emscripten.py index 2ada0b0d21ac8..1ce3625f27ca6 100755 --- a/emscripten.py +++ b/emscripten.py @@ -9,7 +9,7 @@ headers, for the libc implementation in JS). ''' -import os, sys, json, optparse, subprocess, re, time, multiprocessing +import os, sys, json, optparse, subprocess, re, time, multiprocessing, functools from tools import shared @@ -23,7 +23,6 @@ def path_from_root(*pathelems): configuration = shared.Configuration(environ=os.environ) temp_files = shared.make_temp_files() -compiler_engine = None jcache = False def scan(ll, settings): @@ -39,21 +38,20 @@ def scan(ll, settings): MIN_CHUNK_SIZE = 1024*1024 MAX_CHUNK_SIZE = float(os.environ.get('EMSCRIPT_MAX_CHUNK_SIZE') or 'inf') # configuring this is just for debugging purposes -def process_funcs(args): - i, funcs, meta, settings_file, compiler, forwarded_file, libraries = args +def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libraries, compiler_engine)): ll = ''.join(funcs) + '\n' + meta funcs_file = temp_files.get('.func_%d.ll' % i).name open(funcs_file, 'w').write(ll) out = shared.run_js( compiler, - engine=os.path.abspath(compiler_engine), + engine=compiler_engine, args=[settings_file, funcs_file, 'funcs', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) shared.try_delete(funcs_file) return out -def emscript(configuration, infile, settings, outfile, libraries=[]): +def emscript(configuration, infile, settings, outfile, libraries=[], compiler_engine=None): """Runs the emscripten LLVM-to-JS compiler. We parallelize as much as possible Args: @@ -162,7 +160,7 @@ def save_settings(): if out and DEBUG: print >> sys.stderr, ' loading pre from jcache' if not out: open(pre_file, 'w').write(pre_input) - out = shared.run_js(compiler, shared.COMPILER_ENGINE, [settings_file, pre_file, 'pre'] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) + out = shared.run_js(compiler, compiler_engine, [settings_file, pre_file, 'pre'] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) if jcache: if DEBUG: print >> sys.stderr, ' saving pre to jcache' shared.JCache.set(shortkey, keys, out) @@ -218,12 +216,16 @@ def load_from_cache(chunk): if DEBUG: print >> sys.stderr, ' emscript: phase 2 working on %d chunks %s (intended chunk size: %.2f MB, meta: %.2f MB, forwarded: %.2f MB, total: %.2f MB)' % (len(chunks), ('using %d cores' % cores) if len(chunks) > 1 else '', chunk_size/(1024*1024.), len(meta)/(1024*1024.), len(forwarded_data)/(1024*1024.), total_ll_size/(1024*1024.)) commands = [ - (i, chunks[i], meta, settings_file, compiler, forwarded_file, libraries) - for i in range(len(chunks))] + (i, chunk, meta, settings_file, compiler, forwarded_file, libraries, compiler_engine) + for i, chunk in enumerate(chunks) + ] if len(chunks) > 1: pool = multiprocessing.Pool(processes=cores) - outputs = pool.map(process_funcs, commands, chunksize=1) + outputs = pool.map( + process_funcs, + commands, + chunksize=1) elif len(chunks) == 1: outputs = [process_funcs(commands[0])] else: @@ -310,7 +312,7 @@ def blockaddrsize(js): if DEBUG: t = time.time() post_file = temp_files.get('.post.ll').name open(post_file, 'w').write('\n') # no input, just processing of forwarded data - out = shared.run_js(compiler, shared.COMPILER_ENGINE, [settings_file, post_file, 'post', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) + out = shared.run_js(compiler, compiler_engine, [settings_file, post_file, 'post', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) post, last_forwarded_data = out.split('//FORWARDED_DATA:') # if this fails, perhaps the process failed prior to printing forwarded data? last_forwarded_json = json.loads(last_forwarded_data) @@ -495,7 +497,7 @@ def fix(m): outfile.close() -def main(args): +def main(args, compiler_engine=None): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -571,7 +573,7 @@ def lookup(value): # Compile the assembly to Javascript. if settings.get('RELOOP'): shared.Building.ensure_relooper() - emscript(configuration, args.infile, settings, args.outfile, libraries) + emscript(configuration, args.infile, settings, args.outfile, libraries, compiler_engine=compiler_engine) def _main(environ): parser = optparse.OptionParser( @@ -628,13 +630,12 @@ def _main(environ): shared.RELOOPER = os.path.abspath(keywords.relooper) keywords.settings.append("RELOOPER=" + json.dumps(shared.RELOOPER)) - global compiler_engine - compiler_engine = keywords.compiler - global jcache jcache = keywords.jcache - temp_files.run_and_clean(lambda: main(keywords)) + temp_files.run_and_clean(lambda: main( + keywords, + compiler_engine=os.path.abspath(keywords.compiler))) if __name__ == '__main__': _main(environ=os.environ) From cdbb73fe0c93aa3bf024262e3c0769294cadcf90 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Tue, 29 Jan 2013 18:09:00 -0800 Subject: [PATCH 298/326] Integrate formatting feedback --- tools/shared.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index 7005dee4fa758..d06b96b582ac3 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -321,8 +321,7 @@ def debug_log(self, msg): if self.DEBUG: print >> sys.stderr, msg -configuration = Configuration( - environ=os.environ) +configuration = Configuration(environ=os.environ) DEBUG = configuration.DEBUG EMSCRIPTEN_TEMP_DIR = configuration.EMSCRIPTEN_TEMP_DIR DEBUG_CACHE = configuration.DEBUG_CACHE From 98f6c4d2d64d1b53a542306be86ab87e22f2cd0f Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 15:15:37 -0800 Subject: [PATCH 299/326] remove jcache global variable in emscripten.py --- emscripten.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/emscripten.py b/emscripten.py index 1ce3625f27ca6..e98775aab4dc7 100755 --- a/emscripten.py +++ b/emscripten.py @@ -23,8 +23,6 @@ def path_from_root(*pathelems): configuration = shared.Configuration(environ=os.environ) temp_files = shared.make_temp_files() -jcache = False - def scan(ll, settings): # blockaddress(@main, %23) blockaddrs = [] @@ -51,7 +49,9 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr shared.try_delete(funcs_file) return out -def emscript(configuration, infile, settings, outfile, libraries=[], compiler_engine=None): +def emscript(configuration, infile, settings, outfile, libraries=[], + compiler_engine=None, + jcache=None): """Runs the emscripten LLVM-to-JS compiler. We parallelize as much as possible Args: @@ -72,7 +72,7 @@ def emscript(configuration, infile, settings, outfile, libraries=[], compiler_en configuration.debug_log('emscript: ll=>js') - if jcache: shared.JCache.ensure() + if jcache: jcache.ensure() # Pre-scan ll and alter settings as necessary if DEBUG: t = time.time() @@ -141,13 +141,13 @@ def save_settings(): out = None if jcache: keys = [pre_input, settings_text, ','.join(libraries)] - shortkey = shared.JCache.get_shortkey(keys) + shortkey = jcache.get_shortkey(keys) if DEBUG_CACHE: print >>sys.stderr, 'shortkey', shortkey - out = shared.JCache.get(shortkey, keys) + out = jcache.get(shortkey, keys) if DEBUG_CACHE and not out: - dfpath = os.path.join(shared.TEMP_DIR, "ems_" + shortkey) + dfpath = os.path.join(configuration.TEMP_DIR, "ems_" + shortkey) dfp = open(dfpath, 'w') dfp.write(pre_input); dfp.write("\n\n========================== settings_text\n\n"); @@ -163,7 +163,7 @@ def save_settings(): out = shared.run_js(compiler, compiler_engine, [settings_file, pre_file, 'pre'] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) if jcache: if DEBUG: print >> sys.stderr, ' saving pre to jcache' - shared.JCache.set(shortkey, keys, out) + jcache.set(shortkey, keys, out) pre, forwarded_data = out.split('//FORWARDED_DATA:') forwarded_file = temp_files.get('.json').name open(forwarded_file, 'w').write(forwarded_data) @@ -195,8 +195,8 @@ def save_settings(): cached_outputs = [] def load_from_cache(chunk): keys = [settings_text, forwarded_data, chunk] - shortkey = shared.JCache.get_shortkey(keys) # TODO: share shortkeys with later code - out = shared.JCache.get(shortkey, keys) # this is relatively expensive (pickling?) + shortkey = jcache.get_shortkey(keys) # TODO: share shortkeys with later code + out = jcache.get(shortkey, keys) # this is relatively expensive (pickling?) if out: cached_outputs.append(out) return False @@ -236,8 +236,8 @@ def load_from_cache(chunk): for i in range(len(chunks)): chunk = chunks[i] keys = [settings_text, forwarded_data, chunk] - shortkey = shared.JCache.get_shortkey(keys) - shared.JCache.set(shortkey, keys, outputs[i]) + shortkey = jcache.get_shortkey(keys) + jcache.set(shortkey, keys, outputs[i]) if out and DEBUG and len(chunks) > 0: print >> sys.stderr, ' saving %d funcchunks to jcache' % len(chunks) if jcache: outputs += cached_outputs # TODO: preserve order @@ -497,7 +497,7 @@ def fix(m): outfile.close() -def main(args, compiler_engine=None): +def main(args, compiler_engine=None, jcache=None): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -573,7 +573,9 @@ def lookup(value): # Compile the assembly to Javascript. if settings.get('RELOOP'): shared.Building.ensure_relooper() - emscript(configuration, args.infile, settings, args.outfile, libraries, compiler_engine=compiler_engine) + emscript(configuration, args.infile, settings, args.outfile, libraries, + compiler_engine=compiler_engine, + jcache=jcache) def _main(environ): parser = optparse.OptionParser( @@ -630,12 +632,10 @@ def _main(environ): shared.RELOOPER = os.path.abspath(keywords.relooper) keywords.settings.append("RELOOPER=" + json.dumps(shared.RELOOPER)) - global jcache - jcache = keywords.jcache - temp_files.run_and_clean(lambda: main( keywords, - compiler_engine=os.path.abspath(keywords.compiler))) + compiler_engine=os.path.abspath(keywords.compiler), + jcache=shared.JCache if keywords.jcache else None)) if __name__ == '__main__': _main(environ=os.environ) From 1c08fd0c42a53edbad9b36c25997aa008f4b8384 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 16:01:59 -0800 Subject: [PATCH 300/326] Compile the relooper into the emscripten cache directory --- emscripten.py | 20 +++++++++++++++----- tools/shared.py | 41 +++++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/emscripten.py b/emscripten.py index e98775aab4dc7..a117a21686817 100755 --- a/emscripten.py +++ b/emscripten.py @@ -497,7 +497,7 @@ def fix(m): outfile.close() -def main(args, compiler_engine=None, jcache=None): +def main(args, compiler_engine, jcache, relooper): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -571,7 +571,11 @@ def lookup(value): libraries = args.libraries[0].split(',') if len(args.libraries) > 0 else [] # Compile the assembly to Javascript. - if settings.get('RELOOP'): shared.Building.ensure_relooper() + if settings.get('RELOOP'): + if not relooper: + relooper = shared.Cache.get_path('relooper.js') + settings.setdefault('RELOOPER', relooper) + shared.Building.ensure_relooper(relooper) emscript(configuration, args.infile, settings, args.outfile, libraries, compiler_engine=compiler_engine, @@ -597,6 +601,9 @@ def _main(environ): parser.add_option('-c', '--compiler', default=shared.COMPILER_ENGINE, help='Which JS engine to use to run the compiler; defaults to the one in ~/.emscripten.') + parser.add_option('--relooper', + default=None, + help='Which relooper file to use if RELOOP is enabled') parser.add_option('-s', '--setting', dest='settings', default=[], @@ -628,14 +635,17 @@ def _main(environ): keywords.infile = os.path.abspath(positional[0]) if isinstance(keywords.outfile, basestring): keywords.outfile = open(keywords.outfile, 'w') + if keywords.relooper: - shared.RELOOPER = os.path.abspath(keywords.relooper) - keywords.settings.append("RELOOPER=" + json.dumps(shared.RELOOPER)) + relooper = os.path.abspath(keywords.relooper) + else: + relooper = None # use the cache temp_files.run_and_clean(lambda: main( keywords, compiler_engine=os.path.abspath(keywords.compiler), - jcache=shared.JCache if keywords.jcache else None)) + jcache=shared.JCache if keywords.jcache else None, + relooper=relooper)) if __name__ == '__main__': _main(environ=os.environ) diff --git a/tools/shared.py b/tools/shared.py index d06b96b582ac3..a7ca639186f0e 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -289,7 +289,6 @@ def build_llvm_tool_path(tool): BINDINGS_GENERATOR = path_from_root('tools', 'bindings_generator.py') EXEC_LLVM = path_from_root('tools', 'exec_llvm.py') FILE_PACKAGER = path_from_root('tools', 'file_packager.py') -RELOOPER = path_from_root('src', 'relooper.js') # Temp dir. Create a random one, unless EMCC_DEBUG is set, in which case use TEMP_DIR/emscripten_temp @@ -994,6 +993,7 @@ def emscripten(filename, append_ext=True, extra_args=[]): os.environ['EMSCRIPTEN_SUPPRESS_USAGE_WARNING'] = '1' # Run Emscripten + Settings.RELOOPER = Cache.get_path('relooper.js') settings = Settings.serialize() compiler_output = timeout_run(Popen([PYTHON, EMSCRIPTEN, filename + ('.o.ll' if append_ext else ''), '-o', filename + '.o.js'] + settings + extra_args, stdout=PIPE), None, 'Compiling') #print compiler_output @@ -1187,25 +1187,26 @@ def is_bitcode(filename): # Make sure the relooper exists. If it does not, check out the relooper code and bootstrap it @staticmethod - def ensure_relooper(): - if os.path.exists(RELOOPER): return + def ensure_relooper(relooper): + if os.path.exists(relooper): return + Cache.ensure() curr = os.getcwd() try: ok = False print >> sys.stderr, '=======================================' print >> sys.stderr, 'bootstrapping relooper...' - Cache.ensure() os.chdir(path_from_root('src')) def make(opt_level): - raw = RELOOPER + '.raw.js' + raw = relooper + '.raw.js' Building.emcc(os.path.join('relooper', 'Relooper.cpp'), ['-I' + os.path.join('relooper'), '--post-js', os.path.join('relooper', 'emscripten', 'glue.js'), '-s', 'TOTAL_MEMORY=52428800', '-s', 'EXPORTED_FUNCTIONS=["_rl_set_output_buffer","_rl_make_output_buffer","_rl_new_block","_rl_delete_block","_rl_block_add_branch_to","_rl_new_relooper","_rl_delete_relooper","_rl_relooper_add_block","_rl_relooper_calculate","_rl_relooper_render", "_rl_set_asm_js_mode"]', '-s', 'DEFAULT_LIBRARY_FUNCS_TO_INCLUDE=["memcpy", "memset", "malloc", "free", "puts"]', + '-s', 'RELOOPER="' + relooper + '"', '-O' + str(opt_level), '--closure', '0'], raw) - f = open(RELOOPER, 'w') + f = open(relooper, 'w') f.write("// Relooper, (C) 2012 Alon Zakai, MIT license, https://github.com/kripken/Relooper\n") f.write("var Relooper = (function() {\n"); f.write(open(raw).read()) @@ -1225,7 +1226,7 @@ def make(opt_level): finally: os.chdir(curr) if not ok: - print >> sys.stderr, 'bootstrapping relooper failed. You may need to manually create src/relooper.js by compiling it, see src/relooper/emscripten' + print >> sys.stderr, 'bootstrapping relooper failed. You may need to manually create relooper.js by compiling it, see src/relooper/emscripten' 1/0 @staticmethod @@ -1260,15 +1261,15 @@ class Cache: if not dirname: dirname = os.path.expanduser(os.path.join('~', '.emscripten_cache')) - @staticmethod - def ensure(): - if not os.path.exists(Cache.dirname): - os.makedirs(Cache.dirname) + @classmethod + def ensure(self): + if not os.path.exists(self.dirname): + os.makedirs(self.dirname) - @staticmethod - def erase(): + @classmethod + def erase(self): try: - shutil.rmtree(Cache.dirname) + shutil.rmtree(self.dirname) except: pass try_delete(RELOOPER) @@ -1277,12 +1278,16 @@ def erase(): except: print >> sys.stderr, 'failed to save last clear time' + @classmethod + def get_path(self, shortname): + return os.path.join(self.dirname, shortname) + # Request a cached file. If it isn't in the cache, it will be created with # the given creator function - @staticmethod - def get(shortname, creator): - if not shortname.endswith('.bc'): shortname += '.bc' - cachename = os.path.join(Cache.dirname, shortname) + @classmethod + def get(self, shortname, creator, extension='.bc'): + if not shortname.endswith(extension): shortname += extension + cachename = os.path.join(self.dirname, shortname) if os.path.exists(cachename): return cachename Cache.ensure() From 2d9ed2565414ec926436817f47578055a99ce1d5 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 16:26:12 -0800 Subject: [PATCH 301/326] kill symlinks to coffeescript --- tools/eliminator/node_modules/.bin/cake | 1 - tools/eliminator/node_modules/.bin/coffee | 1 - 2 files changed, 2 deletions(-) delete mode 120000 tools/eliminator/node_modules/.bin/cake delete mode 120000 tools/eliminator/node_modules/.bin/coffee diff --git a/tools/eliminator/node_modules/.bin/cake b/tools/eliminator/node_modules/.bin/cake deleted file mode 120000 index d95f32af48adc..0000000000000 --- a/tools/eliminator/node_modules/.bin/cake +++ /dev/null @@ -1 +0,0 @@ -../coffee-script/bin/cake \ No newline at end of file diff --git a/tools/eliminator/node_modules/.bin/coffee b/tools/eliminator/node_modules/.bin/coffee deleted file mode 120000 index b57f275d7de58..0000000000000 --- a/tools/eliminator/node_modules/.bin/coffee +++ /dev/null @@ -1 +0,0 @@ -../coffee-script/bin/coffee \ No newline at end of file From 024cc62dd2e46c1e5dcbed79ff720d3dc0f16fe5 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 16:26:37 -0800 Subject: [PATCH 302/326] .gitignore tests/fake/ --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 31814a09b17cb..843b21b1ded87 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ src/relooper.js.raw.js src/relooper/*.o src/relooper/*.out +tests/fake/ \ No newline at end of file From d0423ad1cc42fd552472c94aaf26410e7a7b73b8 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 16:39:40 -0800 Subject: [PATCH 303/326] Move run_js into jsrun.py (work towards breaking emscripten.py's dependency on shared, which requires .emscripten at import time) --- emscripten.py | 7 ++++--- tools/jsrun.py | 27 +++++++++++++++++++++++++++ tools/shared.py | 31 ++++++------------------------- 3 files changed, 37 insertions(+), 28 deletions(-) create mode 100644 tools/jsrun.py diff --git a/emscripten.py b/emscripten.py index a117a21686817..3487d320ea670 100755 --- a/emscripten.py +++ b/emscripten.py @@ -12,6 +12,7 @@ import os, sys, json, optparse, subprocess, re, time, multiprocessing, functools from tools import shared +from tools import jsrun __rootpath__ = os.path.abspath(os.path.dirname(__file__)) def path_from_root(*pathelems): @@ -40,7 +41,7 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr ll = ''.join(funcs) + '\n' + meta funcs_file = temp_files.get('.func_%d.ll' % i).name open(funcs_file, 'w').write(ll) - out = shared.run_js( + out = jsrun.run_js( compiler, engine=compiler_engine, args=[settings_file, funcs_file, 'funcs', forwarded_file] + libraries, @@ -160,7 +161,7 @@ def save_settings(): if out and DEBUG: print >> sys.stderr, ' loading pre from jcache' if not out: open(pre_file, 'w').write(pre_input) - out = shared.run_js(compiler, compiler_engine, [settings_file, pre_file, 'pre'] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) + out = jsrun.run_js(compiler, compiler_engine, [settings_file, pre_file, 'pre'] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) if jcache: if DEBUG: print >> sys.stderr, ' saving pre to jcache' jcache.set(shortkey, keys, out) @@ -312,7 +313,7 @@ def blockaddrsize(js): if DEBUG: t = time.time() post_file = temp_files.get('.post.ll').name open(post_file, 'w').write('\n') # no input, just processing of forwarded data - out = shared.run_js(compiler, compiler_engine, [settings_file, post_file, 'post', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) + out = jsrun.run_js(compiler, compiler_engine, [settings_file, post_file, 'post', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) post, last_forwarded_data = out.split('//FORWARDED_DATA:') # if this fails, perhaps the process failed prior to printing forwarded data? last_forwarded_json = json.loads(last_forwarded_data) diff --git a/tools/jsrun.py b/tools/jsrun.py new file mode 100644 index 0000000000000..27c5535058cbd --- /dev/null +++ b/tools/jsrun.py @@ -0,0 +1,27 @@ +import time +from subprocess import Popen, PIPE, STDOUT + +def timeout_run(proc, timeout, note='unnamed process', full_output=False): + start = time.time() + if timeout is not None: + while time.time() - start < timeout and proc.poll() is None: + time.sleep(0.1) + if proc.poll() is None: + proc.kill() # XXX bug: killing emscripten.py does not kill it's child process! + raise Exception("Timed out: " + note) + out = proc.communicate() + return '\n'.join(out) if full_output else out[0] + +def run_js(filename, engine=None, args=[], check_timeout=False, stdout=PIPE, stderr=None, cwd=None, full_output=False): + if type(engine) is not list: + engine = [engine] + command = engine + [filename] + (['--'] if 'd8' in engine[0] else []) + args + return timeout_run( + Popen( + command, + stdout=stdout, + stderr=stderr, + cwd=cwd), + 15*60 if check_timeout else None, + 'Execution', + full_output=full_output) diff --git a/tools/shared.py b/tools/shared.py index a7ca639186f0e..afb80abf95d2a 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1,6 +1,7 @@ import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib, re from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp +from . import jsrun def listify(x): if type(x) is not list: return [x] @@ -481,30 +482,10 @@ def check_engine(engine): print 'Checking JS engine %s failed. Check %s. Details: %s' % (str(engine), EM_CONFIG, str(e)) return False -def timeout_run(proc, timeout, note='unnamed process', full_output=False): - start = time.time() - if timeout is not None: - while time.time() - start < timeout and proc.poll() is None: - time.sleep(0.1) - if proc.poll() is None: - proc.kill() # XXX bug: killing emscripten.py does not kill it's child process! - raise Exception("Timed out: " + note) - out = proc.communicate() - return '\n'.join(out) if full_output else out[0] - -def run_js(filename, engine=None, args=[], check_timeout=False, stdout=PIPE, stderr=None, cwd=None, full_output=False): - if engine is None: engine = JS_ENGINES[0] - engine = listify(engine) - command = engine + [filename] + (['--'] if 'd8' in engine[0] else []) + args - return timeout_run( - Popen( - command, - stdout=stdout, - stderr=stderr, - cwd=cwd), - 15*60 if check_timeout else None, - 'Execution', - full_output=full_output) +def run_js(filename, engine=None, *args, **kw): + if engine is None: + engine = JS_ENGINES[0] + return jsrun.run_js(filename, engine, *args, **kw) def to_cc(cxx): # By default, LLVM_GCC and CLANG are really the C++ versions. This gets an explicit C version @@ -995,7 +976,7 @@ def emscripten(filename, append_ext=True, extra_args=[]): # Run Emscripten Settings.RELOOPER = Cache.get_path('relooper.js') settings = Settings.serialize() - compiler_output = timeout_run(Popen([PYTHON, EMSCRIPTEN, filename + ('.o.ll' if append_ext else ''), '-o', filename + '.o.js'] + settings + extra_args, stdout=PIPE), None, 'Compiling') + compiler_output = jsrun.timeout_run(Popen([PYTHON, EMSCRIPTEN, filename + ('.o.ll' if append_ext else ''), '-o', filename + '.o.js'] + settings + extra_args, stdout=PIPE), None, 'Compiling') #print compiler_output # Detect compilation crashes and errors From 8e63a929d4fe38d8929bc383a433199cba00555d Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 16:43:29 -0800 Subject: [PATCH 304/326] Work towards making JCache an object --- tools/shared.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/tools/shared.py b/tools/shared.py index afb80abf95d2a..5383979c6efc4 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1281,11 +1281,11 @@ def get(self, shortname, creator, extension='.bc'): class JCache: dirname = os.path.join(Cache.dirname, 'jcache') - @staticmethod - def ensure(): + @classmethod + def ensure(self): Cache.ensure() - if not os.path.exists(JCache.dirname): - os.makedirs(JCache.dirname) + if not os.path.exists(self.dirname): + os.makedirs(self.dirname) @staticmethod def get_shortkey(keys): @@ -1297,15 +1297,15 @@ def get_shortkey(keys): ret += hashlib.md5(key).hexdigest() return ret - @staticmethod - def get_cachename(shortkey): - return os.path.join(JCache.dirname, shortkey) + @classmethod + def get_cachename(self, shortkey): + return os.path.join(self.dirname, shortkey) # Returns a cached value, if it exists. Make sure the full key matches - @staticmethod - def get(shortkey, keys): + @classmethod + def get(self, shortkey, keys): if DEBUG_CACHE: print >> sys.stderr, 'jcache get?', shortkey - cachename = JCache.get_cachename(shortkey) + cachename = self.get_cachename(shortkey) if not os.path.exists(cachename): if DEBUG_CACHE: print >> sys.stderr, 'jcache none at all' return @@ -1329,10 +1329,10 @@ def get(shortkey, keys): return data[1] # Sets the cached value for a key (from get_key) - @staticmethod - def set(shortkey, keys, value): + @classmethod + def set(self, shortkey, keys, value): if DEBUG_CACHE: print >> sys.stderr, 'save to cache', shortkey - cachename = JCache.get_cachename(shortkey) + cachename = self.get_cachename(shortkey) try: f = open(cachename, 'w') f.write(zlib.compress(cPickle.dumps([keys, value]))) @@ -1353,11 +1353,11 @@ def set(shortkey, keys, value): # generate the same chunks, barring big differences in function sizes that # violate our chunk size guideline. If caching is not used, chunking_file # should be None - @staticmethod - def chunkify(funcs, chunk_size, chunking_file): + @classmethod + def chunkify(self, funcs, chunk_size, chunking_file): previous_mapping = None if chunking_file: - chunking_file = JCache.get_cachename(chunking_file) + chunking_file = self.get_cachename(chunking_file) if os.path.exists(chunking_file): try: previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in From a804dfb628279243de1e82504b99d386eb2d2a93 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 17:16:12 -0800 Subject: [PATCH 305/326] Make chunkify a free function --- emscripten.py | 4 +- tools/js_optimizer.py | 2 +- tools/shared.py | 220 ++++++++++++++++++++++-------------------- 3 files changed, 122 insertions(+), 104 deletions(-) diff --git a/emscripten.py b/emscripten.py index 3487d320ea670..869e512d3b421 100755 --- a/emscripten.py +++ b/emscripten.py @@ -189,7 +189,9 @@ def save_settings(): settings['EXPORTED_FUNCTIONS'] = forwarded_json['EXPORTED_FUNCTIONS'] save_settings() - chunks = shared.JCache.chunkify(funcs, chunk_size, 'emscript_files' if jcache else None) + chunks = shared.chunkify( + funcs, chunk_size, + jcache.get_cachename('emscript_files') if jcache else None) if jcache: # load chunks from cache where we can # TODO: ignore small chunks diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index 533242b218f2b..f2d3b7dbcecd0 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -106,7 +106,7 @@ def run_on_js(filename, passes, js_engine, jcache): intended_num_chunks = int(round(cores * NUM_CHUNKS_PER_CORE)) chunk_size = min(MAX_CHUNK_SIZE, max(MIN_CHUNK_SIZE, total_size / intended_num_chunks)) - chunks = shared.JCache.chunkify(funcs, chunk_size, 'jsopt' if jcache else None) + chunks = shared.chunkify(funcs, chunk_size, jcache.get_cachename('jsopt') if jcache else None) if jcache: # load chunks from cache where we can # TODO: ignore small chunks diff --git a/tools/shared.py b/tools/shared.py index 5383979c6efc4..35f45728afada 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1249,15 +1249,7 @@ def ensure(self): @classmethod def erase(self): - try: - shutil.rmtree(self.dirname) - except: - pass - try_delete(RELOOPER) - try: - open(Cache.dirname + '__last_clear', 'w').write('last clear: ' + time.asctime() + '\n') - except: - print >> sys.stderr, 'failed to save last clear time' + shutil.rmtree(self.dirname, ignore_errors=True) @classmethod def get_path(self, shortname): @@ -1345,100 +1337,124 @@ def set(self, shortkey, keys, value): # open(cachename + '.key' + str(i), 'w').write(keys[i]) # open(cachename + '.value', 'w').write(value) - # Given a set of functions of form (ident, text), and a preferred chunk size, - # generates a set of chunks for parallel processing and caching. - # It is very important to generate similar chunks in incremental builds, in - # order to maximize the chance of cache hits. To achieve that, we save the - # chunking used in the previous compilation of this phase, and we try to - # generate the same chunks, barring big differences in function sizes that - # violate our chunk size guideline. If caching is not used, chunking_file - # should be None - @classmethod - def chunkify(self, funcs, chunk_size, chunking_file): - previous_mapping = None - if chunking_file: - chunking_file = self.get_cachename(chunking_file) - if os.path.exists(chunking_file): - try: - previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in - if DEBUG: print >> sys.stderr, 'jscache previous mapping of size %d loaded from %s' % (len(previous_mapping), chunking_file) - except Exception, e: - print >> sys.stderr, 'Failed to load and unpickle previous chunking file at %s: ' % chunking_file, e - else: - print >> sys.stderr, 'Previous chunking file not found at %s' % chunking_file - chunks = [] - if previous_mapping: - # initialize with previous chunking - news = [] - for func in funcs: - ident, data = func - assert ident, 'need names for jcache chunking' - if not ident in previous_mapping: - news.append(func) - else: - n = previous_mapping[ident] - while n >= len(chunks): chunks.append([]) - chunks[n].append(func) - if DEBUG: print >> sys.stderr, 'jscache not in previous chunking', len(news) - # add news and adjust for new sizes - spilled = news - for i in range(len(chunks)): - chunk = chunks[i] - size = sum([len(func[1]) for func in chunk]) - #if DEBUG: print >> sys.stderr, 'need spilling?', i, size, len(chunk), 'vs', chunk_size, 1.5*chunk_size - while size > 1.5*chunk_size and len(chunk) > 1: - spill = chunk.pop() - spilled.append(spill) - size -= len(spill[1]) - #if DEBUG: print >> sys.stderr, 'jscache new + spilled', len(spilled) - for chunk in chunks: - size = sum([len(func[1]) for func in chunk]) - while size < 0.66*chunk_size and len(spilled) > 0: - spill = spilled.pop() - chunk.append(spill) - size += len(spill[1]) - chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them - funcs = spilled # we will allocate these into chunks as if they were normal inputs - #if DEBUG: print >> sys.stderr, 'leftover spills', len(spilled) - # initialize reasonably, the rest of the funcs we need to split out - curr = [] - total_size = 0 - for i in range(len(funcs)): - func = funcs[i] - curr_size = len(func[1]) - if total_size + curr_size < chunk_size: - curr.append(func) - total_size += curr_size +# Given a set of functions of form (ident, text), and a preferred chunk size, +# generates a set of chunks for parallel processing and caching. +# It is very important to generate similar chunks in incremental builds, in +# order to maximize the chance of cache hits. To achieve that, we save the +# chunking used in the previous compilation of this phase, and we try to +# generate the same chunks, barring big differences in function sizes that +# violate our chunk size guideline. If caching is not used, chunking_file +# should be None +@classmethod +def chunkify(funcs, chunk_size, chunking_file): + previous_mapping = None + if chunking_file: + if os.path.exists(chunking_file): + try: + previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in + if DEBUG: print >> sys.stderr, 'jscache previous mapping of size %d loaded from %s' % (len(previous_mapping), chunking_file) + except Exception, e: + print >> sys.stderr, 'Failed to load and unpickle previous chunking file at %s: ' % chunking_file, e + else: + print >> sys.stderr, 'Previous chunking file not found at %s' % chunking_file + chunks = [] + if previous_mapping: + # initialize with previous chunking + news = [] + for func in funcs: + ident, data = func + assert ident, 'need names for jcache chunking' + if not ident in previous_mapping: + news.append(func) else: - chunks.append(curr) - curr = [func] - total_size = curr_size - if curr: - chunks.append(curr) - curr = None - if chunking_file: - # sort within each chunk, to keep the order identical - for chunk in chunks: - chunk.sort(key=lambda func: func[0]) - # save new mapping info - new_mapping = {} - for i in range(len(chunks)): - chunk = chunks[i] - for ident, data in chunk: - assert ident not in new_mapping, 'cannot have duplicate names in jcache chunking' - new_mapping[ident] = i - cPickle.Pickler(open(chunking_file, 'wb')).dump(new_mapping) - if DEBUG: print >> sys.stderr, 'jscache mapping of size %d saved to %s' % (len(new_mapping), chunking_file) - #if DEBUG: - # for i in range(len(chunks)): - # chunk = chunks[i] - # print >> sys.stderr, 'final chunk', i, len(chunk) - # print >> sys.stderr, 'new mapping:', new_mapping - # if previous_mapping: - # for ident in set(previous_mapping.keys() + new_mapping.keys()): - # if previous_mapping.get(ident) != new_mapping.get(ident): - # print >> sys.stderr, 'mapping inconsistency', ident, previous_mapping.get(ident), new_mapping.get(ident) - return [''.join([func[1] for func in chunk]) for chunk in chunks] # remove function names + n = previous_mapping[ident] + while n >= len(chunks): chunks.append([]) + chunks[n].append(func) + if DEBUG: print >> sys.stderr, 'jscache not in previous chunking', len(news) + # add news and adjust for new sizes + spilled = news + for i in range(len(chunks)): + chunk = chunks[i] + size = sum([len(func[1]) for func in chunk]) + #if DEBUG: print >> sys.stderr, 'need spilling?', i, size, len(chunk), 'vs', chunk_size, 1.5*chunk_size + while size > 1.5*chunk_size and len(chunk) > 1: + spill = chunk.pop() + spilled.append(spill) + size -= len(spill[1]) + #if DEBUG: print >> sys.stderr, 'jscache new + spilled', len(spilled) + for chunk in chunks: + size = sum([len(func[1]) for func in chunk]) + while size < 0.66*chunk_size and len(spilled) > 0: + spill = spilled.pop() + chunk.append(spill) + size += len(spill[1]) + chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them + funcs = spilled # we will allocate these into chunks as if they were normal inputs + #if DEBUG: print >> sys.stderr, 'leftover spills', len(spilled) + # initialize reasonably, the rest of the funcs we need to split out + curr = [] + total_size = 0 + for i in range(len(funcs)): + func = funcs[i] + curr_size = len(func[1]) + if total_size + curr_size < chunk_size: + curr.append(func) + total_size += curr_size + else: + n = previous_mapping[ident] + while n >= len(chunks): chunks.append([]) + chunks[n].append(func) + # add news and adjust for new sizes + spilled = news + for chunk in chunks: + size = sum([len(func[1]) for func in chunk]) + while size > 1.5*chunk_size and len(chunk) > 0: + spill = chunk.pop() + spilled.append(spill) + size -= len(spill[1]) + for chunk in chunks: + size = sum([len(func[1]) for func in chunk]) + while size < 0.66*chunk_size and len(spilled) > 0: + spill = spilled.pop() + chunk.append(spill) + size += len(spill[1]) + chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them + funcs = spilled # we will allocate these into chunks as if they were normal inputs +# initialize reasonably, the rest of the funcs we need to split out +curr = [] +total_size = 0 +for i in range(len(funcs)): + func = funcs[i] + curr_size = len(func[1]) + if total_size + curr_size < chunk_size: + curr.append(func) + total_size += curr_size + else: + chunks.append(curr) + curr = None + if chunking_file: + # sort within each chunk, to keep the order identical + for chunk in chunks: + chunk.sort(key=lambda func: func[0]) + # save new mapping info + new_mapping = {} + for i in range(len(chunks)): + chunk = chunks[i] + for ident, data in chunk: + assert ident not in new_mapping, 'cannot have duplicate names in jcache chunking' + new_mapping[ident] = i + cPickle.Pickler(open(chunking_file, 'wb')).dump(new_mapping) + if DEBUG: print >> sys.stderr, 'jscache mapping of size %d saved to %s' % (len(new_mapping), chunking_file) + #if DEBUG: + # for i in range(len(chunks)): + # chunk = chunks[i] + # print >> sys.stderr, 'final chunk', i, len(chunk) + # print >> sys.stderr, 'new mapping:', new_mapping + # if previous_mapping: + # for ident in set(previous_mapping.keys() + new_mapping.keys()): + # if previous_mapping.get(ident) != new_mapping.get(ident): + # print >> sys.stderr, 'mapping inconsistency', ident, previous_mapping.get(ident), new_mapping.get(ident) + return [''.join([func[1] for func in chunk]) for chunk in chunks] # remove function names class JS: @staticmethod From c919d824ac44031f00f925b5c44e86ac6c393292 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 17:50:33 -0800 Subject: [PATCH 306/326] Split Cache and JCache into objects and move them into cache.py so they can be loaded without shared.py --- emscripten.py | 1 + tools/cache.py | 206 ++++++++++++++++++++++++++++++++++++++++++++ tools/shared.py | 225 ++---------------------------------------------- 3 files changed, 212 insertions(+), 220 deletions(-) create mode 100644 tools/cache.py diff --git a/emscripten.py b/emscripten.py index 869e512d3b421..4f3f2a7771a7a 100755 --- a/emscripten.py +++ b/emscripten.py @@ -13,6 +13,7 @@ from tools import shared from tools import jsrun +from tools import cache __rootpath__ = os.path.abspath(os.path.dirname(__file__)) def path_from_root(*pathelems): diff --git a/tools/cache.py b/tools/cache.py new file mode 100644 index 0000000000000..78a11ba08eb1a --- /dev/null +++ b/tools/cache.py @@ -0,0 +1,206 @@ +import os.path, shutil, hashlib, cPickle + +# Permanent cache for dlmalloc and stdlibc++ +class Cache: + def __init__(self, dirname=None): + if dirname is None: + dirname = os.environ.get('EM_CACHE') + if not dirname: + dirname = os.path.expanduser(os.path.join('~', '.emscripten_cache')) + self.dirname = dirname + + def ensure(self): + if not os.path.exists(self.dirname): + os.makedirs(self.dirname) + + def erase(self): + shutil.rmtree(self.dirname, ignore_errors=True) + + def get_path(self, shortname): + return os.path.join(self.dirname, shortname) + + # Request a cached file. If it isn't in the cache, it will be created with + # the given creator function + def get(self, shortname, creator, extension='.bc'): + if not shortname.endswith(extension): shortname += extension + cachename = os.path.join(self.dirname, shortname) + if os.path.exists(cachename): + return cachename + self.ensure() + shutil.copyfile(creator(), cachename) + return cachename + +# JS-specific cache. We cache the results of compilation and optimization, +# so that in incremental builds we can just load from cache. +# We cache reasonably-large-sized chunks +class JCache: + def __init__(self, cache): + self.cache = cache + self.dirname = os.path.join(cache.dirname, 'jcache') + + def ensure(self): + self.cache.ensure() + if not os.path.exists(self.dirname): + os.makedirs(self.dirname) + + def get_shortkey(self, keys): + if type(keys) not in [list, tuple]: + keys = [keys] + ret = '' + for key in keys: + assert type(key) == str + ret += hashlib.md5(key).hexdigest() + return ret + + def get_cachename(self, shortkey): + return os.path.join(self.dirname, shortkey) + + # Returns a cached value, if it exists. Make sure the full key matches + def get(self, shortkey, keys): + #if DEBUG: print >> sys.stderr, 'jcache get?', shortkey + cachename = self.get_cachename(shortkey) + if not os.path.exists(cachename): + #if DEBUG: print >> sys.stderr, 'jcache none at all' + return + data = cPickle.Unpickler(open(cachename, 'rb')).load() + if len(data) != 2: + #if DEBUG: print >> sys.stderr, 'jcache error in get' + return + oldkeys = data[0] + if len(oldkeys) != len(keys): + #if DEBUG: print >> sys.stderr, 'jcache collision (a)' + return + for i in range(len(oldkeys)): + if oldkeys[i] != keys[i]: + #if DEBUG: print >> sys.stderr, 'jcache collision (b)' + return + #if DEBUG: print >> sys.stderr, 'jcache win' + return data[1] + + # Sets the cached value for a key (from get_key) + def set(self, shortkey, keys, value): + cachename = self.get_cachename(shortkey) + cPickle.Pickler(open(cachename, 'wb')).dump([keys, value]) + #if DEBUG: + # for i in range(len(keys)): + # open(cachename + '.key' + str(i), 'w').write(keys[i]) + # open(cachename + '.value', 'w').write(value) + +# Given a set of functions of form (ident, text), and a preferred chunk size, +# generates a set of chunks for parallel processing and caching. +# It is very important to generate similar chunks in incremental builds, in +# order to maximize the chance of cache hits. To achieve that, we save the +# chunking used in the previous compilation of this phase, and we try to +# generate the same chunks, barring big differences in function sizes that +# violate our chunk size guideline. If caching is not used, chunking_file +# should be None +@classmethod +def chunkify(funcs, chunk_size, chunking_file): + previous_mapping = None + if chunking_file: + if os.path.exists(chunking_file): + try: + previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in + if DEBUG: print >> sys.stderr, 'jscache previous mapping of size %d loaded from %s' % (len(previous_mapping), chunking_file) + except Exception, e: + print >> sys.stderr, 'Failed to load and unpickle previous chunking file at %s: ' % chunking_file, e + else: + print >> sys.stderr, 'Previous chunking file not found at %s' % chunking_file + chunks = [] + if previous_mapping: + # initialize with previous chunking + news = [] + for func in funcs: + ident, data = func + assert ident, 'need names for jcache chunking' + if not ident in previous_mapping: + news.append(func) + else: + n = previous_mapping[ident] + while n >= len(chunks): chunks.append([]) + chunks[n].append(func) + if DEBUG: print >> sys.stderr, 'jscache not in previous chunking', len(news) + # add news and adjust for new sizes + spilled = news + for i in range(len(chunks)): + chunk = chunks[i] + size = sum([len(func[1]) for func in chunk]) + #if DEBUG: print >> sys.stderr, 'need spilling?', i, size, len(chunk), 'vs', chunk_size, 1.5*chunk_size + while size > 1.5*chunk_size and len(chunk) > 1: + spill = chunk.pop() + spilled.append(spill) + size -= len(spill[1]) + #if DEBUG: print >> sys.stderr, 'jscache new + spilled', len(spilled) + for chunk in chunks: + size = sum([len(func[1]) for func in chunk]) + while size < 0.66*chunk_size and len(spilled) > 0: + spill = spilled.pop() + chunk.append(spill) + size += len(spill[1]) + chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them + funcs = spilled # we will allocate these into chunks as if they were normal inputs + #if DEBUG: print >> sys.stderr, 'leftover spills', len(spilled) + # initialize reasonably, the rest of the funcs we need to split out + curr = [] + total_size = 0 + for i in range(len(funcs)): + func = funcs[i] + curr_size = len(func[1]) + if total_size + curr_size < chunk_size: + curr.append(func) + total_size += curr_size + else: + n = previous_mapping[ident] + while n >= len(chunks): chunks.append([]) + chunks[n].append(func) + # add news and adjust for new sizes + spilled = news + for chunk in chunks: + size = sum([len(func[1]) for func in chunk]) + while size > 1.5*chunk_size and len(chunk) > 0: + spill = chunk.pop() + spilled.append(spill) + size -= len(spill[1]) + for chunk in chunks: + size = sum([len(func[1]) for func in chunk]) + while size < 0.66*chunk_size and len(spilled) > 0: + spill = spilled.pop() + chunk.append(spill) + size += len(spill[1]) + chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them + funcs = spilled # we will allocate these into chunks as if they were normal inputs +# initialize reasonably, the rest of the funcs we need to split out +curr = [] +total_size = 0 +for i in range(len(funcs)): + func = funcs[i] + curr_size = len(func[1]) + if total_size + curr_size < chunk_size: + curr.append(func) + total_size += curr_size + else: + chunks.append(curr) + curr = None + if chunking_file: + # sort within each chunk, to keep the order identical + for chunk in chunks: + chunk.sort(key=lambda func: func[0]) + # save new mapping info + new_mapping = {} + for i in range(len(chunks)): + chunk = chunks[i] + for ident, data in chunk: + assert ident not in new_mapping, 'cannot have duplicate names in jcache chunking' + new_mapping[ident] = i + cPickle.Pickler(open(chunking_file, 'wb')).dump(new_mapping) + if DEBUG: print >> sys.stderr, 'jscache mapping of size %d saved to %s' % (len(new_mapping), chunking_file) + #if DEBUG: + # for i in range(len(chunks)): + # chunk = chunks[i] + # print >> sys.stderr, 'final chunk', i, len(chunk) + # print >> sys.stderr, 'new mapping:', new_mapping + # if previous_mapping: + # for ident in set(previous_mapping.keys() + new_mapping.keys()): + # if previous_mapping.get(ident) != new_mapping.get(ident): + # print >> sys.stderr, 'mapping inconsistency', ident, previous_mapping.get(ident), new_mapping.get(ident) + return [''.join([func[1] for func in chunk]) for chunk in chunks] # remove function names diff --git a/tools/shared.py b/tools/shared.py index 35f45728afada..f1d133d7f28fa 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1,7 +1,7 @@ import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib, re from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp -from . import jsrun +from . import jsrun, cache def listify(x): if type(x) is not list: return [x] @@ -1236,225 +1236,10 @@ def fix(m): open(outfile, 'w').write(src) return outfile -# Permanent cache for dlmalloc and stdlibc++ -class Cache: - dirname = os.environ.get('EM_CACHE') - if not dirname: - dirname = os.path.expanduser(os.path.join('~', '.emscripten_cache')) - - @classmethod - def ensure(self): - if not os.path.exists(self.dirname): - os.makedirs(self.dirname) - - @classmethod - def erase(self): - shutil.rmtree(self.dirname, ignore_errors=True) - - @classmethod - def get_path(self, shortname): - return os.path.join(self.dirname, shortname) - - # Request a cached file. If it isn't in the cache, it will be created with - # the given creator function - @classmethod - def get(self, shortname, creator, extension='.bc'): - if not shortname.endswith(extension): shortname += extension - cachename = os.path.join(self.dirname, shortname) - if os.path.exists(cachename): - return cachename - Cache.ensure() - shutil.copyfile(creator(), cachename) - return cachename - -# JS-specific cache. We cache the results of compilation and optimization, -# so that in incremental builds we can just load from cache. -# We cache reasonably-large-sized chunks -class JCache: - dirname = os.path.join(Cache.dirname, 'jcache') - - @classmethod - def ensure(self): - Cache.ensure() - if not os.path.exists(self.dirname): - os.makedirs(self.dirname) - - @staticmethod - def get_shortkey(keys): - if type(keys) not in [list, tuple]: - keys = [keys] - ret = '' - for key in keys: - assert type(key) == str - ret += hashlib.md5(key).hexdigest() - return ret - - @classmethod - def get_cachename(self, shortkey): - return os.path.join(self.dirname, shortkey) - - # Returns a cached value, if it exists. Make sure the full key matches - @classmethod - def get(self, shortkey, keys): - if DEBUG_CACHE: print >> sys.stderr, 'jcache get?', shortkey - cachename = self.get_cachename(shortkey) - if not os.path.exists(cachename): - if DEBUG_CACHE: print >> sys.stderr, 'jcache none at all' - return - try: - data = cPickle.loads(zlib.decompress(open(cachename).read())) - except Exception, e: - if DEBUG_CACHE: print >> sys.stderr, 'jcache decompress/unpickle error:', e - return - if len(data) != 2: - if DEBUG_CACHE: print >> sys.stderr, 'jcache error in get' - return - oldkeys = data[0] - if len(oldkeys) != len(keys): - if DEBUG_CACHE: print >> sys.stderr, 'jcache collision (a)' - return - for i in range(len(oldkeys)): - if oldkeys[i] != keys[i]: - if DEBUG_CACHE: print >> sys.stderr, 'jcache collision (b)' - return - if DEBUG_CACHE: print >> sys.stderr, 'jcache win' - return data[1] - - # Sets the cached value for a key (from get_key) - @classmethod - def set(self, shortkey, keys, value): - if DEBUG_CACHE: print >> sys.stderr, 'save to cache', shortkey - cachename = self.get_cachename(shortkey) - try: - f = open(cachename, 'w') - f.write(zlib.compress(cPickle.dumps([keys, value]))) - f.close() - except Exception, e: - if DEBUG_CACHE: print >> sys.stderr, 'jcache compress/pickle error:', e - return - #if DEBUG: - # for i in range(len(keys)): - # open(cachename + '.key' + str(i), 'w').write(keys[i]) - # open(cachename + '.value', 'w').write(value) - -# Given a set of functions of form (ident, text), and a preferred chunk size, -# generates a set of chunks for parallel processing and caching. -# It is very important to generate similar chunks in incremental builds, in -# order to maximize the chance of cache hits. To achieve that, we save the -# chunking used in the previous compilation of this phase, and we try to -# generate the same chunks, barring big differences in function sizes that -# violate our chunk size guideline. If caching is not used, chunking_file -# should be None -@classmethod -def chunkify(funcs, chunk_size, chunking_file): - previous_mapping = None - if chunking_file: - if os.path.exists(chunking_file): - try: - previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in - if DEBUG: print >> sys.stderr, 'jscache previous mapping of size %d loaded from %s' % (len(previous_mapping), chunking_file) - except Exception, e: - print >> sys.stderr, 'Failed to load and unpickle previous chunking file at %s: ' % chunking_file, e - else: - print >> sys.stderr, 'Previous chunking file not found at %s' % chunking_file - chunks = [] - if previous_mapping: - # initialize with previous chunking - news = [] - for func in funcs: - ident, data = func - assert ident, 'need names for jcache chunking' - if not ident in previous_mapping: - news.append(func) - else: - n = previous_mapping[ident] - while n >= len(chunks): chunks.append([]) - chunks[n].append(func) - if DEBUG: print >> sys.stderr, 'jscache not in previous chunking', len(news) - # add news and adjust for new sizes - spilled = news - for i in range(len(chunks)): - chunk = chunks[i] - size = sum([len(func[1]) for func in chunk]) - #if DEBUG: print >> sys.stderr, 'need spilling?', i, size, len(chunk), 'vs', chunk_size, 1.5*chunk_size - while size > 1.5*chunk_size and len(chunk) > 1: - spill = chunk.pop() - spilled.append(spill) - size -= len(spill[1]) - #if DEBUG: print >> sys.stderr, 'jscache new + spilled', len(spilled) - for chunk in chunks: - size = sum([len(func[1]) for func in chunk]) - while size < 0.66*chunk_size and len(spilled) > 0: - spill = spilled.pop() - chunk.append(spill) - size += len(spill[1]) - chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them - funcs = spilled # we will allocate these into chunks as if they were normal inputs - #if DEBUG: print >> sys.stderr, 'leftover spills', len(spilled) - # initialize reasonably, the rest of the funcs we need to split out - curr = [] - total_size = 0 - for i in range(len(funcs)): - func = funcs[i] - curr_size = len(func[1]) - if total_size + curr_size < chunk_size: - curr.append(func) - total_size += curr_size - else: - n = previous_mapping[ident] - while n >= len(chunks): chunks.append([]) - chunks[n].append(func) - # add news and adjust for new sizes - spilled = news - for chunk in chunks: - size = sum([len(func[1]) for func in chunk]) - while size > 1.5*chunk_size and len(chunk) > 0: - spill = chunk.pop() - spilled.append(spill) - size -= len(spill[1]) - for chunk in chunks: - size = sum([len(func[1]) for func in chunk]) - while size < 0.66*chunk_size and len(spilled) > 0: - spill = spilled.pop() - chunk.append(spill) - size += len(spill[1]) - chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them - funcs = spilled # we will allocate these into chunks as if they were normal inputs -# initialize reasonably, the rest of the funcs we need to split out -curr = [] -total_size = 0 -for i in range(len(funcs)): - func = funcs[i] - curr_size = len(func[1]) - if total_size + curr_size < chunk_size: - curr.append(func) - total_size += curr_size - else: - chunks.append(curr) - curr = None - if chunking_file: - # sort within each chunk, to keep the order identical - for chunk in chunks: - chunk.sort(key=lambda func: func[0]) - # save new mapping info - new_mapping = {} - for i in range(len(chunks)): - chunk = chunks[i] - for ident, data in chunk: - assert ident not in new_mapping, 'cannot have duplicate names in jcache chunking' - new_mapping[ident] = i - cPickle.Pickler(open(chunking_file, 'wb')).dump(new_mapping) - if DEBUG: print >> sys.stderr, 'jscache mapping of size %d saved to %s' % (len(new_mapping), chunking_file) - #if DEBUG: - # for i in range(len(chunks)): - # chunk = chunks[i] - # print >> sys.stderr, 'final chunk', i, len(chunk) - # print >> sys.stderr, 'new mapping:', new_mapping - # if previous_mapping: - # for ident in set(previous_mapping.keys() + new_mapping.keys()): - # if previous_mapping.get(ident) != new_mapping.get(ident): - # print >> sys.stderr, 'mapping inconsistency', ident, previous_mapping.get(ident), new_mapping.get(ident) - return [''.join([func[1] for func in chunk]) for chunk in chunks] # remove function names +# compatibility with existing emcc, etc. scripts +Cache = cache.Cache() +JCache = cache.JCache(Cache) +chunkify = cache.chunkify class JS: @staticmethod From 14833940f45cfea351e571f486d68c685cb9239f Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 30 Jan 2013 18:11:51 -0800 Subject: [PATCH 307/326] Have emscripten.py access the cache module and instantiate objects to break another dependency on shared.py --- emscripten.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/emscripten.py b/emscripten.py index 4f3f2a7771a7a..26a018aec372e 100755 --- a/emscripten.py +++ b/emscripten.py @@ -11,9 +11,7 @@ import os, sys, json, optparse, subprocess, re, time, multiprocessing, functools -from tools import shared -from tools import jsrun -from tools import cache +from tools import shared, jsrun, cache as cache_module __rootpath__ = os.path.abspath(os.path.dirname(__file__)) def path_from_root(*pathelems): @@ -190,7 +188,7 @@ def save_settings(): settings['EXPORTED_FUNCTIONS'] = forwarded_json['EXPORTED_FUNCTIONS'] save_settings() - chunks = shared.chunkify( + chunks = cache_module.chunkify( funcs, chunk_size, jcache.get_cachename('emscript_files') if jcache else None) @@ -501,7 +499,7 @@ def fix(m): outfile.close() -def main(args, compiler_engine, jcache, relooper): +def main(args, compiler_engine, cache, jcache, relooper): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -577,7 +575,7 @@ def lookup(value): # Compile the assembly to Javascript. if settings.get('RELOOP'): if not relooper: - relooper = shared.Cache.get_path('relooper.js') + relooper = cache.get_path('relooper.js') settings.setdefault('RELOOPER', relooper) shared.Building.ensure_relooper(relooper) @@ -645,10 +643,12 @@ def _main(environ): else: relooper = None # use the cache + cache = cache_module.Cache() temp_files.run_and_clean(lambda: main( keywords, compiler_engine=os.path.abspath(keywords.compiler), - jcache=shared.JCache if keywords.jcache else None, + cache=cache, + jcache=cache_module.JCache(cache) if keywords.jcache else None, relooper=relooper)) if __name__ == '__main__': From 730294d0d106a4cf2d40bad94bba33f53d944ebc Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Thu, 31 Jan 2013 17:48:49 -0800 Subject: [PATCH 308/326] Move TEMP_DIR into the Configuration object. --- emscripten.py | 8 ++++---- tools/shared.py | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/emscripten.py b/emscripten.py index 26a018aec372e..1a87c7889af9e 100755 --- a/emscripten.py +++ b/emscripten.py @@ -585,10 +585,10 @@ def lookup(value): def _main(environ): parser = optparse.OptionParser( - usage='usage: %prog [-h] [-H HEADERS] [-o OUTFILE] [-c COMPILER_ENGINE] [-s FOO=BAR]* infile', - description=('You should normally never use this! Use emcc instead. ' - 'This is a wrapper around the JS compiler, converting .ll to .js.'), - epilog='') + usage='usage: %prog [-h] [-H HEADERS] [-o OUTFILE] [-c COMPILER_ENGINE] [-s FOO=BAR]* infile', + description=('You should normally never use this! Use emcc instead. ' + 'This is a wrapper around the JS compiler, converting .ll to .js.'), + epilog='') parser.add_option('-H', '--headers', default=[], action='append', diff --git a/tools/shared.py b/tools/shared.py index f1d133d7f28fa..9b2b4561a1588 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -293,14 +293,6 @@ def build_llvm_tool_path(tool): # Temp dir. Create a random one, unless EMCC_DEBUG is set, in which case use TEMP_DIR/emscripten_temp -try: - TEMP_DIR -except: - print >> sys.stderr, 'TEMP_DIR not defined in ~/.emscripten, using /tmp' - TEMP_DIR = '/tmp' - -CANONICAL_TEMP_DIR = os.path.join(TEMP_DIR, 'emscripten_temp') - class Configuration: def __init__(self, environ): self.DEBUG = environ.get('EMCC_DEBUG') @@ -309,6 +301,14 @@ def __init__(self, environ): self.DEBUG_CACHE = self.DEBUG and "cache" in self.DEBUG self.EMSCRIPTEN_TEMP_DIR = None + try: + self.TEMP_DIR = TEMP_DIR + except NameError: + print >> sys.stderr, 'TEMP_DIR not defined in ~/.emscripten, using /tmp' + self.TEMP_DIR = '/tmp' + + CANONICAL_TEMP_DIR = os.path.join(self.TEMP_DIR, 'emscripten_temp') + if self.DEBUG: try: self.EMSCRIPTEN_TEMP_DIR = CANONICAL_TEMP_DIR @@ -327,7 +327,7 @@ def debug_log(self, msg): DEBUG_CACHE = configuration.DEBUG_CACHE if not EMSCRIPTEN_TEMP_DIR: - EMSCRIPTEN_TEMP_DIR = tempfile.mkdtemp(prefix='emscripten_temp_', dir=TEMP_DIR) + EMSCRIPTEN_TEMP_DIR = tempfile.mkdtemp(prefix='emscripten_temp_', dir=configuration.TEMP_DIR) def clean_temp(): try_delete(EMSCRIPTEN_TEMP_DIR) atexit.register(clean_temp) @@ -467,7 +467,7 @@ def run_and_clean(self, func): def make_temp_files(configuration=configuration): return TempFiles( - tmp=TEMP_DIR if not configuration.DEBUG else configuration.EMSCRIPTEN_TEMP_DIR, + tmp=configuration.TEMP_DIR if not configuration.DEBUG else configuration.EMSCRIPTEN_TEMP_DIR, save_debug_files=os.environ.get('EMCC_DEBUG_SAVE')) # Utilities @@ -660,7 +660,7 @@ def handle_CMake_toolchain(args, env): .replace('$EMSCRIPTEN_ROOT', path_from_root('').replace('\\', '/')) \ .replace('$CFLAGS', env['CFLAGS']) \ .replace('$CXXFLAGS', env['CFLAGS']) - toolchainFile = mkstemp(suffix='.cmaketoolchain.txt', dir=TEMP_DIR)[1] + toolchainFile = mkstemp(suffix='.cmaketoolchain.txt', dir=configuration.TEMP_DIR)[1] open(toolchainFile, 'w').write(CMakeToolchain) args.append('-DCMAKE_TOOLCHAIN_FILE=%s' % os.path.abspath(toolchainFile)) return args From 5ba10fe45e42ba1f6f92b7db5e34117e655bfa2d Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Thu, 31 Jan 2013 18:17:14 -0800 Subject: [PATCH 309/326] Get the TempFiles object from the Configuration --- emscripten.py | 2 +- tools/js_optimizer.py | 3 +- tools/shared.py | 70 +++++++++++++++++++++---------------------- 3 files changed, 38 insertions(+), 37 deletions(-) diff --git a/emscripten.py b/emscripten.py index 1a87c7889af9e..011bc22f764d1 100755 --- a/emscripten.py +++ b/emscripten.py @@ -21,7 +21,7 @@ def path_from_root(*pathelems): return os.path.join(__rootpath__, *pathelems) configuration = shared.Configuration(environ=os.environ) -temp_files = shared.make_temp_files() +temp_files = configuration.get_temp_files() def scan(ll, settings): # blockaddress(@main, %23) diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index f2d3b7dbcecd0..ad3a1f7929818 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -2,7 +2,8 @@ import os, sys, subprocess, multiprocessing, re import shared -temp_files = shared.make_temp_files() +configuration = shared.configuration +temp_files = configuration.get_temp_files() __rootpath__ = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) def path_from_root(*pathelems): diff --git a/tools/shared.py b/tools/shared.py index 9b2b4561a1588..f0c79dae54ada 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -317,10 +317,45 @@ def __init__(self, environ): except Exception, e: print >> sys.stderr, e, 'Could not create canonical temp dir. Check definition of TEMP_DIR in ~/.emscripten' + def get_temp_files(self): + return TempFiles( + tmp=self.TEMP_DIR if not self.DEBUG else self.EMSCRIPTEN_TEMP_DIR, + save_debug_files=os.environ.get('EMCC_DEBUG_SAVE')) + def debug_log(self, msg): if self.DEBUG: print >> sys.stderr, msg +class TempFiles: + def __init__(self, tmp, save_debug_files=False): + self.tmp = tmp + self.save_debug_files = save_debug_files + + self.to_clean = [] + + def note(self, filename): + self.to_clean.append(filename) + + def get(self, suffix): + """Returns a named temp file with the given prefix.""" + named_file = tempfile.NamedTemporaryFile(dir=self.tmp, suffix=suffix, delete=False) + self.note(named_file.name) + return named_file + + def clean(self): + if self.save_debug_files: + print >> sys.stderr, 'not cleaning up temp files since in debug-save mode, see them in %s' % (self.tmp,) + return + for filename in self.to_clean: + try_delete(filename) + self.to_clean = [] + + def run_and_clean(self, func): + try: + return func() + finally: + self.clean() + configuration = Configuration(environ=os.environ) DEBUG = configuration.DEBUG EMSCRIPTEN_TEMP_DIR = configuration.EMSCRIPTEN_TEMP_DIR @@ -435,41 +470,6 @@ def try_delete(filename): except: pass -class TempFiles: - def __init__(self, tmp, save_debug_files=False): - self.tmp = tmp - self.save_debug_files = save_debug_files - - self.to_clean = [] - - def note(self, filename): - self.to_clean.append(filename) - - def get(self, suffix): - """Returns a named temp file with the given prefix.""" - named_file = tempfile.NamedTemporaryFile(dir=self.tmp, suffix=suffix, delete=False) - self.note(named_file.name) - return named_file - - def clean(self): - if self.save_debug_files: - print >> sys.stderr, 'not cleaning up temp files since in debug-save mode, see them in %s' % (self.tmp,) - return - for filename in self.to_clean: - try_delete(filename) - self.to_clean = [] - - def run_and_clean(self, func): - try: - return func() - finally: - self.clean() - -def make_temp_files(configuration=configuration): - return TempFiles( - tmp=configuration.TEMP_DIR if not configuration.DEBUG else configuration.EMSCRIPTEN_TEMP_DIR, - save_debug_files=os.environ.get('EMCC_DEBUG_SAVE')) - # Utilities def check_engine(engine): From 68ad675f73a49f26bdaaa99d1168e95e792de93f Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Thu, 31 Jan 2013 18:27:20 -0800 Subject: [PATCH 310/326] Make temp_files in main() in emscripten.py, not globally. --- emscripten.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/emscripten.py b/emscripten.py index 011bc22f764d1..420911339a868 100755 --- a/emscripten.py +++ b/emscripten.py @@ -21,7 +21,6 @@ def path_from_root(*pathelems): return os.path.join(__rootpath__, *pathelems) configuration = shared.Configuration(environ=os.environ) -temp_files = configuration.get_temp_files() def scan(ll, settings): # blockaddress(@main, %23) @@ -36,7 +35,7 @@ def scan(ll, settings): MIN_CHUNK_SIZE = 1024*1024 MAX_CHUNK_SIZE = float(os.environ.get('EMSCRIPT_MAX_CHUNK_SIZE') or 'inf') # configuring this is just for debugging purposes -def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libraries, compiler_engine)): +def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libraries, compiler_engine, temp_files)): ll = ''.join(funcs) + '\n' + meta funcs_file = temp_files.get('.func_%d.ll' % i).name open(funcs_file, 'w').write(ll) @@ -51,7 +50,8 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr def emscript(configuration, infile, settings, outfile, libraries=[], compiler_engine=None, - jcache=None): + jcache=None, + temp_files=None): """Runs the emscripten LLVM-to-JS compiler. We parallelize as much as possible Args: @@ -218,7 +218,7 @@ def load_from_cache(chunk): if DEBUG: print >> sys.stderr, ' emscript: phase 2 working on %d chunks %s (intended chunk size: %.2f MB, meta: %.2f MB, forwarded: %.2f MB, total: %.2f MB)' % (len(chunks), ('using %d cores' % cores) if len(chunks) > 1 else '', chunk_size/(1024*1024.), len(meta)/(1024*1024.), len(forwarded_data)/(1024*1024.), total_ll_size/(1024*1024.)) commands = [ - (i, chunk, meta, settings_file, compiler, forwarded_file, libraries, compiler_engine) + (i, chunk, meta, settings_file, compiler, forwarded_file, libraries, compiler_engine, temp_files) for i, chunk in enumerate(chunks) ] @@ -498,8 +498,7 @@ def fix(m): outfile.close() - -def main(args, compiler_engine, cache, jcache, relooper): +def main(args, compiler_engine, cache, jcache, relooper, temp_files): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -581,7 +580,8 @@ def lookup(value): emscript(configuration, args.infile, settings, args.outfile, libraries, compiler_engine=compiler_engine, - jcache=jcache) + jcache=jcache, + temp_files=temp_files) def _main(environ): parser = optparse.OptionParser( @@ -643,13 +643,16 @@ def _main(environ): else: relooper = None # use the cache + temp_files = configuration.get_temp_files() + cache = cache_module.Cache() temp_files.run_and_clean(lambda: main( keywords, compiler_engine=os.path.abspath(keywords.compiler), cache=cache, jcache=cache_module.JCache(cache) if keywords.jcache else None, - relooper=relooper)) + relooper=relooper, + temp_files=temp_files)) if __name__ == '__main__': _main(environ=os.environ) From 922d046e9b9f64627372d2ab79c6b81caadf219d Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Fri, 1 Feb 2013 12:32:11 -0800 Subject: [PATCH 311/326] Code review feedback --- emscripten.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/emscripten.py b/emscripten.py index 420911339a868..dc17dc7dfc68d 100755 --- a/emscripten.py +++ b/emscripten.py @@ -48,10 +48,8 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr shared.try_delete(funcs_file) return out -def emscript(configuration, infile, settings, outfile, libraries=[], - compiler_engine=None, - jcache=None, - temp_files=None): +def emscript(configuration, infile, settings, outfile, libraries=[], compiler_engine=None, + jcache=None, temp_files=None): """Runs the emscripten LLVM-to-JS compiler. We parallelize as much as possible Args: From 1c06e04fda0e099ba7536147be6b85d02bdab6df Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Fri, 1 Feb 2013 12:36:20 -0800 Subject: [PATCH 312/326] Code review feedback --- emscripten.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/emscripten.py b/emscripten.py index dc17dc7dfc68d..06ed063e46054 100755 --- a/emscripten.py +++ b/emscripten.py @@ -222,10 +222,7 @@ def load_from_cache(chunk): if len(chunks) > 1: pool = multiprocessing.Pool(processes=cores) - outputs = pool.map( - process_funcs, - commands, - chunksize=1) + outputs = pool.map(process_funcs, commands, chunksize=1) elif len(chunks) == 1: outputs = [process_funcs(commands[0])] else: From fd4fec473e627336117b61590e1e0c039dd87919 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Fri, 1 Feb 2013 14:02:32 -0800 Subject: [PATCH 313/326] Break two more emscripten.py dependencies on tools.shared --- emscripten.py | 10 +++++++--- tools/shared.py | 10 +--------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/emscripten.py b/emscripten.py index 06ed063e46054..f709821e74efe 100755 --- a/emscripten.py +++ b/emscripten.py @@ -11,7 +11,7 @@ import os, sys, json, optparse, subprocess, re, time, multiprocessing, functools -from tools import shared, jsrun, cache as cache_module +from tools import shared, jsrun, cache as cache_module, tempfiles __rootpath__ = os.path.abspath(os.path.dirname(__file__)) def path_from_root(*pathelems): @@ -45,7 +45,7 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr args=[settings_file, funcs_file, 'funcs', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) - shared.try_delete(funcs_file) + tempfiles.try_delete(funcs_file) return out def emscript(configuration, infile, settings, outfile, libraries=[], compiler_engine=None, @@ -596,7 +596,7 @@ def _main(environ): default=sys.stdout, help='Where to write the output; defaults to stdout.') parser.add_option('-c', '--compiler', - default=shared.COMPILER_ENGINE, + default=None, help='Which JS engine to use to run the compiler; defaults to the one in ~/.emscripten.') parser.add_option('--relooper', default=None, @@ -640,6 +640,10 @@ def _main(environ): temp_files = configuration.get_temp_files() + if keywords.compiler is None: + from tools import shared + keywords.compiler = shared.COMPILER_ENGINE + cache = cache_module.Cache() temp_files.run_and_clean(lambda: main( keywords, diff --git a/tools/shared.py b/tools/shared.py index f0c79dae54ada..052be15b8ea17 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -460,15 +460,7 @@ def clean_temp(): pass # Temp file utilities - -def try_delete(filename): - try: - os.unlink(filename) - except: - try: - shutil.rmtree(filename) - except: - pass +from .tempfiles import try_delete # Utilities From f507b18f6a21731618ac8042802b05eb23d79543 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Fri, 1 Feb 2013 14:07:23 -0800 Subject: [PATCH 314/326] emscripten.py no longer globally depends on tools.shared --- emscripten.py | 13 ++++++++----- tools/tempfiles.py | 8 ++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 tools/tempfiles.py diff --git a/emscripten.py b/emscripten.py index f709821e74efe..f18b69b8f86bf 100755 --- a/emscripten.py +++ b/emscripten.py @@ -11,7 +11,7 @@ import os, sys, json, optparse, subprocess, re, time, multiprocessing, functools -from tools import shared, jsrun, cache as cache_module, tempfiles +from tools import jsrun, cache as cache_module, tempfiles __rootpath__ = os.path.abspath(os.path.dirname(__file__)) def path_from_root(*pathelems): @@ -20,8 +20,6 @@ def path_from_root(*pathelems): """ return os.path.join(__rootpath__, *pathelems) -configuration = shared.Configuration(environ=os.environ) - def scan(ll, settings): # blockaddress(@main, %23) blockaddrs = [] @@ -493,7 +491,7 @@ def fix(m): outfile.close() -def main(args, compiler_engine, cache, jcache, relooper, temp_files): +def main(args, compiler_engine, cache, jcache, relooper, temp_files, configuration): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -571,6 +569,7 @@ def lookup(value): if not relooper: relooper = cache.get_path('relooper.js') settings.setdefault('RELOOPER', relooper) + from tools import shared shared.Building.ensure_relooper(relooper) emscript(configuration, args.infile, settings, args.outfile, libraries, @@ -638,6 +637,8 @@ def _main(environ): else: relooper = None # use the cache + from tools import shared + configuration = shared.Configuration(environ=os.environ) temp_files = configuration.get_temp_files() if keywords.compiler is None: @@ -651,7 +652,9 @@ def _main(environ): cache=cache, jcache=cache_module.JCache(cache) if keywords.jcache else None, relooper=relooper, - temp_files=temp_files)) + temp_files=temp_files, + configuration=configuration + )) if __name__ == '__main__': _main(environ=os.environ) diff --git a/tools/tempfiles.py b/tools/tempfiles.py new file mode 100644 index 0000000000000..1953691e71211 --- /dev/null +++ b/tools/tempfiles.py @@ -0,0 +1,8 @@ +import os +import shutil + +def try_delete(filename): + try: + os.unlink(filename) + except: + shutil.rmtree(filename, ignore_errors=True) From 74955d520119ed01509faf4976635a113bfe95bd Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Fri, 1 Feb 2013 14:54:00 -0800 Subject: [PATCH 315/326] make it possible to manually specify a temp directory when running emscripten.py --- emscripten.py | 32 +++++++++++++++++++++----------- tools/shared.py | 34 ++-------------------------------- tools/tempfiles.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 43 deletions(-) diff --git a/emscripten.py b/emscripten.py index f18b69b8f86bf..ccfd2ebf1c280 100755 --- a/emscripten.py +++ b/emscripten.py @@ -46,8 +46,8 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr tempfiles.try_delete(funcs_file) return out -def emscript(configuration, infile, settings, outfile, libraries=[], compiler_engine=None, - jcache=None, temp_files=None): +def emscript(infile, settings, outfile, libraries=[], compiler_engine=None, + jcache=None, temp_files=None, DEBUG=False): """Runs the emscripten LLVM-to-JS compiler. We parallelize as much as possible Args: @@ -66,7 +66,7 @@ def emscript(configuration, infile, settings, outfile, libraries=[], compiler_en # 2 aka 'funcs': Process functions. We can parallelize this, working on each function independently. # 3 aka 'post' : Process globals, generate postamble and finishing touches. - configuration.debug_log('emscript: ll=>js') + if DEBUG: print >> sys.stderr, 'emscript: ll=>js' if jcache: jcache.ensure() @@ -491,7 +491,7 @@ def fix(m): outfile.close() -def main(args, compiler_engine, cache, jcache, relooper, temp_files, configuration): +def main(args, compiler_engine, cache, jcache, relooper, temp_files, DEBUG): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -572,10 +572,8 @@ def lookup(value): from tools import shared shared.Building.ensure_relooper(relooper) - emscript(configuration, args.infile, settings, args.outfile, libraries, - compiler_engine=compiler_engine, - jcache=jcache, - temp_files=temp_files) + emscript(args.infile, settings, args.outfile, libraries, compiler_engine=compiler_engine, + jcache=jcache, temp_files=temp_files, DEBUG=DEBUG) def _main(environ): parser = optparse.OptionParser( @@ -599,7 +597,7 @@ def _main(environ): help='Which JS engine to use to run the compiler; defaults to the one in ~/.emscripten.') parser.add_option('--relooper', default=None, - help='Which relooper file to use if RELOOP is enabled') + help='Which relooper file to use if RELOOP is enabled.') parser.add_option('-s', '--setting', dest='settings', default=[], @@ -611,6 +609,9 @@ def _main(environ): action='store_true', default=False, help=('Enable jcache (ccache-like caching of compilation results, for faster incremental builds).')) + parser.add_option('-T', '--temp-dir', + default=None, + help=('Where to create temporary files.')) parser.add_option('--suppressUsageWarning', action='store_true', default=environ.get('EMSCRIPTEN_SUPPRESS_USAGE_WARNING'), @@ -639,12 +640,21 @@ def _main(environ): from tools import shared configuration = shared.Configuration(environ=os.environ) - temp_files = configuration.get_temp_files() + + if keywords.temp_dir is None: + temp_files = configuration.get_temp_files() + else: + temp_dir = os.path.abspath(keywords.temp_dir) + if not os.path.exists(temp_dir): + os.makedirs(temp_dir) + temp_files = tempfiles.TempFiles(temp_dir) if keywords.compiler is None: from tools import shared keywords.compiler = shared.COMPILER_ENGINE + DEBUG = configuration.DEBUG + cache = cache_module.Cache() temp_files.run_and_clean(lambda: main( keywords, @@ -653,7 +663,7 @@ def _main(environ): jcache=cache_module.JCache(cache) if keywords.jcache else None, relooper=relooper, temp_files=temp_files, - configuration=configuration + DEBUG=DEBUG )) if __name__ == '__main__': diff --git a/tools/shared.py b/tools/shared.py index 052be15b8ea17..ff9f9f9b38168 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1,7 +1,7 @@ import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib, re from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp -from . import jsrun, cache +from . import jsrun, cache, tempfiles def listify(x): if type(x) is not list: return [x] @@ -318,7 +318,7 @@ def __init__(self, environ): print >> sys.stderr, e, 'Could not create canonical temp dir. Check definition of TEMP_DIR in ~/.emscripten' def get_temp_files(self): - return TempFiles( + return tempfiles.TempFiles( tmp=self.TEMP_DIR if not self.DEBUG else self.EMSCRIPTEN_TEMP_DIR, save_debug_files=os.environ.get('EMCC_DEBUG_SAVE')) @@ -326,36 +326,6 @@ def debug_log(self, msg): if self.DEBUG: print >> sys.stderr, msg -class TempFiles: - def __init__(self, tmp, save_debug_files=False): - self.tmp = tmp - self.save_debug_files = save_debug_files - - self.to_clean = [] - - def note(self, filename): - self.to_clean.append(filename) - - def get(self, suffix): - """Returns a named temp file with the given prefix.""" - named_file = tempfile.NamedTemporaryFile(dir=self.tmp, suffix=suffix, delete=False) - self.note(named_file.name) - return named_file - - def clean(self): - if self.save_debug_files: - print >> sys.stderr, 'not cleaning up temp files since in debug-save mode, see them in %s' % (self.tmp,) - return - for filename in self.to_clean: - try_delete(filename) - self.to_clean = [] - - def run_and_clean(self, func): - try: - return func() - finally: - self.clean() - configuration = Configuration(environ=os.environ) DEBUG = configuration.DEBUG EMSCRIPTEN_TEMP_DIR = configuration.EMSCRIPTEN_TEMP_DIR diff --git a/tools/tempfiles.py b/tools/tempfiles.py index 1953691e71211..06c4d1dd708d0 100644 --- a/tools/tempfiles.py +++ b/tools/tempfiles.py @@ -1,8 +1,39 @@ import os import shutil +import tempfile def try_delete(filename): try: os.unlink(filename) except: shutil.rmtree(filename, ignore_errors=True) + +class TempFiles: + def __init__(self, tmp, save_debug_files=False): + self.tmp = tmp + self.save_debug_files = save_debug_files + + self.to_clean = [] + + def note(self, filename): + self.to_clean.append(filename) + + def get(self, suffix): + """Returns a named temp file with the given prefix.""" + named_file = tempfile.NamedTemporaryFile(dir=self.tmp, suffix=suffix, delete=False) + self.note(named_file.name) + return named_file + + def clean(self): + if self.save_debug_files: + print >> sys.stderr, 'not cleaning up temp files since in debug-save mode, see them in %s' % (self.tmp,) + return + for filename in self.to_clean: + try_delete(filename) + self.to_clean = [] + + def run_and_clean(self, func): + try: + return func() + finally: + self.clean() From 1f661c608d01416b319aaca0f8a6315bdae90c6c Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Fri, 1 Feb 2013 15:24:41 -0800 Subject: [PATCH 316/326] Only load tools.shared if it's necessary to compute a default. Now emscripten.py can run without a ~/.emscripten directory :) --- emscripten.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/emscripten.py b/emscripten.py index ccfd2ebf1c280..9977b00200da0 100755 --- a/emscripten.py +++ b/emscripten.py @@ -569,8 +569,9 @@ def lookup(value): if not relooper: relooper = cache.get_path('relooper.js') settings.setdefault('RELOOPER', relooper) - from tools import shared - shared.Building.ensure_relooper(relooper) + if not os.path.exists(relooper): + from tools import shared + shared.Building.ensure_relooper(relooper) emscript(args.infile, settings, args.outfile, libraries, compiler_engine=compiler_engine, jcache=jcache, temp_files=temp_files, DEBUG=DEBUG) @@ -612,6 +613,14 @@ def _main(environ): parser.add_option('-T', '--temp-dir', default=None, help=('Where to create temporary files.')) + parser.add_option('-v', '--verbose', + action='store_true', + dest='verbose', + help='Displays debug output') + parser.add_option('-q', '--quiet', + action='store_false', + dest='verbose', + help='Hides debug output') parser.add_option('--suppressUsageWarning', action='store_true', default=environ.get('EMSCRIPTEN_SUPPRESS_USAGE_WARNING'), @@ -638,11 +647,16 @@ def _main(environ): else: relooper = None # use the cache - from tools import shared - configuration = shared.Configuration(environ=os.environ) - + def get_configuration(): + if hasattr(get_configuration, 'configuration'): + return get_configuration.configuration + + from tools import shared + configuration = shared.Configuration(environ=os.environ) + get_configuration.configuration = configuration + if keywords.temp_dir is None: - temp_files = configuration.get_temp_files() + temp_files = get_configuration().get_temp_files() else: temp_dir = os.path.abspath(keywords.temp_dir) if not os.path.exists(temp_dir): @@ -653,7 +667,10 @@ def _main(environ): from tools import shared keywords.compiler = shared.COMPILER_ENGINE - DEBUG = configuration.DEBUG + if keywords.verbose is None: + DEBUG = get_configuration().DEBUG + else: + DEBUG = keywords.verbose cache = cache_module.Cache() temp_files.run_and_clean(lambda: main( From 48089b80449daba70ca0897912736a08e5a9108d Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 4 Feb 2013 13:37:55 -0800 Subject: [PATCH 317/326] the compiler does not need to run with a modified cwd --- emscripten.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/emscripten.py b/emscripten.py index 9977b00200da0..886816a9406e5 100755 --- a/emscripten.py +++ b/emscripten.py @@ -156,7 +156,7 @@ def save_settings(): if out and DEBUG: print >> sys.stderr, ' loading pre from jcache' if not out: open(pre_file, 'w').write(pre_input) - out = jsrun.run_js(compiler, compiler_engine, [settings_file, pre_file, 'pre'] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) + out = jsrun.run_js(compiler, compiler_engine, [settings_file, pre_file, 'pre'] + libraries, stdout=subprocess.PIPE) if jcache: if DEBUG: print >> sys.stderr, ' saving pre to jcache' jcache.set(shortkey, keys, out) @@ -307,7 +307,7 @@ def blockaddrsize(js): if DEBUG: t = time.time() post_file = temp_files.get('.post.ll').name open(post_file, 'w').write('\n') # no input, just processing of forwarded data - out = jsrun.run_js(compiler, compiler_engine, [settings_file, post_file, 'post', forwarded_file] + libraries, stdout=subprocess.PIPE, cwd=path_from_root('src')) + out = jsrun.run_js(compiler, compiler_engine, [settings_file, post_file, 'post', forwarded_file] + libraries, stdout=subprocess.PIPE) post, last_forwarded_data = out.split('//FORWARDED_DATA:') # if this fails, perhaps the process failed prior to printing forwarded data? last_forwarded_json = json.loads(last_forwarded_data) From 77ec50ce8f267f0c2d3078f2459aa5f4cc32d431 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 4 Feb 2013 13:57:39 -0800 Subject: [PATCH 318/326] Fix a stupid error that broke emcc --- emscripten.py | 1 + 1 file changed, 1 insertion(+) diff --git a/emscripten.py b/emscripten.py index 886816a9406e5..da21b1b0642a4 100755 --- a/emscripten.py +++ b/emscripten.py @@ -654,6 +654,7 @@ def get_configuration(): from tools import shared configuration = shared.Configuration(environ=os.environ) get_configuration.configuration = configuration + return configuration if keywords.temp_dir is None: temp_files = get_configuration().get_temp_files() From d84a4ec1a48534211afc89590bd04af4cfd27f13 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 4 Feb 2013 14:14:59 -0800 Subject: [PATCH 319/326] Don't change cwd when running compiler.js. This allows us to use relative paths for things like shell files and temp directories. This is important especially on Cygwin/Windows because Cygwin and Windows have different absolute paths. --- emscripten.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/emscripten.py b/emscripten.py index da21b1b0642a4..19da626882047 100755 --- a/emscripten.py +++ b/emscripten.py @@ -41,8 +41,7 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr compiler, engine=compiler_engine, args=[settings_file, funcs_file, 'funcs', forwarded_file] + libraries, - stdout=subprocess.PIPE, - cwd=path_from_root('src')) + stdout=subprocess.PIPE) tempfiles.try_delete(funcs_file) return out @@ -676,7 +675,7 @@ def get_configuration(): cache = cache_module.Cache() temp_files.run_and_clean(lambda: main( keywords, - compiler_engine=os.path.abspath(keywords.compiler), + compiler_engine=keywords.compiler, cache=cache, jcache=cache_module.JCache(cache) if keywords.jcache else None, relooper=relooper, From 4bde971a1f51eaa9c6da2e54a295ff04183cbab5 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 20 Feb 2013 13:58:20 -0800 Subject: [PATCH 320/326] Isolate shutil.rmtree logic in tempfiles.try_delete, and integrate azakai's feedback --- tools/cache.py | 3 ++- tools/tempfiles.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/cache.py b/tools/cache.py index 78a11ba08eb1a..2958197cbe167 100644 --- a/tools/cache.py +++ b/tools/cache.py @@ -1,4 +1,5 @@ import os.path, shutil, hashlib, cPickle +from . import tempfiles # Permanent cache for dlmalloc and stdlibc++ class Cache: @@ -14,7 +15,7 @@ def ensure(self): os.makedirs(self.dirname) def erase(self): - shutil.rmtree(self.dirname, ignore_errors=True) + tempfiles.try_delete(self.dirname) def get_path(self, shortname): return os.path.join(self.dirname, shortname) diff --git a/tools/tempfiles.py b/tools/tempfiles.py index 06c4d1dd708d0..1721b2bb404fe 100644 --- a/tools/tempfiles.py +++ b/tools/tempfiles.py @@ -6,7 +6,8 @@ def try_delete(filename): try: os.unlink(filename) except: - shutil.rmtree(filename, ignore_errors=True) + if os.path.exists(filename): + shutil.rmtree(filename, ignore_errors=True) class TempFiles: def __init__(self, tmp, save_debug_files=False): From cc0d959ebeb0624d7e8f3af496c170340afb8e55 Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Wed, 27 Feb 2013 19:07:02 -0800 Subject: [PATCH 321/326] fix some test failures --- tests/runner.py | 2 ++ tools/cache.py | 3 ++- tools/file_packager.py | 2 +- tools/js_optimizer.py | 2 +- tools/shared.py | 13 +++++++------ 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tests/runner.py b/tests/runner.py index c9c8ac9e91108..e631b02529d9b 100755 --- a/tests/runner.py +++ b/tests/runner.py @@ -11943,6 +11943,8 @@ def test_emcc_caching(self): try_delete(CANONICAL_TEMP_DIR) def test_relooper(self): + RELOOPER = Cache.get_path('relooper.js') + restore() for phase in range(2): # 0: we wipe the relooper dir. 1: we have it, so should just update if phase == 0: Cache.erase() diff --git a/tools/cache.py b/tools/cache.py index 2958197cbe167..dec32473bb14a 100644 --- a/tools/cache.py +++ b/tools/cache.py @@ -1,5 +1,6 @@ import os.path, shutil, hashlib, cPickle -from . import tempfiles + +import tempfiles # Permanent cache for dlmalloc and stdlibc++ class Cache: diff --git a/tools/file_packager.py b/tools/file_packager.py index bfa8e2f0285d4..73ff4919bc83b 100644 --- a/tools/file_packager.py +++ b/tools/file_packager.py @@ -35,8 +35,8 @@ import os, sys, shutil, random -from shared import Compression, execute, suffix, unsuffixed import shared +from shared import Compression, execute, suffix, unsuffixed from subprocess import Popen, PIPE, STDOUT data_target = sys.argv[1] diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index ad3a1f7929818..2fd2211b759e2 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -31,7 +31,7 @@ def run_on_chunk(command): return filename def run_on_js(filename, passes, js_engine, jcache): - + if isinstance(jcache, bool) and jcache: jcache = shared.JCache if jcache: shared.JCache.ensure() if type(passes) == str: diff --git a/tools/shared.py b/tools/shared.py index ff9f9f9b38168..06d530b89f6ae 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1,7 +1,7 @@ import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib, re from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp -from . import jsrun, cache, tempfiles +import jsrun, cache, tempfiles def listify(x): if type(x) is not list: return [x] @@ -307,13 +307,13 @@ def __init__(self, environ): print >> sys.stderr, 'TEMP_DIR not defined in ~/.emscripten, using /tmp' self.TEMP_DIR = '/tmp' - CANONICAL_TEMP_DIR = os.path.join(self.TEMP_DIR, 'emscripten_temp') + self.CANONICAL_TEMP_DIR = os.path.join(self.TEMP_DIR, 'emscripten_temp') if self.DEBUG: try: - self.EMSCRIPTEN_TEMP_DIR = CANONICAL_TEMP_DIR - if not os.path.exists(EMSCRIPTEN_TEMP_DIR): - os.makedirs(EMSCRIPTEN_TEMP_DIR) + self.EMSCRIPTEN_TEMP_DIR = self.CANONICAL_TEMP_DIR + if not os.path.exists(self.EMSCRIPTEN_TEMP_DIR): + os.makedirs(self.EMSCRIPTEN_TEMP_DIR) except Exception, e: print >> sys.stderr, e, 'Could not create canonical temp dir. Check definition of TEMP_DIR in ~/.emscripten' @@ -330,6 +330,7 @@ def debug_log(self, msg): DEBUG = configuration.DEBUG EMSCRIPTEN_TEMP_DIR = configuration.EMSCRIPTEN_TEMP_DIR DEBUG_CACHE = configuration.DEBUG_CACHE +CANONICAL_TEMP_DIR = configuration.CANONICAL_TEMP_DIR if not EMSCRIPTEN_TEMP_DIR: EMSCRIPTEN_TEMP_DIR = tempfile.mkdtemp(prefix='emscripten_temp_', dir=configuration.TEMP_DIR) @@ -430,7 +431,7 @@ def clean_temp(): pass # Temp file utilities -from .tempfiles import try_delete +from tempfiles import try_delete # Utilities From c1c88e7185be8db7e38a94ceecc2a23f8cb72d7d Mon Sep 17 00:00:00 2001 From: Chad Austin Date: Mon, 4 Mar 2013 19:50:42 -0800 Subject: [PATCH 322/326] Rebasing broke a lot of things (I had to fix about 12 conflicts) so now the sanity tests pass again. --- emscripten.py | 13 +++++++------ tools/cache.py | 46 +++++++++------------------------------------- 2 files changed, 16 insertions(+), 43 deletions(-) diff --git a/emscripten.py b/emscripten.py index 19da626882047..0b9244c270a2c 100755 --- a/emscripten.py +++ b/emscripten.py @@ -46,7 +46,7 @@ def process_funcs((i, funcs, meta, settings_file, compiler, forwarded_file, libr return out def emscript(infile, settings, outfile, libraries=[], compiler_engine=None, - jcache=None, temp_files=None, DEBUG=False): + jcache=None, temp_files=None, DEBUG=None, DEBUG_CACHE=None): """Runs the emscripten LLVM-to-JS compiler. We parallelize as much as possible Args: @@ -56,8 +56,6 @@ def emscript(infile, settings, outfile, libraries=[], compiler_engine=None, outfile: The file where the output is written. """ - DEBUG = configuration.DEBUG - DEBUG_CACHE = configuration.DEBUG_CACHE compiler = path_from_root('src', 'compiler.js') # Parallelization: We run 3 phases: @@ -490,7 +488,7 @@ def fix(m): outfile.close() -def main(args, compiler_engine, cache, jcache, relooper, temp_files, DEBUG): +def main(args, compiler_engine, cache, jcache, relooper, temp_files, DEBUG, DEBUG_CACHE): # Prepare settings for serialization to JSON. settings = {} for setting in args.settings: @@ -573,7 +571,7 @@ def lookup(value): shared.Building.ensure_relooper(relooper) emscript(args.infile, settings, args.outfile, libraries, compiler_engine=compiler_engine, - jcache=jcache, temp_files=temp_files, DEBUG=DEBUG) + jcache=jcache, temp_files=temp_files, DEBUG=DEBUG, DEBUG_CACHE=DEBUG_CACHE) def _main(environ): parser = optparse.OptionParser( @@ -669,8 +667,10 @@ def get_configuration(): if keywords.verbose is None: DEBUG = get_configuration().DEBUG + DEBUG_CACHE = get_configuration().DEBUG_CACHE else: DEBUG = keywords.verbose + DEBUG_CACHE = keywords.verbose cache = cache_module.Cache() temp_files.run_and_clean(lambda: main( @@ -680,7 +680,8 @@ def get_configuration(): jcache=cache_module.JCache(cache) if keywords.jcache else None, relooper=relooper, temp_files=temp_files, - DEBUG=DEBUG + DEBUG=DEBUG, + DEBUG_CACHE=DEBUG_CACHE, )) if __name__ == '__main__': diff --git a/tools/cache.py b/tools/cache.py index dec32473bb14a..d9fabf92da77c 100644 --- a/tools/cache.py +++ b/tools/cache.py @@ -96,18 +96,16 @@ def set(self, shortkey, keys, value): # generate the same chunks, barring big differences in function sizes that # violate our chunk size guideline. If caching is not used, chunking_file # should be None -@classmethod -def chunkify(funcs, chunk_size, chunking_file): +def chunkify(funcs, chunk_size, chunking_file, DEBUG=False): previous_mapping = None if chunking_file: + chunking_file = chunking_file if os.path.exists(chunking_file): try: previous_mapping = cPickle.Unpickler(open(chunking_file, 'rb')).load() # maps a function identifier to the chunk number it will be in - if DEBUG: print >> sys.stderr, 'jscache previous mapping of size %d loaded from %s' % (len(previous_mapping), chunking_file) - except Exception, e: - print >> sys.stderr, 'Failed to load and unpickle previous chunking file at %s: ' % chunking_file, e - else: - print >> sys.stderr, 'Previous chunking file not found at %s' % chunking_file + #if DEBUG: print >> sys.stderr, 'jscache previous mapping', previous_mapping + except: + pass chunks = [] if previous_mapping: # initialize with previous chunking @@ -152,35 +150,10 @@ def chunkify(funcs, chunk_size, chunking_file): curr.append(func) total_size += curr_size else: - n = previous_mapping[ident] - while n >= len(chunks): chunks.append([]) - chunks[n].append(func) - # add news and adjust for new sizes - spilled = news - for chunk in chunks: - size = sum([len(func[1]) for func in chunk]) - while size > 1.5*chunk_size and len(chunk) > 0: - spill = chunk.pop() - spilled.append(spill) - size -= len(spill[1]) - for chunk in chunks: - size = sum([len(func[1]) for func in chunk]) - while size < 0.66*chunk_size and len(spilled) > 0: - spill = spilled.pop() - chunk.append(spill) - size += len(spill[1]) - chunks = filter(lambda chunk: len(chunk) > 0, chunks) # might have empty ones, eliminate them - funcs = spilled # we will allocate these into chunks as if they were normal inputs -# initialize reasonably, the rest of the funcs we need to split out -curr = [] -total_size = 0 -for i in range(len(funcs)): - func = funcs[i] - curr_size = len(func[1]) - if total_size + curr_size < chunk_size: - curr.append(func) - total_size += curr_size - else: + chunks.append(curr) + curr = [func] + total_size = curr_size + if curr: chunks.append(curr) curr = None if chunking_file: @@ -195,7 +168,6 @@ def chunkify(funcs, chunk_size, chunking_file): assert ident not in new_mapping, 'cannot have duplicate names in jcache chunking' new_mapping[ident] = i cPickle.Pickler(open(chunking_file, 'wb')).dump(new_mapping) - if DEBUG: print >> sys.stderr, 'jscache mapping of size %d saved to %s' % (len(new_mapping), chunking_file) #if DEBUG: # for i in range(len(chunks)): # chunk = chunks[i] From ce09c386442cefacad53b849347c12411c5d3930 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 5 Mar 2013 10:13:06 -0800 Subject: [PATCH 323/326] restore cache erase save times, busted by pull #826 --- tools/cache.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/cache.py b/tools/cache.py index d9fabf92da77c..6647219dddb4e 100644 --- a/tools/cache.py +++ b/tools/cache.py @@ -17,6 +17,10 @@ def ensure(self): def erase(self): tempfiles.try_delete(self.dirname) + try: + open(Cache.dirname + '__last_clear', 'w').write('last clear: ' + time.asctime() + '\n') + except: + print >> sys.stderr, 'failed to save last clear time' def get_path(self, shortname): return os.path.join(self.dirname, shortname) From 46158be251798bf66417b1ce891ccf2e29e2ec85 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 5 Mar 2013 10:18:14 -0800 Subject: [PATCH 324/326] restore jcache compression, busted by pull #826 --- tools/cache.py | 15 ++++++++++++--- tools/shared.py | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/tools/cache.py b/tools/cache.py index 6647219dddb4e..a63d7bb3c1f88 100644 --- a/tools/cache.py +++ b/tools/cache.py @@ -1,4 +1,4 @@ -import os.path, shutil, hashlib, cPickle +import os.path, shutil, hashlib, cPickle, zlib import tempfiles @@ -68,7 +68,10 @@ def get(self, shortkey, keys): if not os.path.exists(cachename): #if DEBUG: print >> sys.stderr, 'jcache none at all' return - data = cPickle.Unpickler(open(cachename, 'rb')).load() + try: + data = cPickle.loads(zlib.decompress(open(cachename).read())) + except Exception, e: + if DEBUG_CACHE: print >> sys.stderr, 'jcache decompress/unpickle error:', e if len(data) != 2: #if DEBUG: print >> sys.stderr, 'jcache error in get' return @@ -86,7 +89,13 @@ def get(self, shortkey, keys): # Sets the cached value for a key (from get_key) def set(self, shortkey, keys, value): cachename = self.get_cachename(shortkey) - cPickle.Pickler(open(cachename, 'wb')).dump([keys, value]) + try: + f = open(cachename, 'w') + f.write(zlib.compress(cPickle.dumps([keys, value]))) + f.close() + except Exception, e: + if DEBUG_CACHE: print >> sys.stderr, 'jcache compress/pickle error:', e + return #if DEBUG: # for i in range(len(keys)): # open(cachename + '.key' + str(i), 'w').write(keys[i]) diff --git a/tools/shared.py b/tools/shared.py index 06d530b89f6ae..74e4d8f3fb049 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1,4 +1,4 @@ -import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, zlib, re +import shutil, time, os, sys, json, tempfile, copy, shlex, atexit, subprocess, hashlib, cPickle, re from subprocess import Popen, PIPE, STDOUT from tempfile import mkstemp import jsrun, cache, tempfiles From 09868ed9110b5ff6575f9f4af0976e3e2313d05e Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 5 Mar 2013 10:19:10 -0800 Subject: [PATCH 325/326] restore jcache debugging, busted by pull #826 --- tools/cache.py | 19 ++++++++++--------- tools/shared.py | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/tools/cache.py b/tools/cache.py index a63d7bb3c1f88..eacf5a75fc4e0 100644 --- a/tools/cache.py +++ b/tools/cache.py @@ -1,15 +1,16 @@ -import os.path, shutil, hashlib, cPickle, zlib +import os.path, sys, shutil, hashlib, cPickle, zlib import tempfiles # Permanent cache for dlmalloc and stdlibc++ class Cache: - def __init__(self, dirname=None): + def __init__(self, dirname=None, debug=False): if dirname is None: dirname = os.environ.get('EM_CACHE') if not dirname: dirname = os.path.expanduser(os.path.join('~', '.emscripten_cache')) self.dirname = dirname + self.debug = debug def ensure(self): if not os.path.exists(self.dirname): @@ -43,6 +44,7 @@ class JCache: def __init__(self, cache): self.cache = cache self.dirname = os.path.join(cache.dirname, 'jcache') + self.debug = cache.debug def ensure(self): self.cache.ensure() @@ -63,27 +65,27 @@ def get_cachename(self, shortkey): # Returns a cached value, if it exists. Make sure the full key matches def get(self, shortkey, keys): - #if DEBUG: print >> sys.stderr, 'jcache get?', shortkey + if self.debug: print >> sys.stderr, 'jcache get?', shortkey cachename = self.get_cachename(shortkey) if not os.path.exists(cachename): - #if DEBUG: print >> sys.stderr, 'jcache none at all' + if self.debug: print >> sys.stderr, 'jcache none at all' return try: data = cPickle.loads(zlib.decompress(open(cachename).read())) except Exception, e: if DEBUG_CACHE: print >> sys.stderr, 'jcache decompress/unpickle error:', e if len(data) != 2: - #if DEBUG: print >> sys.stderr, 'jcache error in get' + if self.debug: print >> sys.stderr, 'jcache error in get' return oldkeys = data[0] if len(oldkeys) != len(keys): - #if DEBUG: print >> sys.stderr, 'jcache collision (a)' + if self.debug: print >> sys.stderr, 'jcache collision (a)' return for i in range(len(oldkeys)): if oldkeys[i] != keys[i]: - #if DEBUG: print >> sys.stderr, 'jcache collision (b)' + if self.debug: print >> sys.stderr, 'jcache collision (b)' return - #if DEBUG: print >> sys.stderr, 'jcache win' + if self.debug: print >> sys.stderr, 'jcache win' return data[1] # Sets the cached value for a key (from get_key) @@ -96,7 +98,6 @@ def set(self, shortkey, keys, value): except Exception, e: if DEBUG_CACHE: print >> sys.stderr, 'jcache compress/pickle error:', e return - #if DEBUG: # for i in range(len(keys)): # open(cachename + '.key' + str(i), 'w').write(keys[i]) # open(cachename + '.value', 'w').write(value) diff --git a/tools/shared.py b/tools/shared.py index 74e4d8f3fb049..9ad227b6080eb 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -1200,7 +1200,7 @@ def fix(m): return outfile # compatibility with existing emcc, etc. scripts -Cache = cache.Cache() +Cache = cache.Cache(debug=DEBUG_CACHE) JCache = cache.JCache(Cache) chunkify = cache.chunkify From f155542ec90fa2c3e31a360a4b85706deb566f5b Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 5 Mar 2013 10:32:46 -0800 Subject: [PATCH 326/326] 1.2.5 --- tools/shared.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/shared.py b/tools/shared.py index 9ad227b6080eb..f343d6d696585 100644 --- a/tools/shared.py +++ b/tools/shared.py @@ -181,7 +181,7 @@ def check_node_version(): # we re-check sanity when the settings are changed) # We also re-check sanity and clear the cache when the version changes -EMSCRIPTEN_VERSION = '1.2.4' +EMSCRIPTEN_VERSION = '1.2.5' def check_sanity(force=False): try:

_4Knvc{TIz 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 NPD)v_QrtA?{{RSILCydG diff --git a/tests/screenshot-fog-linear.png b/tests/screenshot-fog-linear.png index 57534566a4b1c6a2605d9434c8a5090c2d4c5311..747c0c254823c4c2703031d34d704c4282e15138 100644 GIT binary patch literal 250343 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