This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
>Number: 5228 >Category: c >Synopsis: Internal gcc-3.0.2 compiler error >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Dec 31 04:46:00 PST 2001 >Closed-Date: >Last-Modified: >Originator: Arnaud Tisserand >Release: gcc version 3.0.2 >Organization: >Environment: uname -a SunOS sirah 5.8 Generic_108528-12 sun4u sparc SUNW,Sun-Blade-100 >Description: fits.c: In function `ReadFITSImage': fits.c:485: Internal compiler error in change_address, at emit-rtl.c:1635 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. >How-To-Repeat: gcc -DHAVE_CONFIG_H -I../ -I. -I. -I../magick -I.. -I../magick -D_REENTRANT -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/local/stow/ImageMagick-5.4.1-2/include -I/usr/openwin/include -I/usr/openwin/include/X11 -g -O2 -Wall -c -o fits.lo -save-temps `test -f fits.c || echo './'`fits.c >Fix: unknown >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="fits.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fits.i" IyA1NSAiZml0cy5jIgojIDEgIi4uL21hZ2ljay9tYWdpY2suaCIgMQojIDE5ICIuLi9tYWdpY2sv bWFnaWNrLmgiCiMgMSAiLi4vbWFnaWNrL21hZ2lja19jb25maWcuaCIgMQojIDIwICIuLi9tYWdp Y2svbWFnaWNrLmgiIDIKCgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t c29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDEgMwojIDE0ICIvdXNyL2xvY2FsL2xp Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwoj IDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5j bHVkZS9zdGRhcmcuaCIgMSAzCiMgNDMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu LXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRhcmcuaCIgMwp0eXBlZGVmIF9fYnVpbHRpbl92 YV9saXN0IF9fZ251Y192YV9saXN0OwojIDE1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMiAzCiMgMzQgIi91c3IvbG9j YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRpby5o IiAzCiNwcmFnbWEgaWRlbnQgIkAoIylzdGRpby5oCTEuNzgJOTkvMTIvMDggU01JIgoKIyAxICIv dXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAxIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2lzby9z dGRpb19pc28uaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc3RkaW9faXNvLmgJMS4yCTk5LzEwLzI1 IFNNSSIKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxMyAi L3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWZl YXR1cmVfdGVzdHMuaAkxLjE4CTk5LzA3LzI2IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9p c2FfZGVmcy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMKI3ByYWdt YSBpZGVudCAiQCgjKWlzYV9kZWZzLmgJMS4yMAk5OS8wNS8wNCBTTUkiCiMgMTYgIi91c3IvaW5j bHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAyIDMKIyAzNiAiL3Vzci9pbmNsdWRlL2lzby9zdGRp b19pc28uaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy92YV9saXN0LmgiIDEgMwojIDkgIi91 c3IvaW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl2YV9saXN0LmgJ MS4xMgk5OS8wNS8wNCBTTUkiCiMgMjYgIi91c3IvaW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAzCnR5 cGVkZWYgdm9pZCAqX192YV9saXN0OwojIDM3ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5o IiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW9fdGFnLmgiIDEgMwojIDkgIi91c3IvaW5jbHVk ZS9zdGRpb190YWcuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc3RkaW9fdGFnLmgJMS4zCTk4LzA0 LzIwIFNNSSIKIyAyMSAiL3Vzci9pbmNsdWRlL3N0ZGlvX3RhZy5oIiAzCnR5cGVkZWYgc3RydWN0 IF9fRklMRSBfX0ZJTEU7CiMgMzggIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDIgMwoj IDEgIi91c3IvaW5jbHVkZS9zdGRpb19pbXBsLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9zdGRp b19pbXBsLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXN0ZGlvX2ltcGwuaAkxLjgJOTkvMDYvMTAg U01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMwojIDEyICIvdXNyL2lu Y2x1ZGUvc3RkaW9faW1wbC5oIiAyIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N0ZGlvX2ltcGwuaCIg Mwp0eXBlZGVmIGludCBzc2l6ZV90OwojIDM4ICIvdXNyL2luY2x1ZGUvc3RkaW9faW1wbC5oIiAz CnN0cnVjdCBfX0ZJTEUKewoKCgoKICAgICAgICBzc2l6ZV90IF9jbnQ7CiAgICAgICAgdW5zaWdu ZWQgY2hhciAqX3B0cjsKCiAgICAgICAgdW5zaWduZWQgY2hhciAqX2Jhc2U7CiAgICAgICAgdW5z aWduZWQgY2hhciBfZmxhZzsKICAgICAgICB1bnNpZ25lZCBjaGFyIF9maWxlOwogICAgICAgIHVu c2lnbmVkIF9fb3JpZW50YXRpb246MjsKICAgICAgICB1bnNpZ25lZCBfX2lvbm9sb2NrOjE7CiAg ICAgICAgdW5zaWduZWQgX19maWxsZXI6NTsKfTsKIyAzOSAiL3Vzci9pbmNsdWRlL2lzby9zdGRp b19pc28uaCIgMiAzCiMgNTkgIi91c3IvaW5jbHVkZS9pc28vc3RkaW9faXNvLmgiIDMKdHlwZWRl ZiBsb25nIGxvbmcgX19sb25nbG9uZ190OwojIDc1ICIvdXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lz by5oIiAzCnR5cGVkZWYgX19GSUxFIEZJTEU7CgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBz aXplX3Q7CgoKCgoKCnR5cGVkZWYgX19sb25nbG9uZ190IGZwb3NfdDsKIyAxNDcgIi91c3IvaW5j bHVkZS9pc28vc3RkaW9faXNvLmgiIDMKZXh0ZXJuIF9fRklMRSBfX2lvYlsyMF07CiMgMTY0ICIv dXNyL2luY2x1ZGUvaXNvL3N0ZGlvX2lzby5oIiAzCmV4dGVybiBpbnQgcmVtb3ZlKGNvbnN0IGNo YXIgKik7CmV4dGVybiBpbnQgcmVuYW1lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0 ZXJuIEZJTEUgKnRtcGZpbGUodm9pZCk7CmV4dGVybiBjaGFyICp0bXBuYW0oY2hhciAqKTsKZXh0 ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKZXh0ZXJuIGludCBmZmx1c2goRklMRSAqKTsKZXh0ZXJu IEZJTEUgKmZvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUgKmZy ZW9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiB2b2lkIHNl dGJ1ZihGSUxFICosIGNoYXIgKik7CmV4dGVybiBpbnQgc2V0dmJ1ZihGSUxFICosIGNoYXIgKiwg aW50LCBzaXplX3QpOwoKZXh0ZXJuIGludCBmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCAu Li4pOwoKZXh0ZXJuIGludCBmc2NhbmYoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CgpleHRl cm4gaW50IHByaW50Zihjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHNjYW5mKGNvbnN0 IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwg Li4uKTsKCmV4dGVybiBpbnQgc3NjYW5mKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4p OwpleHRlcm4gaW50IHZmcHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpl eHRlcm4gaW50IHZwcmludGYoY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50IHZz cHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX3ZhX2xpc3QpOwpleHRlcm4gaW50IGZnZXRj KEZJTEUgKik7CmV4dGVybiBjaGFyICpmZ2V0cyhjaGFyICosIGludCwgRklMRSAqKTsKZXh0ZXJu IGludCBmcHV0YyhpbnQsIEZJTEUgKik7CmV4dGVybiBpbnQgZnB1dHMoY29uc3QgY2hhciAqLCBG SUxFICopOwoKCmV4dGVybiBpbnQgZ2V0YyhGSUxFICopOwpleHRlcm4gaW50IHB1dGMoaW50LCBG SUxFICopOwoKCgpleHRlcm4gaW50IGdldGNoYXIodm9pZCk7CmV4dGVybiBpbnQgcHV0Y2hhcihp bnQpOwoKZXh0ZXJuIGNoYXIgKmdldHMoY2hhciAqKTsKZXh0ZXJuIGludCBwdXRzKGNvbnN0IGNo YXIgKik7CmV4dGVybiBpbnQgdW5nZXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIHNpemVfdCBmcmVh ZCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwpleHRlcm4gc2l6ZV90IGZ3cml0ZShj b25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOwpleHRlcm4gaW50IGZnZXRwb3Mo RklMRSAqLCBmcG9zX3QgKik7CmV4dGVybiBpbnQgZnNlZWsoRklMRSAqLCBsb25nLCBpbnQpOwpl eHRlcm4gaW50IGZzZXRwb3MoRklMRSAqLCBjb25zdCBmcG9zX3QgKik7CmV4dGVybiBsb25nIGZ0 ZWxsKEZJTEUgKik7CmV4dGVybiB2b2lkIHJld2luZChGSUxFICopOwoKCmV4dGVybiB2b2lkIGNs ZWFyZXJyKEZJTEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRlcm4gaW50IGZlcnJv cihGSUxFICopOwoKZXh0ZXJuIHZvaWQgcGVycm9yKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGlu dCBfX2ZpbGJ1ZihGSUxFICopOwpleHRlcm4gaW50IF9fZmxzYnVmKGludCwgRklMRSAqKTsKIyAz NyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNs dWRlL3N0ZGlvLmgiIDIgMwojIDEwNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4t c29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKdHlwZWRlZiBfX2xvbmdsb25nX3Qg b2ZmX3Q7CiMgMTM0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44 LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwp0eXBlZGVmIF9fdmFfbGlzdCBfX25vdF92YV9saXN0 X187CiMgMTUxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu MC4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdW5zaWduZWQgY2hhciBfc2lidWZbXSwgX3Nv YnVmW107CiMgMTY4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44 LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gRklMRSAqZm9wZW42NChjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQoY29uc3QgY2hhciAqLCBj b25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiBGSUxFICp0bXBmaWxlNjQodm9pZCk7CmV4dGVy biBpbnQgZmdldHBvczY0KEZJTEUgKiwgZnBvc190ICopOwpleHRlcm4gaW50IGZzZXRwb3M2NChG SUxFICosIGNvbnN0IGZwb3NfdCAqKTsKIyAxOTMgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh cmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiB1bnNpZ25l ZCBjaGFyICpfYnVmZW5kdGFiW107CmV4dGVybiBGSUxFICpfbGFzdGJ1ZjsKIyAyMjUgIi91c3Iv bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zdGRp by5oIiAzCmV4dGVybiBjaGFyICp0bXBuYW1fcihjaGFyICopOwojIDIzNiAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDMK ZXh0ZXJuIGludCBzbnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwoK CgoKZXh0ZXJuIGludCB2c25wcmludGYoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgX19n bnVjX3ZhX2xpc3QpOwojIDI1MCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s YXJpczIuOC8zLjAuMi9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIEZJTEUgKmZkb3BlbihpbnQs IGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpjdGVybWlkKGNoYXIgKik7CmV4dGVybiBpbnQg ZmlsZW5vKEZJTEUgKik7CiMgMjYxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gdm9pZCBmbG9ja2ZpbGUo RklMRSAqKTsKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQgZnVu bG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkKEZJTEUgKik7CmV4dGVy biBpbnQgZ2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsKZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkKGlu dCwgRklMRSAqKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkKGludCk7CiMgMjc2ICIvdXNy L2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3Rk aW8uaCIgMwpleHRlcm4gRklMRSAqcG9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpl eHRlcm4gY2hhciAqY3VzZXJpZChjaGFyICopOwpleHRlcm4gY2hhciAqdGVtcG5hbShjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgZ2V0b3B0KGludCwgY2hhciAqY29uc3Qg KiwgY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJuIGludCBvcHRp bmQsIG9wdGVyciwgb3B0b3B0OwpleHRlcm4gaW50IGdldHcoRklMRSAqKTsKZXh0ZXJuIGludCBw dXR3KGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwY2xvc2UoRklMRSAqKTsKCgoKCgoKCmV4dGVy biBpbnQgZnNlZWtvNjQoRklMRSAqLCBvZmZfdCwgaW50KTsKZXh0ZXJuIG9mZl90IGZ0ZWxsbzY0 KEZJTEUgKik7CiMgMjUgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojcHJhZ21hIGlkZW50 ICJAKCMpc3RkbGliLmgJMS40Nwk5OS8xMS8wMyBTTUkiCgojIDEgIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9pc28vc3RkbGliX2lzby5o IiAxIDMKIyAzNyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z LjAuMi9pbmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXN0ZGxp Yl9pc28uaAkxLjIJOTkvMTIvMjEgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVf dGVzdHMuaCIgMSAzCiMgNDAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy aXMyLjgvMy4wLjIvaW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAyIDMKCgoKCgoKZXh0ZXJuIHVu c2lnbmVkIGNoYXIgX19jdHlwZVtdOwojIDU3ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMwp0eXBlZGVm IHN0cnVjdCB7CiAgICAgICAgaW50IHF1b3Q7CiAgICAgICAgaW50IHJlbTsKfSBkaXZfdDsKCnR5 cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIHF1b3Q7CiAgICAgICAgbG9uZyByZW07Cn0gbGRp dl90OwojIDk2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu MC4yL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMwp0eXBlZGVmIGxvbmcgd2NoYXJfdDsKCgoK CgoKZXh0ZXJuIHZvaWQgYWJvcnQodm9pZCk7CmV4dGVybiBpbnQgYWJzKGludCk7CmV4dGVybiBp bnQgYXRleGl0KHZvaWQgKCopKHZvaWQpKTsKZXh0ZXJuIGRvdWJsZSBhdG9mKGNvbnN0IGNoYXIg Kik7CmV4dGVybiBpbnQgYXRvaShjb25zdCBjaGFyICopOwpleHRlcm4gbG9uZyBpbnQgYXRvbChj b25zdCBjaGFyICopOwpleHRlcm4gdm9pZCAqYnNlYXJjaChjb25zdCB2b2lkICosIGNvbnN0IHZv aWQgKiwgc2l6ZV90LCBzaXplX3QsCiAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0 IHZvaWQgKikpOwpleHRlcm4gdm9pZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsKZXh0ZXJuIGRp dl90IGRpdihpbnQsIGludCk7CmV4dGVybiB2b2lkIGV4aXQoaW50KTsKZXh0ZXJuIHZvaWQgZnJl ZSh2b2lkICopOwpleHRlcm4gY2hhciAqZ2V0ZW52KGNvbnN0IGNoYXIgKik7CmV4dGVybiBsb25n IGludCBsYWJzKGxvbmcpOwpleHRlcm4gbGRpdl90IGxkaXYobG9uZywgbG9uZyk7CmV4dGVybiB2 b2lkICptYWxsb2Moc2l6ZV90KTsKZXh0ZXJuIGludCBtYmxlbihjb25zdCBjaGFyICosIHNpemVf dCk7CmV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVf dCk7CmV4dGVybiBpbnQgbWJ0b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwpl eHRlcm4gdm9pZCBxc29ydCh2b2lkICosIHNpemVfdCwgc2l6ZV90LAogICAgICAgIGludCAoKiko Y29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKZXh0ZXJuIGludCByYW5kKHZvaWQpOwpleHRl cm4gdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lkIHNyYW5kKHVuc2ln bmVkIGludCk7CmV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CmV4 dGVybiBsb25nIGludCBzdHJ0b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4g dW5zaWduZWQgbG9uZyBpbnQgc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4 dGVybiBpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgd2N0b21iKGNoYXIgKiwg d2NoYXJfdCk7CmV4dGVybiBzaXplX3Qgd2NzdG9tYnMoY2hhciAqLCBjb25zdCB3Y2hhcl90ICos IHNpemVfdCk7CiMgMTkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCiMgMSAiL3Vzci9p bmNsdWRlL3N5cy93YWl0LmgiIDEgMwojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMwoj cHJhZ21hIGlkZW50ICJAKCMpd2FpdC5oCTEuMjEJOTcvMDQvMDggU01JIgoKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMSAzCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvd2Fp dC5oIiAyIDMKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu OC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCiNw cmFnbWEgaWRlbnQgIkAoIyl0eXBlcy5oCTEuNjYJMDAvMDIvMTQgU01JIgoKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMwojIDI4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw YXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDEgIi91 c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAyOSAiL3Vzci9sb2NhbC9saWIv Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAy IDMKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMuaCIgMSAzCiMgMTYgIi91c3Iv aW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKW1hY2h0eXBlcy5o CTEuMTMJOTkvMDUvMDQgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMu aCIgMSAzCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgiIDIgMwojIDM3ICIvdXNy L2luY2x1ZGUvc3lzL21hY2h0eXBlcy5oIiAzCnR5cGVkZWYgdW5zaWduZWQgY2hhciBsb2NrX3Q7 CiMgMzQgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIv aW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCiMgNDUgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh cmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwojIDEgIi91c3Iv aW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDEgMwojIDkgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5 cGVzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWludF90eXBlcy5oCTEuNgk5Ny8wOC8yMCBTTUki CiMgNDIgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUv c3lzL2lzYV9kZWZzLmgiIDEgMwojIDQzICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAy IDMKIyA2MiAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMwp0eXBlZGVmIGNoYXIgaW50 OF90OwoKCgoKCnR5cGVkZWYgc2hvcnQgaW50MTZfdDsKdHlwZWRlZiBpbnQgaW50MzJfdDsKCgoK CnR5cGVkZWYgbG9uZyBsb25nIGludDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50 OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGlu dCB1aW50MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NF90OwojIDk0 ICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzCnR5cGVkZWYgaW50NjRfdCBpbnRtYXhf dDsKdHlwZWRlZiB1aW50NjRfdCB1aW50bWF4X3Q7CiMgMTEwICIvdXNyL2luY2x1ZGUvc3lzL2lu dF90eXBlcy5oIiAzCnR5cGVkZWYgaW50IGludHB0cl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1 aW50cHRyX3Q7CgoKCgoKCgp0eXBlZGVmIGNoYXIgaW50X2xlYXN0OF90OwoKCgoKCnR5cGVkZWYg c2hvcnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50X2xlYXN0MzJfdDsKCgoKCnR5cGVk ZWYgbG9uZyBsb25nIGludF9sZWFzdDY0X3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50 X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnRfbGVhc3QxNl90Owp0eXBlZGVm IHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBs b25nIHVpbnRfbGVhc3Q2NF90OwojIDQ2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1 bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwojIDYyICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5 cGVzLmgiIDMKdHlwZWRlZiBsb25nIGxvbmcgbG9uZ2xvbmdfdDsKdHlwZWRlZiB1bnNpZ25lZCBs b25nIGxvbmcgdV9sb25nbG9uZ190OwojIDg1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBsb25n IHRfc2NhbGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB0X3VzY2FsYXJfdDsKCgoKCgp0eXBl ZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnRf dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxv bmdfdDsKCnR5cGVkZWYgY2hhciAqY2FkZHJfdDsKdHlwZWRlZiBsb25nIGRhZGRyX3Q7CnR5cGVk ZWYgc2hvcnQgY250X3Q7CgoKdHlwZWRlZiB1bG9uZ190IHBhZGRyX3Q7CiMgMTE4ICIvdXNyL2xv Y2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5 cGVzLmgiIDMKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwojIDEyNyAiL3Vzci9sb2NhbC9saWIvZ2Nj LWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5 cGVkZWYgdWxvbmdfdCBwZm5fdDsKdHlwZWRlZiB1bG9uZ190IHBnY250X3Q7CnR5cGVkZWYgbG9u ZyBzcGdjbnRfdDsKCnR5cGVkZWYgdWNoYXJfdCB1c2VfdDsKdHlwZWRlZiBzaG9ydCBzeXNpZF90 Owp0eXBlZGVmIHNob3J0IGluZGV4X3Q7CnR5cGVkZWYgdm9pZCAqdGltZW91dF9pZF90Owp0eXBl ZGVmIHZvaWQgKmJ1ZmNhbGxfaWRfdDsKIyAxNzAgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3Bh cmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMwp0eXBlZGVmIHVf bG9uZ2xvbmdfdCBpbm9fdDsKdHlwZWRlZiBsb25nbG9uZ190IGJsa2NudF90Owp0eXBlZGVmIHVf bG9uZ2xvbmdfdCBmc2Jsa2NudF90Owp0eXBlZGVmIHVfbG9uZ2xvbmdfdCBmc2ZpbGNudF90Owoj IDE5MyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9p bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZyBibGtzaXplX3Q7CgoKCnR5cGVkZWYg ZW51bSB7IF9CX0ZBTFNFLCBfQl9UUlVFIH0gYm9vbGVhbl90OwojIDIxMCAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5o IiAzCnR5cGVkZWYgaW50NjRfdCBwYWQ2NF90Owp0eXBlZGVmIHVpbnQ2NF90IHVwYWQ2NF90Owoj IDIyMyAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9p bmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgbG9uZ2xvbmdfdCBvZmZzZXRfdDsKdHlwZWRl ZiB1X2xvbmdsb25nX3QgdV9vZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgbGVuX3Q7CnR5 cGVkZWYgbG9uZ2xvbmdfdCBkaXNrYWRkcl90OwojIDI0NCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxp Yi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVk ZWYgdW5pb24gewogICAgICAgIG9mZnNldF90IF9mOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAg ICAgICAgICBpbnQzMl90IF91OwogICAgICAgICAgICAgICAgaW50MzJfdCBfbDsKICAgICAgICB9 IF9wOwp9IGxsb2ZmX3Q7CiMgMjY0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiB1bmlvbiB7CiAg ICAgICAgZGlza2FkZHJfdCBfZjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50 MzJfdCBfdTsKICAgICAgICAgICAgICAgIGludDMyX3QgX2w7CiAgICAgICAgfSBfcDsKfSBsbGRh ZGRyX3Q7CgoKdHlwZWRlZiB1aW50X3Qga19mbHRzZXRfdDsKIyAyODcgIi91c3IvbG9jYWwvbGli L2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIg Mwp0eXBlZGVmIGxvbmcgaWRfdDsKCgoKCgoKdHlwZWRlZiB1aW50X3QgdXNlY29uZHNfdDsKCgoK dHlwZWRlZiBsb25nIHN1c2Vjb25kc190OwojIDMwOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9z cGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYg dWxvbmdfdCBtYWpvcl90Owp0eXBlZGVmIHVsb25nX3QgbWlub3JfdDsKCgoKCgp0eXBlZGVmIHNo b3J0IHByaV90OwojIDMyOCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp czIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCnR5cGVkZWYgdXNob3J0X3Qgb19tb2Rl X3Q7CnR5cGVkZWYgc2hvcnQgb19kZXZfdDsKdHlwZWRlZiB1c2hvcnRfdCBvX3VpZF90Owp0eXBl ZGVmIG9fdWlkX3Qgb19naWRfdDsKdHlwZWRlZiBzaG9ydCBvX25saW5rX3Q7CnR5cGVkZWYgc2hv cnQgb19waWRfdDsKdHlwZWRlZiB1c2hvcnRfdCBvX2lub190OwoKCgoKCnR5cGVkZWYgaW50IGtl eV90OwoKCgp0eXBlZGVmIHVsb25nX3QgbW9kZV90OwoKCgoKCgoKdHlwZWRlZiBsb25nIHVpZF90 OwoKCgp0eXBlZGVmIHVpZF90IGdpZF90OwoKdHlwZWRlZiBpZF90IHRhc2tpZF90Owp0eXBlZGVm IGlkX3QgcHJvamlkX3Q7CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJlYWRfdDsKdHlw ZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFk X211dGV4IHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdWludDE2X3QgX19wdGhy ZWFkX211dGV4X2ZsYWcxOwogICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRfbXV0ZXhf ZmxhZzI7CiAgICAgICAgICAgICAgICB1aW50OF90IF9fcHRocmVhZF9tdXRleF9jZWlsaW5nOwog ICAgICAgICAgICAgICAgdWludDMyX3QgX19wdGhyZWFkX211dGV4X3R5cGU7CiAgICAgICAgfSBf X3B0aHJlYWRfbXV0ZXhfZmxhZ3M7CiAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgc3Ry dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRfbXV0ZXhfcGFk WzhdOwogICAgICAgICAgICAgICAgfSBfX3B0aHJlYWRfbXV0ZXhfbG9jazY0OwogICAgICAgICAg ICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX211dGV4X293bmVyNjQ7CiAgICAgICAgfSBfX3B0aHJl YWRfbXV0ZXhfbG9jazsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfbXV0ZXhfZGF0YTsKfSBw dGhyZWFkX211dGV4X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9jb25kIHsKICAgICAgICBz dHJ1Y3QgewogICAgICAgICAgICAgICAgdWludDhfdCBfX3B0aHJlYWRfY29uZF9mbGFnWzRdOwog ICAgICAgICAgICAgICAgdWludDMyX3QgX19wdGhyZWFkX2NvbmRfdHlwZTsKICAgICAgICB9IF9f cHRocmVhZF9jb25kX2ZsYWdzOwogICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9jb25kX2RhdGE7 Cn0gcHRocmVhZF9jb25kX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2sgewog ICAgICAgIGludDMyX3QgX19wdGhyZWFkX3J3bG9ja19yZWFkZXJzOwogICAgICAgIHVpbnQxNl90 IF9fcHRocmVhZF9yd2xvY2tfdHlwZTsKICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfcndsb2Nr X21hZ2ljOwogICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkMVszXTsKICAgICAg ICB1cGFkNjRfdCBfX3B0aHJlYWRfcndsb2NrX3BhZDJbMl07CiAgICAgICAgdXBhZDY0X3QgX19w dGhyZWFkX3J3bG9ja19wYWQzWzJdOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCgp0eXBlZGVmIHN0 cnVjdCBfcHRocmVhZF9hdHRyIHsKICAgICAgICB2b2lkICpfX3B0aHJlYWRfYXR0cnA7Cn0gcHRo cmVhZF9hdHRyX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfbXV0ZXhhdHRyIHsKICAg ICAgICB2b2lkICpfX3B0aHJlYWRfbXV0ZXhhdHRycDsKfSBwdGhyZWFkX211dGV4YXR0cl90OwoK CgoKCnR5cGVkZWYgc3RydWN0IF9wdGhyZWFkX2NvbmRhdHRyIHsKICAgICAgICB2b2lkICpfX3B0 aHJlYWRfY29uZGF0dHJwOwp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgoKCnR5cGVkZWYgc3RydWN0 IF9vbmNlIHsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfb25jZV9wYWRbNF07Cn0gcHRocmVh ZF9vbmNlX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrYXR0ciB7CiAgICAg ICAgdm9pZCAqX19wdGhyZWFkX3J3bG9ja2F0dHJwOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoK dHlwZWRlZiB1bG9uZ190IGRldl90OwoKCgoKCnR5cGVkZWYgdWxvbmdfdCBubGlua190Owp0eXBl ZGVmIGxvbmcgcGlkX3Q7CiMgNDgxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlwZWRlZiBsb25nIHRpbWVf dDsKCgoKCnR5cGVkZWYgbG9uZyBjbG9ja190OwoKCgoKdHlwZWRlZiBpbnQgY2xvY2tpZF90OwoK CgoKdHlwZWRlZiBpbnQgdGltZXJfdDsKIyAyMSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIg MwoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMSAzCiMgMTYgIi91c3IvaW5j bHVkZS9zeXMvcmVzb3VyY2UuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpcmVzb3VyY2UuaAkxLjI1 CTk4LzA2LzMwIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEg MwojIDE5ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDIgMwoKIyAxICIvdXNyL2xvY2Fs L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVz LmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDIgMwojIDEgIi91c3Iv aW5jbHVkZS9zeXMvdGltZS5oIiAxIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMK I3ByYWdtYSBpZGVudCAiQCgjKXRpbWUuaAkyLjY2CTAxLzAxLzE3IFNNSSIKCiMgMSAiL3Vzci9p bmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3Rp bWUuaCIgMiAzCiMgNDkgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCnN0cnVjdCB0aW1ldmFs IHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAgIHN1c2Vjb25kc190IHR2X3VzZWM7Cn07 CiMgMTAwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMwojIDEgIi91c3IvbG9jYWwvbGliL2dj Yy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAz CiMgMTAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzCiMgMTU1ICIvdXNyL2luY2x1ZGUv c3lzL3RpbWUuaCIgMwpzdHJ1Y3QgaXRpbWVydmFsIHsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBp dF9pbnRlcnZhbDsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKfTsKIyAyMDMgIi91 c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCnR5cGVkZWYgbG9uZ2xvbmdfdCBocnRpbWVfdDsKIyAz MzEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCmludCBnZXRpdGltZXIoaW50LCBzdHJ1Y3Qg aXRpbWVydmFsICopOwppbnQgdXRpbWVzKGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHRpbWV2 YWwgKik7CgppbnQgc2V0aXRpbWVyKGludCwgY29uc3Qgc3RydWN0IGl0aW1lcnZhbCAqLCBzdHJ1 Y3QgaXRpbWVydmFsICopOwojIDM4OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMKaW50IGdl dHRpbWVvZmRheShzdHJ1Y3QgdGltZXZhbCAqLCB2b2lkICopOwojIDQyMyAiL3Vzci9pbmNsdWRl L3N5cy90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMKIyAxMiAi L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc2VsZWN0LmgJ MS4xNgk5OC8wNC8yNyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5o IiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIyAxICIvdXNyL2lu Y2x1ZGUvc3lzL3RpbWUuaCIgMSAzCiMgMTggIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIg MwojIDQ3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzCnR5cGVkZWYgbG9uZyBmZHNfbWFz azsKIyA3NSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMwp0eXBlZGVmIHN0cnVjdCBfX2Zk X3NldCB7CgogICAgICAgIGxvbmcgZmRzX2JpdHNbKCgoMTAyNCkrKCgoc2l6ZW9mIChmZHNfbWFz aykgKiA4KSktMSkpLygoc2l6ZW9mIChmZHNfbWFzaykgKiA4KSkpXTsKfSBmZF9zZXQ7CiMgOTcg Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMKZXh0ZXJuIGludCBzZWxlY3QoaW50LCBmZF9z ZXQgKiwgZmRfc2V0ICosIGZkX3NldCAqLCBzdHJ1Y3QgdGltZXZhbCAqKTsKIyA0MjQgIi91c3Iv aW5jbHVkZS9zeXMvdGltZS5oIiAyIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5o IiAyIDMKIyA3NSAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzCnR5cGVkZWYgdV9sb25n bG9uZ190IHJsaW1fdDsKIyAxMDIgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMwpzdHJ1 Y3QgcmxpbWl0IHsKICAgICAgICBybGltX3QgcmxpbV9jdXI7CiAgICAgICAgcmxpbV90IHJsaW1f bWF4Owp9OwojIDE0MyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzCnN0cnVjdCBydXNh Z2UgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIHJ1X3V0aW1lOwogICAgICAgIHN0cnVjdCB0aW1l dmFsIHJ1X3N0aW1lOwogICAgICAgIGxvbmcgcnVfbWF4cnNzOwogICAgICAgIGxvbmcgcnVfaXhy c3M7CiAgICAgICAgbG9uZyBydV9pZHJzczsKICAgICAgICBsb25nIHJ1X2lzcnNzOwogICAgICAg IGxvbmcgcnVfbWluZmx0OwogICAgICAgIGxvbmcgcnVfbWFqZmx0OwogICAgICAgIGxvbmcgcnVf bnN3YXA7CiAgICAgICAgbG9uZyBydV9pbmJsb2NrOwogICAgICAgIGxvbmcgcnVfb3VibG9jazsK ICAgICAgICBsb25nIHJ1X21zZ3NuZDsKICAgICAgICBsb25nIHJ1X21zZ3JjdjsKICAgICAgICBs b25nIHJ1X25zaWduYWxzOwogICAgICAgIGxvbmcgcnVfbnZjc3c7CiAgICAgICAgbG9uZyBydV9u aXZjc3c7Cn07CiMgMTkzICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMKZXh0ZXJuIGlu dCBzZXRybGltaXQ2NChpbnQsIGNvbnN0IHN0cnVjdCBybGltaXQ2NCAqKTsKZXh0ZXJuIGludCBn ZXRybGltaXQ2NChpbnQsIHN0cnVjdCBybGltaXQ2NCAqKTsKIyAyMDMgIi91c3IvaW5jbHVkZS9z eXMvcmVzb3VyY2UuaCIgMwpleHRlcm4gaW50IGdldHByaW9yaXR5KGludCwgaWRfdCk7CmV4dGVy biBpbnQgc2V0cHJpb3JpdHkoaW50LCBpZF90LCBpbnQpOwpleHRlcm4gaW50IGdldHJ1c2FnZShp bnQsIHN0cnVjdCBydXNhZ2UgKik7CiMgMjUgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMK IyAxICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9z eXMvc2lnaW5mby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylzaWdpbmZvLmgJMS41NAk5OC8wMy8y NyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAi L3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDIgMwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMg MjAgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAyIDMKIyAzNCAiL3Vzci9pbmNsdWRlL3N5 cy9zaWdpbmZvLmgiIDMKdW5pb24gc2lndmFsIHsKICAgICAgICBpbnQgc2l2YWxfaW50OwogICAg ICAgIHZvaWQgKnNpdmFsX3B0cjsKfTsKIyA2OSAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgi IDMKc3RydWN0IHNpZ2V2ZW50IHsKICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIGlu dCBzaWdldl9zaWdubzsKICAgICAgICB1bmlvbiBzaWd2YWwgc2lnZXZfdmFsdWU7CiAgICAgICAg dm9pZCAoKnNpZ2V2X25vdGlmeV9mdW5jdGlvbikodW5pb24gc2lndmFsKTsKICAgICAgICBwdGhy ZWFkX2F0dHJfdCAqc2lnZXZfbm90aWZ5X2F0dHJpYnV0ZXM7CiAgICAgICAgaW50IF9fc2lnZXZf cGFkMjsKfTsKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAzCiMgMSAiL3Vzci9p bmNsdWRlL3N5cy9tYWNoc2lnLmgiIDEgMwojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL21hY2hzaWcu aCIgMwojcHJhZ21hIGlkZW50ICJAKCMpbWFjaHNpZy5oCTEuMTUJOTkvMDgvMTUgU01JIgoKIyAx ICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMSAzCiMgMTkgIi91c3IvaW5jbHVk ZS9zeXMvbWFjaHNpZy5oIiAyIDMKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAy IDMKIyAyMDggIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5mby5oIiAzCiMgMSAiL3Vzci9pbmNsdWRl L3N5cy90aW1lX3N0ZF9pbXBsLmgiIDEgMwojIDE5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfc3Rk X2ltcGwuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9zdGRfaW1wbC5oCTEuMgk5OC8wMi8x MyBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAyMiAi L3Vzci9pbmNsdWRlL3N5cy90aW1lX3N0ZF9pbXBsLmgiIDIgMwojIDMyICIvdXNyL2luY2x1ZGUv c3lzL3RpbWVfc3RkX2ltcGwuaCIgMwp0eXBlZGVmIHN0cnVjdCBfdGltZXNwZWMgewogICAgICAg IHRpbWVfdCBfX3R2X3NlYzsKICAgICAgICBsb25nIF9fdHZfbnNlYzsKfSBfdGltZXNwZWNfdDsK CnR5cGVkZWYgc3RydWN0IF90aW1lc3BlYyBfdGltZXN0cnVjX3Q7CiMgMjA5ICIvdXNyL2luY2x1 ZGUvc3lzL3NpZ2luZm8uaCIgMiAzCiMgMjE3ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIg MwojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIv aW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjE4ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8u aCIgMiAzCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewoKICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAg ICAgaW50IHNpX2NvZGU7CiAgICAgICAgaW50IHNpX2Vycm5vOwoKCgogICAgICAgIHVuaW9uIHsK CiAgICAgICAgICAgICAgICBpbnQgX19wYWRbKCgxMjggLyBzaXplb2YgKGludCkpIC0gMyldOwoK ICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9f cGlkOwogICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpZF90IF9fdWlkOwoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bmlvbiBzaWd2YWwgX192YWx1ZTsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9IF9fa2lsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfX3V0aW1lOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fc3RhdHVzOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2tfdCBfX3N0aW1lOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0gX19jbGQ7CiAgICAgICAgICAgICAgICAgICAgICAg IH0gX19wZGF0YTsKICAgICAgICAgICAgICAgIH0gX19wcm9jOwoKICAgICAgICAgICAgICAgIHN0 cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKl9fYWRkcjsKICAgICAgICAgICAg ICAgICAgICAgICAgaW50IF9fdHJhcG5vOwogICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90 IF9fcGM7CiAgICAgICAgICAgICAgICB9IF9fZmF1bHQ7CgogICAgICAgICAgICAgICAgc3RydWN0 IHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2ZkOwogICAgICAgICAgICAgICAgICAg ICAgICBsb25nIF9fYmFuZDsKICAgICAgICAgICAgICAgIH0gX19maWxlOwoKICAgICAgICAgICAg ICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgX19mYWRkcjsKCgoK CiAgICAgICAgICAgICAgICAgICAgICAgIF90aW1lc3RydWNfdCBfX3RzdGFtcDsKCiAgICAgICAg ICAgICAgICAgICAgICAgIHNob3J0IF9fc3lzY2FsbDsKICAgICAgICAgICAgICAgICAgICAgICAg Y2hhciBfX25zeXNhcmc7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19mYXVsdDsKICAg ICAgICAgICAgICAgICAgICAgICAgbG9uZyBfX3N5c2FyZ1s4XTsKICAgICAgICAgICAgICAgICAg ICAgICAgaW50IF9fbXN0YXRlWzEwXTsKICAgICAgICAgICAgICAgIH0gX19wcm9mOwoKICAgICAg ICB9IF9fZGF0YTsKCn0gc2lnaW5mb190OwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIg MiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0LmgiIDEgMwojIDE2ICIvdXNyL2luY2x1 ZGUvc3lzL3Byb2NzZXQuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpcHJvY3NldC5oCTEuMjAJMDAv MDIvMTQgU01JIgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEg MwojIDIzICIvdXNyL2luY2x1ZGUvc3lzL3Byb2NzZXQuaCIgMiAzCiMgMSAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5cy90eXBlcy5o IiAxIDMKIyAyNCAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0LmgiIDIgMwojIDQxICIvdXNyL2lu Y2x1ZGUvc3lzL3Byb2NzZXQuaCIgMwp0eXBlZGVmIGVudW0KCgoKICAgICAgICAgICAgICAgIHsK ICAgICAgICBQX1BJRCwKICAgICAgICBQX1BQSUQsCiAgICAgICAgUF9QR0lELAoKICAgICAgICBQ X1NJRCwKICAgICAgICBQX0NJRCwKICAgICAgICBQX1VJRCwKICAgICAgICBQX0dJRCwKICAgICAg ICBQX0FMTCwKICAgICAgICBQX0xXUElELAogICAgICAgIFBfVEFTS0lELAogICAgICAgIFBfUFJP SklECn0gaWR0eXBlX3Q7CiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAyIDMKIyA4NiAi L3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMKZXh0ZXJuIHBpZF90IHdhaXQoaW50ICopOwpleHRl cm4gcGlkX3Qgd2FpdHBpZChwaWRfdCwgaW50ICosIGludCk7CgoKZXh0ZXJuIGludCB3YWl0aWQo aWR0eXBlX3QsIGlkX3QsIHNpZ2luZm9fdCAqLCBpbnQpOwpleHRlcm4gcGlkX3Qgd2FpdDMoaW50 ICosIGludCwgc3RydWN0IHJ1c2FnZSAqKTsKIyAyMyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy IDMKIyA2OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAg ICBsb25nIGxvbmcgcXVvdDsKICAgICAgICBsb25nIGxvbmcgcmVtOwp9IGxsZGl2X3Q7CiMgMTA5 ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGludCByYW5kX3IodW5zaWduZWQgaW50 ICopOwoKCmV4dGVybiB2b2lkIF9leGl0aGFuZGxlKHZvaWQpOwoKCgoKZXh0ZXJuIGRvdWJsZSBk cmFuZDQ4KHZvaWQpOwpleHRlcm4gZG91YmxlIGVyYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4 dGVybiBsb25nIGpyYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiB2b2lkIGxjb25nNDgo dW5zaWduZWQgc2hvcnQgKik7CmV4dGVybiBsb25nIGxyYW5kNDgodm9pZCk7CmV4dGVybiBsb25n IG1yYW5kNDgodm9pZCk7CmV4dGVybiBsb25nIG5yYW5kNDgodW5zaWduZWQgc2hvcnQgKik7CmV4 dGVybiB1bnNpZ25lZCBzaG9ydCAqc2VlZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gdm9p ZCBzcmFuZDQ4KGxvbmcpOwpleHRlcm4gaW50IHB1dGVudihjaGFyICopOwpleHRlcm4gdm9pZCBz ZXRrZXkoY29uc3QgY2hhciAqKTsKIyAxNTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRl cm4gaW50IG1rc3RlbXA2NChjaGFyICopOwojIDE2MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz CmV4dGVybiBsb25nIGE2NGwoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmVjdnQoZG91Ymxl LCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpmY3Z0KGRvdWJsZSwgaW50LCBpbnQg KiwgaW50ICopOwpleHRlcm4gY2hhciAqZ2N2dChkb3VibGUsIGludCwgY2hhciAqKTsKZXh0ZXJu IGludCBnZXRzdWJvcHQoY2hhciAqKiwgY2hhciAqY29uc3QgKiwgY2hhciAqKik7CmV4dGVybiBp bnQgZ3JhbnRwdChpbnQpOwpleHRlcm4gY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICos IHNpemVfdCk7CmV4dGVybiBjaGFyICpsNjRhKGxvbmcpOwpleHRlcm4gY2hhciAqbWt0ZW1wKGNo YXIgKik7CmV4dGVybiBjaGFyICpwdHNuYW1lKGludCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lk KTsKZXh0ZXJuIGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNo YXIgKnNldHN0YXRlKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQp OwpleHRlcm4gaW50IHR0eXNsb3Qodm9pZCk7CmV4dGVybiBpbnQgdW5sb2NrcHQoaW50KTsKZXh0 ZXJuIHZvaWQgKnZhbGxvYyhzaXplX3QpOwojIDI2ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKIyAx ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1 ZGUvc3RkYXJnLmgiIDEgMwojIDkwICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z b2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3RkYXJnLmgiIDMKdHlwZWRlZiBfX2dudWNfdmFfbGlz dCB2YV9saXN0OwojIDI3ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAxIDMKIyAxNiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCiNwcmFnbWEgaWRl bnQgIkAoIyl1bmlzdGQuaAkxLjU4CTk5LzExLzExIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDE5ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoK IyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2lu Y2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDIxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoj IDEgIi91c3IvaW5jbHVkZS9zeXMvdW5pc3RkLmgiIDEgMwojIDI1ICIvdXNyL2luY2x1ZGUvc3lz L3VuaXN0ZC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl1bmlzdGQuaAkxLjM3CTk4LzEwLzI4IFNN SSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDI4ICIvdXNy L2luY2x1ZGUvc3lzL3VuaXN0ZC5oIiAyIDMKIyAyMiAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAy IDMKIyAxNzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwpleHRlcm4gaW50IGFjY2Vzcyhjb25z dCBjaGFyICosIGludCk7CgoKCgpleHRlcm4gdW5zaWduZWQgYWxhcm0odW5zaWduZWQpOwoKCmV4 dGVybiBpbnQgYnJrKHZvaWQgKik7CgpleHRlcm4gaW50IGNoZGlyKGNvbnN0IGNoYXIgKik7CmV4 dGVybiBpbnQgY2hvd24oY29uc3QgY2hhciAqLCB1aWRfdCwgZ2lkX3QpOwoKCmV4dGVybiBpbnQg Y2hyb290KGNvbnN0IGNoYXIgKik7CgpleHRlcm4gaW50IGNsb3NlKGludCk7CgoKZXh0ZXJuIHNp emVfdCBjb25mc3RyKGludCwgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gY2hhciAqY3J5cHQoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZChjaGFyICop OwoKCmV4dGVybiBjaGFyICpjdGVybWlkX3IoY2hhciAqKTsKCmV4dGVybiBjaGFyICpjdXNlcmlk KGNoYXIgKik7CmV4dGVybiBpbnQgZHVwKGludCk7CmV4dGVybiBpbnQgZHVwMihpbnQsIGludCk7 CgoKZXh0ZXJuIHZvaWQgZW5jcnlwdChjaGFyICosIGludCk7CgpleHRlcm4gaW50IGV4ZWNsKGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IGV4ZWNsZShjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIGludCBleGVjbHAoY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICosIC4uLik7CmV4dGVybiBpbnQgZXhlY3YoY29uc3QgY2hhciAqLCBjaGFy ICpjb25zdCAqKTsKZXh0ZXJuIGludCBleGVjdmUoY29uc3QgY2hhciAqLCBjaGFyICpjb25zdCAq LCBjaGFyICpjb25zdCAqKTsKZXh0ZXJuIGludCBleGVjdnAoY29uc3QgY2hhciAqLCBjaGFyICpj b25zdCAqKTsKZXh0ZXJuIHZvaWQgX2V4aXQoaW50KTsKIyAyMjUgIi91c3IvaW5jbHVkZS91bmlz dGQuaCIgMwpleHRlcm4gaW50IGZjaGRpcihpbnQpOwpleHRlcm4gaW50IGZjaG93bihpbnQsIHVp ZF90LCBnaWRfdCk7CgoKCgoKCgpleHRlcm4gaW50IGZkYXRhc3luYyhpbnQpOwojIDI0NSAiL3Vz ci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBwaWRfdCBmb3JrKHZvaWQpOwoKCgoKZXh0ZXJu IGxvbmcgZnBhdGhjb25mKGludCwgaW50KTsKCgpleHRlcm4gaW50IGZzeW5jKGludCk7CgoKCgpl eHRlcm4gaW50IGZ0cnVuY2F0ZTY0KGludCwgb2ZmX3QpOwoKZXh0ZXJuIGNoYXIgKmdldGN3ZChj aGFyICosIHNpemVfdCk7CgoKZXh0ZXJuIGludCBnZXRkdGFibGVzaXplKHZvaWQpOwoKZXh0ZXJu IGdpZF90IGdldGVnaWQodm9pZCk7CmV4dGVybiB1aWRfdCBnZXRldWlkKHZvaWQpOwpleHRlcm4g Z2lkX3QgZ2V0Z2lkKHZvaWQpOwpleHRlcm4gaW50IGdldGdyb3VwcyhpbnQsIGdpZF90ICopOwoK CmV4dGVybiBsb25nIGdldGhvc3RpZCh2b2lkKTsKCgpleHRlcm4gaW50IGdldGhvc3RuYW1lKGNo YXIgKiwgc2l6ZV90KTsKCgoKCmV4dGVybiBjaGFyICpnZXRsb2dpbih2b2lkKTsKCgpleHRlcm4g aW50IGdldG9wdChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFy ICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0ZXJyLCBvcHRpbmQsIG9wdG9wdDsKZXh0ZXJuIGNoYXIg KmdldHBhc3MoY29uc3QgY2hhciAqKTsKCgoKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSh2b2lkKTsK ZXh0ZXJuIHBpZF90IGdldHBnaWQocGlkX3QpOwoKZXh0ZXJuIHBpZF90IGdldHBpZCh2b2lkKTsK ZXh0ZXJuIHBpZF90IGdldHBwaWQodm9pZCk7CmV4dGVybiBwaWRfdCBnZXRwZ3JwKHZvaWQpOwoK CgoKCgpleHRlcm4gcGlkX3QgZ2V0c2lkKHBpZF90KTsKCmV4dGVybiB1aWRfdCBnZXR1aWQodm9p ZCk7CgoKZXh0ZXJuIGNoYXIgKmdldHdkKGNoYXIgKik7CiMgMzIxICIvdXNyL2luY2x1ZGUvdW5p c3RkLmgiIDMKZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKZXh0ZXJuIGludCBsaW5rKGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IGxjaG93bihjb25zdCBjaGFyICosIHVp ZF90LCBnaWRfdCk7CgoKCgpleHRlcm4gaW50IGxvY2tmNjQoaW50LCBpbnQsIG9mZl90KTsKCgoK ZXh0ZXJuIGludCByZWFkbGluayhjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90KTsKCmV4dGVy biBvZmZfdCBsc2VlazY0KGludCwgb2ZmX3QsIGludCk7CgoKZXh0ZXJuIGludCBuaWNlKGludCk7 CgpleHRlcm4gbG9uZyBwYXRoY29uZihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBpbnQgcGF1 c2Uodm9pZCk7CmV4dGVybiBpbnQgcGlwZShpbnQgKik7CgoKCgoKCgpleHRlcm4gb2ZmX3QgdGVs bDY0KGludCk7CiMgMzYwICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKZXh0ZXJuIHNzaXplX3Qg cHJlYWQ2NChpbnQsIHZvaWQgKiwgc2l6ZV90LCBvZmZfdCk7CgoKCgoKCgpleHRlcm4gaW50IHB0 aHJlYWRfYXRmb3JrKHZvaWQgKCopICh2b2lkKSwgdm9pZCAoKikgKHZvaWQpLCB2b2lkICgqKSAo dm9pZCkpOwojIDM3NyAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCmV4dGVybiBzc2l6ZV90IHB3 cml0ZTY0KGludCwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIG9mZl90KTsKCmV4dGVybiBzc2l6ZV90 IHJlYWQoaW50LCB2b2lkICosIHNpemVfdCk7CiMgMzg4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDMKZXh0ZXJuIGludCBybWRpcihjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lkICpzYnJrKGlu dHB0cl90KTsKCmV4dGVybiBpbnQgc2V0Z2lkKGdpZF90KTsKIyA0MDIgIi91c3IvaW5jbHVkZS91 bmlzdGQuaCIgMwpleHRlcm4gaW50IHNldHBnaWQocGlkX3QsIHBpZF90KTsKCgpleHRlcm4gcGlk X3Qgc2V0cGdycCh2b2lkKTsKZXh0ZXJuIGludCBzZXRyZWdpZChnaWRfdCwgZ2lkX3QpOwpleHRl cm4gaW50IHNldHJldWlkKHVpZF90LCB1aWRfdCk7CgpleHRlcm4gcGlkX3Qgc2V0c2lkKHZvaWQp OwpleHRlcm4gaW50IHNldHVpZCh1aWRfdCk7CgoKCgpleHRlcm4gdW5zaWduZWQgc2xlZXAodW5z aWduZWQpOwoKCgoKCgpleHRlcm4gdm9pZCBzd2FiKGNvbnN0IHZvaWQgKiwgdm9pZCAqLCBzc2l6 ZV90KTsKCgoKZXh0ZXJuIGludCBzeW1saW5rKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK ZXh0ZXJuIHZvaWQgc3luYyh2b2lkKTsKCmV4dGVybiBsb25nIHN5c2NvbmYoaW50KTsKCgoKCmV4 dGVybiBsb25nIF9fc3lzY29uZl94cGc1KGludCk7CgoKCmV4dGVybiBwaWRfdCB0Y2dldHBncnAo aW50KTsKZXh0ZXJuIGludCB0Y3NldHBncnAoaW50LCBwaWRfdCk7CgoKCgoKCgpleHRlcm4gaW50 IHRydW5jYXRlNjQoY29uc3QgY2hhciAqLCBvZmZfdCk7CgpleHRlcm4gY2hhciAqdHR5bmFtZShp bnQpOwoKCmV4dGVybiB1c2Vjb25kc190IHVhbGFybSh1c2Vjb25kc190LCB1c2Vjb25kc190KTsK CmV4dGVybiBpbnQgdW5saW5rKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGludCB1c2xlZXAodXNl Y29uZHNfdCk7CgoKCmV4dGVybiBwaWRfdCB2Zm9yayh2b2lkKTsKCgoKCgpleHRlcm4gc3NpemVf dCB3cml0ZShpbnQsIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKIyA4MzQgIi91c3IvaW5jbHVkZS91 bmlzdGQuaCIgMwpzdGF0aWMgaW50CmdldGxvZ2luX3IoY2hhciAqX19uYW1lLCBpbnQgX19sZW4p CnsKICAgICAgICBleHRlcm4gaW50IF9fcG9zaXhfZ2V0bG9naW5fcihjaGFyICosIGludCk7CiAg ICAgICAgcmV0dXJuIChfX3Bvc2l4X2dldGxvZ2luX3IoX19uYW1lLCBfX2xlbikpOwp9CnN0YXRp YyBpbnQKdHR5bmFtZV9yKGludCBfX2ZpbGRlcywgY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUp CnsKICAgICAgICBleHRlcm4gaW50IF9fcG9zaXhfdHR5bmFtZV9yKGludCwgY2hhciAqLCBzaXpl X3QpOwogICAgICAgIHJldHVybiAoX19wb3NpeF90dHluYW1lX3IoX19maWxkZXMsIF9fYnVmLCBf X3NpemUpKTsKfQojIDI5ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKIyAzOSAiLi4vbWFnaWNrL21h Z2ljay5oIgojIDEgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVk ZS9zdHJpbmcuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpc3RyaW5nLmgJMS4yNAk5OS8wOC8xMCBT TUkiCgojIDEgIi91c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAxIDMKIyAyOCAiL3Vzci9p bmNsdWRlL2lzby9zdHJpbmdfaXNvLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXN0cmluZ19pc28u aAkxLjIJOTkvMTEvMDkgU01JIgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3Rz LmgiIDEgMwojIDMyICIvdXNyL2luY2x1ZGUvaXNvL3N0cmluZ19pc28uaCIgMiAzCiMgNjAgIi91 c3IvaW5jbHVkZS9pc28vc3RyaW5nX2lzby5oIiAzCmV4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZv aWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKiwg Y29uc3Qgdm9pZCAqLCBzaXplX3QpOwpleHRlcm4gdm9pZCAqbWVtbW92ZSh2b2lkICosIGNvbnN0 IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgKm1lbXNldCh2b2lkICosIGludCwgc2l6ZV90 KTsKZXh0ZXJuIGNoYXIgKnN0cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQg c3RyY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0cmNweShj aGFyICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc3RyY29sbChjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKik7CmV4dGVybiBzaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKik7CmV4dGVybiBjaGFyICpzdHJlcnJvcihpbnQpOwpleHRlcm4gc2l6ZV90IHN0cmxlbihj b25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqc3RybmNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwg c2l6ZV90KTsKZXh0ZXJuIGludCBzdHJuY21wKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBz aXplX3QpOwpleHRlcm4gY2hhciAqc3RybmNweShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90 KTsKZXh0ZXJuIHNpemVfdCBzdHJzcG4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl cm4gY2hhciAqc3RydG9rKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHNpemVfdCBzdHJ4 ZnJtKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwojIDExMiAiL3Vzci9pbmNsdWRlL2lz by9zdHJpbmdfaXNvLmgiIDMKZXh0ZXJuIHZvaWQgKm1lbWNocihjb25zdCB2b2lkICosIGludCwg c2l6ZV90KTsKZXh0ZXJuIGNoYXIgKnN0cmNocihjb25zdCBjaGFyICosIGludCk7CmV4dGVybiBj aGFyICpzdHJwYnJrKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnN0 cnJjaHIoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gY2hhciAqc3Ryc3RyKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqKTsKIyAxOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKIyA1OCAi L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJ0b2tfcihjaGFyICosIGNv bnN0IGNoYXIgKiwgY2hhciAqKik7CgoKCgpleHRlcm4gdm9pZCAqbWVtY2NweSh2b2lkICosIGNv bnN0IHZvaWQgKiwgaW50LCBzaXplX3QpOwojIDc5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMK ZXh0ZXJuIGNoYXIgKnN0cmR1cChjb25zdCBjaGFyICopOwojIDQwICIuLi9tYWdpY2svbWFnaWNr LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9j dHlwZS5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyljdHlwZS5oCTEuMzMJOTkvMDgvMTAgU01JIgoK IyAxICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRl L2lzby9jdHlwZV9pc28uaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpY3R5cGVfaXNvLmgJMS4xCTk5 LzA4LzA5IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMwoj IDMxICIvdXNyL2luY2x1ZGUvaXNvL2N0eXBlX2lzby5oIiAyIDMKIyA2MyAiL3Vzci9pbmNsdWRl L2lzby9jdHlwZV9pc28uaCIgMwpleHRlcm4gaW50IGlzYWxudW0oaW50KTsKZXh0ZXJuIGludCBp c2FscGhhKGludCk7CmV4dGVybiBpbnQgaXNjbnRybChpbnQpOwpleHRlcm4gaW50IGlzZGlnaXQo aW50KTsKZXh0ZXJuIGludCBpc2dyYXBoKGludCk7CmV4dGVybiBpbnQgaXNsb3dlcihpbnQpOwpl eHRlcm4gaW50IGlzcHJpbnQoaW50KTsKZXh0ZXJuIGludCBpc3B1bmN0KGludCk7CmV4dGVybiBp bnQgaXNzcGFjZShpbnQpOwpleHRlcm4gaW50IGlzdXBwZXIoaW50KTsKZXh0ZXJuIGludCBpc3hk aWdpdChpbnQpOwoKCgoKCgoKZXh0ZXJuIGludCB0b2xvd2VyKGludCk7CmV4dGVybiBpbnQgdG91 cHBlcihpbnQpOwoKCgoKCmV4dGVybiB1bnNpZ25lZCBjaGFyIF9fY3R5cGVbXTsKZXh0ZXJuIHVu c2lnbmVkIGludCAqX19jdHlwZV9tYXNrOwpleHRlcm4gaW50ICpfX3RyYW5zX3VwcGVyOwpleHRl cm4gaW50ICpfX3RyYW5zX2xvd2VyOwojIDE5ICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMiAzCiMg NDkgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCmV4dGVybiBpbnQgaXNhc2NpaShpbnQpOwpleHRl cm4gaW50IHRvYXNjaWkoaW50KTsKZXh0ZXJuIGludCBfdG9sb3dlcihpbnQpOwpleHRlcm4gaW50 IF90b3VwcGVyKGludCk7CiMgNDEgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5j bHVkZS9sb2NhbGUuaCIgMSAzCiMgOSAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAzCiNwcmFnbWEg aWRlbnQgIkAoIylsb2NhbGUuaAkxLjE5CTk5LzA4LzEwIFNNSSIKIyA0NiAiL3Vzci9pbmNsdWRl L2xvY2FsZS5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL2lzby9sb2NhbGVfaXNvLmgiIDEgMwojIDQ1 ICIvdXNyL2luY2x1ZGUvaXNvL2xvY2FsZV9pc28uaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpbG9j YWxlX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVy ZV90ZXN0cy5oIiAxIDMKIyA0OCAiL3Vzci9pbmNsdWRlL2lzby9sb2NhbGVfaXNvLmgiIDIgMwoj IDU3ICIvdXNyL2luY2x1ZGUvaXNvL2xvY2FsZV9pc28uaCIgMwpzdHJ1Y3QgbGNvbnYgewogICAg ICAgIGNoYXIgKmRlY2ltYWxfcG9pbnQ7CiAgICAgICAgY2hhciAqdGhvdXNhbmRzX3NlcDsKICAg ICAgICBjaGFyICpncm91cGluZzsKICAgICAgICBjaGFyICppbnRfY3Vycl9zeW1ib2w7CiAgICAg ICAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogICAgICAgIGNoYXIgKm1vbl9kZWNpbWFsX3BvaW50 OwogICAgICAgIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOwogICAgICAgIGNoYXIgKm1vbl9ncm91 cGluZzsKICAgICAgICBjaGFyICpwb3NpdGl2ZV9zaWduOwogICAgICAgIGNoYXIgKm5lZ2F0aXZl X3NpZ247CiAgICAgICAgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgICAgICAgY2hhciBmcmFjX2Rp Z2l0czsKICAgICAgICBjaGFyIHBfY3NfcHJlY2VkZXM7CiAgICAgICAgY2hhciBwX3NlcF9ieV9z cGFjZTsKICAgICAgICBjaGFyIG5fY3NfcHJlY2VkZXM7CiAgICAgICAgY2hhciBuX3NlcF9ieV9z cGFjZTsKICAgICAgICBjaGFyIHBfc2lnbl9wb3NuOwogICAgICAgIGNoYXIgbl9zaWduX3Bvc247 Cn07CiMgOTUgIi91c3IvaW5jbHVkZS9pc28vbG9jYWxlX2lzby5oIiAzCmV4dGVybiBjaGFyICpz ZXRsb2NhbGUoaW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gc3RydWN0IGxjb252ICpsb2NhbGVj b252KHZvaWQpOwojIDQ3ICIvdXNyL2luY2x1ZGUvbG9jYWxlLmgiIDIgMwojIDQyICIuLi9tYWdp Y2svbWFnaWNrLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMSAzCiMgMTcgIi91c3Iv aW5jbHVkZS9lcnJuby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyllcnJuby5oCTEuMTYJOTkvMDcv MjYgU01JIgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9lcnJuby5oIiAxIDMKIyAxMSAiL3Vz ci9pbmNsdWRlL3N5cy9lcnJuby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyllcnJuby5oCTEuMjAJ MDAvMDIvMTQgU01JIgojIDI0ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAzCiMgMzggIi91c3Iv aW5jbHVkZS9lcnJuby5oIiAzCmV4dGVybiBpbnQgKl9fX2Vycm5vKCk7CiMgNDMgIi4uL21hZ2lj ay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5jbHVkZS9mY250bC5oIiAxIDMKIyAxNiAiL3Vzci9p bmNsdWRlL2ZjbnRsLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKWZjbnRsLmgJMS4xNAk5Ny8xMi8w NSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAi L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0Lmgi IDEgMwojIDE4ICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMp c3RhdC5oCTEuMgk5OS8wNS8xOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90 ZXN0cy5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDIgMwojIDEgIi91c3Iv bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyA0NCAiL3Vz ci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfc3RkX2lt cGwuaCIgMSAzCiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyAyMzQgIi91c3Iv aW5jbHVkZS9zeXMvc3RhdC5oIiAzCnN0cnVjdCBzdGF0NjQgewogICAgICAgIGRldl90IHN0X2Rl djsKICAgICAgICBsb25nIHN0X3BhZDFbM107CiAgICAgICAgaW5vX3Qgc3RfaW5vOwogICAgICAg IG1vZGVfdCBzdF9tb2RlOwogICAgICAgIG5saW5rX3Qgc3Rfbmxpbms7CiAgICAgICAgdWlkX3Qg c3RfdWlkOwogICAgICAgIGdpZF90IHN0X2dpZDsKICAgICAgICBkZXZfdCBzdF9yZGV2OwogICAg ICAgIGxvbmcgc3RfcGFkMlsyXTsKICAgICAgICBvZmZfdCBzdF9zaXplOwojIDI1NCAiL3Vzci9p bmNsdWRlL3N5cy9zdGF0LmgiIDMKICAgICAgICBfdGltZXN0cnVjX3Qgc3RfYXRpbTsKICAgICAg ICBfdGltZXN0cnVjX3Qgc3RfbXRpbTsKICAgICAgICBfdGltZXN0cnVjX3Qgc3RfY3RpbTsKCiAg ICAgICAgYmxrc2l6ZV90IHN0X2Jsa3NpemU7CiAgICAgICAgYmxrY250X3Qgc3RfYmxvY2tzOwog ICAgICAgIGNoYXIgc3RfZnN0eXBlWzE2XTsKICAgICAgICBsb25nIHN0X3BhZDRbOF07Cn07CiMg NDcwICIvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMwpleHRlcm4gaW50IGZjaG1vZChpbnQsIG1v ZGVfdCk7CgoKZXh0ZXJuIGludCBjaG1vZChjb25zdCBjaGFyICosIG1vZGVfdCk7CmV4dGVybiBp bnQgbWtkaXIoY29uc3QgY2hhciAqLCBtb2RlX3QpOwpleHRlcm4gaW50IG1rZmlmbyhjb25zdCBj aGFyICosIG1vZGVfdCk7CmV4dGVybiBtb2RlX3QgdW1hc2sobW9kZV90KTsKIyA1MDkgIi91c3Iv aW5jbHVkZS9zeXMvc3RhdC5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwuaCIg MSAzCiMgOSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwuaCIgMwojcHJhZ21hIGlkZW50ICJA KCMpc3RhdF9pbXBsLmgJMS4xCTk5LzA1LzA0IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9m ZWF0dXJlX3Rlc3RzLmgiIDEgMwojIDEyICIvdXNyL2luY2x1ZGUvc3lzL3N0YXRfaW1wbC5oIiAy IDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4y L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDEzICIvdXNyL2luY2x1ZGUvc3lzL3N0YXRfaW1w bC5oIiAyIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0X2ltcGwuaCIgMwpleHRlcm4gaW50 IGZzdGF0NjQoaW50LCBzdHJ1Y3Qgc3RhdDY0ICopOwpleHRlcm4gaW50IHN0YXQ2NChjb25zdCBj aGFyICosIHN0cnVjdCBzdGF0NjQgKik7CgoKCmV4dGVybiBpbnQgbHN0YXQ2NChjb25zdCBjaGFy ICosIHN0cnVjdCBzdGF0NjQgKik7CmV4dGVybiBpbnQgbWtub2QoY29uc3QgY2hhciAqLCBtb2Rl X3QsIGRldl90KTsKIyA1MTAgIi91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMKIyAyMiAiL3Vz ci9pbmNsdWRlL2ZjbnRsLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJj LXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDI0ICIvdXNy L2luY2x1ZGUvZmNudGwuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAxIDMK IyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9mY250bC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylmY250 bC5oCTEuNDUJOTgvMDcvMTcgU01JIgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVz dHMuaCIgMSAzCiMgMTkgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMiAzCgojIDEgIi91c3Iv bG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMv dHlwZXMuaCIgMSAzCiMgMjEgIi91c3IvaW5jbHVkZS9zeXMvZmNudGwuaCIgMiAzCiMgMTY0ICIv dXNyL2luY2x1ZGUvc3lzL2ZjbnRsLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgZmxvY2sgewogICAgICAg IHNob3J0IGxfdHlwZTsKICAgICAgICBzaG9ydCBsX3doZW5jZTsKICAgICAgICBvZmZfdCBsX3N0 YXJ0OwogICAgICAgIG9mZl90IGxfbGVuOwogICAgICAgIGludCBsX3N5c2lkOwogICAgICAgIHBp ZF90IGxfcGlkOwogICAgICAgIGxvbmcgbF9wYWRbNF07Cn0gZmxvY2tfdDsKIyAyNSAiL3Vzci9p bmNsdWRlL2ZjbnRsLmgiIDIgMwojIDcyICIvdXNyL2luY2x1ZGUvZmNudGwuaCIgMwpleHRlcm4g aW50IGZjbnRsKGludCwgaW50LCAuLi4pOwpleHRlcm4gaW50IG9wZW42NChjb25zdCBjaGFyICos IGludCwgLi4uKTsKZXh0ZXJuIGludCBjcmVhdDY0KGNvbnN0IGNoYXIgKiwgbW9kZV90KTsKIyA0 NCAiLi4vbWFnaWNrL21hZ2ljay5oIiAyCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy Yy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL21hdGguaCIgMSAzCiMgMjMgIi91c3IvbG9j YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9tYXRoLmgi IDMKI3ByYWdtYSBpZGVudCAiQCgjKW1hdGguaAkyLjEwCTk5LzA3LzI5IFNNSSIKCiMgMSAiL3Vz ci9pbmNsdWRlL2lzby9tYXRoX2lzby5oIiAxIDMKCgoKCgoKCiNwcmFnbWEgaWRlbnQgIkAoIylt YXRoX2lzby5oCTEuMQk5OS8wNy8zMCBTTUkiCiMgMjAgIi91c3IvaW5jbHVkZS9pc28vbWF0aF9p c28uaCIgMwp0eXBlZGVmIHVuaW9uIF9oX3ZhbCB7CiAgICAgICAgdW5zaWduZWQgbG9uZyBfaVtz aXplb2YoZG91YmxlKSAvIHNpemVvZih1bnNpZ25lZCBsb25nKV07CiAgICAgICAgZG91YmxlIF9k Owp9IF9oX3ZhbDsKCgpleHRlcm4gY29uc3QgX2hfdmFsIF9faHVnZV92YWw7CiMgMzcgIi91c3Iv aW5jbHVkZS9pc28vbWF0aF9pc28uaCIgMwpleHRlcm4gZG91YmxlIGFjb3MgKGRvdWJsZSk7CmV4 dGVybiBkb3VibGUgYXNpbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhdGFuIChkb3VibGUpOwpl eHRlcm4gZG91YmxlIGF0YW4yIChkb3VibGUsIGRvdWJsZSk7CmV4dGVybiBkb3VibGUgY29zIChk b3VibGUpOwpleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0YW4gKGRv dWJsZSk7CgpleHRlcm4gZG91YmxlIGNvc2ggKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc2luaCAo ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB0YW5oIChkb3VibGUpOwoKZXh0ZXJuIGRvdWJsZSBleHAg KGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSwgaW50ICopOwpleHRlcm4gZG91 YmxlIGxkZXhwIChkb3VibGUsIGludCk7CmV4dGVybiBkb3VibGUgbG9nIChkb3VibGUpOwpleHRl cm4gZG91YmxlIGxvZzEwIChkb3VibGUpOwpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSwgZG91 YmxlICopOwoKZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJs ZSBzcXJ0IChkb3VibGUpOwoKZXh0ZXJuIGRvdWJsZSBjZWlsIChkb3VibGUpOwpleHRlcm4gZG91 YmxlIGZhYnMgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSk7CmV4dGVybiBk b3VibGUgZm1vZCAoZG91YmxlLCBkb3VibGUpOwojIDI2ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvbWF0aC5oIiAyIDMKIyA4OSAiL3Vz ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL21h dGguaCIgMwpleHRlcm4gaW50IHNpZ25nYW07CiMgMTQ1ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvbWF0aC5oIiAzCmV4dGVybiBkb3Vi bGUgZXJmIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSk7CmV4dGVybiBkb3Vi bGUgZ2FtbWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgaHlwb3QgKGRvdWJsZSwgZG91YmxlKTsK ZXh0ZXJuIGludCBpc25hbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKTsKZXh0 ZXJuIGRvdWJsZSBqMSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOwpl eHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKTsK ZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUp OwojIDE3MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAu Mi9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUpOwpleHRlcm4g ZG91YmxlIGFzaW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUpOwpleHRl cm4gZG91YmxlIGNicnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbG9nYiAoZG91YmxlKTsKZXh0 ZXJuIGRvdWJsZSBuZXh0YWZ0ZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByZW1h aW5kZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlLCBkb3Vi bGUpOwojIDE5MiAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z LjAuMi9pbmNsdWRlL21hdGguaCIgMwpleHRlcm4gZG91YmxlIGV4cG0xIChkb3VibGUpOwpleHRl cm4gaW50IGlsb2diIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGxvZzFwIChkb3VibGUpOwpleHRl cm4gZG91YmxlIHJpbnQgKGRvdWJsZSk7CiMgNDUgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEg Ii91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDE2ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCiNw cmFnbWEgaWRlbnQgIkAoIyl0aW1lLmgJMS4zOQk5OS8wOC8xMCBTTUkiCgojIDEgIi91c3IvaW5j bHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg MiAzCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAu Mi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyAyMCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAz CiMgMSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRl L2lzby90aW1lX2lzby5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyl0aW1lX2lzby5oCTEuMQk5OS8w OC8wOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAz MSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAyIDMKIyA2OSAiL3Vzci9pbmNsdWRlL2lz by90aW1lX2lzby5oIiAzCnN0cnVjdCB0bSB7CiAgICAgICAgaW50IHRtX3NlYzsKICAgICAgICBp bnQgdG1fbWluOwogICAgICAgIGludCB0bV9ob3VyOwogICAgICAgIGludCB0bV9tZGF5OwogICAg ICAgIGludCB0bV9tb247CiAgICAgICAgaW50IHRtX3llYXI7CiAgICAgICAgaW50IHRtX3dkYXk7 CiAgICAgICAgaW50IHRtX3lkYXk7CiAgICAgICAgaW50IHRtX2lzZHN0Owp9OwoKCgoKZXh0ZXJu IGNoYXIgKmFzY3RpbWUoY29uc3Qgc3RydWN0IHRtICopOwpleHRlcm4gY2xvY2tfdCBjbG9jayh2 b2lkKTsKZXh0ZXJuIGNoYXIgKmN0aW1lKGNvbnN0IHRpbWVfdCAqKTsKZXh0ZXJuIGRvdWJsZSBk aWZmdGltZSh0aW1lX3QsIHRpbWVfdCk7CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZShjb25zdCB0 aW1lX3QgKik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZShjb25zdCB0aW1lX3QgKik7CmV4 dGVybiB0aW1lX3QgbWt0aW1lKHN0cnVjdCB0bSAqKTsKZXh0ZXJuIHRpbWVfdCB0aW1lKHRpbWVf dCAqKTsKZXh0ZXJuIHNpemVfdCBzdHJmdGltZShjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAq LCBjb25zdCBzdHJ1Y3QgdG0gKik7CiMgMjEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwojIDYw ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yKGNvbnN0 IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZV9yKGNv bnN0IHRpbWVfdCAqLCBzdHJ1Y3QgdG0gKik7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lKGNv bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3QgdG0gKik7CiMgODMgIi91c3IvaW5jbHVk ZS90aW1lLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAxIDMKIyAxNSAi L3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9p bXBsLmgJMS41CTk5LzEwLzA1IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rl c3RzLmgiIDEgMwojIDE4ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAyIDMKIyAzNiAi L3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMwp0eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyB7 CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBsb25nIHR2X25zZWM7Cn0gdGltZXNwZWNf dDsKIyA2MCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMwp0eXBlZGVmIHN0cnVjdCB0 aW1lc3BlYyB0aW1lc3RydWNfdDsKIyA3OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIg Mwp0eXBlZGVmIHN0cnVjdCBpdGltZXJzcGVjIHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRf aW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X3ZhbHVlOwp9IGl0aW1lcnNwZWNf dDsKIyA4NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCiMgMTE2ICIvdXNyL2luY2x1ZGUvdGlt ZS5oIiAzCmV4dGVybiBpbnQgY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVj ICopOwpleHRlcm4gaW50IGNsb2NrX2dldHRpbWUoY2xvY2tpZF90LCBzdHJ1Y3QgdGltZXNwZWMg Kik7CmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZShjbG9ja2lkX3QsIGNvbnN0IHN0cnVjdCB0aW1l c3BlYyAqKTsKZXh0ZXJuIGludCB0aW1lcl9jcmVhdGUoY2xvY2tpZF90LCBzdHJ1Y3Qgc2lnZXZl bnQgKiwgdGltZXJfdCAqKTsKZXh0ZXJuIGludCB0aW1lcl9kZWxldGUodGltZXJfdCk7CmV4dGVy biBpbnQgdGltZXJfZ2V0b3ZlcnJ1bih0aW1lcl90KTsKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1l KHRpbWVyX3QsIHN0cnVjdCBpdGltZXJzcGVjICopOwpleHRlcm4gaW50IHRpbWVyX3NldHRpbWUo dGltZXJfdCwgaW50LCBjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYyAqLAogICAgICAgICAgICAgICAg c3RydWN0IGl0aW1lcnNwZWMgKik7CmV4dGVybiBpbnQgbmFub3NsZWVwKGNvbnN0IHN0cnVjdCB0 aW1lc3BlYyAqLCBzdHJ1Y3QgdGltZXNwZWMgKik7CgoKCgpleHRlcm4gdm9pZCB0enNldCh2b2lk KTsKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKZXh0ZXJuIGxvbmcgX3N5c2NvbmYoaW50KTsK CgoKCgoKZXh0ZXJuIGxvbmcgdGltZXpvbmU7CmV4dGVybiBpbnQgZGF5bGlnaHQ7CiMgMTU2ICIv dXNyL2luY2x1ZGUvdGltZS5oIiAzCmV4dGVybiBzdHJ1Y3QgdG0gKmdldGRhdGUoY29uc3QgY2hh ciAqKTsKCgoKCmV4dGVybiBpbnQgKl9nZXRkYXRlX2Vycl9hZGRyKHZvaWQpOwojIDI1NiAiL3Vz ci9pbmNsdWRlL3RpbWUuaCIgMwpzdGF0aWMgY2hhciAqCmFzY3RpbWVfcihjb25zdCBzdHJ1Y3Qg dG0gKl9fdG0sIGNoYXIgKl9fYnVmKQp7CiAgICAgICAgZXh0ZXJuIGNoYXIgKl9fcG9zaXhfYXNj dGltZV9yKGNvbnN0IHN0cnVjdCB0bSAqLCBjaGFyICopOwogICAgICAgIHJldHVybiAoX19wb3Np eF9hc2N0aW1lX3IoX190bSwgX19idWYpKTsKfQpzdGF0aWMgY2hhciAqCmN0aW1lX3IoY29uc3Qg dGltZV90ICpfX3RpbWUsIGNoYXIgKl9fYnVmKQp7CiAgICAgICAgZXh0ZXJuIGNoYXIgKl9fcG9z aXhfY3RpbWVfcihjb25zdCB0aW1lX3QgKiwgY2hhciAqKTsKICAgICAgICByZXR1cm4gKF9fcG9z aXhfY3RpbWVfcihfX3RpbWUsIF9fYnVmKSk7Cn0KIyA0NiAiLi4vbWFnaWNrL21hZ2ljay5oIiAy CiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9p bmNsdWRlL2xpbWl0cy5oIiAxIDMKIyAxMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1z dW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9sb2NhbC9s aWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5c2xpbWl0cy5o IiAxIDMKIyAyNSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z LjAuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylsaW1pdHMuaAkx LjUxCTk5LzEwLzA4IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgi IDEgMwojIDI4ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMu MC4yL2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2Rl ZnMuaCIgMSAzCiMgMjkgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMy LjgvMy4wLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCiMgMSAiL3Vzci9pbmNsdWRlL2lzby9s aW1pdHNfaXNvLmgiIDEgMwojIDI4ICIvdXNyL2luY2x1ZGUvaXNvL2xpbWl0c19pc28uaCIgMwoj cHJhZ21hIGlkZW50ICJAKCMpbGltaXRzX2lzby5oCTEuMQk5OS8wOC8wOSBTTUkiCiMgMzAgIi91 c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9z eXNsaW1pdHMuaCIgMiAzCiMgNDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNv bGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMwojIDEgIi91c3IvaW5jbHVkZS9z eXMvaW50X2xpbWl0cy5oIiAxIDMKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL2ludF9saW1pdHMuaCIg MwojcHJhZ21hIGlkZW50ICJAKCMpaW50X2xpbWl0cy5oCTEuNgk5OS8wOC8wNiBTTUkiCiMgNDQg Ii91c3IvaW5jbHVkZS9zeXMvaW50X2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9p c2FfZGVmcy5oIiAxIDMKIyA0NSAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfbGltaXRzLmgiIDIgMwoj IDQyICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2lu Y2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDI2OCAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFy Yy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5c2xpbWl0cy5oIiAzCiMgMSAiL3Vzci9p bmNsdWRlL3N5cy91bmlzdGQuaCIgMSAzCiMgMjY5ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3Nw YXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzbGltaXRzLmgiIDIgMwojIDI3OSAi L3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRl L3N5c2xpbWl0cy5oIiAzCmV4dGVybiBsb25nIF9zeXNjb25mKGludCk7CiMgMTIgIi91c3IvbG9j YWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9saW1pdHMu aCIgMiAzCiMgNDcgIi4uL21hZ2ljay9tYWdpY2suaCIgMgojIDEgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMSAzCiMgMTEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwojcHJhZ21hIGlkZW50ICJA KCMpYXNzZXJ0LmgJMS45CTkyLzA3LzE0IFNNSSIKCgoKCgoKZXh0ZXJuIHZvaWQgX19hc3NlcnQo Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CiMgNDggIi4uL21hZ2ljay9tYWdpY2su aCIgMgoKCiMgMSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8z LjAuMi9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIyA1MSAiLi4vbWFnaWNrL21hZ2ljay5oIiAy CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDEgMwojIDUyICIuLi9tYWdpY2svbWFnaWNr LmgiIDIKIyA2NiAiLi4vbWFnaWNrL21hZ2ljay5oIgojIDEgIi91c3IvaW5jbHVkZS9kaXJlbnQu aCIgMSAzCiMgMTYgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwojcHJhZ21hIGlkZW50ICJAKCMp ZGlyZW50LmgJMS4yOQk5OS8wMy8xMSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVy ZV90ZXN0cy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAyIDMKCiMgMSAiL3Vz ci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNsdWRlL3N5 cy90eXBlcy5oIiAxIDMKIyAyMSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAyIDMKIyAxICIvdXNy L2luY2x1ZGUvc3lzL2RpcmVudC5oIiAxIDMKIyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9kaXJlbnQu aCIgMwojcHJhZ21hIGlkZW50ICJAKCMpZGlyZW50LmgJMS4zMgk5OS8wNS8wNCBTTUkiCgojIDEg Ii91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMKIyAxOSAiL3Vzci9pbmNsdWRl L3N5cy9kaXJlbnQuaCIgMiAzCiMgMjggIi91c3IvaW5jbHVkZS9zeXMvZGlyZW50LmgiIDMKdHlw ZWRlZiBzdHJ1Y3QgZGlyZW50IHsKICAgICAgICBpbm9fdCBkX2lubzsKICAgICAgICBvZmZfdCBk X29mZjsKICAgICAgICB1bnNpZ25lZCBzaG9ydCBkX3JlY2xlbjsKICAgICAgICBjaGFyIGRfbmFt ZVsxXTsKfSBkaXJlbnRfdDsKIyAyMiAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAyIDMKIyA0NyAi L3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgZF9m ZDsKICAgICAgICBpbnQgZF9sb2M7CiAgICAgICAgaW50IGRfc2l6ZTsKICAgICAgICBjaGFyICpk X2J1ZjsKfSBESVI7CiMgNzYgIi91c3IvaW5jbHVkZS9kaXJlbnQuaCIgMwpleHRlcm4gRElSICpv cGVuZGlyKGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyNjQoRElS ICopOwoKCmV4dGVybiBsb25nIHRlbGxkaXIoRElSICopOwpleHRlcm4gdm9pZCBzZWVrZGlyKERJ UiAqLCBsb25nKTsKCmV4dGVybiB2b2lkIHJld2luZGRpcihESVIgKik7CmV4dGVybiBpbnQgY2xv c2VkaXIoRElSICopOwojIDE3NSAiL3Vzci9pbmNsdWRlL2RpcmVudC5oIiAzCmV4dGVybiBpbnQg cmVhZGRpcjY0X3IoRElSICosIHN0cnVjdCBkaXJlbnQgKiwgc3RydWN0IGRpcmVudCAqKik7CiMg NjcgIi4uL21hZ2ljay9tYWdpY2suaCIgMgoKCiMgMSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAxIDMK IyAxNiAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylwd2QuaAkxLjE5 CTk2LzAzLzEyIFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEg MwojIDE5ICIvdXNyL2luY2x1ZGUvcHdkLmgiIDIgMwoKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2Mt bGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwoj IDIxICIvdXNyL2luY2x1ZGUvcHdkLmgiIDIgMwojIDMxICIvdXNyL2luY2x1ZGUvcHdkLmgiIDMK c3RydWN0IHBhc3N3ZCB7CiAgICAgICAgY2hhciAqcHdfbmFtZTsKICAgICAgICBjaGFyICpwd19w YXNzd2Q7CiAgICAgICAgdWlkX3QgcHdfdWlkOwogICAgICAgIGdpZF90IHB3X2dpZDsKICAgICAg ICBjaGFyICpwd19hZ2U7CiAgICAgICAgY2hhciAqcHdfY29tbWVudDsKICAgICAgICBjaGFyICpw d19nZWNvczsKICAgICAgICBjaGFyICpwd19kaXI7CiAgICAgICAgY2hhciAqcHdfc2hlbGw7Cn07 CiMgNTUgIi91c3IvaW5jbHVkZS9wd2QuaCIgMwpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHd1 aWQodWlkX3QpOwpleHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHduYW0oY29uc3QgY2hhciAqKTsK IyA2OSAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCmV4dGVybiB2b2lkIGVuZHB3ZW50KHZvaWQpOwpl eHRlcm4gc3RydWN0IHBhc3N3ZCAqZ2V0cHdlbnQodm9pZCk7CmV4dGVybiB2b2lkIHNldHB3ZW50 KHZvaWQpOwojIDE0OCAiL3Vzci9pbmNsdWRlL3B3ZC5oIiAzCnN0YXRpYyBpbnQKZ2V0cHd1aWRf cih1aWRfdCBfX3VpZCwgc3RydWN0IHBhc3N3ZCAqX19wd2QsIGNoYXIgKl9fYnVmLCBpbnQgX19s ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHBhc3N3ZCAqKl9fcmVzKQp7CiAgICAgICAgZXh0ZXJuIGludCBfX3Bvc2l4X2dl dHB3dWlkX3IodWlkX3QsIHN0cnVjdCBwYXNzd2QgKiwgY2hhciAqLCBpbnQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3 ZCAqKik7CiAgICAgICAgcmV0dXJuIChfX3Bvc2l4X2dldHB3dWlkX3IoX191aWQsIF9fcHdkLCBf X2J1ZiwgX19sZW4sIF9fcmVzKSk7Cn0Kc3RhdGljIGludApnZXRwd25hbV9yKGNvbnN0IGNoYXIg Kl9fY2IsIHN0cnVjdCBwYXNzd2QgKl9fcHdkLCBjaGFyICpfX2J1ZiwgaW50IF9fbGVuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBwYXNzd2QgKipfX3JlcykKewogICAgICAgIGV4dGVybiBpbnQgX19wb3NpeF9nZXRwd25hbV9y KGNvbnN0IGNoYXIgKiwgc3RydWN0IHBhc3N3ZCAqLCBjaGFyICosCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzdHJ1Y3QgcGFzc3dk ICoqKTsKICAgICAgICByZXR1cm4gKF9fcG9zaXhfZ2V0cHduYW1fcihfX2NiLCBfX3B3ZCwgX19i dWYsIF9fbGVuLCBfX3JlcykpOwp9CiMgNzAgIi4uL21hZ2ljay9tYWdpY2suaCIgMgoKCgoKIyAx ICIuLi9tYWdpY2svYXBpLmgiIDEKIyA4NCAiLi4vbWFnaWNrL2FwaS5oIgojIDEgIi4uL21hZ2lj ay9jbGFzc2lmeS5oIiAxCiMgMTQgIi4uL21hZ2ljay9jbGFzc2lmeS5oIgp0eXBlZGVmIGVudW0K ewogIFVuZGVmaW5lZENhY2hlLAogIE1lbW9yeUNhY2hlLAogIERpc2tDYWNoZSwKICBNZW1vcnlN YXBwZWRDYWNoZQp9IENhY2hlVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkQ2hhbm5l bCwKICBSZWRDaGFubmVsLAogIEN5YW5DaGFubmVsLAogIEdyZWVuQ2hhbm5lbCwKICBNYWdlbnRh Q2hhbm5lbCwKICBCbHVlQ2hhbm5lbCwKICBZZWxsb3dDaGFubmVsLAogIE9wYWNpdHlDaGFubmVs LAogIEJsYWNrQ2hhbm5lbCwKICBNYXR0ZUNoYW5uZWwKfSBDaGFubmVsVHlwZTsKCnR5cGVkZWYg ZW51bQp7CiAgVW5kZWZpbmVkQ2xhc3MsCiAgRGlyZWN0Q2xhc3MsCiAgUHNldWRvQ2xhc3MKfSBD bGFzc1R5cGU7Cgp0eXBlZGVmIGVudW0KewogIFVzZXJTcGFjZSwKICBVc2VyU3BhY2VPblVzZSwK ICBPYmplY3RCb3VuZGluZ0JveAp9IENsaXBQYXRoVW5pdHM7Cgp0eXBlZGVmIGVudW0KewogIFVu ZGVmaW5lZENvbG9yc3BhY2UsCiAgUkdCQ29sb3JzcGFjZSwKICBHUkFZQ29sb3JzcGFjZSwKICBU cmFuc3BhcmVudENvbG9yc3BhY2UsCiAgT0hUQUNvbG9yc3BhY2UsCiAgWFlaQ29sb3JzcGFjZSwK ICBZQ2JDckNvbG9yc3BhY2UsCiAgWUNDQ29sb3JzcGFjZSwKICBZSVFDb2xvcnNwYWNlLAogIFlQ YlByQ29sb3JzcGFjZSwKICBZVVZDb2xvcnNwYWNlLAogIENNWUtDb2xvcnNwYWNlLAogIHNSR0JD b2xvcnNwYWNlCn0gQ29sb3JzcGFjZVR5cGU7Cgp0eXBlZGVmIGVudW0KewogIEFsbENvbXBsaWFu Y2UsCiAgU1ZHQ29tcGxpYW5jZSwKICBYMTFDb21wbGlhbmNlCn0gQ29tcGxpYW5jZVR5cGU7Cgp0 eXBlZGVmIGVudW0KewogIFVuZGVmaW5lZENvbXBvc2l0ZU9wID0gMCwKICBPdmVyQ29tcG9zaXRl T3AsCiAgSW5Db21wb3NpdGVPcCwKICBPdXRDb21wb3NpdGVPcCwKICBBdG9wQ29tcG9zaXRlT3As CiAgWG9yQ29tcG9zaXRlT3AsCiAgUGx1c0NvbXBvc2l0ZU9wLAogIE1pbnVzQ29tcG9zaXRlT3As CiAgQWRkQ29tcG9zaXRlT3AsCiAgU3VidHJhY3RDb21wb3NpdGVPcCwKICBEaWZmZXJlbmNlQ29t cG9zaXRlT3AsCiAgTXVsdGlwbHlDb21wb3NpdGVPcCwKICBCdW1wbWFwQ29tcG9zaXRlT3AsCiAg Q29weUNvbXBvc2l0ZU9wLAogIENvcHlSZWRDb21wb3NpdGVPcCwKICBDb3B5R3JlZW5Db21wb3Np dGVPcCwKICBDb3B5Qmx1ZUNvbXBvc2l0ZU9wLAogIENvcHlPcGFjaXR5Q29tcG9zaXRlT3AsCiAg Q2xlYXJDb21wb3NpdGVPcCwKICBEaXNzb2x2ZUNvbXBvc2l0ZU9wLAogIERpc3BsYWNlQ29tcG9z aXRlT3AsCiAgTW9kdWxhdGVDb21wb3NpdGVPcCwKICBUaHJlc2hvbGRDb21wb3NpdGVPcAp9IENv bXBvc2l0ZU9wZXJhdG9yOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRDb21wcmVzc2lvbiwK ICBOb0NvbXByZXNzaW9uLAogIEJaaXBDb21wcmVzc2lvbiwKICBGYXhDb21wcmVzc2lvbiwKICBH cm91cDRDb21wcmVzc2lvbiwKICBKUEVHQ29tcHJlc3Npb24sCiAgTG9zc2xlc3NKUEVHQ29tcHJl c3Npb24sCiAgTFpXQ29tcHJlc3Npb24sCiAgUnVubGVuZ3RoRW5jb2RlZENvbXByZXNzaW9uLAog IFppcENvbXByZXNzaW9uCn0gQ29tcHJlc3Npb25UeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBOb0Rl Y29yYXRpb24sCiAgVW5kZXJsaW5lRGVjb3JhdGlvbiwKICBPdmVybGluZURlY29yYXRpb24sCiAg TGluZVRocm91Z2hEZWNvcmF0aW9uCn0gRGVjb3JhdGlvblR5cGU7Cgp0eXBlZGVmIGVudW0Kewog IFVuZGVmaW5lZEV4Y2VwdGlvbiwKICBSZXNvdXJjZUxpbWl0V2FybmluZyA9IDMwMCwKICBYU2Vy dmVyV2FybmluZyA9IDMwNSwKICBPcHRpb25XYXJuaW5nID0gMzEwLAogIERlbGVnYXRlV2Fybmlu ZyA9IDMxNSwKICBNaXNzaW5nRGVsZWdhdGVXYXJuaW5nID0gMzIwLAogIENvcnJ1cHRJbWFnZVdh cm5pbmcgPSAzMjUsCiAgRmlsZU9wZW5XYXJuaW5nID0gMzMwLAogIEJsb2JXYXJuaW5nID0gMzM1 LAogIENhY2hlV2FybmluZyA9IDM0MCwKICBTdHJlYW1XYXJuaW5nID0gMzQ1LAogIFJlZ2lzdHJ5 V2FybmluZyA9IDM1MCwKICBGYXRhbEV4Y2VwdGlvbiA9IDQwMCwKICBSZXNvdXJjZUxpbWl0RXJy b3IgPSA0MDAsCiAgWFNlcnZlckVycm9yID0gNDA1LAogIE9wdGlvbkVycm9yID0gNDEwLAogIERl bGVnYXRlRXJyb3IgPSA0MTUsCiAgTWlzc2luZ0RlbGVnYXRlRXJyb3IgPSA0MjAsCiAgQ29ycnVw dEltYWdlRXJyb3IgPSA0MjUsCiAgRmlsZU9wZW5FcnJvciA9IDQzMCwKICBCbG9iRXJyb3IgPSA0 MzUsCiAgQ2FjaGVFcnJvciA9IDQ0MCwKICBTdHJlYW1FcnJvciA9IDQ0NSwKICBSZWdpc3RyeUVy cm9yID0gNDUwCn0gRXhjZXB0aW9uVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkUnVs ZSwKCiAgRXZlbk9kZFJ1bGUsCiAgTm9uWmVyb1J1bGUKfSBGaWxsUnVsZTsKCnR5cGVkZWYgZW51 bQp7CiAgVW5kZWZpbmVkRmlsdGVyLAogIFBvaW50RmlsdGVyLAogIEJveEZpbHRlciwKICBUcmlh bmdsZUZpbHRlciwKICBIZXJtaXRlRmlsdGVyLAogIEhhbm5pbmdGaWx0ZXIsCiAgSGFtbWluZ0Zp bHRlciwKICBCbGFja21hbkZpbHRlciwKICBHYXVzc2lhbkZpbHRlciwKICBRdWFkcmF0aWNGaWx0 ZXIsCiAgQ3ViaWNGaWx0ZXIsCiAgQ2F0cm9tRmlsdGVyLAogIE1pdGNoZWxsRmlsdGVyLAogIExh bmN6b3NGaWx0ZXIsCiAgQmVzc2VsRmlsdGVyLAogIFNpbmNGaWx0ZXIKfSBGaWx0ZXJUeXBlczsK CnR5cGVkZWYgZW51bQp7CgogIE5vVmFsdWUgPSAweDAwMDAsCgogIFhWYWx1ZSA9IDB4MDAwMSwK CiAgWVZhbHVlID0gMHgwMDAyLAoKICBXaWR0aFZhbHVlID0gMHgwMDA0LAoKICBIZWlnaHRWYWx1 ZSA9IDB4MDAwOCwKCiAgQWxsVmFsdWVzID0gMHgwMDBGLAoKICBYTmVnYXRpdmUgPSAweDAwMTAs CgogIFlOZWdhdGl2ZSA9IDB4MDAyMCwKICBQZXJjZW50VmFsdWUgPSAweDEwMDAsCiAgQXNwZWN0 VmFsdWUgPSAweDIwMDAsCiAgTGVzc1ZhbHVlID0gMHg0MDAwLAogIEdyZWF0ZXJWYWx1ZSA9IDB4 ODAwMCwKICBBcmVhVmFsdWUgPSAweDEwMDAwCn0gR2VvbWV0cnlGbGFnczsKCnR5cGVkZWYgZW51 bQp7CgogIEZvcmdldEdyYXZpdHksCgogIE5vcnRoV2VzdEdyYXZpdHksCgogIE5vcnRoR3Jhdml0 eSwKCiAgTm9ydGhFYXN0R3Jhdml0eSwKCiAgV2VzdEdyYXZpdHksCgogIENlbnRlckdyYXZpdHks CgogIEVhc3RHcmF2aXR5LAoKICBTb3V0aFdlc3RHcmF2aXR5LAoKICBTb3V0aEdyYXZpdHksCgog IFNvdXRoRWFzdEdyYXZpdHksCgogIFN0YXRpY0dyYXZpdHkKfSBHcmF2aXR5VHlwZTsKCnR5cGVk ZWYgZW51bQp7CiAgVW5kZWZpbmVkVHlwZSwKICBCaWxldmVsVHlwZSwKICBHcmF5c2NhbGVUeXBl LAogIEdyYXlzY2FsZU1hdHRlVHlwZSwKICBQYWxldHRlVHlwZSwKICBQYWxldHRlTWF0dGVUeXBl LAogIFRydWVDb2xvclR5cGUsCiAgVHJ1ZUNvbG9yTWF0dGVUeXBlLAogIENvbG9yU2VwYXJhdGlv blR5cGUsCiAgQ29sb3JTZXBhcmF0aW9uTWF0dGVUeXBlLAogIE9wdGltaXplVHlwZQp9IEltYWdl VHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkSW50ZXJsYWNlLAogIE5vSW50ZXJsYWNl LAogIExpbmVJbnRlcmxhY2UsCiAgUGxhbmVJbnRlcmxhY2UsCiAgUGFydGl0aW9uSW50ZXJsYWNl Cn0gSW50ZXJsYWNlVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkQ2FwLAogIEJ1dHRD YXAsCiAgUm91bmRDYXAsCiAgU3F1YXJlQ2FwCn0gTGluZUNhcDsKCnR5cGVkZWYgZW51bQp7CiAg VW5kZWZpbmVkSm9pbiwKICBNaXRlckpvaW4sCiAgUm91bmRKb2luLAogIEJldmVsSm9pbgp9IExp bmVKb2luOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRNYWdpY01ldGhvZCwKICBTdHJpbmdN YWdpY01ldGhvZAp9IE1hZ2ljTWV0aG9kOwoKdHlwZWRlZiBlbnVtCnsKICBSZWFkTW9kZSwKICBX cml0ZU1vZGUsCiAgSU9Nb2RlCn0gTWFwTW9kZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVk TW9kZSwKICBGcmFtZU1vZGUsCiAgVW5mcmFtZU1vZGUsCiAgQ29uY2F0ZW5hdGVNb2RlCn0gTW9u dGFnZU1vZGU7Cgp0eXBlZGVmIGVudW0KewogIFVuaWZvcm1Ob2lzZSwKICBHYXVzc2lhbk5vaXNl LAogIE11bHRpcGxpY2F0aXZlR2F1c3NpYW5Ob2lzZSwKICBJbXB1bHNlTm9pc2UsCiAgTGFwbGFj aWFuTm9pc2UsCiAgUG9pc3Nvbk5vaXNlCn0gTm9pc2VUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBQ b2ludE1ldGhvZCA9IDAsCiAgUmVwbGFjZU1ldGhvZCwKICBGbG9vZGZpbGxNZXRob2QsCiAgRmls bFRvQm9yZGVyTWV0aG9kLAogIFJlc2V0TWV0aG9kCn0gUGFpbnRNZXRob2Q7Cgp0eXBlZGVmIGVu dW0KewogIFJvb3RQYXRoLAogIEhlYWRQYXRoLAogIFRhaWxQYXRoLAogIEJhc2VQYXRoLAogIEV4 dGVuc2lvblBhdGgKfSBQYXRoVHlwZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkUHJvZmls ZSwKICBJQ01Qcm9maWxlLAogIElQVENQcm9maWxlCn0gUHJvZmlsZVR5cGU7Cgp0eXBlZGVmIGVu dW0KewogIFVuZGVmaW5lZFByZXZpZXcgPSAwLAogIFJvdGF0ZVByZXZpZXcsCiAgU2hlYXJQcmV2 aWV3LAogIFJvbGxQcmV2aWV3LAogIEh1ZVByZXZpZXcsCiAgU2F0dXJhdGlvblByZXZpZXcsCiAg QnJpZ2h0bmVzc1ByZXZpZXcsCiAgR2FtbWFQcmV2aWV3LAogIFNwaWZmUHJldmlldywKICBEdWxs UHJldmlldywKICBHcmF5c2NhbGVQcmV2aWV3LAogIFF1YW50aXplUHJldmlldywKICBEZXNwZWNr bGVQcmV2aWV3LAogIFJlZHVjZU5vaXNlUHJldmlldywKICBBZGROb2lzZVByZXZpZXcsCiAgU2hh cnBlblByZXZpZXcsCiAgQmx1clByZXZpZXcsCiAgVGhyZXNob2xkUHJldmlldywKICBFZGdlRGV0 ZWN0UHJldmlldywKICBTcHJlYWRQcmV2aWV3LAogIFNvbGFyaXplUHJldmlldywKICBTaGFkZVBy ZXZpZXcsCiAgUmFpc2VQcmV2aWV3LAogIFNlZ21lbnRQcmV2aWV3LAogIFN3aXJsUHJldmlldywK ICBJbXBsb2RlUHJldmlldywKICBXYXZlUHJldmlldywKICBPaWxQYWludFByZXZpZXcsCiAgQ2hh cmNvYWxEcmF3aW5nUHJldmlldywKICBKUEVHUHJldmlldwp9IFByZXZpZXdUeXBlOwoKdHlwZWRl ZiBlbnVtCnsKICBVbmRlZmluZWRQcmltaXRpdmUgPSAwLAogIFBvaW50UHJpbWl0aXZlLAogIExp bmVQcmltaXRpdmUsCiAgUmVjdGFuZ2xlUHJpbWl0aXZlLAogIFJvdW5kUmVjdGFuZ2xlUHJpbWl0 aXZlLAogIEFyY1ByaW1pdGl2ZSwKICBFbGxpcHNlUHJpbWl0aXZlLAogIENpcmNsZVByaW1pdGl2 ZSwKICBQb2x5bGluZVByaW1pdGl2ZSwKICBQb2x5Z29uUHJpbWl0aXZlLAogIEJlemllclByaW1p dGl2ZSwKICBDb2xvclByaW1pdGl2ZSwKICBNYXR0ZVByaW1pdGl2ZSwKICBUZXh0UHJpbWl0aXZl LAogIEltYWdlUHJpbWl0aXZlLAogIFBhdGhQcmltaXRpdmUKfSBQcmltaXRpdmVUeXBlOwoKdHlw ZWRlZiBlbnVtCnsKICBJbmRleFF1YW50dW0sCiAgR3JheVF1YW50dW0sCiAgSW5kZXhBbHBoYVF1 YW50dW0sCiAgR3JheUFscGhhUXVhbnR1bSwKICBSZWRRdWFudHVtLAogIEN5YW5RdWFudHVtLAog IEdyZWVuUXVhbnR1bSwKICBZZWxsb3dRdWFudHVtLAogIEJsdWVRdWFudHVtLAogIE1hZ2VudGFR dWFudHVtLAogIEFscGhhUXVhbnR1bSwKICBCbGFja1F1YW50dW0sCiAgUkdCUXVhbnR1bSwKICBS R0JBUXVhbnR1bSwKICBDTVlLUXVhbnR1bSwKICBDTVlLQVF1YW50dW0KfSBRdWFudHVtVHlwZTsK CnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkUmVnaXN0cnlUeXBlLAogIEltYWdlUmVnaXN0cnlU eXBlCn0gUmVnaXN0cnlUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBVbmRlZmluZWRJbnRlbnQsCiAg U2F0dXJhdGlvbkludGVudCwKICBQZXJjZXB0dWFsSW50ZW50LAogIEFic29sdXRlSW50ZW50LAog IFJlbGF0aXZlSW50ZW50Cn0gUmVuZGVyaW5nSW50ZW50OwoKdHlwZWRlZiBlbnVtCnsKICBVbmRl ZmluZWRSZXNvbHV0aW9uLAogIFBpeGVsc1BlckluY2hSZXNvbHV0aW9uLAogIFBpeGVsc1BlckNl bnRpbWV0ZXJSZXNvbHV0aW9uCn0gUmVzb2x1dGlvblR5cGU7Cgp0eXBlZGVmIGVudW0KewogIENo YXJQaXhlbCwKICBTaG9ydFBpeGVsLAogIEludGVnZXJQaXhlbCwKICBMb25nUGl4ZWwsCiAgRmxv YXRQaXhlbCwKICBEb3VibGVQaXhlbAp9IFN0b3JhZ2VUeXBlOwoKdHlwZWRlZiBlbnVtCnsKICBV bmRlZmluZWRUaW1lclN0YXRlLAogIFN0b3BwZWRUaW1lclN0YXRlLAogIFJ1bm5pbmdUaW1lclN0 YXRlCn0gVGltZXJTdGF0ZTsKCnR5cGVkZWYgZW51bQp7CiAgVW5kZWZpbmVkVHJhbnNtaXRUeXBl LAogIEZpbGVUcmFuc21pdFR5cGUsCiAgQmxvYlRyYW5zbWl0VHlwZSwKICBTdHJlYW1UcmFuc21p dFR5cGUsCiAgSW1hZ2VUcmFuc21pdFR5cGUKfSBUcmFuc21pdFR5cGU7Cgp0eXBlZGVmIGVudW0K ewogIENvbnRyb2xTdGF0ZSA9IDB4MDAwMSwKICBJbmFjdGl2ZVdpZGdldFN0YXRlID0gMHgwMDA0 LAogIEp1bXBMaXN0U3RhdGUgPSAweDAwMDgsCiAgUmVkcmF3QWN0aW9uU3RhdGUgPSAweDAwMTAs CiAgUmVkcmF3TGlzdFN0YXRlID0gMHgwMDIwLAogIFJlZHJhd1dpZGdldFN0YXRlID0gMHgwMDQw LAogIFVwZGF0ZUxpc3RTdGF0ZSA9IDB4MDEwMAp9IFdpZGdldFN0YXRlOwoKdHlwZWRlZiBlbnVt CnsKCiAgRG9SZWQgPSAweDAwMDEsCgogIERvR3JlZW4gPSAweDAwMDIsCgogIERvQmx1ZSA9IDB4 MDAwNCwKICBEb01hdHRlID0gMHgwMDA4Cn0gWENvbG9yRmxhZ3M7Cgp0eXBlZGVmIGVudW0Kewog IERlZmF1bHRTdGF0ZSA9IDB4MDAwMCwKICBFc2NhcGVTdGF0ZSA9IDB4MDAwMSwKICBFeGl0U3Rh dGUgPSAweDAwMDIsCiAgRm9ybWVySW1hZ2VTdGF0ZSA9IDB4MDAwNCwKICBNb2RpZmllclN0YXRl ID0gMHgwMDA4LAogIE1vbnRhZ2VJbWFnZVN0YXRlID0gMHgwMDEwLAogIE5leHRJbWFnZVN0YXRl ID0gMHgwMDIwLAogIFJldGFpbkNvbG9yc1N0YXRlID0gMHgwMDQwLAogIFN1c3BlbmRUaW1lID0g NTAsCiAgVXBkYXRlQ29uZmlndXJhdGlvblN0YXRlID0gMHgwMDgwLAogIFVwZGF0ZVJlZ2lvblN0 YXRlID0gMHgwMTAwCn0gWFN0YXRlOwojIDg1ICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9t YWdpY2svaW1hZ2UuaCIgMQojIDM1ICIuLi9tYWdpY2svaW1hZ2UuaCIKdHlwZWRlZiB1bnNpZ25l ZCBzaG9ydCBRdWFudHVtOwojIDUxICIuLi9tYWdpY2svaW1hZ2UuaCIKdHlwZWRlZiBzdHJ1Y3Qg X1BvaW50SW5mbwp7CiAgZG91YmxlCiAgICB4LAogICAgeSwKICAgIHo7Cn0gUG9pbnRJbmZvOwoK dHlwZWRlZiBzdHJ1Y3QgX1BpeGVsUGFja2V0CnsKCiAgUXVhbnR1bQogICAgcmVkLAogICAgZ3Jl ZW4sCiAgICBibHVlLAogICAgb3BhY2l0eTsKIyA4MiAiLi4vbWFnaWNrL2ltYWdlLmgiCn0gUGl4 ZWxQYWNrZXQ7Cgp0eXBlZGVmIHN0cnVjdCBfUmVjdGFuZ2xlSW5mbwp7CiAgdW5zaWduZWQgbG9u ZwogICAgd2lkdGgsCiAgICBoZWlnaHQ7CgogIGxvbmcKICAgIHgsCiAgICB5Owp9IFJlY3Rhbmds ZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfQXNjaWk4NUluZm8KewogIGxvbmcKICAgIG9mZnNldCwK ICAgIGxpbmVfYnJlYWs7CgogIHVuc2lnbmVkIGNoYXIKICAgIGJ1ZmZlclsxMF07Cn0gQXNjaWk4 NUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfQmxvYkluZm8KewogIHVuc2lnbmVkIGxvbmcKICAgIHNp Z25hdHVyZTsKCiAgc2l6ZV90CiAgICBsZW5ndGgsCiAgICBleHRlbnQsCiAgICBxdWFudHVtOwoK ICB1bnNpZ25lZCBpbnQKICAgIG1hcHBlZCwKICAgIGVvZjsKCiAgdW5zaWduZWQgY2hhcgogICAg KmRhdGE7CgogIG9mZl90CiAgICBvZmZzZXQsCiAgICBzaXplOwp9IEJsb2JJbmZvOwoKdHlwZWRl ZiBzdHJ1Y3QgX0Nocm9tYXRpY2l0eUluZm8KewogIFBvaW50SW5mbwogICAgcmVkX3ByaW1hcnks CiAgICBncmVlbl9wcmltYXJ5LAogICAgYmx1ZV9wcmltYXJ5LAogICAgd2hpdGVfcG9pbnQ7Cn0g Q2hyb21hdGljaXR5SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9Db2xvckluZm8KewogIHN0cnVjdCBf Q29sb3JJbmZvCiAgICAqcHJldmlvdXMsCiAgICAqbmV4dDsKCiAgY2hhcgogICAgKmZpbGVuYW1l LAogICAgKm5hbWU7CgogIENvbXBsaWFuY2VUeXBlCiAgICBjb21wbGlhbmNlOwoKICBQaXhlbFBh Y2tldAogICAgY29sb3I7Cn0gQ29sb3JJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX0VsZW1lbnRJbmZv CnsKICBkb3VibGUKICAgIGN4LAogICAgY3ksCiAgICBtYWpvciwKICAgIG1pbm9yLAogICAgYW5n bGU7Cn0gRWxlbWVudEluZm87Cgp0eXBlZGVmIHN0cnVjdCBfRXhjZXB0aW9uSW5mbwp7CiAgdW5z aWduZWQgbG9uZwogICAgc2lnbmF0dXJlOwoKICBjaGFyCiAgICAqcmVhc29uLAogICAgKmRlc2Ny aXB0aW9uOwoKICBFeGNlcHRpb25UeXBlCiAgICBzZXZlcml0eTsKfSBFeGNlcHRpb25JbmZvOwoK dHlwZWRlZiBzdHJ1Y3QgX0ZyYW1lSW5mbwp7CiAgdW5zaWduZWQgbG9uZwogICAgd2lkdGgsCiAg ICBoZWlnaHQ7CgogIGxvbmcKICAgIHgsCiAgICB5LAogICAgaW5uZXJfYmV2ZWwsCiAgICBvdXRl cl9iZXZlbDsKfSBGcmFtZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfSW1hZ2VBdHRyaWJ1dGUKewog IHN0cnVjdCBfSW1hZ2VBdHRyaWJ1dGUKICAgICpwcmV2aW91cywKICAgICpuZXh0OwoKICBjaGFy CiAgICAqa2V5LAogICAgKnZhbHVlOwoKICB1bnNpZ25lZCBpbnQKICAgIGNvbXByZXNzaW9uOwp9 IEltYWdlQXR0cmlidXRlOwoKdHlwZWRlZiBRdWFudHVtIEluZGV4UGFja2V0OwoKdHlwZWRlZiBz dHJ1Y3QgX01vbnRhZ2VJbmZvCnsKICB1bnNpZ25lZCBsb25nCiAgICBzaWduYXR1cmU7CgogIGNo YXIKICAgICpnZW9tZXRyeSwKICAgICp0aWxlLAogICAgKnRpdGxlLAogICAgKmZyYW1lLAogICAg KnRleHR1cmUsCiAgICAqZm9udDsKCiAgZG91YmxlCiAgICBwb2ludHNpemU7CgogIHVuc2lnbmVk IGxvbmcKICAgIGJvcmRlcl93aWR0aDsKCiAgR3Jhdml0eVR5cGUKICAgIGdyYXZpdHk7CgogIHVu c2lnbmVkIGludAogICAgc2hhZG93OwoKICBDb21wb3NpdGVPcGVyYXRvcgogICAgY29tcG9zZTsK CiAgUGl4ZWxQYWNrZXQKICAgIGZpbGwsCiAgICBzdHJva2UsCiAgICBiYWNrZ3JvdW5kX2NvbG9y LAogICAgYm9yZGVyX2NvbG9yLAogICAgbWF0dGVfY29sb3I7CgogIGNoYXIKICAgIGZpbGVuYW1l WzIwNTNdOwp9IE1vbnRhZ2VJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVJbmZvCnsKICBz aXplX3QKICAgIGxlbmd0aDsKCiAgY2hhcgogICAgKm5hbWU7CgogIHVuc2lnbmVkIGNoYXIKICAg ICppbmZvOwp9IFByb2ZpbGVJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX1NlZ21lbnRJbmZvCnsKICBk b3VibGUKICAgIHgxLAogICAgeTEsCiAgICB4MiwKICAgIHkyOwp9IFNlZ21lbnRJbmZvOwoKc3Ry dWN0IFNlbWFwaG9yZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBTZW1hcGhvcmVJbmZvCiAgU2VtYXBo b3JlSW5mbzsKCnR5cGVkZWYgc3RydWN0IF9UaW1lcgp7CiAgZG91YmxlCiAgICBzdGFydCwKICAg IHN0b3AsCiAgICB0b3RhbDsKfSBUaW1lcjsKCnR5cGVkZWYgc3RydWN0IF9UaW1lckluZm8Kewog IHVuc2lnbmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKCiAgVGltZXIKICAgIHVzZXIsCiAgICBlbGFw c2VkOwoKICBUaW1lclN0YXRlCiAgICBzdGF0ZTsKfSBUaW1lckluZm87Cgp0eXBlZGVmIHN0cnVj dCBfSW1hZ2UKewogIHVuc2lnbmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKCiAgc3RydWN0IF9JbWFn ZQogICAgKnByZXZpb3VzLAogICAgKmxpc3QsCiAgICAqbmV4dDsKCiAgQ2xhc3NUeXBlCiAgICBj bGFzczsKCiAgQ29sb3JzcGFjZVR5cGUKICAgIGNvbG9yc3BhY2U7CgogIENvbXByZXNzaW9uVHlw ZQogICAgY29tcHJlc3Npb247CgogIHVuc2lnbmVkIGludAogICAgb3JwaGFuLAogICAgdGFpbnQs CiAgICBtYXR0ZTsKCiAgdW5zaWduZWQgbG9uZwogICAgY29sdW1ucywKICAgIHJvd3M7CgogIHVu c2lnbmVkIGxvbmcKICAgIGRlcHRoLAogICAgY29sb3JzOwoKICBQaXhlbFBhY2tldAogICAgKmNv bG9ybWFwOwoKICBQaXhlbFBhY2tldAogICAgYmFja2dyb3VuZF9jb2xvciwKICAgIGJvcmRlcl9j b2xvciwKICAgIG1hdHRlX2NvbG9yOwoKICBkb3VibGUKICAgIGdhbW1hOwoKICBDaHJvbWF0aWNp dHlJbmZvCiAgICBjaHJvbWF0aWNpdHk7CgogIFByb2ZpbGVJbmZvCiAgICBjb2xvcl9wcm9maWxl LAogICAgaXB0Y19wcm9maWxlOwoKICB1bnNpZ25lZCBsb25nCiAgICBnZW5lcmljX3Byb2ZpbGVz OwoKICBQcm9maWxlSW5mbwogICAgKmdlbmVyaWNfcHJvZmlsZTsKCiAgUmVuZGVyaW5nSW50ZW50 CiAgICByZW5kZXJpbmdfaW50ZW50OwoKICBSZXNvbHV0aW9uVHlwZQogICAgdW5pdHM7CgogIGNo YXIKICAgICptb250YWdlLAogICAgKmRpcmVjdG9yeSwKICAgICpnZW9tZXRyeTsKCiAgbG9uZwog ICAgb2Zmc2V0OwoKICBkb3VibGUKICAgIHhfcmVzb2x1dGlvbiwKICAgIHlfcmVzb2x1dGlvbjsK CiAgUmVjdGFuZ2xlSW5mbwogICAgcGFnZTsKCiAgUmVjdGFuZ2xlSW5mbwogICAgdGlsZV9pbmZv OwoKICBkb3VibGUKICAgIGJsdXIsCiAgICBmdXp6OwoKICBGaWx0ZXJUeXBlcwogICAgZmlsdGVy OwoKICBJbnRlcmxhY2VUeXBlCiAgICBpbnRlcmxhY2U7CgogIEltYWdlQXR0cmlidXRlCiAgICAq YXR0cmlidXRlczsKCiAgc3RydWN0IF9JbWFnZQogICAgKmNsaXBfbWFzazsKCiAgdW5zaWduZWQg bG9uZwogICAgc2NlbmUsCiAgICBkaXNwb3NlLAogICAgZGVsYXksCiAgICBpdGVyYXRpb25zLAog ICAgdG90YWxfY29sb3JzOwoKICBkb3VibGUKICAgIG1lYW5fZXJyb3JfcGVyX3BpeGVsLAogICAg bm9ybWFsaXplZF9tZWFuX2Vycm9yLAogICAgbm9ybWFsaXplZF9tYXhpbXVtX2Vycm9yOwoKICBT ZW1hcGhvcmVJbmZvCiAgICAqc2VtYXBob3JlOwoKICBUaW1lckluZm8KICAgIHRpbWVyOwoKICBF eGNlcHRpb25JbmZvCiAgICBleGNlcHRpb247CgogIHZvaWQKICAgICpjbGllbnRfZGF0YTsKCiAg bG9uZwogICAgc3RhcnRfbG9vcDsKCiAgdm9pZAogICAgKmNhY2hlOwoKICBpbnQKICAgICgqZmlm bykoY29uc3Qgc3RydWN0IF9JbWFnZSAqLGNvbnN0IHZvaWQgKixjb25zdCBzaXplX3QpOwoKICBs b25nCiAgICByZWZlcmVuY2VfY291bnQ7CgogIEFzY2lpODVJbmZvCiAgICBhc2NpaTg1OwoKICB1 bnNpZ25lZCBpbnQKICAgIGV4ZW1wdCwKICAgIHN0YXR1cywKICAgIHRlbXBvcmFyeSwKICAgIHBp cGV0OwoKICBGSUxFCiAgICAqZmlsZTsKCiAgQmxvYkluZm8KICAgICpibG9iOwoKICB1bnNpZ25l ZCBsb25nCiAgICBtYWdpY2tfY29sdW1ucywKICAgIG1hZ2lja19yb3dzOwoKICBjaGFyCiAgICBt YWdpY2tfZmlsZW5hbWVbMjA1M10sCiAgICBtYWdpY2tbMjA1M10sCiAgICBmaWxlbmFtZVsyMDUz XTsKfSBJbWFnZTsKCnR5cGVkZWYgc3RydWN0IF9JbWFnZUluZm8KewogIHVuc2lnbmVkIGxvbmcK ICAgIHNpZ25hdHVyZTsKCiAgQ29tcHJlc3Npb25UeXBlCiAgICBjb21wcmVzc2lvbjsKCiAgdW5z aWduZWQgaW50CiAgICB0ZW1wb3JhcnksCiAgICBhZGpvaW4sCiAgICBhbnRpYWxpYXM7CgogIHVu c2lnbmVkIGxvbmcKICAgIHN1YmltYWdlLAogICAgc3VicmFuZ2UsCiAgICBkZXB0aDsKCiAgY2hh cgogICAgKnNpemUsCiAgICAqdGlsZSwKICAgICpwYWdlOwoKICBJbnRlcmxhY2VUeXBlCiAgICBp bnRlcmxhY2U7CgogIFJlc29sdXRpb25UeXBlCiAgICB1bml0czsKCiAgdW5zaWduZWQgbG9uZwog ICAgcXVhbGl0eTsKCiAgY2hhcgogICAgKnNlcnZlcl9uYW1lLAogICAgKmZvbnQsCiAgICAqdGV4 dHVyZSwKICAgICpkZW5zaXR5OwoKICBkb3VibGUKICAgIHBvaW50c2l6ZTsKCiAgZG91YmxlCiAg ICBmdXp6OwoKICBQaXhlbFBhY2tldAogICAgcGVuLAogICAgYmFja2dyb3VuZF9jb2xvciwKICAg IGJvcmRlcl9jb2xvciwKICAgIG1hdHRlX2NvbG9yOwoKICB1bnNpZ25lZCBpbnQKICAgIGRpdGhl ciwKICAgIG1vbm9jaHJvbWU7CgogIENvbG9yc3BhY2VUeXBlCiAgICBjb2xvcnNwYWNlOwoKICBJ bWFnZVR5cGUKICAgIHR5cGU7CgogIFByZXZpZXdUeXBlCiAgICBwcmV2aWV3X3R5cGU7CgogIGxv bmcKICAgIGdyb3VwOwoKICB1bnNpZ25lZCBpbnQKICAgIHBpbmcsCiAgICB2ZXJib3NlLAogICAg ZGVidWc7CgogIGNoYXIKICAgICp2aWV3OwoKICB2b2lkCiAgICAqY2xpZW50X2RhdGE7CgogIGlu dAogICAgKCpmaWZvKShjb25zdCBJbWFnZSAqLGNvbnN0IHZvaWQgKixjb25zdCBzaXplX3QpOwoK ICBGSUxFCiAgICAqZmlsZTsKCiAgQmxvYkluZm8KICAgICpibG9iOwoKICBjaGFyCiAgICBtYWdp Y2tbMjA1M10sCiAgICB1bmlxdWVbMjA1M10sCiAgICB6ZXJvWzIwNTNdLAogICAgZmlsZW5hbWVb MjA1M107Cn0gSW1hZ2VJbmZvOwoKdHlwZWRlZiBzdHJ1Y3QgX01hZ2lja0luZm8KewogIHVuc2ln bmVkIGxvbmcKICAgIHNpZ25hdHVyZTsKCiAgc3RydWN0IF9NYWdpY2tJbmZvCiAgICAqcHJldmlv dXMsCiAgICAqbmV4dDsKCiAgY2hhcgogICAgKm5hbWU7CgogIGNoYXIKICAgICpkZXNjcmlwdGlv biwKICAgICptb2R1bGU7CgogIEltYWdlSW5mbwogICAgKmltYWdlX2luZm87CgogIEltYWdlCiAg ICAqKCpkZWNvZGVyKShjb25zdCBJbWFnZUluZm8gKixFeGNlcHRpb25JbmZvICopOwoKICB1bnNp Z25lZCBpbnQKICAgICgqZW5jb2RlcikoY29uc3QgSW1hZ2VJbmZvICosSW1hZ2UgKiksCiAgICAo Km1hZ2ljaykoY29uc3QgdW5zaWduZWQgY2hhciAqLGNvbnN0IHNpemVfdCk7CgogIHZvaWQKICAg ICpjbGllbnRfZGF0YTsKCiAgdW5zaWduZWQgaW50CiAgICBhZGpvaW4sCiAgICByYXcsCiAgICBz dGVhbHRoLAogICAgYmxvYl9zdXBwb3J0LAogICAgdGhyZWFkX3N1cHBvcnQ7Cn0gTWFnaWNrSW5m bzsKCgoKCmV4dGVybiBjb25zdCBjaGFyCiAgKkFscGhhYmV0LAogICpBcHBlbmRCaW5hcnlUeXBl LAogICpCYWNrZ3JvdW5kQ29sb3IsCiAgKkJvcmRlckNvbG9yLAogICpEZWZhdWx0UG9pbnRTaXpl LAogICpEZWZhdWx0VGlsZUZyYW1lLAogICpEZWZhdWx0VGlsZUdlb21ldHJ5LAogICpEZWZhdWx0 VGlsZUxhYmVsLAogICpGb3JlZ3JvdW5kQ29sb3IsCiAgKk1hdHRlQ29sb3IsCiAgKkxvYWRJbWFn ZVRleHQsCiAgKkxvYWRJbWFnZXNUZXh0LAogICpQU0RlbnNpdHlHZW9tZXRyeSwKICAqUFNQYWdl R2VvbWV0cnksCiAgKlJlYWRCaW5hcnlUeXBlLAogICpSZWFkQmluYXJ5VW5idWZmZXJlZFR5cGUs CiAgKlNhdmVJbWFnZVRleHQsCiAgKlNhdmVJbWFnZXNUZXh0LAogICpXcml0ZUJpbmFyeVR5cGU7 CgpleHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZwogIERlZmF1bHRDb21wcmVzc2lvblF1YWxpdHk7 CgoKCgpleHRlcm4gY2hhcgogICoqR2V0Q29sb3JMaXN0KGNvbnN0IGNoYXIgKixpbnQgKiksCiAg KkdldE1hZ2lja0NvbmZpZ3VyZVBhdGgoY29uc3QgY2hhciAqKTsKCmV4dGVybiBjb25zdCBjaGFy CiAgKkdldEltYWdlTWFnaWNrKGNvbnN0IHVuc2lnbmVkIGNoYXIgKixjb25zdCBzaXplX3QpLAog ICpHZXRNYWdpY2tWZXJzaW9uKHVuc2lnbmVkIGludCAqKTsKCmV4dGVybiBjb25zdCBDb2xvcklu Zm8KICAqR2V0Q29sb3JJbmZvKGNvbnN0IGNoYXIgKixFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJu IGNvbnN0IE1hZ2lja0luZm8KICAqR2V0TWFnaWNrSW5mbyhjb25zdCBjaGFyICosRXhjZXB0aW9u SW5mbyAqZXhjZXB0aW9uKTsKCmV4dGVybiBjb25zdCBQaXhlbFBhY2tldAogICpBY3F1aXJlSW1h Z2VQaXhlbHMoY29uc3QgSW1hZ2UgKixjb25zdCBsb25nLGNvbnN0IGxvbmcsY29uc3QgdW5zaWdu ZWQgbG9uZywKICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcsRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVy biBJbWFnZQogICpBZGROb2lzZUltYWdlKGNvbnN0IEltYWdlICosY29uc3QgTm9pc2VUeXBlLEV4 Y2VwdGlvbkluZm8gKiksCiAgKkFsbG9jYXRlSW1hZ2UoY29uc3QgSW1hZ2VJbmZvICopLAogICpB cHBlbmRJbWFnZXMoY29uc3QgSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBpbnQsRXhjZXB0aW9uSW5m byAqKSwKICAqQXZlcmFnZUltYWdlcyhjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAg KkJsdXJJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsRXhjZXB0 aW9uSW5mbyAqKSwKICAqQm9yZGVySW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBSZWN0YW5nbGVJ bmZvICosRXhjZXB0aW9uSW5mbyAqKSwKICAqQ2hhcmNvYWxJbWFnZShjb25zdCBJbWFnZSAqLGNv bnN0IGRvdWJsZSxjb25zdCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqQ2hvcEltYWdlKGNv bnN0IEltYWdlICosY29uc3QgUmVjdGFuZ2xlSW5mbyAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkNs b25lSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2lnbmVk IGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBpbnQsRXhjZXB0aW9uSW5mbyAqKSwKICAqQ29hbGVz Y2VJbWFnZXMoY29uc3QgSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAogICpDb2xvcml6ZUltYWdl KGNvbnN0IEltYWdlICosY29uc3QgY2hhciAqLGNvbnN0IFBpeGVsUGFja2V0LEV4Y2VwdGlvbklu Zm8gKiksCiAgKkNvbnN0aXR1dGVJbWFnZShjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2ln bmVkIGxvbmcsY29uc3QgY2hhciAqLAogICAgY29uc3QgU3RvcmFnZVR5cGUsY29uc3Qgdm9pZCAq LEV4Y2VwdGlvbkluZm8gKiksCiAgKkNvbnZvbHZlSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCB1 bnNpZ25lZCBpbnQsY29uc3QgZG91YmxlICosCiAgICBFeGNlcHRpb25JbmZvICopLAogICpDcm9w SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBSZWN0YW5nbGVJbmZvICosRXhjZXB0aW9uSW5mbyAq KSwKICAqRGVjb25zdHJ1Y3RJbWFnZXMoY29uc3QgSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAog ICpEZXNwZWNrbGVJbWFnZShjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkVkZ2VJ bWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxFeGNlcHRpb25JbmZvICopLAogICpFbWJv c3NJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsRXhjZXB0aW9u SW5mbyAqKSwKICAqRW5oYW5jZUltYWdlKGNvbnN0IEltYWdlICosRXhjZXB0aW9uSW5mbyAqKSwK ICAqRmxhdHRlbkltYWdlcyhjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkZsaXBJ bWFnZShjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkZsb3BJbWFnZShjb25zdCBJ bWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKkZyYW1lSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25z dCBGcmFtZUluZm8gKixFeGNlcHRpb25JbmZvICopLAogICpHZXROZXh0SW1hZ2UoSW1hZ2UgKiks CiAgKkdhdXNzaWFuQmx1ckltYWdlKGNvbnN0IEltYWdlICosY29uc3QgZG91YmxlLGNvbnN0IGRv dWJsZSxFeGNlcHRpb25JbmZvICopLAogICpJbXBsb2RlSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25z dCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqKkxpc3RUb0dyb3VwSW1hZ2UoY29uc3QgSW1h Z2UgKix1bnNpZ25lZCBsb25nICopLAogICpNYWduaWZ5SW1hZ2UoY29uc3QgSW1hZ2UgKixFeGNl cHRpb25JbmZvICopLAogICpNZWRpYW5GaWx0ZXJJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRv dWJsZSxFeGNlcHRpb25JbmZvICopLAogICpNaW5pZnlJbWFnZShjb25zdCBJbWFnZSAqLEV4Y2Vw dGlvbkluZm8gKiksCiAgKk1vbnRhZ2VJbWFnZXMoY29uc3QgSW1hZ2UgKixjb25zdCBNb250YWdl SW5mbyAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKk1vcnBoSW1hZ2VzKGNvbnN0IEltYWdlICosY29u c3QgdW5zaWduZWQgbG9uZyxFeGNlcHRpb25JbmZvICopLAogICpNb3NhaWNJbWFnZXMoY29uc3Qg SW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAogICpNb3Rpb25CbHVySW1hZ2UoY29uc3QgSW1hZ2Ug Kixjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSwKICAgIEV4Y2VwdGlvbklu Zm8gKiksCiAgKk9pbFBhaW50SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBkb3VibGUsRXhjZXB0 aW9uSW5mbyAqKSwKICAqUGluZ0ltYWdlKGNvbnN0IEltYWdlSW5mbyAqLEV4Y2VwdGlvbkluZm8g KiksCiAgKlJlYWRJbWFnZShjb25zdCBJbWFnZUluZm8gKixFeGNlcHRpb25JbmZvICopLAogICpS ZWFkU3RyZWFtKGNvbnN0IEltYWdlSW5mbyAqLAogICAgaW50ICgqKShjb25zdCBJbWFnZSAqLGNv bnN0IHZvaWQgKixjb25zdCBzaXplX3QpLEV4Y2VwdGlvbkluZm8gKiksCiAgKlJlZHVjZU5vaXNl SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqUmVm ZXJlbmNlSW1hZ2UoSW1hZ2UgKiksCiAgKlJlc2l6ZUltYWdlKGNvbnN0IEltYWdlICosY29uc3Qg dW5zaWduZWQgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgRmlsdGVyVHlwZXMs Y29uc3QgZG91YmxlLEV4Y2VwdGlvbkluZm8gKiksCiAgKlJvbGxJbWFnZShjb25zdCBJbWFnZSAq LGNvbnN0IGxvbmcsY29uc3QgbG9uZyxFeGNlcHRpb25JbmZvICopLAogICpSb3RhdGVJbWFnZShj b25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxFeGNlcHRpb25JbmZvICopLAogICpTYW1wbGVJbWFn ZShjb25zdCBJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZywK ICAgIEV4Y2VwdGlvbkluZm8gKiksCiAgKlNjYWxlSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCB1 bnNpZ25lZCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBFeGNlcHRpb25JbmZvICopLAog ICpTaGFkZUltYWdlKGNvbnN0IEltYWdlICosY29uc3QgdW5zaWduZWQgaW50LGRvdWJsZSxkb3Vi bGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqU2hhcnBlbkltYWdlKGNvbnN0IEltYWdlICosY29uc3Qg ZG91YmxlLGNvbnN0IGRvdWJsZSxFeGNlcHRpb25JbmZvICopLAogICpTaGF2ZUltYWdlKGNvbnN0 IEltYWdlICosY29uc3QgUmVjdGFuZ2xlSW5mbyAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKlNoZWFy SW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLEV4Y2VwdGlvbklu Zm8gKiksCiAgKlNwcmVhZEltYWdlKGNvbnN0IEltYWdlICosY29uc3QgdW5zaWduZWQgaW50LEV4 Y2VwdGlvbkluZm8gKiksCiAgKlN0ZWdhbm9JbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IEltYWdl ICosRXhjZXB0aW9uSW5mbyAqKSwKICAqU3RlcmVvSW1hZ2UoY29uc3QgSW1hZ2UgKixjb25zdCBJ bWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgKlN3aXJsSW1hZ2UoY29uc3QgSW1hZ2UgKixkb3Vi bGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqVW5zaGFycE1hc2tJbWFnZShjb25zdCBJbWFnZSAqLGNv bnN0IGRvdWJsZSxjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLAogICAgY29uc3QgZG91YmxlLEV4 Y2VwdGlvbkluZm8gKiksCiAgKldhdmVJbWFnZShjb25zdCBJbWFnZSAqLGNvbnN0IGRvdWJsZSxj b25zdCBkb3VibGUsRXhjZXB0aW9uSW5mbyAqKSwKICAqWm9vbUltYWdlKGNvbnN0IEltYWdlICos Y29uc3QgdW5zaWduZWQgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgRXhjZXB0aW9uSW5m byAqKTsKCmV4dGVybiBJbWFnZUluZm8KICAqQ2xvbmVJbWFnZUluZm8oY29uc3QgSW1hZ2VJbmZv ICopOwoKZXh0ZXJuIEltYWdlVHlwZQogIEdldEltYWdlVHlwZShjb25zdCBJbWFnZSAqLEV4Y2Vw dGlvbkluZm8gKik7CgpleHRlcm4gSW5kZXhQYWNrZXQKICAqR2V0SW5kZXhlcyhjb25zdCBJbWFn ZSAqKSwKICBWYWxpZGF0ZUNvbG9ybWFwSW5kZXgoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25n KTsKCmV4dGVybiBpbnQKICBQYXJzZUltYWdlR2VvbWV0cnkoY29uc3QgY2hhciAqLGxvbmcgKixs b25nICosdW5zaWduZWQgbG9uZyAqLAogICAgdW5zaWduZWQgbG9uZyAqKTsKCmV4dGVybiBNYWdp Y2tJbmZvCiAgKlJlZ2lzdGVyTWFnaWNrSW5mbyhNYWdpY2tJbmZvICopLAogICpTZXRNYWdpY2tJ bmZvKGNvbnN0IGNoYXIgKik7CgpleHRlcm4gTW9udGFnZUluZm8KICAqQ2xvbmVNb250YWdlSW5m byhjb25zdCBJbWFnZUluZm8gKixjb25zdCBNb250YWdlSW5mbyAqKTsKCmV4dGVybiBQaXhlbFBh Y2tldAogIEFjcXVpcmVPbmVQaXhlbChjb25zdCBJbWFnZSAqLGNvbnN0IGxvbmcsY29uc3QgbG9u ZyxFeGNlcHRpb25JbmZvICopLAogICpHZXRJbWFnZVBpeGVscyhJbWFnZSAqLGNvbnN0IGxvbmcs Y29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQgbG9uZyks CiAgR2V0T25lUGl4ZWwoSW1hZ2UgKixjb25zdCBsb25nLGNvbnN0IGxvbmcpLAogICpHZXRQaXhl bHMoY29uc3QgSW1hZ2UgKiksCiAgKlNldEltYWdlUGl4ZWxzKEltYWdlICosY29uc3QgbG9uZyxj b25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25nKTsK CmV4dGVybiBSZWN0YW5nbGVJbmZvCiAgR2V0SW1hZ2VCb3VuZGluZ0JveChjb25zdCBJbWFnZSAq LEV4Y2VwdGlvbkluZm8gKmV4Y2VwdGlvbik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgQWxsb2Nh dGVJbWFnZUNvbG9ybWFwKEltYWdlICosY29uc3QgdW5zaWduZWQgbG9uZyksCiAgQW5pbWF0ZUlt YWdlcyhjb25zdCBJbWFnZUluZm8gKmltYWdlX2luZm8sSW1hZ2UgKmltYWdlKSwKICBDaGFubmVs SW1hZ2UoSW1hZ2UgKixjb25zdCBDaGFubmVsVHlwZSksCiAgQ29tcG9zaXRlSW1hZ2UoSW1hZ2Ug Kixjb25zdCBDb21wb3NpdGVPcGVyYXRvcixjb25zdCBJbWFnZSAqLGNvbnN0IGxvbmcsCiAgICBj b25zdCBsb25nKSwKICBDb250cmFzdEltYWdlKEltYWdlICosY29uc3QgdW5zaWduZWQgaW50KSwK ICBEaXNwYXRjaEltYWdlKGNvbnN0IEltYWdlICosY29uc3QgbG9uZyxjb25zdCBsb25nLGNvbnN0 IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IGNoYXIgKixjb25z dCBTdG9yYWdlVHlwZSx2b2lkICosRXhjZXB0aW9uSW5mbyAqKSwKICBEaXNwbGF5SW1hZ2VzKGNv bnN0IEltYWdlSW5mbyAqaW1hZ2VfaW5mbyxJbWFnZSAqaW1hZ2UpLAogIEVxdWFsaXplSW1hZ2Uo SW1hZ2UgKiksCiAgR2FtbWFJbWFnZShJbWFnZSAqLGNvbnN0IGNoYXIgKiksCiAgR2V0TnVtYmVy U2NlbmVzKGNvbnN0IEltYWdlICopLAogIEdyYWRpZW50SW1hZ2UoSW1hZ2UgKixjb25zdCBQaXhl bFBhY2tldCAqLGNvbnN0IFBpeGVsUGFja2V0ICopLAogIElzR2VvbWV0cnkoY29uc3QgY2hhciAq KSwKICBJc0dyYXlJbWFnZShjb25zdCBJbWFnZSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgSXNJbWFn ZXNFcXVhbChJbWFnZSAqLEltYWdlICopLAogIElzVGFpbnRJbWFnZShjb25zdCBJbWFnZSAqKSwK ICBJc01hZ2lja0NvbmZsaWN0KGNvbnN0IGNoYXIgKiksCiAgSXNNb25vY2hyb21lSW1hZ2UoY29u c3QgSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAogIElzT3BhcXVlSW1hZ2UoY29uc3QgSW1hZ2Ug KixFeGNlcHRpb25JbmZvICopLAogIElzUGFsZXR0ZUltYWdlKGNvbnN0IEltYWdlICosRXhjZXB0 aW9uSW5mbyAqKSwKICBJc1N1YmltYWdlKGNvbnN0IGNoYXIgKixjb25zdCB1bnNpZ25lZCBpbnQp LAogIExldmVsSW1hZ2UoSW1hZ2UgKixjb25zdCBjaGFyICopLAogIExpc3RDb2xvckluZm8oRklM RSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgTGlzdE1hZ2lja0luZm8oRklMRSAqLEV4Y2VwdGlvbklu Zm8gKiksCiAgTW9kdWxhdGVJbWFnZShJbWFnZSAqLGNvbnN0IGNoYXIgKiksCiAgTW9ncmlmeUlt YWdlKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IGludCxjaGFyICoqLEltYWdlICoqKSwKICBNb2dy aWZ5SW1hZ2VzKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IGludCxjaGFyICoqLEltYWdlICoqKSwK ICBOZWdhdGVJbWFnZShJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGludCksCiAgTm9ybWFsaXplSW1h Z2UoSW1hZ2UgKiksCiAgT3BhcXVlSW1hZ2UoSW1hZ2UgKixjb25zdCBQaXhlbFBhY2tldCxjb25z dCBQaXhlbFBhY2tldCksCiAgUGxhc21hSW1hZ2UoSW1hZ2UgKixjb25zdCBTZWdtZW50SW5mbyAq LGludCxpbnQpLAogIFBvcEltYWdlUGl4ZWxzKGNvbnN0IEltYWdlICosY29uc3QgUXVhbnR1bVR5 cGUsdW5zaWduZWQgY2hhciAqKSwKICBQcm9maWxlSW1hZ2UoSW1hZ2UgKixjb25zdCBjaGFyICos Y29uc3QgY2hhciAqKSwKICBQdXNoSW1hZ2VQaXhlbHMoSW1hZ2UgKixjb25zdCBRdWFudHVtVHlw ZSxjb25zdCB1bnNpZ25lZCBjaGFyICopLAogIFF1ZXJ5Q29sb3JEYXRhYmFzZShjb25zdCBjaGFy ICosUGl4ZWxQYWNrZXQgKiksCiAgUXVlcnlDb2xvcm5hbWUoY29uc3QgSW1hZ2UgKixjb25zdCBQ aXhlbFBhY2tldCAqLGNvbnN0IENvbXBsaWFuY2VUeXBlLGNoYXIgKiwKICAgIEV4Y2VwdGlvbklu Zm8gKiksCiAgUmFpc2VJbWFnZShJbWFnZSAqLGNvbnN0IFJlY3RhbmdsZUluZm8gKixjb25zdCBp bnQpLAogIFJHQlRyYW5zZm9ybUltYWdlKEltYWdlICosY29uc3QgQ29sb3JzcGFjZVR5cGUpLAog IFNldEltYWdlQ2xpcE1hc2soSW1hZ2UgKixJbWFnZSAqKSwKICBTZXRJbWFnZURlcHRoKEltYWdl ICosY29uc3QgdW5zaWduZWQgbG9uZyksCiAgU2V0SW1hZ2VJbmZvKEltYWdlSW5mbyAqLGNvbnN0 IHVuc2lnbmVkIGludCxFeGNlcHRpb25JbmZvICopLAogIFNpZ25hdHVyZUltYWdlKEltYWdlICop LAogIFNvcnRDb2xvcm1hcEJ5SW50ZW5zaXR5KEltYWdlICopLAogIFN5bmNJbWFnZVBpeGVscyhJ bWFnZSAqKSwKICBUaHJlc2hvbGRJbWFnZShJbWFnZSAqLGNvbnN0IGRvdWJsZSksCiAgVHJhbnNm b3JtUkdCSW1hZ2UoSW1hZ2UgKixjb25zdCBDb2xvcnNwYWNlVHlwZSksCiAgVHJhbnNwYXJlbnRJ bWFnZShJbWFnZSAqLGNvbnN0IFBpeGVsUGFja2V0LGNvbnN0IHVuc2lnbmVkIGludCksCiAgVW5y ZWdpc3Rlck1hZ2lja0luZm8oY29uc3QgY2hhciAqKSwKICBXcml0ZUltYWdlKGNvbnN0IEltYWdl SW5mbyAqLEltYWdlICopLAogIFdyaXRlU3RyZWFtKGNvbnN0IEltYWdlSW5mbyAqLEltYWdlICos CiAgICBpbnQgKCopKGNvbnN0IEltYWdlICosY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVfdCkpOwoK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcKICBHZXRJbWFnZURlcHRoKGNvbnN0IEltYWdlICosRXhjZXB0 aW9uSW5mbyAqKSwKICBHZXROdW1iZXJDb2xvcnMoY29uc3QgSW1hZ2UgKixGSUxFICosRXhjZXB0 aW9uSW5mbyAqKTsKCmV4dGVybiB2b2lkCiAgQWxsb2NhdGVOZXh0SW1hZ2UoY29uc3QgSW1hZ2VJ bmZvICosSW1hZ2UgKiksCiAgQ29tcHJlc3NDb2xvcm1hcChJbWFnZSAqKSwKICBDeWNsZUNvbG9y bWFwSW1hZ2UoSW1hZ2UgKixjb25zdCBpbnQpLAogIERlc2NyaWJlSW1hZ2UoSW1hZ2UgKixGSUxF ICosY29uc3QgdW5zaWduZWQgaW50KSwKICBEZXN0cm95Q29sb3JJbmZvKHZvaWQpLAogIERlc3Ry b3lDb25zdGl0dXRlKHZvaWQpLAogIERlc3Ryb3lJbWFnZShJbWFnZSAqKSwKICBEZXN0cm95SW1h Z2VJbmZvKEltYWdlSW5mbyAqKSwKICBEZXN0cm95SW1hZ2VQaXhlbHMoSW1hZ2UgKiksCiAgRGVz dHJveUltYWdlcyhJbWFnZSAqKSwKICBEZXN0cm95TWFnaWNrKHZvaWQpLAogIERlc3Ryb3lNYWdp Y2tJbmZvKHZvaWQpLAogIERlc3Ryb3lNb250YWdlSW5mbyhNb250YWdlSW5mbyAqKSwKICBHZXRJ bWFnZUluZm8oSW1hZ2VJbmZvICopLAogIEdldE1vbnRhZ2VJbmZvKGNvbnN0IEltYWdlSW5mbyAq LE1vbnRhZ2VJbmZvICopLAogIEluaXRpYWxpemVNYWdpY2soY29uc3QgY2hhciAqKSwKICBNb2Rp ZnlJbWFnZShJbWFnZSAqKixFeGNlcHRpb25JbmZvICopLAogIFJlZ2lzdGVyQVJUSW1hZ2Uodm9p ZCksCiAgUmVnaXN0ZXJBVklJbWFnZSh2b2lkKSwKICBSZWdpc3RlckFWU0ltYWdlKHZvaWQpLAog IFJlZ2lzdGVyQklFSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJCTVBJbWFnZSh2b2lkKSwKICBSZWdp c3RlckNNWUtJbWFnZSh2b2lkKSwKICBSZWdpc3RlckNVVEltYWdlKHZvaWQpLAogIFJlZ2lzdGVy RENNSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJEQ1hJbWFnZSh2b2lkKSwKICBSZWdpc3RlckRJQklt YWdlKHZvaWQpLAogIFJlZ2lzdGVyRFBTSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJEUFhJbWFnZSh2 b2lkKSwKICBSZWdpc3RlckVQREZJbWFnZSh2b2lkKSwKICBSZWdpc3RlckVQSUltYWdlKHZvaWQp LAogIFJlZ2lzdGVyRVBTSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJFUFMySW1hZ2Uodm9pZCksCiAg UmVnaXN0ZXJFUFNGSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJFUFNJSW1hZ2Uodm9pZCksCiAgUmVn aXN0ZXJFUFRJbWFnZSh2b2lkKSwKICBSZWdpc3RlckZBWEltYWdlKHZvaWQpLAogIFJlZ2lzdGVy RklUU0ltYWdlKHZvaWQpLAogIFJlZ2lzdGVyRlBYSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJHM0lt YWdlKHZvaWQpLAogIFJlZ2lzdGVyR0lGSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJHSUY4N0ltYWdl KHZvaWQpLAogIFJlZ2lzdGVyR1JBRElFTlRJbWFnZSh2b2lkKSwKICBSZWdpc3RlckdSQU5JVEVJ bWFnZSh2b2lkKSwKICBSZWdpc3RlckdSQVlJbWFnZSh2b2lkKSwKICBSZWdpc3RlckhJbWFnZSh2 b2lkKSwKICBSZWdpc3RlckhERkltYWdlKHZvaWQpLAogIFJlZ2lzdGVySElTVE9HUkFNSW1hZ2Uo dm9pZCksCiAgUmVnaXN0ZXJIVE1JbWFnZSh2b2lkKSwKICBSZWdpc3RlckhUTUxJbWFnZSh2b2lk KSwKICBSZWdpc3RlcklDQkltYWdlKHZvaWQpLAogIFJlZ2lzdGVySUNPTkltYWdlKHZvaWQpLAog IFJlZ2lzdGVySU1QTElDSVRJbWFnZSh2b2lkKSwKICBSZWdpc3RlckpCR0ltYWdlKHZvaWQpLAog IFJlZ2lzdGVySkJJR0ltYWdlKHZvaWQpLAogIFJlZ2lzdGVySlBHSW1hZ2Uodm9pZCksCiAgUmVn aXN0ZXJKUEVHSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJKUDJJbWFnZSh2b2lkKSwKICBSZWdpc3Rl ckxBQkVMSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJMT0dPSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJN QVBJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1FVEFJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1BVElt YWdlKHZvaWQpLAogIFJlZ2lzdGVyTUFUVEVJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1JRkZJbWFn ZSh2b2lkKSwKICBSZWdpc3Rlck1OR0ltYWdlKHZvaWQpLAogIFJlZ2lzdGVyTU9OT0ltYWdlKHZv aWQpLAogIFJlZ2lzdGVyTVBDSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJNUEVHSW1hZ2Uodm9pZCks CiAgUmVnaXN0ZXJNUFJJbWFnZSh2b2lkKSwKICBSZWdpc3Rlck1UVkltYWdlKHZvaWQpLAogIFJl Z2lzdGVyTVZHSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJORVRTQ0FQRUltYWdlKHZvaWQpLAogIFJl Z2lzdGVyTlVMTEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUDdJbWFnZSh2b2lkKSwKICBSZWdpc3Rl clBCTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyT1RCSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQQ0RJ bWFnZSh2b2lkKSwKICBSZWdpc3RlclBDRFNJbWFnZSh2b2lkKSwKICBSZWdpc3RlclBDTEltYWdl KHZvaWQpLAogIFJlZ2lzdGVyUENUSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQQ1hJbWFnZSh2b2lk KSwKICBSZWdpc3RlclBEQkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUERGSW1hZ2Uodm9pZCksCiAg UmVnaXN0ZXJQSUNJbWFnZSh2b2lkKSwKICBSZWdpc3RlclBJQ1RJbWFnZSh2b2lkKSwKICBSZWdp c3RlclBJWEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUExBU01BSW1hZ2Uodm9pZCksCiAgUmVnaXN0 ZXJQR01JbWFnZSh2b2lkKSwKICBSZWdpc3RlclBNSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQTkdJ bWFnZSh2b2lkKSwKICBSZWdpc3RlclBOTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUFBNSW1hZ2Uo dm9pZCksCiAgUmVnaXN0ZXJQUkVWSUVXSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQU0ltYWdlKHZv aWQpLAogIFJlZ2lzdGVyUFMySW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJQUzNJbWFnZSh2b2lkKSwK ICBSZWdpc3RlclBTREltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUFRJRkltYWdlKHZvaWQpLAogIFJl Z2lzdGVyUFdQSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJSQVNJbWFnZSh2b2lkKSwKICBSZWdpc3Rl clJHQkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUkdCQUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyUkxB SW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJSTEVJbWFnZSh2b2lkKSwKICBSZWdpc3RlclNDVEltYWdl KHZvaWQpLAogIFJlZ2lzdGVyU0ZXSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJTR0lJbWFnZSh2b2lk KSwKICBSZWdpc3RlclNIVE1MSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJTVEVHQU5PSW1hZ2Uodm9p ZCksCiAgUmVnaXN0ZXJTVU5JbWFnZSh2b2lkKSwKICBSZWdpc3RlclNWR0ltYWdlKHZvaWQpLAog IFJlZ2lzdGVyVEVYVEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyVEdBSW1hZ2Uodm9pZCksCiAgUmVn aXN0ZXJUSUZJbWFnZSh2b2lkKSwKICBSZWdpc3RlclRJRkZJbWFnZSh2b2lkKSwKICBSZWdpc3Rl clRJTEVJbWFnZSh2b2lkKSwKICBSZWdpc3RlclRJTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyVFRG SW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJUWFRJbWFnZSh2b2lkKSwKICBSZWdpc3RlclVJTEltYWdl KHZvaWQpLAogIFJlZ2lzdGVyVVJMSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJVWVZZSW1hZ2Uodm9p ZCksCiAgUmVnaXN0ZXJWREFJbWFnZSh2b2lkKSwKICBSZWdpc3RlclZJQ0FSSW1hZ2Uodm9pZCks CiAgUmVnaXN0ZXJWSURJbWFnZSh2b2lkKSwKICBSZWdpc3RlclZJRkZJbWFnZSh2b2lkKSwKICBS ZWdpc3RlclZTVEltYWdlKHZvaWQpLAogIFJlZ2lzdGVyV0JNUEltYWdlKHZvaWQpLAogIFJlZ2lz dGVyV01GSW1hZ2Uodm9pZCksCiAgUmVnaXN0ZXJXUEdJbWFnZSh2b2lkKSwKICBSZWdpc3RlclhJ bWFnZSh2b2lkKSwKICBSZWdpc3RlclhCTUltYWdlKHZvaWQpLAogIFJlZ2lzdGVyWENJbWFnZSh2 b2lkKSwKICBSZWdpc3RlclhDRkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyWFBNSW1hZ2Uodm9pZCks CiAgUmVnaXN0ZXJYVkltYWdlKHZvaWQpLAogIFJlZ2lzdGVyWFdESW1hZ2Uodm9pZCksCiAgUmVn aXN0ZXJZVVZJbWFnZSh2b2lkKSwKICBTZXRJbWFnZShJbWFnZSAqLGNvbnN0IFF1YW50dW0pLAog IFNldEltYWdlT3BhY2l0eShJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGludCksCiAgU2V0SW1hZ2VU eXBlKEltYWdlICosY29uc3QgSW1hZ2VUeXBlKSwKICBTb2xhcml6ZUltYWdlKEltYWdlICosY29u c3QgZG91YmxlKSwKICBTeW5jSW1hZ2UoSW1hZ2UgKiksCiAgVGV4dHVyZUltYWdlKEltYWdlICos Y29uc3QgSW1hZ2UgKiksCiAgVHJhbnNmb3JtSFNMKGNvbnN0IFF1YW50dW0sY29uc3QgUXVhbnR1 bSxjb25zdCBRdWFudHVtLGRvdWJsZSAqLGRvdWJsZSAqLAogICAgZG91YmxlICopLAogIFRyYW5z Zm9ybUltYWdlKEltYWdlICoqLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopLAogIFVucmVnaXN0 ZXJBUlRJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyQVZJSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rl ckFWU0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJCSUVJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVy Qk1QSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckNNWUtJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVy Q1VUSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckRDTUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJE Q1hJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRElCSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckRQ U0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJEUFhJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRVBE RkltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJFUElJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRVBT SW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckVQUzJJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRVBT RkltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJFUFNJSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckVQ VEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJGQVhJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRklU U0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJGUFhJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyRzNJ bWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyR0lGSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckdJRjg3 SW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckdSQURJRU5USW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rl ckdSQU5JVEVJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyR1JBWUltYWdlKHZvaWQpLAogIFVucmVn aXN0ZXJISW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckhERkltYWdlKHZvaWQpLAogIFVucmVnaXN0 ZXJISVNUT0dSQU1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVySFRNSW1hZ2Uodm9pZCksCiAgVW5y ZWdpc3RlckhUTUxJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVySUNCSW1hZ2Uodm9pZCksCiAgVW5y ZWdpc3RlcklDT05JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVySU1QTElDSVRJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVySkJHSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckpCSUdJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVySlBHSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckpQRUdJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVySlAySW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlckxBQkVMSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlckxPR09JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyTUFQSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3Rlck1BVEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJNQVRURUltYWdlKHZvaWQp LAogIFVucmVnaXN0ZXJNRVRBSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1JRkZJbWFnZSh2b2lk KSwKICBVbnJlZ2lzdGVyTU5HSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1PTk9JbWFnZSh2b2lk KSwKICBVbnJlZ2lzdGVyTVBDSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1QRUdJbWFnZSh2b2lk KSwKICBVbnJlZ2lzdGVyTVBSSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3Rlck1UVkltYWdlKHZvaWQp LAogIFVucmVnaXN0ZXJNVkdJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyTkVUU0NBUEVJbWFnZSh2 b2lkKSwKICBVbnJlZ2lzdGVyTlVMTEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQN0ltYWdlKHZv aWQpLAogIFVucmVnaXN0ZXJQQk1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyT1RCSW1hZ2Uodm9p ZCksCiAgVW5yZWdpc3RlclBDREltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQQ0RTSW1hZ2Uodm9p ZCksCiAgVW5yZWdpc3RlclBDTEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQQ1RJbWFnZSh2b2lk KSwKICBVbnJlZ2lzdGVyUENYSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclBEQkltYWdlKHZvaWQp LAogIFVucmVnaXN0ZXJQREZJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUElDSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclBJQ1RJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUElYSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclBMQVNNQUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQR01JbWFnZSh2b2lk KSwKICBVbnJlZ2lzdGVyUE1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUE5HSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclBOTUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQUE1JbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVyUFJFVklFV0ltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQU0ltYWdlKHZvaWQp LAogIFVucmVnaXN0ZXJQUzJJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyUFMzSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclBTREltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJQVElGSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclBXUEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJSQVNJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVyUkdCSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclJHQkFJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVyUkxBSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclJMRUltYWdlKHZvaWQpLAog IFVucmVnaXN0ZXJTQ1RJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyU0ZXSW1hZ2Uodm9pZCksCiAg VW5yZWdpc3RlclNHSUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJTSFRNTEltYWdlKHZvaWQpLAog IFVucmVnaXN0ZXJTVEVHQU5PSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclNVTkltYWdlKHZvaWQp LAogIFVucmVnaXN0ZXJTVkdJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVEVYVEltYWdlKHZvaWQp LAogIFVucmVnaXN0ZXJUR0FJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVElGSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclRJRkZJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVElMRUltYWdlKHZvaWQp LAogIFVucmVnaXN0ZXJUSU1JbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyVFRGSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclRYVEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJVSUxJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVyVVJMSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclVZVllJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVyVkRBSW1hZ2Uodm9pZCksCiAgVW5yZWdpc3RlclZJQ0FSSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclZJREltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJWSUZGSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlclZTVEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJXQk1QSW1hZ2Uodm9pZCks CiAgVW5yZWdpc3RlcldNRkltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJXUEdJbWFnZSh2b2lkKSwK ICBVbnJlZ2lzdGVyWEltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJYQk1JbWFnZSh2b2lkKSwKICBV bnJlZ2lzdGVyWENJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyWENGSW1hZ2Uodm9pZCksCiAgVW5y ZWdpc3RlclhQTUltYWdlKHZvaWQpLAogIFVucmVnaXN0ZXJYVkltYWdlKHZvaWQpLAogIFVucmVn aXN0ZXJYV0RJbWFnZSh2b2lkKSwKICBVbnJlZ2lzdGVyWVVWSW1hZ2Uodm9pZCk7CiMgODYgIi4u L21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay9kcmF3LmgiIDEKIyAxNCAiLi4vbWFnaWNr L2RyYXcuaCIKdHlwZWRlZiBzdHJ1Y3QgX0FmZmluZU1hdHJpeAp7CiAgZG91YmxlCiAgICBzeCwK ICAgIHJ4LAogICAgcnksCiAgICBzeSwKICAgIHR4LAogICAgdHk7Cn0gQWZmaW5lTWF0cml4OwoK dHlwZWRlZiBzdHJ1Y3QgX0RyYXdJbmZvCnsKICB1bnNpZ25lZCBsb25nCiAgICBzaWduYXR1cmU7 CgogIGNoYXIKICAgICpwcmltaXRpdmUsCiAgICAqdGV4dCwKICAgICpnZW9tZXRyeTsKCiAgSW1h Z2UKICAgICp0aWxlOwoKICBBZmZpbmVNYXRyaXgKICAgIGFmZmluZTsKCiAgR3Jhdml0eVR5cGUK ICAgIGdyYXZpdHk7CgogIFBpeGVsUGFja2V0CiAgICBmaWxsLAogICAgc3Ryb2tlOwoKICBJbWFn ZQogICAgKmZpbGxfcGF0dGVybiwKICAgICpzdHJva2VfcGF0dGVybjsKCiAgdW5zaWduZWQgaW50 CiAgICBzdHJva2VfYW50aWFsaWFzLAogICAgdGV4dF9hbnRpYWxpYXM7CgogIEZpbGxSdWxlCiAg ICBmaWxsX3J1bGU7CgogIExpbmVDYXAKICAgIGxpbmVjYXA7CgogIExpbmVKb2luCiAgICBsaW5l am9pbjsKCiAgdW5zaWduZWQgbG9uZwogICAgbWl0ZXJsaW1pdDsKCiAgZG91YmxlCiAgICBkYXNo X29mZnNldDsKCiAgRGVjb3JhdGlvblR5cGUKICAgIGRlY29yYXRlOwoKICBDb21wb3NpdGVPcGVy YXRvcgogICAgY29tcG9zZTsKCiAgZG91YmxlCiAgICBwb2ludHNpemU7CgogIGRvdWJsZQogICAg c3Ryb2tlX3dpZHRoOwoKICBjaGFyCiAgICAqZm9udCwKICAgICpkZW5zaXR5OwoKICBQaXhlbFBh Y2tldAogICAgYm94LAogICAgYm9yZGVyX2NvbG9yOwoKICBjaGFyCiAgICAqc2VydmVyX25hbWU7 CgogIGRvdWJsZQogICAgKmRhc2hfcGF0dGVybjsKCiAgY2hhcgogICAgKmNsaXBfcGF0aDsKCiAg U2VnbWVudEluZm8KICAgIGJvdW5kczsKCiAgQ2xpcFBhdGhVbml0cwogICAgY2xpcF91bml0czsK CiAgdW5zaWduZWQgaW50CiAgICBkZWJ1ZzsKCiAgUXVhbnR1bQogICAgb3BhY2l0eTsKfSBEcmF3 SW5mbzsKCnR5cGVkZWYgc3RydWN0IF9UeXBlSW5mbwp7CiAgY2hhcgogICAgKmZpbGVuYW1lLAog ICAgKm5hbWUsCiAgICAqZmFtaWx5LAogICAgKmFsaWFzLAogICAgKmRlc2NyaXB0aW9uLAogICAg KmZvcm1hdCwKICAgICp3ZWlnaHQsCiAgICAqZ2x5cGhzLAogICAgKm1ldHJpY3MsCiAgICAqdmVy c2lvbjsKCiAgc3RydWN0IF9UeXBlSW5mbwogICAgKnByZXZpb3VzLAogICAgKm5leHQ7Cn0gVHlw ZUluZm87Cgp0eXBlZGVmIHN0cnVjdCBfUHJpbWl0aXZlSW5mbwp7CiAgUG9pbnRJbmZvCiAgICBw b2ludDsKCiAgdW5zaWduZWQgbG9uZwogICAgY29vcmRpbmF0ZXM7CgogIFByaW1pdGl2ZVR5cGUK ICAgIHByaW1pdGl2ZTsKCiAgUGFpbnRNZXRob2QKICAgIG1ldGhvZDsKCiAgY2hhcgogICAgKnRl eHQ7Cn0gUHJpbWl0aXZlSW5mbzsKCnR5cGVkZWYgc3RydWN0IF9UeXBlTWV0cmljCnsKICBQb2lu dEluZm8KICAgIHBpeGVsc19wZXJfZW07CgogIGxvbmcKICAgIGFzY2VudCwKICAgIGRlc2NlbnQ7 CgogIHVuc2lnbmVkIGxvbmcKICAgIHdpZHRoLAogICAgaGVpZ2h0LAogICAgbWF4X2FkdmFuY2U7 Cn0gVHlwZU1ldHJpYzsKCgoKCmV4dGVybiBjb25zdCBUeXBlSW5mbwogICpHZXRUeXBlSW5mbyhj b25zdCBjaGFyICosRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVybiBEcmF3SW5mbwogICpDbG9uZURy YXdJbmZvKGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IERyYXdJbmZvICopOwoKZXh0ZXJuIHVuc2ln bmVkIGludAogIEFubm90YXRlSW1hZ2UoSW1hZ2UgKixjb25zdCBEcmF3SW5mbyAqKSwKICBDb2xv ckZsb29kZmlsbEltYWdlKEltYWdlICosY29uc3QgRHJhd0luZm8gKixjb25zdCBQaXhlbFBhY2tl dCxjb25zdCBsb25nLAogICAgY29uc3QgbG9uZyxjb25zdCBQYWludE1ldGhvZCksCiAgRHJhd0lt YWdlKEltYWdlICosRHJhd0luZm8gKiksCiAgR2V0VHlwZU1ldHJpY3MoSW1hZ2UgKixjb25zdCBE cmF3SW5mbyAqLFR5cGVNZXRyaWMgKiksCiAgTGlzdFR5cGVJbmZvKEZJTEUgKixFeGNlcHRpb25J bmZvICopLAogIE1hdHRlRmxvb2RmaWxsSW1hZ2UoSW1hZ2UgKixjb25zdCBQaXhlbFBhY2tldCxj b25zdCB1bnNpZ25lZCBpbnQsY29uc3QgbG9uZywKICAgIGNvbnN0IGxvbmcsY29uc3QgUGFpbnRN ZXRob2QpOwoKZXh0ZXJuIHZvaWQKICBEZXN0cm95RHJhd0luZm8oRHJhd0luZm8gKiksCiAgRGVz dHJveVR5cGVJbmZvKHZvaWQpLAogIEdldERyYXdJbmZvKGNvbnN0IEltYWdlSW5mbyAqLERyYXdJ bmZvICopOwojIDg3ICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9tYWdpY2svZ2VtLmgiIDEK IyAxNCAiLi4vbWFnaWNrL2dlbS5oIgpleHRlcm4gZG91YmxlCiAgRXhwYW5kQWZmaW5lKGNvbnN0 IEFmZmluZU1hdHJpeCAqKSwKICBQZXJtdXRhdGUoY29uc3QgbG9uZyxjb25zdCBsb25nKTsKCmV4 dGVybiBpbnQKICBHZXRPcHRpbWFsS2VybmVsV2lkdGgoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJs ZSksCiAgR2V0T3B0aW1hbEtlcm5lbFdpZHRoMUQoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSks CiAgR2V0T3B0aW1hbEtlcm5lbFdpZHRoMkQoY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSk7Cgpl eHRlcm4gUGl4ZWxQYWNrZXQKICBBbHBoYUNvbXBvc2l0ZShjb25zdCBQaXhlbFBhY2tldCAqLGNv bnN0IGRvdWJsZSxjb25zdCBQaXhlbFBhY2tldCAqLAogICAgY29uc3QgZG91YmxlKSwKICBJbnRl cnBvbGF0ZUNvbG9yKGNvbnN0IEltYWdlICosY29uc3QgZG91YmxlLGNvbnN0IGRvdWJsZSxFeGNl cHRpb25JbmZvICopOwoKZXh0ZXJuIFF1YW50dW0KICBHZW5lcmF0ZU5vaXNlKGNvbnN0IFF1YW50 dW0sY29uc3QgTm9pc2VUeXBlKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBDb2xvck1hdGNoKGNv bnN0IFBpeGVsUGFja2V0ICosY29uc3QgUGl4ZWxQYWNrZXQgKixjb25zdCBkb3VibGUpOwoKZXh0 ZXJuIHZvaWQKICBDb250cmFzdChjb25zdCBpbnQsUXVhbnR1bSAqLFF1YW50dW0gKixRdWFudHVt ICopLAogIEhTTFRyYW5zZm9ybShjb25zdCBkb3VibGUsY29uc3QgZG91YmxlLGNvbnN0IGRvdWJs ZSxRdWFudHVtICosUXVhbnR1bSAqLAogICAgUXVhbnR1bSAqKSwKICBIdWxsKGNvbnN0IGxvbmcs Y29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsUXVhbnR1 bSAqLAogICAgUXVhbnR1bSAqLGNvbnN0IGludCksCiAgSWRlbnRpdHlBZmZpbmUoQWZmaW5lTWF0 cml4ICopLAogIE1vZHVsYXRlKGNvbnN0IGRvdWJsZSxjb25zdCBkb3VibGUsY29uc3QgZG91Ymxl LFF1YW50dW0gKixRdWFudHVtICosCiAgICBRdWFudHVtICopLAogIFRyYW5zZm9ybUhTTChjb25z dCBRdWFudHVtLGNvbnN0IFF1YW50dW0sY29uc3QgUXVhbnR1bSxkb3VibGUgKixkb3VibGUgKiwK ICAgIGRvdWJsZSAqKSwKICBVcHNhbXBsZShjb25zdCB1bnNpZ25lZCBsb25nLGNvbnN0IHVuc2ln bmVkIGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZywKICAgIHVuc2lnbmVkIGNoYXIgKik7CiMgODgg Ii4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay9xdWFudGl6ZS5oIiAxCiMgMjAgIi4u L21hZ2ljay9xdWFudGl6ZS5oIgp0eXBlZGVmIHN0cnVjdCBfUXVhbnRpemVJbmZvCnsKICB1bnNp Z25lZCBsb25nCiAgICBzaWduYXR1cmU7CgogIHVuc2lnbmVkIGxvbmcKICAgIG51bWJlcl9jb2xv cnM7CgogIHVuc2lnbmVkIGludAogICAgdHJlZV9kZXB0aCwKICAgIGRpdGhlcjsKCiAgQ29sb3Jz cGFjZVR5cGUKICAgIGNvbG9yc3BhY2U7CgogIHVuc2lnbmVkIGludAogICAgbWVhc3VyZV9lcnJv cjsKfSBRdWFudGl6ZUluZm87CgoKCgpleHRlcm4gUXVhbnRpemVJbmZvCiAgKkNsb25lUXVhbnRp emVJbmZvKGNvbnN0IFF1YW50aXplSW5mbyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBNYXBJ bWFnZShJbWFnZSAqLGNvbnN0IEltYWdlICosY29uc3QgdW5zaWduZWQgaW50KSwKICBNYXBJbWFn ZXMoSW1hZ2UgKixjb25zdCBJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGludCksCiAgT3JkZXJlZERp dGhlckltYWdlKEltYWdlICopLAogIFF1YW50aXphdGlvbkVycm9yKEltYWdlICopLAogIFF1YW50 aXplSW1hZ2UoY29uc3QgUXVhbnRpemVJbmZvICosSW1hZ2UgKiksCiAgUXVhbnRpemVJbWFnZXMo Y29uc3QgUXVhbnRpemVJbmZvICosSW1hZ2UgKiksCiAgU2VnbWVudEltYWdlKEltYWdlICosY29u c3QgQ29sb3JzcGFjZVR5cGUsY29uc3QgdW5zaWduZWQgaW50LGNvbnN0IGRvdWJsZSwKICAgIGNv bnN0IGRvdWJsZSk7CgpleHRlcm4gdm9pZAogIENvbXByZXNzQ29sb3JtYXAoSW1hZ2UgKiksCiAg RGVzdHJveVF1YW50aXplSW5mbyhRdWFudGl6ZUluZm8gKiksCiAgR2V0UXVhbnRpemVJbmZvKFF1 YW50aXplSW5mbyAqKTsKIyA4OSAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL2Nv bXByZXNzLmgiIDEKIyAxMSAiLi4vbWFnaWNrL2NvbXByZXNzLmgiCmV4dGVybiB1bnNpZ25lZCBp bnQKICBIdWZmbWFuRGVjb2RlSW1hZ2UoSW1hZ2UgKiksCiAgSHVmZm1hbkVuY29kZUltYWdlKGNv bnN0IEltYWdlSW5mbyAqLEltYWdlICopLAogIExaV0VuY29kZUltYWdlKEltYWdlICosY29uc3Qg c2l6ZV90LHVuc2lnbmVkIGNoYXIgKiksCiAgUGFja2JpdHNFbmNvZGVJbWFnZShJbWFnZSAqLGNv bnN0IHNpemVfdCx1bnNpZ25lZCBjaGFyICopOwoKZXh0ZXJuIHZvaWQKICBBc2NpaTg1RW5jb2Rl KEltYWdlICosY29uc3QgdW5zaWduZWQgbG9uZyksCiAgQXNjaWk4NUZsdXNoKEltYWdlICopLAog IEFzY2lpODVJbml0aWFsaXplKEltYWdlICopOwojIDkwICIuLi9tYWdpY2svYXBpLmgiIDIKIyAx ICIuLi9tYWdpY2svYXR0cmlidXRlLmgiIDEKIyAxNCAiLi4vbWFnaWNrL2F0dHJpYnV0ZS5oIgpl eHRlcm4gY29uc3QgSW1hZ2VBdHRyaWJ1dGUKICAqR2V0SW1hZ2VBdHRyaWJ1dGUoY29uc3QgSW1h Z2UgKixjb25zdCBjaGFyICopLAogICpHZXRJbWFnZUNsaXBwaW5nUGF0aEF0dHJpYnV0ZShjb25z dCBJbWFnZSAqKSwKICAqR2V0SW1hZ2VJbmZvQXR0cmlidXRlKGNvbnN0IEltYWdlSW5mbyAqLGNv bnN0IEltYWdlICosY29uc3QgY2hhciAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBTZXRJbWFn ZUF0dHJpYnV0ZShJbWFnZSAqLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoKZXh0ZXJuIHZv aWQKICBEZXN0cm95SW1hZ2VBdHRyaWJ1dGVzKEltYWdlICopLAogIFN0b3JlSW1hZ2VBdHRyaWJ1 dGUoSW1hZ2UgKixjaGFyICopOwojIDkxICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9tYWdp Y2svdXRpbGl0eS5oIiAxCiMgMTUgIi4uL21hZ2ljay91dGlsaXR5LmgiCnR5cGVkZWYgc3RydWN0 IF9Ub2tlbkluZm8KewogIGludAogICAgc3RhdGU7CgogIHVuc2lnbmVkIGludAogICAgZmxhZzsK CiAgbG9uZwogICAgb2Zmc2V0OwoKICBjaGFyCiAgICBxdW90ZTsKfSBUb2tlbkluZm87CgoKCgpl eHRlcm4gY2hhcgogICpBbGxvY2F0ZVN0cmluZyhjb25zdCBjaGFyICopLAogICpHZXRFeGVjdXRp b25QYXRoKGNvbnN0IGNoYXIgKiksCiAgKipMaXN0RmlsZXMoY29uc3QgY2hhciAqLGNvbnN0IGNo YXIgKixpbnQgKiksCiAgKlBvc3RzY3JpcHRHZW9tZXRyeShjb25zdCBjaGFyICopLAogICpTZXRD bGllbnROYW1lKGNvbnN0IGNoYXIgKiksCiAgKlNldENsaWVudFBhdGgoY29uc3QgY2hhciAqKSwK ICAqKlN0cmluZ1RvQXJndihjb25zdCBjaGFyICosaW50ICopLAogICoqU3RyaW5nVG9MaXN0KGNv bnN0IGNoYXIgKiksCiAgKlRyYW5zbGF0ZVRleHQoY29uc3QgSW1hZ2VJbmZvICosY29uc3QgSW1h Z2UgKixjb25zdCBjaGFyICopOwoKZXh0ZXJuIGRvdWJsZQogIFN0cmluZ1RvRG91YmxlKGNvbnN0 IGNoYXIgKixjb25zdCBkb3VibGUpOwoKZXh0ZXJuIGludAogIEdldEdlb21ldHJ5KGNvbnN0IGNo YXIgKixsb25nICosbG9uZyAqLHVuc2lnbmVkIGxvbmcgKix1bnNpZ25lZCBsb25nICopLAogIEds b2JFeHByZXNzaW9uKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopLAogIExvY2FsZU5Db21wYXJl KGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICosc2l6ZV90KSwKICBMb2NhbGVDb21wYXJlKGNvbnN0 IGNoYXIgKixjb25zdCBjaGFyICopLAogIFBhcnNlR2VvbWV0cnkoY29uc3QgY2hhciAqLGxvbmcg Kixsb25nICosdW5zaWduZWQgbG9uZyAqLHVuc2lnbmVkIGxvbmcgKiksCiAgU3lzdGVtQ29tbWFu ZChjb25zdCB1bnNpZ25lZCBpbnQsY29uc3QgY2hhciAqKSwKICBUb2tlbml6ZXIoVG9rZW5JbmZv ICosdW5zaWduZWQsY2hhciAqLHNpemVfdCxjaGFyICosY2hhciAqLGNoYXIgKixjaGFyICosCiAg ICBjaGFyLGNoYXIgKixpbnQgKixjaGFyICopOwoKZXh0ZXJuIHVuc2lnbmVkIGludAogIENsb25l U3RyaW5nKGNoYXIgKiosY29uc3QgY2hhciAqKSwKICBDb25jYXRlbmF0ZVN0cmluZyhjaGFyICoq LGNvbnN0IGNoYXIgKiksCiAgRXhwYW5kRmlsZW5hbWVzKGludCAqLGNoYXIgKioqKSwKICBJc0Fj Y2Vzc2libGUoY29uc3QgY2hhciAqKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nCiAgTXVsdGlsaW5l Q2Vuc3VzKGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdm9pZAogICpBY3F1aXJlTWVtb3J5KGNvbnN0 IHNpemVfdCksCiAgQXBwZW5kSW1hZ2VGb3JtYXQoY29uc3QgY2hhciAqLGNoYXIgKiksCiAgRXhw YW5kRmlsZW5hbWUoY2hhciAqKSwKICBHZXRQYXRoQ29tcG9uZW50KGNvbnN0IGNoYXIgKixQYXRo VHlwZSxjaGFyICopLAogIEdldFRva2VuKGNvbnN0IGNoYXIgKixjaGFyICoqLGNoYXIgKiksCiAg Rm9ybWF0U3RyaW5nKGNoYXIgKixjb25zdCBjaGFyICosLi4uKSwKICBMaWJlcmF0ZU1lbW9yeSh2 b2lkICoqKSwKICBMb2NhbGVMb3dlcihjaGFyICopLAogIExvY2FsZVVwcGVyKGNoYXIgKiksCiAg UmVhY3F1aXJlTWVtb3J5KHZvaWQgKiosY29uc3Qgc2l6ZV90KSwKICBTdHJpcChjaGFyICopLAog IFRlbXBvcmFyeUZpbGVuYW1lKGNoYXIgKik7CiMgOTIgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEg Ii4uL21hZ2ljay9ibG9iLmgiIDEKIyAxNSAiLi4vbWFnaWNrL2Jsb2IuaCIKZXh0ZXJuIEJsb2JJ bmZvCiAgKkNsb25lQmxvYkluZm8oY29uc3QgQmxvYkluZm8gKik7CgpleHRlcm4gY2hhcgogICpS ZWFkQmxvYlN0cmluZyhJbWFnZSAqLGNoYXIgKik7CgpleHRlcm4gSW1hZ2UKICAqQmxvYlRvSW1h Z2UoY29uc3QgSW1hZ2VJbmZvICosY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVfdCxFeGNlcHRpb25J bmZvICopLAogICpQaW5nQmxvYihjb25zdCBJbWFnZUluZm8gKixjb25zdCB2b2lkICosY29uc3Qg c2l6ZV90LEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gaW50CiAgRU9GQmxvYihjb25zdCBJbWFn ZSAqKSwKICBSZWFkQmxvYkJ5dGUoSW1hZ2UgKiksCiAgU3luY0Jsb2IoSW1hZ2UgKik7CgpleHRl cm4gb2ZmX3QKICBTZWVrQmxvYihJbWFnZSAqLGNvbnN0IG9mZl90LGNvbnN0IGludCksCiAgU2l6 ZUJsb2IoY29uc3QgSW1hZ2UgKmltYWdlKSwKICBUZWxsQmxvYihjb25zdCBJbWFnZSAqaW1hZ2Up OwoKZXh0ZXJuIHNpemVfdAogIFJlYWRCbG9iKEltYWdlICosY29uc3Qgc2l6ZV90LHZvaWQgKiks CiAgUmVhZEJsb2JCbG9jayhJbWFnZSAqLHVuc2lnbmVkIGNoYXIgKiksCiAgV3JpdGVCbG9iKElt YWdlICosY29uc3Qgc2l6ZV90LGNvbnN0IHZvaWQgKiksCiAgV3JpdGVCbG9iQnl0ZShJbWFnZSAq LGNvbnN0IGxvbmcpLAogIFdyaXRlQmxvYkxTQkxvbmcoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBs b25nKSwKICBXcml0ZUJsb2JMU0JTaG9ydChJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcpLAog IFdyaXRlQmxvYk1TQkxvbmcoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25nKSwKICBXcml0ZUJs b2JNU0JTaG9ydChJbWFnZSAqLGNvbnN0IHVuc2lnbmVkIGxvbmcpLAogIFdyaXRlQmxvYlN0cmlu ZyhJbWFnZSAqLGNvbnN0IGNoYXIgKik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgT3BlbkJsb2Io Y29uc3QgSW1hZ2VJbmZvICosSW1hZ2UgKixjb25zdCBjaGFyICosRXhjZXB0aW9uSW5mbyAqKSwK ICBVbm1hcEJsb2Iodm9pZCAqLGNvbnN0IHNpemVfdCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZwog IFJlYWRCbG9iTFNCTG9uZyhJbWFnZSAqKSwKICBSZWFkQmxvYk1TQkxvbmcoSW1hZ2UgKik7Cgpl eHRlcm4gdW5zaWduZWQgc2hvcnQKICBSZWFkQmxvYkxTQlNob3J0KEltYWdlICopLAogIFJlYWRC bG9iTVNCU2hvcnQoSW1hZ2UgKik7CgpleHRlcm4gdm9pZAogIEF0dGFjaEJsb2IoQmxvYkluZm8g Kixjb25zdCB2b2lkICosY29uc3Qgc2l6ZV90KSwKICBDbG9zZUJsb2IoSW1hZ2UgKiksCiAgRGVz dHJveUJsb2JJbmZvKEJsb2JJbmZvICopLAogIERldGFjaEJsb2IoQmxvYkluZm8gKiksCiAgKkZp bGVUb0Jsb2IoY29uc3QgY2hhciAqLHNpemVfdCAqLEV4Y2VwdGlvbkluZm8gKiksCiAgR2V0Qmxv YkluZm8oQmxvYkluZm8gKiksCiAgKkltYWdlVG9CbG9iKGNvbnN0IEltYWdlSW5mbyAqLEltYWdl ICosc2l6ZV90ICosRXhjZXB0aW9uSW5mbyAqKSwKICAqTWFwQmxvYihpbnQsY29uc3QgTWFwTW9k ZSxzaXplX3QgKiksCiAgTVNCT3JkZXJMb25nKGNoYXIgKixjb25zdCBzaXplX3QpLAogIE1TQk9y ZGVyU2hvcnQoY2hhciAqLGNvbnN0IHNpemVfdCk7CiMgOTMgIi4uL21hZ2ljay9hcGkuaCIgMgoj IDEgIi4uL21hZ2ljay9jYWNoZS5oIiAxCiMgMTUgIi4uL21hZ2ljay9jYWNoZS5oIgp0eXBlZGVm IEluZGV4UGFja2V0CiAgKigqR2V0SW5kZXhlc0Zyb21IYW5kbGVyKShjb25zdCBJbWFnZSAqKTsK CnR5cGVkZWYgc3RydWN0IF9OZXh1c0luZm8KewogIGxvbmcKICAgIHgsCiAgICB5OwoKICBvZmZf dAogICAgbGVuZ3RoOwoKICBQaXhlbFBhY2tldAogICAgKnN0YWdpbmcsCiAgICAqcGl4ZWxzOwoK ICBJbmRleFBhY2tldAogICAgKmluZGV4ZXM7CgogIHVuc2lnbmVkIGxvbmcKICAgIGNvbHVtbnMs CiAgICByb3dzOwoKICB1bnNpZ25lZCBpbnQKICAgIGF2YWlsYWJsZTsKfSBOZXh1c0luZm87Cgp0 eXBlZGVmIHN0cnVjdCBfQ2FjaGVJbmZvCnsKICB1bnNpZ25lZCBsb25nCiAgICBzaWduYXR1cmU7 CgogIFNlbWFwaG9yZUluZm8KICAgICpzZW1hcGhvcmU7CgogIGxvbmcKICAgIHJlZmVyZW5jZV9j b3VudDsKCiAgTmV4dXNJbmZvCiAgICAqbmV4dXNfaW5mbzsKCiAgQ2xhc3NUeXBlCiAgICBjbGFz czsKCiAgQ29sb3JzcGFjZVR5cGUKICAgIGNvbG9yc3BhY2U7CgogIENhY2hlVHlwZQogICAgdHlw ZTsKCiAgdW5zaWduZWQgaW50CiAgICBwZXJzaXN0OwoKICB1bnNpZ25lZCBsb25nCiAgICBjb2x1 bW5zLAogICAgcm93czsKCiAgb2ZmX3QKICAgIGxlbmd0aDsKCiAgUGl4ZWxQYWNrZXQKICAgICpw aXhlbHM7CgogIEluZGV4UGFja2V0CiAgICAqaW5kZXhlczsKCiAgY2hhcgogICAgY2FjaGVfZmls ZW5hbWVbMjA1M10sCiAgICBtZXRhX2ZpbGVuYW1lWzIwNTNdOwp9IENhY2hlSW5mbzsKCnR5cGVk ZWYgY29uc3QgUGl4ZWxQYWNrZXQKICAqKCpBY3F1aXJlUGl4ZWxIYW5kbGVyKShjb25zdCBJbWFn ZSAqLGNvbnN0IGxvbmcsY29uc3QgbG9uZywKICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcsY29uc3Qg dW5zaWduZWQgbG9uZyxFeGNlcHRpb25JbmZvICopOwoKdHlwZWRlZiBQaXhlbFBhY2tldAogICgq QWNxdWlyZU9uZVBpeGVsRnJvbUhhbmRsZXIpKGNvbnN0IEltYWdlICosY29uc3QgbG9uZyxjb25z dCBsb25nLAogICAgRXhjZXB0aW9uSW5mbyAqKTsKCnR5cGVkZWYgUGl4ZWxQYWNrZXQKICAoKkdl dE9uZVBpeGVsRnJvbUhhbmRsZXIpKEltYWdlICosY29uc3QgbG9uZyxjb25zdCBsb25nKTsKCnR5 cGVkZWYgUGl4ZWxQYWNrZXQKICAqKCpHZXRQaXhlbEhhbmRsZXIpKEltYWdlICosY29uc3QgbG9u Zyxjb25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25n KTsKCnR5cGVkZWYgUGl4ZWxQYWNrZXQKICAqKCpHZXRQaXhlbHNGcm9tSGFuZGxlcikoY29uc3Qg SW1hZ2UgKik7Cgp0eXBlZGVmIFBpeGVsUGFja2V0CiAgKigqU2V0UGl4ZWxIYW5kbGVyKShJbWFn ZSAqLGNvbnN0IGxvbmcsY29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3Qg dW5zaWduZWQgbG9uZyk7Cgp0eXBlZGVmIHVuc2lnbmVkIGludAogICgqU3luY1BpeGVsSGFuZGxl cikoSW1hZ2UgKik7Cgp0eXBlZGVmIHZvaWQKICAqQ2FjaGUsCiAgKCpEZXN0cm95UGl4ZWxIYW5k bGVyKShJbWFnZSAqKTsKCgoKCmV4dGVybiBDYWNoZQogIFJlZmVyZW5jZUNhY2hlKENhY2hlKTsK CmV4dGVybiBDbGFzc1R5cGUKICBHZXRDYWNoZUNsYXNzKGNvbnN0IENhY2hlKTsKCmV4dGVybiBD b2xvcnNwYWNlVHlwZQogIEdldENhY2hlQ29sb3JzcGFjZShjb25zdCBDYWNoZSk7CgpleHRlcm4g Y29uc3QgUGl4ZWxQYWNrZXQKICAqQWNxdWlyZUNhY2hlTmV4dXMoY29uc3QgSW1hZ2UgKixjb25z dCBsb25nLGNvbnN0IGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZywKICAgIGNvbnN0IHVuc2lnbmVk IGxvbmcsY29uc3QgdW5zaWduZWQgbG9uZyxFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIEluZGV4 UGFja2V0CiAgKkdldE5leHVzSW5kZXhlcyhjb25zdCBDYWNoZSxjb25zdCB1bnNpZ25lZCBsb25n KTsKCmV4dGVybiBQaXhlbFBhY2tldAogICpHZXRDYWNoZU5leHVzKEltYWdlICosY29uc3QgbG9u Zyxjb25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25n LGNvbnN0IHVuc2lnbmVkIGxvbmcpLAogICpHZXROZXh1c1BpeGVscyhjb25zdCBDYWNoZSxjb25z dCB1bnNpZ25lZCBsb25nKSwKICAqU2V0Q2FjaGVOZXh1cyhJbWFnZSAqLGNvbnN0IGxvbmcsY29u c3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQgbG9uZyxjb25z dCB1bnNpZ25lZCBsb25nKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBPcGVuQ2FjaGUoSW1hZ2Ug KiksCiAgU3luY0NhY2hlTmV4dXMoSW1hZ2UgKixjb25zdCB1bnNpZ25lZCBsb25nKTsKCmV4dGVy biB1bnNpZ25lZCBsb25nCiAgR2V0TmV4dXMoQ2FjaGUpOwoKZXh0ZXJuIHZvaWQKICBBbGxvY2F0 ZUNhY2hlTmV4dXMoQ2FjaGVJbmZvICopLAogIERlc3Ryb3lDYWNoZSh2b2lkKSwKICBEZXN0cm95 Q2FjaGVOZXh1cyhDYWNoZSxjb25zdCB1bnNpZ25lZCBsb25nKSwKICBHZXRDYWNoZUluZm8oQ2Fj aGUgKiksCiAgUmVzZXRQaXhlbENhY2hlTWV0aG9kcyh2b2lkKSwKICBTZXRDYWNoZVRocmVzaG9s ZChjb25zdCBvZmZfdCksCiAgU2V0UGl4ZWxDYWNoZU1ldGhvZHMoQWNxdWlyZVBpeGVsSGFuZGxl cixHZXRQaXhlbEhhbmRsZXIsU2V0UGl4ZWxIYW5kbGVyLAogICAgU3luY1BpeGVsSGFuZGxlcixH ZXRQaXhlbHNGcm9tSGFuZGxlcixHZXRJbmRleGVzRnJvbUhhbmRsZXIsCiAgICBBY3F1aXJlT25l UGl4ZWxGcm9tSGFuZGxlcixHZXRPbmVQaXhlbEZyb21IYW5kbGVyLERlc3Ryb3lQaXhlbEhhbmRs ZXIpOwojIDk0ICIuLi9tYWdpY2svYXBpLmgiIDIKIyAxICIuLi9tYWdpY2svY2FjaGVfdmlldy5o IiAxCiMgMTQgIi4uL21hZ2ljay9jYWNoZV92aWV3LmgiCnR5cGVkZWYgc3RydWN0IF9WaWV3SW5m bwp7CiAgdW5zaWduZWQgbG9uZwogICAgc2lnbmF0dXJlOwoKICBJbWFnZQogICAgKmltYWdlOwoK ICB1bnNpZ25lZCBsb25nCiAgICBpZDsKfSBWaWV3SW5mbzsKCgoKCmV4dGVybiBjb25zdCBQaXhl bFBhY2tldAogICpBY3F1aXJlQ2FjaGVWaWV3KGNvbnN0IFZpZXdJbmZvICosY29uc3QgbG9uZyxj b25zdCBsb25nLGNvbnN0IHVuc2lnbmVkIGxvbmcsCiAgICBjb25zdCB1bnNpZ25lZCBsb25nLEV4 Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gSW5kZXhQYWNrZXQKICAqR2V0Q2FjaGVWaWV3SW5kZXhl cyhjb25zdCBWaWV3SW5mbyAqKTsKCmV4dGVybiBQaXhlbFBhY2tldAogICpHZXRDYWNoZVZpZXdQ aXhlbHMoY29uc3QgVmlld0luZm8gKiksCiAgKkdldENhY2hlVmlldyhWaWV3SW5mbyAqLGNvbnN0 IGxvbmcsY29uc3QgbG9uZyxjb25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQg bG9uZyksCiAgKlNldENhY2hlVmlldyhWaWV3SW5mbyAqLGNvbnN0IGxvbmcsY29uc3QgbG9uZyxj b25zdCB1bnNpZ25lZCBsb25nLAogICAgY29uc3QgdW5zaWduZWQgbG9uZyk7CgpleHRlcm4gdW5z aWduZWQgaW50CiAgU3luY0NhY2hlVmlldyhWaWV3SW5mbyAqKTsKCmV4dGVybiBWaWV3SW5mbwog ICpPcGVuQ2FjaGVWaWV3KEltYWdlICopOwoKZXh0ZXJuIHZvaWQKICBDbG9zZUNhY2hlVmlldyhW aWV3SW5mbyAqKTsKIyA5NSAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL3JlZ2lz dHJ5LmgiIDEKIyAxNCAiLi4vbWFnaWNrL3JlZ2lzdHJ5LmgiCnR5cGVkZWYgc3RydWN0IF9SZWdp c3RyeUluZm8KewogIHN0cnVjdCBfUmVnaXN0cnlJbmZvCiAgICAqcHJldmlvdXMsCiAgICAqbmV4 dDsKCiAgbG9uZwogICAgaWQ7CgogIFJlZ2lzdHJ5VHlwZQogICAgdHlwZTsKCiAgdm9pZAogICAg KmJsb2I7CgogIHNpemVfdAogICAgbGVuZ3RoOwp9IFJlZ2lzdHJ5SW5mbzsKCgoKCmV4dGVybiBj b25zdCB2b2lkCiAgKkdldE1hZ2lja1JlZ2lzdHJ5KGNvbnN0IGxvbmcsUmVnaXN0cnlUeXBlICos c2l6ZV90ICopOwoKZXh0ZXJuIGxvbmcKICBTZXRNYWdpY2tSZWdpc3RyeShjb25zdCBSZWdpc3Ry eVR5cGUsY29uc3Qgdm9pZCAqLGNvbnN0IHNpemVfdCwKICAgIEV4Y2VwdGlvbkluZm8gKik7Cgpl eHRlcm4gdW5zaWduZWQgaW50CiAgRGVsZXRlTWFnaWNrUmVnaXN0cnkoY29uc3QgbG9uZyk7Cgpl eHRlcm4gdm9pZAogIERlc3Ryb3lNYWdpY2tSZWdpc3RyeSh2b2lkKTsKIyA5NiAiLi4vbWFnaWNr L2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL21hZ2ljLmgiIDEKIyAxNCAiLi4vbWFnaWNrL21hZ2lj LmgiCnR5cGVkZWYgc3RydWN0IF9NYWdpY0luZm8KewogIGNoYXIKICAgICpmaWxlbmFtZSwKICAg ICpuYW1lLAogICAgKnRhcmdldDsKCiAgdW5zaWduZWQgY2hhcgogICAgKm1hZ2ljOwoKICB1bnNp Z25lZCBsb25nCiAgICBsZW5ndGgsCiAgICBvZmZzZXQ7CgogIHN0cnVjdCBfTWFnaWNJbmZvCiAg ICAqcHJldmlvdXMsCiAgICAqbmV4dDsKfSBNYWdpY0luZm87CgoKCgpleHRlcm4gY29uc3QgTWFn aWNJbmZvCiAgKkdldE1hZ2ljSW5mbyhjb25zdCB1bnNpZ25lZCBjaGFyICosY29uc3Qgc2l6ZV90 LEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgTGlzdE1hZ2ljSW5mbyhG SUxFICosRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVybiB2b2lkCiAgRGVzdHJveU1hZ2ljSW5mbyh2 b2lkKTsKIyA5NyAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAiLi4vbWFnaWNrL2RlbGVnYXRlLmgi IDEKIyAxNCAiLi4vbWFnaWNrL2RlbGVnYXRlLmgiCnR5cGVkZWYgc3RydWN0IF9EZWxlZ2F0ZUlu Zm8KewogIHN0cnVjdCBfRGVsZWdhdGVJbmZvCiAgICAqcHJldmlvdXMsCiAgICAqbmV4dDsKCiAg Y2hhcgogICAgKmZpbGVuYW1lLAogICAgKmRlY29kZSwKICAgICplbmNvZGUsCiAgICAqY29tbWFu ZHM7CgogIGludAogICAgbW9kZTsKCiAgdW5zaWduZWQgaW50CiAgICBzdGVhbHRoLAogICAgc3Bh d247Cn0gRGVsZWdhdGVJbmZvOwoKCgoKZXh0ZXJuIGNoYXIKICAqR2V0RGVsZWdhdGVDb21tYW5k KGNvbnN0IEltYWdlSW5mbyAqLGNvbnN0IEltYWdlICosY29uc3QgY2hhciAqLGNvbnN0IGNoYXIg KiwKICAgIEV4Y2VwdGlvbkluZm8gKik7CgpleHRlcm4gY29uc3QgRGVsZWdhdGVJbmZvCiAgKkdl dERlbGVnYXRlSW5mbyhjb25zdCBjaGFyICosY29uc3QgY2hhciAqLEV4Y2VwdGlvbkluZm8gKmV4 Y2VwdGlvbik7CgpleHRlcm4gRGVsZWdhdGVJbmZvCiAgKlNldERlbGVnYXRlSW5mbyhEZWxlZ2F0 ZUluZm8gKik7CgpleHRlcm4gdW5zaWduZWQgaW50CiAgSW52b2tlRGVsZWdhdGUoSW1hZ2VJbmZv ICosSW1hZ2UgKixjb25zdCBjaGFyICosY29uc3QgY2hhciAqLEV4Y2VwdGlvbkluZm8gKiksCiAg TGlzdERlbGVnYXRlSW5mbyhGSUxFICosRXhjZXB0aW9uSW5mbyAqKTsKCmV4dGVybiB2b2lkCiAg RGVzdHJveURlbGVnYXRlSW5mbyh2b2lkKTsKIyA5OCAiLi4vbWFnaWNrL2FwaS5oIiAyCiMgMSAi Li4vbWFnaWNrL21vZHVsZS5oIiAxCiMgMTEgIi4uL21hZ2ljay9tb2R1bGUuaCIKdHlwZWRlZiBz dHJ1Y3QgX01vZHVsZUFsaWFzCnsKICBjaGFyCiAgICAqZmlsZW5hbWUsCiAgICAqbmFtZSwKICAg ICphbGlhczsKCiAgc3RydWN0IF9Nb2R1bGVBbGlhcwogICAgKnByZXZpb3VzLAogICAgKm5leHQ7 Cn0gTW9kdWxlQWxpYXM7Cgp0eXBlZGVmIHN0cnVjdCBfTW9kdWxlSW5mbwp7CiAgdW5zaWduZWQg bG9uZwogICAgc2lnbmF0dXJlOwoKICBzdHJ1Y3QgX01vZHVsZUluZm8KICAgICpwcmV2aW91cywK ICAgICpuZXh0OwoKICBjaGFyCiAgICAqdGFnOwoKICB2b2lkCiAgICAqaGFuZGxlOwoKICB0aW1l X3QKICAgIGxvYWRfdGltZTsKfSBNb2R1bGVJbmZvOwoKCgoKZXh0ZXJuIGNvbnN0IE1vZHVsZUFs aWFzCiAgKkdldE1vZHVsZUFsaWFzKGNvbnN0IGNoYXIgKixFeGNlcHRpb25JbmZvICopOwoKZXh0 ZXJuIGNvbnN0IE1vZHVsZUluZm8KICAqR2V0TW9kdWxlSW5mbyhjb25zdCBjaGFyICosRXhjZXB0 aW9uSW5mbyAqKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBFeGVjdXRlTW9kdWxlUHJvY2Vzcyhj b25zdCBjaGFyICosSW1hZ2UgKixjb25zdCBpbnQsY2hhciAqKiksCiAgTGlzdE1vZHVsZUFsaWFz ZXMoRklMRSAqLEV4Y2VwdGlvbkluZm8gKiksCiAgT3Blbk1vZHVsZShjb25zdCBjaGFyICosRXhj ZXB0aW9uSW5mbyAqKSwKICBPcGVuTW9kdWxlcyhFeGNlcHRpb25JbmZvICopOwoKZXh0ZXJuIHZv aWQKICBEZXN0cm95TW9kdWxlSW5mbyh2b2lkKTsKCmV4dGVybiB2b2lkCiAgT3BlblN0YXRpY01v ZHVsZXModm9pZCk7CiMgOTkgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay90aW1l ci5oIiAxCiMgMTQgIi4uL21hZ2ljay90aW1lci5oIgpleHRlcm4gZG91YmxlCiAgR2V0RWxhcHNl ZFRpbWUoVGltZXJJbmZvICopLAogIEdldFVzZXJUaW1lKFRpbWVySW5mbyAqKTsKCmV4dGVybiB1 bnNpZ25lZCBpbnQKICBDb250aW51ZVRpbWVyKFRpbWVySW5mbyAqKTsKCmV4dGVybiB2b2lkCiAg R2V0VGltZXJJbmZvKFRpbWVySW5mbyAqKSwKICBSZXNldFRpbWVyKFRpbWVySW5mbyAqKTsKIyAx MDAgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2ljay9zZW1hcGhvcmUuaCIgMQojIDE0 ICIuLi9tYWdpY2svc2VtYXBob3JlLmgiCmV4dGVybiBTZW1hcGhvcmVJbmZvCiAgKkFsbG9jYXRl U2VtYXBob3JlSW5mbyh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBpbnQKICBMb2NrU2VtYXBob3Jl SW5mbyhTZW1hcGhvcmVJbmZvICopLAogIFVubG9ja1NlbWFwaG9yZUluZm8oU2VtYXBob3JlSW5m byAqKTsKCmV4dGVybiB2b2lkCiAgQWNxdWlyZVNlbWFwaG9yZUluZm8oU2VtYXBob3JlSW5mbyAq KiksCiAgRGVzdHJveVNlbWFwaG9yZSh2b2lkKSwKICBEZXN0cm95U2VtYXBob3JlSW5mbyhTZW1h cGhvcmVJbmZvICopLAogIEluaXRpYWxpemVTZW1hcGhvcmUodm9pZCksCiAgTGliZXJhdGVTZW1h cGhvcmVJbmZvKFNlbWFwaG9yZUluZm8gKiopOwojIDEwMSAiLi4vbWFnaWNrL2FwaS5oIiAyCiMg MSAiLi4vbWFnaWNrL21vbml0b3IuaCIgMQojIDE0ICIuLi9tYWdpY2svbW9uaXRvci5oIgp0eXBl ZGVmIHZvaWQKICAoKk1vbml0b3JIYW5kbGVyKShjb25zdCBjaGFyICosY29uc3Qgb2ZmX3QsY29u c3Qgb2ZmX3QpOwoKCgoKZXh0ZXJuIE1vbml0b3JIYW5kbGVyCiAgU2V0TW9uaXRvckhhbmRsZXIo TW9uaXRvckhhbmRsZXIpOwoKZXh0ZXJuIHZvaWQKICBNYWdpY2tNb25pdG9yKGNvbnN0IGNoYXIg Kixjb25zdCBvZmZfdCxjb25zdCBvZmZfdCk7CiMgMTAyICIuLi9tYWdpY2svYXBpLmgiIDIKIyAx ICIuLi9tYWdpY2svZXJyb3IuaCIgMQojIDUwICIuLi9tYWdpY2svZXJyb3IuaCIKdHlwZWRlZiB2 b2lkCiAgKCpFcnJvckhhbmRsZXIpKGNvbnN0IEV4Y2VwdGlvblR5cGUsY29uc3QgY2hhciAqLGNv bnN0IGNoYXIgKik7Cgp0eXBlZGVmIHZvaWQKICAoKldhcm5pbmdIYW5kbGVyKShjb25zdCBFeGNl cHRpb25UeXBlLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoKCgoKZXh0ZXJuIEVycm9ySGFu ZGxlcgogIFNldEVycm9ySGFuZGxlcihFcnJvckhhbmRsZXIpOwoKZXh0ZXJuIHZvaWQKICBDYXRj aEltYWdlRXhjZXB0aW9uKEltYWdlICopLAogIERlc3Ryb3lFeGNlcHRpb25JbmZvKEV4Y2VwdGlv bkluZm8gKiksCiAgR2V0SW1hZ2VFeGNlcHRpb24oSW1hZ2UgKixFeGNlcHRpb25JbmZvICopLAog IEdldEV4Y2VwdGlvbkluZm8oRXhjZXB0aW9uSW5mbyAqKSwKICBNYWdpY2tFcnJvcihjb25zdCBF eGNlcHRpb25UeXBlLGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopLAogIE1hZ2lja1dhcm5pbmco Y29uc3QgRXhjZXB0aW9uVHlwZSxjb25zdCBjaGFyICosY29uc3QgY2hhciAqKSwKICBUaHJvd0V4 Y2VwdGlvbihFeGNlcHRpb25JbmZvICosY29uc3QgRXhjZXB0aW9uVHlwZSxjb25zdCBjaGFyICos Y29uc3QgY2hhciAqKTsKCmV4dGVybiBXYXJuaW5nSGFuZGxlcgogIFNldFdhcm5pbmdIYW5kbGVy KFdhcm5pbmdIYW5kbGVyKTsKIyAxMDMgIi4uL21hZ2ljay9hcGkuaCIgMgojIDEgIi4uL21hZ2lj ay92ZXJzaW9uLmgiIDEKIyAxMDQgIi4uL21hZ2ljay9hcGkuaCIgMgojIDc1ICIuLi9tYWdpY2sv bWFnaWNrLmgiIDIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMwojIDc3ICIuLi9t YWdpY2svbWFnaWNrLmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDEgMwojIDEx ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWVzLmgJ MS4xMAk5Ny8wOC8xMiBTTUkiCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu LXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMTQgIi91c3IvaW5j bHVkZS9zeXMvdGltZXMuaCIgMiAzCiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvdGltZXMuaCIgMwpz dHJ1Y3QgdG1zIHsKICAgICAgICBjbG9ja190IHRtc191dGltZTsKICAgICAgICBjbG9ja190IHRt c19zdGltZTsKICAgICAgICBjbG9ja190IHRtc19jdXRpbWU7CiAgICAgICAgY2xvY2tfdCB0bXNf Y3N0aW1lOwp9OwojIDQ0ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVzLmgiIDMKY2xvY2tfdCB0aW1l cyhzdHJ1Y3QgdG1zICopOwojIDc4ICIuLi9tYWdpY2svbWFnaWNrLmgiIDIKIyAxMDAgIi4uL21h Z2ljay9tYWdpY2suaCIKIyAxICIvdXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMSAzCiMgMzQgIi91 c3IvaW5jbHVkZS9zeXMvbW1hbi5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIyltbWFuLmgJMS4zOAk5 OS8wNS8xOSBTTUkiCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVyZV90ZXN0cy5oIiAxIDMK IyAzNyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDIgMwojIDEwNiAiL3Vzci9pbmNsdWRlL3N5 cy9tbWFuLmgiIDMKIyAxICIvdXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz Mi44LzMuMC4yL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwojIDEwNyAiL3Vzci9pbmNsdWRlL3N5 cy9tbWFuLmgiIDIgMwojIDEzNyAiL3Vzci9pbmNsdWRlL3N5cy9tbWFuLmgiIDMKZXh0ZXJuIHZv aWQgKm1tYXA2NCh2b2lkICosIHNpemVfdCwgaW50LCBpbnQsIGludCwgb2ZmX3QpOwpleHRlcm4g aW50IG11bm1hcCh2b2lkICosIHNpemVfdCk7CmV4dGVybiBpbnQgbXByb3RlY3Qodm9pZCAqLCBz aXplX3QsIGludCk7CmV4dGVybiBpbnQgbXN5bmModm9pZCAqLCBzaXplX3QsIGludCk7CgpleHRl cm4gaW50IG1sb2NrKGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBtdW5sb2NrKGNv bnN0IHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIGludCBzaG1fb3Blbihjb25zdCBjaGFyICosIGlu dCwgbW9kZV90KTsKZXh0ZXJuIGludCBzaG1fdW5saW5rKGNvbnN0IGNoYXIgKik7CiMgMTY5ICIv dXNyL2luY2x1ZGUvc3lzL21tYW4uaCIgMwpleHRlcm4gaW50IG1sb2NrYWxsKGludCk7CmV4dGVy biBpbnQgbXVubG9ja2FsbCh2b2lkKTsKIyAxMDEgIi4uL21hZ2ljay9tYWdpY2suaCIgMgoKCiMg MSAiL3Vzci9sb2NhbC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuOC8zLjAuMi9pbmNs dWRlL3B0aHJlYWQuaCIgMSAzCiMgMTggIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3Vu LXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9wdGhyZWFkLmgiIDMKI3ByYWdtYSBpZGVudCAiQCgj KXB0aHJlYWQuaAkxLjI4CTk5LzExLzE1IFNNSSIKCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1s aWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMg MjIgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5j bHVkZS9wdGhyZWFkLmgiIDIgMwojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwojIDIzICIv dXNyL2xvY2FsL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUv cHRocmVhZC5oIiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMSAzCiMgMTEgIi91c3Iv aW5jbHVkZS9zY2hlZC5oIiAzCiNwcmFnbWEgaWRlbnQgIkAoIylzY2hlZC5oCTEuOQk5OC8wMS8x NiBTTUkiCgojIDEgIi91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgv My4wLjIvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMTQgIi91c3IvaW5jbHVkZS9zY2hlZC5o IiAyIDMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMKIyAxNSAiL3Vzci9pbmNsdWRlL3Nj aGVkLmgiIDIgMwoKCgoKCnN0cnVjdCBzY2hlZF9wYXJhbSB7CiAgICAgICAgaW50IHNjaGVkX3By aW9yaXR5OwogICAgICAgIGludCBzY2hlZF9uaWNlbGltOwogICAgICAgIGludCBzY2hlZF9uaWNl OwogICAgICAgIGludCBzY2hlZF9wYWRbNl07CgoKCn07CiMgNDQgIi91c3IvaW5jbHVkZS9zY2hl ZC5oIiAzCmludCBzY2hlZF9nZXRwYXJhbShwaWRfdCBwaWQsIHN0cnVjdCBzY2hlZF9wYXJhbSAq cGFyYW0pOwppbnQgc2NoZWRfc2V0cGFyYW0ocGlkX3QgcGlkLCBjb25zdCBzdHJ1Y3Qgc2NoZWRf cGFyYW0gKnBhcmFtKTsKaW50IHNjaGVkX2dldHNjaGVkdWxlcihwaWRfdCBwaWQpOwppbnQgc2No ZWRfc2V0c2NoZWR1bGVyKHBpZF90IHBpZCwgaW50IHBvbGljeSwKICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pOwppbnQgc2NoZWRfeWllbGQodm9pZCk7Cmlu dCBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGludCBwb2xpY3kpOwppbnQgc2NoZWRfZ2V0X3ByaW9y aXR5X21pbihpbnQgcG9saWN5KTsKaW50IHNjaGVkX3JyX2dldF9pbnRlcnZhbChwaWRfdCBwaWQs IHN0cnVjdCB0aW1lc3BlYyAqaW50ZXJ2YWwpOwojIDI0ICIvdXNyL2xvY2FsL2xpYi9nY2MtbGli L3NwYXJjLXN1bi1zb2xhcmlzMi44LzMuMC4yL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKIyAxMjUg Ii91c3IvbG9jYWwvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVk ZS9wdGhyZWFkLmgiIDMKdHlwZWRlZiBzdHJ1Y3QgX2NsZWFudXAgewogICAgICAgIHVpbnRwdHJf dCBwdGhyZWFkX2NsZWFudXBfcGFkWzRdOwp9IF9jbGVhbnVwX3Q7CgoKCnZvaWQgX19wdGhyZWFk X2NsZWFudXBfcHVzaCh2b2lkICgqcm91dGluZSkodm9pZCAqKSwgdm9pZCAqYXJncywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgZnAsIF9jbGVhbnVwX3Qg KmluZm8pOwp2b2lkIF9fcHRocmVhZF9jbGVhbnVwX3BvcChpbnQgZXgsIF9jbGVhbnVwX3QgKmlu Zm8pOwpjYWRkcl90IF9nZXRmcCh2b2lkKTsKIyAxNTkgIi91c3IvbG9jYWwvbGliL2djYy1saWIv c3BhcmMtc3VuLXNvbGFyaXMyLjgvMy4wLjIvaW5jbHVkZS9wdGhyZWFkLmgiIDMKZXh0ZXJuIGlu dCBwdGhyZWFkX2F0dHJfaW5pdChwdGhyZWFkX2F0dHJfdCAqKTsKZXh0ZXJuIGludCBwdGhyZWFk X2F0dHJ