Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:54111 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 18132 invoked from network); 20 Jul 2011 19:44:35 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 20 Jul 2011 19:44:35 -0000 Authentication-Results: pb1.pair.com smtp.mail=pierre.php@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=pierre.php@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.161.170 as permitted sender) X-PHP-List-Original-Sender: pierre.php@gmail.com X-Host-Fingerprint: 209.85.161.170 mail-gx0-f170.google.com Received: from [209.85.161.170] ([209.85.161.170:40837] helo=mail-gx0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id AF/20-15129-020372E4 for ; Wed, 20 Jul 2011 15:44:33 -0400 Received: by gxk27 with SMTP id 27so302917gxk.29 for ; Wed, 20 Jul 2011 12:44:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=yvMf+mEMIVHUG+23dqiLcmICCtJOx/OPIR5Gm6qNP3I=; b=m0MpMHqwOgqqry3N1sF+5znTnqqZ2Gzg+fygMgGFwW3Vblnl+4SfHBO5mQdhUyzZA6 PsSX1eWcz5eyqO872HIQIbnfpNBFRJJwHLFu9WLCZH3N94uKSWl4w6n1njp6CjhGrZWv bAmqF575aA9UFW+Mfs4zwELzvrkeGmqH/ufls= MIME-Version: 1.0 Received: by 10.236.75.136 with SMTP id z8mr7902797yhd.47.1311191068920; Wed, 20 Jul 2011 12:44:28 -0700 (PDT) Received: by 10.147.35.7 with HTTP; Wed, 20 Jul 2011 12:44:28 -0700 (PDT) Date: Wed, 20 Jul 2011 21:44:28 +0200 Message-ID: To: PHP internals Cc: David Soria Parra , Stanislav Malyshev Content-Type: multipart/mixed; boundary=20cf3005151ce54bf104a8857510 Subject: Magic quotes removal previous patch From: pierre.php@gmail.com (Pierre Joye) --20cf3005151ce54bf104a8857510 Content-Type: text/plain; charset=ISO-8859-1 hi, Please find as attachment the previous patch to remove the magic quotes. The log I was using back then was (5 years ago already, mq resists :): Log: - remove magic_quotes_gpc, magic_quotes_runtime, magic_quotes_sybase (calling ini_set('magic_....') returns 0|false - get_magic_quotes_gpc, get_magic_quotes_runtime are kept but always return false - set_magic_quotes_runtime raises an E_CORE_ERROR Cheers, -- Pierre @pierrejoye | http://blog.thepimp.net | http://www.libgd.org --20cf3005151ce54bf104a8857510 Content-Type: text/plain; charset=US-ASCII; name="pajoye-20060308004330.txt" Content-Disposition: attachment; filename="pajoye-20060308004330.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqcpa9g00 aHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvTkVXUz9yMT0xLjIwOTcmcjI9 MS4yMDk4JmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvTkVXUwpkaWZmIC11IHBocC1zcmMv TkVXUzoxLjIwOTcgcGhwLXNyYy9ORVdTOjEuMjA5OAotLS0gcGhwLXNyYy9ORVdTOjEuMjA5NwlU dWUgTWFyICA3IDA4OjQzOjIwIDIwMDYKKysrIHBocC1zcmMvTkVXUwlXZWQgTWFyICA4IDAwOjQz OjI3IDIwMDYKQEAgLTUsNiArNSwxMCBAQAogLSBEcm9wZWQgcmVnaXN0ZXJfZ2xvYmFscyBzdXBw b3J0IChQaWVycmUpCiAgIC0gc2Vzc2lvbl9yZWdpc3Rlciwgc2Vzc2lvbl91bnJlZ2lzdGVyIGFu ZCBzZXNzaW9uX2lzX3JlZ2lzdGVyZWQgcmVtb3ZlZCB0aGV5CiAgICAgZGVwZW5kIG9uIHJlZ2lz dGVyX2dsb2JhbHMKKy0gRHJvcGVkIG1hZ2ljX3F1b3Rlc19ncGMsIG1hZ2ljX3F1b3Rlc19ydW50 aW1lIGFuZCBtYWdpY19xdW90ZXNfc3liYXNlIGluaQorICBzZXR0aW5ncyAoUGllcnJlKQorICAt ICBnZXRfbWFnaWNfcXVvdGVzX2dwYywgZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lIGFyZSBrZXB0 IGJ1dCBhbHdheXMgcmV0dXJuCisgICAgIGZhbHNlLCBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUg cmFpc2VzIGFuIEVfQ09SRV9FUlJPUgogLSBGcmVldHlwZSAxLnggYW5kIEdEIDEueCBzdXBwb3J0 IHJlbW92ZWQgKFBpZXJyZSkKIC0gQ2xlYW5lZCBDR0kgY29kZS4gTm93IEZhc3RDR0kgY2FuIG5v dCBiZSBkaXNhYmxlZC4gU2VlIHNhcGkvY2dpL0NIQU5HRVMKICAgZm9yIG1vcmUgZGV0YWlscy4g KERtaXRyeSkKaHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvcGhwLmluaS1k aXN0P3IxPTEuMjQ2JnIyPTEuMjQ3JmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvcGhwLmlu aS1kaXN0CmRpZmYgLXUgcGhwLXNyYy9waHAuaW5pLWRpc3Q6MS4yNDYgcGhwLXNyYy9waHAuaW5p LWRpc3Q6MS4yNDcKLS0tIHBocC1zcmMvcGhwLmluaS1kaXN0OjEuMjQ2CVR1ZSBNYXIgIDcgMDA6 MjA6NTMgMjAwNgorKysgcGhwLXNyYy9waHAuaW5pLWRpc3QJV2VkIE1hciAgOCAwMDo0MzoyNyAy MDA2CkBAIC00MDgsMTggKzQwOCw2IEBACiA7IE1heGltdW0gc2l6ZSBvZiBQT1NUIGRhdGEgdGhh dCBQSFAgd2lsbCBhY2NlcHQuCiBwb3N0X21heF9zaXplID0gOE0KIAotOyBNYWdpYyBxdW90ZXMK LTsKLQotOyBNYWdpYyBxdW90ZXMgZm9yIGluY29taW5nIEdFVC9QT1NUL0Nvb2tpZSBkYXRhLgot bWFnaWNfcXVvdGVzX2dwYyA9IE9uCi0KLTsgTWFnaWMgcXVvdGVzIGZvciBydW50aW1lLWdlbmVy YXRlZCBkYXRhLCBlLmcuIGRhdGEgZnJvbSBTUUwsIGZyb20gZXhlYygpLCBldGMuCi1tYWdpY19x dW90ZXNfcnVudGltZSA9IE9mZgotCi07IFVzZSBTeWJhc2Utc3R5bGUgbWFnaWMgcXVvdGVzIChl c2NhcGUgJyB3aXRoICcnIGluc3RlYWQgb2YgXCcpLgotbWFnaWNfcXVvdGVzX3N5YmFzZSA9IE9m ZgotCiA7IEF1dG9tYXRpY2FsbHkgYWRkIGZpbGVzIGJlZm9yZSBvciBhZnRlciBhbnkgUEhQIGRv Y3VtZW50LgogYXV0b19wcmVwZW5kX2ZpbGUgPQogYXV0b19hcHBlbmRfZmlsZSA9Cmh0dHA6Ly9j dnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL3BocC5pbmktcmVjb21tZW5kZWQ/cjE9MS4x OTUmcjI9MS4xOTYmZGlmZl9mb3JtYXQ9dQpJbmRleDogcGhwLXNyYy9waHAuaW5pLXJlY29tbWVu ZGVkCmRpZmYgLXUgcGhwLXNyYy9waHAuaW5pLXJlY29tbWVuZGVkOjEuMTk1IHBocC1zcmMvcGhw LmluaS1yZWNvbW1lbmRlZDoxLjE5NgotLS0gcGhwLXNyYy9waHAuaW5pLXJlY29tbWVuZGVkOjEu MTk1CVR1ZSBNYXIgIDcgMDA6MjA6NTMgMjAwNgorKysgcGhwLXNyYy9waHAuaW5pLXJlY29tbWVu ZGVkCVdlZCBNYXIgIDggMDA6NDM6MjcgMjAwNgpAQCAtOTIsMTAgKzkyLDYgQEAKIDsgLSByZWdp c3Rlcl9hcmdjX2FyZ3YgPSBPZmYgICAgICAgW1BlcmZvcm1hbmNlXQogOyAgICAgRGlzYWJsZXMg cmVnaXN0cmF0aW9uIG9mIHRoZSBzb21ld2hhdCByZWR1bmRhbnQgJGFyZ3YgYW5kICRhcmdjIGds b2JhbAogOyAgICAgdmFyaWFibGVzLgotOyAtIG1hZ2ljX3F1b3Rlc19ncGMgPSBPZmYgICAgICAg ICBbUGVyZm9ybWFuY2VdCi07ICAgICBJbnB1dCBkYXRhIGlzIG5vIGxvbmdlciBlc2NhcGVkIHdp dGggc2xhc2hlcyBzbyB0aGF0IGl0IGNhbiBiZSBzZW50IGludG8KLTsgICAgIFNRTCBkYXRhYmFz ZXMgd2l0aG91dCBmdXJ0aGVyIG1hbmlwdWxhdGlvbi4gIEluc3RlYWQsIHlvdSBzaG91bGQgdXNl IHRoZQotOyAgICAgZnVuY3Rpb24gYWRkc2xhc2hlcygpIG9uIGVhY2ggaW5wdXQgZWxlbWVudCB5 b3Ugd2lzaCB0byBzZW5kIHRvIGEgZGF0YWJhc2UuCiA7IC0gdmFyaWFibGVzX29yZGVyID0gIkdQ Q1MiICAgICAgIFtQZXJmb3JtYW5jZV0KIDsgICAgIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMg YXJlIG5vdCBoYXNoZWQgaW50byB0aGUgJF9FTlYuICBUbyBhY2Nlc3MKIDsgICAgIGVudmlyb25t ZW50IHZhcmlhYmxlcywgeW91IGNhbiB1c2UgZ2V0ZW52KCkgaW5zdGVhZC4KQEAgLTQ1NCwxOCAr NDUwLDYgQEAKIDsgTWF4aW11bSBzaXplIG9mIFBPU1QgZGF0YSB0aGF0IFBIUCB3aWxsIGFjY2Vw dC4KIHBvc3RfbWF4X3NpemUgPSA4TQogCi07IE1hZ2ljIHF1b3RlcwotOwotCi07IE1hZ2ljIHF1 b3RlcyBmb3IgaW5jb21pbmcgR0VUL1BPU1QvQ29va2llIGRhdGEuCi1tYWdpY19xdW90ZXNfZ3Bj ID0gT2ZmCi0KLTsgTWFnaWMgcXVvdGVzIGZvciBydW50aW1lLWdlbmVyYXRlZCBkYXRhLCBlLmcu IGRhdGEgZnJvbSBTUUwsIGZyb20gZXhlYygpLCBldGMuCi1tYWdpY19xdW90ZXNfcnVudGltZSA9 IE9mZgotCi07IFVzZSBTeWJhc2Utc3R5bGUgbWFnaWMgcXVvdGVzIChlc2NhcGUgJyB3aXRoICcn IGluc3RlYWQgb2YgXCcpLgotbWFnaWNfcXVvdGVzX3N5YmFzZSA9IE9mZgotCiA7IEF1dG9tYXRp Y2FsbHkgYWRkIGZpbGVzIGJlZm9yZSBvciBhZnRlciBhbnkgUEhQIGRvY3VtZW50LgogYXV0b19w cmVwZW5kX2ZpbGUgPQogYXV0b19hcHBlbmRfZmlsZSA9Cmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3 Y3ZzLmNnaS9waHAtc3JjL2V4dC9iejIvYnoyLmM/cjE9MS4xOCZyMj0xLjE5JmRpZmZfZm9ybWF0 PXUKSW5kZXg6IHBocC1zcmMvZXh0L2J6Mi9iejIuYwpkaWZmIC11IHBocC1zcmMvZXh0L2J6Mi9i ejIuYzoxLjE4IHBocC1zcmMvZXh0L2J6Mi9iejIuYzoxLjE5Ci0tLSBwaHAtc3JjL2V4dC9iejIv YnoyLmM6MS4xOAlTdW4gRmViIDE5IDA0OjI5OjQwIDIwMDYKKysrIHBocC1zcmMvZXh0L2J6Mi9i ejIuYwlXZWQgTWFyICA4IDAwOjQzOjI3IDIwMDYKQEAgLTE2LDcgKzE2LDcgQEAKICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCiAqLwogIAotLyogJElkOiBiejIuYyx2IDEuMTggMjAwNi8wMi8xOSAwNDoyOTo0 MCBhbmRpIEV4cCAkICovCisvKiAkSWQ6IGJ6Mi5jLHYgMS4xOSAyMDA2LzAzLzA4IDAwOjQzOjI3 IHBham95ZSBFeHAgJCAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgImNvbmZp Zy5oIgpAQCAtMjkyLDEyICsyOTIsNiBAQAogCQogCVpfU1RSVkFMX1AocmV0dXJuX3ZhbHVlKVta X1NUUkxFTl9QKHJldHVybl92YWx1ZSldID0gMDsKIAotCWlmIChQRyhtYWdpY19xdW90ZXNfcnVu dGltZSkpIHsKLQkJWl9TVFJWQUxfUChyZXR1cm5fdmFsdWUpID0gcGhwX2FkZHNsYXNoZXMoCVpf U1RSVkFMX1AocmV0dXJuX3ZhbHVlKSwKLQkJCQkJCQkJCQkJCQlaX1NUUkxFTl9QKHJldHVybl92 YWx1ZSksCi0JCQkJCQkJCQkJCQkJJlpfU1RSTEVOX1AocmV0dXJuX3ZhbHVlKSwgMSBUU1JNTFNf Q0MpOwotCX0KLQogCVpfVFlQRV9QKHJldHVybl92YWx1ZSkgPSBJU19TVFJJTkc7CiB9CiAvKiB9 fX0gKi8KaHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L2RiYS9kYmEu Yz9yMT0xLjExNiZyMj0xLjExNyZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9kYmEv ZGJhLmMKZGlmZiAtdSBwaHAtc3JjL2V4dC9kYmEvZGJhLmM6MS4xMTYgcGhwLXNyYy9leHQvZGJh L2RiYS5jOjEuMTE3Ci0tLSBwaHAtc3JjL2V4dC9kYmEvZGJhLmM6MS4xMTYJU3VuIEZlYiAxOSAw NDoyOTo0MCAyMDA2CisrKyBwaHAtc3JjL2V4dC9kYmEvZGJhLmMJV2VkIE1hciAgOCAwMDo0Mzoy NyAyMDA2CkBAIC0xNyw3ICsxNyw3IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAqLwogCi0vKiAk SWQ6IGRiYS5jLHYgMS4xMTYgMjAwNi8wMi8xOSAwNDoyOTo0MCBhbmRpIEV4cCAkICovCisvKiAk SWQ6IGRiYS5jLHYgMS4xMTcgMjAwNi8wMy8wOCAwMDo0MzoyNyBwYWpveWUgRXhwICQgKi8KIAog I2lmZGVmIEhBVkVfQ09ORklHX0gKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTQ3NCwyMiArNDc0 LDEwIEBACiAKIAlEQkFfV1JJVEVfQ0hFQ0s7CiAJCi0JaWYgKFBHKG1hZ2ljX3F1b3Rlc19ydW50 aW1lKSkgewotCQlsZW4gPSBaX1NUUkxFTl9QUCh2YWwpOwotCQl2ID0gZXN0cm5kdXAoWl9TVFJW QUxfUFAodmFsKSwgbGVuKTsKLQkJcGhwX3N0cmlwc2xhc2hlcyh2LCAmbGVuIFRTUk1MU19DQyk7 IAotCQlpZihpbmZvLT5obmQtPnVwZGF0ZShpbmZvLCBrZXlfc3RyLCBrZXlfbGVuLCB2LCBsZW4s IG1vZGUgVFNSTUxTX0NDKSA9PSBTVUNDRVNTKSB7Ci0JCQllZnJlZSh2KTsKLQkJCURCQV9JRF9E T05FOwotCQkJUkVUVVJOX1RSVUU7Ci0JCX0KLQkJZWZyZWUodik7Ci0JfSBlbHNlIHsKLQkJaWYo aW5mby0+aG5kLT51cGRhdGUoaW5mbywga2V5X3N0ciwga2V5X2xlbiwgVkFMTEVOKHZhbCksIG1v ZGUgVFNSTUxTX0NDKSA9PSBTVUNDRVNTKQotCQl7Ci0JCQlEQkFfSURfRE9ORTsKLQkJCVJFVFVS Tl9UUlVFOwotCQl9CisJaWYoaW5mby0+aG5kLT51cGRhdGUoaW5mbywga2V5X3N0ciwga2V5X2xl biwgVkFMTEVOKHZhbCksIG1vZGUgVFNSTUxTX0NDKSA9PSBTVUNDRVNTKQorCXsKKwkJREJBX0lE X0RPTkU7CisJCVJFVFVSTl9UUlVFOwogCX0KIAlEQkFfSURfRE9ORTsKIAlSRVRVUk5fRkFMU0U7 CkBAIC05MzcsOSArOTI1LDYgQEAKIAkJc2tpcCA9IDA7IAogCX0KIAlpZigodmFsID0gaW5mby0+ aG5kLT5mZXRjaChpbmZvLCBrZXlfc3RyLCBrZXlfbGVuLCBza2lwLCAmbGVuIFRTUk1MU19DQykp ICE9IE5VTEwpIHsKLQkJaWYgKHZhbCAmJiBQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsKLQkJ CXZhbCA9IHBocF9hZGRzbGFzaGVzKHZhbCwgbGVuLCAmbGVuLCAxIFRTUk1MU19DQyk7Ci0JCX0K IAkJREJBX0lEX0RPTkU7CiAJCVJFVFVSTl9TVFJJTkdMKHZhbCwgbGVuLCAwKTsKIAl9IApodHRw Oi8vY3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9leHQvZGJhL3Rlc3RzL2RiYTAwOC5w aHB0P3IxPTEuMyZyMj0xLjQmZGlmZl9mb3JtYXQ9dQpJbmRleDogcGhwLXNyYy9leHQvZGJhL3Rl c3RzL2RiYTAwOC5waHB0CmRpZmYgLXUgcGhwLXNyYy9leHQvZGJhL3Rlc3RzL2RiYTAwOC5waHB0 OjEuMyBwaHAtc3JjL2V4dC9kYmEvdGVzdHMvZGJhMDA4LnBocHQ6MS40Ci0tLSBwaHAtc3JjL2V4 dC9kYmEvdGVzdHMvZGJhMDA4LnBocHQ6MS4zCUZyaSBOb3YgMjIgMTU6NDc6NDggMjAwMgorKysg cGhwLXNyYy9leHQvZGJhL3Rlc3RzL2RiYTAwOC5waHB0CVdlZCBNYXIgIDggMDA6NDM6MjcgMjAw NgpAQCAtMiw2ICsyLDcgQEAKIERCQSBtYWdpY19xdW90ZXNfcnVudGltZSBUZXN0CiAtLVNLSVBJ Ri0tCiA8P3BocCAKKwlkaWUoJ3NraXAsIG1hZ2ljX3F1b3RlcyByZW1vdmVkJyk7CiAJcmVxdWly ZV9vbmNlKCdza2lwaWYuaW5jJyk7CiAJZGllKCJpbmZvICRITkQgaGFuZGxlciB1c2VkIik7CiA/ PgpodHRwOi8vY3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9leHQvZGJhL3Rlc3RzL2Ri YV9jZGJfbWFrZS5waHB0P3IxPTEuNCZyMj0xLjUmZGlmZl9mb3JtYXQ9dQpJbmRleDogcGhwLXNy Yy9leHQvZGJhL3Rlc3RzL2RiYV9jZGJfbWFrZS5waHB0CmRpZmYgLXUgcGhwLXNyYy9leHQvZGJh L3Rlc3RzL2RiYV9jZGJfbWFrZS5waHB0OjEuNCBwaHAtc3JjL2V4dC9kYmEvdGVzdHMvZGJhX2Nk Yl9tYWtlLnBocHQ6MS41Ci0tLSBwaHAtc3JjL2V4dC9kYmEvdGVzdHMvZGJhX2NkYl9tYWtlLnBo cHQ6MS40CVRodSBBdWcgMTIgMDA6Mzg6MDEgMjAwNAorKysgcGhwLXNyYy9leHQvZGJhL3Rlc3Rz L2RiYV9jZGJfbWFrZS5waHB0CVdlZCBNYXIgIDggMDA6NDM6MjcgMjAwNgpAQCAtMSw3ICsxLDUg QEAKIC0tVEVTVC0tCiBEQkEgQ0RCX01BS0UgaGFuZGxlciB0ZXN0Ci0tLUlOSS0tCi1tYWdpY19x dW90ZXNfcnVudGltZT0xCiAtLVNLSVBJRi0tCiA8P3BocCAKIAkkaGFuZGxlciA9ICdjZGJfbWFr ZSc7CkBAIC0zNSw0ICszMyw0IEBACiAtLUVYUEVDVC0tCiBkYXRhYmFzZSBoYW5kbGVyOiBjZGJf bWFrZQogc3RyaW5nKDMyKSAiMTJmYzViYTJiOWRjZmVmMjQ4MGU1MzI0ZWViNWYzZTUiCi1zdHJp bmcoMzIpICIxMmZjNWJhMmI5ZGNmZWYyNDgwZTUzMjRlZWI1ZjNlNSIKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCitzdHJpbmcoMzIpICIxMmZjNWJhMmI5ZGNmZWYyNDgwZTUzMjRlZWI1ZjNl NSIKaHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L2V4aWYvZXhpZi5j P3IxPTEuMTc4JnIyPTEuMTc5JmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvZXh0L2V4aWYv ZXhpZi5jCmRpZmYgLXUgcGhwLXNyYy9leHQvZXhpZi9leGlmLmM6MS4xNzggcGhwLXNyYy9leHQv ZXhpZi9leGlmLmM6MS4xNzkKLS0tIHBocC1zcmMvZXh0L2V4aWYvZXhpZi5jOjEuMTc4CVN1biBG ZWIgMTkgMDQ6Mjk6NDAgMjAwNgorKysgcGhwLXNyYy9leHQvZXhpZi9leGlmLmMJV2VkIE1hciAg OCAwMDo0MzoyNyAyMDA2CkBAIC0xNyw3ICsxNyw3IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAq LwogCi0vKiAkSWQ6IGV4aWYuYyx2IDEuMTc4IDIwMDYvMDIvMTkgMDQ6Mjk6NDAgYW5kaSBFeHAg JCAqLworLyogJElkOiBleGlmLmMsdiAxLjE3OSAyMDA2LzAzLzA4IDAwOjQzOjI3IHBham95ZSBF eHAgJCAqLwogCiAvKiAgVG9Eb3MKICAqCkBAIC0xMTUsNyArMTE1LDcgQEAKIH07CiAvKiB9fX0g Ki8KIAotI2RlZmluZSBFWElGX1ZFUlNJT04gIjEuNCAkSWQ6IGV4aWYuYyx2IDEuMTc4IDIwMDYv MDIvMTkgMDQ6Mjk6NDAgYW5kaSBFeHAgJCIKKyNkZWZpbmUgRVhJRl9WRVJTSU9OICIxLjQgJElk OiBleGlmLmMsdiAxLjE3OSAyMDA2LzAzLzA4IDAwOjQzOjI3IHBham95ZSBFeHAgJCIKIAogLyog e3t7IFBIUF9NSU5GT19GVU5DVElPTgogICovCkBAIC0xNTc4LDExICsxNTc4LDcgQEAKIAkJY2Fz ZSBUQUdfRk1UX1NUUklORzoKIAkJCWlmICh2YWx1ZSkgewogCQkJCWxlbmd0aCA9IHBocF9zdHJu bGVuKHZhbHVlLCBsZW5ndGgpOwotCQkJCWlmIChQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsK LQkJCQkJaW5mb192YWx1ZS0+cyA9IHBocF9hZGRzbGFzaGVzKHZhbHVlLCBsZW5ndGgsICZsZW5n dGgsIDAgVFNSTUxTX0NDKTsKLQkJCQl9IGVsc2UgewotCQkJCQlpbmZvX3ZhbHVlLT5zID0gZXN0 cm5kdXAodmFsdWUsIGxlbmd0aCk7Ci0JCQkJfQorCQkJCWluZm9fdmFsdWUtPnMgPSBlc3RybmR1 cCh2YWx1ZSwgbGVuZ3RoKTsKIAkJCQlpbmZvX2RhdGEtPmxlbmd0aCA9IGxlbmd0aDsKIAkJCX0g ZWxzZSB7CiAJCQkJaW5mb19kYXRhLT5sZW5ndGggPSAwOwpAQCAtMTYwNCwxMiArMTYwMCw3IEBA CiAJCQkJYnJlYWs7CiAJCWNhc2UgVEFHX0ZNVF9VTkRFRklORUQ6CiAJCQlpZiAodmFsdWUpIHsK LQkJCQkvKiBkbyBub3QgcmVjb21wdXRlIGxlbmd0aCBoZXJlICovCi0JCQkJaWYgKFBHKG1hZ2lj X3F1b3Rlc19ydW50aW1lKSkgewotCQkJCQlpbmZvX3ZhbHVlLT5zID0gcGhwX2FkZHNsYXNoZXMo dmFsdWUsIGxlbmd0aCwgJmxlbmd0aCwgMCBUU1JNTFNfQ0MpOwotCQkJCX0gZWxzZSB7Ci0JCQkJ CWluZm9fdmFsdWUtPnMgPSBlc3RybmR1cCh2YWx1ZSwgbGVuZ3RoKTsKLQkJCQl9CisJCQkJaW5m b192YWx1ZS0+cyA9IGVzdHJuZHVwKHZhbHVlLCBsZW5ndGgpOwogCQkJCWluZm9fZGF0YS0+bGVu Z3RoID0gbGVuZ3RoOwogCQkJfSBlbHNlIHsKIAkJCQlpbmZvX2RhdGEtPmxlbmd0aCA9IDA7CkBA IC0xNzMxLDExICsxNzIyLDcgQEAKIAkJaW5mb19kYXRhLT5mb3JtYXQgPSBUQUdfRk1UX1NUUklO RzsKIAkJaW5mb19kYXRhLT5sZW5ndGggPSAxOwogCQlpbmZvX2RhdGEtPm5hbWUgICA9IGVzdHJk dXAobmFtZSk7Ci0JCWlmIChQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsKLQkJCWluZm9fZGF0 YS0+dmFsdWUucyA9IHBocF9hZGRzbGFzaGVzKHZhbHVlLCBzdHJsZW4odmFsdWUpLCBOVUxMLCAw IFRTUk1MU19DQyk7Ci0JCX0gZWxzZSB7Ci0JCQlpbmZvX2RhdGEtPnZhbHVlLnMgPSBlc3RyZHVw KHZhbHVlKTsKLQkJfQorCQlpbmZvX2RhdGEtPnZhbHVlLnMgPSBlc3RyZHVwKHZhbHVlKTsKIAkJ aW1hZ2VfaW5mby0+c2VjdGlvbnNfZm91bmQgfD0gMTw8c2VjdGlvbl9pbmRleDsKIAkJaW1hZ2Vf aW5mby0+aW5mb19saXN0W3NlY3Rpb25faW5kZXhdLmNvdW50Kys7CiAJfQpAQCAtMTc3NiwxNyAr MTc2Myw5IEBACiAJCWluZm9fZGF0YS0+Zm9ybWF0ID0gVEFHX0ZNVF9VTkRFRklORUQ7CiAJCWlu Zm9fZGF0YS0+bGVuZ3RoID0gbGVuZ3RoOwogCQlpbmZvX2RhdGEtPm5hbWUgICA9IGVzdHJkdXAo bmFtZSk7Ci0JCWlmIChQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsKLSNpZmRlZiBFWElGX0RF QlVHCi0JCQlleGlmX2Vycm9yX2RvY3JlZihOVUxMIEVYSUZFUlJfQ0MsIGltYWdlX2luZm8sIEVf Tk9USUNFLCAiQWRkaW5nICVzIGFzIGJ1ZmZlciVzIiwgbmFtZSwgZXhpZl9jaGFyX2R1bXAodmFs dWUsIGxlbmd0aCwgMCkpOwotI2VuZGlmCi0JCQlpbmZvX2RhdGEtPnZhbHVlLnMgPSBwaHBfYWRk c2xhc2hlcyh2YWx1ZSwgbGVuZ3RoLCAmbGVuZ3RoLCAwIFRTUk1MU19DQyk7Ci0JCQlpbmZvX2Rh dGEtPmxlbmd0aCA9IGxlbmd0aDsKLQkJfSBlbHNlIHsKLQkJCWluZm9fZGF0YS0+dmFsdWUucyA9 IHNhZmVfZW1hbGxvYyhsZW5ndGgsIDEsIDEpOwotCQkJbWVtY3B5KGluZm9fZGF0YS0+dmFsdWUu cywgdmFsdWUsIGxlbmd0aCk7Ci0JCQlpbmZvX2RhdGEtPnZhbHVlLnNbbGVuZ3RoXSA9IDA7Ci0J CX0KKwkJaW5mb19kYXRhLT52YWx1ZS5zID0gc2FmZV9lbWFsbG9jKGxlbmd0aCwgMSwgMSk7CisJ CW1lbWNweShpbmZvX2RhdGEtPnZhbHVlLnMsIHZhbHVlLCBsZW5ndGgpOworCQlpbmZvX2RhdGEt PnZhbHVlLnNbbGVuZ3RoXSA9IDA7CiAJCWltYWdlX2luZm8tPnNlY3Rpb25zX2ZvdW5kIHw9IDE8 PHNlY3Rpb25faW5kZXg7CiAJCWltYWdlX2luZm8tPmluZm9fbGlzdFtzZWN0aW9uX2luZGV4XS5j b3VudCsrOwogCX0KaHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L2V4 aWYvdGVzdHMvYnVnMzQ3MDQucGhwdD9yMT0xLjMmcjI9MS40JmRpZmZfZm9ybWF0PXUKSW5kZXg6 IHBocC1zcmMvZXh0L2V4aWYvdGVzdHMvYnVnMzQ3MDQucGhwdApkaWZmIC11IHBocC1zcmMvZXh0 L2V4aWYvdGVzdHMvYnVnMzQ3MDQucGhwdDoxLjMgcGhwLXNyYy9leHQvZXhpZi90ZXN0cy9idWcz NDcwNC5waHB0OjEuNAotLS0gcGhwLXNyYy9leHQvZXhpZi90ZXN0cy9idWczNDcwNC5waHB0OjEu MwlUdWUgT2N0IDExIDE4OjEyOjAxIDIwMDUKKysrIHBocC1zcmMvZXh0L2V4aWYvdGVzdHMvYnVn MzQ3MDQucGhwdAlXZWQgTWFyICA4IDAwOjQzOjI3IDIwMDYKQEAgLTMsNyArMyw2IEBACiAtLVNL SVBJRi0tCiA8P3BocCBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoJ2V4aWYnKSkgcHJpbnQgJ3NraXAg ZXhpZiBleHRlbnNpb24gbm90IGF2YWlsYWJsZSc7Pz4KIC0tSU5JLS0KLW1hZ2ljX3F1b3Rlc19y dW50aW1lPTAKIG91dHB1dF9oYW5kbGVyPQogemxpYi5vdXRwdXRfY29tcHJlc3Npb249MCAKIC0t RklMRS0tCmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC9leGlmL3Rl c3RzL2V4aWYwMDIucGhwdD9yMT0xLjMmcjI9MS40JmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1z cmMvZXh0L2V4aWYvdGVzdHMvZXhpZjAwMi5waHB0CmRpZmYgLXUgcGhwLXNyYy9leHQvZXhpZi90 ZXN0cy9leGlmMDAyLnBocHQ6MS4zIHBocC1zcmMvZXh0L2V4aWYvdGVzdHMvZXhpZjAwMi5waHB0 OjEuNAotLS0gcGhwLXNyYy9leHQvZXhpZi90ZXN0cy9leGlmMDAyLnBocHQ6MS4zCU1vbiBEZWMg MTYgMTQ6NTQ6MzQgMjAwMgorKysgcGhwLXNyYy9leHQvZXhpZi90ZXN0cy9leGlmMDAyLnBocHQJ V2VkIE1hciAgOCAwMDo0MzoyNyAyMDA2CkBAIC0zLDcgKzMsNiBAQAogLS1TS0lQSUYtLQogPD9w aHAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdleGlmJykpIHByaW50ICdza2lwIGV4aWYgZXh0ZW5z aW9uIG5vdCBhdmFpbGFibGUnOz8+CiAtLUlOSS0tCi1tYWdpY19xdW90ZXNfcnVudGltZT0wCiBv dXRwdXRfaGFuZGxlcj0KIHpsaWIub3V0cHV0X2NvbXByZXNzaW9uPTAgCiAtLUZJTEUtLQpodHRw Oi8vY3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9leHQvZXhpZi90ZXN0cy9leGlmMDA2 LnBocHQ/cjE9MS41JnIyPTEuNiZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9leGlm L3Rlc3RzL2V4aWYwMDYucGhwdApkaWZmIC11IHBocC1zcmMvZXh0L2V4aWYvdGVzdHMvZXhpZjAw Ni5waHB0OjEuNSBwaHAtc3JjL2V4dC9leGlmL3Rlc3RzL2V4aWYwMDYucGhwdDoxLjYKLS0tIHBo cC1zcmMvZXh0L2V4aWYvdGVzdHMvZXhpZjAwNi5waHB0OjEuNQlNb24gRGVjIDE2IDE1OjE5OjU3 IDIwMDIKKysrIHBocC1zcmMvZXh0L2V4aWYvdGVzdHMvZXhpZjAwNi5waHB0CVdlZCBNYXIgIDgg MDA6NDM6MjcgMjAwNgpAQCAtMiw4ICsyLDcgQEAKIENoZWNrIGZvciBleGlmX3JlYWRfZGF0YSwg bWFnaWNfcXVvdGVzX3J1bnRpbWUKIC0tU0tJUElGLS0KIDw/cGhwIAotCWlmICghZXh0ZW5zaW9u X2xvYWRlZCgnZXhpZicpKSBkaWUoJ3NraXAgZXhpZiBleHRlbnNpb24gbm90IGF2YWlsYWJsZScp OwotCWlmICh2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICI0LjQuMC1kZXYiLCAiPCIpKSBk aWUoJ3NraXAgUEhQIDQuNCByZXF1aXJlZCcpOworCWRpZSgnc2tpcCBtYWdpY19xdW90ZXMgcmVt b3ZlZCcpOwogPz4KIC0tSU5JLS0KIG91dHB1dF9oYW5kbGVyPQpodHRwOi8vY3ZzLnBocC5uZXQv dmlld2N2cy5jZ2kvcGhwLXNyYy9leHQvaWNvbnYvdGVzdHMvdHJhbnNsaXQtdXRmOC5waHB0P3Ix PTEuOSZyMj0xLjEwJmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvZXh0L2ljb252L3Rlc3Rz L3RyYW5zbGl0LXV0ZjgucGhwdApkaWZmIC11IHBocC1zcmMvZXh0L2ljb252L3Rlc3RzL3RyYW5z bGl0LXV0ZjgucGhwdDoxLjkgcGhwLXNyYy9leHQvaWNvbnYvdGVzdHMvdHJhbnNsaXQtdXRmOC5w aHB0OjEuMTAKLS0tIHBocC1zcmMvZXh0L2ljb252L3Rlc3RzL3RyYW5zbGl0LXV0ZjgucGhwdDox LjkJVHVlIE9jdCAyNSAxNDoyMzoyMiAyMDA1CisrKyBwaHAtc3JjL2V4dC9pY29udi90ZXN0cy90 cmFuc2xpdC11dGY4LnBocHQJV2VkIE1hciAgOCAwMDo0MzoyOCAyMDA2CkBAIC02LDcgKzYsNiBA QAogKCBJQ09OVl9JTVBMICE9ICJsaWJpY29udiIgKSBhbmQgZGllKCJza2lwIElDT05WX0lNUEwg IT0gXCJsaWJpY29udlwiIik7IAogPz4KIC0tSU5JLS0KLW1hZ2ljX3F1b3Rlc19ydW50aW1lPTAK IGVycm9yX3JlcG9ydGluZz0yMDQ3CiAtLUZJTEUtLQogPD9waHAgLy8gdmltNjAwOiBzeW49cGhw Cmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC9pbnRlcmJhc2UvaWJh c2VfcXVlcnkuYz9yMT0xLjI0JnIyPTEuMjUmZGlmZl9mb3JtYXQ9dQpJbmRleDogcGhwLXNyYy9l eHQvaW50ZXJiYXNlL2liYXNlX3F1ZXJ5LmMKZGlmZiAtdSBwaHAtc3JjL2V4dC9pbnRlcmJhc2Uv aWJhc2VfcXVlcnkuYzoxLjI0IHBocC1zcmMvZXh0L2ludGVyYmFzZS9pYmFzZV9xdWVyeS5jOjEu MjUKLS0tIHBocC1zcmMvZXh0L2ludGVyYmFzZS9pYmFzZV9xdWVyeS5jOjEuMjQJU3VuIEphbiAg MSAxMzowOTo1MCAyMDA2CisrKyBwaHAtc3JjL2V4dC9pbnRlcmJhc2UvaWJhc2VfcXVlcnkuYwlX ZWQgTWFyICA4IDAwOjQzOjI4IDIwMDYKQEAgLTE2LDcgKzE2LDcgQEAKICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwogICovCiAKLS8qICRJZDogaWJhc2VfcXVlcnkuYyx2IDEuMjQgMjAwNi8wMS8wMSAxMzow OTo1MCBzbmlwZXIgRXhwICQgKi8KKy8qICRJZDogaWJhc2VfcXVlcnkuYyx2IDEuMjUgMjAwNi8w My8wOCAwMDo0MzoyOCBwYWpveWUgRXhwICQgKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKICNp bmNsdWRlICJjb25maWcuaCIKQEAgLTEzMDIsMTIgKzEzMDIsNyBAQAogCQkJZGF0YSA9ICgoSUJW QVJZICopIGRhdGEpLT52YXJ5X3N0cmluZzsKIAkJCS8qIG5vIGJyZWFrICovCiAJCWNhc2UgU1FM X1RFWFQ6Ci0JCQlpZiAoUEcobWFnaWNfcXVvdGVzX3J1bnRpbWUpKSB7Ci0JCQkJWl9TVFJWQUxf UCh2YWwpID0gcGhwX2FkZHNsYXNoZXMoZGF0YSwgbGVuLCAmWl9TVFJMRU5fUCh2YWwpLCAwIFRT Uk1MU19DQyk7Ci0JCQkJWl9UWVBFX1AodmFsKSA9IElTX1NUUklORzsKLQkJCX0gZWxzZSB7Ci0J CQkJWlZBTF9TVFJJTkdMKHZhbCwoY2hhciAqKSBkYXRhLGxlbiwxKTsKLQkJCX0KKwkJCVpWQUxf U1RSSU5HTCh2YWwsKGNoYXIgKikgZGF0YSxsZW4sMSk7CiAJCQlicmVhazsKIAkJY2FzZSBTUUxf U0hPUlQ6CiAJCQluID0gKihzaG9ydCAqKSBkYXRhOwpodHRwOi8vY3ZzLnBocC5uZXQvdmlld2N2 cy5jZ2kvcGhwLXNyYy9leHQvbWhhc2gvdGVzdHMvMDAxLnBocHQ/cjE9MS4zJnIyPTEuNCZkaWZm X2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9taGFzaC90ZXN0cy8wMDEucGhwdApkaWZmIC11 IHBocC1zcmMvZXh0L21oYXNoL3Rlc3RzLzAwMS5waHB0OjEuMyBwaHAtc3JjL2V4dC9taGFzaC90 ZXN0cy8wMDEucGhwdDoxLjQKLS0tIHBocC1zcmMvZXh0L21oYXNoL3Rlc3RzLzAwMS5waHB0OjEu MwlUaHUgTm92IDI4IDE0OjEzOjQ0IDIwMDIKKysrIHBocC1zcmMvZXh0L21oYXNoL3Rlc3RzLzAw MS5waHB0CVdlZCBNYXIgIDggMDA6NDM6MjggMjAwNgpAQCAtMSw3ICsxLDUgQEAKIC0tVEVTVC0t CiBtaGFzaCgpIHRlc3QKLS0tSU5JLS0KLW1hZ2ljX3F1b3Rlc19ydW50aW1lPTAKIC0tU0tJUElG LS0KIDw/cGhwCiAJaW5jbHVkZSAic2tpcC5pbmMiOwpodHRwOi8vY3ZzLnBocC5uZXQvdmlld2N2 cy5jZ2kvcGhwLXNyYy9leHQvbXNxbC9waHBfbXNxbC5jP3IxPTEuNjQmcjI9MS42NSZkaWZmX2Zv cm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9tc3FsL3BocF9tc3FsLmMKZGlmZiAtdSBwaHAtc3Jj L2V4dC9tc3FsL3BocF9tc3FsLmM6MS42NCBwaHAtc3JjL2V4dC9tc3FsL3BocF9tc3FsLmM6MS42 NQotLS0gcGhwLXNyYy9leHQvbXNxbC9waHBfbXNxbC5jOjEuNjQJU3VuIEphbiAgMSAxMzowOTo1 MiAyMDA2CisrKyBwaHAtc3JjL2V4dC9tc3FsL3BocF9tc3FsLmMJV2VkIE1hciAgOCAwMDo0Mzoy OCAyMDA2CkBAIC0xNiw3ICsxNiw3IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAqLwogIAotLyog JElkOiBwaHBfbXNxbC5jLHYgMS42NCAyMDA2LzAxLzAxIDEzOjA5OjUyIHNuaXBlciBFeHAgJCAq LworLyogJElkOiBwaHBfbXNxbC5jLHYgMS42NSAyMDA2LzAzLzA4IDAwOjQzOjI4IHBham95ZSBF eHAgJCAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAt ODQ0LDEyICs4NDQsOCBAQAogCX0KIAkKIAlpZiAoc3FsX3Jvd1tmaWVsZF9vZmZzZXRdKSB7Ci0J CWlmIChQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsKLQkJCVpfU1RSVkFMX1AocmV0dXJuX3Zh bHVlKSA9IHBocF9hZGRzbGFzaGVzKHNxbF9yb3dbZmllbGRfb2Zmc2V0XSwwLCZaX1NUUkxFTl9Q KHJldHVybl92YWx1ZSksMCBUU1JNTFNfQ0MpOwotCQl9IGVsc2UgewkKLQkJCVpfU1RSTEVOX1Ao cmV0dXJuX3ZhbHVlKSA9IChzcWxfcm93W2ZpZWxkX29mZnNldF0/c3RybGVuKHNxbF9yb3dbZmll bGRfb2Zmc2V0XSk6MCk7Ci0JCQlaX1NUUlZBTF9QKHJldHVybl92YWx1ZSkgPSAoY2hhciAqKSBz YWZlX2VzdHJuZHVwKHNxbF9yb3dbZmllbGRfb2Zmc2V0XSxaX1NUUkxFTl9QKHJldHVybl92YWx1 ZSkpOwotCQl9CisJCVpfU1RSTEVOX1AocmV0dXJuX3ZhbHVlKSA9IChzcWxfcm93W2ZpZWxkX29m ZnNldF0/c3RybGVuKHNxbF9yb3dbZmllbGRfb2Zmc2V0XSk6MCk7CisJCVpfU1RSVkFMX1AocmV0 dXJuX3ZhbHVlKSA9IChjaGFyICopIHNhZmVfZXN0cm5kdXAoc3FsX3Jvd1tmaWVsZF9vZmZzZXRd LFpfU1RSTEVOX1AocmV0dXJuX3ZhbHVlKSk7CiAJCVpfVFlQRV9QKHJldHVybl92YWx1ZSkgPSBJ U19TVFJJTkc7CiAJfSBlbHNlIHsKIAkJWlZBTF9GQUxTRShyZXR1cm5fdmFsdWUpOwpAQCAtOTQw LDE0ICs5MzYsOSBAQAogCQkJaW50IGRhdGFfbGVuOwogCQkJaW50IHNob3VsZF9jb3B5OwogCi0J CQlpZiAoUEcobWFnaWNfcXVvdGVzX3J1bnRpbWUpKSB7Ci0JCQkJZGF0YSA9IHBocF9hZGRzbGFz aGVzKG1zcWxfcm93W2ldLCAwLCAmZGF0YV9sZW4sIDAgVFNSTUxTX0NDKTsKLQkJCQlzaG91bGRf Y29weSA9IDA7Ci0JCQl9IGVsc2UgewotCQkJCWRhdGEgPSBtc3FsX3Jvd1tpXTsKLQkJCQlkYXRh X2xlbiA9IHN0cmxlbihkYXRhKTsKLQkJCQlzaG91bGRfY29weSA9IDE7Ci0JCQl9CisJCQlkYXRh ID0gbXNxbF9yb3dbaV07CisJCQlkYXRhX2xlbiA9IHN0cmxlbihkYXRhKTsKKwkJCXNob3VsZF9j b3B5ID0gMTsKIAkJCQogCQkJaWYgKHJlc3VsdF90eXBlICYgTVNRTF9OVU0pIHsKIAkJCQlhZGRf aW5kZXhfc3RyaW5nbChyZXR1cm5fdmFsdWUsIGksIGRhdGEsIGRhdGFfbGVuLCBzaG91bGRfY29w eSk7Cmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC9tc3NxbC9waHBf bXNzcWwuYz9yMT0xLjE2MyZyMj0xLjE2NCZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4 dC9tc3NxbC9waHBfbXNzcWwuYwpkaWZmIC11IHBocC1zcmMvZXh0L21zc3FsL3BocF9tc3NxbC5j OjEuMTYzIHBocC1zcmMvZXh0L21zc3FsL3BocF9tc3NxbC5jOjEuMTY0Ci0tLSBwaHAtc3JjL2V4 dC9tc3NxbC9waHBfbXNzcWwuYzoxLjE2MwlTdW4gSmFuICAxIDEzOjA5OjUyIDIwMDYKKysrIHBo cC1zcmMvZXh0L21zc3FsL3BocF9tc3NxbC5jCVdlZCBNYXIgIDggMDA6NDM6MjggMjAwNgpAQCAt MTYsNyArMTYsNyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgKi8KIAotLyogJElkOiBwaHBfbXNz cWwuYyx2IDEuMTYzIDIwMDYvMDEvMDEgMTM6MDk6NTIgc25pcGVyIEV4cCAkICovCisvKiAkSWQ6 IHBocF9tc3NxbC5jLHYgMS4xNjQgMjAwNi8wMy8wOCAwMDo0MzoyOCBwYWpveWUgRXhwICQgKi8K IAogI2lmZGVmIENPTVBJTEVfRExfTVNTUUwKICNkZWZpbmUgSEFWRV9NU1NRTCAxCkBAIC0xNDE3 LDE2ICsxNDE3LDkgQEAKIAkJCWludCBzaG91bGRfY29weTsKIAogCQkJaWYgKFpfVFlQRShyZXN1 bHQtPmRhdGFbcmVzdWx0LT5jdXJfcm93XVtpXSkgPT0gSVNfU1RSSU5HKSB7Ci0JCQkJaWYgKFBH KG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotCQkJCQlkYXRhID0gcGhwX2FkZHNsYXNoZXMoWl9T VFJWQUwocmVzdWx0LT5kYXRhW3Jlc3VsdC0+Y3VyX3Jvd11baV0pLCBaX1NUUkxFTihyZXN1bHQt PmRhdGFbcmVzdWx0LT5jdXJfcm93XVtpXSksICZkYXRhX2xlbiwgMCBUU1JNTFNfQ0MpOwotCQkJ CQlzaG91bGRfY29weSA9IDA7Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCWRhdGEgPSBa X1NUUlZBTChyZXN1bHQtPmRhdGFbcmVzdWx0LT5jdXJfcm93XVtpXSk7Ci0JCQkJCWRhdGFfbGVu ID0gWl9TVFJMRU4ocmVzdWx0LT5kYXRhW3Jlc3VsdC0+Y3VyX3Jvd11baV0pOwotCQkJCQlzaG91 bGRfY29weSA9IDE7Ci0JCQkJfQorCQkJCWRhdGEgPSBaX1NUUlZBTChyZXN1bHQtPmRhdGFbcmVz dWx0LT5jdXJfcm93XVtpXSk7CisJCQkJZGF0YV9sZW4gPSBaX1NUUkxFTihyZXN1bHQtPmRhdGFb cmVzdWx0LT5jdXJfcm93XVtpXSk7CisJCQkJc2hvdWxkX2NvcHkgPSAxOwogCiAJCQkJaWYgKHJl c3VsdF90eXBlICYgTVNTUUxfTlVNKSB7CiAJCQkJCWFkZF9pbmRleF9zdHJpbmdsKHJldHVybl92 YWx1ZSwgaSwgZGF0YSwgZGF0YV9sZW4sIHNob3VsZF9jb3B5KTsKaHR0cDovL2N2cy5waHAubmV0 L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L215c3FsL3BocF9teXNxbC5jP3IxPTEuMjIwJnIyPTEu MjIxJmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvZXh0L215c3FsL3BocF9teXNxbC5jCmRp ZmYgLXUgcGhwLXNyYy9leHQvbXlzcWwvcGhwX215c3FsLmM6MS4yMjAgcGhwLXNyYy9leHQvbXlz cWwvcGhwX215c3FsLmM6MS4yMjEKLS0tIHBocC1zcmMvZXh0L215c3FsL3BocF9teXNxbC5jOjEu MjIwCVR1ZSBGZWIgMjEgMjA6MTI6NDIgMjAwNgorKysgcGhwLXNyYy9leHQvbXlzcWwvcGhwX215 c3FsLmMJV2VkIE1hciAgOCAwMDo0MzoyOCAyMDA2CkBAIC0xOCw3ICsxOCw3IEBACiAgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKICovCiAgCi0vKiAkSWQ6IHBocF9teXNxbC5jLHYgMS4yMjAgMjAwNi8wMi8y MSAyMDoxMjo0MiBkbWl0cnkgRXhwICQgKi8KKy8qICRJZDogcGhwX215c3FsLmMsdiAxLjIyMSAy MDA2LzAzLzA4IDAwOjQzOjI4IHBham95ZSBFeHAgJCAqLwogCiAvKiBUT0RPOgogICoKQEAgLTE4 NDEsMTMgKzE4NDEsOCBAQAogCiAJaWYgKHNxbF9yb3dbZmllbGRfb2Zmc2V0XSkgewogCQlaX1RZ UEVfUChyZXR1cm5fdmFsdWUpID0gSVNfU1RSSU5HOwotCi0JCWlmIChQRyhtYWdpY19xdW90ZXNf cnVudGltZSkpIHsKLQkJCVpfU1RSVkFMX1AocmV0dXJuX3ZhbHVlKSA9IHBocF9hZGRzbGFzaGVz KHNxbF9yb3dbZmllbGRfb2Zmc2V0XSwgc3FsX3Jvd19sZW5ndGhzW2ZpZWxkX29mZnNldF0sJlpf U1RSTEVOX1AocmV0dXJuX3ZhbHVlKSwgMCBUU1JNTFNfQ0MpOwotCQl9IGVsc2UgewkKLQkJCVpf U1RSTEVOX1AocmV0dXJuX3ZhbHVlKSA9IHNxbF9yb3dfbGVuZ3Roc1tmaWVsZF9vZmZzZXRdOwot CQkJWl9TVFJWQUxfUChyZXR1cm5fdmFsdWUpID0gKGNoYXIgKikgc2FmZV9lc3RybmR1cChzcWxf cm93W2ZpZWxkX29mZnNldF0sIFpfU1RSTEVOX1AocmV0dXJuX3ZhbHVlKSk7Ci0JCX0KKwkJWl9T VFJMRU5fUChyZXR1cm5fdmFsdWUpID0gc3FsX3Jvd19sZW5ndGhzW2ZpZWxkX29mZnNldF07CisJ CVpfU1RSVkFMX1AocmV0dXJuX3ZhbHVlKSA9IChjaGFyICopIHNhZmVfZXN0cm5kdXAoc3FsX3Jv d1tmaWVsZF9vZmZzZXRdLCBaX1NUUkxFTl9QKHJldHVybl92YWx1ZSkpOwogCX0gZWxzZSB7CiAJ CVpfVFlQRV9QKHJldHVybl92YWx1ZSkgPSBJU19OVUxMOwogCX0KQEAgLTE5NzAsMTIgKzE5NjUs NyBAQAogCiAJCQlNQUtFX1NURF9aVkFMKGRhdGEpOwogCi0JCQlpZiAoUEcobWFnaWNfcXVvdGVz X3J1bnRpbWUpKSB7Ci0JCQkJWl9UWVBFX1AoZGF0YSkgPSBJU19TVFJJTkc7Ci0JCQkJWl9TVFJW QUxfUChkYXRhKSA9IHBocF9hZGRzbGFzaGVzKG15c3FsX3Jvd1tpXSwgbXlzcWxfcm93X2xlbmd0 aHNbaV0sICZaX1NUUkxFTl9QKGRhdGEpLCAwIFRTUk1MU19DQyk7Ci0JCQl9IGVsc2UgewotCQkJ CVpWQUxfU1RSSU5HTChkYXRhLCBteXNxbF9yb3dbaV0sIG15c3FsX3Jvd19sZW5ndGhzW2ldLCAx KTsKLQkJCX0KKwkJCVpWQUxfU1RSSU5HTChkYXRhLCBteXNxbF9yb3dbaV0sIG15c3FsX3Jvd19s ZW5ndGhzW2ldLCAxKTsKIAogCQkJaWYgKHJlc3VsdF90eXBlICYgTVlTUUxfTlVNKSB7CiAJCQkJ YWRkX2luZGV4X3p2YWwocmV0dXJuX3ZhbHVlLCBpLCBkYXRhKTsKaHR0cDovL2N2cy5waHAubmV0 L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L215c3FsaS9teXNxbGkuYz9yMT0xLjgyJnIyPTEuODMm ZGlmZl9mb3JtYXQ9dQpJbmRleDogcGhwLXNyYy9leHQvbXlzcWxpL215c3FsaS5jCmRpZmYgLXUg cGhwLXNyYy9leHQvbXlzcWxpL215c3FsaS5jOjEuODIgcGhwLXNyYy9leHQvbXlzcWxpL215c3Fs aS5jOjEuODMKLS0tIHBocC1zcmMvZXh0L215c3FsaS9teXNxbGkuYzoxLjgyCVN1biBNYXIgIDUg MTc6Mjc6NDUgMjAwNgorKysgcGhwLXNyYy9leHQvbXlzcWxpL215c3FsaS5jCVdlZCBNYXIgIDgg MDA6NDM6MjggMjAwNgpAQCAtMTUsNyArMTUsNyBAQAogICB8IEF1dGhvcjogR2VvcmcgUmljaHRl ciA8Z2VvcmdAcGhwLm5ldD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCiAKLSAgJElkOiBteXNxbGkuYyx2IDEuODIgMjAwNi8wMy8wNSAxNzoyNzo0 NSBoZWxseSBFeHAgJCAKKyAgJElkOiBteXNxbGkuYyx2IDEuODMgMjAwNi8wMy8wOCAwMDo0Mzoy OCBwYWpveWUgRXhwICQgCiAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSApAQCAtODE1LDEzICs4 MTUsNyBAQAogCiAJCQlNQUtFX1NURF9aVkFMKHJlcyk7CiAKLQkJCS8qIGNoZWNrIGlmIHdlIG5l ZWQgbWFnaWMgcXVvdGVzICovCi0JCQlpZiAoUEcobWFnaWNfcXVvdGVzX3J1bnRpbWUpKSB7Ci0J CQkJWl9UWVBFX1AocmVzKSA9IElTX1NUUklORzsKLQkJCQlaX1NUUlZBTF9QKHJlcykgPSBwaHBf YWRkc2xhc2hlcyhyb3dbaV0sIGZpZWxkX2xlbltpXSwgJlpfU1RSTEVOX1AocmVzKSwgMCBUU1JN TFNfQ0MpOwotCQkJfSBlbHNlIHsKLQkJCQlaVkFMX1NUUklOR0wocmVzLCByb3dbaV0sIGZpZWxk X2xlbltpXSwgMSk7CQotCQkJfQorCQkJWlZBTF9TVFJJTkdMKHJlcywgcm93W2ldLCBmaWVsZF9s ZW5baV0sIDEpOwkKIAogCQkJaWYgKGZldGNodHlwZSAmIE1ZU1FMSV9OVU0pIHsKIAkJCQlhZGRf aW5kZXhfenZhbChyZXR1cm5fdmFsdWUsIGksIHJlcyk7Cmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3 Y3ZzLmNnaS9waHAtc3JjL2V4dC9wY3JlL2NvbmZpZzAubTQ/cjE9MS4zOSZyMj0xLjQwJmRpZmZf Zm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvZXh0L3BjcmUvY29uZmlnMC5tNApkaWZmIC11IHBocC1z cmMvZXh0L3BjcmUvY29uZmlnMC5tNDoxLjM5IHBocC1zcmMvZXh0L3BjcmUvY29uZmlnMC5tNDox LjQwCi0tLSBwaHAtc3JjL2V4dC9wY3JlL2NvbmZpZzAubTQ6MS4zOQlNb24gTWFyICA2IDIxOjM0 OjA2IDIwMDYKKysrIHBocC1zcmMvZXh0L3BjcmUvY29uZmlnMC5tNAlXZWQgTWFyICA4IDAwOjQz OjI4IDIwMDYKQEAgLTEsNSArMSw1IEBACiBkbmwKLWRubCAkSWQ6IGNvbmZpZzAubTQsdiAxLjM5 IDIwMDYvMDMvMDYgMjE6MzQ6MDYgYW5kcmVpIEV4cCAkCitkbmwgJElkOiBjb25maWcwLm00LHYg MS40MCAyMDA2LzAzLzA4IDAwOjQzOjI4IHBham95ZSBFeHAgJAogZG5sCiAKIGRubCBCeSBkZWZh dWx0IHdlJ2xsIGNvbXBpbGUgYW5kIGxpbmsgYWdhaW5zdCB0aGUgYnVuZGxlZCBQQ1JFIGxpYnJh cnkKQEAgLTE2LDYgKzE2LDcgQEAKICAgICBQSFBfTkVXX0VYVEVOU0lPTihwY3JlLCBwY3JlbGli L3BjcmVfY2hhcnRhYmxlcy5jIHBjcmVsaWIvcGNyZV91Y3Bfc2VhcmNoZnVuY3MuYyBwY3JlbGli L3BjcmVfY29tcGlsZS5jIHBjcmVsaWIvcGNyZV9jb25maWcuYyBwY3JlbGliL3BjcmVfZGZhX2V4 ZWMuYyBwY3JlbGliL3BjcmVfZXhlYy5jIHBjcmVsaWIvcGNyZV9mdWxsaW5mby5jIHBjcmVsaWIv cGNyZV9nZXQuYyBwY3JlbGliL3BjcmVfZ2xvYmFscy5jIHBjcmVsaWIvcGNyZV9pbmZvLmMgcGNy ZWxpYi9wY3JlX21ha2V0YWJsZXMuYyBwY3JlbGliL3BjcmVfb3JkMnV0ZjguYyBwY3JlbGliL3Bj cmVfcmVmY291bnQuYyBwY3JlbGliL3BjcmVfc3R1ZHkuYyBwY3JlbGliL3BjcmVfdGFibGVzLmMg cGNyZWxpYi9wY3JlX3RyeV9mbGlwcGVkLmMgcGNyZWxpYi9wY3JlX3ZhbGlkX3V0ZjguYyBwY3Jl bGliL3BjcmVfdmVyc2lvbi5jIHBjcmVsaWIvcGNyZV94Y2xhc3MuYyBwaHBfcGNyZS5jLCAkZXh0 X3NoYXJlZCwsLURFWFBPUlQ9IC1ETkVXTElORT0xMCAtRFNVUFBPUlRfVVRGOCAtRFNVUFBPUlRf VUNQIC1ETElOS19TSVpFPTIgLURQT1NJWF9NQUxMT0NfVEhSRVNIT0xEPTEwIC1ETUFUQ0hfTElN SVQ9MTAwMDAwMDAgLURNQVRDSF9MSU1JVF9SRUNVUlNJT049MTAwMDAwMDAgLUlAZXh0X3NyY2Rp ckAvcGNyZWxpYikKICAgICBQSFBfQUREX0JVSUxEX0RJUigkZXh0X2J1aWxkZGlyL3BjcmVsaWIp CiAgICAgUEhQX0lOU1RBTExfSEVBREVSUyhbZXh0L3BjcmVdLCBbcGhwX3BjcmUuaCBwY3JlbGli L10pCisJUEhQX0FERF9JTkNMVURFKHBjcmVsaWIpCiAgICAgQUNfREVGSU5FKEhBVkVfQlVORExF RF9QQ1JFLCAxLCBbIF0pCiAgIGVsc2UKICAgICBmb3IgaSBpbiAkUEhQX1BDUkVfUkVHRVggJFBI UF9QQ1JFX1JFR0VYL2luY2x1ZGUgJFBIUF9QQ1JFX1JFR0VYL2luY2x1ZGUvcGNyZTsgZG8KaHR0 cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L3BjcmUvcGNyZWxpYi9wY3Jl X2ludGVybmFsLmg/cjE9MS4yJnIyPTEuMyZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4 dC9wY3JlL3BjcmVsaWIvcGNyZV9pbnRlcm5hbC5oCmRpZmYgLXUgcGhwLXNyYy9leHQvcGNyZS9w Y3JlbGliL3BjcmVfaW50ZXJuYWwuaDoxLjIgcGhwLXNyYy9leHQvcGNyZS9wY3JlbGliL3BjcmVf aW50ZXJuYWwuaDoxLjMKLS0tIHBocC1zcmMvZXh0L3BjcmUvcGNyZWxpYi9wY3JlX2ludGVybmFs Lmg6MS4yCU1vbiBNYXIgIDYgMjE6MzQ6MDcgMjAwNgorKysgcGhwLXNyYy9leHQvcGNyZS9wY3Jl bGliL3BjcmVfaW50ZXJuYWwuaAlXZWQgTWFyICA4IDAwOjQzOjI4IDIwMDYKQEAgLTcwLDcgKzcw LDE1IEBACiAjZWxzZQogIyBpbmNsdWRlIDxwaHBfY29uZmlnLmg+CiAjZW5kaWYKKy8qCisjaWZu ZGVmIE1BVENIX0xJTUlUCisjZGVmaW5lIE1BVENIX0xJTUlUIDEwMDAwMDAwCisjZW5kaWYKIAor I2lmbmRlZiBNQVRDSF9MSU1JVF9SRUNVUlNJT04KKyNkZWZpbmUgTUFUQ0hfTElNSVRfUkVDVVJT SU9OIE1BVENIX0xJTUlUCisjZW5kaWYKKyovCiAvKiBTdGFuZGFyZCBDIGhlYWRlcnMgcGx1cyB0 aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGRlZmluaXRpb24uIFRoZSBvbmx5IHRpbWUKIHNldGptcCBh bmQgc3RkYXJnIGFyZSB1c2VkIGlzIHdoZW4gTk9fUkVDVVJTRSBpcyBzZXQuICovCiAKaHR0cDov L2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L3BjcmUvdGVzdHMvYnVnMzMyMDAu cGhwdD9yMT0xLjEmcjI9MS4yJmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvZXh0L3BjcmUv dGVzdHMvYnVnMzMyMDAucGhwdApkaWZmIC11IHBocC1zcmMvZXh0L3BjcmUvdGVzdHMvYnVnMzMy MDAucGhwdDoxLjEgcGhwLXNyYy9leHQvcGNyZS90ZXN0cy9idWczMzIwMC5waHB0OjEuMgotLS0g cGhwLXNyYy9leHQvcGNyZS90ZXN0cy9idWczMzIwMC5waHB0OjEuMQlUdWUgTWF5IDMxIDEyOjU0 OjU2IDIwMDUKKysrIHBocC1zcmMvZXh0L3BjcmUvdGVzdHMvYnVnMzMyMDAucGhwdAlXZWQgTWFy ICA4IDAwOjQzOjI4IDIwMDYKQEAgLTEsNSArMSw3IEBACiAtLVRFU1QtLQogQnVnICMzMzIwMCAo bWFnaWNfcXVvdGVzX3N5YmFzZSA9IE9uIG1ha2VzICdlJyBtb2RpZmllciBtaXNiZWhhdmUpCist LVNLSVBJRi0tCitkaWUoJ3NraXAgbWFnaWNfcXVvdGVzIHJlbW92ZWQnKTsKIC0tSU5JLS0KIG1h Z2ljX3F1b3Rlc19zeWJhc2U9MQogLS1GSUxFLS0KaHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMu Y2dpL3BocC1zcmMvZXh0L3Bkby90ZXN0cy9wZG9fdGVzdC5pbmM/cjE9MS4xMyZyMj0xLjE0JmRp ZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvZXh0L3Bkby90ZXN0cy9wZG9fdGVzdC5pbmMKZGlm ZiAtdSBwaHAtc3JjL2V4dC9wZG8vdGVzdHMvcGRvX3Rlc3QuaW5jOjEuMTMgcGhwLXNyYy9leHQv cGRvL3Rlc3RzL3Bkb190ZXN0LmluYzoxLjE0Ci0tLSBwaHAtc3JjL2V4dC9wZG8vdGVzdHMvcGRv X3Rlc3QuaW5jOjEuMTMJU3VuIERlYyAxMSAxNToyODo1MiAyMDA1CisrKyBwaHAtc3JjL2V4dC9w ZG8vdGVzdHMvcGRvX3Rlc3QuaW5jCVdlZCBNYXIgIDggMDA6NDM6MjggMjAwNgpAQCAtMTEsNyAr MTEsNiBAQAogCQkJJGFwcGVuZCA9IHRydWU7CiAJCX0KIAl9Ci0JaWYgKGluaV9nZXQoJ21hZ2lj X3F1b3Rlc19ydW50aW1lJykpICRjb21tb24gPSBzdHJpcHNsYXNoZXMoJGNvbW1vbik7CiAJJGNv bmYgPSBldmFsKCRjb21tb24pOwogCWZvcmVhY2goJGNvbmZbJ0VOViddIGFzICRuPT4kdikgcHV0 ZW52KCIkbj0kdiIpOwogfQpodHRwOi8vY3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9l eHQvcGdzcWwvcGdzcWwuYz9yMT0xLjM0MyZyMj0xLjM0NCZkaWZmX2Zvcm1hdD11CkluZGV4OiBw aHAtc3JjL2V4dC9wZ3NxbC9wZ3NxbC5jCmRpZmYgLXUgcGhwLXNyYy9leHQvcGdzcWwvcGdzcWwu YzoxLjM0MyBwaHAtc3JjL2V4dC9wZ3NxbC9wZ3NxbC5jOjEuMzQ0Ci0tLSBwaHAtc3JjL2V4dC9w Z3NxbC9wZ3NxbC5jOjEuMzQzCU1vbiBNYXIgIDYgMjA6MTY6MzQgMjAwNgorKysgcGhwLXNyYy9l eHQvcGdzcWwvcGdzcWwuYwlXZWQgTWFyICA4IDAwOjQzOjI4IDIwMDYKQEAgLTIwLDcgKzIwLDcg QEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICovCiAgCi0vKiAkSWQ6IHBnc3FsLmMsdiAxLjM0MyAy MDA2LzAzLzA2IDIwOjE2OjM0IGhlbGx5IEV4cCAkICovCisvKiAkSWQ6IHBnc3FsLmMsdiAxLjM0 NCAyMDA2LzAzLzA4IDAwOjQzOjI4IHBham95ZSBFeHAgJCAqLwogCiAjaW5jbHVkZSA8c3RkbGli Lmg+CiAKQEAgLTE5NjIsMTIgKzE5NjIsOCBAQAogCQkJCWludCBkYXRhX2xlbjsKIAkJCQlpbnQg c2hvdWxkX2NvcHk9MDsKIAotCQkJCWlmIChQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsKLQkJ CQkJZGF0YSA9IHBocF9hZGRzbGFzaGVzKGVsZW1lbnQsIGVsZW1lbnRfbGVuLCAmZGF0YV9sZW4s IDAgVFNSTUxTX0NDKTsKLQkJCQl9IGVsc2UgewotCQkJCQlkYXRhID0gc2FmZV9lc3RybmR1cChl bGVtZW50LCBlbGVtZW50X2xlbik7Ci0JCQkJCWRhdGFfbGVuID0gZWxlbWVudF9sZW47Ci0JCQkJ fQorCQkJCWRhdGEgPSBzYWZlX2VzdHJuZHVwKGVsZW1lbnQsIGVsZW1lbnRfbGVuKTsKKwkJCQlk YXRhX2xlbiA9IGVsZW1lbnRfbGVuOwogCQkJCiAJCQkJaWYgKHJlc3VsdF90eXBlICYgUEdTUUxf TlVNKSB7CiAJCQkJCWFkZF9pbmRleF9zdHJpbmdsKHJldHVybl92YWx1ZSwgaSwgZGF0YSwgZGF0 YV9sZW4sIHNob3VsZF9jb3B5KTsKQEAgLTU1ODMsMTIgKzU1NzksOSBAQAogCQkJCWVsZW1lbnQg PSBQUWdldHZhbHVlKHBnX3Jlc3VsdCwgcGdfcm93LCBpKTsKIAkJCQllbGVtZW50X2xlbiA9IChl bGVtZW50ID8gc3RybGVuKGVsZW1lbnQpIDogMCk7CiAJCQkJaWYgKGVsZW1lbnQpIHsKLQkJCQkJ aWYgKFBHKG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotCQkJCQkJZGF0YSA9IHBocF9hZGRzbGFz aGVzKGVsZW1lbnQsIGVsZW1lbnRfbGVuLCAmZGF0YV9sZW4sIDAgVFNSTUxTX0NDKTsKLQkJCQkJ fSBlbHNlIHsKLQkJCQkJCWRhdGEgPSBzYWZlX2VzdHJuZHVwKGVsZW1lbnQsIGVsZW1lbnRfbGVu KTsKLQkJCQkJCWRhdGFfbGVuID0gZWxlbWVudF9sZW47Ci0JCQkJCX0KKwkJCQkJZGF0YSA9IHNh ZmVfZXN0cm5kdXAoZWxlbWVudCwgZWxlbWVudF9sZW4pOworCQkJCQlkYXRhX2xlbiA9IGVsZW1l bnRfbGVuOworCiAJCQkJCWZpZWxkX25hbWUgPSBQUWZuYW1lKHBnX3Jlc3VsdCwgaSk7CiAJCQkJ CWFkZF9hc3NvY19zdHJpbmdsKHJvdywgZmllbGRfbmFtZSwgZGF0YSwgZGF0YV9sZW4sIDApOwog CQkJCX0KaHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L3NwbC9zcGxf ZGlyZWN0b3J5LmM/cjE9MS44MSZyMj0xLjgyJmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMv ZXh0L3NwbC9zcGxfZGlyZWN0b3J5LmMKZGlmZiAtdSBwaHAtc3JjL2V4dC9zcGwvc3BsX2RpcmVj dG9yeS5jOjEuODEgcGhwLXNyYy9leHQvc3BsL3NwbF9kaXJlY3RvcnkuYzoxLjgyCi0tLSBwaHAt c3JjL2V4dC9zcGwvc3BsX2RpcmVjdG9yeS5jOjEuODEJVHVlIE1hciAgNyAyMDoyMjoxMiAyMDA2 CisrKyBwaHAtc3JjL2V4dC9zcGwvc3BsX2RpcmVjdG9yeS5jCVdlZCBNYXIgIDggMDA6NDM6Mjgg MjAwNgpAQCAtMTYsNyArMTYsNyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgKi8KIAotLyogJElk OiBzcGxfZGlyZWN0b3J5LmMsdiAxLjgxIDIwMDYvMDMvMDcgMjA6MjI6MTIgaGVsbHkgRXhwICQg Ki8KKy8qICRJZDogc3BsX2RpcmVjdG9yeS5jLHYgMS44MiAyMDA2LzAzLzA4IDAwOjQzOjI4IHBh am95ZSBFeHAgJCAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyBpbmNsdWRlICJjb25maWcu aCIKQEAgLTEzNTMsMTEgKzEzNTMsNiBAQAogCQkJYnVmW2xpbmVfbGVuXSA9ICdcMCc7CiAJCX0K IAkKLQkJaWYgKFBHKG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotCQkJYnVmID0gcGhwX2FkZHNs YXNoZXMoYnVmLCBsaW5lX2xlbiwgJmxlbiwgMSBUU1JNTFNfQ0MpOwotCQkJbGluZV9sZW4gPSBs ZW47Ci0JCX0KLQkKIAkJaW50ZXJuLT51LmZpbGUuY3VycmVudF9saW5lID0gYnVmOwogCQlpbnRl cm4tPnUuZmlsZS5jdXJyZW50X2xpbmVfbGVuID0gbGluZV9sZW47CiAJfQpAQCAtMTg0MiwxNCAr MTgzNyw2IEBACiAJCVJFVFVSTl9MT05HKDApOwogCX0KIAotCWlmIChQRyhtYWdpY19xdW90ZXNf cnVudGltZSkpIHsKLQkJc3RyID0gZXN0cm5kdXAoc3RyLCBzdHJfbGVuKTsKLQkJcGhwX3N0cmlw c2xhc2hlcyhzdHIsICZzdHJfbGVuIFRTUk1MU19DQyk7Ci0JCXJldCA9IHBocF9zdHJlYW1fd3Jp dGUoaW50ZXJuLT51LmZpbGUuc3RyZWFtLCBzdHIsIHN0cl9sZW4pOwotCQllZnJlZShzdHIpOwot CQlSRVRVUk5fTE9ORyhyZXQpOwotCX0KLQogCVJFVFVSTl9MT05HKHBocF9zdHJlYW1fd3JpdGUo aW50ZXJuLT51LmZpbGUuc3RyZWFtLCBzdHIsIHN0cl9sZW4pKTsKIH0gLyogfX19ICovCiAKaHR0 cDovL2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L3NwbC9leGFtcGxlcy9kYmFh cnJheS5pbmM/cjE9MS41JnIyPTEuNiZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9z cGwvZXhhbXBsZXMvZGJhYXJyYXkuaW5jCmRpZmYgLXUgcGhwLXNyYy9leHQvc3BsL2V4YW1wbGVz L2RiYWFycmF5LmluYzoxLjUgcGhwLXNyYy9leHQvc3BsL2V4YW1wbGVzL2RiYWFycmF5LmluYzox LjYKLS0tIHBocC1zcmMvZXh0L3NwbC9leGFtcGxlcy9kYmFhcnJheS5pbmM6MS41CVR1ZSBGZWIg MjEgMjM6MjE6NTMgMjAwNgorKysgcGhwLXNyYy9leHQvc3BsL2V4YW1wbGVzL2RiYWFycmF5Lmlu YwlXZWQgTWFyICA4IDAwOjQzOjI4IDIwMDYKQEAgLTUxLDkgKzUxLDYgQEAKIAl7CiAJCSRkYXRh ID0gZGJhX2ZldGNoKCRuYW1lLCAkdGhpcy0+ZGIpOyAKIAkJaWYoJGRhdGEpIHsKLQkJCWlmIChp bmlfZ2V0KCdtYWdpY19xdW90ZXNfcnVudGltZScpKSB7Ci0JCQkJJGRhdGEgPSBzdHJpcHNsYXNo ZXMoJGRhdGEpOwotCQkJfQogCQkJLy9yZXR1cm4gdW5zZXJpYWxpemUoJGRhdGEpOwogCQkJcmV0 dXJuICRkYXRhOwogCQl9CkBAIC05NSw0ICs5Miw0IEBACiAJfQogfQogCi0/PgpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKKz8+Cmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAt c3JjL2V4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYz9yMT0xLjc1OSZyMj0xLjc2MCZkaWZm X2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9zdGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYwpk aWZmIC11IHBocC1zcmMvZXh0L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0aW9ucy5jOjEuNzU5IHBocC1z cmMvZXh0L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0aW9ucy5jOjEuNzYwCi0tLSBwaHAtc3JjL2V4dC9z dGFuZGFyZC9iYXNpY19mdW5jdGlvbnMuYzoxLjc1OQlNb24gTWFyICA2IDE0OjI3OjQ1IDIwMDYK KysrIHBocC1zcmMvZXh0L3N0YW5kYXJkL2Jhc2ljX2Z1bmN0aW9ucy5jCVdlZCBNYXIgIDggMDA6 NDM6MjggMjAwNgpAQCAtMTcsNyArMTcsNyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgKi8KIAot LyogJElkOiBiYXNpY19mdW5jdGlvbnMuYyx2IDEuNzU5IDIwMDYvMDMvMDYgMTQ6Mjc6NDUgaWxp YWEgRXhwICQgKi8KKy8qICRJZDogYmFzaWNfZnVuY3Rpb25zLmMsdiAxLjc2MCAyMDA2LzAzLzA4 IDAwOjQzOjI4IHBham95ZSBFeHAgJCAqLwogCiAjaW5jbHVkZSAicGhwLmgiCiAjaW5jbHVkZSAi cGhwX3N0cmVhbXMuaCIKQEAgLTQ0MiwxMSArNDQyLDExIEBACiAJUEhQX0ZFKGdldF9jdXJyZW50 X3VzZXIsCQkJCQkJCQkJCQkJTlVMTCkKIAlQSFBfRkUoc2V0X3RpbWVfbGltaXQsCQkJCQkJCQkJ CQkJCU5VTEwpCiAJUEhQX0ZFKGdldF9jZmdfdmFyLAkJCQkJCQkJCQkJCQkJTlVMTCkKLQlQSFBf RkFMSUFTKG1hZ2ljX3F1b3Rlc19ydW50aW1lLCBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUsCQkJ CU5VTEwpCi0JUEhQX0ZFKHNldF9tYWdpY19xdW90ZXNfcnVudGltZSwJCQkJCQkJCQkJTlVMTCkK LQlQSFBfRkUoZ2V0X21hZ2ljX3F1b3Rlc19ncGMsCQkJCQkJCQkJCQlOVUxMKQotCVBIUF9GRShn ZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUsCQkJCQkJCQkJCU5VTEwpCi0KKwlQSFBfREVQX0ZBTElB UyhtYWdpY19xdW90ZXNfcnVudGltZSwgc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lLCAgICAgICAg ICAgICAgTlVMTCkKKwlQSFBfREVQX0ZFKHNldF9tYWdpY19xdW90ZXNfcnVudGltZSwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkKKwlQSFBfREVQX0ZFKGdldF9t YWdpY19xdW90ZXNfZ3BjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCkKKwlQSFBfREVQX0ZFKGdldF9tYWdpY19xdW90ZXNfcnVudGltZSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkKKwkKIAlQSFBfRkUoaW1wb3J0X3Jl cXVlc3RfdmFyaWFibGVzLAkJCQkJCQkJCQlOVUxMKQogCVBIUF9GRShlcnJvcl9sb2csCQkJCQkJ CQkJCQkJCQlOVUxMKQogCVBIUF9GRShjYWxsX3VzZXJfZnVuYywJCQkJCQkJCQkJCQkJTlVMTCkK QEAgLTExNTEsOSArMTE1MSw2IEBACiAJUEhQX1JJTklUKGRpcikoSU5JVF9GVU5DX0FSR1NfUEFT U1RIUlUpOwogCVBIUF9SSU5JVCh1cmxfc2Nhbm5lcl9leCkoSU5JVF9GVU5DX0FSR1NfUEFTU1RI UlUpOwogCi0JLyogUmVzZXQgbWFnaWNfcXVvdGVzX3J1bnRpbWUgKi8KLQlQRyhtYWdpY19xdW90 ZXNfcnVudGltZSkgPSBJTklfQk9PTCgibWFnaWNfcXVvdGVzX3J1bnRpbWUiKTsKLQogCS8qIFNl dHVwIGRlZmF1bHQgY29udGV4dCAqLwogCUZHKGRlZmF1bHRfY29udGV4dCkgPSBOVUxMOwogCkBA IC0xODIzLDM4ICsxODIwLDIwIEBACiB9CiAvKiB9fX0gKi8KIAotLyoge3t7IHByb3RvIGJvb2wg c2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKGludCBuZXdfc2V0dGluZykKLSAgIFNldCB0aGUgY3Vy cmVudCBhY3RpdmUgY29uZmlndXJhdGlvbiBzZXR0aW5nIG9mIG1hZ2ljX3F1b3Rlc19ydW50aW1l IGFuZCByZXR1cm4gcHJldmlvdXMgKi8KIFBIUF9GVU5DVElPTihzZXRfbWFnaWNfcXVvdGVzX3J1 bnRpbWUpCiB7Ci0JenZhbCAqKm5ld19zZXR0aW5nOwotCi0JaWYgKFpFTkRfTlVNX0FSR1MoKSAh PSAxIHx8IHplbmRfZ2V0X3BhcmFtZXRlcnNfZXgoMSwgJm5ld19zZXR0aW5nKSA9PSBGQUlMVVJF KSB7Ci0JCVJFVFVSTl9GQUxTRTsKLQl9Ci0JY29udmVydF90b19ib29sZWFuX2V4KG5ld19zZXR0 aW5nKTsKLQotCVBHKG1hZ2ljX3F1b3Rlc19ydW50aW1lKSA9ICh6ZW5kX2Jvb2wpIFpfTFZBTF9Q UChuZXdfc2V0dGluZyk7Ci0JUkVUVVJOX1RSVUU7CisJcGhwX2Vycm9yX2RvY3JlZihOVUxMIFRT Uk1MU19DQywgRV9DT1JFX0VSUk9SLCAibWFnaWNfcXVvdGVzX3J1bnRpbWUgaXMgbm90IHN1cHBv cnRlZCBhbnltb3JlIik7CisJUkVUVVJOX0ZBTFNFOwogfQotLyogfX19ICovCiAKLS8qIHt7eyBw cm90byBpbnQgZ2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKHZvaWQpCi0gICBHZXQgdGhlIGN1cnJl bnQgYWN0aXZlIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBvZiBtYWdpY19xdW90ZXNfcnVudGltZSAq LwogUEhQX0ZVTkNUSU9OKGdldF9tYWdpY19xdW90ZXNfcnVudGltZSkKIHsKLQlSRVRVUk5fTE9O RyhQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpOworCVJFVFVSTl9GQUxTRTsKIH0KLQotLyogfX19 ICovCi0KLS8qIHt7eyBwcm90byBpbnQgZ2V0X21hZ2ljX3F1b3Rlc19ncGModm9pZCkKLSAgIEdl dCB0aGUgY3VycmVudCBhY3RpdmUgY29uZmlndXJhdGlvbiBzZXR0aW5nIG9mIG1hZ2ljX3F1b3Rl c19ncGMgKi8KIFBIUF9GVU5DVElPTihnZXRfbWFnaWNfcXVvdGVzX2dwYykKIHsKLQlSRVRVUk5f TE9ORyhQRyhtYWdpY19xdW90ZXNfZ3BjKSk7CisJUkVUVVJOX0ZBTFNFOwogfQotLyogfX19ICov CiAKIC8qCiAJMXN0IGFyZyA9IGVycm9yIG1lc3NhZ2UKaHR0cDovL2N2cy5waHAubmV0L3ZpZXdj dnMuY2dpL3BocC1zcmMvZXh0L3N0YW5kYXJkL2V4ZWMuYz9yMT0xLjExNyZyMj0xLjExOCZkaWZm X2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9zdGFuZGFyZC9leGVjLmMKZGlmZiAtdSBwaHAt c3JjL2V4dC9zdGFuZGFyZC9leGVjLmM6MS4xMTcgcGhwLXNyYy9leHQvc3RhbmRhcmQvZXhlYy5j OjEuMTE4Ci0tLSBwaHAtc3JjL2V4dC9zdGFuZGFyZC9leGVjLmM6MS4xMTcJVGh1IE1hciAgMiAx MzoxMjo0NSAyMDA2CisrKyBwaHAtc3JjL2V4dC9zdGFuZGFyZC9leGVjLmMJV2VkIE1hciAgOCAw MDo0MzoyOCAyMDA2CkBAIC0xNiw3ICsxNiw3IEBACiAgICB8ICAgICAgICAgSWxpYSBBbHNoYW5l dHNreSA8aWxpYWFAcGhwLm5ldD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwogICovCi0vKiAkSWQ6IGV4ZWMuYyx2IDEuMTE3IDIwMDYvMDMvMDIgMTM6 MTI6NDUgZG1pdHJ5IEV4cCAkICovCisvKiAkSWQ6IGV4ZWMuYyx2IDEuMTE4IDIwMDYvMDMvMDgg MDA6NDM6MjggcGFqb3llIEV4cCAkICovCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUg InBocC5oIgpAQCAtMTM1LDE0ICsxMzUsNyBAQAogCQkJfQogCiAJCQkvKiBSZXR1cm4gbGFzdCBs aW5lIGZyb20gdGhlIHNoZWxsIGNvbW1hbmQgKi8KLQkJCWlmIChQRyhtYWdpY19xdW90ZXNfcnVu dGltZSkpIHsKLQkJCQlpbnQgbGVuOwotCQotCQkJCXRtcCA9IHBocF9hZGRzbGFzaGVzKGJ1Ziwg YnVmbCwgJmxlbiwgMCBUU1JNTFNfQ0MpOwotCQkJCVJFVFZBTF9TVFJJTkdMKHRtcCwgbGVuLCAw KTsKLQkJCX0gZWxzZSB7Ci0JCQkJUkVUVkFMX1NUUklOR0woYnVmLCBidWZsLCAxKTsKLQkJCX0K KwkJCVJFVFZBTF9TVFJJTkdMKGJ1ZiwgYnVmbCwgMSk7CiAJCX0gZWxzZSB7IC8qIHNob3VsZCBy ZXR1cm4gTlVMTCwgYnV0IGZvciBCQyB3ZSByZXR1cm4gIiIgKi8KIAkJCVJFVFZBTF9FTVBUWV9T VFJJTkcoKTsKIAkJfQpodHRwOi8vY3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9leHQv c3RhbmRhcmQvZmlsZS5jP3IxPTEuNDIyJnIyPTEuNDIzJmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBo cC1zcmMvZXh0L3N0YW5kYXJkL2ZpbGUuYwpkaWZmIC11IHBocC1zcmMvZXh0L3N0YW5kYXJkL2Zp bGUuYzoxLjQyMiBwaHAtc3JjL2V4dC9zdGFuZGFyZC9maWxlLmM6MS40MjMKLS0tIHBocC1zcmMv ZXh0L3N0YW5kYXJkL2ZpbGUuYzoxLjQyMglNb24gTWFyICA2IDE0OjI3OjQ1IDIwMDYKKysrIHBo cC1zcmMvZXh0L3N0YW5kYXJkL2ZpbGUuYwlXZWQgTWFyICA4IDAwOjQzOjI4IDIwMDYKQEAgLTIx LDcgKzIxLDcgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICovCiAKLS8qICRJZDogZmlsZS5jLHYg MS40MjIgMjAwNi8wMy8wNiAxNDoyNzo0NSBpbGlhYSBFeHAgJCAqLworLyogJElkOiBmaWxlLmMs diAxLjQyMyAyMDA2LzAzLzA4IDAwOjQzOjI4IHBham95ZSBFeHAgJCAqLwogCiAvKiBTeW5jZWQg d2l0aCBwaHAgMy4wIHJldmlzaW9uIDEuMjE4IDE5OTktMDYtMTYgW3NzYl0gKi8KIApAQCAtNDEz LDExICs0MTMsNyBAQAogCQkJCQloYXZlX25hbWUgPSAxOwogCQkJCX0gZWxzZSBpZiAoc2F3X2Nv bnRlbnQpIHsKIAkJCQkJLyogR2V0IHRoZSBDT05URU5UIGF0dHIgKFNpbmdsZSB3b3JkIGF0dHIs IG5vbi1xdW90ZWQpICovCi0JCQkJCWlmIChQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsKLQkJ CQkJCXZhbHVlID0gcGhwX2FkZHNsYXNoZXMobWQudG9rZW5fZGF0YSwgMCwgJm1kLnRva2VuX2xl biwgMCBUU1JNTFNfQ0MpOwotCQkJCQl9IGVsc2UgewotCQkJCQkJdmFsdWUgPSBlc3RybmR1cCht ZC50b2tlbl9kYXRhLCBtZC50b2tlbl9sZW4pOwotCQkJCQl9CisJCQkJCXZhbHVlID0gZXN0cm5k dXAobWQudG9rZW5fZGF0YSwgbWQudG9rZW5fbGVuKTsKIAogCQkJCQloYXZlX2NvbnRlbnQgPSAx OwogCQkJCX0KQEAgLTQ1MSwxMSArNDQ3LDcgQEAKIAkJCQloYXZlX25hbWUgPSAxOwogCQkJfSBl bHNlIGlmIChzYXdfY29udGVudCkgewogCQkJCS8qIEdldCB0aGUgQ09OVEVOVCBhdHRyIChTaW5n bGUgd29yZCBhdHRyLCBub24tcXVvdGVkKSAqLwotCQkJCWlmIChQRyhtYWdpY19xdW90ZXNfcnVu dGltZSkpIHsKLQkJCQkJdmFsdWUgPSBwaHBfYWRkc2xhc2hlcyhtZC50b2tlbl9kYXRhLCAwLCAm bWQudG9rZW5fbGVuLCAwIFRTUk1MU19DQyk7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJdmFsdWUgPSBl c3RybmR1cChtZC50b2tlbl9kYXRhLCBtZC50b2tlbl9sZW4pOwotCQkJCX0KKwkJCQl2YWx1ZSA9 IGVzdHJuZHVwKG1kLnRva2VuX2RhdGEsIG1kLnRva2VuX2xlbik7CiAKIAkJCQloYXZlX2NvbnRl bnQgPSAxOwogCQkJfQpAQCAtNTQzLDEyICs1MzUsNiBAQAogCiAJLyogdXNlcyBtbWFwIGlmIHBv c3NpYmxlICovCiAJaWYgKChsZW4gPSBwaHBfc3RyZWFtX2NvcHlfdG9fbWVtKHN0cmVhbSwgJmNv bnRlbnRzLCBtYXhsZW4sIDApKSA+IDApIHsKLQkJCi0JCWlmIChQRyhtYWdpY19xdW90ZXNfcnVu dGltZSkpIHsKLQkJCWNvbnRlbnRzID0gcGhwX2FkZHNsYXNoZXMoY29udGVudHMsIGxlbiwgJm5l d2xlbiwgMSBUU1JNTFNfQ0MpOyAvKiAxID0gZnJlZSBzb3VyY2Ugc3RyaW5nICovCi0JCQlsZW4g PSBuZXdsZW47Ci0JCX0KLQogCQlSRVRWQUxfU1RSSU5HTChjb250ZW50cywgbGVuLCAwKTsKIAl9 IGVsc2UgaWYgKGxlbiA9PSAwKSB7CiAJCVJFVFZBTF9FTVBUWV9TVFJJTkcoKTsKQEAgLTc3OCwx MyArNzY0LDcgQEAKIAkgCQlkbyB7CiAgCQkJCXArKzsKIHBhcnNlX2VvbDoKLSAJCQkJaWYgKFBH KG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotIAkJCQkJLyogcyBpcyBpbiB0YXJnZXRfYnVmIHdo aWNoIGlzIGZyZWVkIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uICovCi0gCQkJCQlzbGFzaGVk ID0gcGhwX2FkZHNsYXNoZXMocywgKHAtcyksICZsZW4sIDAgVFNSTUxTX0NDKTsKLSAJCQkJCWFk ZF9pbmRleF9zdHJpbmdsKHJldHVybl92YWx1ZSwgaSsrLCBzbGFzaGVkLCBsZW4sIDApOwotIAkJ CQl9IGVsc2UgewotIAkJCQkJYWRkX2luZGV4X3N0cmluZ2wocmV0dXJuX3ZhbHVlLCBpKyssIGVz dHJuZHVwKHMsIHAtcyksIHAtcywgMCk7Ci0JCQkJfQorCQkJCWFkZF9pbmRleF9zdHJpbmdsKHJl dHVybl92YWx1ZSwgaSsrLCBlc3RybmR1cChzLCBwLXMpLCBwLXMsIDApOwogIAkJCQlzID0gcDsK IAkgCQl9IHdoaWxlICgocCA9IG1lbWNocihwLCBlb2xfbWFya2VyLCAoZS1wKSkpKTsKIAkgCX0g ZWxzZSB7CkBAIC03OTMsMTMgKzc3Myw3IEBACiAgCQkJCQlzID0gKytwOwogIAkJCQkJY29udGlu dWU7CiAgCQkJCX0KLSAJCQkJaWYgKFBHKG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotIAkJCQkJ LyogcyBpcyBpbiB0YXJnZXRfYnVmIHdoaWNoIGlzIGZyZWVkIGF0IHRoZSBlbmQgb2YgdGhlIGZ1 bmN0aW9uICovCi0gCQkJCQlzbGFzaGVkID0gcGhwX2FkZHNsYXNoZXMocywgKHAtcyksICZsZW4s IDAgVFNSTUxTX0NDKTsKLSAJCQkJCWFkZF9pbmRleF9zdHJpbmdsKHJldHVybl92YWx1ZSwgaSsr LCBzbGFzaGVkLCBsZW4sIDApOwotIAkJCQl9IGVsc2UgewotIAkJCQkJYWRkX2luZGV4X3N0cmlu Z2wocmV0dXJuX3ZhbHVlLCBpKyssIGVzdHJuZHVwKHMsIHAtcyksIHAtcywgMCk7Ci0JCQkJfQor CQkJCWFkZF9pbmRleF9zdHJpbmdsKHJldHVybl92YWx1ZSwgaSsrLCBlc3RybmR1cChzLCBwLXMp LCBwLXMsIDApOwogIAkJCQlzID0gKytwOwogCSAJCX0gd2hpbGUgKChwID0gbWVtY2hyKHAsIGVv bF9tYXJrZXIsIChlLXApKSkpOwogCSAJfQpAQCAtMTAzOCwxOCArMTAxMiw5IEBACiAJfQogCiAJ aWYgKGlzX3VuaWNvZGUpIHsKLQkJLyogVVRPRE86IG1hZ2ljX3F1b3Rlc19ydW50aW1lICovCiAJ CVJFVFVSTl9VTklDT0RFTChidWYsIG51bV9jaGFycywgMCk7CiAJfSBlbHNlIHsKLQkJaWYgKFBH KG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotCQkJaW50IGxlbjsKLQkJCWNoYXIgKnN0cjsKLQot CQkJc3RyID0gcGhwX2FkZHNsYXNoZXMoKGNoYXIqKWJ1ZiwgbnVtX2J5dGVzLCAmbGVuLCAxIFRT Uk1MU19DQyk7Ci0JCQlSRVRVUk5fU1RSSU5HTChzdHIsIGxlbiwgMCk7Ci0JCX0gZWxzZSB7CiAJ CQlSRVRVUk5fU1RSSU5HTCgoY2hhciopYnVmLCBudW1fYnl0ZXMsIDApOwotCQl9CiAJfQogfQog LyogfX19ICovCkBAIC0xMjQ4LDkgKzEyMTMsNiBAQAogCQlpZiAod3JpdGVfbGVuIDwgMCB8fCB3 cml0ZV9sZW4gPiBaX1VTVFJMRU5fUCh6c3RyaW5nKSkgewogCQkJd3JpdGVfbGVuID0gWl9VU1RS TEVOX1AoenN0cmluZyk7CiAJCX0KLQotCQkvKiBVVE9ETyBIYW5kbGUgbWFnaWNfcXVvdGVzX3J1 bnRpbWUgZm9yIHVuaWNvZGUgc3RyaW5ncyAqLwotCiAJCXJldCA9IHBocF9zdHJlYW1fdV93cml0 ZShzdHJlYW0sIFpfVVNUUlZBTF9QKHpzdHJpbmcpLCB3cml0ZV9sZW4pOwogCiAJCS8qIENvbnZl cnQgZGF0YSBwb2ludHMgYmFjayB0byBjb2RlIHVuaXRzICovCkBAIC0xMjY3LDEwICsxMjI5LDYg QEAKIAkJfQogCiAJCW51bV9ieXRlcyA9IHdyaXRlX2xlbjsKLQkJaWYgKGFyZ2MgPCAzICYmIFBH KG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotCQkJYnVmZmVyID0gZXN0cm5kdXAoWl9TVFJWQUxf UCh6c3RyaW5nKSwgbnVtX2J5dGVzKTsKLQkJCXBocF9zdHJpcHNsYXNoZXMoYnVmZmVyLCAmbnVt X2J5dGVzIFRTUk1MU19DQyk7Ci0JCX0KIAkJcmV0ID0gcGhwX3N0cmVhbV93cml0ZShzdHJlYW0s IGJ1ZmZlciA/IGJ1ZmZlciA6IFpfU1RSVkFMX1AoenN0cmluZyksIG51bV9ieXRlcyk7CiAJCWlm IChidWZmZXIpIHsKIAkJCWVmcmVlKGJ1ZmZlcik7CkBAIC0xODI4LDE2ICsxNzg2LDExIEBACiAJ fQogCiAJaWYgKGlzX3VuaWNvZGUpIHsKLQkJLyogVVRPRE8gLSBtYWdpY19xdW90ZXNfcnVudGlt ZSAqLwotCiAJCWJ1ZltudW1fYnl0ZXNdID0gMDsKIAkJYnVmW251bV9ieXRlcyArIDFdID0gMDsK IAkJUkVUVVJOX1VOSUNPREVMKChVQ2hhciAqKWJ1ZiwgbnVtX2J5dGVzID4+IDEsIDApOwogCX0g ZWxzZSB7CiAJCWJ1ZltudW1fYnl0ZXNdID0gMDsKLQkJaWYgKFBHKG1hZ2ljX3F1b3Rlc19ydW50 aW1lKSkgewotCQkJYnVmID0gcGhwX2FkZHNsYXNoZXMoYnVmLCBudW1fYnl0ZXMsICZudW1fYnl0 ZXMsIDEgVFNSTUxTX0NDKTsKLQkJfQogCQlSRVRVUk5fU1RSSU5HTChidWYsIG51bV9ieXRlcywg MCk7CiAJfQogfQpAQCAtMTk3NiwxNiArMTkyOSw3IEBACiAJc21hcnRfc3RyX2FwcGVuZGMoJmNz dmxpbmUsICdcbicpOwogCXNtYXJ0X3N0cl8wKCZjc3ZsaW5lKTsKIAotCWlmICghUEcobWFnaWNf cXVvdGVzX3J1bnRpbWUpKSB7Ci0JCXJldCA9IHBocF9zdHJlYW1fd3JpdGUoc3RyZWFtLCBjc3Zs aW5lLmMsIGNzdmxpbmUubGVuKTsKLQl9IGVsc2UgewotCQljaGFyICpidWZmZXIgPSBlc3RybmR1 cChjc3ZsaW5lLmMsIGNzdmxpbmUubGVuKTsKLQkJaW50IGxlbiA9IGNzdmxpbmUubGVuOwotCQlw aHBfc3RyaXBzbGFzaGVzKGJ1ZmZlciwgJmxlbiBUU1JNTFNfQ0MpOwotCQlyZXQgPSBwaHBfc3Ry ZWFtX3dyaXRlKHN0cmVhbSwgYnVmZmVyLCBsZW4pOwotCQllZnJlZShidWZmZXIpOwotCX0KLQor CXJldCA9IHBocF9zdHJlYW1fd3JpdGUoc3RyZWFtLCBjc3ZsaW5lLmMsIGNzdmxpbmUubGVuKTsK IAlzbWFydF9zdHJfZnJlZSgmY3N2bGluZSk7CiAKIAlSRVRVUk5fTE9ORyhyZXQpOwpodHRwOi8v Y3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9leHQvc3RhbmRhcmQvc3RyZWFtc2Z1bmNz LmM/cjE9MS42NiZyMj0xLjY3JmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMvZXh0L3N0YW5k YXJkL3N0cmVhbXNmdW5jcy5jCmRpZmYgLXUgcGhwLXNyYy9leHQvc3RhbmRhcmQvc3RyZWFtc2Z1 bmNzLmM6MS42NiBwaHAtc3JjL2V4dC9zdGFuZGFyZC9zdHJlYW1zZnVuY3MuYzoxLjY3Ci0tLSBw aHAtc3JjL2V4dC9zdGFuZGFyZC9zdHJlYW1zZnVuY3MuYzoxLjY2CVRodSBNYXIgIDIgMTM6MTI6 NDUgMjAwNgorKysgcGhwLXNyYy9leHQvc3RhbmRhcmQvc3RyZWFtc2Z1bmNzLmMJV2VkIE1hciAg OCAwMDo0MzoyOCAyMDA2CkBAIC0xNyw3ICsxNyw3IEBACiAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogKi8K IAotLyogJElkOiBzdHJlYW1zZnVuY3MuYyx2IDEuNjYgMjAwNi8wMy8wMiAxMzoxMjo0NSBkbWl0 cnkgRXhwICQgKi8KKy8qICRJZDogc3RyZWFtc2Z1bmNzLmMsdiAxLjY3IDIwMDYvMDMvMDggMDA6 NDM6MjggcGFqb3llIEV4cCAkICovCiAKICNpbmNsdWRlICJwaHAuaCIKICNpbmNsdWRlICJwaHBf Z2xvYmFscy5oIgpAQCAtMzcwLDE0ICszNzAsNyBAQAogCQl9CiAJCXJlYWRfYnVmW3JlY3ZkXSA9 ICdcMCc7CiAKLQkJaWYgKFBHKG1hZ2ljX3F1b3Rlc19ydW50aW1lKSkgewotCQkJWl9UWVBFX1Ao cmV0dXJuX3ZhbHVlKSA9IElTX1NUUklORzsKLQkJCVpfU1RSVkFMX1AocmV0dXJuX3ZhbHVlKSA9 IHBocF9hZGRzbGFzaGVzKFpfU1RSVkFMX1AocmV0dXJuX3ZhbHVlKSwKLQkJCQkJWl9TVFJMRU5f UChyZXR1cm5fdmFsdWUpLCAmWl9TVFJMRU5fUChyZXR1cm5fdmFsdWUpLCAxIFRTUk1MU19DQyk7 Ci0JCQlyZXR1cm47Ci0JCX0gZWxzZSB7Ci0JCQlSRVRVUk5fU1RSSU5HTChyZWFkX2J1ZiwgcmVj dmQsIDApOwotCQl9CisJCVJFVFVSTl9TVFJJTkdMKHJlYWRfYnVmLCByZWN2ZCwgMCk7CiAJfQog CiAJZWZyZWUocmVhZF9idWYpOwpAQCAtNDA3LDEyICs0MDAsNiBAQAogCX0KIAogCWlmICgobGVu ID0gcGhwX3N0cmVhbV9jb3B5X3RvX21lbShzdHJlYW0sICZjb250ZW50cywgbWF4bGVuLCAwKSkg PiAwKSB7Ci0JCQotCQlpZiAoUEcobWFnaWNfcXVvdGVzX3J1bnRpbWUpKSB7Ci0JCQljb250ZW50 cyA9IHBocF9hZGRzbGFzaGVzKGNvbnRlbnRzLCBsZW4sICZuZXdsZW4sIDEgVFNSTUxTX0NDKTsg LyogMSA9IGZyZWUgc291cmNlIHN0cmluZyAqLwotCQkJbGVuID0gbmV3bGVuOwotCQl9Ci0KIAkJ UkVUVkFMX1NUUklOR0woY29udGVudHMsIGxlbiwgMCk7CiAJfSBlbHNlIGlmIChsZW4gPT0gMCkg ewogCQlSRVRWQUxfRU1QVFlfU1RSSU5HKCk7Cmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNn aS9waHAtc3JjL2V4dC9zdGFuZGFyZC9zdHJpbmcuYz9yMT0xLjUyNCZyMj0xLjUyNSZkaWZmX2Zv cm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC9zdGFuZGFyZC9zdHJpbmcuYwpkaWZmIC11IHBocC1z cmMvZXh0L3N0YW5kYXJkL3N0cmluZy5jOjEuNTI0IHBocC1zcmMvZXh0L3N0YW5kYXJkL3N0cmlu Zy5jOjEuNTI1Ci0tLSBwaHAtc3JjL2V4dC9zdGFuZGFyZC9zdHJpbmcuYzoxLjUyNAlNb24gTWFy ICA2IDIxOjQ5OjIxIDIwMDYKKysrIHBocC1zcmMvZXh0L3N0YW5kYXJkL3N0cmluZy5jCVdlZCBN YXIgIDggMDA6NDM6MjggMjAwNgpAQCAtMTgsNyArMTgsNyBAQAogICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r CiAgKi8KIAotLyogJElkOiBzdHJpbmcuYyx2IDEuNTI0IDIwMDYvMDMvMDYgMjE6NDk6MjEgYW5k cmVpIEV4cCAkICovCisvKiAkSWQ6IHN0cmluZy5jLHYgMS41MjUgMjAwNi8wMy8wOCAwMDo0Mzoy OCBwYWpveWUgRXhwICQgKi8KIAogLyogU3luY2VkIHdpdGggcGhwIDMuMCByZXZpc2lvbiAxLjE5 MyAxOTk5LTA2LTE2IFtzc2JdICovCiAKQEAgLTM3OTgsNDggKzM3OTgsMTkgQEAKIAlVQ2hhcjMy IGNoMSwgY2gyOwogCiAJY2gxID0gLTE7IGNoMiA9IC0xOwotCWlmIChQRyhtYWdpY19xdW90ZXNf c3liYXNlKSkgewotCQl3aGlsZSAoaSA8IHNyY19sZW4pIHsKLQkJCVUxNl9ORVhUKHN0ciwgaSwg c3JjX2xlbiwgY2gxKTsKLQkJCWlmIChjaDEgPT0gJ1wnJykgewotCQkJCXRtcF9sZW4gKz0gemVu ZF9jb2RlcG9pbnRfdG9fdWNoYXIoY2gxLCBzdHIrdG1wX2xlbik7Ci0JCQkJaWYgKGkgPCBzcmNf bGVuKSB7Ci0JCQkJCVUxNl9ORVhUKHN0ciwgaSwgc3JjX2xlbiwgY2gyKTsKLQkJCQkJaWYgKGNo MiAhPSAnXCcnKSB7Ci0JCQkJCQl0bXBfbGVuICs9IHplbmRfY29kZXBvaW50X3RvX3VjaGFyKGNo Miwgc3RyK3RtcF9sZW4pOwotCQkJCQl9Ci0JCQkJfQotCQkJfSBlbHNlIGlmIChjaDEgPT0gJ1xc JykgewotCQkJCWlmIChpIDwgc3JjX2xlbikgewotCQkJCQlVMTZfTkVYVChzdHIsIGksIHNyY19s ZW4sIGNoMik7Ci0JCQkJCWlmIChjaDIgPT0gJzAnKSB7Ci0JCQkJCQl0bXBfbGVuICs9IHplbmRf Y29kZXBvaW50X3RvX3VjaGFyKCdcMCcsIHN0cit0bXBfbGVuKTsKLQkJCQkJfSBlbHNlIHsKLQkJ CQkJCXRtcF9sZW4gKz0gemVuZF9jb2RlcG9pbnRfdG9fdWNoYXIoY2gxLCBzdHIrdG1wX2xlbik7 Ci0JCQkJCQl0bXBfbGVuICs9IHplbmRfY29kZXBvaW50X3RvX3VjaGFyKGNoMiwgc3RyK3RtcF9s ZW4pOwotCQkJCQl9CisJd2hpbGUgKGkgPCBzcmNfbGVuKSB7CisJCVUxNl9ORVhUKHN0ciwgaSwg c3JjX2xlbiwgY2gxKTsKKwkJaWYgKGNoMSA9PSAnXFwnKSB7CisJCQlpZiAoaSA8IHNyY19sZW4p IHsKKwkJCQlVMTZfTkVYVChzdHIsIGksIHNyY19sZW4sIGNoMik7CisJCQkJaWYgKGNoMiA9PSAn MCcpIHsKKwkJCQkJdG1wX2xlbiArPSB6ZW5kX2NvZGVwb2ludF90b191Y2hhcignXDAnLCBzdHIr dG1wX2xlbik7CiAJCQkJfSBlbHNlIHsKLQkJCQkJdG1wX2xlbiArPSB6ZW5kX2NvZGVwb2ludF90 b191Y2hhcihjaDEsIHN0cit0bXBfbGVuKTsKKwkJCQkJdG1wX2xlbiArPSB6ZW5kX2NvZGVwb2lu dF90b191Y2hhcihjaDIsIHN0cit0bXBfbGVuKTsKIAkJCQl9Ci0JCQl9IGVsc2UgewotCQkJCXRt cF9sZW4gKz0gemVuZF9jb2RlcG9pbnRfdG9fdWNoYXIoY2gxLCBzdHIrdG1wX2xlbik7Ci0JCQl9 Ci0JCX0KLQl9IGVsc2UgewotCQl3aGlsZSAoaSA8IHNyY19sZW4pIHsKLQkJCVUxNl9ORVhUKHN0 ciwgaSwgc3JjX2xlbiwgY2gxKTsKLQkJCWlmIChjaDEgPT0gJ1xcJykgewotCQkJCWlmIChpIDwg c3JjX2xlbikgewotCQkJCQlVMTZfTkVYVChzdHIsIGksIHNyY19sZW4sIGNoMik7Ci0JCQkJCWlm IChjaDIgPT0gJzAnKSB7Ci0JCQkJCQl0bXBfbGVuICs9IHplbmRfY29kZXBvaW50X3RvX3VjaGFy KCdcMCcsIHN0cit0bXBfbGVuKTsKLQkJCQkJfSBlbHNlIHsKLQkJCQkJCXRtcF9sZW4gKz0gemVu ZF9jb2RlcG9pbnRfdG9fdWNoYXIoY2gyLCBzdHIrdG1wX2xlbik7Ci0JCQkJCX0KLQkJCQl9Ci0J CQl9IGVsc2UgewotCQkJCXRtcF9sZW4gKz0gemVuZF9jb2RlcG9pbnRfdG9fdWNoYXIoY2gxLCBz dHIrdG1wX2xlbik7CiAJCQl9CisJCX0gZWxzZSB7CisJCQl0bXBfbGVuICs9IHplbmRfY29kZXBv aW50X3RvX3VjaGFyKGNoMSwgc3RyK3RtcF9sZW4pOwogCQl9CiAJfQogCSooc3RyK3RtcF9sZW4p ID0gMDsKQEAgLTM4NjUsMzQgKzM4MzYsNiBAQAogCXMgPSBzdHI7CiAJdCA9IHN0cjsKIAotCWlm IChQRyhtYWdpY19xdW90ZXNfc3liYXNlKSkgewotCQl3aGlsZSAobCA+IDApIHsKLQkJCWlmICgq dCA9PSAnXCcnKSB7Ci0JCQkJaWYgKChsID4gMCkgJiYgKHRbMV0gPT0gJ1wnJykpIHsKLQkJCQkJ dCsrOwotCQkJCQlpZiAobGVuICE9IE5VTEwpIHsKLQkJCQkJCSgqbGVuKS0tOwotCQkJCQl9Ci0J CQkJCWwtLTsKLQkJCQl9Ci0JCQkJKnMrKyA9ICp0Kys7Ci0JCQl9IGVsc2UgaWYgKCp0ID09ICdc XCcgJiYgdFsxXSA9PSAnMCcgJiYgbCA+IDApIHsKLQkJCQkqcysrPSdcMCc7Ci0JCQkJdCs9MjsK LQkJCQlpZiAobGVuICE9IE5VTEwpIHsKLQkJCQkJKCpsZW4pLS07Ci0JCQkJfQotCQkJCWwtLTsK LQkJCX0gZWxzZSB7Ci0JCQkJKnMrKyA9ICp0Kys7Ci0JCQl9Ci0JCQlsLS07Ci0JCX0KLQkJKnMg PSAnXDAnOwotCQkKLQkJcmV0dXJuOwotCX0KLQogCXdoaWxlIChsID4gMCkgewogCQlpZiAoKnQg PT0gJ1xcJykgewogCQkJdCsrOwkJCQkvKiBza2lwIHRoZSBzbGFzaCAqLwpAQCAtNDE3OSw0MiAr NDEyMiwyNSBAQAogCX0KIAogCWJ1ZiA9IGV1bWFsbG9jKGxlbmd0aCAqIDIpOwotCWlmICghaWdu b3JlX3N5YmFzZSAmJiBQRyhtYWdpY19xdW90ZXNfc3liYXNlKSkgewotCQl3aGlsZSAoaSA8IGxl bmd0aCkgewotCQkJVTE2X05FWFQoc3RyLCBpLCBsZW5ndGgsIGNoKTsKLQkJCXN3aXRjaCAoY2gp IHsKLQkJCWNhc2UgJ1wwJzoKLQkJCQkqKGJ1ZitidWZfbGVuKSA9IChVQ2hhcikweDVDOyBidWZf bGVuKys7IC8qIFwgKi8KLQkJCQkqKGJ1ZitidWZfbGVuKSA9IChVQ2hhcikweDMwOyBidWZfbGVu Kys7IC8qIDAgKi8KLQkJCQlicmVhazsKLQkJCWNhc2UgJ1wnJzoKLQkJCQkqKGJ1ZitidWZfbGVu KSA9IChVQ2hhcikweDI3OyBidWZfbGVuKys7IC8qICcgKi8KLQkJCQkqKGJ1ZitidWZfbGVuKSA9 IChVQ2hhcikweDI3OyBidWZfbGVuKys7IC8qICcgKi8KLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6 Ci0JCQkJYnVmX2xlbiArPSB6ZW5kX2NvZGVwb2ludF90b191Y2hhcihjaCwgYnVmK2J1Zl9sZW4p OwotCQkJCWJyZWFrOwotCQkJfQotCQl9Ci0JfSBlbHNlIHsKLQkJd2hpbGUgKGkgPCBsZW5ndGgp IHsKLQkJCVUxNl9ORVhUKHN0ciwgaSwgbGVuZ3RoLCBjaCk7Ci0JCQlzd2l0Y2ggKGNoKSB7CisK Kwl3aGlsZSAoaSA8IGxlbmd0aCkgeworCQlVMTZfTkVYVChzdHIsIGksIGxlbmd0aCwgY2gpOwor CQlzd2l0Y2ggKGNoKSB7CiAJCQljYXNlICdcMCc6CiAJCQkJKihidWYrYnVmX2xlbikgPSAoVUNo YXIpMHg1QzsgYnVmX2xlbisrOyAvKiBcICovCiAJCQkJKihidWYrYnVmX2xlbikgPSAoVUNoYXIp MHgzMDsgYnVmX2xlbisrOyAvKiAwICovCiAJCQkJYnJlYWs7CiAJCQljYXNlICdcJyc6Ci0JCQlj YXNlICdcIic6CisJCQkJY2FzZSAnXCInOgogCQkJY2FzZSAnXFwnOgotCQkJCSooYnVmK2J1Zl9s ZW4pID0gKFVDaGFyKTB4NUM7IGJ1Zl9sZW4rKzsgLyogXCAqLwotCQkJCS8qIGJyZWFrIGlzIG1p c3NpbmcgKmludGVudGlvbmFsbHkqICovCisJCQkJCSooYnVmK2J1Zl9sZW4pID0gKFVDaGFyKTB4 NUM7IGJ1Zl9sZW4rKzsgLyogXCAqLworCQkJCQkvKiBicmVhayBpcyBtaXNzaW5nICppbnRlbnRp b25hbGx5KiAqLwogCQkJZGVmYXVsdDoKLQkJCQlidWZfbGVuICs9IHplbmRfY29kZXBvaW50X3Rv X3VjaGFyKGNoLCBidWYrYnVmX2xlbik7Ci0JCQkJYnJlYWs7CQotCQkJfQorCQkJCQlidWZfbGVu ICs9IHplbmRfY29kZXBvaW50X3RvX3VjaGFyKGNoLCBidWYrYnVmX2xlbik7CisJCQkJCWJyZWFr OwkKIAkJfQogCX0KKwogCSooYnVmK2J1Zl9sZW4pID0gMDsKIAogCWlmIChzaG91bGRfZnJlZSkg ewpAQCAtNDI1Niw0NCArNDE4MiwyNSBAQAogCWVuZCA9IHNvdXJjZSArIGxlbmd0aDsKIAl0YXJn ZXQgPSBuZXdfc3RyOwogCQotCWlmICghaWdub3JlX3N5YmFzZSAmJiBQRyhtYWdpY19xdW90ZXNf c3liYXNlKSkgewotCQl3aGlsZSAoc291cmNlIDwgZW5kKSB7Ci0JCQlzd2l0Y2ggKCpzb3VyY2Up IHsKLQkJCQljYXNlICdcMCc6Ci0JCQkJCSp0YXJnZXQrKyA9ICdcXCc7Ci0JCQkJCSp0YXJnZXQr KyA9ICcwJzsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSAnXCcnOgotCQkJCQkqdGFyZ2V0KysgPSAn XCcnOwotCQkJCQkqdGFyZ2V0KysgPSAnXCcnOwotCQkJCQlicmVhazsKLQkJCQlkZWZhdWx0Ogot CQkJCQkqdGFyZ2V0KysgPSAqc291cmNlOwotCQkJCQlicmVhazsKLQkJCX0KLQkJCXNvdXJjZSsr OwotCQl9Ci0JfSBlbHNlIHsKLQkJd2hpbGUgKHNvdXJjZSA8IGVuZCkgewotCQkJc3dpdGNoICgq c291cmNlKSB7Ci0JCQkJY2FzZSAnXDAnOgotCQkJCQkqdGFyZ2V0KysgPSAnXFwnOwotCQkJCQkq dGFyZ2V0KysgPSAnMCc7Ci0JCQkJCWJyZWFrOwotCQkJCWNhc2UgJ1wnJzoKKwl3aGlsZSAoc291 cmNlIDwgZW5kKSB7CisJCXN3aXRjaCAoKnNvdXJjZSkgeworCQkJY2FzZSAnXDAnOgorCQkJCSp0 YXJnZXQrKyA9ICdcXCc7CisJCQkJKnRhcmdldCsrID0gJzAnOworCQkJCWJyZWFrOworCQkJY2Fz ZSAnXCcnOgogCQkJCWNhc2UgJ1wiJzoKLQkJCQljYXNlICdcXCc6CisJCQljYXNlICdcXCc6CiAJ CQkJCSp0YXJnZXQrKyA9ICdcXCc7CiAJCQkJCS8qIGJyZWFrIGlzIG1pc3NpbmcgKmludGVudGlv bmFsbHkqICovCi0JCQkJZGVmYXVsdDoKKwkJCWRlZmF1bHQ6CiAJCQkJCSp0YXJnZXQrKyA9ICpz b3VyY2U7CiAJCQkJCWJyZWFrOwkKLQkJCX0KLQkJCi0JCQlzb3VyY2UrKzsKIAkJfQorCisJCXNv dXJjZSsrOwogCX0KLQkKKwogCSp0YXJnZXQgPSAwOwogCSpuZXdfbGVuZ3RoID0gdGFyZ2V0IC0g bmV3X3N0cjsKIAlpZiAoc2hvdWxkX2ZyZWUpIHsKaHR0cDovL2N2cy5waHAubmV0L3ZpZXdjdnMu Y2dpL3BocC1zcmMvZXh0L3N0YW5kYXJkL3Rlc3RzL2ZpbGUvZnB1dGNzdi5waHB0P3IxPTEuMiZy Mj0xLjMmZGlmZl9mb3JtYXQ9dQpJbmRleDogcGhwLXNyYy9leHQvc3RhbmRhcmQvdGVzdHMvZmls ZS9mcHV0Y3N2LnBocHQKZGlmZiAtdSBwaHAtc3JjL2V4dC9zdGFuZGFyZC90ZXN0cy9maWxlL2Zw dXRjc3YucGhwdDoxLjIgcGhwLXNyYy9leHQvc3RhbmRhcmQvdGVzdHMvZmlsZS9mcHV0Y3N2LnBo cHQ6MS4zCi0tLSBwaHAtc3JjL2V4dC9zdGFuZGFyZC90ZXN0cy9maWxlL2ZwdXRjc3YucGhwdDox LjIJRnJpIE9jdCAyMSAxMjoxNDoxMSAyMDA1CisrKyBwaHAtc3JjL2V4dC9zdGFuZGFyZC90ZXN0 cy9maWxlL2ZwdXRjc3YucGhwdAlXZWQgTWFyICA4IDAwOjQzOjI4IDIwMDYKQEAgLTEsNyArMSw1 IEBACiAtLVRFU1QtLQogdmFyaW91cyBmcHV0Y3N2KCkgZnVuY3Rpb25hbGl0eSB0ZXN0cwotLS1J TkktLQotbWFnaWNfcXVvdGVzX3J1bnRpbWU9MAogLS1GSUxFLS0KIDw/cGhwCiAKaHR0cDovL2N2 cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvZXh0L3N0YW5kYXJkL3Rlc3RzL3N0cmluZ3Mv YWRkLWFuZC1zdHJpcHNsYXNoZXMucGhwdD9yMT0xLjMmcjI9MS40JmRpZmZfZm9ybWF0PXUKSW5k ZXg6IHBocC1zcmMvZXh0L3N0YW5kYXJkL3Rlc3RzL3N0cmluZ3MvYWRkLWFuZC1zdHJpcHNsYXNo ZXMucGhwdApkaWZmIC11IHBocC1zcmMvZXh0L3N0YW5kYXJkL3Rlc3RzL3N0cmluZ3MvYWRkLWFu ZC1zdHJpcHNsYXNoZXMucGhwdDoxLjMgcGhwLXNyYy9leHQvc3RhbmRhcmQvdGVzdHMvc3RyaW5n cy9hZGQtYW5kLXN0cmlwc2xhc2hlcy5waHB0OjEuNAotLS0gcGhwLXNyYy9leHQvc3RhbmRhcmQv dGVzdHMvc3RyaW5ncy9hZGQtYW5kLXN0cmlwc2xhc2hlcy5waHB0OjEuMwlXZWQgTWF5IDE5IDA4 OjQ1OjIzIDIwMDQKKysrIHBocC1zcmMvZXh0L3N0YW5kYXJkL3Rlc3RzL3N0cmluZ3MvYWRkLWFu ZC1zdHJpcHNsYXNoZXMucGhwdAlXZWQgTWFyICA4IDAwOjQzOjI4IDIwMDYKQEAgLTksMjIgKzks MTEgQEAKIH0KIAogZWNobyAiTm9ybWFsOiAiOwotaW5pX3NldCgnbWFnaWNfcXVvdGVzX3N5YmFz ZScsIDApOwogaWYoJGlucHV0ID09PSBzdHJpcHNsYXNoZXMoYWRkc2xhc2hlcygkaW5wdXQpKSkg ewogCWVjaG8gIk9LXG4iOwogfSBlbHNlIHsKIAllY2hvICJGQUlMRURcbiI7CiB9Ci0KLWVjaG8g IlN5YmFzZTogIjsKLWluaV9zZXQoJ21hZ2ljX3F1b3Rlc19zeWJhc2UnLCAxKTsKLWlmKCRpbnB1 dCA9PT0gc3RyaXBzbGFzaGVzKGFkZHNsYXNoZXMoJGlucHV0KSkpIHsKLQllY2hvICJPS1xuIjsK LX0gZWxzZSB7Ci0JZWNobyAiRkFJTEVEXG4iOwotfQotCiA/PgogLS1FWFBFQ1QtLQogTm9ybWFs OiBPSwotU3liYXNlOiBPSwpodHRwOi8vY3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9l eHQvc3liYXNlL3BocF9zeWJhc2VfZGIuYz9yMT0xLjcxJnIyPTEuNzImZGlmZl9mb3JtYXQ9dQpJ bmRleDogcGhwLXNyYy9leHQvc3liYXNlL3BocF9zeWJhc2VfZGIuYwpkaWZmIC11IHBocC1zcmMv ZXh0L3N5YmFzZS9waHBfc3liYXNlX2RiLmM6MS43MSBwaHAtc3JjL2V4dC9zeWJhc2UvcGhwX3N5 YmFzZV9kYi5jOjEuNzIKLS0tIHBocC1zcmMvZXh0L3N5YmFzZS9waHBfc3liYXNlX2RiLmM6MS43 MQlTdW4gSmFuICAxIDEzOjA5OjU2IDIwMDYKKysrIHBocC1zcmMvZXh0L3N5YmFzZS9waHBfc3li YXNlX2RiLmMJV2VkIE1hciAgOCAwMDo0MzoyOCAyMDA2CkBAIC0yMCw3ICsyMCw3IEBACiAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKICAqLwogIAotLyogJElkOiBwaHBfc3liYXNlX2RiLmMsdiAxLjcxIDIw MDYvMDEvMDEgMTM6MDk6NTYgc25pcGVyIEV4cCAkICovCisvKiAkSWQ6IHBocF9zeWJhc2VfZGIu Yyx2IDEuNzIgMjAwNi8wMy8wOCAwMDo0MzoyOCBwYWpveWUgRXhwICQgKi8KIAogCiAjaWZkZWYg SEFWRV9DT05GSUdfSApAQCAtODU4LDkgKzg1OCw2IEBACiAJCQkJenZhbCAqY3VyX3ZhbHVlID0g cmVzdWx0LT5kYXRhW2ldW2otMV07CiAKIAkJCQljb252ZXJ0X3RvX3N0cmluZyhjdXJfdmFsdWUp OwotCQkJCWlmIChQRyhtYWdpY19xdW90ZXNfcnVudGltZSkpIHsKLQkJCQkJWl9TVFJWQUxfUChj dXJfdmFsdWUpID0gcGhwX2FkZHNsYXNoZXMoWl9TVFJWQUxfUChjdXJfdmFsdWUpLCBaX1NUUkxF Tl9QKGN1cl92YWx1ZSksICZaX1NUUkxFTl9QKGN1cl92YWx1ZSksMCBUU1JNTFNfQ0MpOwotCQkJ CX0KIAkJCX0KIAkJfQogCQlyZXR2YWx1ZT1kYm5leHRyb3coc3liYXNlX3B0ci0+bGluayk7Cmh0 dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC9zeWJhc2VfY3QvcGhwX3N5 YmFzZV9jdC5jP3IxPTEuMTA5JnIyPTEuMTEwJmRpZmZfZm9ybWF0PXUKSW5kZXg6IHBocC1zcmMv ZXh0L3N5YmFzZV9jdC9waHBfc3liYXNlX2N0LmMKZGlmZiAtdSBwaHAtc3JjL2V4dC9zeWJhc2Vf Y3QvcGhwX3N5YmFzZV9jdC5jOjEuMTA5IHBocC1zcmMvZXh0L3N5YmFzZV9jdC9waHBfc3liYXNl X2N0LmM6MS4xMTAKLS0tIHBocC1zcmMvZXh0L3N5YmFzZV9jdC9waHBfc3liYXNlX2N0LmM6MS4x MDkJU3VuIEphbiAgMSAxMzowOTo1NiAyMDA2CisrKyBwaHAtc3JjL2V4dC9zeWJhc2VfY3QvcGhw X3N5YmFzZV9jdC5jCVdlZCBNYXIgIDggMDA6NDM6MjggMjAwNgpAQCAtMTgsNyArMTgsNyBAQAog ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCiAgKi8KIAotLyogJElkOiBwaHBfc3liYXNlX2N0LmMsdiAxLjEw OSAyMDA2LzAxLzAxIDEzOjA5OjU2IHNuaXBlciBFeHAgJCAqLworLyogJElkOiBwaHBfc3liYXNl X2N0LmMsdiAxLjExMCAyMDA2LzAzLzA4IDAwOjQzOjI4IHBham95ZSBFeHAgJCAqLwogCiAKICNp ZmRlZiBIQVZFX0NPTkZJR19ICkBAIC0xNzgwLDExICsxNzgwLDcgQEAKIAkJQUxMT0NfWlZBTCh0 bXApOwogCQkqdG1wID0gcmVzdWx0LT5kYXRhW3Jlc3VsdC0+c3RvcmUgPyByZXN1bHQtPmN1cl9y b3cgOiAwXVtpXTsKIAkJSU5JVF9QWlZBTCh0bXApOwotCQlpZiAoUEcobWFnaWNfcXVvdGVzX3J1 bnRpbWUpICYmIFpfVFlQRV9QKHRtcCkgPT0gSVNfU1RSSU5HKSB7Ci0JCQlaX1NUUlZBTF9QKHRt cCkgPSBwaHBfYWRkc2xhc2hlcyhaX1NUUlZBTF9QKHRtcCksIFpfU1RSTEVOX1AodG1wKSwgJlpf U1RSTEVOX1AodG1wKSwgMCBUU1JNTFNfQ0MpOwotCQl9IGVsc2UgewotCQkJenZhbF9jb3B5X2N0 b3IodG1wKTsKLQkJfQorCQl6dmFsX2NvcHlfY3Rvcih0bXApOwogCQlpZiAobnVtZXJpY3MpIHsK IAkJCXplbmRfaGFzaF9pbmRleF91cGRhdGUoWl9BUlJWQUxfUChyZXR1cm5fdmFsdWUpLCBpLCAo dm9pZCAqKSAmdG1wLCBzaXplb2YoenZhbCAqKSwgTlVMTCk7CiAJCQl0bXAtPnJlZmNvdW50Kys7 Cmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC94bWwvdGVzdHMveG1s MDAxLnBocHQ/cjE9MS40JnIyPTEuNSZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC94 bWwvdGVzdHMveG1sMDAxLnBocHQKZGlmZiAtdSBwaHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDAx LnBocHQ6MS40IHBocC1zcmMvZXh0L3htbC90ZXN0cy94bWwwMDEucGhwdDoxLjUKLS0tIHBocC1z cmMvZXh0L3htbC90ZXN0cy94bWwwMDEucGhwdDoxLjQJRnJpIERlYyAyMyAwODo0NDozNCAyMDA1 CisrKyBwaHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDAxLnBocHQJV2VkIE1hciAgOCAwMDo0Mzoy OCAyMDA2CkBAIC01LDggKzUsNiBAQAogcmVxdWlyZV9vbmNlKCJza2lwaWYuaW5jIik7CiBYTUxf U0FYX0lNUEwgPT0gJ2xpYnhtbCcgJiYgZGllKCdza2lwIHRoaXMgdGVzdCBpcyBub3QgaW50ZW5k ZWQgZm9yIGxpYnhtbCBTQVggcGFyc2VyJyk7CiA/PgotLS1JTkktLQotbWFnaWNfcXVvdGVzX3J1 bnRpbWU9MAogLS1GSUxFLS0KIDw/cGhwCiBjaGRpcihkaXJuYW1lKF9fRklMRV9fKSk7Cmh0dHA6 Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDAyLnBo cHQ/cjE9MS40JnIyPTEuNSZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC94bWwvdGVz dHMveG1sMDAyLnBocHQKZGlmZiAtdSBwaHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDAyLnBocHQ6 MS40IHBocC1zcmMvZXh0L3htbC90ZXN0cy94bWwwMDIucGhwdDoxLjUKLS0tIHBocC1zcmMvZXh0 L3htbC90ZXN0cy94bWwwMDIucGhwdDoxLjQJRnJpIERlYyAyMyAwODo0NDozNCAyMDA1CisrKyBw aHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDAyLnBocHQJV2VkIE1hciAgOCAwMDo0MzoyOCAyMDA2 CkBAIC01LDggKzUsNiBAQAogcmVxdWlyZV9vbmNlKCJza2lwaWYuaW5jIik7CiBYTUxfU0FYX0lN UEwgPT0gJ2xpYnhtbCcgJiYgZGllKCdza2lwIHRoaXMgdGVzdCBpcyBub3QgaW50ZW5kZWQgZm9y IGxpYnhtbCBTQVggcGFyc2VyJyk7CiA/PgotLS1JTkktLQotbWFnaWNfcXVvdGVzX3J1bnRpbWU9 MAogLS1GSUxFLS0KIDw/cGhwCiBjaGRpcihkaXJuYW1lKF9fRklMRV9fKSk7Cmh0dHA6Ly9jdnMu cGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDAzLnBocHQ/cjE9 MS40JnIyPTEuNSZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC94bWwvdGVzdHMveG1s MDAzLnBocHQKZGlmZiAtdSBwaHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDAzLnBocHQ6MS40IHBo cC1zcmMvZXh0L3htbC90ZXN0cy94bWwwMDMucGhwdDoxLjUKLS0tIHBocC1zcmMvZXh0L3htbC90 ZXN0cy94bWwwMDMucGhwdDoxLjQJRnJpIERlYyAyMyAwODo0NDozNCAyMDA1CisrKyBwaHAtc3Jj L2V4dC94bWwvdGVzdHMveG1sMDAzLnBocHQJV2VkIE1hciAgOCAwMDo0MzoyOCAyMDA2CkBAIC01 LDggKzUsNiBAQAogcmVxdWlyZV9vbmNlKCJza2lwaWYuaW5jIik7CiBYTUxfU0FYX0lNUEwgPT0g J2xpYnhtbCcgJiYgZGllKCdza2lwIHRoaXMgdGVzdCBpcyBub3QgaW50ZW5kZWQgZm9yIGxpYnht bCBTQVggcGFyc2VyJyk7CiA/PgotLS1JTkktLQotbWFnaWNfcXVvdGVzX3J1bnRpbWU9MAogLS1G SUxFLS0KIDw/cGhwCiBjaGRpcihkaXJuYW1lKF9fRklMRV9fKSk7Cmh0dHA6Ly9jdnMucGhwLm5l dC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDA0LnBocHQ/cjE9MS4yJnIy PTEuMyZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDA0LnBo cHQKZGlmZiAtdSBwaHAtc3JjL2V4dC94bWwvdGVzdHMveG1sMDA0LnBocHQ6MS4yIHBocC1zcmMv ZXh0L3htbC90ZXN0cy94bWwwMDQucGhwdDoxLjMKLS0tIHBocC1zcmMvZXh0L3htbC90ZXN0cy94 bWwwMDQucGhwdDoxLjIJVHVlIE9jdCAyOSAxMjoxMjoxOSAyMDAyCisrKyBwaHAtc3JjL2V4dC94 bWwvdGVzdHMveG1sMDA0LnBocHQJV2VkIE1hciAgOCAwMDo0MzoyOCAyMDA2CkBAIC0yLDggKzIs NiBAQAogWE1MIHBhcnNlciBjYXNlIGZvbGRpbmcgdGVzdAogLS1TS0lQSUYtLQogPD9waHAgaW5j bHVkZSgic2tpcGlmLmluYyIpOyA/PgotLS1JTkktLQotbWFnaWNfcXVvdGVzX3J1bnRpbWU9MAog LS1GSUxFLS0KIDw/cGhwCiBjaGRpcihkaXJuYW1lKF9fRklMRV9fKSk7Cmh0dHA6Ly9jdnMucGhw Lm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL2V4dC96bGliL3psaWIuYz9yMT0xLjE5MCZyMj0xLjE5 MSZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL2V4dC96bGliL3psaWIuYwpkaWZmIC11IHBo cC1zcmMvZXh0L3psaWIvemxpYi5jOjEuMTkwIHBocC1zcmMvZXh0L3psaWIvemxpYi5jOjEuMTkx Ci0tLSBwaHAtc3JjL2V4dC96bGliL3psaWIuYzoxLjE5MAlTdW4gRmViIDE5IDA0OjI5OjQxIDIw MDYKKysrIHBocC1zcmMvZXh0L3psaWIvemxpYi5jCVdlZCBNYXIgIDggMDA6NDM6MjkgMjAwNgpA QCAtMTksNyArMTksNyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgKi8KIAotLyogJElkOiB6bGli LmMsdiAxLjE5MCAyMDA2LzAyLzE5IDA0OjI5OjQxIGFuZGkgRXhwICQgKi8KKy8qICRJZDogemxp Yi5jLHYgMS4xOTEgMjAwNi8wMy8wOCAwMDo0MzoyOSBwYWpveWUgRXhwICQgKi8KIAogI2lmZGVm IEhBVkVfQ09ORklHX0gKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTMwNywxNCArMzA3LDcgQEAK IAltZW1zZXQoYnVmLDAsc2l6ZW9mKGJ1ZikpOwogCiAJd2hpbGUgKHBocF9zdHJlYW1fZ2V0cyhz dHJlYW0sIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKSAhPSBOVUxMKSB7Ci0JCWlmIChQRyhtYWdpY19x dW90ZXNfcnVudGltZSkpIHsKLQkJCWludCBsZW47Ci0JCQkKLQkJCXNsYXNoZWQgPSBwaHBfYWRk c2xhc2hlcyhidWYsIDAsICZsZW4sIDAgVFNSTUxTX0NDKTsgLyogMCA9IGRvbid0IGZyZWUgc291 cmNlIHN0cmluZyAqLwotCQkJYWRkX2luZGV4X3N0cmluZ2wocmV0dXJuX3ZhbHVlLCBpKyssIHNs YXNoZWQsIGxlbiwgMCk7Ci0JCX0gZWxzZSB7Ci0JCQlhZGRfaW5kZXhfc3RyaW5nKHJldHVybl92 YWx1ZSwgaSsrLCBidWYsIDEpOwotCQl9CisJCWFkZF9pbmRleF9zdHJpbmcocmV0dXJuX3ZhbHVl LCBpKyssIGJ1ZiwgMSk7CiAJfQogCXBocF9zdHJlYW1fY2xvc2Uoc3RyZWFtKTsKIH0KaHR0cDov L2N2cy5waHAubmV0L3ZpZXdjdnMuY2dpL3BocC1zcmMvbWFpbi9tYWluLmM/cjE9MS42NjgmcjI9 MS42NjkmZGlmZl9mb3JtYXQ9dQpJbmRleDogcGhwLXNyYy9tYWluL21haW4uYwpkaWZmIC11IHBo cC1zcmMvbWFpbi9tYWluLmM6MS42NjggcGhwLXNyYy9tYWluL21haW4uYzoxLjY2OQotLS0gcGhw LXNyYy9tYWluL21haW4uYzoxLjY2OAlUdWUgTWFyICA3IDAwOjIwOjUzIDIwMDYKKysrIHBocC1z cmMvbWFpbi9tYWluLmMJV2VkIE1hciAgOCAwMDo0MzoyOSAyMDA2CkBAIC0xOCw3ICsxOCw3IEBA CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKICovCiAKLS8qICRJZDogbWFpbi5jLHYgMS42NjggMjAwNi8w My8wNyAwMDoyMDo1MyBwYWpveWUgRXhwICQgKi8KKy8qICRJZDogbWFpbi5jLHYgMS42NjkgMjAw Ni8wMy8wOCAwMDo0MzoyOSBwYWpveWUgRXhwICQgKi8KIAogLyoge3t7IGluY2x1ZGVzCiAgKi8K QEAgLTM3NSw5ICszNzUsNiBAQAogCVNURF9QSFBfSU5JX0JPT0xFQU4oImlnbm9yZV9yZXBlYXRl ZF9zb3VyY2UiLAkiMCIsCVBIUF9JTklfQUxMLAkJT25VcGRhdGVCb29sLAkJCWlnbm9yZV9yZXBl YXRlZF9zb3VyY2UsCXBocF9jb3JlX2dsb2JhbHMsCWNvcmVfZ2xvYmFscykKIAlTVERfUEhQX0lO SV9CT09MRUFOKCJyZXBvcnRfbWVtbGVha3MiLAkJIjEiLAkJUEhQX0lOSV9BTEwsCQlPblVwZGF0 ZUJvb2wsCQkJcmVwb3J0X21lbWxlYWtzLAkJcGhwX2NvcmVfZ2xvYmFscywJY29yZV9nbG9iYWxz KQogCVNURF9QSFBfSU5JX0JPT0xFQU4oInJlcG9ydF96ZW5kX2RlYnVnIiwJIjEiLAkJUEhQX0lO SV9BTEwsCQlPblVwZGF0ZUJvb2wsCQkJcmVwb3J0X3plbmRfZGVidWcsCQlwaHBfY29yZV9nbG9i YWxzLAljb3JlX2dsb2JhbHMpCi0JU1REX1BIUF9JTklfQk9PTEVBTigibWFnaWNfcXVvdGVzX2dw YyIsCQkiMSIsCQlQSFBfSU5JX1BFUkRJUnxQSFBfSU5JX1NZU1RFTSwJT25VcGRhdGVCb29sLAlt YWdpY19xdW90ZXNfZ3BjLAkJcGhwX2NvcmVfZ2xvYmFscywJY29yZV9nbG9iYWxzKQotCVNURF9Q SFBfSU5JX0JPT0xFQU4oIm1hZ2ljX3F1b3Rlc19ydW50aW1lIiwJIjAiLAkJUEhQX0lOSV9BTEws CQlPblVwZGF0ZUJvb2wsCQkJbWFnaWNfcXVvdGVzX3J1bnRpbWUsCXBocF9jb3JlX2dsb2JhbHMs CWNvcmVfZ2xvYmFscykKLQlTVERfUEhQX0lOSV9CT09MRUFOKCJtYWdpY19xdW90ZXNfc3liYXNl IiwJIjAiLAkJUEhQX0lOSV9BTEwsCQlPblVwZGF0ZUJvb2wsCQkJbWFnaWNfcXVvdGVzX3N5YmFz ZSwJcGhwX2NvcmVfZ2xvYmFscywJY29yZV9nbG9iYWxzKQogCVNURF9QSFBfSU5JX0VOVFJZKCJv dXRwdXRfYnVmZmVyaW5nIiwJCSIwIiwJCVBIUF9JTklfUEVSRElSfFBIUF9JTklfU1lTVEVNLAlP blVwZGF0ZUxvbmcsCW91dHB1dF9idWZmZXJpbmcsCQlwaHBfY29yZV9nbG9iYWxzLAljb3JlX2ds b2JhbHMpCiAJU1REX1BIUF9JTklfRU5UUlkoIm91dHB1dF9oYW5kbGVyIiwJCQlOVUxMLAkJUEhQ X0lOSV9QRVJESVJ8UEhQX0lOSV9TWVNURU0sCU9uVXBkYXRlU3RyaW5nLAlvdXRwdXRfaGFuZGxl ciwJCXBocF9jb3JlX2dsb2JhbHMsCWNvcmVfZ2xvYmFscykKIAlTVERfUEhQX0lOSV9CT09MRUFO KCJyZWdpc3Rlcl9hcmdjX2FyZ3YiLAkiMSIsCQlQSFBfSU5JX1BFUkRJUnxQSFBfSU5JX1NZU1RF TSwJT25VcGRhdGVCb29sLAlyZWdpc3Rlcl9hcmdjX2FyZ3YsCQlwaHBfY29yZV9nbG9iYWxzLAlj b3JlX2dsb2JhbHMpCmh0dHA6Ly9jdnMucGhwLm5ldC92aWV3Y3ZzLmNnaS9waHAtc3JjL21haW4v cGhwX2dsb2JhbHMuaD9yMT0xLjEwMSZyMj0xLjEwMiZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAt c3JjL21haW4vcGhwX2dsb2JhbHMuaApkaWZmIC11IHBocC1zcmMvbWFpbi9waHBfZ2xvYmFscy5o OjEuMTAxIHBocC1zcmMvbWFpbi9waHBfZ2xvYmFscy5oOjEuMTAyCi0tLSBwaHAtc3JjL21haW4v cGhwX2dsb2JhbHMuaDoxLjEwMQlUdWUgTWFyICA3IDAwOjIwOjU0IDIwMDYKKysrIHBocC1zcmMv bWFpbi9waHBfZ2xvYmFscy5oCVdlZCBNYXIgIDggMDA6NDM6MjkgMjAwNgpAQCAtMTYsNyArMTYs NyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAqLwogCi0vKiAkSWQ6IHBocF9nbG9iYWxzLmgsdiAx LjEwMSAyMDA2LzAzLzA3IDAwOjIwOjU0IHBham95ZSBFeHAgJCAqLworLyogJElkOiBwaHBfZ2xv YmFscy5oLHYgMS4xMDIgMjAwNi8wMy8wOCAwMDo0MzoyOSBwYWpveWUgRXhwICQgKi8KIAogI2lm bmRlZiBQSFBfR0xPQkFMU19ICiAjZGVmaW5lIFBIUF9HTE9CQUxTX0gKQEAgLTUwLDEwICs1MCw2 IEBACiB9IGFyZ19zZXBhcmF0b3JzOwogCiBzdHJ1Y3QgX3BocF9jb3JlX2dsb2JhbHMgewotCXpl bmRfYm9vbCBtYWdpY19xdW90ZXNfZ3BjOwotCXplbmRfYm9vbCBtYWdpY19xdW90ZXNfcnVudGlt ZTsKLQl6ZW5kX2Jvb2wgbWFnaWNfcXVvdGVzX3N5YmFzZTsKLQogCXplbmRfYm9vbCBzYWZlX21v ZGU7CiAKIAl6ZW5kX2Jvb2wgYWxsb3dfY2FsbF90aW1lX3Bhc3NfcmVmZXJlbmNlOwpodHRwOi8v Y3ZzLnBocC5uZXQvdmlld2N2cy5jZ2kvcGhwLXNyYy9tYWluL3BocF92YXJpYWJsZXMuYz9yMT0x LjExOCZyMj0xLjExOSZkaWZmX2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL21haW4vcGhwX3Zhcmlh Ymxlcy5jCmRpZmYgLXUgcGhwLXNyYy9tYWluL3BocF92YXJpYWJsZXMuYzoxLjExOCBwaHAtc3Jj L21haW4vcGhwX3ZhcmlhYmxlcy5jOjEuMTE5Ci0tLSBwaHAtc3JjL21haW4vcGhwX3ZhcmlhYmxl cy5jOjEuMTE4CVR1ZSBNYXIgIDcgMDA6MjA6NTQgMjAwNgorKysgcGhwLXNyYy9tYWluL3BocF92 YXJpYWJsZXMuYwlXZWQgTWFyICA4IDAwOjQzOjI5IDIwMDYKQEAgLTE3LDcgKzE3LDcgQEAKICAg ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwogICovCiAKLS8qICRJZDogcGhwX3ZhcmlhYmxlcy5jLHYgMS4xMTgg MjAwNi8wMy8wNyAwMDoyMDo1NCBwYWpveWUgRXhwICQgKi8KKy8qICRJZDogcGhwX3ZhcmlhYmxl cy5jLHYgMS4xMTkgMjAwNi8wMy8wOCAwMDo0MzoyOSBwYWpveWUgRXhwICQgKi8KIAogI2luY2x1 ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSAicGhwLmgiCkBAIC00NywxMSArNDcsNyBAQAogCQogCS8q IFByZXBhcmUgdmFsdWUgKi8KIAlaX1NUUkxFTihuZXdfZW50cnkpID0gc3RyX2xlbjsKLQlpZiAo UEcobWFnaWNfcXVvdGVzX2dwYykpIHsKLQkJWl9TVFJWQUwobmV3X2VudHJ5KSA9IHBocF9hZGRz bGFzaGVzKHN0cnZhbCwgWl9TVFJMRU4obmV3X2VudHJ5KSwgJlpfU1RSTEVOKG5ld19lbnRyeSks IDAgVFNSTUxTX0NDKTsKLQl9IGVsc2UgewotCQlaX1NUUlZBTChuZXdfZW50cnkpID0gZXN0cm5k dXAoc3RydmFsLCBaX1NUUkxFTihuZXdfZW50cnkpKTsKLQl9CisJWl9TVFJWQUwobmV3X2VudHJ5 KSA9IGVzdHJuZHVwKHN0cnZhbCwgWl9TVFJMRU4obmV3X2VudHJ5KSk7CiAJWl9UWVBFKG5ld19l bnRyeSkgPSBJU19TVFJJTkc7CiAKIAlwaHBfcmVnaXN0ZXJfdmFyaWFibGVfZXgodmFyLCAmbmV3 X2VudHJ5LCB0cmFja192YXJzX2FycmF5IFRTUk1MU19DQyk7CkBAIC02NCwxMyArNjAsNyBAQAog CQogCS8qIFByZXBhcmUgdmFsdWUgKi8KIAlaX1VTVFJMRU4obmV3X2VudHJ5KSA9IHN0cl9sZW47 Ci0JaWYgKFBHKG1hZ2ljX3F1b3Rlc19ncGMpKSB7Ci0JCS8qIFVUT0RPIGltcGxlbWVudCBwaHBf dV9hZGRzbGFzaGVzKCkgKi8KLQkJLy9aX1VTVFJWQUwobmV3X2VudHJ5KSA9IHBocF9hZGRzbGFz aGVzKHN0cnZhbCwgWl9VU1RSTEVOKG5ld19lbnRyeSksICZaX1VTVFJMRU4obmV3X2VudHJ5KSwg MCBUU1JNTFNfQ0MpOwotCQlaX1VTVFJWQUwobmV3X2VudHJ5KSA9IGV1c3RybmR1cChzdHJ2YWws IFpfVVNUUkxFTihuZXdfZW50cnkpKTsKLQl9IGVsc2UgewotCQlaX1VTVFJWQUwobmV3X2VudHJ5 KSA9IGV1c3RybmR1cChzdHJ2YWwsIFpfVVNUUkxFTihuZXdfZW50cnkpKTsKLQl9CisJWl9VU1RS VkFMKG5ld19lbnRyeSkgPSBldXN0cm5kdXAoc3RydmFsLCBaX1VTVFJMRU4obmV3X2VudHJ5KSk7 CiAJWl9UWVBFKG5ld19lbnRyeSkgPSBJU19VTklDT0RFOwogCiAJcGhwX3VfcmVnaXN0ZXJfdmFy aWFibGVfZXgodmFyLCAmbmV3X2VudHJ5LCB0cmFja192YXJzX2FycmF5IFRTUk1MU19DQyk7CkBA IC0xNzEsMTIgKzE2MSw4IEBACiAJCQkJYXJyYXlfaW5pdChncGNfZWxlbWVudCk7CiAJCQkJemVu ZF9oYXNoX25leHRfaW5kZXhfaW5zZXJ0KHN5bXRhYmxlMSwgJmdwY19lbGVtZW50LCBzaXplb2Yo enZhbCAqKSwgKHZvaWQgKiopICZncGNfZWxlbWVudF9wKTsKIAkJCX0gZWxzZSB7Ci0JCQkJaWYg KFBHKG1hZ2ljX3F1b3Rlc19ncGMpICYmIChpbmRleCAhPSB2YXIpKSB7Ci0JCQkJCS8qIG5vIG5l ZWQgdG8gYWRkc2xhc2hlcygpIHRoZSBpbmRleCBpZiBpdCdzIHRoZSBtYWluIHZhcmlhYmxlIG5h bWUgKi8KLQkJCQkJZXNjYXBlZF9pbmRleCA9IHBocF9hZGRzbGFzaGVzKGluZGV4LCBpbmRleF9s ZW4sICZpbmRleF9sZW4sIDAgVFNSTUxTX0NDKTsKLQkJCQl9IGVsc2UgewotCQkJCQllc2NhcGVk X2luZGV4ID0gaW5kZXg7Ci0JCQkJfQorCQkJCWVzY2FwZWRfaW5kZXggPSBpbmRleDsKKwogCQkJ CWlmICh6ZW5kX3N5bXRhYmxlX2ZpbmQoc3ltdGFibGUxLCBlc2NhcGVkX2luZGV4LCBpbmRleF9s ZW4gKyAxLCAodm9pZCAqKikgJmdwY19lbGVtZW50X3ApID09IEZBSUxVUkUKIAkJCQkJfHwgWl9U WVBFX1BQKGdwY19lbGVtZW50X3ApICE9IElTX0FSUkFZKSB7CiAJCQkJCU1BS0VfU1REX1pWQUwo Z3BjX2VsZW1lbnQpOwpAQCAtMjA5LDExICsxOTUsOCBAQAogCQkJfSBlbHNlIHsKIAkJCQl6dmFs ICoqdG1wOwogCi0JCQkJaWYgKFBHKG1hZ2ljX3F1b3Rlc19ncGMpKSB7IAotCQkJCQllc2NhcGVk X2luZGV4ID0gcGhwX2FkZHNsYXNoZXMoaW5kZXgsIGluZGV4X2xlbiwgJmluZGV4X2xlbiwgMCBU U1JNTFNfQ0MpOwotCQkJCX0gZWxzZSB7Ci0JCQkJCWVzY2FwZWRfaW5kZXggPSBpbmRleDsKLQkJ CQl9CisJCQkJZXNjYXBlZF9pbmRleCA9IGluZGV4OworCiAJCQkJLyogCiAJCQkJICogQWNjb3Jk aW5nIHRvIHJmYzI5NjUsIG1vcmUgc3BlY2lmaWMgcGF0aHMgYXJlIGxpc3RlZCBhYm92ZSB0aGUg bGVzcyBzcGVjaWZpYyBvbmVzLgogCQkJCSAqIElmIHdlIGVuY291bnRlciBhIGR1cGxpY2F0ZSBj b29raWUgbmFtZSwgd2Ugc2hvdWxkIHNraXAgaXQsIHNpbmNlIGl0IGlzIG5vdCBwb3NzaWJsZQpA QCAtMzI3LDE0ICszMTAsOCBAQAogCQkJCWFycmF5X2luaXQoZ3BjX2VsZW1lbnQpOwogCQkJCXpl bmRfaGFzaF9uZXh0X2luZGV4X2luc2VydChzeW10YWJsZTEsICZncGNfZWxlbWVudCwgc2l6ZW9m KHp2YWwgKiksICh2b2lkICoqKSAmZ3BjX2VsZW1lbnRfcCk7CiAJCQl9IGVsc2UgewotCQkJCWlm IChQRyhtYWdpY19xdW90ZXNfZ3BjKSAmJiAoaW5kZXghPXZhcikpIHsKLQkJCQkJLyogVVRPRE8g Zml4IGZvciBtYWdpY19xdW90ZXNfZ3BjIGNhc2UgKi8KLQkJCQkJLyogbm8gbmVlZCB0byBhZGRz bGFzaGVzKCkgdGhlIGluZGV4IGlmIGl0J3MgdGhlIG1haW4gdmFyaWFibGUgbmFtZSAqLwotCQkJ CQkvL2VzY2FwZWRfaW5kZXggPSBwaHBfYWRkc2xhc2hlcyhpbmRleCwgaW5kZXhfbGVuLCAmaW5k ZXhfbGVuLCAwIFRTUk1MU19DQyk7Ci0JCQkJCWVzY2FwZWRfaW5kZXgudSA9IGluZGV4OwotCQkJ CX0gZWxzZSB7Ci0JCQkJCWVzY2FwZWRfaW5kZXgudSA9IGluZGV4OwotCQkJCX0KKwkJCQllc2Nh cGVkX2luZGV4LnUgPSBpbmRleDsKKwogCQkJCWlmICh6ZW5kX3Vfc3ltdGFibGVfZmluZChzeW10 YWJsZTEsIElTX1VOSUNPREUsIGVzY2FwZWRfaW5kZXgsIGluZGV4X2xlbisxLCAodm9pZCAqKikg JmdwY19lbGVtZW50X3ApPT1GQUlMVVJFCiAJCQkJCXx8IFpfVFlQRV9QUChncGNfZWxlbWVudF9w KSAhPSBJU19BUlJBWSkgewogCQkJCQlNQUtFX1NURF9aVkFMKGdwY19lbGVtZW50KTsKQEAgLTYy OSwxMCArNjA2LDYgQEAKIAlzaXplX3QgYWxsb2Nfc2l6ZSA9IHNpemVvZihidWYpOwogCXVuc2ln bmVkIGxvbmcgbmxlbjsgLyogcHRyZGlmZl90IGlzIG5vdCBwb3J0YWJsZSAqLwogCi0JLyogdHVy biBvZmYgbWFnaWNfcXVvdGVzIHdoaWxlIGltcG9ydGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMg Ki8KLQlpbnQgbWFnaWNfcXVvdGVzX2dwYyA9IFBHKG1hZ2ljX3F1b3Rlc19ncGMpOwotCVBHKG1h Z2ljX3F1b3Rlc19ncGMpID0gMDsKLQogCWZvciAoZW52ID0gZW52aXJvbjsgZW52ICE9IE5VTEwg JiYgKmVudiAhPSBOVUxMOyBlbnYrKykgewogCQlwID0gc3RyY2hyKCplbnYsICc9Jyk7CiAJCWlm ICghcCkgewkJCQkvKiBtYWxmb3JtZWQgZW50cnk/ICovCkBAIC02NTAsNyArNjIzLDYgQEAKIAlp ZiAodCAhPSBidWYgJiYgdCAhPSBOVUxMKSB7CiAJCWVmcmVlKHQpOwogCX0KLQlQRyhtYWdpY19x dW90ZXNfZ3BjKSA9IG1hZ2ljX3F1b3Rlc19ncGM7CiB9CiAKIHplbmRfYm9vbCBwaHBfc3RkX2F1 dG9fZ2xvYmFsX2NhbGxiYWNrKGNoYXIgKm5hbWUsIHVpbnQgbmFtZV9sZW4gVFNSTUxTX0RDKQpA QCAtNzYwLDggKzczMiw2IEBACiBzdGF0aWMgaW5saW5lIHZvaWQgcGhwX3JlZ2lzdGVyX3NlcnZl cl92YXJpYWJsZXMoVFNSTUxTX0QpCiB7CiAJenZhbCAqYXJyYXlfcHRyID0gTlVMTDsKLQkvKiB0 dXJuIG9mZiBtYWdpY19xdW90ZXMgd2hpbGUgaW1wb3J0aW5nIHNlcnZlciB2YXJpYWJsZXMgKi8K LQlpbnQgbWFnaWNfcXVvdGVzX2dwYyA9IFBHKG1hZ2ljX3F1b3Rlc19ncGMpOwogCiAJQUxMT0Nf WlZBTChhcnJheV9wdHIpOwogCWFycmF5X2luaXQoYXJyYXlfcHRyKTsKQEAgLTc3MCw3ICs3NDAs NiBAQAogCQl6dmFsX3B0cl9kdG9yKCZQRyhodHRwX2dsb2JhbHMpW1RSQUNLX1ZBUlNfU0VSVkVS XSk7CiAJfQogCVBHKGh0dHBfZ2xvYmFscylbVFJBQ0tfVkFSU19TRVJWRVJdID0gYXJyYXlfcHRy OwotCVBHKG1hZ2ljX3F1b3Rlc19ncGMpID0gMDsKIAogCS8qIFNlcnZlciB2YXJpYWJsZXMgKi8K IAlpZiAoc2FwaV9tb2R1bGUucmVnaXN0ZXJfc2VydmVyX3ZhcmlhYmxlcykgewpAQCAtNzk0LDgg Kzc2Myw2IEBACiAJCVpfTFZBTChuZXdfZW50cnkpID0gc2FwaV9nZXRfcmVxdWVzdF90aW1lKFRT Uk1MU19DKTsKIAkJcGhwX3JlZ2lzdGVyX3ZhcmlhYmxlX2V4KCJSRVFVRVNUX1RJTUUiLCAmbmV3 X2VudHJ5LCBhcnJheV9wdHIgVFNSTUxTX0NDKTsKIAl9Ci0KLQlQRyhtYWdpY19xdW90ZXNfZ3Bj KSA9IG1hZ2ljX3F1b3Rlc19ncGM7CiB9CiAvKiB9fX0gKi8KIApodHRwOi8vY3ZzLnBocC5uZXQv dmlld2N2cy5jZ2kvcGhwLXNyYy9tYWluL3JmYzE4NjcuYz9yMT0xLjE4NCZyMj0xLjE4NSZkaWZm X2Zvcm1hdD11CkluZGV4OiBwaHAtc3JjL21haW4vcmZjMTg2Ny5jCmRpZmYgLXUgcGhwLXNyYy9t YWluL3JmYzE4NjcuYzoxLjE4NCBwaHAtc3JjL21haW4vcmZjMTg2Ny5jOjEuMTg1Ci0tLSBwaHAt c3JjL21haW4vcmZjMTg2Ny5jOjEuMTg0CVR1ZSBNYXIgIDcgMDA6MjA6NTQgMjAwNgorKysgcGhw LXNyYy9tYWluL3JmYzE4NjcuYwlXZWQgTWFyICA4IDAwOjQzOjI5IDIwMDYKQEAgLTE3LDcgKzE3 LDcgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICovCiAKLS8qICRJZDogcmZjMTg2Ny5jLHYgMS4x ODQgMjAwNi8wMy8wNyAwMDoyMDo1NCBwYWpveWUgRXhwICQgKi8KKy8qICRJZDogcmZjMTg2Ny5j LHYgMS4xODUgMjAwNi8wMy8wOCAwMDo0MzoyOSBwYWpveWUgRXhwICQgKi8KIAogLyoKICAqICBU aGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBBcGFjaGUgR3Jv dXAKQEAgLTEwMDUsNyArMTAwNSw2IEBACiAJaW50IGJvdW5kYXJ5X2xlbj0wLCB0b3RhbF9ieXRl cz0wLCBjYW5jZWxfdXBsb2FkPTAsIGlzX2Fycl91cGxvYWQ9MCwgYXJyYXlfbGVuPTA7CiAJaW50 IG1heF9maWxlX3NpemU9MCwgc2tpcF91cGxvYWQ9MCwgYW5vbmluZGV4PTAsIGlzX2Fub255bW91 czsKIAl6dmFsICpodHRwX3Bvc3RfZmlsZXM9TlVMTDsgSGFzaFRhYmxlICp1cGxvYWRlZF9maWxl cz1OVUxMOwotCXplbmRfYm9vbCBtYWdpY19xdW90ZXNfZ3BjOwogCW11bHRpcGFydF9idWZmZXIg Km1idWZmOwogCXp2YWwgKmFycmF5X3B0ciA9ICh6dmFsICopIGFyZzsKIAlGSUxFICpmcDsKQEAg LTEzNDEsMTUgKzEzNDAsNiBAQAogCQkJaWYgKCh0bXAgPSB1X3N0cnJjaHIoZmlsZW5hbWUsIDB4 MmYgLyonLycqLykpID4gcykgewogCQkJCXMgPSB0bXA7CiAJCQl9Ci0jaWZkZWYgUEhQX1dJTjMy Ci0JCQlpZiAoUEcobWFnaWNfcXVvdGVzX2dwYykpIHsKLQkJCQlzID0gcyA/IHMgOiBmaWxlbmFt ZTsKLQkJCQl0bXAgPSB1X3N0cnJjaHIocywgMHgyNyAvKidcJycqLyk7Ci0JCQkJcyA9IHRtcCA+ IHMgPyB0bXAgOiBzOwotCQkJCXRtcCA9IHVfc3RycmNocihzLCAweDIyIC8qJyInKi8pOwotCQkJ CXMgPSB0bXAgPiBzID8gdG1wIDogczsKLQkJCX0KLSNlbmRpZgogCiAJCQlpZiAoIWlzX2Fub255 bW91cykgewogCQkJCWlmIChzICYmIHMgPiBmaWxlbmFtZSkgewpAQCAtMTQxOCw4ICsxNDA4LDYg QEAKIAkJCS8qIEluaXRpYWxpemUgdmFyaWFibGVzICovCiAJCQlhZGRfdV9wcm90ZWN0ZWRfdmFy aWFibGUocGFyYW0gVFNSTUxTX0NDKTsKIAotCQkJbWFnaWNfcXVvdGVzX2dwYyA9IFBHKG1hZ2lj X3F1b3Rlc19ncGMpOwotCQkJUEcobWFnaWNfcXVvdGVzX2dwYykgPSAwOwogCQkJLyogaWYgcGFy YW0gaXMgb2YgZm9ybSB4eHhbLipdIHRoaXMgd2lsbCBjdXQgaXQgdG8geHh4ICovCiAJCQlpZiAo IWlzX2Fub255bW91cykgewogCQkJCXNhZmVfdV9waHBfcmVnaXN0ZXJfdmFyaWFibGUocGFyYW0s IHRlbXBfZmlsZW5hbWUsIHVfc3RybGVuKHRlbXBfZmlsZW5hbWUpLCBOVUxMLCAxIFRTUk1MU19D Qyk7CkBAIC0xNDM0LDggKzE0MjIsNiBAQAogCQkJYWRkX3VfcHJvdGVjdGVkX3ZhcmlhYmxlKGxi dWYgVFNSTUxTX0NDKTsKIAkJCXJlZ2lzdGVyX3VfaHR0cF9wb3N0X2ZpbGVzX3ZhcmlhYmxlKGxi dWYsIHRlbXBfZmlsZW5hbWUsIHVfc3RybGVuKHRlbXBfZmlsZW5hbWUpLCBodHRwX3Bvc3RfZmls ZXMsIDEgVFNSTUxTX0NDKTsKIAotCQkJUEcobWFnaWNfcXVvdGVzX2dwYykgPSBtYWdpY19xdW90 ZXNfZ3BjOwotCiAJCQl7CiAJCQkJenZhbCBmaWxlX3NpemUsIGVycm9yX3R5cGU7CiAKQEAgLTE0 OTUsNyArMTQ4MSw2IEBACiAJaW50IHN0cl9sZW4gPSAwLCBudW1fdmFycyA9IDAsIG51bV92YXJz X21heCA9IDIqMTAsICpsZW5fbGlzdCA9IE5VTEw7CiAJY2hhciAqKnZhbF9saXN0ID0gTlVMTDsK ICNlbmRpZgotCXplbmRfYm9vbCBtYWdpY19xdW90ZXNfZ3BjOwogCW11bHRpcGFydF9idWZmZXIg Km1idWZmOwogCXp2YWwgKmFycmF5X3B0ciA9ICh6dmFsICopIGFyZzsKIAlpbnQgZmQ9LTE7CkBA IC0xODIyLDE1ICsxODA3LDYgQEAKIAkJCWlmICgodG1wID0gc3RycmNocihmaWxlbmFtZSwgJy8n KSkgPiBzKSB7CiAJCQkJcyA9IHRtcDsKIAkJCX0KLSNpZmRlZiBQSFBfV0lOMzIKLQkJCWlmIChQ RyhtYWdpY19xdW90ZXNfZ3BjKSkgewotCQkJCXMgPSBzID8gcyA6IGZpbGVuYW1lOwotCQkJCXRt cCA9IHN0cnJjaHIocywgJ1wnJyk7Ci0JCQkJcyA9IHRtcCA+IHMgPyB0bXAgOiBzOwotCQkJCXRt cCA9IHN0cnJjaHIocywgJyInKTsKLQkJCQlzID0gdG1wID4gcyA/IHRtcCA6IHM7Ci0JCQl9Ci0j ZW5kaWYKIAogI2lmIEhBVkVfTUJTVFJJTkcgJiYgIWRlZmluZWQoQ09NUElMRV9ETF9NQlNUUklO RykKIGZpbGVkb25lOgkJCQpAQCAtMTg5Niw4ICsxODcyLDYgQEAKIAkJCS8qIEluaXRpYWxpemUg dmFyaWFibGVzICovCiAJCQlhZGRfcHJvdGVjdGVkX3ZhcmlhYmxlKHBhcmFtIFRTUk1MU19DQyk7 CiAKLQkJCW1hZ2ljX3F1b3Rlc19ncGMgPSBQRyhtYWdpY19xdW90ZXNfZ3BjKTsKLQkJCVBHKG1h Z2ljX3F1b3Rlc19ncGMpID0gMDsKIAkJCS8qIGlmIHBhcmFtIGlzIG9mIGZvcm0geHh4Wy4qXSB0 aGlzIHdpbGwgY3V0IGl0IHRvIHh4eCAqLwogCQkJaWYgKCFpc19hbm9ueW1vdXMpIHsKIAkJCQlz YWZlX3BocF9yZWdpc3Rlcl92YXJpYWJsZShwYXJhbSwgdGVtcF9maWxlbmFtZSwgTlVMTCwgMSBU U1JNTFNfQ0MpOwpAQCAtMTkxMiw4ICsxODg2LDYgQEAKIAkJCWFkZF9wcm90ZWN0ZWRfdmFyaWFi bGUobGJ1ZiBUU1JNTFNfQ0MpOwogCQkJcmVnaXN0ZXJfaHR0cF9wb3N0X2ZpbGVzX3ZhcmlhYmxl KGxidWYsIHRlbXBfZmlsZW5hbWUsIGh0dHBfcG9zdF9maWxlcywgMSBUU1JNTFNfQ0MpOwogCi0J CQlQRyhtYWdpY19xdW90ZXNfZ3BjKSA9IG1hZ2ljX3F1b3Rlc19ncGM7Ci0KIAkJCXsKIAkJCQl6 dmFsIGZpbGVfc2l6ZSwgZXJyb3JfdHlwZTsKIApodHRwOi8vY3ZzLnBocC5uZXQvdmlld2N2cy5j Z2kvcGhwLXNyYy9zYXBpL2NnaS9jZ2lfbWFpbi5jP3IxPTEuMjc3JnIyPTEuMjc4JmRpZmZfZm9y bWF0PXUKSW5kZXg6IHBocC1zcmMvc2FwaS9jZ2kvY2dpX21haW4uYwpkaWZmIC11IHBocC1zcmMv c2FwaS9jZ2kvY2dpX21haW4uYzoxLjI3NyBwaHAtc3JjL3NhcGkvY2dpL2NnaV9tYWluLmM6MS4y NzgKLS0tIHBocC1zcmMvc2FwaS9jZ2kvY2dpX21haW4uYzoxLjI3NwlUdWUgTWFyICA3IDIyOjM3 OjE4IDIwMDYKKysrIHBocC1zcmMvc2FwaS9jZ2kvY2dpX21haW4uYwlXZWQgTWFyICA4IDAwOjQz OjI5IDIwMDYKQEAgLTIwLDcgKzIwLDcgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogKi8KIAotLyog JElkOiBjZ2lfbWFpbi5jLHYgMS4yNzcgMjAwNi8wMy8wNyAyMjozNzoxOCBhbGV4d2F1Z2ggRXhw ICQgKi8KKy8qICRJZDogY2dpX21haW4uYyx2IDEuMjc4IDIwMDYvMDMvMDggMDA6NDM6MjkgcGFq b3llIEV4cCAkICovCiAKICNpbmNsdWRlICJwaHAuaCIKICNpbmNsdWRlICJwaHBfZ2xvYmFscy5o IgpAQCAtNDIyLDEwICs0MjIsNyBAQAogCWlmICghRkNHWF9Jc0NHSSgpKSB7CiAJCUZDR1hfUmVx dWVzdCAqcmVxdWVzdCA9IChGQ0dYX1JlcXVlc3QgKikgU0coc2VydmVyX2NvbnRleHQpOwogCQlj aGFyICoqZW52LCAqcCwgKnQ7Ci0JCWludCBtYWdpY19xdW90ZXNfZ3BjID0gUEcobWFnaWNfcXVv dGVzX2dwYyk7CiAKLQkJLyogdHVybiBvZmYgbWFnaWNfcXVvdGVzIHdoaWxlIGltcG9ydGluZyBl bnZpcm9ubWVudCB2YXJpYWJsZXMgKi8KLQkJUEcobWFnaWNfcXVvdGVzX2dwYykgPSAwOwogCQlm b3IgKGVudiA9IHJlcXVlc3QtPmVudnA7IGVudiAhPSBOVUxMICYmICplbnYgIT0gTlVMTDsgZW52 KyspIHsKIAkJCXAgPSBzdHJjaHIoKmVudiwgJz0nKTsKIAkJCWlmICghcCkgewkJCQkvKiBtYWxm b3JtZWQgZW50cnk/ICovCkBAIC00MzUsNyArNDMyLDYgQEAKIAkJCXBocF9yZWdpc3Rlcl92YXJp YWJsZSh0LCBwICsgMSwgYXJyYXlfcHRyIFRTUk1MU19DQyk7CiAJCQllZnJlZSh0KTsKIAkJfQot CQlQRyhtYWdpY19xdW90ZXNfZ3BjKSA9IG1hZ2ljX3F1b3Rlc19ncGM7CiAJfQogCS8qIGNhbGwg cGhwJ3Mgb3JpZ2luYWwgaW1wb3J0IGFzIGEgY2F0Y2gtYWxsICovCiAJcGhwX3BocF9pbXBvcnRf ZW52aXJvbm1lbnRfdmFyaWFibGVzKGFycmF5X3B0ciBUU1JNTFNfQ0MpOwoKCg== --20cf3005151ce54bf104a8857510--