From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: "David PONCE" Newsgroups: gmane.emacs.devel Subject: Re: mouse cursor on MS-Windows. (revisited) Date: Tue, 03 Dec 2002 14:43:02 +0100 (MET) Sender: emacs-devel-admin@gnu.org Message-ID: <34697.953440673$1038923126@news.gmane.org> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="delim.4cdf" X-Trace: main.gmane.org 1038923126 18982 80.91.224.249 (3 Dec 2002 13:45:26 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Tue, 3 Dec 2002 13:45:26 +0000 (UTC) Return-path: Original-Received: from quimby.gnus.org ([80.91.224.244]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 18JDMb-0004w2-00 for ; Tue, 03 Dec 2002 14:45:25 +0100 Original-Received: from monty-python.gnu.org ([199.232.76.173]) by quimby.gnus.org with esmtp (Exim 3.12 #1 (Debian)) id 18JDW6-00026W-00 for ; Tue, 03 Dec 2002 14:55:14 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10.13) id 18JDLJ-0007Ft-00; Tue, 03 Dec 2002 08:44:05 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10.13) id 18JDKN-0005ea-00 for emacs-devel@gnu.org; Tue, 03 Dec 2002 08:43:07 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10.13) id 18JDKL-0005Yg-00 for emacs-devel@gnu.org; Tue, 03 Dec 2002 08:43:07 -0500 Original-Received: from smtp-out-3.wanadoo.fr ([193.252.19.233] helo=mel-rto3.wanadoo.fr) by monty-python.gnu.org with esmtp (Exim 4.10.13) id 18JDKK-0005Tr-00 for emacs-devel@gnu.org; Tue, 03 Dec 2002 08:43:04 -0500 Original-Received: from mel-rta6.wanadoo.fr (193.252.19.26) by mel-rto3.wanadoo.fr (6.5.007) id 3DDA12BC0092388F for emacs-devel@gnu.org; Tue, 3 Dec 2002 14:43:03 +0100 Original-Received: from mail-web5 (193.252.19.156) by mel-rta6.wanadoo.fr (6.5.007) id 3DEB71B90009B5B2 for emacs-devel@gnu.org; Tue, 3 Dec 2002 14:43:02 +0100 Original-Received: from '' by www.wanadoo.fr with HTTP; Original-To: "emacs-devel" Errors-To: emacs-devel-admin@gnu.org X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Emacs development discussions. List-Unsubscribe: , List-Archive: X-Spam-Report: 7.9 hits, 5 required; * 4.0 -- 'Message-Id' was added by a relay * 1.8 -- Message-Id is not valid, according to RFC-2822 * 0.5 -- To: repeats local-part as real name * 1.6 -- 'Message-Id' was added by a relay (2) Xref: main.gmane.org gmane.emacs.devel:98244446 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:9824 --delim.4cdf Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi All, I submit you the attached patch to NT Emacs (HEAD) to display different cursors, depending on mouse position. This is a revisited patch from the original version posted by "KOBAYASHI Yasuhiro" . See message: The main differences are: - Cursors are loaded only at frame creation in Fx_create_frame instead of each time the cursor change. The Cursor type is actually a cursor handle instead of a resource identifier. I think it is more consistent. - Cursors are loaded via the new function `w32_load_cursor' that try first to load from application resources (defined in emacs.rc), then from global shared predefined one. Thus it is possible to use cursors specifically built for Emacs ;-) More important that allows to provide a "hand" cursor for Windows 95 and NT for which a predefined one does not exists. I added a sample hand.cur file in the nt/icons directory (maybe using a nt/cursor directory would be better=3F). Notice that I got this hand.cur from winhelp.exe. Probably, for license reason, a specific version will be needed=3F The patch includes some minor fixes too. You will find a change log at end. Hope it helps. Sincerely, David ------- Change log =09 =09* src/w32term.c (w32_encode_char): For DIM=3D1 charset, set =09ccl->reg[2] to -1 before calling ccl_driver. (Sync. with xterm.c =09x_encode_char change by Kenichi Handa on =092002-09-30. =09(w32_draw_relief_rect): Declare all args. =09(w32_define_cursor): New. =09(note_mode_line_highlight) =09(note_mouse_highlight) =09(show_mouse_face) =09(w32_initialize_display_info): Handle mouse cursor change. =09* src/w32term.h (w32_output): Added `hand_cursor' member. =09(WM_EMACS_SETCURSOR): New message. =09* src/w32fns.c (Vx_hand_shape): New. =09(w32_load_cursor): New. =09(w32_init_class): Use it. =09(w32_wnd_proc): Handle mouse cursor change message. =09(Fx_create_frame): Initialize frame cursors. =09(x_put_x_image): Declare all args. =09* src/w32menu.c (digest_single_submenu): Declare all args. =09* nt/emacs.rc (32649): Declare hand cursor resource. =09* nt/icons/hand.cur: Hand cursor. --delim.4cdf Content-Type: image/x-icon; name="hand.cur" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hand.cur" AAACAAEAICAAAAYAAAAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAEAAAAAAAAAAAAA AAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAf4AAAH+AAAD/wAAA/8AAAf/AAAH/4AAD/+AAAv/gAAb/4AAO/+AADP9gAADbYAA A20AAANsAAADYAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAA//////////////////////// //////////////////////////////wA///8AP///AD///gAf//4AH//8AB///AAP//gAD// 4AA//8AAP/+AAD//gAA//4gAP//4AH//+AD///gD///4H///+H////h////4f///+H////z/ //8NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tMjY1MDAxOTE2OTE1NzI0LS0NCg== --delim.4cdf Content-Type: text/x-patch; name="w32cursor.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="w32cursor.patch" KioqIHNyYy93MzJ0ZXJtLmMub3JpZwlTYXQgTm92IDE2IDE0OjExOjMyIDIwMDIKLS0tIHNy Yy93MzJ0ZXJtLmMJU2F0IE5vdiAxNiAxNToyNjoyMyAyMDAyCioqKioqKioqKioqKioqKgoq KiogMTg5LDE5NCAqKioqCi0tLSAxODksMTk1IC0tLS0KICBleHRlcm4gdm9pZCBmcmVlX2Zy YW1lX21lbnViYXIgKCk7CiAgCiAgZXh0ZXJuIGludCB3MzJfY29kZXBhZ2VfZm9yX2ZvbnQg KGNoYXIgKmZvbnRuYW1lKTsKKyBleHRlcm4gQ3Vyc29yIHczMl9sb2FkX2N1cnNvciAoTFBD VFNUUiBuYW1lKTsKICAKICBleHRlcm4gZ2x5cGhfbWV0cmljICp3MzJfQkRGX1RleHRNZXRy aWMoYmRmZm9udCAqZm9udHAsCiAgCQkJCQl1bnNpZ25lZCBjaGFyICp0ZXh0LCBpbnQgZGlt KTsKKioqKioqKioqKioqKioqCioqKiAzNjcsMzcyICoqKioKLS0tIDM2OCwzNzQgLS0tLQog IAkJCQkgZW51bSBkcmF3X2dseXBoc19mYWNlKSk7CiAgc3RhdGljIGludCBjdXJzb3JfaW5f bW91c2VfZmFjZV9wIFBfICgoc3RydWN0IHdpbmRvdyAqKSk7CiAgc3RhdGljIGludCBjbGVh cl9tb3VzZV9mYWNlIFBfICgoc3RydWN0IHczMl9kaXNwbGF5X2luZm8gKikpOworIHZvaWQg dzMyX2RlZmluZV9jdXJzb3IgUF8gKChXaW5kb3csIEN1cnNvcikpOwogIAogIHZvaWQgeF9s b3dlcl9mcmFtZSBQXyAoKHN0cnVjdCBmcmFtZSAqKSk7CiAgdm9pZCB4X3Njcm9sbF9iYXJf Y2xlYXIgUF8gKChzdHJ1Y3QgZnJhbWUgKikpOwoqKioqKioqKioqKioqKioKKioqIDE0MjYs MTQzMSAqKioqCi0tLSAxNDI4LDE0MzQgLS0tLQogIAl7CiAgCSAgY2NsLT5yZWdbMF0gPSBj aGFyc2V0OwogIAkgIGNjbC0+cmVnWzFdID0gQllURTIgKCpjaGFyMmIpOworIAkgIGNjbC0+ cmVnWzJdID0gLTE7CiAgCX0KICAgICAgICBlbHNlCiAgCXsKKioqKioqKioqKioqKioqCioq KiAzNzI0LDM3MzAgKioqKgogIHczMl9kcmF3X3JlbGllZl9yZWN0IChmLCBsZWZ0X3gsIHRv cF95LCByaWdodF94LCBib3R0b21feSwgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAg IHJhaXNlZF9wLCBsZWZ0X3AsIHJpZ2h0X3AsIGNsaXBfcmVjdCkKICAgICAgIHN0cnVjdCBm cmFtZSAqZjsKISAgICAgIGludCBsZWZ0X3gsIHRvcF95LCByaWdodF94LCBib3R0b21feSwg bGVmdF9wLCByaWdodF9wLCByYWlzZWRfcDsKICAgICAgIFJFQ1QgKmNsaXBfcmVjdDsKICB7 CiAgICBpbnQgaTsKLS0tIDM3MjcsMzczMyAtLS0tCiAgdzMyX2RyYXdfcmVsaWVmX3JlY3Qg KGYsIGxlZnRfeCwgdG9wX3ksIHJpZ2h0X3gsIGJvdHRvbV95LCB3aWR0aCwKICAgICAgICAg ICAgICAgICAgICAgICAgcmFpc2VkX3AsIGxlZnRfcCwgcmlnaHRfcCwgY2xpcF9yZWN0KQog ICAgICAgc3RydWN0IGZyYW1lICpmOwohICAgICAgaW50IGxlZnRfeCwgdG9wX3ksIHJpZ2h0 X3gsIGJvdHRvbV95LCB3aWR0aCwgbGVmdF9wLCByaWdodF9wLCByYWlzZWRfcDsKICAgICAg IFJFQ1QgKmNsaXBfcmVjdDsKICB7CiAgICBpbnQgaTsKKioqKioqKioqKioqKioqCioqKiA2 NTY1LDY1NzMgKioqKgogIAkgICAgfQogIAl9CiAgICAgIH0KISAjaWYgMCAvKiBUT0RPOiBt b3VzZSBjdXJzb3IgKi8KISAgIFhEZWZpbmVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiks IEZSQU1FX1hfV0lORE9XIChmKSwgY3Vyc29yKTsKISAjZW5kaWYKICB9CiAgCiAgCi0tLSA2 NTY4LDY1NzQgLS0tLQogIAkgICAgfQogIAl9CiAgICAgIH0KISAgIHczMl9kZWZpbmVfY3Vy c29yIChGUkFNRV9XMzJfV0lORE9XIChmKSwgY3Vyc29yKTsKICB9CiAgCiAgCioqKioqKioq KioqKioqKgoqKiogNjU4NSw2NTkwICoqKioKLS0tIDY1ODYsNjU5MiAtLS0tCiAgICBpbnQg cG9ydGlvbjsKICAgIExpc3BfT2JqZWN0IHdpbmRvdzsKICAgIHN0cnVjdCB3aW5kb3cgKnc7 CisgICBDdXJzb3IgY3Vyc29yID0gMDsKICAgIHN0cnVjdCBidWZmZXIgKmI7CiAgCiAgICAv KiBXaGVuIGEgbWVudSBpcyBhY3RpdmUsIGRvbid0IGhpZ2hsaWdodCBiZWNhdXNlIHRoaXMg bG9va3Mgb2RkLiAqLwoqKioqKioqKioqKioqKioKKioqIDY2NDAsNjY1MSAqKioqCiAgICAg ICAgbm90ZV9tb2RlX2xpbmVfaGlnaGxpZ2h0ICh3LCB4LCBwb3J0aW9uID09IDEpOwogICAg ICAgIHJldHVybjsKICAgICAgfQohICNpZiAwIC8qIFRPRE86IG1vdXNlIGN1cnNvciAqLwog ICAgaWYgKHBvcnRpb24gPT0gMikKISAgICAgY3Vyc29yID0gZi0+b3V0cHV0X2RhdGEueC0+ aG9yaXpvbnRhbF9kcmFnX2N1cnNvcjsKICAgIGVsc2UKISAgICAgY3Vyc29yID0gZi0+b3V0 cHV0X2RhdGEueC0+dGV4dF9jdXJzb3I7CiEgI2VuZGlmCiAgICAvKiBBcmUgd2UgaW4gYSB3 aW5kb3cgd2hvc2UgZGlzcGxheSBpcyB1cCB0byBkYXRlPwogICAgICAgQW5kIHZlcmlmeSB0 aGUgYnVmZmVyJ3MgdGV4dCBoYXMgbm90IGNoYW5nZWQuICAqLwogICAgYiA9IFhCVUZGRVIg KHctPmJ1ZmZlcik7Ci0tLSA2NjQyLDY2NTMgLS0tLQogICAgICAgIG5vdGVfbW9kZV9saW5l X2hpZ2hsaWdodCAodywgeCwgcG9ydGlvbiA9PSAxKTsKICAgICAgICByZXR1cm47CiAgICAg IH0KISAKICAgIGlmIChwb3J0aW9uID09IDIpCiEgICAgIGN1cnNvciA9IGYtPm91dHB1dF9k YXRhLnczMi0+aG9yaXpvbnRhbF9kcmFnX2N1cnNvcjsKICAgIGVsc2UKISAgICAgY3Vyc29y ID0gZi0+b3V0cHV0X2RhdGEudzMyLT50ZXh0X2N1cnNvcjsKISAKICAgIC8qIEFyZSB3ZSBp biBhIHdpbmRvdyB3aG9zZSBkaXNwbGF5IGlzIHVwIHRvIGRhdGU/CiAgICAgICBBbmQgdmVy aWZ5IHRoZSBidWZmZXIncyB0ZXh0IGhhcyBub3QgY2hhbmdlZC4gICovCiAgICBiID0gWEJV RkZFUiAody0+YnVmZmVyKTsKKioqKioqKioqKioqKioqCioqKiA2NjczLDY2NzkgKioqKgog IAkgIHx8ICFNQVRSSVhfUk9XICh3LT5jdXJyZW50X21hdHJpeCwgdnBvcyktPmRpc3BsYXlz X3RleHRfcCkKICAJewogIAkgIGNsZWFyX21vdXNlX2ZhY2UgKGRweWluZm8pOwohIAkgIC8q IFRPRE86IG1vdXNlIGN1cnNvciAqLwogIAkgIGdvdG8gc2V0X2N1cnNvcjsKICAJfQogIAot LS0gNjY3NSw2NjgxIC0tLS0KICAJICB8fCAhTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRy aXgsIHZwb3MpLT5kaXNwbGF5c190ZXh0X3ApCiAgCXsKICAJICBjbGVhcl9tb3VzZV9mYWNl IChkcHlpbmZvKTsKISAJICBjdXJzb3IgPSBmLT5vdXRwdXRfZGF0YS53MzItPm5vbnRleHRf Y3Vyc29yOwogIAkgIGdvdG8gc2V0X2N1cnNvcjsKICAJfQogIAoqKioqKioqKioqKioqKioK KioqIDY3MjgsNjczNSAqKioqCiAgCQkJIHx8IGhwb3MgPCBkcHlpbmZvLT5tb3VzZV9mYWNl X2VuZF9jb2wKICAJCQkgfHwgZHB5aW5mby0+bW91c2VfZmFjZV9wYXN0X2VuZCkpOwogIAoh ICAgICAgIC8qIFRPRE86IGlmIChzYW1lX3JlZ2lvbikKISAJIG1vdXNlIGN1cnNvciAqLwog IAogICAgICAgIC8qIENoZWNrIG1vdXNlLWZhY2UgaGlnaGxpZ2h0aW5nLiAgKi8KICAgICAg ICBpZiAoISBzYW1lX3JlZ2lvbgotLS0gNjczMCw2NzM3IC0tLS0KICAJCQkgfHwgaHBvcyA8 IGRweWluZm8tPm1vdXNlX2ZhY2VfZW5kX2NvbAogIAkJCSB8fCBkcHlpbmZvLT5tb3VzZV9m YWNlX3Bhc3RfZW5kKSk7CiAgCiEgICAgICAgaWYgKHNhbWVfcmVnaW9uKQohIAljdXJzb3Ig PSAwOwogIAogICAgICAgIC8qIENoZWNrIG1vdXNlLWZhY2UgaGlnaGxpZ2h0aW5nLiAgKi8K ICAgICAgICBpZiAoISBzYW1lX3JlZ2lvbgoqKioqKioqKioqKioqKioKKioqIDY3NTksNjc2 NiAqKioqCiAgCSAgZHB5aW5mby0+bW91c2VfZmFjZV9vdmVybGF5ID0gb3ZlcmxheTsKICAK ICAJICAvKiBDbGVhciB0aGUgZGlzcGxheSBvZiB0aGUgb2xkIGFjdGl2ZSByZWdpb24sIGlm IGFueS4gICovCiEgCSAgY2xlYXJfbW91c2VfZmFjZSAoZHB5aW5mbyk7CiEgCSAgLyogVE9E TzogbW91c2UgY3Vyc29yIGNoYW5nZXMuICAqLwogIAogIAkgIC8qIElmIG5vIG92ZXJsYXkg YXBwbGllcywgZ2V0IGEgdGV4dCBwcm9wZXJ0eS4gICovCiAgCSAgaWYgKE5JTFAgKG92ZXJs YXkpKQotLS0gNjc2MSw2NzY4IC0tLS0KICAJICBkcHlpbmZvLT5tb3VzZV9mYWNlX292ZXJs YXkgPSBvdmVybGF5OwogIAogIAkgIC8qIENsZWFyIHRoZSBkaXNwbGF5IG9mIHRoZSBvbGQg YWN0aXZlIHJlZ2lvbiwgaWYgYW55LiAgKi8KISAJICBpZiAoY2xlYXJfbW91c2VfZmFjZSAo ZHB5aW5mbykpCiEgCSAgICBjdXJzb3IgPSAwOwogIAogIAkgIC8qIElmIG5vIG92ZXJsYXkg YXBwbGllcywgZ2V0IGEgdGV4dCBwcm9wZXJ0eS4gICovCiAgCSAgaWYgKE5JTFAgKG92ZXJs YXkpKQoqKioqKioqKioqKioqKioKKioqIDY3OTgsNjgwNCAqKioqCiAgCiAgCSAgICAgIC8q IERpc3BsYXkgaXQgYXMgYWN0aXZlLiAgKi8KICAJICAgICAgc2hvd19tb3VzZV9mYWNlIChk cHlpbmZvLCBEUkFXX01PVVNFX0ZBQ0UpOwohIAkgICAgICAvKiBUT0RPOiBtb3VzZSBjdXJz b3IgY2hhbmdlcy4gICovCiAgCSAgICB9CiAgCSAgLyogSGFuZGxlIHRoZSB0ZXh0IHByb3Bl cnR5IGNhc2UuICAqLwogIAkgIGVsc2UgaWYgKCEgTklMUCAobW91c2VfZmFjZSkgJiYgQlVG RkVSUCAob2JqZWN0KSkKLS0tIDY4MDAsNjgwNiAtLS0tCiAgCiAgCSAgICAgIC8qIERpc3Bs YXkgaXQgYXMgYWN0aXZlLiAgKi8KICAJICAgICAgc2hvd19tb3VzZV9mYWNlIChkcHlpbmZv LCBEUkFXX01PVVNFX0ZBQ0UpOwohIAkgICAgICBjdXJzb3IgPSAwOwogIAkgICAgfQogIAkg IC8qIEhhbmRsZSB0aGUgdGV4dCBwcm9wZXJ0eSBjYXNlLiAgKi8KICAJICBlbHNlIGlmICgh IE5JTFAgKG1vdXNlX2ZhY2UpICYmIEJVRkZFUlAgKG9iamVjdCkpCioqKioqKioqKioqKioq KgoqKiogNjg0MSw2ODQ3ICoqKioKICAKICAJICAgICAgLyogRGlzcGxheSBpdCBhcyBhY3Rp dmUuICAqLwogIAkgICAgICBzaG93X21vdXNlX2ZhY2UgKGRweWluZm8sIERSQVdfTU9VU0Vf RkFDRSk7CiEgCSAgICAgIC8qIFRPRE86IG1vdXNlIGN1cnNvciBjaGFuZ2VzLiAgKi8KICAJ ICAgIH0KICAJICBlbHNlIGlmICghTklMUCAobW91c2VfZmFjZSkgJiYgU1RSSU5HUCAob2Jq ZWN0KSkKICAJICAgIHsKLS0tIDY4NDMsNjg0OSAtLS0tCiAgCiAgCSAgICAgIC8qIERpc3Bs YXkgaXQgYXMgYWN0aXZlLiAgKi8KICAJICAgICAgc2hvd19tb3VzZV9mYWNlIChkcHlpbmZv LCBEUkFXX01PVVNFX0ZBQ0UpOwohIAkgICAgICBjdXJzb3IgPSAwOwogIAkgICAgfQogIAkg IGVsc2UgaWYgKCFOSUxQIChtb3VzZV9mYWNlKSAmJiBTVFJJTkdQIChvYmplY3QpKQogIAkg ICAgewoqKioqKioqKioqKioqKioKKioqIDY4NzMsNjg3OSAqKioqCiAgCQk9IGZhY2VfYXRf c3RyaW5nX3Bvc2l0aW9uICh3LCBvYmplY3QsIHBvcywgMCwgMCwgMCwgJmlnbm9yZSwKICAJ CQkJCSAgIGdseXBoLT5mYWNlX2lkLCAxKTsKICAJICAgICAgc2hvd19tb3VzZV9mYWNlIChk cHlpbmZvLCBEUkFXX01PVVNFX0ZBQ0UpOwohIAkgICAgICAvKiBUT0RPOiBtb3VzZSBjdXJz b3IgY2hhbmdlcy4gICovCiAgCSAgICB9CiAgCSAgZWxzZSBpZiAoU1RSSU5HUCAob2JqZWN0 KSAmJiBOSUxQIChtb3VzZV9mYWNlKSkKICAJICAgIHsKLS0tIDY4NzUsNjg4MSAtLS0tCiAg CQk9IGZhY2VfYXRfc3RyaW5nX3Bvc2l0aW9uICh3LCBvYmplY3QsIHBvcywgMCwgMCwgMCwg Jmlnbm9yZSwKICAJCQkJCSAgIGdseXBoLT5mYWNlX2lkLCAxKTsKICAJICAgICAgc2hvd19t b3VzZV9mYWNlIChkcHlpbmZvLCBEUkFXX01PVVNFX0ZBQ0UpOwohIAkgICAgICBjdXJzb3Ig PSAwOwogIAkgICAgfQogIAkgIGVsc2UgaWYgKFNUUklOR1AgKG9iamVjdCkgJiYgTklMUCAo bW91c2VfZmFjZSkpCiAgCSAgICB7CioqKioqKioqKioqKioqKgoqKiogNjkyMSw2OTI3ICoq KioKICAKICAJCSAgLyogRGlzcGxheSBpdCBhcyBhY3RpdmUuICAqLwogIAkJICBzaG93X21v dXNlX2ZhY2UgKGRweWluZm8sIERSQVdfTU9VU0VfRkFDRSk7CiEgCQkgIC8qIFRPRE86IG1v dXNlIGN1cnNvciBjaGFuZ2VzLiAgKi8KICAJCX0KICAJICAgIH0KICAJfQotLS0gNjkyMyw2 OTI5IC0tLS0KICAKICAJCSAgLyogRGlzcGxheSBpdCBhcyBhY3RpdmUuICAqLwogIAkJICBz aG93X21vdXNlX2ZhY2UgKGRweWluZm8sIERSQVdfTU9VU0VfRkFDRSk7CiEgCQkgIGN1cnNv ciA9IDA7CiAgCQl9CiAgCSAgICB9CiAgCX0KKioqKioqKioqKioqKioqCioqKiA3MDAxLDcw MDggKioqKgogICAgICB9CiAgCiAgIHNldF9jdXJzb3I6CiEgICAvKiBUT0RPOiBtb3VzZSBj dXJzb3IgY2hhbmdlcy4gKi8KISAgIDsKICB9CiAgCiAgc3RhdGljIHZvaWQKLS0tIDcwMDMs NzAxMCAtLS0tCiAgICAgIH0KICAKICAgc2V0X2N1cnNvcjoKISAgIGlmIChjdXJzb3IpCiEg ICAgIHczMl9kZWZpbmVfY3Vyc29yIChGUkFNRV9XMzJfV0lORE9XIChmKSwgY3Vyc29yKTsK ICB9CiAgCiAgc3RhdGljIHZvaWQKKioqKioqKioqKioqKioqCioqKiA3MDE1LDcwMjAgKioq KgotLS0gNzAxNyw3MDI5IC0tLS0KICAJCQkgIEhJV09SRCAobGFzdF9tb3VzZV9tb3Rpb25f ZXZlbnQubFBhcmFtKSk7CiAgfQogIAorIHZvaWQKKyB3MzJfZGVmaW5lX2N1cnNvciAod2lu ZG93LCBjdXJzb3IpCisgICAgICBXaW5kb3cgd2luZG93OworICAgICAgQ3Vyc29yIGN1cnNv cjsKKyB7CisgICBQb3N0TWVzc2FnZSAod2luZG93LCBXTV9FTUFDU19TRVRDVVJTT1IsIChX UEFSQU0pIGN1cnNvciwgMCk7CisgfQogIAogIAwKICAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKioq KioqKioqKioqKioqCioqKiA3NTU1LDc1NzIgKioqKgogIAkJCSAgdy0+cGh5c19jdXJzb3Iu eCwgdy0+cGh5c19jdXJzb3IueSk7CiAgICAgIH0KICAKLSAjaWYgMCAvKiBUT0RPOiBtb3Vz ZSBjdXJzb3IgKi8KICAgIC8qIENoYW5nZSB0aGUgbW91c2UgY3Vyc29yLiAgKi8KICAgIGlm IChkcmF3ID09IERSQVdfTk9STUFMX1RFWFQpCiEgICAgIFhEZWZpbmVDdXJzb3IgKEZSQU1F X1hfRElTUExBWSAoZiksIEZSQU1FX1hfV0lORE9XIChmKSwKISAJCSAgIGYtPm91dHB1dF9k YXRhLngtPnRleHRfY3Vyc29yKTsKICAgIGVsc2UgaWYgKGRyYXcgPT0gRFJBV19NT1VTRV9G QUNFKQohICAgICBYRGVmaW5lQ3Vyc29yIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9Y X1dJTkRPVyAoZiksCiEgCQkgICBmLT5vdXRwdXRfZGF0YS54LT5jcm9zc19jdXJzb3IpOwog ICAgZWxzZQohICAgICBYRGVmaW5lQ3Vyc29yIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFN RV9YX1dJTkRPVyAoZiksCiEgCQkgICBmLT5vdXRwdXRfZGF0YS54LT5ub250ZXh0X2N1cnNv cik7CiEgI2VuZGlmCiAgfQogIAogIC8qIENsZWFyIG91dCB0aGUgbW91c2UtaGlnaGxpZ2h0 ZWQgYWN0aXZlIHJlZ2lvbi4KLS0tIDc1NjQsNzU4MCAtLS0tCiAgCQkJICB3LT5waHlzX2N1 cnNvci54LCB3LT5waHlzX2N1cnNvci55KTsKICAgICAgfQogIAogICAgLyogQ2hhbmdlIHRo ZSBtb3VzZSBjdXJzb3IuICAqLwogICAgaWYgKGRyYXcgPT0gRFJBV19OT1JNQUxfVEVYVCkK ISAgICAgdzMyX2RlZmluZV9jdXJzb3IgKEZSQU1FX1czMl9XSU5ET1cgKGYpLAohIAkJICAg ICAgIGYtPm91dHB1dF9kYXRhLnczMi0+dGV4dF9jdXJzb3IpOwogICAgZWxzZSBpZiAoZHJh dyA9PSBEUkFXX01PVVNFX0ZBQ0UpCiEgICAgIHczMl9kZWZpbmVfY3Vyc29yIChGUkFNRV9X MzJfV0lORE9XIChmKSwKISAJCSAgICAgICBmLT5vdXRwdXRfZGF0YS53MzItPmhhbmRfY3Vy c29yKTsKICAgIGVsc2UKISAgICAgdzMyX2RlZmluZV9jdXJzb3IgKEZSQU1FX1czMl9XSU5E T1cgKGYpLAohIAkJICAgICAgIGYtPm91dHB1dF9kYXRhLnczMi0+bm9udGV4dF9jdXJzb3Ip OwohIAogIH0KICAKICAvKiBDbGVhciBvdXQgdGhlIG1vdXNlLWhpZ2hsaWdodGVkIGFjdGl2 ZSByZWdpb24uCioqKioqKioqKioqKioqKgoqKiogMTEwNDQsMTEwNDkgKioqKgotLS0gMTEw NTIsMTEwNTkgLS0tLQogICAgZHB5aW5mby0+bW91c2VfZmFjZV93aW5kb3cgPSBRbmlsOwog ICAgZHB5aW5mby0+bW91c2VfZmFjZV9vdmVybGF5ID0gUW5pbDsKICAgIGRweWluZm8tPm1v dXNlX2ZhY2VfaGlkZGVuID0gMDsKKyAKKyAgIGRweWluZm8tPnZlcnRpY2FsX3Njcm9sbF9i YXJfY3Vyc29yID0gdzMyX2xvYWRfY3Vyc29yIChJRENfQVJST1cpOwogICAgLyogVE9ETzog ZHB5aW5mby0+Z3JheSAqLwogIAogIH0KKioqIHNyYy93MzJ0ZXJtLmgub3JpZwlGcmkgQXVn IDMwIDE1OjIwOjM2IDIwMDIKLS0tIHNyYy93MzJ0ZXJtLmgJVHVlIERlYyAgMyAxMzozODox OSAyMDAyCioqKioqKioqKioqKioqKgoqKiogMzUwLDM1NSAqKioqCi0tLSAzNTAsMzU2IC0t LS0KICAgIEN1cnNvciBjcm9zc19jdXJzb3I7CiAgICBDdXJzb3IgaG91cmdsYXNzX2N1cnNv cjsKICAgIEN1cnNvciBob3Jpem9udGFsX2RyYWdfY3Vyc29yOworICAgQ3Vyc29yIGhhbmRf Y3Vyc29yOwogIAogICAgLyogV2luZG93IHdob3NlIGN1cnNvciBpcyBob3VyZ2xhc3NfY3Vy c29yLiAgVGhpcyB3aW5kb3cgaXMKICAgICAgIHRlbXBvcmFyaWx5IG1hcHBlZCB0byBkaXNw bGF5IGFuIGhvdXJnbGFzcyBjdXJzb3IuICAqLwoqKioqKioqKioqKioqKioKKioqIDczNSw3 NDEgKioqKgogICNkZWZpbmUgV01fRU1BQ1NfREVTVFJPWV9DQVJFVCAgICAgICAgIChXTV9F TUFDU19TVEFSVCArIDE2KQogICNkZWZpbmUgV01fRU1BQ1NfU0hPV19DQVJFVCAgICAgICAg ICAgIChXTV9FTUFDU19TVEFSVCArIDE3KQogICNkZWZpbmUgV01fRU1BQ1NfSElERV9DQVJF VCAgICAgICAgICAgIChXTV9FTUFDU19TVEFSVCArIDE4KQohICNkZWZpbmUgV01fRU1BQ1Nf RU5EICAgICAgICAgICAgICAgICAgIChXTV9FTUFDU19TVEFSVCArIDE5KQogIAogICNkZWZp bmUgV05EX0ZPTlRXSURUSF9JTkRFWCAgICAoMCkgCiAgI2RlZmluZSBXTkRfTElORUhFSUdI VF9JTkRFWCAgICg0KSAKLS0tIDczNiw3NDMgLS0tLQogICNkZWZpbmUgV01fRU1BQ1NfREVT VFJPWV9DQVJFVCAgICAgICAgIChXTV9FTUFDU19TVEFSVCArIDE2KQogICNkZWZpbmUgV01f RU1BQ1NfU0hPV19DQVJFVCAgICAgICAgICAgIChXTV9FTUFDU19TVEFSVCArIDE3KQogICNk ZWZpbmUgV01fRU1BQ1NfSElERV9DQVJFVCAgICAgICAgICAgIChXTV9FTUFDU19TVEFSVCAr IDE4KQohICNkZWZpbmUgV01fRU1BQ1NfU0VUQ1VSU09SICAgICAgICAgICAgIChXTV9FTUFD U19TVEFSVCArIDE5KQohICNkZWZpbmUgV01fRU1BQ1NfRU5EICAgICAgICAgICAgICAgICAg IChXTV9FTUFDU19TVEFSVCArIDIwKQogIAogICNkZWZpbmUgV05EX0ZPTlRXSURUSF9JTkRF WCAgICAoMCkgCiAgI2RlZmluZSBXTkRfTElORUhFSUdIVF9JTkRFWCAgICg0KSAKKioqIHNy Yy93MzJmbnMuYy5vcmlnCVRodSBOb3YgMjEgMDk6MDE6NDIgMjAwMgotLS0gc3JjL3czMmZu cy5jCVRodSBOb3YgMjEgMDk6NDc6NDEgMjAwMgoqKioqKioqKioqKioqKioKKioqIDE1Miwx NTggKioqKgogICAgIG92ZXIgdGV4dCBvciBpbiB0aGUgbW9kZWxpbmUuICAqLwogIAogIExp c3BfT2JqZWN0IFZ4X3BvaW50ZXJfc2hhcGUsIFZ4X25vbnRleHRfcG9pbnRlcl9zaGFwZSwg VnhfbW9kZV9wb2ludGVyX3NoYXBlOwohIExpc3BfT2JqZWN0IFZ4X2hvdXJnbGFzc19wb2lu dGVyX3NoYXBlLCBWeF93aW5kb3dfaG9yaXpvbnRhbF9kcmFnX3NoYXBlOwogIAogIC8qIFRo ZSBzaGFwZSB3aGVuIG92ZXIgbW91c2Utc2Vuc2l0aXZlIHRleHQuICAqLwogIAotLS0gMTUy LDE1OCAtLS0tCiAgICAgb3ZlciB0ZXh0IG9yIGluIHRoZSBtb2RlbGluZS4gICovCiAgCiAg TGlzcF9PYmplY3QgVnhfcG9pbnRlcl9zaGFwZSwgVnhfbm9udGV4dF9wb2ludGVyX3NoYXBl LCBWeF9tb2RlX3BvaW50ZXJfc2hhcGU7CiEgTGlzcF9PYmplY3QgVnhfaG91cmdsYXNzX3Bv aW50ZXJfc2hhcGUsIFZ4X3dpbmRvd19ob3Jpem9udGFsX2RyYWdfc2hhcGUsIFZ4X2hhbmRf c2hhcGU7CiAgCiAgLyogVGhlIHNoYXBlIHdoZW4gb3ZlciBtb3VzZS1zZW5zaXRpdmUgdGV4 dC4gICovCiAgCioqKioqKioqKioqKioqKgoqKiogMjE5MywyMTk4ICoqKioKLS0tIDIxOTMs MjE5OSAtLS0tCiAgICBlbHNlCiAgICAgIGhvcml6b250YWxfZHJhZ19jdXJzb3IKICAgICAg ICA9IFhDcmVhdGVGb250Q3Vyc29yIChGUkFNRV9YX0RJU1BMQVkgKGYpLCBYQ19zYl9oX2Rv dWJsZV9hcnJvdyk7CisgICAvKiBUT0RPOiBoYW5kX2N1cnNvciAqLwogIAogICAgLyogQ2hl Y2sgYW5kIHJlcG9ydCBlcnJvcnMgd2l0aCB0aGUgYWJvdmUgY2FsbHMuICAqLwogICAgeF9j aGVja19lcnJvcnMgKEZSQU1FX1czMl9ESVNQTEFZIChmKSwgImNhbid0IHNldCBjdXJzb3Ig c2hhcGU6ICVzIik7CioqKioqKioqKioqKioqKgoqKiogMjIyMSwyMjI2ICoqKioKLS0tIDIy MjIsMjIyOCAtLS0tCiAgICAgICAgICAgICAgICAgICAgICAmZm9yZV9jb2xvciwgJmJhY2tf Y29sb3IpOwogICAgICBYUmVjb2xvckN1cnNvciAoRlJBTUVfVzMyX0RJU1BMQVkgKGYpLCBo b3VyZ2xhc3NfY3Vyc29yLAogICAgICAgICAgICAgICAgICAgICAgJmZvcmVfY29sb3IsICZi YWNrX2NvbG9yKTsKKyAgICAgLyogVE9ETzogaGFuZF9jdXJzb3IgKi8KICAgIH0KICAKICAg IGlmIChGUkFNRV9XMzJfV0lORE9XIChmKSAhPSAwKQoqKioqKioqKioqKioqKioKKioqIDIy NDksMjI1NCAqKioqCi0tLSAyMjUxLDIyNTcgLS0tLQogICAgICAgICYmIGYtPm91dHB1dF9k YXRhLnczMi0+Y3Jvc3NfY3Vyc29yICE9IDApCiAgICAgIFhGcmVlQ3Vyc29yIChGUkFNRV9X MzJfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRhLnczMi0+Y3Jvc3NfY3Vyc29yKTsKICAg IGYtPm91dHB1dF9kYXRhLnczMi0+Y3Jvc3NfY3Vyc29yID0gY3Jvc3NfY3Vyc29yOworICAg ICAvKiBUT0RPOiBoYW5kX2N1cnNvciAqLwogIAogICAgWEZsdXNoIChGUkFNRV9XMzJfRElT UExBWSAoZikpOwogICAgVU5CTE9DS19JTlBVVDsKKioqKioqKioqKioqKioqCioqKiAzNDE3 LDM0MjIgKioqKgotLS0gMzQyMCwzNDQwIC0tLS0KICB9CiAgCiAgDAorIEN1cnNvcgorIHcz Ml9sb2FkX2N1cnNvciAoTFBDVFNUUiBuYW1lKQorIHsKKyAgIC8qIFRyeSBmaXJzdCB0byBs b2FkIGN1cnNvciBmcm9tIGFwcGxpY2F0aW9uIHJlc291cmNlLiAgKi8KKyAgIEN1cnNvciBj dXJzb3IgPSBMb2FkSW1hZ2UgKChISU5TVEFOQ0UpIEdldE1vZHVsZUhhbmRsZShOVUxMKSwK KyAJCQkgICAgIG5hbWUsIElNQUdFX0NVUlNPUiwgMCwgMCwKKyAJCQkgICAgIExSX0RFRkFV TFRDT0xPUiB8IExSX0RFRkFVTFRTSVpFIHwgTFJfU0hBUkVEKTsKKyAgIGlmICghY3Vyc29y KQorICAgICB7CisgICAgICAgLyogVGhlbiB0cnkgdG8gbG9hZCBhIHNoYXJlZCBwcmVkZWZp bmVkIGN1cnNvci4gICovCisgICAgICAgY3Vyc29yID0gTG9hZEltYWdlIChOVUxMLCBuYW1l LCBJTUFHRV9DVVJTT1IsIDAsIDAsCisgCQkJICBMUl9ERUZBVUxUQ09MT1IgfCBMUl9ERUZB VUxUU0laRSB8IExSX1NIQVJFRCk7CisgICAgIH0KKyAgIHJldHVybiBjdXJzb3I7CisgfQog IAogIGV4dGVybiBMUkVTVUxUIENBTExCQUNLIHczMl93bmRfcHJvYyAoKTsKICAKKioqKioq KioqKioqKioqCioqKiAzNDMyLDM0MzggKioqKgogICAgd2MuY2JXbmRFeHRyYSA9IFdORF9F WFRSQV9CWVRFUzsKICAgIHdjLmhJbnN0YW5jZSA9IGhpbnN0OwogICAgd2MuaEljb24gPSBM b2FkSWNvbiAoaGluc3QsIEVNQUNTX0NMQVNTKTsKISAgIHdjLmhDdXJzb3IgPSBMb2FkQ3Vy c29yIChOVUxMLCBJRENfQVJST1cpOwogICAgd2MuaGJyQmFja2dyb3VuZCA9IE5VTEw7IC8q IEdldFN0b2NrT2JqZWN0IChXSElURV9CUlVTSCk7ICAqLwogICAgd2MubHBzek1lbnVOYW1l ID0gTlVMTDsKICAgIHdjLmxwc3pDbGFzc05hbWUgPSBFTUFDU19DTEFTUzsKLS0tIDM0NTAs MzQ1NiAtLS0tCiAgICB3Yy5jYlduZEV4dHJhID0gV05EX0VYVFJBX0JZVEVTOwogICAgd2Mu aEluc3RhbmNlID0gaGluc3Q7CiAgICB3Yy5oSWNvbiA9IExvYWRJY29uIChoaW5zdCwgRU1B Q1NfQ0xBU1MpOwohICAgd2MuaEN1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURDX0FSUk9X KTsKICAgIHdjLmhickJhY2tncm91bmQgPSBOVUxMOyAvKiBHZXRTdG9ja09iamVjdCAoV0hJ VEVfQlJVU0gpOyAgKi8KICAgIHdjLmxwc3pNZW51TmFtZSA9IE5VTEw7CiAgICB3Yy5scHN6 Q2xhc3NOYW1lID0gRU1BQ1NfQ0xBU1M7CioqKioqKioqKioqKioqKgoqKiogNTA4NCw1MDg5 ICoqKioKLS0tIDUxMDIsNTEyMSAtLS0tCiAgICAgICAgKChMUE1JTk1BWElORk8pIGxQYXJh bSktPnB0TWF4VHJhY2tTaXplLnkgPSAzMjc2NzsKICAgICAgICByZXR1cm4gMDsKICAKKyAg ICAgY2FzZSBXTV9TRVRDVVJTT1I6CisgICAgICAgaWYgKExPV09SRCAobFBhcmFtKSA9PSBI VENMSUVOVCkKKyAJcmV0dXJuIDA7CisgCisgICAgICAgZ290byBkZmx0OworICAgICAgIAor ICAgICBjYXNlIFdNX0VNQUNTX1NFVENVUlNPUjoKKyAgICAgICB7CisgCUN1cnNvciBjdXJz b3IgPSAoQ3Vyc29yKSB3UGFyYW07CisgCWlmIChjdXJzb3IpCisgCSAgU2V0Q3Vyc29yIChj dXJzb3IpOworIAlyZXR1cm4gMDsKKyAgICAgICB9CisgICAgICAgCiAgICAgIGNhc2UgV01f RU1BQ1NfQ1JFQVRFU0NST0xMQkFSOgogICAgICAgIHJldHVybiAoTFJFU1VMVCkgdzMyX2Ny ZWF0ZXNjcm9sbGJhciAoKHN0cnVjdCBmcmFtZSAqKSB3UGFyYW0sCiAgCQkJCQkgICAgKHN0 cnVjdCBzY3JvbGxfYmFyICopIGxQYXJhbSk7CioqKioqKioqKioqKioqKgoqKiogNTY3NCw1 Njc5ICoqKioKLS0tIDU3MDYsNTcxOSAtLS0tCiAgICBmLT5vdXRwdXRfZGF0YS53MzItPmR3 U3R5bGUgPSBXU19PVkVSTEFQUEVEV0lORE9XOwogICAgZi0+b3V0cHV0X2RhdGEudzMyLT5w YXJlbnRfZGVzYyA9IEZSQU1FX1czMl9ESVNQTEFZX0lORk8gKGYpLT5yb290X3dpbmRvdzsK ICAKKyAgIGYtPm91dHB1dF9kYXRhLnczMi0+dGV4dF9jdXJzb3IgPSB3MzJfbG9hZF9jdXJz b3IgKElEQ19JQkVBTSk7CisgICBmLT5vdXRwdXRfZGF0YS53MzItPm5vbnRleHRfY3Vyc29y ID0gdzMyX2xvYWRfY3Vyc29yIChJRENfQVJST1cpOworICAgZi0+b3V0cHV0X2RhdGEudzMy LT5tb2RlbGluZV9jdXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElEQ19BUlJPVyk7CisgICBm LT5vdXRwdXRfZGF0YS53MzItPmNyb3NzX2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURD X0NST1NTKTsKKyAgIGYtPm91dHB1dF9kYXRhLnczMi0+aG91cmdsYXNzX2N1cnNvciA9IHcz Ml9sb2FkX2N1cnNvciAoSURDX1dBSVQpOworICAgZi0+b3V0cHV0X2RhdGEudzMyLT5ob3Jp em9udGFsX2RyYWdfY3Vyc29yID0gdzMyX2xvYWRfY3Vyc29yIChJRENfU0laRVdFKTsKKyAg IGYtPm91dHB1dF9kYXRhLnczMi0+aGFuZF9jdXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElE Q19IQU5EKTsKKyAKICAgIC8qIEFkZCB0aGUgdG9vbC1iYXIgaGVpZ2h0IHRvIHRoZSBpbml0 aWFsIGZyYW1lIGhlaWdodCBzbyB0aGF0IHRoZQogICAgICAgdXNlciBnZXRzIGEgdGV4dCBk aXNwbGF5IGFyZWEgb2YgdGhlIHNpemUgaGUgc3BlY2lmaWVkIHdpdGggLWcgb3IKICAgICAg IHZpYSAuWGRlZmF1bHRzLiAgTGF0ZXIgY2hhbmdlcyBvZiB0aGUgdG9vbC1iYXIgaGVpZ2h0 IGRvbid0CioqKioqKioqKioqKioqKgoqKiogOTQ0MSw5NDQ2ICoqKioKLS0tIDk0ODEsOTQ4 NyAtLS0tCiAgICAgICBzdHJ1Y3QgZnJhbWUgKmY7CiAgICAgICBYSW1hZ2UgKnhpbWc7CiAg ICAgICBQaXhtYXAgcGl4bWFwOworICAgICAgaW50IHdpZHRoLCBoZWlnaHQ7CiAgewogICNp ZiAwICAvKiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgbmVjZXNzYXJ5IGxvb2tpbmcgYXQgd2hl cmUgaXQgaXMgdXNlZC4gICovCiAgICBIREMgaGRjID0gZ2V0X2ZyYW1lX2RjIChmKTsKKioq IHNyYy93MzJtZW51LmMub3JpZwlNb24gTm92IDE4IDA5OjIzOjU3IDIwMDIKLS0tIHNyYy93 MzJtZW51LmMJTW9uIE5vdiAxOCAwOTo1NTo1MyAyMDAyCioqKioqKioqKioqKioqKgoqKiog MTE3NSwxMTgxICoqKioKICAKICBzdGF0aWMgd2lkZ2V0X3ZhbHVlICoKICBkaWdlc3Rfc2lu Z2xlX3N1Ym1lbnUgKHN0YXJ0LCBlbmQsIHRvcF9sZXZlbF9pdGVtcykKISAgICAgIGludCBz dGFydCwgZW5kOwogIHsKICAgIHdpZGdldF92YWx1ZSAqd3YsICpwcmV2X3d2LCAqc2F2ZV93 diwgKmZpcnN0X3d2OwogICAgaW50IGk7Ci0tLSAxMTc1LDExODEgLS0tLQogIAogIHN0YXRp YyB3aWRnZXRfdmFsdWUgKgogIGRpZ2VzdF9zaW5nbGVfc3VibWVudSAoc3RhcnQsIGVuZCwg dG9wX2xldmVsX2l0ZW1zKQohICAgICAgaW50IHN0YXJ0LCBlbmQsIHRvcF9sZXZlbF9pdGVt czsKICB7CiAgICB3aWRnZXRfdmFsdWUgKnd2LCAqcHJldl93diwgKnNhdmVfd3YsICpmaXJz dF93djsKICAgIGludCBpOwoqKiogbnQvZW1hY3MucmMub3JpZwlUdWUgU2VwICAzIDA5OjUw OjUxIDIwMDIKLS0tIG50L2VtYWNzLnJjCVRodSBTZXAgMTIgMTY6NTA6MjggMjAwMgoqKioq KioqKioqKioqKioKKioqIDEsNCAqKioqCiEgRW1hY3MgSUNPTiAgICBpY29uc1xnbnUyYTMy dC5pY28KICAKICAjaWZuZGVmIFZTX1ZFUlNJT05fSU5GTwogICNkZWZpbmUgVlNfVkVSU0lP Tl9JTkZPIDEKLS0tIDEsNSAtLS0tCiEgRW1hY3MgSUNPTiAgIGljb25zXGdudTJhMzJ0Lmlj bwohIDMyNjQ5IENVUlNPUiBpY29uc1xoYW5kLmN1cgogIAogICNpZm5kZWYgVlNfVkVSU0lP Tl9JTkZPCiAgI2RlZmluZSBWU19WRVJTSU9OX0lORk8gMQoNCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tNDExODQ2NzYzMzQtLQ0K --delim.4cdf--