From: Date: August 28 2008 12:14am Subject: bzr commit into mysql-6.0-wl2110-review branch (marc.alff:2698) Bug#11661 WL#2110 WL#2265 List-Archive: http://lists.mysql.com/commits/52790 X-Bug: 11661 Message-Id: <20080827221422.341FF2DB5B@lambda.WEBLAB> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vaG9tZS9tYWxmZi9CWlItVFJFRS9teXNxbC02LjAtd2wyMTEwLXJldmlldy8K CiAyNjk4IE1hcmMgQWxmZgkyMDA4LTA4LTI3CiAgICAgIFdMIzIxMTAgKFNJR05BTCkKICAgICAg V0wjMjI2NSAoUkVTSUdOQUwpCiAgICAgIEJ1ZyMxMTY2MSAoUmFpc2luZyBFeGNlcHRpb25zIGZy b20gd2l0aGluIHN0b3JlZCBwcm9jZWR1cmVzOgogICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9y IFNJR05BTCBzdGF0ZW1lbnQpCmFkZGVkOgogIG15c3FsLXRlc3Qvci9zaWduYWwucmVzdWx0CiAg bXlzcWwtdGVzdC9yL3NpZ25hbF9jb2RlLnJlc3VsdAogIG15c3FsLXRlc3Qvci9zaWduYWxfZGVt bzEucmVzdWx0CiAgbXlzcWwtdGVzdC9yL3NpZ25hbF9kZW1vMi5yZXN1bHQKICBteXNxbC10ZXN0 L3Ivc2lnbmFsX2RlbW8zLnJlc3VsdAogIG15c3FsLXRlc3Qvci9zaWduYWxfc3FsbW9kZS5yZXN1 bHQKICBteXNxbC10ZXN0L3Ivc2lnbmFsX3V0ZjMyLnJlc3VsdAogIG15c3FsLXRlc3QvdC9zaWdu YWwudGVzdAogIG15c3FsLXRlc3QvdC9zaWduYWxfY29kZS50ZXN0CiAgbXlzcWwtdGVzdC90L3Np Z25hbF9kZW1vMS50ZXN0CiAgbXlzcWwtdGVzdC90L3NpZ25hbF9kZW1vMi50ZXN0CiAgbXlzcWwt dGVzdC90L3NpZ25hbF9kZW1vMy50ZXN0CiAgbXlzcWwtdGVzdC90L3NpZ25hbF9zcWxtb2RlLnRl c3QKICBteXNxbC10ZXN0L3Qvc2lnbmFsX3V0ZjMyLnRlc3QKICBzcWwvc3FsX2ZpeHN0cmluZy5j YwogIHNxbC9zcWxfZml4c3RyaW5nLmgKICBzcWwvc3FsX3NpZ25hbC5jYwogIHNxbC9zcWxfc2ln bmFsLmgKbW9kaWZpZWQ6CiAgLmJ6cmlnbm9yZQogIGxpYm15c3FsZC9DTWFrZUxpc3RzLnR4dAog IGxpYm15c3FsZC9NYWtlZmlsZS5hbQogIGxpYm15c3FsZC9saWJfc3FsLmNjCiAgbXlzcWwtdGVz dC9yL2JhY2t1cF9zZWN1cml0eS5yZXN1bHQKICBteXNxbC10ZXN0L3IvbWFyaWEzLnJlc3VsdAog IG15c3FsLXRlc3Qvci9teWlzYW0ucmVzdWx0CiAgbXlzcWwtdGVzdC9yL3BhcnRpdGlvbl9ub3Rf d2luZG93cy5yZXN1bHQKICBteXNxbC10ZXN0L3IvcGFydGl0aW9uX3N5bWxpbmsucmVzdWx0CiAg bXlzcWwtdGVzdC9yL3BhcnRpdGlvbl93aW5kb3dzLnJlc3VsdAogIG15c3FsLXRlc3Qvci9zeW1s aW5rLnJlc3VsdAogIG15c3FsLXRlc3Qvci93aW5kb3dzLnJlc3VsdAogIHNxbC9DTWFrZUxpc3Rz LnR4dAogIHNxbC9NYWtlZmlsZS5hbQogIHNxbC9iYWNrdXAvbG9nZ2VyLmNjCiAgc3FsL2RlcnJv ci5jYwogIHNxbC9ldmVudF9zY2hlZHVsZXIuY2MKICBzcWwvaGFfbmRiY2x1c3Rlcl9iaW5sb2cu Y2MKICBzcWwvaGFuZGxlci5jYwogIHNxbC9sZXguaAogIHNxbC9sb2cuY2MKICBzcWwvbG9nX2V2 ZW50LmNjCiAgc3FsL215c3FsX3ByaXYuaAogIHNxbC9teXNxbGQuY2MKICBzcWwvcHJvdG9jb2wu Y2MKICBzcWwvcHJvdG9jb2wuaAogIHNxbC9zZXRfdmFyLmNjCiAgc3FsL3NoYXJlL2Vycm1zZy50 eHQKICBzcWwvc2xhdmUuY2MKICBzcWwvc3AuY2MKICBzcWwvc3BfaGVhZC5jYwogIHNxbC9zcF9w Y29udGV4dC5oCiAgc3FsL3NwX3Jjb250ZXh0LmNjCiAgc3FsL3NwX3Jjb250ZXh0LmgKICBzcWwv c3FsX2FjbC5jYwogIHNxbC9zcWxfYmFzZS5jYwogIHNxbC9zcWxfY2xhc3MuY2MKICBzcWwvc3Fs X2NsYXNzLmgKICBzcWwvc3FsX2Vycm9yLmNjCiAgc3FsL3NxbF9pbnNlcnQuY2MKICBzcWwvc3Fs X2xleC5oCiAgc3FsL3NxbF9wYXJzZS5jYwogIHNxbC9zcWxfdGFibGUuY2MKICBzcWwvc3FsX3Zp ZXcuY2MKICBzcWwvc3FsX3lhY2MueXkKICBzcWwvdGFibGUuY2MKICBzcWwvdGhyX21hbGxvYy5j YwogIHNxbC91bmlyZWcuY2MKCnBlci1maWxlIG1lc3NhZ2VzOgogIC5ienJpZ25vcmUKICAgIEFk ZGVkIG5ldyBmaWxlcyBmb3IgV0wjMjExMAogIGxpYm15c3FsZC9DTWFrZUxpc3RzLnR4dAogICAg QWRkZWQgbmV3IGZpbGVzIGZvciBXTCMyMTEwCiAgbGlibXlzcWxkL01ha2VmaWxlLmFtCiAgICBB ZGRlZCBuZXcgZmlsZXMgZm9yIFdMIzIxMTAKICBsaWJteXNxbGQvbGliX3NxbC5jYwogICAgQWRk ZWQgc3Fsc3RhdGUgaW4gbmV0X3NlbmRfZXJyb3IKICBteXNxbC10ZXN0L3IvYmFja3VwX3NlY3Vy aXR5LnJlc3VsdAogICAgQnVnIzM5MDU5CiAgbXlzcWwtdGVzdC9yL21hcmlhMy5yZXN1bHQKICAg IEJ1ZyMzOTA1OQogIG15c3FsLXRlc3Qvci9teWlzYW0ucmVzdWx0CiAgICBCdWcjMzkwNTkKICBt eXNxbC10ZXN0L3IvcGFydGl0aW9uX25vdF93aW5kb3dzLnJlc3VsdAogICAgQnVnIzM2NzY4CiAg bXlzcWwtdGVzdC9yL3BhcnRpdGlvbl9zeW1saW5rLnJlc3VsdAogICAgQnVnIzM2NzY4CiAgbXlz cWwtdGVzdC9yL3BhcnRpdGlvbl93aW5kb3dzLnJlc3VsdAogICAgQnVnIzM2NzY4CiAgbXlzcWwt dGVzdC9yL3NpZ25hbC5yZXN1bHQKICAgIFRlc3RzIGZvciBXTCMyMTEwIChTSUdOQUwpIGFuZCBX TCMyMjY1IChSRVNJR05BTCkKICBteXNxbC10ZXN0L3Ivc2lnbmFsX2NvZGUucmVzdWx0CiAgICBU ZXN0cyBmb3IgV0wjMjExMCAoU0lHTkFMKSBhbmQgV0wjMjI2NSAoUkVTSUdOQUwpCiAgbXlzcWwt dGVzdC9yL3NpZ25hbF9kZW1vMS5yZXN1bHQKICAgIFRlc3RzIGZvciBXTCMyMTEwIChTSUdOQUwp IGFuZCBXTCMyMjY1IChSRVNJR05BTCkKICBteXNxbC10ZXN0L3Ivc2lnbmFsX2RlbW8yLnJlc3Vs dAogICAgVGVzdHMgZm9yIFdMIzIxMTAgKFNJR05BTCkgYW5kIFdMIzIyNjUgKFJFU0lHTkFMKQog IG15c3FsLXRlc3Qvci9zaWduYWxfZGVtbzMucmVzdWx0CiAgICBUZXN0cyBmb3IgV0wjMjExMCAo U0lHTkFMKSBhbmQgV0wjMjI2NSAoUkVTSUdOQUwpCiAgbXlzcWwtdGVzdC9yL3NpZ25hbF9zcWxt b2RlLnJlc3VsdAogICAgVGVzdHMgZm9yIFdMIzIxMTAgKFNJR05BTCkgYW5kIFdMIzIyNjUgKFJF U0lHTkFMKQogIG15c3FsLXRlc3Qvci9zaWduYWxfdXRmMzIucmVzdWx0CiAgICBUZXN0cyBmb3Ig V0wjMjExMCAoU0lHTkFMKSBhbmQgV0wjMjI2NSAoUkVTSUdOQUwpCiAgbXlzcWwtdGVzdC9yL3N5 bWxpbmsucmVzdWx0CiAgICBCdWcjMzY3NjgKICBteXNxbC10ZXN0L3Ivd2luZG93cy5yZXN1bHQK ICAgIEJ1ZyMzNjc2OAogIG15c3FsLXRlc3QvdC9zaWduYWwudGVzdAogICAgVGVzdHMgZm9yIFdM IzIxMTAgKFNJR05BTCkgYW5kIFdMIzIyNjUgKFJFU0lHTkFMKQogIG15c3FsLXRlc3QvdC9zaWdu YWxfY29kZS50ZXN0CiAgICBUZXN0cyBmb3IgV0wjMjExMCAoU0lHTkFMKSBhbmQgV0wjMjI2NSAo UkVTSUdOQUwpCiAgbXlzcWwtdGVzdC90L3NpZ25hbF9kZW1vMS50ZXN0CiAgICBUZXN0cyBmb3Ig V0wjMjExMCAoU0lHTkFMKSBhbmQgV0wjMjI2NSAoUkVTSUdOQUwpCiAgbXlzcWwtdGVzdC90L3Np Z25hbF9kZW1vMi50ZXN0CiAgICBUZXN0cyBmb3IgV0wjMjExMCAoU0lHTkFMKSBhbmQgV0wjMjI2 NSAoUkVTSUdOQUwpCiAgbXlzcWwtdGVzdC90L3NpZ25hbF9kZW1vMy50ZXN0CiAgICBUZXN0cyBm b3IgV0wjMjExMCAoU0lHTkFMKSBhbmQgV0wjMjI2NSAoUkVTSUdOQUwpCiAgbXlzcWwtdGVzdC90 L3NpZ25hbF9zcWxtb2RlLnRlc3QKICAgIFRlc3RzIGZvciBXTCMyMTEwIChTSUdOQUwpIGFuZCBX TCMyMjY1IChSRVNJR05BTCkKICBteXNxbC10ZXN0L3Qvc2lnbmFsX3V0ZjMyLnRlc3QKICAgIFRl c3RzIGZvciBXTCMyMTEwIChTSUdOQUwpIGFuZCBXTCMyMjY1IChSRVNJR05BTCkKICBzcWwvQ01h a2VMaXN0cy50eHQKICAgIEFkZGVkIG5ldyBmaWxlcyBmb3IgV0wjMjExMAogIHNxbC9NYWtlZmls ZS5hbQogICAgQWRkZWQgbmV3IGZpbGVzIGZvciBXTCMyMTEwCiAgc3FsL2JhY2t1cC9sb2dnZXIu Y2MKICAgIEJ1ZyMzOTA1OQogIHNxbC9kZXJyb3IuY2MKICAgIFJlY29yZCB0aGUgY2hhcnNldCB1 c2VkIGluIGVycm1zZy5zeXMKICBzcWwvZXZlbnRfc2NoZWR1bGVyLmNjCiAgICBBZGp1c3RlZCB0 aGUgY29kZSBhZnRlciBjaGFuZ2VzIGluIG1fc3RtdF9hcmVhLndhcm5fbGlzdC4KICBzcWwvaGFf bmRiY2x1c3Rlcl9iaW5sb2cuY2MKICAgIEFkanVzdGVkIHRoZSBjb2RlIGFmdGVyIGNoYW5nZXMg aW4gbV9zdG10X2FyZWEud2Fybl9saXN0LgogIHNxbC9oYW5kbGVyLmNjCiAgICBBZGp1c3RlZCB0 aGUgY29kZSBhZnRlciBjaGFuZ2VzIGluIEludGVybmFsX2Vycm9yX2hhbmRsZXI6OmhhbmRsZV9j b25kaXRpb24KICBzcWwvbGV4LmgKICAgIEltcGxlbWVudGVkIHBhcnNlciBjaGFuZ2VzIGZvciB0 aGUgU0lHTkFMIGFuZCBSRVNJR05BTCBzdGF0ZW1lbnRzLgogIHNxbC9sb2cuY2MKICAgIEFkanVz dGVkIHRoZSBjb2RlIGFmdGVyIGNoYW5nZXMgaW4gSW50ZXJuYWxfZXJyb3JfaGFuZGxlcjo6aGFu ZGxlX2NvbmRpdGlvbgogIHNxbC9sb2dfZXZlbnQuY2MKICAgIEFkanVzdGVkIHRoZSBjb2RlIGFm dGVyIGNoYW5nZXMgaW4gbV9zdG10X2FyZWEud2Fybl9saXN0LgogIHNxbC9teXNxbF9wcml2LmgK ICAgIFJlY29yZCB0aGUgY2hhcnNldCB1c2VkIGluIGVycm1zZy5zeXMKICBzcWwvbXlzcWxkLmNj CiAgICBDb3JlIGltcGxlbWVudGF0aW9uIG9mIFNJR05BTCBhbmQgUkVTSUdOQUwKICBzcWwvcHJv dG9jb2wuY2MKICAgIEFkZGVkIHNxbHN0YXRlIGluIG5ldF9zZW5kX2Vycm9yCiAgc3FsL3Byb3Rv Y29sLmgKICAgIEFkZGVkIHNxbHN0YXRlIGluIG5ldF9zZW5kX2Vycm9yCiAgc3FsL3NldF92YXIu Y2MKICAgIEFkanVzdGVkIHRoZSBjb2RlIGFmdGVyIGNoYW5nZXMgaW4gbV9zdG10X2FyZWEud2Fy bl9saXN0LgogIHNxbC9zaGFyZS9lcnJtc2cudHh0CiAgICBDb3JlIGltcGxlbWVudGF0aW9uIG9m IFNJR05BTCBhbmQgUkVTSUdOQUwKICBzcWwvc2xhdmUuY2MKICAgIEFkanVzdGVkIHRoZSBjb2Rl IGFmdGVyIGNoYW5nZXMgaW4gbV9zdG10X2FyZWEud2Fybl9saXN0LgogIHNxbC9zcC5jYwogICAg QWRqdXN0ZWQgdGhlIGNvZGUgYWZ0ZXIgY2hhbmdlcyBpbiBJbnRlcm5hbF9lcnJvcl9oYW5kbGVy OjpoYW5kbGVfY29uZGl0aW9uCiAgc3FsL3NwX2hlYWQuY2MKICAgIENvcmUgaW1wbGVtZW50YXRp b24gb2YgU0lHTkFMIGFuZCBSRVNJR05BTAogIHNxbC9zcF9wY29udGV4dC5oCiAgICBDb3JlIGlt cGxlbWVudGF0aW9uIG9mIFNJR05BTCBhbmQgUkVTSUdOQUwKICBzcWwvc3BfcmNvbnRleHQuY2MK ICAgIENvcmUgaW1wbGVtZW50YXRpb24gb2YgU0lHTkFMIGFuZCBSRVNJR05BTAogIHNxbC9zcF9y Y29udGV4dC5oCiAgICBDb3JlIGltcGxlbWVudGF0aW9uIG9mIFNJR05BTCBhbmQgUkVTSUdOQUwK ICBzcWwvc3FsX2FjbC5jYwogICAgQWRqdXN0ZWQgdGhlIGNvZGUgYWZ0ZXIgY2hhbmdlcyBpbiBJ bnRlcm5hbF9lcnJvcl9oYW5kbGVyOjpoYW5kbGVfY29uZGl0aW9uCiAgc3FsL3NxbF9iYXNlLmNj CiAgICBBZGp1c3RlZCB0aGUgY29kZSBhZnRlciBjaGFuZ2VzIGluIEludGVybmFsX2Vycm9yX2hh bmRsZXI6OmhhbmRsZV9jb25kaXRpb24KICBzcWwvc3FsX2NsYXNzLmNjCiAgICBDb3JlIGltcGxl bWVudGF0aW9uIG9mIFNJR05BTCBhbmQgUkVTSUdOQUwKICBzcWwvc3FsX2NsYXNzLmgKICAgIENv cmUgaW1wbGVtZW50YXRpb24gb2YgU0lHTkFMIGFuZCBSRVNJR05BTAogIHNxbC9zcWxfZXJyb3Iu Y2MKICAgIENvcmUgaW1wbGVtZW50YXRpb24gb2YgU0lHTkFMIGFuZCBSRVNJR05BTAogIHNxbC9z cWxfZml4c3RyaW5nLmNjCiAgICBIZWxwZXIgY2xhc3NlcyBmb3Igc3RyaW5ncy4KICBzcWwvc3Fs X2ZpeHN0cmluZy5oCiAgICBIZWxwZXIgY2xhc3NlcyBmb3Igc3RyaW5ncy4KICBzcWwvc3FsX2lu c2VydC5jYwogICAgQWRqdXN0ZWQgY29kZSBhZnRlciBjaGFuZ2VzIGluIHNldF9lcnJvcl9zdGF0 dXMKICBzcWwvc3FsX2xleC5oCiAgICBJbXBsZW1lbnRlZCBwYXJzZXIgY2hhbmdlcyBmb3IgdGhl IFNJR05BTCBhbmQgUkVTSUdOQUwgc3RhdGVtZW50cy4KICBzcWwvc3FsX3BhcnNlLmNjCiAgICBJ bXBsZW1lbnRlZCBwYXJzZXIgY2hhbmdlcyBmb3IgdGhlIFNJR05BTCBhbmQgUkVTSUdOQUwgc3Rh dGVtZW50cy4KICBzcWwvc3FsX3NpZ25hbC5jYwogICAgQ29yZSBpbXBsZW1lbnRhdGlvbiBvZiBT SUdOQUwgYW5kIFJFU0lHTkFMCiAgc3FsL3NxbF9zaWduYWwuaAogICAgQ29yZSBpbXBsZW1lbnRh dGlvbiBvZiBTSUdOQUwgYW5kIFJFU0lHTkFMCiAgc3FsL3NxbF90YWJsZS5jYwogICAgQWRqdXN0 ZWQgdGhlIGNvZGUgYWZ0ZXIgY2hhbmdlcyBpbiBtX3N0bXRfYXJlYS53YXJuX2xpc3QuCiAgc3Fs L3NxbF92aWV3LmNjCiAgICBSYWlzZSBlcnJvcnMgdXNpbmcgVEhEOjpyYWlzZV9FUl9OT19TVUNI X1RBQkxFKCkKICBzcWwvc3FsX3lhY2MueXkKICAgIEltcGxlbWVudGVkIHBhcnNlciBjaGFuZ2Vz IGZvciB0aGUgU0lHTkFMIGFuZCBSRVNJR05BTCBzdGF0ZW1lbnRzLgogIHNxbC90YWJsZS5jYwog ICAgUmFpc2UgZXJyb3JzIHVzaW5nIFRIRDo6cmFpc2VfRVJfTk9fU1VDSF9UQUJMRSgpCiAgc3Fs L3Rocl9tYWxsb2MuY2MKICAgIEFkanVzdGVkIGNvZGUgYWZ0ZXIgY2hhbmdlcyBpbiBzZXRfZXJy b3Jfc3RhdHVzCiAgc3FsL3VuaXJlZy5jYwogICAgQWRqdXN0ZWQgdGhlIGNvZGUgYWZ0ZXIgY2hh bmdlcyBpbiBJbnRlcm5hbF9lcnJvcl9oYW5kbGVyOjpoYW5kbGVfY29uZGl0aW9uCj09PSBtb2Rp ZmllZCBmaWxlICcuYnpyaWdub3JlJwotLS0gYS8uYnpyaWdub3JlCTIwMDgtMDgtMjYgMTA6MjA6 NDEgKzAwMDAKKysrIGIvLmJ6cmlnbm9yZQkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0x ODkxLDMgKzE4OTEsNSBAQCB6bGliLyoudmNwcm9qCiBleHRyYS9saWJldmVudC9ldmVudC1jb25m aWcuaAogbGlibXlzcWxkL2RkbF9ibG9ja2VyLmNjCiBsaWJteXNxbGQvbWRsLmNjCitsaWJteXNx bGQvc3FsX2ZpeHN0cmluZy5jYworbGlibXlzcWxkL3NxbF9zaWduYWwuY2MKCj09PSBtb2RpZmll ZCBmaWxlICdsaWJteXNxbGQvQ01ha2VMaXN0cy50eHQnCi0tLSBhL2xpYm15c3FsZC9DTWFrZUxp c3RzLnR4dAkyMDA4LTA3LTA5IDA3OjEyOjQzICswMDAwCisrKyBiL2xpYm15c3FsZC9DTWFrZUxp c3RzLnR4dAkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0yMDMsNiArMjAzLDcgQEAgU0VU KExJQk1ZU1FMRF9TT1VSQ0VTIGVtYl9xY2FjaGUuY2MgbGlibQogICAgICAgICAgICAuLi9zcWwv c2NoZWR1bGVyLmNjIC4uL3NxbC9zcWxfYXVkaXQuY2MKICAgICAgICAgICAgLi4vc3FsL2RkbF9i bG9ja2VyLmNjIC4uL3NxbC9zaV9vYmplY3RzLmNjCiAgICAgICAgICAgIC4uL3NxbC9ldmVudF9w YXJzZV9kYXRhLmNjIC4uL3NxbC9tZGwuY2MKKyAgICAgICAgICAgLi4vc3FsL3NxbF9zaWduYWwu Y2MgLi4vc3FsL3NxbF9maXhzdHJpbmcuY2MKICAgICAgICAgICAgJHtHRU5fU09VUkNFU30KICAg ICAgICAgICAgJHtMSUJfU09VUkNFU30pCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaWJteXNxbGQv TWFrZWZpbGUuYW0nCi0tLSBhL2xpYm15c3FsZC9NYWtlZmlsZS5hbQkyMDA4LTA3LTA5IDA3OjEy OjQzICswMDAwCisrKyBiL2xpYm15c3FsZC9NYWtlZmlsZS5hbQkyMDA4LTA4LTI3IDIyOjE0OjAz ICswMDAwCkBAIC04Miw3ICs4Miw3IEBAIHNxbHNvdXJjZXMgPSBkZXJyb3IuY2MgZmllbGQuY2Mg ZmllbGRfY28KIAlzcWxfdGFibGVzcGFjZS5jYyBcCiAJcnBsX2luamVjdG9yLmNjIG15X3VzZXIu YyBwYXJ0aXRpb25faW5mby5jYyBcCiAJc3FsX3NlcnZlcnMuY2MgZGRsX2Jsb2NrZXIuY2Mgc2lf b2JqZWN0cy5jYyBzcWxfYXVkaXQuY2MgXAotICAgICAgICBldmVudF9wYXJzZV9kYXRhLmNjIG1k bC5jYworICAgICAgICBldmVudF9wYXJzZV9kYXRhLmNjIG1kbC5jYyBzcWxfc2lnbmFsLmNjIHNx bF9maXhzdHJpbmcuY2MKIAogbGlibXlzcWxkX2ludF9hX1NPVVJDRVM9ICQobGlibXlzcWxkX3Nv dXJjZXMpCiBub2Rpc3RfbGlibXlzcWxkX2ludF9hX1NPVVJDRVM9ICQobGlibXlzcWxzb3VyY2Vz KSAkKHNxbHNvdXJjZXMpCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGlibXlzcWxkL2xpYl9zcWwuY2Mn Ci0tLSBhL2xpYm15c3FsZC9saWJfc3FsLmNjCTIwMDgtMDYtMjAgMTE6NDA6MDEgKzAwMDAKKysr IGIvbGlibXlzcWxkL2xpYl9zcWwuY2MJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtMTA2 OSwxNCArMTA2OSwxNSBAQCBuZXRfc2VuZF9lb2YoVEhEICp0aGQsIHVpbnQgc2VydmVyX3N0YXR1 CiB9CiAKIAotdm9pZCBuZXRfc2VuZF9lcnJvcl9wYWNrZXQoVEhEICp0aGQsIHVpbnQgc3FsX2Vy cm5vLCBjb25zdCBjaGFyICplcnIpCit2b2lkIG5ldF9zZW5kX2Vycm9yX3BhY2tldChUSEQgKnRo ZCwgdWludCBzcWxfZXJybm8sIGNvbnN0IGNoYXIgKmVyciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIqIHNxbHN0YXRlKQogewogICBNWVNRTF9EQVRBICpkYXRhPSB0aGQt PmN1cl9kYXRhID8gdGhkLT5jdXJfZGF0YSA6IHRoZC0+YWxsb2NfbmV3X2RhdGFzZXQoKTsKICAg c3RydWN0IGVtYmVkZGVkX3F1ZXJ5X3Jlc3VsdCAqZWk9IGRhdGEtPmVtYmVkZGVkX2luZm87CiAK ICAgZWktPmxhc3RfZXJybm89IHNxbF9lcnJubzsKICAgc3RybWFrZShlaS0+aW5mbywgZXJyLCBz aXplb2YoZWktPmluZm8pLTEpOwotICBzdHJtb3YoZWktPnNxbHN0YXRlLCBteXNxbF9lcnJub190 b19zcWxzdGF0ZShzcWxfZXJybm8pKTsKKyAgc3RybW92KGVpLT5zcWxzdGF0ZSwgc3Fsc3RhdGUp OwogICBlaS0+c2VydmVyX3N0YXR1cz0gdGhkLT5zZXJ2ZXJfc3RhdHVzOwogICB0aGQtPmN1cl9k YXRhPSAwOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9iYWNrdXBfc2VjdXJp dHkucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvYmFja3VwX3NlY3VyaXR5LnJlc3VsdAkyMDA3 LTEyLTAzIDIwOjI4OjMyICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9iYWNrdXBfc2VjdXJpdHku cmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTI4LDE0ICsyOCwxMiBAQCBFUlJP UiA0MjAwMDogQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgdGhlCiBTSE9XIEVSUk9SUzsKIExldmVs CUNvZGUJTWVzc2FnZQogRXJyb3IJMTIyNwlBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCB0aGUgU1VQ RVIgcHJpdmlsZWdlIGZvciB0aGlzIG9wZXJhdGlvbgotRXJyb3IJMTIyNwlBY2Nlc3MgZGVuaWVk OyB5b3UgbmVlZCB0aGUgU1VQRVIgcHJpdmlsZWdlIGZvciB0aGlzIG9wZXJhdGlvbgogbm9fcmln aHRzOiBBdHRlbXB0aW5nIHJlc3RvcmUuIFNob3VsZCBmYWlsIHdpdGggZXJyb3IgMTIyNwogUkVT VE9SRSBGUk9NICdidXBfbm9fcmlnaHRzLmJhayc7CiBFUlJPUiA0MjAwMDogQWNjZXNzIGRlbmll ZDsgeW91IG5lZWQgdGhlIFNVUEVSIHByaXZpbGVnZSBmb3IgdGhpcyBvcGVyYXRpb24KIFNIT1cg RVJST1JTOwogTGV2ZWwJQ29kZQlNZXNzYWdlCiBFcnJvcgkxMjI3CUFjY2VzcyBkZW5pZWQ7IHlv dSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIHRoaXMgb3BlcmF0aW9uCi1FcnJvcgkxMjI3 CUFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIHRoaXMgb3Bl cmF0aW9uCiBTRUxFQ1QgKiBGUk9NIGJhY2t1cF90ZXN0LnQxOwogYQogMDEgVGVzdCAjMSAtIHN1 cGVyIHByaXZpbGVnZQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9tYXJpYTMucmVz dWx0JwotLS0gYS9teXNxbC10ZXN0L3IvbWFyaWEzLnJlc3VsdAkyMDA4LTA3LTA0IDA4OjI4OjM2 ICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9tYXJpYTMucmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6 MDMgKzAwMDAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBkcm9wIHRhYmxlIHQxOwogY3JlYXRlIHRhYmxl IHQxIChuIGludCBub3QgbnVsbCwgYyBjaGFyKDEpKSBlbmdpbmU9bWFyaWEgdHJhbnNhY3Rpb25h bD0xOwogYWx0ZXIgdGFibGUgdDEgZW5naW5lPW15aXNhbTsKIFdhcm5pbmdzOgotRXJyb3IJMTQ3 OAlUYWJsZSBzdG9yYWdlIGVuZ2luZSAnTXlJU0FNJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVh dGUgb3B0aW9uICdUUkFOU0FDVElPTkFMPTEnCitXYXJuaW5nCTE0NzgJVGFibGUgc3RvcmFnZSBl bmdpbmUgJ015SVNBTScgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnVFJBTlNB Q1RJT05BTD0xJwogYWx0ZXIgdGFibGUgdDEgZW5naW5lPW1hcmlhOwogc2hvdyBjcmVhdGUgdGFi bGUgdDE7CiBUYWJsZQlDcmVhdGUgVGFibGUKQEAgLTQ3OSw3ICs0NzksNyBAQCB0MQlDUkVBVEUg VEFCTEUgYHQxYCAoCiBkcm9wIHRhYmxlIHQxOwogY3JlYXRlIHRhYmxlIHQxIChuIGludCBub3Qg bnVsbCwgYyBjaGFyKDEpKSBlbmdpbmU9bXlpc2FtIHRyYW5zYWN0aW9uYWw9MTsKIFdhcm5pbmdz OgotRXJyb3IJMTQ3OAlUYWJsZSBzdG9yYWdlIGVuZ2luZSAnTXlJU0FNJyBkb2VzIG5vdCBzdXBw b3J0IHRoZSBjcmVhdGUgb3B0aW9uICdUUkFOU0FDVElPTkFMPTEnCitXYXJuaW5nCTE0NzgJVGFi bGUgc3RvcmFnZSBlbmdpbmUgJ015SVNBTScgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9w dGlvbiAnVFJBTlNBQ1RJT05BTD0xJwogYWx0ZXIgdGFibGUgdDEgZW5naW5lPW1hcmlhOwogc2hv dyBjcmVhdGUgdGFibGUgdDE7CiBUYWJsZQlDcmVhdGUgVGFibGUKCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3IvbXlpc2FtLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL215aXNhbS5y ZXN1bHQJMjAwOC0wNi0xNyAyMDowNDoxOSArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvbXlpc2Ft LnJlc3VsdAkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0yMjIzLDcgKzIyMjMsNyBAQCBL ZXkgU3RhcnQgTGVuIEluZGV4ICAgVHlwZQogRFJPUCBUQUJMRSB0MTsKIGNyZWF0ZSB0YWJsZSB0 MSAobiBpbnQgbm90IG51bGwsIGMgY2hhcigxKSkgdHJhbnNhY3Rpb25hbD0xOwogV2FybmluZ3M6 Ci1FcnJvcgkxNDc4CVRhYmxlIHN0b3JhZ2UgZW5naW5lICdNeUlTQU0nIGRvZXMgbm90IHN1cHBv cnQgdGhlIGNyZWF0ZSBvcHRpb24gJ1RSQU5TQUNUSU9OQUw9MScKK1dhcm5pbmcJMTQ3OAlUYWJs ZSBzdG9yYWdlIGVuZ2luZSAnTXlJU0FNJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0 aW9uICdUUkFOU0FDVElPTkFMPTEnCiBzaG93IGNyZWF0ZSB0YWJsZSB0MTsKIFRhYmxlCUNyZWF0 ZSBUYWJsZQogdDEJQ1JFQVRFIFRBQkxFIGB0MWAgKAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3Fs LXRlc3Qvci9wYXJ0aXRpb25fbm90X3dpbmRvd3MucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3Iv cGFydGl0aW9uX25vdF93aW5kb3dzLnJlc3VsdAkyMDA4LTAzLTI3IDIwOjM0OjQ5ICswMDAwCisr KyBiL215c3FsLXRlc3Qvci9wYXJ0aXRpb25fbm90X3dpbmRvd3MucmVzdWx0CTIwMDgtMDgtMjcg MjI6MTQ6MDMgKzAwMDAKQEAgLTI0LDggKzI0LDggQEAgZGF0YSBkaXJlY3Rvcnk9Jy9ub3QvZXhp c3RpbmcnCiAgIGluZGV4IGRpcmVjdG9yeT0nL25vdC9leGlzdGluZycKICk7CiBXYXJuaW5nczoK LVdhcm5pbmcJMAlEQVRBIERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAotV2FybmluZwkwCUlOREVY IERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAorV2FybmluZwkxMTA1CURBVEEgRElSRUNUT1JZIG9w dGlvbiBpZ25vcmVkCitXYXJuaW5nCTExMDUJSU5ERVggRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVk CiBzaG93IGNyZWF0ZSB0YWJsZSB0MjsKIFRhYmxlCUNyZWF0ZSBUYWJsZQogdDIJQ1JFQVRFIFRB QkxFIGB0MmAgKAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9wYXJ0aXRpb25fc3lt bGluay5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9wYXJ0aXRpb25fc3ltbGluay5yZXN1bHQJ MjAwOC0wMy0yMCAxNDoyNTo1OCArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvcGFydGl0aW9uX3N5 bWxpbmsucmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTEwMSw4ICsxMDEsOCBA QCBkYXRhIGRpcmVjdG9yeT0nL25vdC9leGlzdGluZycKICAgICBpbmRleCBkaXJlY3Rvcnk9Jy9u b3QvZXhpc3RpbmcnCiApOwogV2FybmluZ3M6Ci1XYXJuaW5nCTAJREFUQSBESVJFQ1RPUlkgb3B0 aW9uIGlnbm9yZWQKLVdhcm5pbmcJMAlJTkRFWCBESVJFQ1RPUlkgb3B0aW9uIGlnbm9yZWQKK1dh cm5pbmcJMTEwNQlEQVRBIERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAorV2FybmluZwkxMTA1CUlO REVYIERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAogc2hvdyBjcmVhdGUgdGFibGUgdDI7CiBUYWJs ZQlDcmVhdGUgVGFibGUKIHQyCUNSRUFURSBUQUJMRSBgdDJgICgKCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3IvcGFydGl0aW9uX3dpbmRvd3MucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0 L3IvcGFydGl0aW9uX3dpbmRvd3MucmVzdWx0CTIwMDgtMDEtMDQgMTE6MDY6MjAgKzAwMDAKKysr IGIvbXlzcWwtdGVzdC9yL3BhcnRpdGlvbl93aW5kb3dzLnJlc3VsdAkyMDA4LTA4LTI3IDIyOjE0 OjAzICswMDAwCkBAIC0xNSwxNiArMTUsMTYgQEAgREFUQSBESVJFQ1RPUlkgPSAnRTovbXlzcWx0 ZXN0L3AyRGF0YScKICAgICBJTkRFWCBESVJFQ1RPUlkgPSAnRjovbXlzcWx0ZXN0L3AySW5kZXgn CiApOwogV2FybmluZ3M6Ci1XYXJuaW5nCTAJREFUQSBESVJFQ1RPUlkgb3B0aW9uIGlnbm9yZWQK LVdhcm5pbmcJMAlJTkRFWCBESVJFQ1RPUlkgb3B0aW9uIGlnbm9yZWQKLVdhcm5pbmcJMAlEQVRB IERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAotV2FybmluZwkwCUlOREVYIERJUkVDVE9SWSBvcHRp b24gaWdub3JlZAorV2FybmluZwkxMTA1CURBVEEgRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVkCitX YXJuaW5nCTExMDUJSU5ERVggRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVkCitXYXJuaW5nCTExMDUJ REFUQSBESVJFQ1RPUlkgb3B0aW9uIGlnbm9yZWQKK1dhcm5pbmcJMTEwNQlJTkRFWCBESVJFQ1RP Ulkgb3B0aW9uIGlnbm9yZWQKIElOU0VSVCBJTlRPIHQxIFZBTFVFUyAoTlVMTCwgImZpcnN0Iiwg MSk7CiBJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKE5VTEwsICJzZWNvbmQiLCAyKTsKIElOU0VSVCBJ TlRPIHQxIFZBTFVFUyAoTlVMTCwgInRoaXJkIiwgMyk7CiBBTFRFUiBUQUJMRSB0MSBBREQgUEFS VElUSU9OIChQQVJUSVRJT04gcDMgREFUQSBESVJFQ1RPUlkgPSAnRzovbXlzcWx0ZXN0L3AzRGF0 YScgSU5ERVggRElSRUNUT1JZID0gJ0g6L215c3FsdGVzdC9wM0luZGV4Jyk7CiBXYXJuaW5nczoK LVdhcm5pbmcJMAlEQVRBIERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAotV2FybmluZwkwCUlOREVY IERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAorV2FybmluZwkxMTA1CURBVEEgRElSRUNUT1JZIG9w dGlvbiBpZ25vcmVkCitXYXJuaW5nCTExMDUJSU5ERVggRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVk CiBJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKE5VTEwsICJsYXN0IiwgNCk7CiBEUk9QIFRBQkxFIHQx OwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvci9zaWduYWwucmVzdWx0JwotLS0gYS9teXNx bC10ZXN0L3Ivc2lnbmFsLnJlc3VsdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215 c3FsLXRlc3Qvci9zaWduYWwucmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTAs MCArMSwyMTMwIEBACitkcm9wIHRhYmxlIGlmIGV4aXN0cyBzaWduYWxfbm9uX3Jlc2VydmVkOwor Y3JlYXRlIHRhYmxlIHNpZ25hbF9ub25fcmVzZXJ2ZWQgKAorY2xhc3Nfb3JpZ2luIGludCwKK3N1 YmNsYXNzX29yaWdpbiBpbnQsCitjb25zdHJhaW50X2NhdGFsb2cgaW50LAorY29uc3RyYWludF9z Y2hlbWEgaW50LAorY29uc3RyYWludF9uYW1lIGludCwKK2NhdGFsb2dfbmFtZSBpbnQsCitzY2hl bWFfbmFtZSBpbnQsCit0YWJsZV9uYW1lIGludCwKK2NvbHVtbl9uYW1lIGludCwKK2N1cnNvcl9u YW1lIGludCwKK21lc3NhZ2VfdGV4dCBpbnQsCitzcWxjb2RlIGludAorKTsKK2Ryb3AgdGFibGUg c2lnbmFsX25vbl9yZXNlcnZlZDsKK2Ryb3AgdGFibGUgaWYgZXhpc3RzIGRpYWdfbm9uX3Jlc2Vy dmVkOworY3JlYXRlIHRhYmxlIGRpYWdfbm9uX3Jlc2VydmVkICgKK2RpYWdub3N0aWNzIGludCwK K2N1cnJlbnQgaW50LAorc3RhY2tlZCBpbnQsCitleGNlcHRpb24gaW50CispOworZHJvcCB0YWJs ZSBkaWFnX25vbl9yZXNlcnZlZDsKK2Ryb3AgdGFibGUgaWYgZXhpc3RzIGRpYWdfY29uZF9ub25f cmVzZXJ2ZWQ7CitjcmVhdGUgdGFibGUgZGlhZ19jb25kX25vbl9yZXNlcnZlZCAoCitjb25kaXRp b25faWRlbnRpZmllciBpbnQsCitjb25kaXRpb25fbnVtYmVyIGludCwKK2NvbmRpdGlvbl9uYW1l IGludCwKK2Nvbm5lY3Rpb25fbmFtZSBpbnQsCittZXNzYWdlX2xlbmd0aCBpbnQsCittZXNzYWdl X29jdGV0X2xlbmd0aCBpbnQsCitwYXJhbWV0ZXJfbW9kZSBpbnQsCitwYXJhbWV0ZXJfbmFtZSBp bnQsCitwYXJhbWV0ZXJfb3JkaW5hbF9wb3NpdGlvbiBpbnQsCityZXR1cm5lZF9zcWxzdGF0ZSBp bnQsCityb3V0aW5lX2NhdGFsb2cgaW50LAorcm91dGluZV9uYW1lIGludCwKK3JvdXRpbmVfc2No ZW1hIGludCwKK3NlcnZlcl9uYW1lIGludCwKK3NwZWNpZmljX25hbWUgaW50LAordHJpZ2dlcl9j YXRhbG9nIGludCwKK3RyaWdnZXJfbmFtZSBpbnQsCit0cmlnZ2VyX3NjaGVtYSBpbnQKKyk7Citk cm9wIHRhYmxlIGRpYWdfY29uZF9ub25fcmVzZXJ2ZWQ7Citkcm9wIHRhYmxlIGlmIGV4aXN0cyBk aWFnX3N0bXRfbm9uX3Jlc2VydmVkOworY3JlYXRlIHRhYmxlIGRpYWdfc3RtdF9ub25fcmVzZXJ2 ZWQgKAorbnVtYmVyIGludCwKK21vcmUgaW50LAorY29tbWFuZF9mdW5jdGlvbiBpbnQsCitjb21t YW5kX2Z1bmN0aW9uX2NvZGUgaW50LAorZHluYW1pY19mdW5jdGlvbiBpbnQsCitkeW5hbWljX2Z1 bmN0aW9uX2NvZGUgaW50LAorcm93X2NvdW50IGludCwKK3RyYW5zYWN0aW9uc19jb21taXR0ZWQg aW50LAordHJhbnNhY3Rpb25zX3JvbGxlZF9iYWNrIGludCwKK3RyYW5zYWN0aW9uX2FjdGl2ZSBp bnQKKyk7Citkcm9wIHRhYmxlIGRpYWdfc3RtdF9ub25fcmVzZXJ2ZWQ7Citkcm9wIHRhYmxlIGlm IGV4aXN0cyB0ZXN0X3Jlc2VydmVkOworY3JlYXRlIHRhYmxlIHRlc3RfcmVzZXJ2ZWQgKHNpZ25h bCBpbnQpOworRVJST1IgNDIwMDA6IFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRh eDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVy IHZlcnNpb24gZm9yIHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJ3NpZ25hbCBpbnQpJyBh dCBsaW5lIDEKK2NyZWF0ZSB0YWJsZSB0ZXN0X3Jlc2VydmVkIChyZXNpZ25hbCBpbnQpOworRVJS T1IgNDIwMDA6IFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhl IG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9y IHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJ3Jlc2lnbmFsIGludCknIGF0IGxpbmUgMQor Y3JlYXRlIHRhYmxlIHRlc3RfcmVzZXJ2ZWQgKGNvbmRpdGlvbiBpbnQpOworRVJST1IgNDIwMDA6 IFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0 aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9yIHRoZSByaWdo dCBzeW50YXggdG8gdXNlIG5lYXIgJ2NvbmRpdGlvbiBpbnQpJyBhdCBsaW5lIDEKK2Ryb3AgcHJv Y2VkdXJlIGlmIGV4aXN0cyB0ZXN0X2ludmFsaWQ7Citkcm9wIHByb2NlZHVyZSBpZiBleGlzdHMg dGVzdF9zaWduYWxfc3ludGF4OworZHJvcCBmdW5jdGlvbiBpZiBleGlzdHMgdGVzdF9zaWduYWxf ZnVuYzsKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitTSUdOQUw7Citl bmQgJCQKK0VSUk9SIDQyMDAwOiBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7 IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2 ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICc7CitlbmQnIGF0IGxpbmUg MworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK1NJR05BTCBmb287Citl bmQgJCQKK0VSUk9SIDQyMDAwOiBVbmRlZmluZWQgQ09ORElUSU9OOiBmb28KK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIDEy MzQ7CitTSUdOQUwgZm9vOworZW5kICQkCitFUlJPUiBIWTAwMDogU0lHTkFML1JFU0lHTkFMIGNh biBvbmx5IHVzZSBhIENPTkRJVElPTiBkZWZpbmVkIHdpdGggU1FMU1RBVEUKK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04g Rk9SIFNRTFNUQVRFICcxMjM0NSc7CitTSUdOQUwgZm9vOworZW5kICQkCitkcm9wIHByb2NlZHVy ZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3lu dGF4KCkKK2JlZ2luCitTSUdOQUwgU1FMU1RBVEUgJzIzMDAwJzsKK2VuZCAkJAorZHJvcCBwcm9j ZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFs X3N5bnRheCgpCitiZWdpbgorU0lHTkFMIFNRTFNUQVRFIFZBTFVFICcyMzAwMCc7CitlbmQgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCAkJAorY3JlYXRlIHByb2NlZHVyZSB0 ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FM U1RBVEUgJzEyMzQ1JzsKK1NJR05BTCBmb28gU0VUIENMQVNTX09SSUdJTiA9ICdmb28nOworZW5k ICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1 cmUgdGVzdF9zaWduYWxfc3ludGF4KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9S IFNRTFNUQVRFICcxMjM0NSc7CitTSUdOQUwgZm9vIFNFVCBTVUJDTEFTU19PUklHSU4gPSAnZm9v JzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCitjcmVhdGUg cHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElU SU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworU0lHTkFMIGZvbyBTRVQgQ09OU1RSQUlOVF9DQVRB TE9HID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCAk JAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KK0RFQ0xBUkUg Zm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKK1NJR05BTCBmb28gU0VUIENPTlNU UkFJTlRfU0NIRU1BID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFs X3N5bnRheCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4K K0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKK1NJR05BTCBmb28g U0VUIENPTlNUUkFJTlRfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0 X3NpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4KCkK K2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CitTSUdO QUwgZm9vIFNFVCBDQVRBTE9HX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUg dGVzdF9zaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRh eCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOwor U0lHTkFMIGZvbyBTRVQgU0NIRU1BX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1 cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5 bnRheCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUn OworU0lHTkFMIGZvbyBTRVQgVEFCTEVfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2Nl ZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWxf c3ludGF4KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0 NSc7CitTSUdOQUwgZm9vIFNFVCBDT0xVTU5fTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHBy b2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWdu YWxfc3ludGF4KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcx MjM0NSc7CitTSUdOQUwgZm9vIFNFVCBDVVJTT1JfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9w IHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9z aWduYWxfc3ludGF4KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRF ICcxMjM0NSc7CitTSUdOQUwgZm9vIFNFVCBNRVNTQUdFX1RFWFQgPSAnZm9vJzsKK2VuZCAkJAor ZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRl c3Rfc2lnbmFsX3N5bnRheCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxT VEFURSAnMTIzNDUnOworU0lHTkFMIGZvbyBTRVQgTVlTUUxfRVJSTk8gPSAnZm9vJzsKK2VuZCAk JAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJl IHRlc3RfaW52YWxpZCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFU RSAnMTIzNDUnOworU0lHTkFMIGZvbyBTRVQgQ0xBU1NfT1JJR0lOID0gJ2ZvbycsIENMQVNTX09S SUdJTiA9ICdiYXInOworZW5kICQkCitFUlJPUiA0MjAwMDogRHVwbGljYXRlIGNvbmRpdGlvbiBp bmZvcm1hdGlvbiBpdGVtICdDTEFTU19PUklHSU4nCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52 YWxpZCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUn OworU0lHTkFMIGZvbyBTRVQgTUVTU0FHRV9URVhUID0gJ2ZvbycsIE1FU1NBR0VfVEVYVCA9ICdi YXInOworZW5kICQkCitFUlJPUiA0MjAwMDogRHVwbGljYXRlIGNvbmRpdGlvbiBpbmZvcm1hdGlv biBpdGVtICdNRVNTQUdFX1RFWFQnCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCiti ZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworU0lHTkFM IGZvbyBTRVQgTVlTUUxfRVJSTk8gPSAnZm9vJywgTVlTUUxfRVJSTk8gPSAnYmFyJzsKK2VuZCAk JAorRVJST1IgNDIwMDA6IER1cGxpY2F0ZSBjb25kaXRpb24gaW5mb3JtYXRpb24gaXRlbSAnTVlT UUxfRVJSTk8nCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCgpCitiZWdpbgor REVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworU0lHTkFMIGZvbyBT RVQKK0NMQVNTX09SSUdJTiA9ICdmb28nLAorU1VCQ0xBU1NfT1JJR0lOID0gJ2ZvbycsCitDT05T VFJBSU5UX0NBVEFMT0cgPSAnZm9vJywKK0NPTlNUUkFJTlRfU0NIRU1BID0gJ2ZvbycsCitDT05T VFJBSU5UX05BTUUgPSAnZm9vJywKK0NBVEFMT0dfTkFNRSA9ICdmb28nLAorU0NIRU1BX05BTUUg PSAnZm9vJywKK1RBQkxFX05BTUUgPSAnZm9vJywKK0NPTFVNTl9OQU1FID0gJ2ZvbycsCitDVVJT T1JfTkFNRSA9ICdmb28nLAorTUVTU0FHRV9URVhUID0gJ2ZvbycsCitNWVNRTF9FUlJOTyA9ICdm b28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKK1NJR05B TCBTUUxTVEFURSAnMDAwMDAnICQkCitFUlJPUiA0MjAwMDogQmFkIFNRTFNUQVRFOiAnMDAwMDAn CitTSUdOQUwgU1FMU1RBVEUgJzAwMDAxJyAkJAorRVJST1IgNDIwMDA6IEJhZCBTUUxTVEFURTog JzAwMDAxJworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK1NJR05BTCBT UUxTVEFURSAnMDAwMDAnOworZW5kICQkCitFUlJPUiA0MjAwMDogQmFkIFNRTFNUQVRFOiAnMDAw MDAnCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorU0lHTkFMIFNRTFNU QVRFICcwMDAwMSc7CitlbmQgJCQKK0VSUk9SIDQyMDAwOiBCYWQgU1FMU1RBVEU6ICcwMDAwMScK K2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitTSUdOQUwgU1FMU1RBVEUg JzEyMzQ1JyBTRVQgYmxhX2JsYSA9ICdmb28nOworZW5kICQkCitFUlJPUiA0MjAwMDogWW91IGhh dmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29y cmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRh eCB0byB1c2UgbmVhciAnYmxhX2JsYSA9ICdmb28nOworZW5kJyBhdCBsaW5lIDMKK2NyZWF0ZSBw cm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1JyBT RVQgQ09ORElUSU9OX0lERU5USUZJRVIgPSAnZm9vJzsKK2VuZCAkJAorRVJST1IgNDIwMDA6IFlv dSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0 IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9yIHRoZSByaWdodCBz eW50YXggdG8gdXNlIG5lYXIgJ0NPTkRJVElPTl9JREVOVElGSUVSID0gJ2Zvbyc7CitlbmQnIGF0 IGxpbmUgMworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK1NJR05BTCBT UUxTVEFURSAnMTIzNDUnIFNFVCBDT05ESVRJT05fTlVNQkVSID0gJ2Zvbyc7CitlbmQgJCQKK0VS Uk9SIDQyMDAwOiBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRo ZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZv ciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICdDT05ESVRJT05fTlVNQkVSID0gJ2Zvbyc7 CitlbmQnIGF0IGxpbmUgMworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4K K1NJR05BTCBTUUxTVEFURSAnMTIzNDUnIFNFVCBDT05ORUNUSU9OX05BTUUgPSAnZm9vJzsKK2Vu ZCAkJAorRVJST1IgNDIwMDA6IFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsg Y2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZl cnNpb24gZm9yIHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJ0NPTk5FQ1RJT05fTkFNRSA9 ICdmb28nOworZW5kJyBhdCBsaW5lIDMKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkK K2JlZ2luCitTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1JyBTRVQgTUVTU0FHRV9MRU5HVEggPSAnZm9v JzsKK2VuZCAkJAorRVJST1IgNDIwMDA6IFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5 bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2Vy dmVyIHZlcnNpb24gZm9yIHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJ01FU1NBR0VfTEVO R1RIID0gJ2Zvbyc7CitlbmQnIGF0IGxpbmUgMworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFs aWQoKQorYmVnaW4KK1NJR05BTCBTUUxTVEFURSAnMTIzNDUnIFNFVCBNRVNTQUdFX09DVEVUX0xF TkdUSCA9ICdmb28nOworZW5kICQkCitFUlJPUiA0MjAwMDogWW91IGhhdmUgYW4gZXJyb3IgaW4g eW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91 ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAn TUVTU0FHRV9PQ1RFVF9MRU5HVEggPSAnZm9vJzsKK2VuZCcgYXQgbGluZSAzCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VU IFBBUkFNRVRFUl9NT0RFID0gJ2Zvbyc7CitlbmQgJCQKK0VSUk9SIDQyMDAwOiBZb3UgaGF2ZSBh biBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNw b25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRv IHVzZSBuZWFyICdQQVJBTUVURVJfTU9ERSA9ICdmb28nOworZW5kJyBhdCBsaW5lIDMKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1 JyBTRVQgUEFSQU1FVEVSX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorRVJST1IgNDIwMDA6IFlvdSBo YXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNv cnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9yIHRoZSByaWdodCBzeW50 YXggdG8gdXNlIG5lYXIgJ1BBUkFNRVRFUl9OQU1FID0gJ2Zvbyc7CitlbmQnIGF0IGxpbmUgMwor Y3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK1NJR05BTCBTUUxTVEFURSAn MTIzNDUnIFNFVCBQQVJBTUVURVJfT1JESU5BTF9QT1NJVElPTiA9ICdmb28nOworZW5kICQkCitF UlJPUiA0MjAwMDogWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0 aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBm b3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnUEFSQU1FVEVSX09SRElOQUxfUE9TSVRJ T04gPSAnZm9vJzsKK2VuZCcgYXQgbGluZSAzCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxp ZCgpCitiZWdpbgorU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VUIFJFVFVSTkVEX1NRTFNUQVRF ID0gJ2Zvbyc7CitlbmQgJCQKK0VSUk9SIDQyMDAwOiBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3Vy IFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15 U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICdSRVRV Uk5FRF9TUUxTVEFURSA9ICdmb28nOworZW5kJyBhdCBsaW5lIDMKK2NyZWF0ZSBwcm9jZWR1cmUg dGVzdF9pbnZhbGlkKCkKK2JlZ2luCitTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1JyBTRVQgUk9VVElO RV9DQVRBTE9HID0gJ2Zvbyc7CitlbmQgJCQKK0VSUk9SIDQyMDAwOiBZb3UgaGF2ZSBhbiBlcnJv ciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0 byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBu ZWFyICdST1VUSU5FX0NBVEFMT0cgPSAnZm9vJzsKK2VuZCcgYXQgbGluZSAzCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VU IFJPVVRJTkVfTkFNRSA9ICdmb28nOworZW5kICQkCitFUlJPUiA0MjAwMDogWW91IGhhdmUgYW4g ZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9u ZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1 c2UgbmVhciAnUk9VVElORV9OQU1FID0gJ2Zvbyc7CitlbmQnIGF0IGxpbmUgMworY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK1NJR05BTCBTUUxTVEFURSAnMTIzNDUnIFNF VCBST1VUSU5FX1NDSEVNQSA9ICdmb28nOworZW5kICQkCitFUlJPUiA0MjAwMDogWW91IGhhdmUg YW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVz cG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0 byB1c2UgbmVhciAnUk9VVElORV9TQ0hFTUEgPSAnZm9vJzsKK2VuZCcgYXQgbGluZSAzCitjcmVh dGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorU0lHTkFMIFNRTFNUQVRFICcxMjM0 NScgU0VUIFNFUlZFUl9OQU1FID0gJ2Zvbyc7CitlbmQgJCQKK0VSUk9SIDQyMDAwOiBZb3UgaGF2 ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3Jy ZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4 IHRvIHVzZSBuZWFyICdTRVJWRVJfTkFNRSA9ICdmb28nOworZW5kJyBhdCBsaW5lIDMKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1 JyBTRVQgU1BFQ0lGSUNfTkFNRSA9ICdmb28nOworZW5kICQkCitFUlJPUiA0MjAwMDogWW91IGhh dmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29y cmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRh eCB0byB1c2UgbmVhciAnU1BFQ0lGSUNfTkFNRSA9ICdmb28nOworZW5kJyBhdCBsaW5lIDMKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitTSUdOQUwgU1FMU1RBVEUgJzEy MzQ1JyBTRVQgVFJJR0dFUl9DQVRBTE9HID0gJ2Zvbyc7CitlbmQgJCQKK0VSUk9SIDQyMDAwOiBZ b3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhh dCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQg c3ludGF4IHRvIHVzZSBuZWFyICdUUklHR0VSX0NBVEFMT0cgPSAnZm9vJzsKK2VuZCcgYXQgbGlu ZSAzCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorU0lHTkFMIFNRTFNU QVRFICcxMjM0NScgU0VUIFRSSUdHRVJfTkFNRSA9ICdmb28nOworZW5kICQkCitFUlJPUiA0MjAw MDogWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFs IHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJp Z2h0IHN5bnRheCB0byB1c2UgbmVhciAnVFJJR0dFUl9OQU1FID0gJ2Zvbyc7CitlbmQnIGF0IGxp bmUgMworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK1NJR05BTCBTUUxT VEFURSAnMTIzNDUnIFNFVCBUUklHR0VSX1NDSEVNQSA9ICdmb28nOworZW5kICQkCitFUlJPUiA0 MjAwMDogWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFu dWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhl IHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnVFJJR0dFUl9TQ0hFTUEgPSAnZm9vJzsKK2VuZCcg YXQgbGluZSAzCitkcm9wIHByb2NlZHVyZSBpZiBleGlzdHMgdGVzdF9pbnZhbGlkOworZHJvcCBw cm9jZWR1cmUgaWYgZXhpc3RzIHRlc3RfcmVzaWduYWxfc3ludGF4OworY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK1JFU0lHTkFMIGZvbzsKK2VuZCAkJAorRVJST1IgNDIw MDA6IFVuZGVmaW5lZCBDT05ESVRJT046IGZvbworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2ln bmFsX3N5bnRheCgpCitiZWdpbgorUkVTSUdOQUw7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRl c3RfcmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCiti ZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiAxMjM0OworUkVTSUdOQUwgZm9vOworZW5k ICQkCitFUlJPUiBIWTAwMDogU0lHTkFML1JFU0lHTkFMIGNhbiBvbmx5IHVzZSBhIENPTkRJVElP TiBkZWZpbmVkIHdpdGggU1FMU1RBVEUKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9z eW50YXgoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1 JzsKK1JFU0lHTkFMIGZvbzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9z eW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4K K1JFU0lHTkFMIFNRTFNUQVRFICcyMzAwMCc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rf cmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4 KCkKK2JlZ2luCitSRVNJR05BTCBTUUxTVEFURSBWQUxVRSAnMjMwMDAnOworZW5kICQkCitkcm9w IHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0 X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorUkVTSUdOQUwgU0VUIENMQVNTX09SSUdJTiA9ICdm b28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorY3Jl YXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorREVDTEFSRSBmb28g Q09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworUkVTSUdOQUwgZm9vIFNFVCBDTEFTU19P UklHSU4gPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50 YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KK1JF U0lHTkFMIFNFVCBTVUJDTEFTU19PUklHSU4gPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1 cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25h bF9zeW50YXgoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEy MzQ1JzsKK1JFU0lHTkFMIGZvbyBTRVQgU1VCQ0xBU1NfT1JJR0lOID0gJ2Zvbyc7CitlbmQgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJl IHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCitSRVNJR05BTCBTRVQgQ09OU1RSQUlOVF9D QVRBTE9HID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3lu dGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCitE RUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CitSRVNJR05BTCBmb28g U0VUIENPTlNUUkFJTlRfQ0FUQUxPRyA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0 ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5 bnRheCgpCitiZWdpbgorUkVTSUdOQUwgU0VUIENPTlNUUkFJTlRfU0NIRU1BID0gJ2Zvbyc7Citl bmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJ T04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CitSRVNJR05BTCBmb28gU0VUIENPTlNUUkFJTlRfU0NI RU1BID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4 ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCitSRVNJ R05BTCBTRVQgQ09OU1RSQUlOVF9OQU1FID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJl IHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxf c3ludGF4KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0 NSc7CitSRVNJR05BTCBmb28gU0VUIENPTlNUUkFJTlRfTkFNRSA9ICdmb28nOworZW5kICQkCitk cm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorY3JlYXRlIHByb2NlZHVyZSB0 ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorUkVTSUdOQUwgU0VUIENBVEFMT0dfTkFNRSA9 ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAor Y3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorREVDTEFSRSBm b28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworUkVTSUdOQUwgZm9vIFNFVCBDQVRB TE9HX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9z eW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4K K1JFU0lHTkFMIFNFVCBTQ0hFTUFfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVy ZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFs X3N5bnRheCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIz NDUnOworUkVTSUdOQUwgZm9vIFNFVCBTQ0hFTUFfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9w IHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0 X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorUkVTSUdOQUwgU0VUIFRBQkxFX05BTUUgPSAnZm9v JzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENP TkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKK1JFU0lHTkFMIGZvbyBTRVQgVEFCTEVfTkFN RSA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAk JAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorUkVTSUdO QUwgU0VUIENPTFVNTl9OQU1FID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rf cmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4 KCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CitS RVNJR05BTCBmb28gU0VUIENPTFVNTl9OQU1FID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2Vk dXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWdu YWxfc3ludGF4KCkKK2JlZ2luCitSRVNJR05BTCBTRVQgQ1VSU09SX05BTUUgPSAnZm9vJzsKK2Vu ZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElP TiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKK1JFU0lHTkFMIGZvbyBTRVQgQ1VSU09SX05BTUUgPSAn Zm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KK1JFU0lHTkFMIFNF VCBNRVNTQUdFX1RFWFQgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNp Z25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQor YmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKK1JFU0lH TkFMIGZvbyBTRVQgTUVTU0FHRV9URVhUID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJl IHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxf c3ludGF4KCkKK2JlZ2luCitSRVNJR05BTCBTRVQgTVlTUUxfRVJSTk8gPSAnZm9vJzsKK2VuZCAk JAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKK2NyZWF0ZSBwcm9jZWR1 cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBG T1IgU1FMU1RBVEUgJzEyMzQ1JzsKK1JFU0lHTkFMIGZvbyBTRVQgTVlTUUxfRVJSTk8gPSAnZm9v JzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCitERUNMQVJFIGZvbyBDT05ESVRJT04g Rk9SIFNRTFNUQVRFICcxMjM0NSc7CitSRVNJR05BTCBmb28gU0VUIENMQVNTX09SSUdJTiA9ICdm b28nLCBDTEFTU19PUklHSU4gPSAnYmFyJzsKK2VuZCAkJAorRVJST1IgNDIwMDA6IER1cGxpY2F0 ZSBjb25kaXRpb24gaW5mb3JtYXRpb24gaXRlbSAnQ0xBU1NfT1JJR0lOJworY3JlYXRlIHByb2Nl ZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FM U1RBVEUgJzEyMzQ1JzsKK1JFU0lHTkFMIGZvbyBTRVQgTUVTU0FHRV9URVhUID0gJ2ZvbycsIE1F U1NBR0VfVEVYVCA9ICdiYXInOworZW5kICQkCitFUlJPUiA0MjAwMDogRHVwbGljYXRlIGNvbmRp dGlvbiBpbmZvcm1hdGlvbiBpdGVtICdNRVNTQUdFX1RFWFQnCitjcmVhdGUgcHJvY2VkdXJlIHRl c3RfaW52YWxpZCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAn MTIzNDUnOworUkVTSUdOQUwgZm9vIFNFVCBNWVNRTF9FUlJOTyA9ICdmb28nLCBNWVNRTF9FUlJO TyA9ICdiYXInOworZW5kICQkCitFUlJPUiA0MjAwMDogRHVwbGljYXRlIGNvbmRpdGlvbiBpbmZv cm1hdGlvbiBpdGVtICdNWVNRTF9FUlJOTycKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25h bF9zeW50YXgoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEy MzQ1JzsKK1JFU0lHTkFMIGZvbyBTRVQKK0NMQVNTX09SSUdJTiA9ICdmb28nLAorU1VCQ0xBU1Nf T1JJR0lOID0gJ2ZvbycsCitDT05TVFJBSU5UX0NBVEFMT0cgPSAnZm9vJywKK0NPTlNUUkFJTlRf U0NIRU1BID0gJ2ZvbycsCitDT05TVFJBSU5UX05BTUUgPSAnZm9vJywKK0NBVEFMT0dfTkFNRSA9 ICdmb28nLAorU0NIRU1BX05BTUUgPSAnZm9vJywKK1RBQkxFX05BTUUgPSAnZm9vJywKK0NPTFVN Tl9OQU1FID0gJ2ZvbycsCitDVVJTT1JfTkFNRSA9ICdmb28nLAorTUVTU0FHRV9URVhUID0gJ2Zv byc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCitjcmVh dGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorUkVTSUdOQUwgU1FMU1RBVEUgJzAw MDAwJzsKK2VuZCAkJAorRVJST1IgNDIwMDA6IEJhZCBTUUxTVEFURTogJzAwMDAwJworcHJlcGFy ZSBzdG10IGZyb20gJ1NJR05BTCBTUUxTVEFURSBcJzIzMDAwXCcnOworRVJST1IgSFkwMDA6IFRo aXMgY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQgcHJv dG9jb2wgeWV0CitwcmVwYXJlIHN0bXQgZnJvbSAnUkVTSUdOQUwgU1FMU1RBVEUgXCcyMzAwMFwn JzsKK0VSUk9SIEhZMDAwOiBUaGlzIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgcHJl cGFyZWQgc3RhdGVtZW50IHByb3RvY29sIHlldAorZHJvcCBwcm9jZWR1cmUgaWYgZXhpc3RzIHRl c3Rfc2lnbmFsOworZHJvcCBwcm9jZWR1cmUgaWYgZXhpc3RzIHRlc3RfcmVzaWduYWw7Citkcm9w IHRhYmxlIGlmIGV4aXN0cyB0X3dhcm47Citkcm9wIHRhYmxlIGlmIGV4aXN0cyB0X2N1cnNvcjsK K2NyZWF0ZSB0YWJsZSB0X3dhcm4oYSBpbnRlZ2VyKDIpKTsKK2NyZWF0ZSB0YWJsZSB0X2N1cnNv cihhIGludGVnZXIpOworU0lHTkFMIGZvbzsKK0VSUk9SIDQyMDAwOiBVbmRlZmluZWQgQ09ORElU SU9OOiBmb28KK1NJR05BTCBTUUxTVEFURSAnMDEwMDAnOworV2FybmluZ3M6CitXYXJuaW5nCTE3 MjcJVW5oYW5kbGVkIHVzZXItZGVmaW5lZCB3YXJuaW5nCitTSUdOQUwgU1FMU1RBVEUgJzAyMDAw JzsKK0VSUk9SIDAyMDAwOiBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBmb3VuZAorU0lHTkFM IFNRTFNUQVRFICcyMzAwMCc7CitFUlJPUiAyMzAwMDogVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBl eGNlcHRpb24KK1NJR05BTCBTUUxTVEFURSBWQUxVRSAnMjMwMDAnOworRVJST1IgMjMwMDA6IFVu aGFuZGxlZCB1c2VyLWRlZmluZWQgZXhjZXB0aW9uCitTSUdOQUwgU1FMU1RBVEUgJ0hZMDAwJyBT RVQgTVlTUUxfRVJSTk8gPSA2NTUzNjsKK0VSUk9SIDQyMDAwOiBWYXJpYWJsZSAnTVlTUUxfRVJS Tk8nIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJzY1NTM2JworU0lHTkFMIFNRTFNUQVRF ICdIWTAwMCcgU0VUIE1ZU1FMX0VSUk5PID0gOTk5OTk7CitFUlJPUiA0MjAwMDogVmFyaWFibGUg J01ZU1FMX0VSUk5PJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICc5OTk5OScKK1NJR05B TCBTUUxTVEFURSAnSFkwMDAnIFNFVCBNWVNRTF9FUlJOTyA9IDQyOTQ5NjcyOTU7CitFUlJPUiA0 MjAwMDogVmFyaWFibGUgJ01ZU1FMX0VSUk5PJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9m ICc0Mjk0OTY3Mjk1JworU0lHTkFMIFNRTFNUQVRFICdIWTAwMCcgU0VUIE1ZU1FMX0VSUk5PID0g MDsKK0VSUk9SIDQyMDAwOiBWYXJpYWJsZSAnTVlTUUxfRVJSTk8nIGNhbid0IGJlIHNldCB0byB0 aGUgdmFsdWUgb2YgJzAnCitTSUdOQUwgU1FMU1RBVEUgJ0hZMDAwJyBTRVQgTVlTUUxfRVJSTk8g PSAtMTsKK0VSUk9SIDQyMDAwOiBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7 IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2 ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICctMScgYXQgbGluZSAxCitT SUdOQUwgU1FMU1RBVEUgJ0hZMDAwJyBTRVQgTVlTUUxfRVJSTk8gPSA2NTUzNTsKK0VSUk9SIEhZ MDAwOiBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIGV4Y2VwdGlvbgorUkVTSUdOQUw7CitFUlJPUiAw SzAwMDogUkVTSUdOQUwgd2hlbiBoYW5kbGVyIG5vdCBhY3RpdmUKK1JFU0lHTkFMIGZvbzsKK0VS Uk9SIDQyMDAwOiBVbmRlZmluZWQgQ09ORElUSU9OOiBmb28KK1JFU0lHTkFMIFNRTFNUQVRFICcx MjM0NSc7CitFUlJPUiAwSzAwMDogUkVTSUdOQUwgd2hlbiBoYW5kbGVyIG5vdCBhY3RpdmUKK1JF U0lHTkFMIFNRTFNUQVRFIFZBTFVFICcxMjM0NSc7CitFUlJPUiAwSzAwMDogUkVTSUdOQUwgd2hl biBoYW5kbGVyIG5vdCBhY3RpdmUKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVn aW4KKyMgbWF4IHJhbmdlCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICdBQUJC Qic7CitTSUdOQUwgZm9vIFNFVCBNWVNRTF9FUlJOTyA9IDY1NTM1OworZW5kICQkCitjYWxsIHRl c3Rfc2lnbmFsKCkgJCQKK0VSUk9SIEFBQkJCOiBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIGV4Y2Vw dGlvbgorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVz dF9zaWduYWwoKQorYmVnaW4KKyMgbWF4IHJhbmdlCitERUNMQVJFIGZvbyBDT05ESVRJT04gRk9S IFNRTFNUQVRFICdBQUJCQic7CitTSUdOQUwgZm9vIFNFVCBNWVNRTF9FUlJOTyA9IDY1NTM2Owor ZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDQyMDAwOiBWYXJpYWJsZSAnTVlT UUxfRVJSTk8nIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJzY1NTM2JworZHJvcCBwcm9j ZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVn aW4KKyMgRXJyb3IKK0RFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsK K1NJR05BTCBmb28gU0VUIE1ZU1FMX0VSUk5PID0gOTk5OTsKK2VuZCAkJAorY2FsbCB0ZXN0X3Np Z25hbCgpICQkCitFUlJPUiA5OTk5OTogVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24K K2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2ln bmFsKCkKK2JlZ2luCisjIHdhcm5pbmcKK0RFQ0xBUkUgdG9vX2Zld19yZWNvcmRzIENPTkRJVElP TiBGT1IgU1FMU1RBVEUgJzAxMDAwJzsKK1NJR05BTCB0b29fZmV3X3JlY29yZHMgU0VUIE1ZU1FM X0VSUk5PID0gMTI2MTsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitXYXJuaW5nczoK K1dhcm5pbmcJMTI2MQlVbmhhbmRsZWQgdXNlci1kZWZpbmVkIHdhcm5pbmcKK2Ryb3AgcHJvY2Vk dXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2lu CisjIE5vdCBmb3VuZAorREVDTEFSRSBzcF9mZXRjaF9ub19kYXRhIENPTkRJVElPTiBGT1IgU1FM U1RBVEUgJzAyMDAwJzsKK1NJR05BTCBzcF9mZXRjaF9ub19kYXRhIFNFVCBNWVNRTF9FUlJOTyA9 IDEzMjk7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorRVJST1IgMDIwMDA6IFVuaGFu ZGxlZCB1c2VyLWRlZmluZWQgbm90IGZvdW5kCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAk JAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorIyBFcnJvcgorREVDTEFS RSBzcF9jdXJzb3JfYWxyZWFkeV9vcGVuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzI0MDAwJzsK K1NJR05BTCBzcF9jdXJzb3JfYWxyZWFkeV9vcGVuIFNFVCBNWVNRTF9FUlJOTyA9IDEzMjU7Citl bmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorRVJST1IgMjQwMDA6IFVuaGFuZGxlZCB1c2Vy LWRlZmluZWQgZXhjZXB0aW9uCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRl IHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorIyBTZXZlcmUgZXJyb3IKK0RFQ0xBUkUg bG9ja19kZWFkbG9jayBDT05ESVRJT04gRk9SIFNRTFNUQVRFICc0MDAwMSc7CitTSUdOQUwgbG9j a19kZWFkbG9jayBTRVQgTVlTUUxfRVJSTk8gPSAxMjEzOworZW5kICQkCitjYWxsIHRlc3Rfc2ln bmFsKCkgJCQKK0VSUk9SIDQwMDAxOiBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIGV4Y2VwdGlvbgor ZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWdu YWwoKQorYmVnaW4KKyMgVW5rbm93biAtPiBlcnJvcgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZP UiBTUUxTVEFURSAiOTk5OTkiOworU0lHTkFMIGZvbzsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25h bCgpICQkCitFUlJPUiA5OTk5OTogVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24KK2Ry b3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFs KCkKK2JlZ2luCisjIHdhcm5pbmcsIG5vIHN1YmNsYXNzCitERUNMQVJFIHdhcm4gQ09ORElUSU9O IEZPUiBTUUxTVEFURSAiMDEwMDAiOworU0lHTkFMIHdhcm47CitlbmQgJCQKK2NhbGwgdGVzdF9z aWduYWwoKSAkJAorV2FybmluZ3M6CitXYXJuaW5nCTE3MjcJVW5oYW5kbGVkIHVzZXItZGVmaW5l ZCB3YXJuaW5nCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorIyB3YXJuaW5nLCB3aXRoIHN1YmNsYXNzCitERUNMQVJF IHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDExMjMiOworU0lHTkFMIHdhcm47CitlbmQg JCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorV2FybmluZ3M6CitXYXJuaW5nCTE3MjcJVW5oYW5k bGVkIHVzZXItZGVmaW5lZCB3YXJuaW5nCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAor Y3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorIyBOb3QgZm91bmQsIG5vIHN1 YmNsYXNzCitERUNMQVJFIG5vdF9mb3VuZCBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMjAwMCI7 CitTSUdOQUwgbm90X2ZvdW5kOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9S IDAyMDAwOiBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBmb3VuZAorZHJvcCBwcm9jZWR1cmUg dGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyMg Tm90IGZvdW5kLCB3aXRoIHN1YmNsYXNzCitERUNMQVJFIG5vdF9mb3VuZCBDT05ESVRJT04gRk9S IFNRTFNUQVRFICIwMlhYWCI7CitTSUdOQUwgbm90X2ZvdW5kOworZW5kICQkCitjYWxsIHRlc3Rf c2lnbmFsKCkgJCQKK0VSUk9SIDAyWFhYOiBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBmb3Vu ZAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9z aWduYWwoKQorYmVnaW4KKyMgRXJyb3IsIG5vIHN1YmNsYXNzCitERUNMQVJFIGVycm9yIENPTkRJ VElPTiBGT1IgU1FMU1RBVEUgIjEyMDAwIjsKK1NJR05BTCBlcnJvcjsKK2VuZCAkJAorY2FsbCB0 ZXN0X3NpZ25hbCgpICQkCitFUlJPUiAxMjAwMDogVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNl cHRpb24KK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRl c3Rfc2lnbmFsKCkKK2JlZ2luCisjIEVycm9yLCB3aXRoIHN1YmNsYXNzCitERUNMQVJFIGVycm9y IENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjEyQUJDIjsKK1NJR05BTCBlcnJvcjsKK2VuZCAkJAor Y2FsbCB0ZXN0X3NpZ25hbCgpICQkCitFUlJPUiAxMkFCQzogVW5oYW5kbGVkIHVzZXItZGVmaW5l ZCBleGNlcHRpb24KK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2Vk dXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisjIFNldmVyZSBlcnJvciwgbm8gc3ViY2xhc3MKK0RF Q0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiNDAwMDAiOworU0lHTkFMIGVycm9y OworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDQwMDAwOiBVbmhhbmRsZWQg dXNlci1kZWZpbmVkIGV4Y2VwdGlvbgorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyMgU2V2ZXJlIGVycm9yLCB3aXRo IHN1YmNsYXNzCitERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjQwMDAxIjsK K1NJR05BTCBlcnJvcjsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitFUlJPUiA0MDAw MTogVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24KK2Ryb3AgcHJvY2VkdXJlIHRlc3Rf c2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJF IGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICc5OTk5OSc7CitiZWdpbgorREVDTEFSRSBmb28g Q09ORElUSU9OIEZPUiA4ODg4OworZW5kOworU0lHTkFMIGZvbyBTRVQgTVlTUUxfRVJSTk89OTk5 OTsgLyogb3V0ZXIgKi8KK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitFUlJPUiA5OTk5 OTogVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24KK2Ryb3AgcHJvY2VkdXJlIHRlc3Rf c2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJF IGZvbyBDT05ESVRJT04gRk9SIDk5OTk7CitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZP UiBTUUxTVEFURSAnODg4ODgnOworU0lHTkFMIGZvbyBTRVQgTVlTUUxfRVJSTk89ODg4ODsgLyog aW5uZXIgKi8KK2VuZDsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitFUlJPUiA4ODg4 ODogVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24KK2Ryb3AgcHJvY2VkdXJlIHRlc3Rf c2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJF IGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICc5OTk5OSc7CitTSUdOQUwgZm9vIFNFVCBNWVNR TF9FUlJOTyA9IDExMTE7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorRVJST1IgOTk5 OTk6IFVuaGFuZGxlZCB1c2VyLWRlZmluZWQgZXhjZXB0aW9uCitkcm9wIHByb2NlZHVyZSB0ZXN0 X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFS RSB3YXJuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMDAwIjsKK1NJR05BTCB3YXJuIFNFVCBN WVNRTF9FUlJOTyA9IDExMTE7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorV2Fybmlu Z3M6CitXYXJuaW5nCTExMTEJVW5oYW5kbGVkIHVzZXItZGVmaW5lZCB3YXJuaW5nCitkcm9wIHBy b2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCiti ZWdpbgorREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDIwMDAiOwor U0lHTkFMIG5vdF9mb3VuZCBTRVQgTVlTUUxfRVJSTk8gPSAxMTExOworZW5kICQkCitjYWxsIHRl c3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDAyMDAwOiBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBm b3VuZAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVz dF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAi NTUwMDAiOworU0lHTkFMIGVycm9yIFNFVCBNWVNRTF9FUlJOTyA9IDExMTE7CitlbmQgJCQKK2Nh bGwgdGVzdF9zaWduYWwoKSAkJAorRVJST1IgNTUwMDA6IFVuaGFuZGxlZCB1c2VyLWRlZmluZWQg ZXhjZXB0aW9uCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorU0lHTkFMIFNRTFNUQVRF ICc3Nzc3NycgU0VUIE1FU1NBR0VfVEVYVD0nJyAkJAorRVJST1IgNzc3Nzc6IAorY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBT UUxTVEFURSAnNzc3NzcnOworU0lHTkFMIGZvbyBTRVQKK01FU1NBR0VfVEVYVCA9ICIiLAorTVlT UUxfRVJSTk89NTY3ODsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitFUlJPUiA3Nzc3 NzogCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0 X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5 OTknOworU0lHTkFMIGZvbyBTRVQKK01FU1NBR0VfVEVYVCA9ICJTb21ldGhpbmcgYmFkIGhhcHBl bmVkIiwKK01ZU1FMX0VSUk5PPTk5OTk7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAor RVJST1IgOTk5OTk6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rf c2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJF IHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDEwMDAiOworU0lHTkFMIHdhcm4gU0VUIE1F U1NBR0VfVEVYVCA9ICJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIjsKK2VuZCAkJAorY2FsbCB0ZXN0 X3NpZ25hbCgpICQkCitXYXJuaW5nczoKK1dhcm5pbmcJMTcyNwlTb21ldGhpbmcgYmFkIGhhcHBl bmVkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0 X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFU RSAiMDIwMDAiOworU0lHTkFMIG5vdF9mb3VuZCBTRVQgTUVTU0FHRV9URVhUID0gIlNvbWV0aGlu ZyBiYWQgaGFwcGVuZWQiOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDAy MDAwOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAk JAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBlcnJvciBD T05ESVRJT04gRk9SIFNRTFNUQVRFICI1NTAwMCI7CitTSUdOQUwgZXJyb3IgU0VUIE1FU1NBR0Vf VEVYVCA9ICJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIjsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25h bCgpICQkCitFUlJPUiA1NTAwMDogU29tZXRoaW5nIGJhZCBoYXBwZW5lZAorZHJvcCBwcm9jZWR1 cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4K K0RFQ0xBUkUgc29tZXRoaW5nIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMDAwIjsKK1NJR05B TCBzb21ldGhpbmcgU0VUIE1FU1NBR0VfVEVYVCA9IF91dGY4ICJUaGlzIGlzIGEgVVRGOCB0ZXh0 IjsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitXYXJuaW5nczoKK1dhcm5pbmcJMTcy NwlUaGlzIGlzIGEgVVRGOCB0ZXh0Citkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3Jl YXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBzb21ldGhpbmcgQ09O RElUSU9OIEZPUiBTUUxTVEFURSAiMDEwMDAiOworU0lHTkFMIHNvbWV0aGluZyBTRVQgTUVTU0FH RV9URVhUID0gIiI7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorV2FybmluZ3M6CitX YXJuaW5nCTE3MjcJCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2Nl ZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNR TFNUQVRFICc5OTk5OSc7CitTSUdOQUwgZXJyb3IgU0VUCitNWVNRTF9FUlJOTyA9IE5VTEw7Citl bmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorRVJST1IgNDIwMDA6IFZhcmlhYmxlICdNWVNR TF9FUlJOTycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnTlVMTCcKK2Ryb3AgcHJvY2Vk dXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2lu CitERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKK1NJR05BTCBl cnJvciBTRVQKK0NMQVNTX09SSUdJTiA9IE5VTEw7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwo KSAkJAorRVJST1IgNDIwMDA6IFZhcmlhYmxlICdDTEFTU19PUklHSU4nIGNhbid0IGJlIHNldCB0 byB0aGUgdmFsdWUgb2YgJ05VTEwnCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3Jl YXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBlcnJvciBDT05ESVRJ T04gRk9SIFNRTFNUQVRFICc5OTk5OSc7CitTSUdOQUwgZXJyb3IgU0VUCitTVUJDTEFTU19PUklH SU4gPSBOVUxMOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDQyMDAwOiBW YXJpYWJsZSAnU1VCQ0xBU1NfT1JJR0lOJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICdO VUxMJworZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVz dF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAn OTk5OTknOworU0lHTkFMIGVycm9yIFNFVAorQ09OU1RSQUlOVF9DQVRBTE9HID0gTlVMTDsKK2Vu ZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitFUlJPUiA0MjAwMDogVmFyaWFibGUgJ0NPTlNU UkFJTlRfQ0FUQUxPRycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnTlVMTCcKK2Ryb3Ag cHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkK K2JlZ2luCitERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKK1NJ R05BTCBlcnJvciBTRVQKK0NPTlNUUkFJTlRfU0NIRU1BID0gTlVMTDsKK2VuZCAkJAorY2FsbCB0 ZXN0X3NpZ25hbCgpICQkCitFUlJPUiA0MjAwMDogVmFyaWFibGUgJ0NPTlNUUkFJTlRfU0NIRU1B JyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICdOVUxMJworZHJvcCBwcm9jZWR1cmUgdGVz dF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KK0RFQ0xB UkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5OTknOworU0lHTkFMIGVycm9yIFNF VAorQ09OU1RSQUlOVF9OQU1FID0gTlVMTDsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQk CitFUlJPUiA0MjAwMDogVmFyaWFibGUgJ0NPTlNUUkFJTlRfTkFNRScgY2FuJ3QgYmUgc2V0IHRv IHRoZSB2YWx1ZSBvZiAnTlVMTCcKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVh dGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIGVycm9yIENPTkRJVElP TiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKK1NJR05BTCBlcnJvciBTRVQKK0NBVEFMT0dfTkFNRSA9 IE5VTEw7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorRVJST1IgNDIwMDA6IFZhcmlh YmxlICdDQVRBTE9HX05BTUUnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJ05VTEwnCitk cm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25h bCgpCitiZWdpbgorREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICc5OTk5OSc7 CitTSUdOQUwgZXJyb3IgU0VUCitTQ0hFTUFfTkFNRSA9IE5VTEw7CitlbmQgJCQKK2NhbGwgdGVz dF9zaWduYWwoKSAkJAorRVJST1IgNDIwMDA6IFZhcmlhYmxlICdTQ0hFTUFfTkFNRScgY2FuJ3Qg YmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnTlVMTCcKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFs ICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIGVycm9y IENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKK1NJR05BTCBlcnJvciBTRVQKK1RBQkxF X05BTUUgPSBOVUxMOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDQyMDAw OiBWYXJpYWJsZSAnVEFCTEVfTkFNRScgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnTlVM TCcKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rf c2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5 OTk5JzsKK1NJR05BTCBlcnJvciBTRVQKK0NPTFVNTl9OQU1FID0gTlVMTDsKK2VuZCAkJAorY2Fs bCB0ZXN0X3NpZ25hbCgpICQkCitFUlJPUiA0MjAwMDogVmFyaWFibGUgJ0NPTFVNTl9OQU1FJyBj YW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICdOVUxMJworZHJvcCBwcm9jZWR1cmUgdGVzdF9z aWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUg ZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5OTknOworU0lHTkFMIGVycm9yIFNFVAor Q1VSU09SX05BTUUgPSBOVUxMOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9S IDQyMDAwOiBWYXJpYWJsZSAnQ1VSU09SX05BTUUnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUg b2YgJ05VTEwnCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNU QVRFICc5OTk5OSc7CitTSUdOQUwgZXJyb3IgU0VUCitNRVNTQUdFX1RFWFQgPSBOVUxMOworZW5k ICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDQyMDAwOiBWYXJpYWJsZSAnTUVTU0FH RV9URVhUJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICdOVUxMJworZHJvcCBwcm9jZWR1 cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4K K0RFQ0xBUkUgc29tZXRoaW5nIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKK0RFQ0xB UkUgbWVzc2FnZV90ZXh0IFZBUkNIQVIoNjQpIERFRkFVTFQgIkxvY2FsIHN0cmluZyB2YXJpYWJs ZSI7CitERUNMQVJFIHNxbGNvZGUgSU5URUdFUiBERUZBVUxUIDEyMzQ7CitTSUdOQUwgc29tZXRo aW5nIFNFVAorTUVTU0FHRV9URVhUID0gbWVzc2FnZV90ZXh0LAorTVlTUUxfRVJSTk8gPSBzcWxj b2RlOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIDk5OTk5OiBMb2NhbCBz dHJpbmcgdmFyaWFibGUKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3Rfc2lnbmFsKG1lc3NhZ2VfdGV4dCBWQVJDSEFSKDY0KSwgc3FsY29kZSBJTlRF R0VSKQorYmVnaW4KK0RFQ0xBUkUgc29tZXRoaW5nIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjEy MzQ1IjsKK1NJR05BTCBzb21ldGhpbmcgU0VUCitNRVNTQUdFX1RFWFQgPSBtZXNzYWdlX3RleHQs CitNWVNRTF9FUlJOTyA9IHNxbGNvZGU7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoIlBhcmFt ZXRlciBzdHJpbmciLCBOVUxMKSAkJAorRVJST1IgNDIwMDA6IFZhcmlhYmxlICdNWVNRTF9FUlJO TycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnTlVMTCcKK2NhbGwgdGVzdF9zaWduYWwo TlVMTCwgMTIzNCkgJCQKK0VSUk9SIDQyMDAwOiBWYXJpYWJsZSAnTUVTU0FHRV9URVhUJyBjYW4n dCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICdOVUxMJworY2FsbCB0ZXN0X3NpZ25hbCgiUGFyYW1l dGVyIHN0cmluZyIsIDU2NzgpICQkCitFUlJPUiAxMjM0NTogUGFyYW1ldGVyIHN0cmluZworZHJv cCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwo KQorYmVnaW4KK0RFQ0xBUkUgc29tZXRoaW5nIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIkFBQkJC IjsKK1NJR05BTCBzb21ldGhpbmcgU0VUCitNRVNTQUdFX1RFWFQgPSBAbWVzc2FnZV90ZXh0LAor TVlTUUxfRVJSTk8gPSBAc3FsY29kZTsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitF UlJPUiA0MjAwMDogVmFyaWFibGUgJ01FU1NBR0VfVEVYVCcgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2 YWx1ZSBvZiAnTlVMTCcKK3NldCBAc3FsY29kZT0gMTIgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAk JAorRVJST1IgNDIwMDA6IFZhcmlhYmxlICdNRVNTQUdFX1RFWFQnIGNhbid0IGJlIHNldCB0byB0 aGUgdmFsdWUgb2YgJ05VTEwnCitzZXQgQG1lc3NhZ2VfdGV4dD0gIlVzZXIgdmFyaWFibGUiICQk CitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0VSUk9SIEFBQkJCOiBVc2VyIHZhcmlhYmxlCitkcm9w IHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQo KQorYmVnaW4KK0RFQ0xBUkUgc29tZXRoaW5nIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIkFBQkJC IjsKK1NJR05BTCBzb21ldGhpbmcgU0VUCitNRVNTQUdFX1RFWFQgPSBAbWVzc2FnZV90ZXh0IDo9 ICdpbGxlZ2FsJywKK01ZU1FMX0VSUk5PID0gQHNxbGNvZGUgOj0gMTIzNDsKK2VuZCAkJAorRVJS T1IgNDIwMDA6IFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhl IG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9y IHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJworTVlTUUxfRVJSTk8gPSBAc3FsY29kZSA6 PSAxMjM0OworZW5kJyBhdCBsaW5lIDUKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQor YmVnaW4KK0RFQ0xBUkUgYWFhIFZBUkNIQVIoNjQpOworREVDTEFSRSBiYmIgVkFSQ0hBUig2NCk7 CitERUNMQVJFIGNjYyBWQVJDSEFSKDY0KTsKK0RFQ0xBUkUgZGRkIFZBUkNIQVIoNjQpOworREVD TEFSRSBlZWUgVkFSQ0hBUig2NCk7CitERUNMQVJFIGZmZiBWQVJDSEFSKDY0KTsKK0RFQ0xBUkUg Z2dnIFZBUkNIQVIoNjQpOworREVDTEFSRSBoaGggVkFSQ0hBUig2NCk7CitERUNMQVJFIGlpaSBW QVJDSEFSKDY0KTsKK0RFQ0xBUkUgampqIFZBUkNIQVIoNjQpOworREVDTEFSRSBra2sgVkFSQ0hB Uig2NCk7CitERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDEyMzQiOworc2V0 IGFhYT0gcmVwZWF0KCJBIiwgNjQpOworc2V0IGJiYj0gcmVwZWF0KCJCIiwgNjQpOworc2V0IGNj Yz0gcmVwZWF0KCJDIiwgNjQpOworc2V0IGRkZD0gcmVwZWF0KCJEIiwgNjQpOworc2V0IGVlZT0g cmVwZWF0KCJFIiwgNjQpOworc2V0IGZmZj0gcmVwZWF0KCJGIiwgNjQpOworc2V0IGdnZz0gcmVw ZWF0KCJHIiwgNjQpOworc2V0IGhoaD0gcmVwZWF0KCJIIiwgNjQpOworc2V0IGlpaT0gcmVwZWF0 KCJJIiwgNjQpOworc2V0IGpqaj0gcmVwZWF0KCJKIiwgNjQpOworc2V0IGtraz0gcmVwZWF0KCJL IiwgNjQpOworU0lHTkFMIHdhcm4gU0VUCitDTEFTU19PUklHSU4gPSBhYWEsCitTVUJDTEFTU19P UklHSU4gPSBiYmIsCitDT05TVFJBSU5UX0NBVEFMT0cgPSBjY2MsCitDT05TVFJBSU5UX1NDSEVN QSA9IGRkZCwKK0NPTlNUUkFJTlRfTkFNRSA9IGVlZSwKK0NBVEFMT0dfTkFNRSA9IGZmZiwKK1ND SEVNQV9OQU1FID0gZ2dnLAorVEFCTEVfTkFNRSA9IGhoaCwKK0NPTFVNTl9OQU1FID0gaWlpLAor Q1VSU09SX05BTUUgPSBqamosCitNRVNTQUdFX1RFWFQgPSBra2ssCitNWVNRTF9FUlJOTyA9IDY1 NTM1OworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK1dhcm5pbmdzOgorV2FybmluZwk2 NTUzNQlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL S0tLS0tLS0tLS0tLCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2Nl ZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSB3YXJuIENPTkRJVElPTiBGT1IgU1FM U1RBVEUgIjAxMjM0IjsKK1NJR05BTCB3YXJuIFNFVAorTVlTUUxfRVJSTk8gPSA5OTk5OTk5OTk5 OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk7CitlbmQgJCQKK2NhbGwg dGVzdF9zaWduYWwoKSAkJAorRVJST1IgNDIwMDA6IFZhcmlhYmxlICdNWVNRTF9FUlJOTycgY2Fu J3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5 OTk5OTk5OTk5OTk5OTk5OTk5OTk5JworZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgYWFheCBWQVJDSEFS KDY1KTsKK0RFQ0xBUkUgYmJieCBWQVJDSEFSKDY1KTsKK0RFQ0xBUkUgY2NjeCBWQVJDSEFSKDY1 KTsKK0RFQ0xBUkUgZGRkeCBWQVJDSEFSKDY1KTsKK0RFQ0xBUkUgZWVleCBWQVJDSEFSKDY1KTsK K0RFQ0xBUkUgZmZmeCBWQVJDSEFSKDY1KTsKK0RFQ0xBUkUgZ2dneCBWQVJDSEFSKDY1KTsKK0RF Q0xBUkUgaGhoeCBWQVJDSEFSKDY1KTsKK0RFQ0xBUkUgaWlpeCBWQVJDSEFSKDY1KTsKK0RFQ0xB UkUgampqeCBWQVJDSEFSKDY1KTsKK0RFQ0xBUkUga2treCBWQVJDSEFSKDY1KTsKK0RFQ0xBUkUg bGxseCBWQVJDSEFSKDEyOSk7CitERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAi MDEyMzQiOworc2V0IGFhYXg9IGNvbmNhdChyZXBlYXQoIkEiLCA2NCksICJYIik7CitzZXQgYmJi eD0gY29uY2F0KHJlcGVhdCgiQiIsIDY0KSwgIlgiKTsKK3NldCBjY2N4PSBjb25jYXQocmVwZWF0 KCJDIiwgNjQpLCAiWCIpOworc2V0IGRkZHg9IGNvbmNhdChyZXBlYXQoIkQiLCA2NCksICJYIik7 CitzZXQgZWVleD0gY29uY2F0KHJlcGVhdCgiRSIsIDY0KSwgIlgiKTsKK3NldCBmZmZ4PSBjb25j YXQocmVwZWF0KCJGIiwgNjQpLCAiWCIpOworc2V0IGdnZ3g9IGNvbmNhdChyZXBlYXQoIkciLCA2 NCksICJYIik7CitzZXQgaGhoeD0gY29uY2F0KHJlcGVhdCgiSCIsIDY0KSwgIlgiKTsKK3NldCBp aWl4PSBjb25jYXQocmVwZWF0KCJJIiwgNjQpLCAiWCIpOworc2V0IGpqang9IGNvbmNhdChyZXBl YXQoIkoiLCA2NCksICJYIik7CitzZXQga2treD0gY29uY2F0KHJlcGVhdCgiSyIsIDY0KSwgIlgi KTsKK3NldCBsbGx4PSBjb25jYXQocmVwZWF0KCIxIiwgMTAwKSwKK3JlcGVhdCgiMiIsIDIwKSwK K3JlcGVhdCgiOCIsIDgpLAorIlgiKTsKK1NJR05BTCB3YXJuIFNFVAorQ0xBU1NfT1JJR0lOID0g YWFheCwKK1NVQkNMQVNTX09SSUdJTiA9IGJiYngsCitDT05TVFJBSU5UX0NBVEFMT0cgPSBjY2N4 LAorQ09OU1RSQUlOVF9TQ0hFTUEgPSBkZGR4LAorQ09OU1RSQUlOVF9OQU1FID0gZWVleCwKK0NB VEFMT0dfTkFNRSA9IGZmZngsCitTQ0hFTUFfTkFNRSA9IGdnZ3gsCitUQUJMRV9OQU1FID0gaGho eCwKK0NPTFVNTl9OQU1FID0gaWlpeCwKK0NVUlNPUl9OQU1FID0gampqeCwKK01FU1NBR0VfVEVY VCA9IGxsbHgsCitNWVNRTF9FUlJOTyA9IDEwMDAwOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFs KCkgJCQKK1dhcm5pbmdzOgorV2FybmluZwkxNzMyCURhdGEgdHJ1bmNhdGVkIGZvciBjb25kaXRp b24gaXRlbSAnQ0xBU1NfT1JJR0lOJworV2FybmluZwkxNzMyCURhdGEgdHJ1bmNhdGVkIGZvciBj b25kaXRpb24gaXRlbSAnU1VCQ0xBU1NfT1JJR0lOJworV2FybmluZwkxNzMyCURhdGEgdHJ1bmNh dGVkIGZvciBjb25kaXRpb24gaXRlbSAnQ09OU1RSQUlOVF9DQVRBTE9HJworV2FybmluZwkxNzMy CURhdGEgdHJ1bmNhdGVkIGZvciBjb25kaXRpb24gaXRlbSAnQ09OU1RSQUlOVF9TQ0hFTUEnCitX YXJuaW5nCTE3MzIJRGF0YSB0cnVuY2F0ZWQgZm9yIGNvbmRpdGlvbiBpdGVtICdDT05TVFJBSU5U X05BTUUnCitXYXJuaW5nCTE3MzIJRGF0YSB0cnVuY2F0ZWQgZm9yIGNvbmRpdGlvbiBpdGVtICdD QVRBTE9HX05BTUUnCitXYXJuaW5nCTE3MzIJRGF0YSB0cnVuY2F0ZWQgZm9yIGNvbmRpdGlvbiBp dGVtICdTQ0hFTUFfTkFNRScKK1dhcm5pbmcJMTczMglEYXRhIHRydW5jYXRlZCBmb3IgY29uZGl0 aW9uIGl0ZW0gJ1RBQkxFX05BTUUnCitXYXJuaW5nCTE3MzIJRGF0YSB0cnVuY2F0ZWQgZm9yIGNv bmRpdGlvbiBpdGVtICdDT0xVTU5fTkFNRScKK1dhcm5pbmcJMTczMglEYXRhIHRydW5jYXRlZCBm b3IgY29uZGl0aW9uIGl0ZW0gJ0NVUlNPUl9OQU1FJworV2FybmluZwkxNzMyCURhdGEgdHJ1bmNh dGVkIGZvciBjb25kaXRpb24gaXRlbSAnTUVTU0FHRV9URVhUJworV2FybmluZwkxMDAwMAkxMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMjIyMjIyMjIyMjIyMjIyMjIy MjI4ODg4ODg4OAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1 cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgd2FybiBDT05ESVRJT04gRk9SIFNRTFNU QVRFICIwMTIzNCI7CitERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIFNRTFNUQVRFICIwMTIz NCIKKyAgYmVnaW4KK3NlbGVjdCAiQ2F1Z2h0IGJ5IFNRTFNUQVRFIjsKK2VuZDsKK1NJR05BTCB3 YXJuIFNFVAorTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYSB3YXJuaW5nIiwKK01ZU1FMX0VSUk5P ID0gMTAxMjsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitDYXVnaHQgYnkgU1FMU1RB VEUKK0NhdWdodCBieSBTUUxTVEFURQorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgd2FybiBDT05ESVRJ T04gRk9SIFNRTFNUQVRFICIwMTIzNCI7CitERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIDEw MTIKK2JlZ2luCitzZWxlY3QgIkNhdWdodCBieSBudW1iZXIiOworZW5kOworU0lHTkFMIHdhcm4g U0VUCitNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhIHdhcm5pbmciLAorTVlTUUxfRVJSTk8gPSAx MDEyOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0NhdWdodCBieSBudW1iZXIKK0Nh dWdodCBieSBudW1iZXIKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBT UUxTVEFURSAiMDEyMzQiOworREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBTUUxXQVJOSU5H CitiZWdpbgorc2VsZWN0ICJDYXVnaHQgYnkgU1FMV0FSTklORyI7CitlbmQ7CitTSUdOQUwgd2Fy biBTRVQKK01FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGEgd2FybmluZyIsCitNWVNRTF9FUlJOTyA9 IDEwMTI7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorQ2F1Z2h0IGJ5IFNRTFdBUk5J TkcKK0NhdWdodCBieSBTUUxXQVJOSU5HCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAor Y3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorREVDTEFSRSBub3RfZm91bmQg Q09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDJBQkMiOworREVDTEFSRSBDT05USU5VRSBIQU5ETEVS IGZvciBTUUxTVEFURSAiMDJBQkMiCisgIGJlZ2luCitzZWxlY3QgIkNhdWdodCBieSBTUUxTVEFU RSI7CitlbmQ7CitTSUdOQUwgbm90X2ZvdW5kIFNFVAorTUVTU0FHRV9URVhUID0gIlJhaXNpbmcg YSBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCitjYWxsIHRlc3Rfc2ln bmFsKCkgJCQKK0NhdWdodCBieSBTUUxTVEFURQorQ2F1Z2h0IGJ5IFNRTFNUQVRFCitkcm9wIHBy b2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCiti ZWdpbgorREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDJBQkMiOwor REVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCitiZWdpbgorc2VsZWN0ICJDYXVnaHQg YnkgbnVtYmVyIjsKK2VuZDsKK1NJR05BTCBub3RfZm91bmQgU0VUCitNRVNTQUdFX1RFWFQgPSAi UmFpc2luZyBhIG5vdCBmb3VuZCIsCitNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQgJCQKK2NhbGwg dGVzdF9zaWduYWwoKSAkJAorQ2F1Z2h0IGJ5IG51bWJlcgorQ2F1Z2h0IGJ5IG51bWJlcgorZHJv cCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwo KQorYmVnaW4KK0RFQ0xBUkUgbm90X2ZvdW5kIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAyQUJD IjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgTk9UIEZPVU5ECitiZWdpbgorc2VsZWN0 ICJDYXVnaHQgYnkgTk9UIEZPVU5EIjsKK2VuZDsKK1NJR05BTCBub3RfZm91bmQgU0VUCitNRVNT QUdFX1RFWFQgPSAiUmFpc2luZyBhIG5vdCBmb3VuZCIsCitNWVNRTF9FUlJOTyA9IDEwMTI7Citl bmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorQ2F1Z2h0IGJ5IE5PVCBGT1VORAorQ2F1Z2h0 IGJ5IE5PVCBGT1VORAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBT UUxTVEFURSAiNTU1NTUiOworREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBTUUxTVEFURSAi NTU1NTUiCisgIGJlZ2luCitzZWxlY3QgIkNhdWdodCBieSBTUUxTVEFURSI7CitlbmQ7CitTSUdO QUwgZXJyb3IgU0VUCitNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhbiBlcnJvciIsCitNWVNRTF9F UlJOTyA9IDEwMTI7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorQ2F1Z2h0IGJ5IFNR TFNUQVRFCitDYXVnaHQgYnkgU1FMU1RBVEUKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQk CitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIGVycm9yIENP TkRJVElPTiBGT1IgU1FMU1RBVEUgIjU1NTU1IjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBm b3IgMTAxMgorYmVnaW4KK3NlbGVjdCAiQ2F1Z2h0IGJ5IG51bWJlciI7CitlbmQ7CitTSUdOQUwg ZXJyb3IgU0VUCitNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhbiBlcnJvciIsCitNWVNRTF9FUlJO TyA9IDEwMTI7CitlbmQgJCQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorQ2F1Z2h0IGJ5IG51bWJl cgorQ2F1Z2h0IGJ5IG51bWJlcgorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgZXJyb3IgQ09ORElUSU9O IEZPUiBTUUxTVEFURSAiNTU1NTUiOworREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBTUUxF WENFUFRJT04KK2JlZ2luCitzZWxlY3QgIkNhdWdodCBieSBTUUxFWENFUFRJT04iOworZW5kOwor U0lHTkFMIGVycm9yIFNFVAorTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYW4gZXJyb3IiLAorTVlT UUxfRVJSTk8gPSAxMDEyOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK0NhdWdodCBi eSBTUUxFWENFUFRJT04KK0NhdWdodCBieSBTUUxFWENFUFRJT04KK2Ryb3AgcHJvY2VkdXJlIHRl c3Rfc2lnbmFsICQkCitjcmVhdGUgZnVuY3Rpb24gdGVzdF9zaWduYWxfZnVuYygpIHJldHVybnMg aW50ZWdlcgorYmVnaW4KK0RFQ0xBUkUgd2FybiBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMVhY WCI7CitTSUdOQUwgd2FybiBTRVQKK01FU1NBR0VfVEVYVCA9ICJUaGlzIGZ1bmN0aW9uIFNJR05B TCBhIHdhcm5pbmciLAorTVlTUUxfRVJSTk8gPSAxMDEyOworcmV0dXJuIDU7CitlbmQgJCQKK3Nl bGVjdCB0ZXN0X3NpZ25hbF9mdW5jKCkgJCQKK3Rlc3Rfc2lnbmFsX2Z1bmMoKQorNQorV2Fybmlu Z3M6CitXYXJuaW5nCTEwMTIJVGhpcyBmdW5jdGlvbiBTSUdOQUwgYSB3YXJuaW5nCitkcm9wIGZ1 bmN0aW9uIHRlc3Rfc2lnbmFsX2Z1bmMgJCQKK2NyZWF0ZSBmdW5jdGlvbiB0ZXN0X3NpZ25hbF9m dW5jKCkgcmV0dXJucyBpbnRlZ2VyCitiZWdpbgorREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9O IEZPUiBTUUxTVEFURSAiMDJYWFgiOworU0lHTkFMIG5vdF9mb3VuZCBTRVQKK01FU1NBR0VfVEVY VCA9ICJUaGlzIGZ1bmN0aW9uIFNJR05BTCBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSAxMDEy OworcmV0dXJuIDU7CitlbmQgJCQKK3NlbGVjdCB0ZXN0X3NpZ25hbF9mdW5jKCkgJCQKK0VSUk9S IDAyWFhYOiBUaGlzIGZ1bmN0aW9uIFNJR05BTCBub3QgZm91bmQKK2Ryb3AgZnVuY3Rpb24gdGVz dF9zaWduYWxfZnVuYyAkJAorY3JlYXRlIGZ1bmN0aW9uIHRlc3Rfc2lnbmFsX2Z1bmMoKSByZXR1 cm5zIGludGVnZXIKK2JlZ2luCitERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUg IjUwMDAwIjsKK1NJR05BTCBlcnJvciBTRVQKK01FU1NBR0VfVEVYVCA9ICJUaGlzIGZ1bmN0aW9u IFNJR05BTCBhbiBlcnJvciIsCitNWVNRTF9FUlJOTyA9IDEwMTI7CityZXR1cm4gNTsKK2VuZCAk JAorc2VsZWN0IHRlc3Rfc2lnbmFsX2Z1bmMoKSAkJAorRVJST1IgNTAwMDA6IFRoaXMgZnVuY3Rp b24gU0lHTkFMIGFuIGVycm9yCitkcm9wIGZ1bmN0aW9uIHRlc3Rfc2lnbmFsX2Z1bmMgJCQKK2Ry b3AgdGFibGUgaWYgZXhpc3RzIHQxICQkCitjcmVhdGUgdGFibGUgdDEgKGEgaW50ZWdlcikgJCQK K2NyZWF0ZSB0cmlnZ2VyIHQxX2FpIGFmdGVyIGluc2VydCBvbiB0MSBmb3IgZWFjaCByb3cKK2Jl Z2luCitERUNMQVJFIG1zZyBWQVJDSEFSKDEyOCk7CitERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZP UiBTUUxTVEFURSAiMDFYWFgiOworc2V0IG1zZz0gY29uY2F0KCJUaGlzIHRyaWdnZXIgU0lHTkFM IGEgd2FybmluZywgYT0iLCBORVcuYSk7CitTSUdOQUwgd2FybiBTRVQKK01FU1NBR0VfVEVYVCA9 IG1zZywKK01ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAoraW5zZXJ0IGludG8gdDEgdmFsdWVz ICgxKSwgKDIpICQkCitXYXJuaW5nczoKK1dhcm5pbmcJMTAxMglUaGlzIHRyaWdnZXIgU0lHTkFM IGEgd2FybmluZywgYT0yCitkcm9wIHRyaWdnZXIgdDFfYWkgJCQKK2NyZWF0ZSB0cmlnZ2VyIHQx X2FpIGFmdGVyIGluc2VydCBvbiB0MSBmb3IgZWFjaCByb3cKK2JlZ2luCitERUNMQVJFIG1zZyBW QVJDSEFSKDEyOCk7CitERUNMQVJFIG5vdF9mb3VuZCBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIw MlhYWCI7CitzZXQgbXNnPSBjb25jYXQoIlRoaXMgdHJpZ2dlciBTSUdOQUwgYSBub3QgZm91bmQs IGE9IiwgTkVXLmEpOworU0lHTkFMIG5vdF9mb3VuZCBTRVQKK01FU1NBR0VfVEVYVCA9IG1zZywK K01ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAoraW5zZXJ0IGludG8gdDEgdmFsdWVzICgzKSwg KDQpICQkCitFUlJPUiAwMlhYWDogVGhpcyB0cmlnZ2VyIFNJR05BTCBhIG5vdCBmb3VuZCwgYT0z Citkcm9wIHRyaWdnZXIgdDFfYWkgJCQKK2NyZWF0ZSB0cmlnZ2VyIHQxX2FpIGFmdGVyIGluc2Vy dCBvbiB0MSBmb3IgZWFjaCByb3cKK2JlZ2luCitERUNMQVJFIG1zZyBWQVJDSEFSKDEyOCk7CitE RUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAzWFhYIjsKK3NldCBtc2c9IGNv bmNhdCgiVGhpcyB0cmlnZ2VyIFNJR05BTCBhbiBlcnJvciwgYT0iLCBORVcuYSk7CitTSUdOQUwg ZXJyb3IgU0VUCitNRVNTQUdFX1RFWFQgPSBtc2csCitNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQg JCQKK2luc2VydCBpbnRvIHQxIHZhbHVlcyAoNSksICg2KSAkJAorRVJST1IgMDNYWFg6IFRoaXMg dHJpZ2dlciBTSUdOQUwgYW4gZXJyb3IsIGE9NQorZHJvcCB0YWJsZSB0MSAkJAorY3JlYXRlIHRh YmxlIHQxIChlcnJubyBpbnRlZ2VyLCBtc2cgdmFyY2hhcigxMjgpKSAkJAorY3JlYXRlIHRyaWdn ZXIgdDFfYWkgYWZ0ZXIgaW5zZXJ0IG9uIHQxIGZvciBlYWNoIHJvdworYmVnaW4KK0RFQ0xBUkUg d2FybiBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMVhYWCI7CitTSUdOQUwgd2FybiBTRVQKK01F U1NBR0VfVEVYVCA9IE5FVy5tc2csCitNWVNRTF9FUlJOTyA9IE5FVy5lcnJubzsKK2VuZCAkJAor aW5zZXJ0IGludG8gdDEgc2V0IGVycm5vPTEwMTIsIG1zZz0nV2FybmluZyBtZXNzYWdlIDEgaW4g dHJpZ2dlcicgJCQKK1dhcm5pbmdzOgorV2FybmluZwkxMDEyCVdhcm5pbmcgbWVzc2FnZSAxIGlu IHRyaWdnZXIKK2luc2VydCBpbnRvIHQxIHNldCBlcnJubz0xMDEzLCBtc2c9J1dhcm5pbmcgbWVz c2FnZSAyIGluIHRyaWdnZXInICQkCitXYXJuaW5nczoKK1dhcm5pbmcJMTAxMwlXYXJuaW5nIG1l c3NhZ2UgMiBpbiB0cmlnZ2VyCitkcm9wIHRhYmxlIHQxICQkCitkcm9wIHRhYmxlIGlmIGV4aXN0 cyB0MSAkJAorZHJvcCBwcm9jZWR1cmUgaWYgZXhpc3RzIHAxICQkCitkcm9wIGZ1bmN0aW9uIGlm IGV4aXN0cyBmMSAkJAorY3JlYXRlIHRhYmxlIHQxIChzMSBpbnQpICQkCitpbnNlcnQgaW50byB0 MSB2YWx1ZXMgKDEpICQkCitjcmVhdGUgcHJvY2VkdXJlIHAxKCkKK2JlZ2luCitkZWNsYXJlIGEg aW50OworZGVjbGFyZSBjIGN1cnNvciBmb3Igc2VsZWN0IGYxKCkgZnJvbSB0MTsKK2RlY2xhcmUg Y29udGludWUgaGFuZGxlciBmb3Igc3Fsc3RhdGUgJzAzMDAwJworICAgIHNlbGVjdCAiY2F1Z2h0 IDAzMDAwIjsKK2RlY2xhcmUgY29udGludWUgaGFuZGxlciBmb3IgMTMyNgorc2VsZWN0ICJjYXVn aHQgY3Vyc29yIGlzIG5vdCBvcGVuIjsKK3NlbGVjdCAiQmVmb3JlIG9wZW4iOworb3BlbiBjOwor c2VsZWN0ICJCZWZvcmUgZmV0Y2giOworZmV0Y2ggYyBpbnRvIGE7CitzZWxlY3QgIkJlZm9yZSBj bG9zZSI7CitjbG9zZSBjOworZW5kICQkCitjcmVhdGUgZnVuY3Rpb24gZjEoKSByZXR1cm5zIGlu dAorYmVnaW4KK3NpZ25hbCBzcWxzdGF0ZSAnMDMwMDAnOworcmV0dXJuIDU7CitlbmQgJCQKK2Ry b3AgdGFibGUgdDEgJCQKK2Ryb3AgcHJvY2VkdXJlIHAxICQkCitkcm9wIGZ1bmN0aW9uIGYxICQk CitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgd2FybiBD T05ESVRJT04gRk9SIFNRTFNUQVRFICIwMTIzNCI7CitERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIg Zm9yIDEwMTIKK2JlZ2luCitzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CitSRVNJR05BTDsKK3Nl bGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworU0lHTkFMIHdhcm4gU0VUCitNRVNTQUdFX1RF WFQgPSAiUmFpc2luZyBhIHdhcm5pbmciLAorTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCitj YWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUgUkVTSUdOQUwK K2FmdGVyIFJFU0lHTkFMCithZnRlciBSRVNJR05BTAorV2FybmluZ3M6CitXYXJuaW5nCTEwMTIJ UmFpc2luZyBhIHdhcm5pbmcKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorREVDTEFSRSBub3RfZm91bmQgQ09O RElUSU9OIEZPUiBTUUxTVEFURSAiMDIyMjIiOworREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZv ciAxMDEyCitiZWdpbgorc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworUkVTSUdOQUw7CitzZWxl Y3QgImFmdGVyIFJFU0lHTkFMIjsKK2VuZDsKK1NJR05BTCBub3RfZm91bmQgU0VUCitNRVNTQUdF X1RFWFQgPSAiUmFpc2luZyBhIG5vdCBmb3VuZCIsCitNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQg JCQKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitiZWZvcmUgUkVTSUdOQUwKK2JlZm9yZSBSRVNJ R05BTAorRVJST1IgMDIyMjI6IFJhaXNpbmcgYSBub3QgZm91bmQKK2Ryb3AgcHJvY2VkdXJlIHRl c3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgor REVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICI1NTU1NSI7CitERUNMQVJFIENP TlRJTlVFIEhBTkRMRVIgZm9yIDEwMTIKK2JlZ2luCitzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7 CitSRVNJR05BTDsKK3NlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworU0lHTkFMIGVycm9y IFNFVAorTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYW4gZXJyb3IiLAorTVlTUUxfRVJSTk8gPSAx MDEyOworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCiti ZWZvcmUgUkVTSUdOQUwKK0VSUk9SIDU1NTU1OiBSYWlzaW5nIGFuIGVycm9yCitkcm9wIHByb2Nl ZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQor YmVnaW4KK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3Igc3Fsd2FybmluZworYmVnaW4KK3Nl bGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMOworc2VsZWN0ICJhZnRlciBSRVNJR05B TCI7CitlbmQ7CitpbnNlcnQgaW50byB0X3dhcm4gc2V0IGE9IDk5OTk5OTk5OTk5OTk5OTk7Citl bmQgJCQKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitiZWZvcmUgUkVTSUdOQUwKK2JlZm9yZSBS RVNJR05BTAorYWZ0ZXIgUkVTSUdOQUwKK2FmdGVyIFJFU0lHTkFMCitXYXJuaW5nczoKK1dhcm5p bmcJMTI2NAlPdXQgb2YgcmFuZ2UgdmFsdWUgZm9yIGNvbHVtbiAnYScgYXQgcm93IDEKK2Ryb3Ag cHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25h bCgpCitiZWdpbgorREVDTEFSRSB4IGludGVnZXI7CitERUNMQVJFIGMgY3Vyc29yIGZvciBzZWxl Y3QgKiBmcm9tIHRfY3Vyc29yOworREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBub3QgZm91 bmQKK2JlZ2luCitzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CitSRVNJR05BTDsKK3NlbGVjdCAi YWZ0ZXIgUkVTSUdOQUwiOworZW5kOworb3BlbiBjOworZmV0Y2ggYyBpbnRvIHg7CitjbG9zZSBj OworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZv cmUgUkVTSUdOQUwKK0VSUk9SIDAyMDAwOiBObyBkYXRhIC0gemVybyByb3dzIGZldGNoZWQsIHNl bGVjdGVkLCBvciBwcm9jZXNzZWQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorREVDTEFSRSBDT05USU5VRSBI QU5ETEVSIGZvciBzcWxleGNlcHRpb24KK2JlZ2luCitzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7 CitSRVNJR05BTDsKK3NlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworZHJvcCB0YWJsZSBu b19zdWNoX3RhYmxlOworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJF U0lHTkFMCitiZWZvcmUgUkVTSUdOQUwKK0VSUk9SIDQyUzAyOiBVbmtub3duIHRhYmxlICdub19z dWNoX3RhYmxlJworZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRlIHByb2Nl ZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBT UUxTVEFURSAiMDEyMzQiOworREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCitiZWdp bgorc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworUkVTSUdOQUwgU0VUCitNRVNTQUdFX1RFWFQg PSAiUkVTSUdOQUwgb2YgYSB3YXJuaW5nIiwKK01ZU1FMX0VSUk5PID0gNTU1NSA7CitzZWxlY3Qg ImFmdGVyIFJFU0lHTkFMIjsKK2VuZDsKK1NJR05BTCB3YXJuIFNFVAorTUVTU0FHRV9URVhUID0g IlJhaXNpbmcgYSB3YXJuaW5nIiwKK01ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorY2FsbCB0 ZXN0X3Jlc2lnbmFsKCkgJCQKK2JlZm9yZSBSRVNJR05BTAorYmVmb3JlIFJFU0lHTkFMCithZnRl ciBSRVNJR05BTAorYWZ0ZXIgUkVTSUdOQUwKK1dhcm5pbmdzOgorV2FybmluZwk1NTU1CVJFU0lH TkFMIG9mIGEgd2FybmluZworZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRl IHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIG5vdF9mb3VuZCBDT05E SVRJT04gRk9SIFNRTFNUQVRFICIwMjExMSI7CitERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9y IDEwMTIKK2JlZ2luCitzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CitSRVNJR05BTCBTRVQKK01F U1NBR0VfVEVYVCA9ICJSRVNJR05BTCBvZiBhIG5vdCBmb3VuZCIsCitNWVNRTF9FUlJOTyA9IDU1 NTUgOworc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CitlbmQ7CitTSUdOQUwgbm90X2ZvdW5kIFNF VAorTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYSBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSAx MDEyOworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCiti ZWZvcmUgUkVTSUdOQUwKK0VSUk9SIDAyMTExOiBSRVNJR05BTCBvZiBhIG5vdCBmb3VuZAorZHJv cCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2ln bmFsKCkKK2JlZ2luCitERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjMzMzMz IjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgMTAxMgorYmVnaW4KK3NlbGVjdCAiYmVm b3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNFVAorTUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIG9m IGFuIGVycm9yIiwKK01ZU1FMX0VSUk5PID0gNTU1NSA7CitzZWxlY3QgImFmdGVyIFJFU0lHTkFM IjsKK2VuZDsKK1NJR05BTCBlcnJvciBTRVQKK01FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGFuIGVy cm9yIiwKK01ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorY2FsbCB0ZXN0X3Jlc2lnbmFsKCkg JCQKK2JlZm9yZSBSRVNJR05BTAorYmVmb3JlIFJFU0lHTkFMCitFUlJPUiAzMzMzMzogUkVTSUdO QUwgb2YgYW4gZXJyb3IKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBw cm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorREVDTEFSRSBDT05USU5VRSBIQU5ETEVS IGZvciBzcWx3YXJuaW5nCitiZWdpbgorc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworUkVTSUdO QUwgU0VUCitNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgb2YgYSB3YXJuaW5nIiwKK01ZU1FMX0VS Uk5PID0gNTU1NSA7CitzZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKK2VuZDsKK2luc2VydCBpbnRv IHRfd2FybiBzZXQgYT0gOTk5OTk5OTk5OTk5OTk5OTsKK2VuZCAkJAorY2FsbCB0ZXN0X3Jlc2ln bmFsKCkgJCQKK2JlZm9yZSBSRVNJR05BTAorYmVmb3JlIFJFU0lHTkFMCithZnRlciBSRVNJR05B TAorYWZ0ZXIgUkVTSUdOQUwKK1dhcm5pbmdzOgorV2FybmluZwk1NTU1CVJFU0lHTkFMIG9mIGEg d2FybmluZworZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIHggaW50ZWdlcjsKK0RFQ0xBUkUgYyBj dXJzb3IgZm9yIHNlbGVjdCAqIGZyb20gdF9jdXJzb3I7CitERUNMQVJFIENPTlRJTlVFIEhBTkRM RVIgZm9yIG5vdCBmb3VuZAorYmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKK1JFU0lH TkFMIFNFVAorTUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIG9mIG5vdCBmb3VuZCIsCitNWVNRTF9F UlJOTyA9IDU1NTUgOworc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CitlbmQ7CitvcGVuIGM7Citm ZXRjaCBjIGludG8geDsKK2Nsb3NlIGM7CitlbmQgJCQKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQk CitiZWZvcmUgUkVTSUdOQUwKK2JlZm9yZSBSRVNJR05BTAorRVJST1IgMDIwMDA6IFJFU0lHTkFM IG9mIG5vdCBmb3VuZAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIg Zm9yIHNxbGV4Y2VwdGlvbgorYmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKK1JFU0lH TkFMIFNFVAorTUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIG9mIGFuIGVycm9yIiwKK01ZU1FMX0VS Uk5PID0gNTU1NSA7CitzZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKK2VuZDsKK2Ryb3AgdGFibGUg bm9fc3VjaF90YWJsZTsKK2VuZCAkJAorY2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2JlZm9yZSBS RVNJR05BTAorYmVmb3JlIFJFU0lHTkFMCitFUlJPUiA0MlMwMjogUkVTSUdOQUwgb2YgYW4gZXJy b3IKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVz dF9yZXNpZ25hbCgpCitiZWdpbgorREVDTEFSRSB3YXJuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUg IjAxMTExIjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgMTAxMgorYmVnaW4KK3NlbGVj dCAiYmVmb3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNRTFNUQVRFICIwMTIyMiIgU0VUCitNRVNT QUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gd2FybmluZyIsCitNWVNRTF9FUlJOTyA9IDU1NTUgOwor c2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CitlbmQ7CitTSUdOQUwgd2FybiBTRVQKK01FU1NBR0Vf VEVYVCA9ICJSYWlzaW5nIGEgd2FybmluZyIsCitNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQgJCQK K2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitiZWZvcmUgUkVTSUdOQUwKK2JlZm9yZSBSRVNJR05B TAorYWZ0ZXIgUkVTSUdOQUwKK2FmdGVyIFJFU0lHTkFMCitXYXJuaW5nczoKK1dhcm5pbmcJMTAx MglSYWlzaW5nIGEgd2FybmluZworV2FybmluZwk1NTU1CVJFU0lHTkFMIHRvIHdhcm5pbmcKK2Ry b3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNp Z25hbCgpCitiZWdpbgorREVDTEFSRSB3YXJuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMTEx IjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgMTAxMgorYmVnaW4KK3NlbGVjdCAiYmVm b3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNRTFNUQVRFICIwMjIyMiIgU0VUCitNRVNTQUdFX1RF WFQgPSAiUkVTSUdOQUwgdG8gbm90IGZvdW5kIiwKK01ZU1FMX0VSUk5PID0gNTU1NSA7CitzZWxl Y3QgImFmdGVyIFJFU0lHTkFMIjsKK2VuZDsKK1NJR05BTCB3YXJuIFNFVAorTUVTU0FHRV9URVhU ID0gIlJhaXNpbmcgYSB3YXJuaW5nIiwKK01ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorY2Fs bCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2JlZm9yZSBSRVNJR05BTAorYmVmb3JlIFJFU0lHTkFMCitF UlJPUiAwMjIyMjogUkVTSUdOQUwgdG8gbm90IGZvdW5kCitzaG93IHdhcm5pbmdzICQkCitMZXZl bAlDb2RlCU1lc3NhZ2UKK1dhcm5pbmcJMTAxMglSYWlzaW5nIGEgd2FybmluZworRXJyb3IJNTU1 NQlSRVNJR05BTCB0byBub3QgZm91bmQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQK K2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorREVDTEFSRSB3YXJuIENP TkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMTExIjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBm b3IgMTAxMgorYmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNRTFNU QVRFICIzMzMzMyIgU0VUCitNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gZXJyb3IiLAorTVlT UUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworU0lHTkFM IHdhcm4gU0VUCitNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhIHdhcm5pbmciLAorTVlTUUxfRVJS Tk8gPSAxMDEyOworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lH TkFMCitiZWZvcmUgUkVTSUdOQUwKK0VSUk9SIDMzMzMzOiBSRVNJR05BTCB0byBlcnJvcgorc2hv dyB3YXJuaW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitXYXJuaW5nCTEwMTIJUmFpc2luZyBh IHdhcm5pbmcKK0Vycm9yCTU1NTUJUkVTSUdOQUwgdG8gZXJyb3IKK2Ryb3AgcHJvY2VkdXJlIHRl c3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgor REVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDJBQkMiOworREVDTEFS RSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCitiZWdpbgorc2VsZWN0ICJiZWZvcmUgUkVTSUdO QUwiOworUkVTSUdOQUwgU1FMU1RBVEUgIjAxMjIyIiBTRVQKK01FU1NBR0VfVEVYVCA9ICJSRVNJ R05BTCB0byB3YXJuaW5nIiwKK01ZU1FMX0VSUk5PID0gNTU1NSA7CitzZWxlY3QgImFmdGVyIFJF U0lHTkFMIjsKK2VuZDsKK1NJR05BTCBub3RfZm91bmQgU0VUCitNRVNTQUdFX1RFWFQgPSAiUmFp c2luZyBhIG5vdCBmb3VuZCIsCitNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQgJCQKK2NhbGwgdGVz dF9yZXNpZ25hbCgpICQkCitiZWZvcmUgUkVTSUdOQUwKK2JlZm9yZSBSRVNJR05BTAorYWZ0ZXIg UkVTSUdOQUwKK2FmdGVyIFJFU0lHTkFMCitXYXJuaW5nczoKK0Vycm9yCTEwMTIJUmFpc2luZyBh IG5vdCBmb3VuZAorV2FybmluZwk1NTU1CVJFU0lHTkFMIHRvIHdhcm5pbmcKK2Ryb3AgcHJvY2Vk dXJlIHRlc3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCiti ZWdpbgorREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDJBQkMiOwor REVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCitiZWdpbgorc2VsZWN0ICJiZWZvcmUg UkVTSUdOQUwiOworUkVTSUdOQUwgU1FMU1RBVEUgIjAyMjIyIiBTRVQKK01FU1NBR0VfVEVYVCA9 ICJSRVNJR05BTCB0byBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAi YWZ0ZXIgUkVTSUdOQUwiOworZW5kOworU0lHTkFMIG5vdF9mb3VuZCBTRVQKK01FU1NBR0VfVEVY VCA9ICJSYWlzaW5nIGEgbm90IGZvdW5kIiwKK01ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAor Y2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2JlZm9yZSBSRVNJR05BTAorYmVmb3JlIFJFU0lHTkFM CitFUlJPUiAwMjIyMjogUkVTSUdOQUwgdG8gbm90IGZvdW5kCitzaG93IHdhcm5pbmdzICQkCitM ZXZlbAlDb2RlCU1lc3NhZ2UKK0Vycm9yCTEwMTIJUmFpc2luZyBhIG5vdCBmb3VuZAorRXJyb3IJ NTU1NQlSRVNJR05BTCB0byBub3QgZm91bmQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwg JCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorREVDTEFSRSBub3Rf Zm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDJBQkMiOworREVDTEFSRSBDT05USU5VRSBI QU5ETEVSIGZvciAxMDEyCitiZWdpbgorc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworUkVTSUdO QUwgU1FMU1RBVEUgIjMzMzMzIiBTRVQKK01FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byBlcnJv ciIsCitNWVNRTF9FUlJOTyA9IDU1NTUgOworc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CitlbmQ7 CitTSUdOQUwgbm90X2ZvdW5kIFNFVAorTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYSBub3QgZm91 bmQiLAorTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAk JAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUgUkVTSUdOQUwKK0VSUk9SIDMzMzMzOiBSRVNJR05B TCB0byBlcnJvcgorc2hvdyB3YXJuaW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitFcnJvcgkx MDEyCVJhaXNpbmcgYSBub3QgZm91bmQKK0Vycm9yCTU1NTUJUkVTSUdOQUwgdG8gZXJyb3IKK2Ry b3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNp Z25hbCgpCitiZWdpbgorREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICJBQUFB QSI7CitERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIDEwMTIKK2JlZ2luCitzZWxlY3QgImJl Zm9yZSBSRVNJR05BTCI7CitSRVNJR05BTCBTUUxTVEFURSAiMDEyMjIiIFNFVAorTUVTU0FHRV9U RVhUID0gIlJFU0lHTkFMIHRvIHdhcm5pbmciLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVj dCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworU0lHTkFMIGVycm9yIFNFVAorTUVTU0FHRV9URVhU ID0gIlJhaXNpbmcgYW4gZXJyb3IiLAorTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCitjYWxs IHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUgUkVTSUdOQUwKK2Fm dGVyIFJFU0lHTkFMCithZnRlciBSRVNJR05BTAorV2FybmluZ3M6CitFcnJvcgkxMDEyCVJhaXNp bmcgYW4gZXJyb3IKK1dhcm5pbmcJNTU1NQlSRVNJR05BTCB0byB3YXJuaW5nCitkcm9wIHByb2Nl ZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQor YmVnaW4KK0RFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiQUFBQUEiOworREVD TEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCitiZWdpbgorc2VsZWN0ICJiZWZvcmUgUkVT SUdOQUwiOworUkVTSUdOQUwgU1FMU1RBVEUgIjAyMjIyIiBTRVQKK01FU1NBR0VfVEVYVCA9ICJS RVNJR05BTCB0byBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAiYWZ0 ZXIgUkVTSUdOQUwiOworZW5kOworU0lHTkFMIGVycm9yIFNFVAorTUVTU0FHRV9URVhUID0gIlJh aXNpbmcgYW4gZXJyb3IiLAorTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCitjYWxsIHRlc3Rf cmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUgUkVTSUdOQUwKK0VSUk9SIDAy MjIyOiBSRVNJR05BTCB0byBub3QgZm91bmQKK3Nob3cgd2FybmluZ3MgJCQKK0xldmVsCUNvZGUJ TWVzc2FnZQorRXJyb3IJMTAxMglSYWlzaW5nIGFuIGVycm9yCitFcnJvcgk1NTU1CVJFU0lHTkFM IHRvIG5vdCBmb3VuZAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIGVycm9yIENPTkRJVElPTiBG T1IgU1FMU1RBVEUgIkFBQUFBIjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgMTAxMgor YmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNRTFNUQVRFICIzMzMz MyIgU0VUCitNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gZXJyb3IiLAorTVlTUUxfRVJSTk8g PSA1NTU1IDsKK3NlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworU0lHTkFMIGVycm9yIFNF VAorTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYW4gZXJyb3IiLAorTVlTUUxfRVJSTk8gPSAxMDEy OworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZv cmUgUkVTSUdOQUwKK0VSUk9SIDMzMzMzOiBSRVNJR05BTCB0byBlcnJvcgorc2hvdyB3YXJuaW5n cyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitFcnJvcgkxMDEyCVJhaXNpbmcgYW4gZXJyb3IKK0Vy cm9yCTU1NTUJUkVTSUdOQUwgdG8gZXJyb3IKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwg JCQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorREVDTEFSRSBDT05U SU5VRSBIQU5ETEVSIGZvciBzcWx3YXJuaW5nCitiZWdpbgorc2VsZWN0ICJiZWZvcmUgUkVTSUdO QUwiOworUkVTSUdOQUwgU1FMU1RBVEUgIjAxMTExIiBTRVQKK01FU1NBR0VfVEVYVCA9ICJSRVNJ R05BTCB0byBhIHdhcm5pbmciLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAiYWZ0ZXIg UkVTSUdOQUwiOworZW5kOworaW5zZXJ0IGludG8gdF93YXJuIHNldCBhPSA5OTk5OTk5OTk5OTk5 OTk5OworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCiti ZWZvcmUgUkVTSUdOQUwKK2FmdGVyIFJFU0lHTkFMCithZnRlciBSRVNJR05BTAorV2FybmluZ3M6 CitXYXJuaW5nCTEyNjQJT3V0IG9mIHJhbmdlIHZhbHVlIGZvciBjb2x1bW4gJ2EnIGF0IHJvdyAx CitXYXJuaW5nCTU1NTUJUkVTSUdOQUwgdG8gYSB3YXJuaW5nCitkcm9wIHByb2NlZHVyZSB0ZXN0 X3Jlc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KK0RF Q0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3Igc3Fsd2FybmluZworYmVnaW4KK3NlbGVjdCAiYmVm b3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNRTFNUQVRFICIwMjQ0NCIgU0VUCitNRVNTQUdFX1RF WFQgPSAiUkVTSUdOQUwgdG8gYSBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3Nl bGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworaW5zZXJ0IGludG8gdF93YXJuIHNldCBhPSA5 OTk5OTk5OTk5OTk5OTk5OworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3Jl IFJFU0lHTkFMCitiZWZvcmUgUkVTSUdOQUwKK0VSUk9SIDAyNDQ0OiBSRVNJR05BTCB0byBhIG5v dCBmb3VuZAorc2hvdyB3YXJuaW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitXYXJuaW5nCTEy NjQJT3V0IG9mIHJhbmdlIHZhbHVlIGZvciBjb2x1bW4gJ2EnIGF0IHJvdyAxCitFcnJvcgk1NTU1 CVJFU0lHTkFMIHRvIGEgbm90IGZvdW5kCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQk CitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgQ09OVElO VUUgSEFORExFUiBmb3Igc3Fsd2FybmluZworYmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lHTkFM IjsKK1JFU0lHTkFMIFNRTFNUQVRFICI0NDQ0NCIgU0VUCitNRVNTQUdFX1RFWFQgPSAiUkVTSUdO QUwgdG8gYW4gZXJyb3IiLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAiYWZ0ZXIgUkVT SUdOQUwiOworZW5kOworaW5zZXJ0IGludG8gdF93YXJuIHNldCBhPSA5OTk5OTk5OTk5OTk5OTk5 OworZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZv cmUgUkVTSUdOQUwKK0VSUk9SIDQ0NDQ0OiBSRVNJR05BTCB0byBhbiBlcnJvcgorc2hvdyB3YXJu aW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitXYXJuaW5nCTEyNjQJT3V0IG9mIHJhbmdlIHZh bHVlIGZvciBjb2x1bW4gJ2EnIGF0IHJvdyAxCitFcnJvcgk1NTU1CVJFU0lHTkFMIHRvIGFuIGVy cm9yCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRl c3RfcmVzaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgeCBpbnRlZ2VyOworREVDTEFSRSBjIGN1cnNv ciBmb3Igc2VsZWN0ICogZnJvbSB0X2N1cnNvcjsKK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBm b3Igbm90IGZvdW5kCitiZWdpbgorc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworUkVTSUdOQUwg U1FMU1RBVEUgIjAxMTExIiBTRVQKK01FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byBhIHdhcm5p bmciLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5k Oworb3BlbiBjOworZmV0Y2ggYyBpbnRvIHg7CitjbG9zZSBjOworZW5kICQkCitjYWxsIHRlc3Rf cmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUgUkVTSUdOQUwKK2FmdGVyIFJF U0lHTkFMCithZnRlciBSRVNJR05BTAorV2FybmluZ3M6CitFcnJvcgkxMzI5CU5vIGRhdGEgLSB6 ZXJvIHJvd3MgZmV0Y2hlZCwgc2VsZWN0ZWQsIG9yIHByb2Nlc3NlZAorV2FybmluZwk1NTU1CVJF U0lHTkFMIHRvIGEgd2FybmluZworZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3Jl YXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIHggaW50ZWdlcjsK K0RFQ0xBUkUgYyBjdXJzb3IgZm9yIHNlbGVjdCAqIGZyb20gdF9jdXJzb3I7CitERUNMQVJFIENP TlRJTlVFIEhBTkRMRVIgZm9yIG5vdCBmb3VuZAorYmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lH TkFMIjsKK1JFU0lHTkFMIFNRTFNUQVRFICIwMjQ0NCIgU0VUCitNRVNTQUdFX1RFWFQgPSAiUkVT SUdOQUwgdG8gYSBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAiYWZ0 ZXIgUkVTSUdOQUwiOworZW5kOworb3BlbiBjOworZmV0Y2ggYyBpbnRvIHg7CitjbG9zZSBjOwor ZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUg UkVTSUdOQUwKK0VSUk9SIDAyNDQ0OiBSRVNJR05BTCB0byBhIG5vdCBmb3VuZAorc2hvdyB3YXJu aW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitFcnJvcgkxMzI5CU5vIGRhdGEgLSB6ZXJvIHJv d3MgZmV0Y2hlZCwgc2VsZWN0ZWQsIG9yIHByb2Nlc3NlZAorRXJyb3IJNTU1NQlSRVNJR05BTCB0 byBhIG5vdCBmb3VuZAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIHggaW50ZWdlcjsKK0RFQ0xB UkUgYyBjdXJzb3IgZm9yIHNlbGVjdCAqIGZyb20gdF9jdXJzb3I7CitERUNMQVJFIENPTlRJTlVF IEhBTkRMRVIgZm9yIG5vdCBmb3VuZAorYmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsK K1JFU0lHTkFMIFNRTFNUQVRFICI0NDQ0NCIgU0VUCitNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwg dG8gYW4gZXJyb3IiLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3NlbGVjdCAiYWZ0ZXIgUkVTSUdO QUwiOworZW5kOworb3BlbiBjOworZmV0Y2ggYyBpbnRvIHg7CitjbG9zZSBjOworZW5kICQkCitj YWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUgUkVTSUdOQUwK K0VSUk9SIDQ0NDQ0OiBSRVNJR05BTCB0byBhbiBlcnJvcgorc2hvdyB3YXJuaW5ncyAkJAorTGV2 ZWwJQ29kZQlNZXNzYWdlCitFcnJvcgkxMzI5CU5vIGRhdGEgLSB6ZXJvIHJvd3MgZmV0Y2hlZCwg c2VsZWN0ZWQsIG9yIHByb2Nlc3NlZAorRXJyb3IJNTU1NQlSRVNJR05BTCB0byBhbiBlcnJvcgor ZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jl c2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIHNxbGV4Y2VwdGlv bgorYmVnaW4KK3NlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNRTFNUQVRFICIw MTExMSIgU0VUCitNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gYSB3YXJuaW5nIiwKK01ZU1FM X0VSUk5PID0gNTU1NSA7CitzZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKK2VuZDsKK2Ryb3AgdGFi bGUgbm9fc3VjaF90YWJsZTsKK2VuZCAkJAorY2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2JlZm9y ZSBSRVNJR05BTAorYmVmb3JlIFJFU0lHTkFMCithZnRlciBSRVNJR05BTAorYWZ0ZXIgUkVTSUdO QUwKK1dhcm5pbmdzOgorRXJyb3IJMTA1MQlVbmtub3duIHRhYmxlICdub19zdWNoX3RhYmxlJwor V2FybmluZwk1NTU1CVJFU0lHTkFMIHRvIGEgd2FybmluZworZHJvcCBwcm9jZWR1cmUgdGVzdF9y ZXNpZ25hbCAkJAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCitERUNM QVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIHNxbGV4Y2VwdGlvbgorYmVnaW4KK3NlbGVjdCAiYmVm b3JlIFJFU0lHTkFMIjsKK1JFU0lHTkFMIFNRTFNUQVRFICIwMjQ0NCIgU0VUCitNRVNTQUdFX1RF WFQgPSAiUkVTSUdOQUwgdG8gYSBub3QgZm91bmQiLAorTVlTUUxfRVJSTk8gPSA1NTU1IDsKK3Nl bGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworZW5kOworZHJvcCB0YWJsZSBub19zdWNoX3RhYmxlOwor ZW5kICQkCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorYmVmb3JlIFJFU0lHTkFMCitiZWZvcmUg UkVTSUdOQUwKK0VSUk9SIDAyNDQ0OiBSRVNJR05BTCB0byBhIG5vdCBmb3VuZAorc2hvdyB3YXJu aW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitFcnJvcgkxMDUxCVVua25vd24gdGFibGUgJ25v X3N1Y2hfdGFibGUnCitFcnJvcgk1NTU1CVJFU0lHTkFMIHRvIGEgbm90IGZvdW5kCitkcm9wIHBy b2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwo KQorYmVnaW4KK0RFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3Igc3FsZXhjZXB0aW9uCitiZWdp bgorc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworUkVTSUdOQUwgU1FMU1RBVEUgIjQ0NDQ0IiBT RVQKK01FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byBhbiBlcnJvciIsCitNWVNRTF9FUlJOTyA9 IDU1NTUgOworc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CitlbmQ7Citkcm9wIHRhYmxlIG5vX3N1 Y2hfdGFibGU7CitlbmQgJCQKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitiZWZvcmUgUkVTSUdO QUwKK2JlZm9yZSBSRVNJR05BTAorRVJST1IgNDQ0NDQ6IFJFU0lHTkFMIHRvIGFuIGVycm9yCitz aG93IHdhcm5pbmdzICQkCitMZXZlbAlDb2RlCU1lc3NhZ2UKK0Vycm9yCTEwNTEJVW5rbm93biB0 YWJsZSAnbm9fc3VjaF90YWJsZScKK0Vycm9yCTU1NTUJUkVTSUdOQUwgdG8gYW4gZXJyb3IKK2Ry b3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKK2Ryb3AgcHJvY2VkdXJlIGlmIGV4aXN0cyBw ZXRlcl9wMSAkJAorZHJvcCBwcm9jZWR1cmUgaWYgZXhpc3RzIHBldGVyX3AyICQkCitDUkVBVEUg UFJPQ0VEVVJFIHBldGVyX3AxICgpCitCRUdJTgorREVDTEFSRSB4IENPTkRJVElPTiBGT1IgMTIz MTsKK0RFQ0xBUkUgRVhJVCBIQU5ETEVSIEZPUiB4CitCRUdJTgorU0VMRUNUICcyJzsKK1JFU0lH TkFMIFNFVCBNWVNRTF9FUlJOTyA9IDk5OTk7CitFTkQ7CitCRUdJTgorREVDTEFSRSBFWElUIEhB TkRMRVIgRk9SIHgKK0JFR0lOCitTRUxFQ1QgJzEnOworUkVTSUdOQUwgU0VUIFNDSEVNQV9OQU1F ID0gJ3Rlc3QnOworRU5EOworU0VUIEBAc3FsX21vZGU9TlVMTDsKK0VORDsKK0VORAorJCQKK0NS RUFURSBQUk9DRURVUkUgcGV0ZXJfcDIgKCkKK0JFR0lOCitERUNMQVJFIHggQ09ORElUSU9OIGZv ciA5OTk5OworREVDTEFSRSBFWElUIEhBTkRMRVIgRk9SIHgKK0JFR0lOCitTRUxFQ1QgJzMnOwor UkVTSUdOQUwgU0VUIE1FU1NBR0VfVEVYVCA9ICdIaSwgSSBhbSBhIHVzZWxlc3MgZXJyb3IgbWVz c2FnZSc7CitFTkQ7CitDQUxMIHBldGVyX3AxKCk7CitFTkQKKyQkCitDQUxMIHBldGVyX3AyKCkg JCQKKzEKKzEKKzIKKzIKKzMKKzMKK0VSUk9SIDQyMDAwOiBIaSwgSSBhbSBhIHVzZWxlc3MgZXJy b3IgbWVzc2FnZQorc2hvdyB3YXJuaW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitFcnJvcgk5 OTk5CUhpLCBJIGFtIGEgdXNlbGVzcyBlcnJvciBtZXNzYWdlCitkcm9wIHByb2NlZHVyZSBwZXRl cl9wMSAkJAorZHJvcCBwcm9jZWR1cmUgcGV0ZXJfcDIgJCQKK0NSRUFURSBQUk9DRURVUkUgcGV0 ZXJfcDEgKCkKK0JFR0lOCitERUNMQVJFIHggQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnNDIwMDAn OworREVDTEFSRSBFWElUIEhBTkRMRVIgRk9SIHgKK0JFR0lOCitTRUxFQ1QgJzInOworUkVTSUdO QUwgeCBTRVQgTVlTUUxfRVJSTk8gPSA5OTk5OworRU5EOworQkVHSU4KK0RFQ0xBUkUgRVhJVCBI QU5ETEVSIEZPUiB4CitCRUdJTgorU0VMRUNUICcxJzsKK1JFU0lHTkFMIHggU0VUCitTQ0hFTUFf TkFNRSA9ICd0ZXN0JywKK01ZU1FMX0VSUk5PPSAxMjMxOworRU5EOworLyogUmFpc2VzIEVSX1dS T05HX1ZBTFVFX0ZPUl9WQVIgOiAxMjMxLCBTUUxTVEFURSA0MjAwMCAqLworU0VUIEBAc3FsX21v ZGU9TlVMTDsKK0VORDsKK0VORAorJCQKK0NSRUFURSBQUk9DRURVUkUgcGV0ZXJfcDIgKCkKK0JF R0lOCitERUNMQVJFIHggQ09ORElUSU9OIGZvciBTUUxTVEFURSAnNDIwMDAnOworREVDTEFSRSBF WElUIEhBTkRMRVIgRk9SIHgKK0JFR0lOCitTRUxFQ1QgJzMnOworUkVTSUdOQUwgeCBTRVQKK01F U1NBR0VfVEVYVCA9ICdIaSwgSSBhbSBhIHVzZWxlc3MgZXJyb3IgbWVzc2FnZScsCitNWVNRTF9F UlJOTyA9IDk5OTk7CitFTkQ7CitDQUxMIHBldGVyX3AxKCk7CitFTkQKKyQkCitDQUxMIHBldGVy X3AyKCkgJCQKKzEKKzEKKzIKKzIKKzMKKzMKK0VSUk9SIDQyMDAwOiBIaSwgSSBhbSBhIHVzZWxl c3MgZXJyb3IgbWVzc2FnZQorc2hvdyB3YXJuaW5ncyAkJAorTGV2ZWwJQ29kZQlNZXNzYWdlCitF cnJvcgkxMjMxCVZhcmlhYmxlICdzcWxfbW9kZScgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBv ZiAnTlVMTCcKK0Vycm9yCTEyMzEJVmFyaWFibGUgJ3NxbF9tb2RlJyBjYW4ndCBiZSBzZXQgdG8g dGhlIHZhbHVlIG9mICdOVUxMJworRXJyb3IJOTk5OQlWYXJpYWJsZSAnc3FsX21vZGUnIGNhbid0 IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJ05VTEwnCitFcnJvcgk5OTk5CUhpLCBJIGFtIGEgdXNl bGVzcyBlcnJvciBtZXNzYWdlCitkcm9wIHByb2NlZHVyZSBwZXRlcl9wMSAkJAorZHJvcCBwcm9j ZWR1cmUgcGV0ZXJfcDIgJCQKK2Ryb3AgcHJvY2VkdXJlIGlmIGV4aXN0cyBwZXRlcl9wMyAkJAor V2FybmluZ3M6CitOb3RlCTEzMDUJUFJPQ0VEVVJFIHRlc3QucGV0ZXJfcDMgZG9lcyBub3QgZXhp c3QKK2NyZWF0ZSBwcm9jZWR1cmUgcGV0ZXJfcDMoKQorYmVnaW4KK2RlY2xhcmUgY29udGludWUg aGFuZGxlciBmb3Igc3FsZXhjZXB0aW9uCityZXNpZ25hbCBzcWxzdGF0ZSAnOTkwMDInIHNldCBt eXNxbF9lcnJubyA9IDI7CitzaWduYWwgc3Fsc3RhdGUgJzk5MDAxJyBzZXQgbXlzcWxfZXJybm8g PSAxLCBtZXNzYWdlX3RleHQgPSAiT3JpZ2luYWwiOworZW5kICQkCitjYWxsIHBldGVyX3AzKCkg JCQKK0VSUk9SIDk5MDAyOiBPcmlnaW5hbAorc2hvdyB3YXJuaW5ncyAkJAorTGV2ZWwJQ29kZQlN ZXNzYWdlCitFcnJvcgkxCU9yaWdpbmFsCitFcnJvcgkyCU9yaWdpbmFsCitkcm9wIHByb2NlZHVy ZSBwZXRlcl9wMyAkJAorZHJvcCB0YWJsZSB0X3dhcm47Citkcm9wIHRhYmxlIHRfY3Vyc29yOwoK PT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvci9zaWduYWxfY29kZS5yZXN1bHQnCi0tLSBhL215 c3FsLXRlc3Qvci9zaWduYWxfY29kZS5yZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAor KysgYi9teXNxbC10ZXN0L3Ivc2lnbmFsX2NvZGUucmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6MDMg KzAwMDAKQEAgLTAsMCArMSwzNSBAQAordXNlIHRlc3Q7Citkcm9wIHByb2NlZHVyZSBpZiBleGlz dHMgc2lnbmFsX3Byb2M7Citkcm9wIGZ1bmN0aW9uIGlmIGV4aXN0cyBzaWduYWxfZnVuYzsKK2Ny ZWF0ZSBwcm9jZWR1cmUgc2lnbmFsX3Byb2MoKQorYmVnaW4KK0RFQ0xBUkUgZm9vIENPTkRJVElP TiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKK1NJR05BTCBmb287CitTSUdOQUwgZm9vIFNFVCBNRVNT QUdFX1RFWFQgPSAiVGhpcyBpcyBhbiBlcnJvciBtZXNzYWdlIjsKK1JFU0lHTkFMIGZvbzsKK1JF U0lHTkFMIGZvbyBTRVQgTUVTU0FHRV9URVhUID0gIlRoaXMgaXMgYW4gZXJyb3IgbWVzc2FnZSI7 CitlbmQgJCQKK2NyZWF0ZSBmdW5jdGlvbiBzaWduYWxfZnVuYygpIHJldHVybnMgaW50CitiZWdp bgorREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworU0lHTkFMIGZv bzsKK1NJR05BTCBmb28gU0VUIE1FU1NBR0VfVEVYVCA9ICJUaGlzIGlzIGFuIGVycm9yIG1lc3Nh Z2UiOworUkVTSUdOQUwgZm9vOworUkVTSUdOQUwgZm9vIFNFVCBNRVNTQUdFX1RFWFQgPSAiVGhp cyBpcyBhbiBlcnJvciBtZXNzYWdlIjsKK3JldHVybiAwOworZW5kICQkCitzaG93IHByb2NlZHVy ZSBjb2RlIHNpZ25hbF9wcm9jOworUG9zCUluc3RydWN0aW9uCiswCXN0bXQgMTMzICJTSUdOQUwg Zm9vIgorMQlzdG10IDEzMyAiU0lHTkFMIGZvbyBTRVQgTUVTU0FHRV9URVhUID0gIlRoaXMgaS4u LiIKKzIJc3RtdCAxMzQgIlJFU0lHTkFMIGZvbyIKKzMJc3RtdCAxMzQgIlJFU0lHTkFMIGZvbyBT RVQgTUVTU0FHRV9URVhUID0gIlRoaXMuLi4iCitkcm9wIHByb2NlZHVyZSBzaWduYWxfcHJvYzsK K3Nob3cgZnVuY3Rpb24gY29kZSBzaWduYWxfZnVuYzsKK1BvcwlJbnN0cnVjdGlvbgorMAlzdG10 IDEzMyAiU0lHTkFMIGZvbyIKKzEJc3RtdCAxMzMgIlNJR05BTCBmb28gU0VUIE1FU1NBR0VfVEVY VCA9ICJUaGlzIGkuLi4iCisyCXN0bXQgMTM0ICJSRVNJR05BTCBmb28iCiszCXN0bXQgMTM0ICJS RVNJR05BTCBmb28gU0VUIE1FU1NBR0VfVEVYVCA9ICJUaGlzLi4uIgorNAlmcmV0dXJuIDMgMAor ZHJvcCBmdW5jdGlvbiBzaWduYWxfZnVuYzsKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3Iv c2lnbmFsX2RlbW8xLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL3NpZ25hbF9kZW1vMS5yZXN1 bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3Ivc2lnbmFsX2Rl bW8xLnJlc3VsdAkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0wLDAgKzEsMjY0IEBACitk cm9wIGRhdGFiYXNlIGlmIGV4aXN0cyBkZW1vOworY3JlYXRlIGRhdGFiYXNlIGRlbW87Cit1c2Ug ZGVtbzsKK2NyZWF0ZSB0YWJsZSBhYl9waHlzaWNhbF9wZXJzb24gKAorcGVyc29uX2lkIGludGVn ZXIsCitmaXJzdF9uYW1lIFZBUkNIQVIoNTApLAorbWlkZGxlX2luaXRpYWwgQ0hBUiwKK2xhc3Rf bmFtZSBWQVJDSEFSKDUwKSwKK3ByaW1hcnkga2V5IChwZXJzb25faWQpKTsKK2NyZWF0ZSB0YWJs ZSBhYl9tb3JhbF9wZXJzb24gKAorY29tcGFueV9pZCBpbnRlZ2VyLAorbmFtZSBWQVJDSEFSKDEw MCksCitwcmltYXJ5IGtleSAoY29tcGFueV9pZCkpOworY3JlYXRlIHRhYmxlIGluX2ludmVudG9y eSAoCitpdGVtX2lkIGludGVnZXIsCitkZXNjciBWQVJDSEFSKDUwKSwKK3N0b2NrIGludGVnZXIs CitwcmltYXJ5IGtleSAoaXRlbV9pZCkpOworY3JlYXRlIHRhYmxlIHBvX29yZGVyICgKK3BvX2lk IGludGVnZXIgYXV0b19pbmNyZW1lbnQsCitjdXN0X3R5cGUgY2hhciwgLyogYXJjIHJlbGF0aW9u c2hpcCwgc2VlIGN1c3RfaWQgKi8KK2N1c3RfaWQgaW50ZWdlciwgLyogRksgdG8gYWJfcGh5c2lj YWxfcGVyc29uICpPUiogYWJfbW9yYWxfcGVyc29uICovCitwcmltYXJ5IGtleSAocG9faWQpKTsK K2NyZWF0ZSB0YWJsZSBwb19vcmRlcl9saW5lICgKK3BvX2lkIGludGVnZXIsIC8qIEZLIHRvIHBv X29yZGVyLnBvX2lkICovCitsaW5lX25vIGludGVnZXIsCitpdGVtX2lkIGludGVnZXIsIC8qIEZL IHRvIGluX2ludmVudG9yeS5pdGVtX2lkICovCitxdHkgaW50ZWdlcik7CitjcmVhdGUgcHJvY2Vk dXJlIGNoZWNrX3BrX3BlcnNvbihpbiBwZXJzb25fdHlwZSBjaGFyLCBpbiBpZCBpbnRlZ2VyKQor YmVnaW4KK2RlY2xhcmUgeCBpbnRlZ2VyOworZGVjbGFyZSBtc2cgdmFyY2hhcigxMjgpOworLyoK K1Rlc3QgaW50ZWdyaXR5IGNvbnN0cmFpbnRzIGZvciBhbiAnYXJjJyByZWxhdGlvbnNoaXAuCitC YXNlZCBvbiAncGVyc29uX3R5cGUnLCAnaWQnIHBvaW50cyB0byBlaXRoZXIgYQorcGh5c2ljYWwg cGVyc29uLCBvciBhIG1vcmFsIHBlcnNvbi4KKyovCitjYXNlIHBlcnNvbl90eXBlCit3aGVuICdQ JyB0aGVuCitiZWdpbgorc2VsZWN0IGNvdW50KHBlcnNvbl9pZCkgZnJvbSBhYl9waHlzaWNhbF9w ZXJzb24KK3doZXJlIGFiX3BoeXNpY2FsX3BlcnNvbi5wZXJzb25faWQgPSBpZAoraW50byB4Owor aWYgKHggIT0gMSkKK3RoZW4KK3NldCBtc2c9IGNvbmNhdCgnTm8gc3VjaCBwaHlzaWNhbCBwZXJz b24sIFBLOicsIGlkKTsKK1NJR05BTCBTUUxTVEFURSAnNDUwMDAnIFNFVAorTUVTU0FHRV9URVhU ID0gbXNnLAorTVlTUUxfRVJSTk8gPSAxMDAwMDsKK2VuZCBpZjsKK2VuZDsKK3doZW4gJ00nIHRo ZW4KK2JlZ2luCitzZWxlY3QgY291bnQoY29tcGFueV9pZCkgZnJvbSBhYl9tb3JhbF9wZXJzb24K K3doZXJlIGFiX21vcmFsX3BlcnNvbi5jb21wYW55X2lkID0gaWQKK2ludG8geDsKK2lmICh4ICE9 IDEpCit0aGVuCitzZXQgbXNnPSBjb25jYXQoJ05vIHN1Y2ggbW9yYWwgcGVyc29uLCBQSzonLCBp ZCk7CitTSUdOQUwgU1FMU1RBVEUgJzQ1MDAwJyBTRVQKK01FU1NBR0VfVEVYVCA9IG1zZywKK01Z U1FMX0VSUk5PID0gMTAwMDA7CitlbmQgaWY7CitlbmQ7CitlbHNlCitiZWdpbgorc2V0IG1zZz0g Y29uY2F0KCdObyBzdWNoIHBlcnNvbiB0eXBlOicsIHBlcnNvbl90eXBlKTsKK1NJR05BTCBTUUxT VEFURSAnNDUwMDAnIFNFVAorTUVTU0FHRV9URVhUID0gbXNnLAorTVlTUUxfRVJSTk8gPSAyMDAw MDsKK2VuZDsKK2VuZCBjYXNlOworZW5kCiskJAorY3JlYXRlIHByb2NlZHVyZSBjaGVja19wa19p bnZlbnRvcnkoaW4gaWQgaW50ZWdlcikKK2JlZ2luCitkZWNsYXJlIHggaW50ZWdlcjsKK2RlY2xh cmUgbXNnIHZhcmNoYXIoMTI4KTsKK3NlbGVjdCBjb3VudChpdGVtX2lkKSBmcm9tIGluX2ludmVu dG9yeQord2hlcmUgaW5faW52ZW50b3J5Lml0ZW1faWQgPSBpZAoraW50byB4OworaWYgKHggIT0g MSkKK3RoZW4KK3NldCBtc2c9IGNvbmNhdCgnRmFpbGVkIGludGVncml0eSBjb25zdHJhaW50LCB0 YWJsZSBpbl9pbnZlbnRvcnksIFBLOicsCitpZCk7CitTSUdOQUwgU1FMU1RBVEUgJzQ1MDAwJyBT RVQKK01FU1NBR0VfVEVYVCA9IG1zZywKK01ZU1FMX0VSUk5PID0gMTAwMDA7CitlbmQgaWY7Citl bmQKKyQkCitjcmVhdGUgcHJvY2VkdXJlIGNoZWNrX3BrX29yZGVyKGluIGlkIGludGVnZXIpCiti ZWdpbgorZGVjbGFyZSB4IGludGVnZXI7CitkZWNsYXJlIG1zZyB2YXJjaGFyKDEyOCk7CitzZWxl Y3QgY291bnQocG9faWQpIGZyb20gcG9fb3JkZXIKK3doZXJlIHBvX29yZGVyLnBvX2lkID0gaWQK K2ludG8geDsKK2lmICh4ICE9IDEpCit0aGVuCitzZXQgbXNnPSBjb25jYXQoJ0ZhaWxlZCBpbnRl Z3JpdHkgY29uc3RyYWludCwgdGFibGUgcG9fb3JkZXIsIFBLOicsIGlkKTsKK1NJR05BTCBTUUxT VEFURSAnNDUwMDAnIFNFVAorTUVTU0FHRV9URVhUID0gbXNnLAorTVlTUUxfRVJSTk8gPSAxMDAw MDsKK2VuZCBpZjsKK2VuZAorJCQKK2NyZWF0ZSB0cmlnZ2VyIHBvX29yZGVyX2JpIGJlZm9yZSBp bnNlcnQgb24gcG9fb3JkZXIKK2ZvciBlYWNoIHJvdworYmVnaW4KK2NhbGwgY2hlY2tfcGtfcGVy c29uKE5FVy5jdXN0X3R5cGUsIE5FVy5jdXN0X2lkKTsKK2VuZAorJCQKK2NyZWF0ZSB0cmlnZ2Vy IHBvX29yZGVyX2J1IGJlZm9yZSB1cGRhdGUgb24gcG9fb3JkZXIKK2ZvciBlYWNoIHJvdworYmVn aW4KK2NhbGwgY2hlY2tfcGtfcGVyc29uKE5FVy5jdXN0X3R5cGUsIE5FVy5jdXN0X2lkKTsKK2Vu ZAorJCQKK2NyZWF0ZSB0cmlnZ2VyIHBvX29yZGVyX2xpbmVfYmkgYmVmb3JlIGluc2VydCBvbiBw b19vcmRlcl9saW5lCitmb3IgZWFjaCByb3cKK2JlZ2luCitjYWxsIGNoZWNrX3BrX29yZGVyKE5F Vy5wb19pZCk7CitjYWxsIGNoZWNrX3BrX2ludmVudG9yeShORVcuaXRlbV9pZCk7CitlbmQKKyQk CitjcmVhdGUgdHJpZ2dlciBwb19vcmRlcl9saW5lX2J1IGJlZm9yZSB1cGRhdGUgb24gcG9fb3Jk ZXJfbGluZQorZm9yIGVhY2ggcm93CitiZWdpbgorY2FsbCBjaGVja19wa19vcmRlcihORVcucG9f aWQpOworY2FsbCBjaGVja19wa19pbnZlbnRvcnkoTkVXLml0ZW1faWQpOworZW5kCiskJAorY3Jl YXRlIHByb2NlZHVyZSBwb19jcmVhdGVfb3JkZXIoCitpbiBwX2N1c3RfdHlwZSBjaGFyLAoraW4g cF9jdXN0X2lkIGludGVnZXIsCitvdXQgaWQgaW50ZWdlcikKK2JlZ2luCitpbnNlcnQgaW50byBw b19vcmRlciBzZXQgY3VzdF90eXBlID0gcF9jdXN0X3R5cGUsIGN1c3RfaWQgPSBwX2N1c3RfaWQ7 CitzZXQgaWQgPSBsYXN0X2luc2VydF9pZCgpOworZW5kCiskJAorY3JlYXRlIHByb2NlZHVyZSBw b19hZGRfb3JkZXJfbGluZSgKK2luIHBvIGludGVnZXIsCitpbiBsaW5lIGludGVnZXIsCitpbiBp dGVtIGludGVnZXIsCitpbiBxIGludGVnZXIpCitiZWdpbgoraW5zZXJ0IGludG8gcG9fb3JkZXJf bGluZSBzZXQKK3BvX2lkID0gcG8sIGxpbmVfbm8gPSBsaW5lLCBpdGVtX2lkID0gaXRlbSwgcXR5 ID0gcTsKK2VuZAorJCQKK3NlbGVjdCAiQ3JlYXRlIHNhbXBsZSBkYXRhIjsKK0NyZWF0ZSBzYW1w bGUgZGF0YQorQ3JlYXRlIHNhbXBsZSBkYXRhCitpbnNlcnQgaW50byBhYl9waHlzaWNhbF9wZXJz b24gdmFsdWVzCisoIDEsICJKb2huIiwgIkEiLCAiRG9lIiksCisoIDIsICJNYXJyeSIsICJCIiwg IlNtaXRoIikKKzsKK2luc2VydCBpbnRvIGFiX21vcmFsX3BlcnNvbiB2YWx1ZXMKKyggMywgIkFD TUUgcmVhbCBlc3RhdGUsIElOQyIpLAorKCA0LCAiTG9jYWwgc2Nob29sIikKKzsKK2luc2VydCBp bnRvIGluX2ludmVudG9yeSB2YWx1ZXMKKyggMTAwLCAiVGFibGUsIGRpbm5lciIsIDUpLAorKCAx MDEsICJDaGFpciIsIDIwKSwKKyggMjAwLCAiVGFibGUsIGNvZmZlZSIsIDMpLAorKCAzMDAsICJT Y2hvb2wgdGFibGUiLCAyNSksCisoIDMwMSwgIlNjaG9vbCBjaGFpcnMiLCA1MCkKKzsKK3NlbGVj dCAqIGZyb20gYWJfcGh5c2ljYWxfcGVyc29uIG9yZGVyIGJ5IHBlcnNvbl9pZDsKK3BlcnNvbl9p ZAlmaXJzdF9uYW1lCW1pZGRsZV9pbml0aWFsCWxhc3RfbmFtZQorMQlKb2huCUEJRG9lCisyCU1h cnJ5CUIJU21pdGgKK3NlbGVjdCAqIGZyb20gYWJfbW9yYWxfcGVyc29uIG9yZGVyIGJ5IGNvbXBh bnlfaWQ7Citjb21wYW55X2lkCW5hbWUKKzMJQUNNRSByZWFsIGVzdGF0ZSwgSU5DCis0CUxvY2Fs IHNjaG9vbAorc2VsZWN0ICogZnJvbSBpbl9pbnZlbnRvcnkgb3JkZXIgYnkgaXRlbV9pZDsKK2l0 ZW1faWQJZGVzY3IJc3RvY2sKKzEwMAlUYWJsZSwgZGlubmVyCTUKKzEwMQlDaGFpcgkyMAorMjAw CVRhYmxlLCBjb2ZmZWUJMworMzAwCVNjaG9vbCB0YWJsZQkyNQorMzAxCVNjaG9vbCBjaGFpcnMJ NTAKK3NlbGVjdCAiRW50ZXJpbmcgYW4gb3JkZXIgISI7CitFbnRlcmluZyBhbiBvcmRlciAhCitF bnRlcmluZyBhbiBvcmRlciAhCitzZXQgQG15X3BvID0gMDsKKy8qIEpvaG4gRG9lIHdhbnRzIDEg dGFibGUgYW5kIDQgY2hhaXJzICovCitjYWxsIHBvX2NyZWF0ZV9vcmRlcigiUCIsIDEsIEBteV9w byk7CitjYWxsIHBvX2FkZF9vcmRlcl9saW5lIChAbXlfcG8sIDEsIDEwMCwgMSk7CitjYWxsIHBv X2FkZF9vcmRlcl9saW5lIChAbXlfcG8sIDIsIDEwMSwgNCk7CisvKiBNYXJyeSBTbWl0aCB3YW50 cyBhIGNvZmZlZSB0YWJsZSAqLworY2FsbCBwb19jcmVhdGVfb3JkZXIoIlAiLCAyLCBAbXlfcG8p OworY2FsbCBwb19hZGRfb3JkZXJfbGluZSAoQG15X3BvLCAxLCAyMDAsIDEpOworc2VsZWN0ICJF bnRlcmluZyBiYWQgZGF0YSBpbiBhbiBvcmRlciI7CitFbnRlcmluZyBiYWQgZGF0YSBpbiBhbiBv cmRlcgorRW50ZXJpbmcgYmFkIGRhdGEgaW4gYW4gb3JkZXIKK2NhbGwgcG9fYWRkX29yZGVyX2xp bmUgKEBteV9wbywgMSwgOTk5LCAxKTsKK0VSUk9SIDQ1MDAwOiBGYWlsZWQgaW50ZWdyaXR5IGNv bnN0cmFpbnQsIHRhYmxlIGluX2ludmVudG9yeSwgUEs6OTk5CitzZWxlY3QgIkVudGVyaW5nIGJh ZCBkYXRhIGluIGFuIHVua25vd24gb3JkZXIiOworRW50ZXJpbmcgYmFkIGRhdGEgaW4gYW4gdW5r bm93biBvcmRlcgorRW50ZXJpbmcgYmFkIGRhdGEgaW4gYW4gdW5rbm93biBvcmRlcgorY2FsbCBw b19hZGRfb3JkZXJfbGluZSAoOTksIDEsIDEwMCwgMSk7CitFUlJPUiA0NTAwMDogRmFpbGVkIGlu dGVncml0eSBjb25zdHJhaW50LCB0YWJsZSBwb19vcmRlciwgUEs6OTkKK3NlbGVjdCAiRW50ZXJp bmcgYW4gb3JkZXIgZm9yIGFuIHVua25vd24gY29tcGFueSI7CitFbnRlcmluZyBhbiBvcmRlciBm b3IgYW4gdW5rbm93biBjb21wYW55CitFbnRlcmluZyBhbiBvcmRlciBmb3IgYW4gdW5rbm93biBj b21wYW55CitjYWxsIHBvX2NyZWF0ZV9vcmRlcigiTSIsIDcsIEBteV9wbyk7CitFUlJPUiA0NTAw MDogTm8gc3VjaCBtb3JhbCBwZXJzb24sIFBLOjcKK3NlbGVjdCAiRW50ZXJpbmcgYW4gb3JkZXIg Zm9yIGFuIHVua25vd24gcGVyc29uIHR5cGUiOworRW50ZXJpbmcgYW4gb3JkZXIgZm9yIGFuIHVu a25vd24gcGVyc29uIHR5cGUKK0VudGVyaW5nIGFuIG9yZGVyIGZvciBhbiB1bmtub3duIHBlcnNv biB0eXBlCitjYWxsIHBvX2NyZWF0ZV9vcmRlcigiWCIsIDEsIEBteV9wbyk7CitFUlJPUiA0NTAw MDogTm8gc3VjaCBwZXJzb24gdHlwZTpYCisvKiBUaGUgbG9jYWwgc2Nob29sIHdhbnRzIDEwIGNs YXNzIHRhYmxlcyBhbmQgMjAgY2hhaXJzICovCitjYWxsIHBvX2NyZWF0ZV9vcmRlcigiTSIsIDQs IEBteV9wbyk7CitjYWxsIHBvX2FkZF9vcmRlcl9saW5lIChAbXlfcG8sIDEsIDMwMCwgMTApOwor Y2FsbCBwb19hZGRfb3JkZXJfbGluZSAoQG15X3BvLCAyLCAzMDEsIDIwKTsKK3NlbGVjdCAqIGZy b20gcG9fb3JkZXI7Citwb19pZAljdXN0X3R5cGUJY3VzdF9pZAorMQlQCTEKKzIJUAkyCiszCU0J NAorc2VsZWN0ICogZnJvbSBwb19vcmRlcl9saW5lOworcG9faWQJbGluZV9ubwlpdGVtX2lkCXF0 eQorMQkxCTEwMAkxCisxCTIJMTAxCTQKKzIJMQkyMDAJMQorMwkxCTMwMAkxMAorMwkyCTMwMQky MAorc2VsZWN0IHBvX2lkIGFzICJQTyMiLAorKCBjYXNlIGN1c3RfdHlwZQord2hlbiAiUCIgdGhl biBjb25jYXQgKHBwLmZpcnN0X25hbWUsCisiICIsCitwcC5taWRkbGVfaW5pdGlhbCwKKyIgIiwK K3BwLmxhc3RfbmFtZSkKK3doZW4gIk0iIHRoZW4gbXAubmFtZQorZW5kICkgYXMgIlNvbGQgdG8i CisgIGZyb20gcG9fb3JkZXIgcG8KK2xlZnQgam9pbiBhYl9waHlzaWNhbF9wZXJzb24gcHAgb24g cG8uY3VzdF9pZCA9IHBwLnBlcnNvbl9pZAorbGVmdCBqb2luIGFiX21vcmFsX3BlcnNvbiBtcCBv biBwby5jdXN0X2lkID0gY29tcGFueV9pZAorOworUE8jCVNvbGQgdG8KKzEJSm9obiBBIERvZQor MglNYXJyeSBCIFNtaXRoCiszCUxvY2FsIHNjaG9vbAorc2VsZWN0IHBvX2lkIGFzICJQTyMiLAor b2wubGluZV9ubyBhcyAiTGluZSIsCitvbC5pdGVtX2lkIGFzICJJdGVtIiwKK2ludi5kZXNjciBh cyAiRGVzY3JpcHRpb24iLAorb2wucXR5IGFzICJRdWFudGl0eSIKKyAgZnJvbSBwb19vcmRlcl9s aW5lIG9sLCBpbl9pbnZlbnRvcnkgaW52Cit3aGVyZSBpbnYuaXRlbV9pZCA9IG9sLml0ZW1faWQK K29yZGVyIGJ5IG9sLml0ZW1faWQsIG9sLmxpbmVfbm87CitQTyMJTGluZQlJdGVtCURlc2NyaXB0 aW9uCVF1YW50aXR5CisxCTEJMTAwCVRhYmxlLCBkaW5uZXIJMQorMQkyCTEwMQlDaGFpcgk0Cisy CTEJMjAwCVRhYmxlLCBjb2ZmZWUJMQorMwkxCTMwMAlTY2hvb2wgdGFibGUJMTAKKzMJMgkzMDEJ U2Nob29sIGNoYWlycwkyMAorZHJvcCBkYXRhYmFzZSBkZW1vOwoKPT09IGFkZGVkIGZpbGUgJ215 c3FsLXRlc3Qvci9zaWduYWxfZGVtbzIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3Ivc2lnbmFs X2RlbW8yLnJlc3VsdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3Qv ci9zaWduYWxfZGVtbzIucmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTAsMCAr MSwxOTcgQEAKK2Ryb3AgZGF0YWJhc2UgaWYgZXhpc3RzIGRlbW87CitjcmVhdGUgZGF0YWJhc2Ug ZGVtbzsKK3VzZSBkZW1vOworY3JlYXRlIHByb2NlZHVyZSBwcm9jX3RvcF9hKHAxIGludGVnZXIp CitiZWdpbgorIyMgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBTUUxFWENFUFRJT04sIE5P VCBGT1VORAorYmVnaW4KK2VuZDsKK3NlbGVjdCAiU3RhcnRpbmcgLi4uIjsKK2NhbGwgcHJvY19t aWRkbGVfYShwMSk7CitzZWxlY3QgIlRoZSBlbmQiOworZW5kCiskJAorY3JlYXRlIHByb2NlZHVy ZSBwcm9jX21pZGRsZV9hKHAxIGludGVnZXIpCitiZWdpbgorREVDTEFSRSBsIGludGVnZXI7Cisj IHdpdGhvdXQgUkVTSUdOQUw6CisjIFNob3VsZCBiZTogREVDTEFSRSBFWElUIEhBTkRMRVIgZm9y IFNRTEVYQ0VQVElPTiwgTk9UIEZPVU5ECitERUNMQVJFIEVYSVQgSEFORExFUiBmb3IgMSAvKiBu b3Qgc3VyZSBob3cgdG8gaGFuZGxlIGV4Y2VwdGlvbnMgKi8KK2JlZ2luCitzZWxlY3QgIk9vcHMg Li4uIG5vdyB3aGF0ID8iOworZW5kOworc2VsZWN0ICJJbiBwcm9kX21pZGRsZSgpIjsKK2NyZWF0 ZSB0ZW1wb3JhcnkgdGFibGUgdDEoYSBpbnRlZ2VyLCBiIGludGVnZXIpOworc2VsZWN0IEdFVF9M T0NLKCJ1c2VyX211dGV4IiwgMTApIGludG8gbDsKK2luc2VydCBpbnRvIHQxIHNldCBhID0gcDEs IGIgPSBwMTsKK2NhbGwgcHJvY19ib3R0b21fYShwMSk7CitzZWxlY3QgUkVMRUFTRV9MT0NLKCJ1 c2VyX211dGV4IikgaW50byBsOworZHJvcCB0ZW1wb3JhcnkgdGFibGUgdDE7CitlbmQKKyQkCitj cmVhdGUgcHJvY2VkdXJlIHByb2NfYm90dG9tX2EocDEgaW50ZWdlcikKK2JlZ2luCitzZWxlY3Qg IkluIHByb2NfYm90dG9tKCkiOworaWYgKHAxID0gMSkgdGhlbgorYmVnaW4KK3NlbGVjdCAiRG9p bmcgc29tZXRoaW5nIHRoYXQgd29ya3MgLi4uIjsKK3NlbGVjdCAqIGZyb20gdDE7CitlbmQ7Citl bmQgaWY7CitpZiAocDEgPSAyKSB0aGVuCitiZWdpbgorc2VsZWN0ICJEb2luZyBzb21ldGhpbmcg dGhhdCBmYWlsIChzaW11bGF0ZSBhbiBlcnJvcikgLi4uIjsKK2Ryb3AgdGFibGUgbm9fc3VjaF90 YWJsZTsKK2VuZDsKK2VuZCBpZjsKK2lmIChwMSA9IDMpIHRoZW4KK2JlZ2luCitzZWxlY3QgIkRv aW5nIHNvbWV0aGluZyB0aGF0ICpTSE9VTEQqIHdvcmtzIC4uLiI7CitzZWxlY3QgKiBmcm9tIHQx OworZW5kOworZW5kIGlmOworZW5kCiskJAorY2FsbCBwcm9jX3RvcF9hKDEpOworU3RhcnRpbmcg Li4uCitTdGFydGluZyAuLi4KK0luIHByb2RfbWlkZGxlKCkKK0luIHByb2RfbWlkZGxlKCkKK0lu IHByb2NfYm90dG9tKCkKK0luIHByb2NfYm90dG9tKCkKK0RvaW5nIHNvbWV0aGluZyB0aGF0IHdv cmtzIC4uLgorRG9pbmcgc29tZXRoaW5nIHRoYXQgd29ya3MgLi4uCithCWIKKzEJMQorVGhlIGVu ZAorVGhlIGVuZAorY2FsbCBwcm9jX3RvcF9hKDIpOworU3RhcnRpbmcgLi4uCitTdGFydGluZyAu Li4KK0luIHByb2RfbWlkZGxlKCkKK0luIHByb2RfbWlkZGxlKCkKK0luIHByb2NfYm90dG9tKCkK K0luIHByb2NfYm90dG9tKCkKK0RvaW5nIHNvbWV0aGluZyB0aGF0IGZhaWwgKHNpbXVsYXRlIGFu IGVycm9yKSAuLi4KK0RvaW5nIHNvbWV0aGluZyB0aGF0IGZhaWwgKHNpbXVsYXRlIGFuIGVycm9y KSAuLi4KK0VSUk9SIDQyUzAyOiBVbmtub3duIHRhYmxlICdub19zdWNoX3RhYmxlJworY2FsbCBw cm9jX3RvcF9hKDMpOworU3RhcnRpbmcgLi4uCitTdGFydGluZyAuLi4KK0luIHByb2RfbWlkZGxl KCkKK0luIHByb2RfbWlkZGxlKCkKK0VSUk9SIDQyUzAxOiBUYWJsZSAndDEnIGFscmVhZHkgZXhp c3RzCitjYWxsIHByb2NfdG9wX2EoMSk7CitTdGFydGluZyAuLi4KK1N0YXJ0aW5nIC4uLgorSW4g cHJvZF9taWRkbGUoKQorSW4gcHJvZF9taWRkbGUoKQorRVJST1IgNDJTMDE6IFRhYmxlICd0MScg YWxyZWFkeSBleGlzdHMKK2Ryb3AgdGVtcG9yYXJ5IHRhYmxlIGlmIGV4aXN0cyB0MTsKK2NyZWF0 ZSBwcm9jZWR1cmUgcHJvY190b3BfYihwMSBpbnRlZ2VyKQorYmVnaW4KK3NlbGVjdCAiU3RhcnRp bmcgLi4uIjsKK2NhbGwgcHJvY19taWRkbGVfYihwMSk7CitzZWxlY3QgIlRoZSBlbmQiOworZW5k CiskJAorY3JlYXRlIHByb2NlZHVyZSBwcm9jX21pZGRsZV9iKHAxIGludGVnZXIpCitiZWdpbgor REVDTEFSRSBsIGludGVnZXI7CitERUNMQVJFIEVYSVQgSEFORExFUiBmb3IgU1FMRVhDRVBUSU9O LCBOT1QgRk9VTkQKK2JlZ2luCitiZWdpbgorREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBT UUxFWENFUFRJT04sIE5PVCBGT1VORAorYmVnaW4KKy8qIElnbm9yZSBlcnJvcnMgZnJvbSB0aGUg Y2xlYW51cCBjb2RlICovCitlbmQ7CitzZWxlY3QgIkRvaW5nIGNsZWFudXAgISI7CitzZWxlY3Qg UkVMRUFTRV9MT0NLKCJ1c2VyX211dGV4IikgaW50byBsOworZHJvcCB0ZW1wb3JhcnkgdGFibGUg dDE7CitlbmQ7CitSRVNJR05BTDsKK2VuZDsKK3NlbGVjdCAiSW4gcHJvZF9taWRkbGUoKSI7Citj cmVhdGUgdGVtcG9yYXJ5IHRhYmxlIHQxKGEgaW50ZWdlciwgYiBpbnRlZ2VyKTsKK3NlbGVjdCBH RVRfTE9DSygidXNlcl9tdXRleCIsIDEwKSBpbnRvIGw7CitpbnNlcnQgaW50byB0MSBzZXQgYSA9 IHAxLCBiID0gcDE7CitjYWxsIHByb2NfYm90dG9tX2IocDEpOworc2VsZWN0IFJFTEVBU0VfTE9D SygidXNlcl9tdXRleCIpIGludG8gbDsKK2Ryb3AgdGVtcG9yYXJ5IHRhYmxlIHQxOworZW5kCisk JAorY3JlYXRlIHByb2NlZHVyZSBwcm9jX2JvdHRvbV9iKHAxIGludGVnZXIpCitiZWdpbgorc2Vs ZWN0ICJJbiBwcm9jX2JvdHRvbSgpIjsKK2lmIChwMSA9IDEpIHRoZW4KK2JlZ2luCitzZWxlY3Qg IkRvaW5nIHNvbWV0aGluZyB0aGF0IHdvcmtzIC4uLiI7CitzZWxlY3QgKiBmcm9tIHQxOworZW5k OworZW5kIGlmOworaWYgKHAxID0gMikgdGhlbgorYmVnaW4KK3NlbGVjdCAiRG9pbmcgc29tZXRo aW5nIHRoYXQgZmFpbCAoc2ltdWxhdGUgYW4gZXJyb3IpIC4uLiI7Citkcm9wIHRhYmxlIG5vX3N1 Y2hfdGFibGU7CitlbmQ7CitlbmQgaWY7CitpZiAocDEgPSAzKSB0aGVuCitiZWdpbgorc2VsZWN0 ICJEb2luZyBzb21ldGhpbmcgdGhhdCAqU0hPVUxEKiB3b3JrcyAuLi4iOworc2VsZWN0ICogZnJv bSB0MTsKK2VuZDsKK2VuZCBpZjsKK2VuZAorJCQKK2NhbGwgcHJvY190b3BfYigxKTsKK1N0YXJ0 aW5nIC4uLgorU3RhcnRpbmcgLi4uCitJbiBwcm9kX21pZGRsZSgpCitJbiBwcm9kX21pZGRsZSgp CitJbiBwcm9jX2JvdHRvbSgpCitJbiBwcm9jX2JvdHRvbSgpCitEb2luZyBzb21ldGhpbmcgdGhh dCB3b3JrcyAuLi4KK0RvaW5nIHNvbWV0aGluZyB0aGF0IHdvcmtzIC4uLgorYQliCisxCTEKK1Ro ZSBlbmQKK1RoZSBlbmQKK2NhbGwgcHJvY190b3BfYigyKTsKK1N0YXJ0aW5nIC4uLgorU3RhcnRp bmcgLi4uCitJbiBwcm9kX21pZGRsZSgpCitJbiBwcm9kX21pZGRsZSgpCitJbiBwcm9jX2JvdHRv bSgpCitJbiBwcm9jX2JvdHRvbSgpCitEb2luZyBzb21ldGhpbmcgdGhhdCBmYWlsIChzaW11bGF0 ZSBhbiBlcnJvcikgLi4uCitEb2luZyBzb21ldGhpbmcgdGhhdCBmYWlsIChzaW11bGF0ZSBhbiBl cnJvcikgLi4uCitEb2luZyBjbGVhbnVwICEKK0RvaW5nIGNsZWFudXAgIQorRVJST1IgNDJTMDI6 IFVua25vd24gdGFibGUgJ25vX3N1Y2hfdGFibGUnCitjYWxsIHByb2NfdG9wX2IoMyk7CitTdGFy dGluZyAuLi4KK1N0YXJ0aW5nIC4uLgorSW4gcHJvZF9taWRkbGUoKQorSW4gcHJvZF9taWRkbGUo KQorSW4gcHJvY19ib3R0b20oKQorSW4gcHJvY19ib3R0b20oKQorRG9pbmcgc29tZXRoaW5nIHRo YXQgKlNIT1VMRCogd29ya3MgLi4uCitEb2luZyBzb21ldGhpbmcgdGhhdCAqU0hPVUxEKiB3b3Jr cyAuLi4KK2EJYgorMwkzCitUaGUgZW5kCitUaGUgZW5kCitjYWxsIHByb2NfdG9wX2IoMSk7CitT dGFydGluZyAuLi4KK1N0YXJ0aW5nIC4uLgorSW4gcHJvZF9taWRkbGUoKQorSW4gcHJvZF9taWRk bGUoKQorSW4gcHJvY19ib3R0b20oKQorSW4gcHJvY19ib3R0b20oKQorRG9pbmcgc29tZXRoaW5n IHRoYXQgd29ya3MgLi4uCitEb2luZyBzb21ldGhpbmcgdGhhdCB3b3JrcyAuLi4KK2EJYgorMQkx CitUaGUgZW5kCitUaGUgZW5kCitkcm9wIGRhdGFiYXNlIGRlbW87Cgo9PT0gYWRkZWQgZmlsZSAn bXlzcWwtdGVzdC9yL3NpZ25hbF9kZW1vMy5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9zaWdu YWxfZGVtbzMucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVz dC9yL3NpZ25hbF9kZW1vMy5yZXN1bHQJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtMCww ICsxLDE0MyBAQAorU0VUIEBzdGFydF9nbG9iYWxfdmFsdWUgPSBAQGdsb2JhbC5tYXhfZXJyb3Jf Y291bnQ7CitTRUxFQ1QgQHN0YXJ0X2dsb2JhbF92YWx1ZTsKK0BzdGFydF9nbG9iYWxfdmFsdWUK KzY0CitTRVQgQHN0YXJ0X3Nlc3Npb25fdmFsdWUgPSBAQHNlc3Npb24ubWF4X2Vycm9yX2NvdW50 OworU0VMRUNUIEBzdGFydF9zZXNzaW9uX3ZhbHVlOworQHN0YXJ0X3Nlc3Npb25fdmFsdWUKKzY0 Citkcm9wIGRhdGFiYXNlIGlmIGV4aXN0cyBkZW1vOworY3JlYXRlIGRhdGFiYXNlIGRlbW87Cit1 c2UgZGVtbzsKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY18xKCkKK2JlZ2luCitkZWNsYXJlIGV4aXQg aGFuZGxlciBmb3Igc3FsZXhjZXB0aW9uCityZXNpZ25hbCBzcWxzdGF0ZSAnNDUwMDAnIHNldCBt ZXNzYWdlX3RleHQ9J09vcHMgaW4gcHJvY18xJzsKK2NhbGwgcHJvY18yKCk7CitlbmQKKyQkCitj cmVhdGUgcHJvY2VkdXJlIHByb2NfMigpCitiZWdpbgorZGVjbGFyZSBleGl0IGhhbmRsZXIgZm9y IHNxbGV4Y2VwdGlvbgorcmVzaWduYWwgc3Fsc3RhdGUgJzQ1MDAwJyBzZXQgbWVzc2FnZV90ZXh0 PSdPb3BzIGluIHByb2NfMic7CitjYWxsIHByb2NfMygpOworZW5kCiskJAorY3JlYXRlIHByb2Nl ZHVyZSBwcm9jXzMoKQorYmVnaW4KK2RlY2xhcmUgZXhpdCBoYW5kbGVyIGZvciBzcWxleGNlcHRp b24KK3Jlc2lnbmFsIHNxbHN0YXRlICc0NTAwMCcgc2V0IG1lc3NhZ2VfdGV4dD0nT29wcyBpbiBw cm9jXzMnOworY2FsbCBwcm9jXzQoKTsKK2VuZAorJCQKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY180 KCkKK2JlZ2luCitkZWNsYXJlIGV4aXQgaGFuZGxlciBmb3Igc3FsZXhjZXB0aW9uCityZXNpZ25h bCBzcWxzdGF0ZSAnNDUwMDAnIHNldCBtZXNzYWdlX3RleHQ9J09vcHMgaW4gcHJvY180JzsKK2Nh bGwgcHJvY181KCk7CitlbmQKKyQkCitjcmVhdGUgcHJvY2VkdXJlIHByb2NfNSgpCitiZWdpbgor ZGVjbGFyZSBleGl0IGhhbmRsZXIgZm9yIHNxbGV4Y2VwdGlvbgorcmVzaWduYWwgc3Fsc3RhdGUg JzQ1MDAwJyBzZXQgbWVzc2FnZV90ZXh0PSdPb3BzIGluIHByb2NfNSc7CitjYWxsIHByb2NfNigp OworZW5kCiskJAorY3JlYXRlIHByb2NlZHVyZSBwcm9jXzYoKQorYmVnaW4KK2RlY2xhcmUgZXhp dCBoYW5kbGVyIGZvciBzcWxleGNlcHRpb24KK3Jlc2lnbmFsIHNxbHN0YXRlICc0NTAwMCcgc2V0 IG1lc3NhZ2VfdGV4dD0nT29wcyBpbiBwcm9jXzYnOworY2FsbCBwcm9jXzcoKTsKK2VuZAorJCQK K2NyZWF0ZSBwcm9jZWR1cmUgcHJvY183KCkKK2JlZ2luCitkZWNsYXJlIGV4aXQgaGFuZGxlciBm b3Igc3FsZXhjZXB0aW9uCityZXNpZ25hbCBzcWxzdGF0ZSAnNDUwMDAnIHNldCBtZXNzYWdlX3Rl eHQ9J09vcHMgaW4gcHJvY183JzsKK2NhbGwgcHJvY184KCk7CitlbmQKKyQkCitjcmVhdGUgcHJv Y2VkdXJlIHByb2NfOCgpCitiZWdpbgorZGVjbGFyZSBleGl0IGhhbmRsZXIgZm9yIHNxbGV4Y2Vw dGlvbgorcmVzaWduYWwgc3Fsc3RhdGUgJzQ1MDAwJyBzZXQgbWVzc2FnZV90ZXh0PSdPb3BzIGlu IHByb2NfOCc7CitjYWxsIHByb2NfOSgpOworZW5kCiskJAorY3JlYXRlIHByb2NlZHVyZSBwcm9j XzkoKQorYmVnaW4KK2RlY2xhcmUgZXhpdCBoYW5kbGVyIGZvciBzcWxleGNlcHRpb24KK3Jlc2ln bmFsIHNxbHN0YXRlICc0NTAwMCcgc2V0IG1lc3NhZ2VfdGV4dD0nT29wcyBpbiBwcm9jXzknOwor IyMgRG8gc29tZXRoaW5nIHRoYXQgZmFpbHMsIHRvIHNlZSBob3cgZXJyb3JzIGFyZSByZXBvcnRl ZAorZHJvcCB0YWJsZSBvb3BzX2l0X2lzX25vdF9oZXJlOworZW5kCiskJAorY2FsbCBwcm9jXzEo KTsKK0VSUk9SIDQ1MDAwOiBPb3BzIGluIHByb2NfMQorc2hvdyB3YXJuaW5nczsKK0xldmVsCUNv ZGUJTWVzc2FnZQorRXJyb3IJMTA1MQlVbmtub3duIHRhYmxlICdvb3BzX2l0X2lzX25vdF9oZXJl JworRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfOQorRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfOAor RXJyb3IJMTcyOQlPb3BzIGluIHByb2NfNworRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfNgorRXJy b3IJMTcyOQlPb3BzIGluIHByb2NfNQorRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfNAorRXJyb3IJ MTcyOQlPb3BzIGluIHByb2NfMworRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfMgorRXJyb3IJMTcy OQlPb3BzIGluIHByb2NfMQorU0VUIEBAc2Vzc2lvbi5tYXhfZXJyb3JfY291bnQgPSA1OworU0VM RUNUIEBAc2Vzc2lvbi5tYXhfZXJyb3JfY291bnQ7CitAQHNlc3Npb24ubWF4X2Vycm9yX2NvdW50 Cis1CitjYWxsIHByb2NfMSgpOworRVJST1IgNDUwMDA6IE9vcHMgaW4gcHJvY18xCitzaG93IHdh cm5pbmdzOworTGV2ZWwJQ29kZQlNZXNzYWdlCitFcnJvcgkxNzI5CU9vcHMgaW4gcHJvY181CitF cnJvcgkxNzI5CU9vcHMgaW4gcHJvY180CitFcnJvcgkxNzI5CU9vcHMgaW4gcHJvY18zCitFcnJv cgkxNzI5CU9vcHMgaW4gcHJvY18yCitFcnJvcgkxNzI5CU9vcHMgaW4gcHJvY18xCitTRVQgQEBz ZXNzaW9uLm1heF9lcnJvcl9jb3VudCA9IDc7CitTRUxFQ1QgQEBzZXNzaW9uLm1heF9lcnJvcl9j b3VudDsKK0BAc2Vzc2lvbi5tYXhfZXJyb3JfY291bnQKKzcKK2NhbGwgcHJvY18xKCk7CitFUlJP UiA0NTAwMDogT29wcyBpbiBwcm9jXzEKK3Nob3cgd2FybmluZ3M7CitMZXZlbAlDb2RlCU1lc3Nh Z2UKK0Vycm9yCTE3MjkJT29wcyBpbiBwcm9jXzcKK0Vycm9yCTE3MjkJT29wcyBpbiBwcm9jXzYK K0Vycm9yCTE3MjkJT29wcyBpbiBwcm9jXzUKK0Vycm9yCTE3MjkJT29wcyBpbiBwcm9jXzQKK0Vy cm9yCTE3MjkJT29wcyBpbiBwcm9jXzMKK0Vycm9yCTE3MjkJT29wcyBpbiBwcm9jXzIKK0Vycm9y CTE3MjkJT29wcyBpbiBwcm9jXzEKK1NFVCBAQHNlc3Npb24ubWF4X2Vycm9yX2NvdW50ID0gOTsK K1NFTEVDVCBAQHNlc3Npb24ubWF4X2Vycm9yX2NvdW50OworQEBzZXNzaW9uLm1heF9lcnJvcl9j b3VudAorOQorY2FsbCBwcm9jXzEoKTsKK0VSUk9SIDQ1MDAwOiBPb3BzIGluIHByb2NfMQorc2hv dyB3YXJuaW5nczsKK0xldmVsCUNvZGUJTWVzc2FnZQorRXJyb3IJMTcyOQlPb3BzIGluIHByb2Nf OQorRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfOAorRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfNwor RXJyb3IJMTcyOQlPb3BzIGluIHByb2NfNgorRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfNQorRXJy b3IJMTcyOQlPb3BzIGluIHByb2NfNAorRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfMworRXJyb3IJ MTcyOQlPb3BzIGluIHByb2NfMgorRXJyb3IJMTcyOQlPb3BzIGluIHByb2NfMQorZHJvcCBkYXRh YmFzZSBkZW1vOworU0VUIEBAZ2xvYmFsLm1heF9lcnJvcl9jb3VudCA9IEBzdGFydF9nbG9iYWxf dmFsdWU7CitTRUxFQ1QgQEBnbG9iYWwubWF4X2Vycm9yX2NvdW50OworQEBnbG9iYWwubWF4X2Vy cm9yX2NvdW50Cis2NAorU0VUIEBAc2Vzc2lvbi5tYXhfZXJyb3JfY291bnQgPSBAc3RhcnRfc2Vz c2lvbl92YWx1ZTsKK1NFTEVDVCBAQHNlc3Npb24ubWF4X2Vycm9yX2NvdW50OworQEBzZXNzaW9u Lm1heF9lcnJvcl9jb3VudAorNjQKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3Ivc2lnbmFs X3NxbG1vZGUucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3Ivc2lnbmFsX3NxbG1vZGUucmVzdWx0 CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL3NpZ25hbF9zcWxt b2RlLnJlc3VsdAkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0wLDAgKzEsODYgQEAKK1NF VCBAc2F2ZV9zcWxfbW9kZT1AQHNxbF9tb2RlOworU0VUIHNxbF9tb2RlPScnOworZHJvcCBwcm9j ZWR1cmUgaWYgZXhpc3RzIHA7Citkcm9wIHByb2NlZHVyZSBpZiBleGlzdHMgcDI7Citkcm9wIHBy b2NlZHVyZSBpZiBleGlzdHMgcDM7CitjcmVhdGUgcHJvY2VkdXJlIHAoKQorYmVnaW4KK2RlY2xh cmUgdXRmOF92YXIgVkFSQ0hBUigxMjgpIENIQVJBQ1RFUiBTRVQgVVRGODsKK3NldCB1dGY4X3Zh ciA9IGNvbmNhdChyZXBlYXQoJ0EnLCAxMjgpLCAnWCcpOworc2VsZWN0IGxlbmd0aCh1dGY4X3Zh ciksIHV0ZjhfdmFyOworZW5kCiskJAorY3JlYXRlIHByb2NlZHVyZSBwMigpCitiZWdpbgorZGVj bGFyZSBtc2cgVkFSQ0hBUigxMjkpIENIQVJBQ1RFUiBTRVQgVVRGODsKK3NldCBtc2cgPSBjb25j YXQocmVwZWF0KCdBJywgMTI4KSwgJ1gnKTsKK3NlbGVjdCBsZW5ndGgobXNnKSwgbXNnOworc2ln bmFsIHNxbHN0YXRlICc1NTU1NScgc2V0IG1lc3NhZ2VfdGV4dCA9IG1zZzsKK2VuZAorJCQKK2Ny ZWF0ZSBwcm9jZWR1cmUgcDMoKQorYmVnaW4KK2RlY2xhcmUgbmFtZSBWQVJDSEFSKDY1KSBDSEFS QUNURVIgU0VUIFVURjg7CitzZXQgbmFtZSA9IGNvbmNhdChyZXBlYXQoJ0EnLCA2NCksICdYJyk7 CitzZWxlY3QgbGVuZ3RoKG5hbWUpLCBuYW1lOworc2lnbmFsIHNxbHN0YXRlICc1NTU1NScgc2V0 CittZXNzYWdlX3RleHQgPSAnTWVzc2FnZScsCit0YWJsZV9uYW1lID0gbmFtZTsKK2VuZAorJCQK K2NhbGwgcDsKK2xlbmd0aCh1dGY4X3ZhcikJdXRmOF92YXIKKzEyOAlBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQor V2FybmluZ3M6CitXYXJuaW5nCTEyNjUJRGF0YSB0cnVuY2F0ZWQgZm9yIGNvbHVtbiAndXRmOF92 YXInIGF0IHJvdyAxCitjYWxsIHAyOworbGVuZ3RoKG1zZykJbXNnCisxMjkJQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFYCitFUlJPUiA1NTU1NTogQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKK2NhbGwgcDM7CitsZW5ndGgobmFtZSkJ bmFtZQorNjUJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQVgKK0VSUk9SIDU1NTU1OiBNZXNzYWdlCitkcm9wIHByb2NlZHVyZSBw OworZHJvcCBwcm9jZWR1cmUgcDI7Citkcm9wIHByb2NlZHVyZSBwMzsKK1NFVCBzcWxfbW9kZT0n U1RSSUNUX0FMTF9UQUJMRVMnOworY3JlYXRlIHByb2NlZHVyZSBwKCkKK2JlZ2luCitkZWNsYXJl IHV0ZjhfdmFyIFZBUkNIQVIoMTI4KSBDSEFSQUNURVIgU0VUIFVURjg7CitzZXQgdXRmOF92YXIg PSBjb25jYXQocmVwZWF0KCdBJywgMTI4KSwgJ1gnKTsKK3NlbGVjdCBsZW5ndGgodXRmOF92YXIp LCB1dGY4X3ZhcjsKK2VuZAorJCQKK2NyZWF0ZSBwcm9jZWR1cmUgcDIoKQorYmVnaW4KK2RlY2xh cmUgbXNnIFZBUkNIQVIoMTI5KSBDSEFSQUNURVIgU0VUIFVURjg7CitzZXQgbXNnID0gY29uY2F0 KHJlcGVhdCgnQScsIDEyOCksICdYJyk7CitzZWxlY3QgbGVuZ3RoKG1zZyksIG1zZzsKK3NpZ25h bCBzcWxzdGF0ZSAnNTU1NTUnIHNldCBtZXNzYWdlX3RleHQgPSBtc2c7CitlbmQKKyQkCitjcmVh dGUgcHJvY2VkdXJlIHAzKCkKK2JlZ2luCitkZWNsYXJlIG5hbWUgVkFSQ0hBUig2NSkgQ0hBUkFD VEVSIFNFVCBVVEY4Oworc2V0IG5hbWUgPSBjb25jYXQocmVwZWF0KCdBJywgNjQpLCAnWCcpOwor c2VsZWN0IGxlbmd0aChuYW1lKSwgbmFtZTsKK3NpZ25hbCBzcWxzdGF0ZSAnNTU1NTUnIHNldAor bWVzc2FnZV90ZXh0ID0gJ01lc3NhZ2UnLAordGFibGVfbmFtZSA9IG5hbWU7CitlbmQKKyQkCitj YWxsIHA7CitFUlJPUiAyMjAwMTogRGF0YSB0b28gbG9uZyBmb3IgY29sdW1uICd1dGY4X3Zhcicg YXQgcm93IDEKK2NhbGwgcDI7CitsZW5ndGgobXNnKQltc2cKKzEyOQlBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVgK K0VSUk9SIEhZMDAwOiBEYXRhIHRvbyBsb25nIGZvciBjb25kaXRpb24gaXRlbSAnTUVTU0FHRV9U RVhUJworY2FsbCBwMzsKK2xlbmd0aChuYW1lKQluYW1lCis2NQlBQUFBQUFBQUFBQUFBQUFBQUFB QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWAorRVJST1IgSFkw MDA6IERhdGEgdG9vIGxvbmcgZm9yIGNvbmRpdGlvbiBpdGVtICdUQUJMRV9OQU1FJworZHJvcCBw cm9jZWR1cmUgcDsKK2Ryb3AgcHJvY2VkdXJlIHAyOworZHJvcCBwcm9jZWR1cmUgcDM7CitTRVQg QEBzcWxfbW9kZT1Ac2F2ZV9zcWxfbW9kZTsKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3Iv c2lnbmFsX3V0ZjMyLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL3NpZ25hbF91dGYzMi5yZXN1 bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3Ivc2lnbmFsX3V0 ZjMyLnJlc3VsdAkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0wLDAgKzEsMzQgQEAKK2Ry b3AgcHJvY2VkdXJlIGlmIGV4aXN0cyB0ZXN0X3NpZ25hbDsKK2NyZWF0ZSBwcm9jZWR1cmUgdGVz dF9zaWduYWwoKQorYmVnaW4KK0RFQ0xBUkUgc29tZXRoaW5nIENPTkRJVElPTiBGT1IgU1FMU1RB VEUgIjAxMDAwIjsKK1NJR05BTCBzb21ldGhpbmcgU0VUIE1FU1NBR0VfVEVYVCA9CitfdXRmMzIg J2EnOworZW5kICQkCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK1dhcm5pbmdzOgorV2FybmluZwkx NzI3CWEKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRl c3Rfc2lnbmFsKCkKK2JlZ2luCitERUNMQVJFIHNvbWV0aGluZyBDT05ESVRJT04gRk9SIFNRTFNU QVRFICIwMTAwMCI7CitTSUdOQUwgc29tZXRoaW5nIFNFVCBNRVNTQUdFX1RFWFQgPQorX3V0ZjMy IFgnMDAwMDAwNDgwMDAwMDA0NTAwMDAwMDRDMDAwMDAwNEMwMDAwMDA0Ric7CitlbmQgJCQKK2Nh bGwgdGVzdF9zaWduYWwoKSAkJAorV2FybmluZ3M6CitXYXJuaW5nCTE3MjcJSEVMTE8KK2Ryb3Ag cHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkK K2JlZ2luCitkZWNsYXJlIGNvbnRpbnVlIGhhbmRsZXIgZm9yIHNxbGV4Y2VwdGlvbgorYmVnaW4K K2RlY2xhcmUgbXNnIHZhcmNoYXIoMTI4KTsKK3NldCBtc2c9IHJlcGVhdChfdXRmMzIgMHgwMDAx MDBjYywgMTI4KTsKK3Jlc2lnbmFsIHNldCBtZXNzYWdlX3RleHQgPSBtc2c7CitlbmQ7CitzaWdu YWwgc3Fsc3RhdGUgJzc3Nzc3JzsKK2VuZCAkJAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitFUlJP UiA3Nzc3Nzog77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9 77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9 77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9 77+977+977+977+977+977+977+977+977+977+9Citkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25h bCAkJAoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9zeW1saW5rLnJlc3VsdCcKLS0t IGEvbXlzcWwtdGVzdC9yL3N5bWxpbmsucmVzdWx0CTIwMDgtMDQtMTQgMTA6MTU6MDQgKzAwMDAK KysrIGIvbXlzcWwtdGVzdC9yL3N5bWxpbmsucmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAw MDAKQEAgLTgzLDcgKzgzLDcgQEAgZHJvcCBkYXRhYmFzZSBteXNxbHRlc3Q7CiBjcmVhdGUgdGFi bGUgdDEgKGEgaW50IG5vdCBudWxsKSBlbmdpbmU9bXlpc2FtOwogYWx0ZXIgdGFibGUgdDEgZGF0 YSBkaXJlY3Rvcnk9Ik1ZU1FMVEVTVF9WQVJESVIvdG1wIjsKIFdhcm5pbmdzOgotV2FybmluZwkw CURBVEEgRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVkCitXYXJuaW5nCTExMDUJREFUQSBESVJFQ1RP Ulkgb3B0aW9uIGlnbm9yZWQKIHNob3cgY3JlYXRlIHRhYmxlIHQxOwogVGFibGUJQ3JlYXRlIFRh YmxlCiB0MQlDUkVBVEUgVEFCTEUgYHQxYCAoCkBAIC05Miw3ICs5Miw3IEBAIHQxCUNSRUFURSBU QUJMRSBgdDFgICgKIGFsdGVyIHRhYmxlIHQxIGFkZCBiIGludDsKIGFsdGVyIHRhYmxlIHQxIGRh dGEgZGlyZWN0b3J5PSJNWVNRTFRFU1RfVkFSRElSL2xvZyI7CiBXYXJuaW5nczoKLVdhcm5pbmcJ MAlEQVRBIERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAorV2FybmluZwkxMTA1CURBVEEgRElSRUNU T1JZIG9wdGlvbiBpZ25vcmVkCiBzaG93IGNyZWF0ZSB0YWJsZSB0MTsKIFRhYmxlCUNyZWF0ZSBU YWJsZQogdDEJQ1JFQVRFIFRBQkxFIGB0MWAgKApAQCAtMTAxLDcgKzEwMSw3IEBAIHQxCUNSRUFU RSBUQUJMRSBgdDFgICgKICkgRU5HSU5FPU15SVNBTSBERUZBVUxUIENIQVJTRVQ9bGF0aW4xCiBh bHRlciB0YWJsZSB0MSBpbmRleCBkaXJlY3Rvcnk9Ik1ZU1FMVEVTVF9WQVJESVIvbG9nIjsKIFdh cm5pbmdzOgotV2FybmluZwkwCUlOREVYIERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAorV2Fybmlu ZwkxMTA1CUlOREVYIERJUkVDVE9SWSBvcHRpb24gaWdub3JlZAogc2hvdyBjcmVhdGUgdGFibGUg dDE7CiBUYWJsZQlDcmVhdGUgVGFibGUKIHQxCUNSRUFURSBUQUJMRSBgdDFgICgKQEAgLTE2OCw4 ICsxNjgsOCBAQCBFUlJPUiBIWTAwMDogQ2FuJ3QgY3JlYXRlL3dyaXRlIHRvIGZpbGUgCiBTRVQg QE9MRF9TUUxfTU9ERT1AQFNRTF9NT0RFLCBAQFNRTF9NT0RFPSdOT19ESVJfSU5fQ1JFQVRFJzsK IENSRUFURSBUQUJMRSB0MShhIElOVCkgREFUQSBESVJFQ1RPUlk9J01ZU1FMVEVTVF9WQVJESVIv dG1wJyBJTkRFWCBESVJFQ1RPUlk9J01ZU1FMVEVTVF9WQVJESVIvdG1wJzsKIFdhcm5pbmdzOgot V2FybmluZwkwCURBVEEgRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVkCi1XYXJuaW5nCTAJSU5ERVgg RElSRUNUT1JZIG9wdGlvbiBpZ25vcmVkCitXYXJuaW5nCTExMDUJREFUQSBESVJFQ1RPUlkgb3B0 aW9uIGlnbm9yZWQKK1dhcm5pbmcJMTEwNQlJTkRFWCBESVJFQ1RPUlkgb3B0aW9uIGlnbm9yZWQK IERST1AgVEFCTEUgdDE7CiBTRVQgQEBTUUxfTU9ERT1AT0xEX1NRTF9NT0RFOwogRW5kIG9mIDUu MSB0ZXN0cwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci93aW5kb3dzLnJlc3VsdCcK LS0tIGEvbXlzcWwtdGVzdC9yL3dpbmRvd3MucmVzdWx0CTIwMDctMTEtMTggMTM6MzM6MTIgKzAw MDAKKysrIGIvbXlzcWwtdGVzdC9yL3dpbmRvd3MucmVzdWx0CTIwMDgtMDgtMjcgMjI6MTQ6MDMg KzAwMDAKQEAgLTksOCArOSw4IEBAIGRyb3AgdGFibGUgbnU7CiBkcm9wIHRhYmxlIGlmIGV4aXN0 cyB0MTsKIENSRUFURSBUQUJMRSB0MSAoIGBJRGAgaW50KDYpICkgZGF0YSBkaXJlY3RvcnkgJ2M6 L3RtcC8nIGluZGV4IGRpcmVjdG9yeSAnYzovdG1wLycgZW5naW5lPU15SVNBTTsKIFdhcm5pbmdz OgotV2FybmluZwkwCURBVEEgRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVkCi1XYXJuaW5nCTAJSU5E RVggRElSRUNUT1JZIG9wdGlvbiBpZ25vcmVkCitXYXJuaW5nCTExMDUJREFUQSBESVJFQ1RPUlkg b3B0aW9uIGlnbm9yZWQKK1dhcm5pbmcJMTEwNQlJTkRFWCBESVJFQ1RPUlkgb3B0aW9uIGlnbm9y ZWQKIGRyb3AgdGFibGUgdDE7CiBDUkVBVEUgVEFCTEUgdDEgKGEgaW50LCBiIGludCk7CiBJTlNF UlQgSU5UTyB0MSBWQUxVRVMgKDEsMSk7Cgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC90L3Np Z25hbC50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3Qvc2lnbmFsLnRlc3QJMTk3MC0wMS0wMSAwMDow MDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3Qvc2lnbmFsLnRlc3QJMjAwOC0wOC0yNyAyMjox NDowMyArMDAwMApAQCAtMCwwICsxLDI1MDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA4IFN1biBN aWNyb3N5c3RlbXMsIEluYworIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisjCisj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisK KyMgVGVzdHMgZm9yIFNJR05BTCBhbmQgUkVTSUdOQUwKKworIworIyBQQVJUIDE6IHN5bnRheAor IworCisjCisjIFRlc3QgZXZlcnkgbmV3IHJlc2VydmVkIGFuZCBub24gcmVzZXJ2ZWQga2V5d29y ZHMKKyMKKworLS1kaXNhYmxlX3dhcm5pbmdzCitkcm9wIHRhYmxlIGlmIGV4aXN0cyBzaWduYWxf bm9uX3Jlc2VydmVkOworLS1lbmFibGVfd2FybmluZ3MKKworY3JlYXRlIHRhYmxlIHNpZ25hbF9u b25fcmVzZXJ2ZWQgKAorICBjbGFzc19vcmlnaW4gaW50LAorICBzdWJjbGFzc19vcmlnaW4gaW50 LAorICBjb25zdHJhaW50X2NhdGFsb2cgaW50LAorICBjb25zdHJhaW50X3NjaGVtYSBpbnQsCisg IGNvbnN0cmFpbnRfbmFtZSBpbnQsCisgIGNhdGFsb2dfbmFtZSBpbnQsCisgIHNjaGVtYV9uYW1l IGludCwKKyAgdGFibGVfbmFtZSBpbnQsCisgIGNvbHVtbl9uYW1lIGludCwKKyAgY3Vyc29yX25h bWUgaW50LAorICBtZXNzYWdlX3RleHQgaW50LAorICBzcWxjb2RlIGludAorKTsKKworZHJvcCB0 YWJsZSBzaWduYWxfbm9uX3Jlc2VydmVkOworCistLWRpc2FibGVfd2FybmluZ3MKK2Ryb3AgdGFi bGUgaWYgZXhpc3RzIGRpYWdfbm9uX3Jlc2VydmVkOworLS1lbmFibGVfd2FybmluZ3MKKworY3Jl YXRlIHRhYmxlIGRpYWdfbm9uX3Jlc2VydmVkICgKKyAgZGlhZ25vc3RpY3MgaW50LAorICBjdXJy ZW50IGludCwKKyAgc3RhY2tlZCBpbnQsCisgIGV4Y2VwdGlvbiBpbnQKKyk7CisKK2Ryb3AgdGFi bGUgZGlhZ19ub25fcmVzZXJ2ZWQ7CisKKy0tZGlzYWJsZV93YXJuaW5ncworZHJvcCB0YWJsZSBp ZiBleGlzdHMgZGlhZ19jb25kX25vbl9yZXNlcnZlZDsKKy0tZW5hYmxlX3dhcm5pbmdzCisKK2Ny ZWF0ZSB0YWJsZSBkaWFnX2NvbmRfbm9uX3Jlc2VydmVkICgKKyAgY29uZGl0aW9uX2lkZW50aWZp ZXIgaW50LAorICBjb25kaXRpb25fbnVtYmVyIGludCwKKyAgY29uZGl0aW9uX25hbWUgaW50LAor ICBjb25uZWN0aW9uX25hbWUgaW50LAorICBtZXNzYWdlX2xlbmd0aCBpbnQsCisgIG1lc3NhZ2Vf b2N0ZXRfbGVuZ3RoIGludCwKKyAgcGFyYW1ldGVyX21vZGUgaW50LAorICBwYXJhbWV0ZXJfbmFt ZSBpbnQsCisgIHBhcmFtZXRlcl9vcmRpbmFsX3Bvc2l0aW9uIGludCwKKyAgcmV0dXJuZWRfc3Fs c3RhdGUgaW50LAorICByb3V0aW5lX2NhdGFsb2cgaW50LAorICByb3V0aW5lX25hbWUgaW50LAor ICByb3V0aW5lX3NjaGVtYSBpbnQsCisgIHNlcnZlcl9uYW1lIGludCwKKyAgc3BlY2lmaWNfbmFt ZSBpbnQsCisgIHRyaWdnZXJfY2F0YWxvZyBpbnQsCisgIHRyaWdnZXJfbmFtZSBpbnQsCisgIHRy aWdnZXJfc2NoZW1hIGludAorKTsKKworZHJvcCB0YWJsZSBkaWFnX2NvbmRfbm9uX3Jlc2VydmVk OworCistLWRpc2FibGVfd2FybmluZ3MKK2Ryb3AgdGFibGUgaWYgZXhpc3RzIGRpYWdfc3RtdF9u b25fcmVzZXJ2ZWQ7CistLWVuYWJsZV93YXJuaW5ncworCitjcmVhdGUgdGFibGUgZGlhZ19zdG10 X25vbl9yZXNlcnZlZCAoCisgIG51bWJlciBpbnQsCisgIG1vcmUgaW50LAorICBjb21tYW5kX2Z1 bmN0aW9uIGludCwKKyAgY29tbWFuZF9mdW5jdGlvbl9jb2RlIGludCwKKyAgZHluYW1pY19mdW5j dGlvbiBpbnQsCisgIGR5bmFtaWNfZnVuY3Rpb25fY29kZSBpbnQsCisgIHJvd19jb3VudCBpbnQs CisgIHRyYW5zYWN0aW9uc19jb21taXR0ZWQgaW50LAorICB0cmFuc2FjdGlvbnNfcm9sbGVkX2Jh Y2sgaW50LAorICB0cmFuc2FjdGlvbl9hY3RpdmUgaW50CispOworCitkcm9wIHRhYmxlIGRpYWdf c3RtdF9ub25fcmVzZXJ2ZWQ7CisKKy0tZGlzYWJsZV93YXJuaW5ncworZHJvcCB0YWJsZSBpZiBl eGlzdHMgdGVzdF9yZXNlcnZlZDsKKy0tZW5hYmxlX3dhcm5pbmdzCisKKy0tZXJyb3IgRVJfUEFS U0VfRVJST1IKK2NyZWF0ZSB0YWJsZSB0ZXN0X3Jlc2VydmVkIChzaWduYWwgaW50KTsKKworLS1l cnJvciBFUl9QQVJTRV9FUlJPUgorY3JlYXRlIHRhYmxlIHRlc3RfcmVzZXJ2ZWQgKHJlc2lnbmFs IGludCk7CisKKy0tZXJyb3IgRVJfUEFSU0VfRVJST1IKK2NyZWF0ZSB0YWJsZSB0ZXN0X3Jlc2Vy dmVkIChjb25kaXRpb24gaW50KTsKKworIworIyBUZXN0IHRoZSBTSUdOQUwgc3ludGF4CisjCisK Ky0tZGlzYWJsZV93YXJuaW5ncworZHJvcCBwcm9jZWR1cmUgaWYgZXhpc3RzIHRlc3RfaW52YWxp ZDsKK2Ryb3AgcHJvY2VkdXJlIGlmIGV4aXN0cyB0ZXN0X3NpZ25hbF9zeW50YXg7Citkcm9wIGZ1 bmN0aW9uIGlmIGV4aXN0cyB0ZXN0X3NpZ25hbF9mdW5jOworLS1lbmFibGVfd2FybmluZ3MKKwor ZGVsaW1pdGVyICQkOworCistLWVycm9yIEVSX1BBUlNFX0VSUk9SCitjcmVhdGUgcHJvY2VkdXJl IHRlc3RfaW52YWxpZCgpCitiZWdpbgorICBTSUdOQUw7CitlbmQgJCQKKworLS1lcnJvciBFUl9T UF9DT05EX01JU01BVENICitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgor ICBTSUdOQUwgZm9vOworZW5kICQkCisKKy0tZXJyb3IgRVJfU0lHTkFMX0JBRF9DT05ESVRJT05f VFlQRQorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgREVDTEFSRSBm b28gQ09ORElUSU9OIEZPUiAxMjM0OworICBTSUdOQUwgZm9vOworZW5kICQkCisKK2NyZWF0ZSBw cm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4KCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJ VElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAgU0lHTkFMIGZvbzsKK2VuZCAkJAorZHJvcCBw cm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9z aWduYWxfc3ludGF4KCkKK2JlZ2luCisgIFNJR05BTCBTUUxTVEFURSAnMjMwMDAnOworZW5kICQk Citkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgU0lHTkFMIFNRTFNUQVRFIFZBTFVFICcy MzAwMCc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCAkJAorCitj cmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBERUNMQVJFIGZv byBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CisgIFNJR05BTCBmb28gU0VUIENMQVNT X09SSUdJTiA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50 YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAg REVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBTSUdOQUwgZm9v IFNFVCBTVUJDTEFTU19PUklHSU4gPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVz dF9zaWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4 KCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsK KyAgU0lHTkFMIGZvbyBTRVQgQ09OU1RSQUlOVF9DQVRBTE9HID0gJ2Zvbyc7CitlbmQgJCQKK2Ry b3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRl c3Rfc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNR TFNUQVRFICcxMjM0NSc7CisgIFNJR05BTCBmb28gU0VUIENPTlNUUkFJTlRfU0NIRU1BID0gJ2Zv byc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCAkJAorCitjcmVh dGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBD T05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CisgIFNJR05BTCBmb28gU0VUIENPTlNUUkFJ TlRfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50 YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAg REVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBTSUdOQUwgZm9v IFNFVCBDQVRBTE9HX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9z aWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4KCkK K2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAg U0lHTkFMIGZvbyBTRVQgU0NIRU1BX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1 cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWxf c3ludGF4KCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEy MzQ1JzsKKyAgU0lHTkFMIGZvbyBTRVQgVEFCTEVfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9w IHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0 X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxT VEFURSAnMTIzNDUnOworICBTSUdOQUwgZm9vIFNFVCBDT0xVTU5fTkFNRSA9ICdmb28nOworZW5k ICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2Nl ZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgREVDTEFSRSBmb28gQ09ORElUSU9O IEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBTSUdOQUwgZm9vIFNFVCBDVVJTT1JfTkFNRSA9ICdm b28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXggJCQKKworY3Jl YXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgREVDTEFSRSBmb28g Q09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBTSUdOQUwgZm9vIFNFVCBNRVNTQUdF X1RFWFQgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4 ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4KCkKK2JlZ2luCisgIERF Q0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAgU0lHTkFMIGZvbyBT RVQgTVlTUUxfRVJSTk8gPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWdu YWxfc3ludGF4ICQkCisKKy0tZXJyb3IgRVJfRFVQX1NJR05BTF9TRVQKK2NyZWF0ZSBwcm9jZWR1 cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FM U1RBVEUgJzEyMzQ1JzsKKyAgU0lHTkFMIGZvbyBTRVQgQ0xBU1NfT1JJR0lOID0gJ2ZvbycsIENM QVNTX09SSUdJTiA9ICdiYXInOworZW5kICQkCisKKy0tZXJyb3IgRVJfRFVQX1NJR05BTF9TRVQK K2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENP TkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAgU0lHTkFMIGZvbyBTRVQgTUVTU0FHRV9U RVhUID0gJ2ZvbycsIE1FU1NBR0VfVEVYVCA9ICdiYXInOworZW5kICQkCisKKy0tZXJyb3IgRVJf RFVQX1NJR05BTF9TRVQKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisg IERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAgU0lHTkFMIGZv byBTRVQgTVlTUUxfRVJSTk8gPSAnZm9vJywgTVlTUUxfRVJSTk8gPSAnYmFyJzsKK2VuZCAkJAor CitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBERUNMQVJF IGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CisgIFNJR05BTCBmb28gU0VUCisg ICAgQ0xBU1NfT1JJR0lOID0gJ2ZvbycsCisgICAgU1VCQ0xBU1NfT1JJR0lOID0gJ2ZvbycsCisg ICAgQ09OU1RSQUlOVF9DQVRBTE9HID0gJ2ZvbycsCisgICAgQ09OU1RSQUlOVF9TQ0hFTUEgPSAn Zm9vJywKKyAgICBDT05TVFJBSU5UX05BTUUgPSAnZm9vJywKKyAgICBDQVRBTE9HX05BTUUgPSAn Zm9vJywKKyAgICBTQ0hFTUFfTkFNRSA9ICdmb28nLAorICAgIFRBQkxFX05BTUUgPSAnZm9vJywK KyAgICBDT0xVTU5fTkFNRSA9ICdmb28nLAorICAgIENVUlNPUl9OQU1FID0gJ2ZvbycsCisgICAg TUVTU0FHRV9URVhUID0gJ2ZvbycsCisgICAgTVlTUUxfRVJSTk8gPSAnZm9vJzsKK2VuZCAkJAor ZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWxfc3ludGF4ICQkCisKKy0tZXJyb3IgRVJfU1BfQkFE X1NRTFNUQVRFCitTSUdOQUwgU1FMU1RBVEUgJzAwMDAwJyAkJAorCistLWVycm9yIEVSX1NQX0JB RF9TUUxTVEFURQorU0lHTkFMIFNRTFNUQVRFICcwMDAwMScgJCQKKworLS1lcnJvciBFUl9TUF9C QURfU1FMU1RBVEUKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisgIFNJ R05BTCBTUUxTVEFURSAnMDAwMDAnOworZW5kICQkCisKKy0tZXJyb3IgRVJfU1BfQkFEX1NRTFNU QVRFCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorICBTSUdOQUwgU1FM U1RBVEUgJzAwMDAxJzsKK2VuZCAkJAorCisKKyMKKyMgVGVzdCBjb25kaXRpb25zIGluZm9ybWF0 aW9uIHRoYXQgU0lHTkFMIGNhbiBub3Qgc2V0CisjCisKKy0tZXJyb3IgRVJfUEFSU0VfRVJST1IK K2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisgIFNJR05BTCBTUUxTVEFU RSAnMTIzNDUnIFNFVCBibGFfYmxhID0gJ2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBFUl9QQVJT RV9FUlJPUgorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgU0lHTkFM IFNRTFNUQVRFICcxMjM0NScgU0VUIENPTkRJVElPTl9JREVOVElGSUVSID0gJ2Zvbyc7CitlbmQg JCQKKworLS1lcnJvciBFUl9QQVJTRV9FUlJPUgorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFs aWQoKQorYmVnaW4KKyAgU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VUIENPTkRJVElPTl9OVU1C RVIgPSAnZm9vJzsKK2VuZCAkJAorCistLWVycm9yIEVSX1BBUlNFX0VSUk9SCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorICBTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1JyBT RVQgQ09OTkVDVElPTl9OQU1FID0gJ2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBFUl9QQVJTRV9F UlJPUgorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgU0lHTkFMIFNR TFNUQVRFICcxMjM0NScgU0VUIE1FU1NBR0VfTEVOR1RIID0gJ2Zvbyc7CitlbmQgJCQKKworLS1l cnJvciBFUl9QQVJTRV9FUlJPUgorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVn aW4KKyAgU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VUIE1FU1NBR0VfT0NURVRfTEVOR1RIID0g J2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBFUl9QQVJTRV9FUlJPUgorY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VUIFBB UkFNRVRFUl9NT0RFID0gJ2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBFUl9QQVJTRV9FUlJPUgor Y3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgU0lHTkFMIFNRTFNUQVRF ICcxMjM0NScgU0VUIFBBUkFNRVRFUl9OQU1FID0gJ2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBF Ul9QQVJTRV9FUlJPUgorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAg U0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VUIFBBUkFNRVRFUl9PUkRJTkFMX1BPU0lUSU9OID0g J2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBFUl9QQVJTRV9FUlJPUgorY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VUIFJF VFVSTkVEX1NRTFNUQVRFID0gJ2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBFUl9QQVJTRV9FUlJP UgorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgU0lHTkFMIFNRTFNU QVRFICcxMjM0NScgU0VUIFJPVVRJTkVfQ0FUQUxPRyA9ICdmb28nOworZW5kICQkCisKKy0tZXJy b3IgRVJfUEFSU0VfRVJST1IKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2lu CisgIFNJR05BTCBTUUxTVEFURSAnMTIzNDUnIFNFVCBST1VUSU5FX05BTUUgPSAnZm9vJzsKK2Vu ZCAkJAorCistLWVycm9yIEVSX1BBUlNFX0VSUk9SCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52 YWxpZCgpCitiZWdpbgorICBTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1JyBTRVQgUk9VVElORV9TQ0hF TUEgPSAnZm9vJzsKK2VuZCAkJAorCistLWVycm9yIEVSX1BBUlNFX0VSUk9SCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorICBTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1JyBT RVQgU0VSVkVSX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorCistLWVycm9yIEVSX1BBUlNFX0VSUk9S CitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxpZCgpCitiZWdpbgorICBTSUdOQUwgU1FMU1RB VEUgJzEyMzQ1JyBTRVQgU1BFQ0lGSUNfTkFNRSA9ICdmb28nOworZW5kICQkCisKKy0tZXJyb3Ig RVJfUEFSU0VfRVJST1IKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisg IFNJR05BTCBTUUxTVEFURSAnMTIzNDUnIFNFVCBUUklHR0VSX0NBVEFMT0cgPSAnZm9vJzsKK2Vu ZCAkJAorCistLWVycm9yIEVSX1BBUlNFX0VSUk9SCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52 YWxpZCgpCitiZWdpbgorICBTSUdOQUwgU1FMU1RBVEUgJzEyMzQ1JyBTRVQgVFJJR0dFUl9OQU1F ID0gJ2Zvbyc7CitlbmQgJCQKKworLS1lcnJvciBFUl9QQVJTRV9FUlJPUgorY3JlYXRlIHByb2Nl ZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgU0lHTkFMIFNRTFNUQVRFICcxMjM0NScgU0VU IFRSSUdHRVJfU0NIRU1BID0gJ2Zvbyc7CitlbmQgJCQKKworZGVsaW1pdGVyIDskJAorCisjCisj IFRlc3QgdGhlIFJFU0lHTkFMIHN5bnRheAorIworCistLWRpc2FibGVfd2FybmluZ3MKK2Ryb3Ag cHJvY2VkdXJlIGlmIGV4aXN0cyB0ZXN0X2ludmFsaWQ7Citkcm9wIHByb2NlZHVyZSBpZiBleGlz dHMgdGVzdF9yZXNpZ25hbF9zeW50YXg7CistLWVuYWJsZV93YXJuaW5ncworCitkZWxpbWl0ZXIg JCQ7CisKKy0tZXJyb3IgRVJfU1BfQ09ORF9NSVNNQVRDSAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0 X2ludmFsaWQoKQorYmVnaW4KKyAgUkVTSUdOQUwgZm9vOworZW5kICQkCisKK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgUkVTSUdOQUw7CitlbmQgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCisKKy0tZXJyb3IgRVJfU0lH TkFMX0JBRF9DT05ESVRJT05fVFlQRQorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQor YmVnaW4KKyAgREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiAxMjM0OworICBSRVNJR05BTCBmb287 CitlbmQgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdp bgorICBERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CisgIFJFU0lH TkFMIGZvbzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQK KworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBSRVNJ R05BTCBTUUxTVEFURSAnMjMwMDAnOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2ln bmFsX3N5bnRheCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkK K2JlZ2luCisgIFJFU0lHTkFMIFNRTFNUQVRFIFZBTFVFICcyMzAwMCc7CitlbmQgJCQKK2Ryb3Ag cHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVz dF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgUkVTSUdOQUwgU0VUIENMQVNTX09SSUdJTiA9 ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAor CitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCisgIERFQ0xB UkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAgUkVTSUdOQUwgZm9vIFNF VCBDTEFTU19PUklHSU4gPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNp Z25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgp CitiZWdpbgorICBSRVNJR05BTCBTRVQgU1VCQ0xBU1NfT1JJR0lOID0gJ2Zvbyc7CitlbmQgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1 cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgREVDTEFSRSBmb28gQ09ORElUSU9O IEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBSRVNJR05BTCBmb28gU0VUIFNVQkNMQVNTX09SSUdJ TiA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAk JAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCisgIFJF U0lHTkFMIFNFVCBDT05TVFJBSU5UX0NBVEFMT0cgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9j ZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jl c2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNU QVRFICcxMjM0NSc7CisgIFJFU0lHTkFMIGZvbyBTRVQgQ09OU1RSQUlOVF9DQVRBTE9HID0gJ2Zv byc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCisKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgUkVTSUdOQUwg U0VUIENPTlNUUkFJTlRfU0NIRU1BID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRl c3RfcmVzaWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9z eW50YXgoKQorYmVnaW4KKyAgREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIz NDUnOworICBSRVNJR05BTCBmb28gU0VUIENPTlNUUkFJTlRfU0NIRU1BID0gJ2Zvbyc7CitlbmQg JCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCisKK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgUkVTSUdOQUwgU0VUIENPTlNU UkFJTlRfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFs X3N5bnRheCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2Jl Z2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAgUkVT SUdOQUwgZm9vIFNFVCBDT05TVFJBSU5UX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9j ZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jl c2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBSRVNJR05BTCBTRVQgQ0FUQUxPR19OQU1FID0gJ2Zv byc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4ICQkCisKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAgREVDTEFSRSBm b28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBSRVNJR05BTCBmb28gU0VUIENB VEFMT0dfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFs X3N5bnRheCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2Jl Z2luCisgIFJFU0lHTkFMIFNFVCBTQ0hFTUFfTkFNRSA9ICdmb28nOworZW5kICQkCitkcm9wIHBy b2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rf cmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FM U1RBVEUgJzEyMzQ1JzsKKyAgUkVTSUdOQUwgZm9vIFNFVCBTQ0hFTUFfTkFNRSA9ICdmb28nOwor ZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorCitjcmVhdGUg cHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCisgIFJFU0lHTkFMIFNFVCBU QUJMRV9OQU1FID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxf c3ludGF4ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVn aW4KKyAgREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBSRVNJ R05BTCBmb28gU0VUIFRBQkxFX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUg dGVzdF9yZXNpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFs X3N5bnRheCgpCitiZWdpbgorICBSRVNJR05BTCBTRVQgQ09MVU1OX05BTUUgPSAnZm9vJzsKK2Vu ZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBDT05E SVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CisgIFJFU0lHTkFMIGZvbyBTRVQgQ09MVU1OX05B TUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgg JCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBS RVNJR05BTCBTRVQgQ1VSU09SX05BTUUgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUg dGVzdF9yZXNpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFs X3N5bnRheCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcx MjM0NSc7CisgIFJFU0lHTkFMIGZvbyBTRVQgQ1VSU09SX05BTUUgPSAnZm9vJzsKK2VuZCAkJAor ZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXggJCQKKworY3JlYXRlIHByb2NlZHVy ZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBSRVNJR05BTCBTRVQgTUVTU0FHRV9U RVhUID0gJ2Zvbyc7CitlbmQgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3ludGF4 ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9zeW50YXgoKQorYmVnaW4KKyAg REVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBSRVNJR05BTCBm b28gU0VUIE1FU1NBR0VfVEVYVCA9ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0 X3Jlc2lnbmFsX3N5bnRheCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWxfc3lu dGF4KCkKK2JlZ2luCisgIFJFU0lHTkFMIFNFVCBNWVNRTF9FUlJOTyA9ICdmb28nOworZW5kICQk Citkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAorCitjcmVhdGUgcHJvY2Vk dXJlIHRlc3RfcmVzaWduYWxfc3ludGF4KCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElP TiBGT1IgU1FMU1RBVEUgJzEyMzQ1JzsKKyAgUkVTSUdOQUwgZm9vIFNFVCBNWVNRTF9FUlJOTyA9 ICdmb28nOworZW5kICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCAkJAor CistLWVycm9yIEVSX0RVUF9TSUdOQUxfU0VUCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfaW52YWxp ZCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7 CisgIFJFU0lHTkFMIGZvbyBTRVQgQ0xBU1NfT1JJR0lOID0gJ2ZvbycsIENMQVNTX09SSUdJTiA9 ICdiYXInOworZW5kICQkCisKKy0tZXJyb3IgRVJfRFVQX1NJR05BTF9TRVQKK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1Ig U1FMU1RBVEUgJzEyMzQ1JzsKKyAgUkVTSUdOQUwgZm9vIFNFVCBNRVNTQUdFX1RFWFQgPSAnZm9v JywgTUVTU0FHRV9URVhUID0gJ2Jhcic7CitlbmQgJCQKKworLS1lcnJvciBFUl9EVVBfU0lHTkFM X1NFVAorY3JlYXRlIHByb2NlZHVyZSB0ZXN0X2ludmFsaWQoKQorYmVnaW4KKyAgREVDTEFSRSBm b28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnMTIzNDUnOworICBSRVNJR05BTCBmb28gU0VUIE1Z U1FMX0VSUk5PID0gJ2ZvbycsIE1ZU1FMX0VSUk5PID0gJ2Jhcic7CitlbmQgJCQKKworY3JlYXRl IHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsX3N5bnRheCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBD T05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CisgIFJFU0lHTkFMIGZvbyBTRVQKKyAgICBD TEFTU19PUklHSU4gPSAnZm9vJywKKyAgICBTVUJDTEFTU19PUklHSU4gPSAnZm9vJywKKyAgICBD T05TVFJBSU5UX0NBVEFMT0cgPSAnZm9vJywKKyAgICBDT05TVFJBSU5UX1NDSEVNQSA9ICdmb28n LAorICAgIENPTlNUUkFJTlRfTkFNRSA9ICdmb28nLAorICAgIENBVEFMT0dfTkFNRSA9ICdmb28n LAorICAgIFNDSEVNQV9OQU1FID0gJ2ZvbycsCisgICAgVEFCTEVfTkFNRSA9ICdmb28nLAorICAg IENPTFVNTl9OQU1FID0gJ2ZvbycsCisgICAgQ1VSU09SX05BTUUgPSAnZm9vJywKKyAgICBNRVNT QUdFX1RFWFQgPSAnZm9vJzsKK2VuZCAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbF9z eW50YXggJCQKKworLS1lcnJvciBFUl9TUF9CQURfU1FMU1RBVEUKK2NyZWF0ZSBwcm9jZWR1cmUg dGVzdF9pbnZhbGlkKCkKK2JlZ2luCisgIFJFU0lHTkFMIFNRTFNUQVRFICcwMDAwMCc7CitlbmQg JCQKKworZGVsaW1pdGVyIDskJAorCisjCisjIFBBUlQgMjogbm9uIHByZXBhcmFibGUgc3RhdGVt ZW50cworIworCistLWVycm9yIEVSX1VOU1VQUE9SVEVEX1BTCitwcmVwYXJlIHN0bXQgZnJvbSAn U0lHTkFMIFNRTFNUQVRFIFwnMjMwMDBcJyc7CisKKy0tZXJyb3IgRVJfVU5TVVBQT1JURURfUFMK K3ByZXBhcmUgc3RtdCBmcm9tICdSRVNJR05BTCBTUUxTVEFURSBcJzIzMDAwXCcnOworCisjCisj IFBBUlQgMzogcnVudGltZSBleGVjdXRpb24KKyMKKworLS1kaXNhYmxlX3dhcm5pbmdzCitkcm9w IHByb2NlZHVyZSBpZiBleGlzdHMgdGVzdF9zaWduYWw7Citkcm9wIHByb2NlZHVyZSBpZiBleGlz dHMgdGVzdF9yZXNpZ25hbDsKK2Ryb3AgdGFibGUgaWYgZXhpc3RzIHRfd2FybjsKK2Ryb3AgdGFi bGUgaWYgZXhpc3RzIHRfY3Vyc29yOworLS1lbmFibGVfd2FybmluZ3MKKworIyBIZWxwZXIgdGFi bGVzCitjcmVhdGUgdGFibGUgdF93YXJuKGEgaW50ZWdlcigyKSk7CitjcmVhdGUgdGFibGUgdF9j dXJzb3IoYSBpbnRlZ2VyKTsKKworIworIyBTSUdOQUwgY2FuIGFsc28gYXBwZWFyIGluIGEgcXVl cnkKKyMKKworLS1lcnJvciBFUl9TUF9DT05EX01JU01BVENICitTSUdOQUwgZm9vOworCitTSUdO QUwgU1FMU1RBVEUgJzAxMDAwJzsKKworLS1lcnJvciBFUl9TSUdOQUxfTk9UX0ZPVU5ECitTSUdO QUwgU1FMU1RBVEUgJzAyMDAwJzsKKworLS1lcnJvciBFUl9TSUdOQUxfRVhDRVBUSU9OCitTSUdO QUwgU1FMU1RBVEUgJzIzMDAwJzsKKworLS1lcnJvciBFUl9TSUdOQUxfRVhDRVBUSU9OCitTSUdO QUwgU1FMU1RBVEUgVkFMVUUgJzIzMDAwJzsKKworLS1lcnJvciBFUl9XUk9OR19WQUxVRV9GT1Jf VkFSCitTSUdOQUwgU1FMU1RBVEUgJ0hZMDAwJyBTRVQgTVlTUUxfRVJSTk8gPSA2NTUzNjsKKwor LS1lcnJvciBFUl9XUk9OR19WQUxVRV9GT1JfVkFSCitTSUdOQUwgU1FMU1RBVEUgJ0hZMDAwJyBT RVQgTVlTUUxfRVJSTk8gPSA5OTk5OTsKKworLS1lcnJvciBFUl9XUk9OR19WQUxVRV9GT1JfVkFS CitTSUdOQUwgU1FMU1RBVEUgJ0hZMDAwJyBTRVQgTVlTUUxfRVJSTk8gPSA0Mjk0OTY3Mjk1Owor CistLWVycm9yIEVSX1dST05HX1ZBTFVFX0ZPUl9WQVIKK1NJR05BTCBTUUxTVEFURSAnSFkwMDAn IFNFVCBNWVNRTF9FUlJOTyA9IDA7CisKKy0tZXJyb3IgRVJfUEFSU0VfRVJST1IKK1NJR05BTCBT UUxTVEFURSAnSFkwMDAnIFNFVCBNWVNRTF9FUlJOTyA9IC0xOworCistLWVycm9yIDY1NTM1CitT SUdOQUwgU1FMU1RBVEUgJ0hZMDAwJyBTRVQgTVlTUUxfRVJSTk8gPSA2NTUzNTsKKworIworIyBS RVNJR05BTCBjYW4gYWxzbyBhcHBlYXIgaW4gYSBxdWVyeQorIworCistLWVycm9yIEVSX1JFU0lH TkFMX05PX0hBTkRMRVIKK1JFU0lHTkFMOworCistLWVycm9yIEVSX1NQX0NPTkRfTUlTTUFUQ0gK K1JFU0lHTkFMIGZvbzsKKworLS1lcnJvciBFUl9SRVNJR05BTF9OT19IQU5ETEVSCitSRVNJR05B TCBTUUxTVEFURSAnMTIzNDUnOworCistLWVycm9yIEVSX1JFU0lHTkFMX05PX0hBTkRMRVIKK1JF U0lHTkFMIFNRTFNUQVRFIFZBTFVFICcxMjM0NSc7CisKKyMKKyMgRGlmZmVyZW50IGtpbmQgb2Yg U0lHTkFMIGNvbmRpdGlvbnMKKyMKKworZGVsaW1pdGVyICQkOworCitjcmVhdGUgcHJvY2VkdXJl IHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgICMgbWF4IHJhbmdlCisgIERFQ0xBUkUgZm9vIENPTkRJ VElPTiBGT1IgU1FMU1RBVEUgJ0FBQkJCJzsKKyAgU0lHTkFMIGZvbyBTRVQgTVlTUUxfRVJSTk8g PSA2NTUzNTsKK2VuZCAkJAorCistLWVycm9yIDY1NTM1CitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9z aWduYWwoKQorYmVnaW4KKyAgIyBtYXggcmFuZ2UKKyAgREVDTEFSRSBmb28gQ09ORElUSU9OIEZP UiBTUUxTVEFURSAnQUFCQkInOworICBTSUdOQUwgZm9vIFNFVCBNWVNRTF9FUlJOTyA9IDY1NTM2 OworZW5kICQkCisKKy0tZXJyb3IgRVJfV1JPTkdfVkFMVUVfRk9SX1ZBUgorY2FsbCB0ZXN0X3Np Z25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2Vk dXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgICMgRXJyb3IKKyAgREVDTEFSRSBmb28gQ09ORElU SU9OIEZPUiBTUUxTVEFURSAnOTk5OTknOworICBTSUdOQUwgZm9vIFNFVCBNWVNRTF9FUlJOTyA9 IDk5OTk7CitlbmQgJCQKKworLS1lcnJvciA5OTk5CitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ry b3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWdu YWwoKQorYmVnaW4KKyAgIyB3YXJuaW5nCisgIERFQ0xBUkUgdG9vX2Zld19yZWNvcmRzIENPTkRJ VElPTiBGT1IgU1FMU1RBVEUgJzAxMDAwJzsKKyAgU0lHTkFMIHRvb19mZXdfcmVjb3JkcyBTRVQg TVlTUUxfRVJSTk8gPSAxMjYxOworZW5kICQkCisKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJv cCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25h bCgpCitiZWdpbgorICAjIE5vdCBmb3VuZAorICBERUNMQVJFIHNwX2ZldGNoX25vX2RhdGEgQ09O RElUSU9OIEZPUiBTUUxTVEFURSAnMDIwMDAnOworICBTSUdOQUwgc3BfZmV0Y2hfbm9fZGF0YSBT RVQgTVlTUUxfRVJSTk8gPSAxMzI5OworZW5kICQkCisKKy0tZXJyb3IgRVJfU1BfRkVUQ0hfTk9f REFUQQorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAk JAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgICMgRXJyb3IKKyAg REVDTEFSRSBzcF9jdXJzb3JfYWxyZWFkeV9vcGVuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzI0 MDAwJzsKKyAgU0lHTkFMIHNwX2N1cnNvcl9hbHJlYWR5X29wZW4gU0VUIE1ZU1FMX0VSUk5PID0g MTMyNTsKK2VuZCAkJAorCistLWVycm9yIEVSX1NQX0NVUlNPUl9BTFJFQURZX09QRU4KK2NhbGwg dGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRl IHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICAjIFNldmVyZSBlcnJvcgorICBERUNM QVJFIGxvY2tfZGVhZGxvY2sgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnNDAwMDEnOworICBTSUdO QUwgbG9ja19kZWFkbG9jayBTRVQgTVlTUUxfRVJSTk8gPSAxMjEzOworZW5kICQkCisKKy0tZXJy b3IgRVJfTE9DS19ERUFETE9DSworY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVy ZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2lu CisgICMgVW5rbm93biAtPiBlcnJvcgorICBERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNU QVRFICI5OTk5OSI7CisgIFNJR05BTCBmb287CitlbmQgJCQKKworLS1lcnJvciBFUl9TSUdOQUxf RVhDRVBUSU9OCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2ln bmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgIyB3YXJu aW5nLCBubyBzdWJjbGFzcworICBERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAi MDEwMDAiOworICBTSUdOQUwgd2FybjsKK2VuZCAkJAorCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9z aWduYWwoKQorYmVnaW4KKyAgIyB3YXJuaW5nLCB3aXRoIHN1YmNsYXNzCisgIERFQ0xBUkUgd2Fy biBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMTEyMyI7CisgIFNJR05BTCB3YXJuOworZW5kICQk CisKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQK KworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICAjIE5vdCBmb3VuZCwg bm8gc3ViY2xhc3MKKyAgREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAi MDIwMDAiOworICBTSUdOQUwgbm90X2ZvdW5kOworZW5kICQkCisKKy0tZXJyb3IgRVJfU0lHTkFM X05PVF9GT1VORAorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Np Z25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgICMgTm90 IGZvdW5kLCB3aXRoIHN1YmNsYXNzCisgIERFQ0xBUkUgbm90X2ZvdW5kIENPTkRJVElPTiBGT1Ig U1FMU1RBVEUgIjAyWFhYIjsKKyAgU0lHTkFMIG5vdF9mb3VuZDsKK2VuZCAkJAorCistLWVycm9y IEVSX1NJR05BTF9OT1RfRk9VTkQKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1 cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdp bgorICAjIEVycm9yLCBubyBzdWJjbGFzcworICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1Ig U1FMU1RBVEUgIjEyMDAwIjsKKyAgU0lHTkFMIGVycm9yOworZW5kICQkCisKKy0tZXJyb3IgRVJf U0lHTkFMX0VYQ0VQVElPTgorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0 ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisg ICMgRXJyb3IsIHdpdGggc3ViY2xhc3MKKyAgREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNR TFNUQVRFICIxMkFCQyI7CisgIFNJR05BTCBlcnJvcjsKK2VuZCAkJAorCistLWVycm9yIEVSX1NJ R05BTF9FWENFUFRJT04KK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVz dF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICAj IFNldmVyZSBlcnJvciwgbm8gc3ViY2xhc3MKKyAgREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9S IFNRTFNUQVRFICI0MDAwMCI7CisgIFNJR05BTCBlcnJvcjsKK2VuZCAkJAorCistLWVycm9yIEVS X1NJR05BTF9FWENFUFRJT04KK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUg dGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgor ICAjIFNldmVyZSBlcnJvciwgd2l0aCBzdWJjbGFzcworICBERUNMQVJFIGVycm9yIENPTkRJVElP TiBGT1IgU1FMU1RBVEUgIjQwMDAxIjsKKyAgU0lHTkFMIGVycm9yOworZW5kICQkCisKKy0tZXJy b3IgRVJfU0lHTkFMX0VYQ0VQVElPTgorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2Nl ZHVyZSB0ZXN0X3NpZ25hbCAkJAorCisjIFRlc3QgdGhlIHNjb3BlIG9mIGNvbmRpdGlvbgorCitj cmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJ VElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKKyAgYmVnaW4KKyAgICBERUNMQVJFIGZvbyBDT05E SVRJT04gRk9SIDg4ODg7CisgIGVuZDsKKyAgU0lHTkFMIGZvbyBTRVQgTVlTUUxfRVJSTk89OTk5 OTsgLyogb3V0ZXIgKi8KK2VuZCAkJAorCistLWVycm9yIDk5OTkKK2NhbGwgdGVzdF9zaWduYWwo KSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0 ZXN0X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIDk5OTk7Cisg IGJlZ2luCisgICAgREVDTEFSRSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnODg4ODgnOwor ICAgIFNJR05BTCBmb28gU0VUIE1ZU1FMX0VSUk5PPTg4ODg7IC8qIGlubmVyICovCisgIGVuZDsK K2VuZCAkJAorCistLWVycm9yIDg4ODgKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9j ZWR1cmUgdGVzdF9zaWduYWwgJCQKKworIyBUZXN0IFNFVCBNWVNRTF9FUlJOTworCitjcmVhdGUg cHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBG T1IgU1FMU1RBVEUgJzk5OTk5JzsKKyAgU0lHTkFMIGZvbyBTRVQgTVlTUUxfRVJSTk8gPSAxMTEx OworZW5kICQkCisKKy0tZXJyb3IgMTExMQorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHBy b2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkK K2JlZ2luCisgIERFQ0xBUkUgd2FybiBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMTAwMCI7Cisg IFNJR05BTCB3YXJuIFNFVCBNWVNRTF9FUlJOTyA9IDExMTE7CitlbmQgJCQKKworY2FsbCB0ZXN0 X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJv Y2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgbm90X2ZvdW5kIENPTkRJVElP TiBGT1IgU1FMU1RBVEUgIjAyMDAwIjsKKyAgU0lHTkFMIG5vdF9mb3VuZCBTRVQgTVlTUUxfRVJS Tk8gPSAxMTExOworZW5kICQkCisKKy0tZXJyb3IgMTExMQorY2FsbCB0ZXN0X3NpZ25hbCgpICQk Citkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rf c2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAi NTUwMDAiOworICBTSUdOQUwgZXJyb3IgU0VUIE1ZU1FMX0VSUk5PID0gMTExMTsKK2VuZCAkJAor CistLWVycm9yIDExMTEKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVz dF9zaWduYWwgJCQKKworIyBUZXN0IFNFVCBNRVNTQUdFX1RFWFQKKworLS1lcnJvciBFUl9TSUdO QUxfRVhDRVBUSU9OCitTSUdOQUwgU1FMU1RBVEUgJzc3Nzc3JyBTRVQgTUVTU0FHRV9URVhUPScn ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBm b28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnNzc3NzcnOworICBTSUdOQUwgZm9vIFNFVAorICAg IE1FU1NBR0VfVEVYVCA9ICIiLAorICAgIE1ZU1FMX0VSUk5PPTU2Nzg7CitlbmQgJCQKKworLS1l cnJvciA1Njc4CitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2ln bmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFS RSBmb28gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5OTknOworICBTSUdOQUwgZm9vIFNFVAor ICAgIE1FU1NBR0VfVEVYVCA9ICJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIiwKKyAgICBNWVNRTF9F UlJOTz05OTk5OworZW5kICQkCisKKy0tZXJyb3IgOTk5OQorY2FsbCB0ZXN0X3NpZ25hbCgpICQk Citkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rf c2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgd2FybiBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIw MTAwMCI7CisgIFNJR05BTCB3YXJuIFNFVCBNRVNTQUdFX1RFWFQgPSAiU29tZXRoaW5nIGJhZCBo YXBwZW5lZCI7CitlbmQgJCQKKworY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVy ZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2lu CisgIERFQ0xBUkUgbm90X2ZvdW5kIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAyMDAwIjsKKyAg U0lHTkFMIG5vdF9mb3VuZCBTRVQgTUVTU0FHRV9URVhUID0gIlNvbWV0aGluZyBiYWQgaGFwcGVu ZWQiOworZW5kICQkCisKKy0tZXJyb3IgRVJfU0lHTkFMX05PVF9GT1VORAorY2FsbCB0ZXN0X3Np Z25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2Vk dXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBT UUxTVEFURSAiNTUwMDAiOworICBTSUdOQUwgZXJyb3IgU0VUIE1FU1NBR0VfVEVYVCA9ICJTb21l dGhpbmcgYmFkIGhhcHBlbmVkIjsKK2VuZCAkJAorCistLWVycm9yIEVSX1NJR05BTF9FWENFUFRJ T04KK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQK KworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIHNvbWV0 aGluZyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMTAwMCI7CisgIFNJR05BTCBzb21ldGhpbmcg U0VUIE1FU1NBR0VfVEVYVCA9IF91dGY4ICJUaGlzIGlzIGEgVVRGOCB0ZXh0IjsKK2VuZCAkJAor CitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisK K2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBzb21ldGhp bmcgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDEwMDAiOworICBTSUdOQUwgc29tZXRoaW5nIFNF VCBNRVNTQUdFX1RFWFQgPSAiIjsKK2VuZCAkJAorCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ry b3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKKyMgVGVzdCBTRVQgY29tcGxleCBleHByZXNz aW9ucworCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUg ZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5OTknOworICBTSUdOQUwgZXJyb3IgU0VU CisgICAgTVlTUUxfRVJSTk8gPSBOVUxMOworZW5kICQkCisKKy0tZXJyb3IgRVJfV1JPTkdfVkFM VUVfRk9SX1ZBUgorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Np Z25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xB UkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5OTknOworICBTSUdOQUwgZXJyb3Ig U0VUCisgICAgQ0xBU1NfT1JJR0lOID0gTlVMTDsKK2VuZCAkJAorCistLWVycm9yIEVSX1dST05H X1ZBTFVFX0ZPUl9WQVIKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVz dF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICBE RUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKKyAgU0lHTkFMIGVy cm9yIFNFVAorICAgIFNVQkNMQVNTX09SSUdJTiA9IE5VTEw7CitlbmQgJCQKKworLS1lcnJvciBF Ul9XUk9OR19WQUxVRV9GT1JfVkFSCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2Vk dXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVn aW4KKyAgREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICc5OTk5OSc7CisgIFNJ R05BTCBlcnJvciBTRVQKKyAgICBDT05TVFJBSU5UX0NBVEFMT0cgPSBOVUxMOworZW5kICQkCisK Ky0tZXJyb3IgRVJfV1JPTkdfVkFMVUVfRk9SX1ZBUgorY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitk cm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2ln bmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5 OTknOworICBTSUdOQUwgZXJyb3IgU0VUCisgICAgQ09OU1RSQUlOVF9TQ0hFTUEgPSBOVUxMOwor ZW5kICQkCisKKy0tZXJyb3IgRVJfV1JPTkdfVkFMVUVfRk9SX1ZBUgorY2FsbCB0ZXN0X3NpZ25h bCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJl IHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgZXJyb3IgQ09ORElUSU9OIEZPUiBTUUxT VEFURSAnOTk5OTknOworICBTSUdOQUwgZXJyb3IgU0VUCisgICAgQ09OU1RSQUlOVF9OQU1FID0g TlVMTDsKK2VuZCAkJAorCistLWVycm9yIEVSX1dST05HX1ZBTFVFX0ZPUl9WQVIKK2NhbGwgdGVz dF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBG T1IgU1FMU1RBVEUgJzk5OTk5JzsKKyAgU0lHTkFMIGVycm9yIFNFVAorICAgIENBVEFMT0dfTkFN RSA9IE5VTEw7CitlbmQgJCQKKworLS1lcnJvciBFUl9XUk9OR19WQUxVRV9GT1JfVkFSCitjYWxs IHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBlcnJvciBDT05ESVRJ T04gRk9SIFNRTFNUQVRFICc5OTk5OSc7CisgIFNJR05BTCBlcnJvciBTRVQKKyAgICBTQ0hFTUFf TkFNRSA9IE5VTEw7CitlbmQgJCQKKworLS1lcnJvciBFUl9XUk9OR19WQUxVRV9GT1JfVkFSCitj YWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBlcnJvciBDT05E SVRJT04gRk9SIFNRTFNUQVRFICc5OTk5OSc7CisgIFNJR05BTCBlcnJvciBTRVQKKyAgICBUQUJM RV9OQU1FID0gTlVMTDsKK2VuZCAkJAorCistLWVycm9yIEVSX1dST05HX1ZBTFVFX0ZPUl9WQVIK K2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKwor Y3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIGVycm9yIENP TkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKKyAgU0lHTkFMIGVycm9yIFNFVAorICAgIENP TFVNTl9OQU1FID0gTlVMTDsKK2VuZCAkJAorCistLWVycm9yIEVSX1dST05HX1ZBTFVFX0ZPUl9W QVIKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQK KworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIGVycm9y IENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKKyAgU0lHTkFMIGVycm9yIFNFVAorICAg IENVUlNPUl9OQU1FID0gTlVMTDsKK2VuZCAkJAorCistLWVycm9yIEVSX1dST05HX1ZBTFVFX0ZP Ul9WQVIKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwg JCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIGVy cm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzk5OTk5JzsKKyAgU0lHTkFMIGVycm9yIFNFVAor ICAgIE1FU1NBR0VfVEVYVCA9IE5VTEw7CitlbmQgJCQKKworLS1lcnJvciBFUl9XUk9OR19WQUxV RV9GT1JfVkFSCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2ln bmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFS RSBzb21ldGhpbmcgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAnOTk5OTknOworICBERUNMQVJFIG1l c3NhZ2VfdGV4dCBWQVJDSEFSKDY0KSBERUZBVUxUICJMb2NhbCBzdHJpbmcgdmFyaWFibGUiOwor ICBERUNMQVJFIHNxbGNvZGUgSU5URUdFUiBERUZBVUxUIDEyMzQ7CisKKyAgU0lHTkFMIHNvbWV0 aGluZyBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSBtZXNzYWdlX3RleHQsCisgICAgTVlTUUxfRVJS Tk8gPSBzcWxjb2RlOworZW5kICQkCisKKy0tZXJyb3IgMTIzNAorY2FsbCB0ZXN0X3NpZ25hbCgp ICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRl c3Rfc2lnbmFsKG1lc3NhZ2VfdGV4dCBWQVJDSEFSKDY0KSwgc3FsY29kZSBJTlRFR0VSKQorYmVn aW4KKyAgREVDTEFSRSBzb21ldGhpbmcgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMTIzNDUiOwor CisgIFNJR05BTCBzb21ldGhpbmcgU0VUCisgICAgTUVTU0FHRV9URVhUID0gbWVzc2FnZV90ZXh0 LAorICAgIE1ZU1FMX0VSUk5PID0gc3FsY29kZTsKK2VuZCAkJAorCistLWVycm9yIEVSX1dST05H X1ZBTFVFX0ZPUl9WQVIKK2NhbGwgdGVzdF9zaWduYWwoIlBhcmFtZXRlciBzdHJpbmciLCBOVUxM KSAkJAorCistLWVycm9yIEVSX1dST05HX1ZBTFVFX0ZPUl9WQVIKK2NhbGwgdGVzdF9zaWduYWwo TlVMTCwgMTIzNCkgJCQKKworLS1lcnJvciA1Njc4CitjYWxsIHRlc3Rfc2lnbmFsKCJQYXJhbWV0 ZXIgc3RyaW5nIiwgNTY3OCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2Ny ZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBzb21ldGhpbmcg Q09ORElUSU9OIEZPUiBTUUxTVEFURSAiQUFCQkIiOworCisgIFNJR05BTCBzb21ldGhpbmcgU0VU CisgICAgTUVTU0FHRV9URVhUID0gQG1lc3NhZ2VfdGV4dCwKKyAgICBNWVNRTF9FUlJOTyA9IEBz cWxjb2RlOworZW5kICQkCisKKy0tZXJyb3IgRVJfV1JPTkdfVkFMVUVfRk9SX1ZBUgorY2FsbCB0 ZXN0X3NpZ25hbCgpICQkCisKK3NldCBAc3FsY29kZT0gMTIgJCQKKworLS1lcnJvciBFUl9XUk9O R19WQUxVRV9GT1JfVkFSCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKKworc2V0IEBtZXNzYWdlX3Rl eHQ9ICJVc2VyIHZhcmlhYmxlIiAkJAorCistLWVycm9yIDEyCitjYWxsIHRlc3Rfc2lnbmFsKCkg JCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKKy0tZXJyb3IgRVJfUEFSU0VfRVJS T1IKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9pbnZhbGlkKCkKK2JlZ2luCisgIERFQ0xBUkUgc29t ZXRoaW5nIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIkFBQkJCIjsKKworICBTSUdOQUwgc29tZXRo aW5nIFNFVAorICAgIE1FU1NBR0VfVEVYVCA9IEBtZXNzYWdlX3RleHQgOj0gJ2lsbGVnYWwnLAor ICAgIE1ZU1FMX0VSUk5PID0gQHNxbGNvZGUgOj0gMTIzNDsKK2VuZCAkJAorCisjIyBjcmVhdGUg cHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKKyMjIGJlZ2luCisjIyAgIERFQ0xBUkUgc29tZXRoaW5n IENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjEyMzQ1IjsKKyMjIAorIyMgICBTSUdOQUwgc29tZXRo aW5nIFNFVAorIyMgICAgIE1FU1NBR0VfVEVYVCA9IGNvbmNhdCgiZnVuY3Rpb25zIiwgIiBhbHNv IHdvcmtzIiksCisjIyAgICAgTVlTUUxfRVJSTk8gPSAxMDAwICsgMTI7CisjIyBlbmQgJCQKKyMj IAorIyMgLS1lcnJvciAxMDEyCisjIyBjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKKyMjIGRyb3AgcHJv Y2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKKyMjIGNyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwo Y29kZSBpbnRlZ2VyKQorIyMgYmVnaW4KKyMjICAgREVDTEFSRSBzb21ldGhpbmcgQ09ORElUSU9O IEZPUiBTUUxTVEFURSAiMTIzNDUiOworIyMgCisjIyAgIFNJR05BTCBzb21ldGhpbmcgU0VUCisj IyAgICAgTUVTU0FHRV9URVhUID0gKHNlbGVjdCBtZXNzYWdlX3RleHQgZnJvbSB0MSB3aGVyZSBp ZD1jb2RlKSwKKyMjICAgICBNWVNRTF9FUlJOTyA9IChzZWxlY3Qgc3FsY29kZSBmcm9tIHQxIHdo ZXJlIGlkPWNvZGUpOworIyMgZW5kICQkCisjIyAKKyMjIC0tZGlzYWJsZV93YXJuaW5ncworIyMg ZHJvcCB0YWJsZSBpZiBleGlzdHMgdDEgJCQKKyMjIC0tZW5hYmxlX3dhcm5pbmdzCisjIyAKKyMj IC0tZXJyb3IgRVJfTk9fU1VDSF9UQUJMRQorIyMgY2FsbCB0ZXN0X3NpZ25hbCgxKSAkJAorIyMg CisjIyBjcmVhdGUgdGFibGUgdDEoaWQgaW50ZWdlciwgbWVzc2FnZV90ZXh0IHZhcmNoYXIoNjQp LCBzcWxjb2RlIGludGVnZXIpICQkCisjIyAKKyMjIC0tZXJyb3IgRVJfV1JPTkdfVkFMVUVfRk9S X1ZBUgorIyMgY2FsbCB0ZXN0X3NpZ25hbCgxKSAkJAorIyMgCisjIyBpbnNlcnQgaW50byB0MSB2 YWx1ZXMgKCgxKSwgKCJGaXJzdCBtZXNzYWdlIiksICgxMDAxKSkgJCQKKyMjIGluc2VydCBpbnRv IHQxIHZhbHVlcyAoKDIpLCAoIlNlY29uZCBtZXNzYWdlIiksICgxMDAyKSkgJCQKKyMjIAorIyMg LS1lcnJvciAxMDAxCisjIyBjYWxsIHRlc3Rfc2lnbmFsKDEpICQkCisjIyAKKyMjIC0tZXJyb3Ig MTAwMgorIyMgY2FsbCB0ZXN0X3NpZ25hbCgyKSAkJAorCisjIyBhbHRlciB0YWJsZSB0MSBkcm9w IGNvbHVtbiBtZXNzYWdlX3RleHQgJCQKKyMjIAorIyMgLS1lcnJvciBFUl9CQURfRklFTERfRVJS T1IKKyMjIGNhbGwgdGVzdF9zaWduYWwoMikgJCQKKyMjIAorIyMgZHJvcCB0YWJsZSB0MSAkJAor IyMgZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0 X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIGFhYSBWQVJDSEFSKDY0KTsKKyAgREVDTEFSRSBi YmIgVkFSQ0hBUig2NCk7CisgIERFQ0xBUkUgY2NjIFZBUkNIQVIoNjQpOworICBERUNMQVJFIGRk ZCBWQVJDSEFSKDY0KTsKKyAgREVDTEFSRSBlZWUgVkFSQ0hBUig2NCk7CisgIERFQ0xBUkUgZmZm IFZBUkNIQVIoNjQpOworICBERUNMQVJFIGdnZyBWQVJDSEFSKDY0KTsKKyAgREVDTEFSRSBoaGgg VkFSQ0hBUig2NCk7CisgIERFQ0xBUkUgaWlpIFZBUkNIQVIoNjQpOworICBERUNMQVJFIGpqaiBW QVJDSEFSKDY0KTsKKyAgREVDTEFSRSBra2sgVkFSQ0hBUig2NCk7CisKKyAgREVDTEFSRSB3YXJu IENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMjM0IjsKKworICBzZXQgYWFhPSByZXBlYXQoIkEi LCA2NCk7CisgIHNldCBiYmI9IHJlcGVhdCgiQiIsIDY0KTsKKyAgc2V0IGNjYz0gcmVwZWF0KCJD IiwgNjQpOworICBzZXQgZGRkPSByZXBlYXQoIkQiLCA2NCk7CisgIHNldCBlZWU9IHJlcGVhdCgi RSIsIDY0KTsKKyAgc2V0IGZmZj0gcmVwZWF0KCJGIiwgNjQpOworICBzZXQgZ2dnPSByZXBlYXQo IkciLCA2NCk7CisgIHNldCBoaGg9IHJlcGVhdCgiSCIsIDY0KTsKKyAgc2V0IGlpaT0gcmVwZWF0 KCJJIiwgNjQpOworICBzZXQgampqPSByZXBlYXQoIkoiLCA2NCk7CisgIHNldCBra2s9IHJlcGVh dCgiSyIsIDY0KTsKKworICBTSUdOQUwgd2FybiBTRVQKKyAgICBDTEFTU19PUklHSU4gPSBhYWEs CisgICAgU1VCQ0xBU1NfT1JJR0lOID0gYmJiLAorICAgIENPTlNUUkFJTlRfQ0FUQUxPRyA9IGNj YywKKyAgICBDT05TVFJBSU5UX1NDSEVNQSA9IGRkZCwKKyAgICBDT05TVFJBSU5UX05BTUUgPSBl ZWUsCisgICAgQ0FUQUxPR19OQU1FID0gZmZmLAorICAgIFNDSEVNQV9OQU1FID0gZ2dnLAorICAg IFRBQkxFX05BTUUgPSBoaGgsCisgICAgQ09MVU1OX05BTUUgPSBpaWksCisgICAgQ1VSU09SX05B TUUgPSBqamosCisgICAgTUVTU0FHRV9URVhUID0ga2trLAorICAgIE1ZU1FMX0VSUk5PID0gNjU1 MzU7CitlbmQgJCQKKworY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0 X3NpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERF Q0xBUkUgd2FybiBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMTIzNCI7CisKKyAgU0lHTkFMIHdh cm4gU0VUCisgICAgTVlTUUxfRVJSTk8gPSA5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5 OTk5OTk5OTk5OTk5OTk5OTk5OTk7CitlbmQgJCQKKworLS1lcnJvciBFUl9XUk9OR19WQUxVRV9G T1JfVkFSCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFs ICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBh YWF4IFZBUkNIQVIoNjUpOworICBERUNMQVJFIGJiYnggVkFSQ0hBUig2NSk7CisgIERFQ0xBUkUg Y2NjeCBWQVJDSEFSKDY1KTsKKyAgREVDTEFSRSBkZGR4IFZBUkNIQVIoNjUpOworICBERUNMQVJF IGVlZXggVkFSQ0hBUig2NSk7CisgIERFQ0xBUkUgZmZmeCBWQVJDSEFSKDY1KTsKKyAgREVDTEFS RSBnZ2d4IFZBUkNIQVIoNjUpOworICBERUNMQVJFIGhoaHggVkFSQ0hBUig2NSk7CisgIERFQ0xB UkUgaWlpeCBWQVJDSEFSKDY1KTsKKyAgREVDTEFSRSBqamp4IFZBUkNIQVIoNjUpOworICBERUNM QVJFIGtra3ggVkFSQ0hBUig2NSk7CisgIERFQ0xBUkUgbGxseCBWQVJDSEFSKDEyOSk7CisKKyAg REVDTEFSRSB3YXJuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMjM0IjsKKworICBzZXQgYWFh eD0gY29uY2F0KHJlcGVhdCgiQSIsIDY0KSwgIlgiKTsKKyAgc2V0IGJiYng9IGNvbmNhdChyZXBl YXQoIkIiLCA2NCksICJYIik7CisgIHNldCBjY2N4PSBjb25jYXQocmVwZWF0KCJDIiwgNjQpLCAi WCIpOworICBzZXQgZGRkeD0gY29uY2F0KHJlcGVhdCgiRCIsIDY0KSwgIlgiKTsKKyAgc2V0IGVl ZXg9IGNvbmNhdChyZXBlYXQoIkUiLCA2NCksICJYIik7CisgIHNldCBmZmZ4PSBjb25jYXQocmVw ZWF0KCJGIiwgNjQpLCAiWCIpOworICBzZXQgZ2dneD0gY29uY2F0KHJlcGVhdCgiRyIsIDY0KSwg IlgiKTsKKyAgc2V0IGhoaHg9IGNvbmNhdChyZXBlYXQoIkgiLCA2NCksICJYIik7CisgIHNldCBp aWl4PSBjb25jYXQocmVwZWF0KCJJIiwgNjQpLCAiWCIpOworICBzZXQgampqeD0gY29uY2F0KHJl cGVhdCgiSiIsIDY0KSwgIlgiKTsKKyAgc2V0IGtra3g9IGNvbmNhdChyZXBlYXQoIksiLCA2NCks ICJYIik7CisgIHNldCBsbGx4PSBjb25jYXQocmVwZWF0KCIxIiwgMTAwKSwKKyAgICAgICAgICAg ICAgICAgICByZXBlYXQoIjIiLCAyMCksCisgICAgICAgICAgICAgICAgICAgcmVwZWF0KCI4Iiwg OCksCisgICAgICAgICAgICAgICAgICAgIlgiKTsKKworICBTSUdOQUwgd2FybiBTRVQKKyAgICBD TEFTU19PUklHSU4gPSBhYWF4LAorICAgIFNVQkNMQVNTX09SSUdJTiA9IGJiYngsCisgICAgQ09O U1RSQUlOVF9DQVRBTE9HID0gY2NjeCwKKyAgICBDT05TVFJBSU5UX1NDSEVNQSA9IGRkZHgsCisg ICAgQ09OU1RSQUlOVF9OQU1FID0gZWVleCwKKyAgICBDQVRBTE9HX05BTUUgPSBmZmZ4LAorICAg IFNDSEVNQV9OQU1FID0gZ2dneCwKKyAgICBUQUJMRV9OQU1FID0gaGhoeCwKKyAgICBDT0xVTU5f TkFNRSA9IGlpaXgsCisgICAgQ1VSU09SX05BTUUgPSBqamp4LAorICAgIE1FU1NBR0VfVEVYVCA9 IGxsbHgsCisgICAgTVlTUUxfRVJSTk8gPSAxMDAwMDsKK2VuZCAkJAorCisjTk9URTogdGhlIHdh cm5pbmcgdGV4dCBmb3IgRVJfVFJVTkNBVEVEX1dST05HX1ZBTFVFIGNvbnRhaW5zCisjIHZhbHVl OiAnJS0uMTI4cycsIHNvIHRoZSB3YXJuaW5nIHByaW50ZWQgdHJ1bmNhdGVzIHRoZSB2YWx1ZSB0 b28sCisjIHdoaWNoIGFmZmVjdHMgTUVTU0FHRV9URVhUICh0aGUgWCBpcyBtaXNzaW5nKQorCisj Tk9URTogRVJfVFJVTkNBVEVEX1dST05HX1ZBTFVFIGlzIHJhaXNlZCBhcyBhbiBlcnJvciBmb3Ig REVDSU1BTCwKKyMgaXQncyBhbiBleGlzdGluZyBidWc6IEJ1ZyMzNjQ1NworY2FsbCB0ZXN0X3Np Z25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAorCisjIFRlc3QgdGhhdCBI QU5ETEVSIGNhbiBjYXRjaCBjb25kaXRpb25zIHJhaXNlZCBieSBTSUdOQUwKKworY3JlYXRlIHBy b2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZP UiBTUUxTVEFURSAiMDEyMzQiOworICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIFNRTFNU QVRFICIwMTIzNCIKKyAgYmVnaW4KKyAgICBzZWxlY3QgIkNhdWdodCBieSBTUUxTVEFURSI7Cisg IGVuZDsKKworICBTSUdOQUwgd2FybiBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBh IHdhcm5pbmciLAorICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorCitjYWxsIHRlc3Rf c2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9j ZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSB3YXJuIENPTkRJVElPTiBGT1Ig U1FMU1RBVEUgIjAxMjM0IjsKKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCisg IGJlZ2luCisgICAgc2VsZWN0ICJDYXVnaHQgYnkgbnVtYmVyIjsKKyAgZW5kOworCisgIFNJR05B TCB3YXJuIFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGEgd2FybmluZyIsCisgICAg TVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCisKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJv cCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25h bCgpCitiZWdpbgorICBERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDEyMzQi OworICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIFNRTFdBUk5JTkcKKyAgYmVnaW4KKyAg ICBzZWxlY3QgIkNhdWdodCBieSBTUUxXQVJOSU5HIjsKKyAgZW5kOworCisgIFNJR05BTCB3YXJu IFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGEgd2FybmluZyIsCisgICAgTVlTUUxf RVJSTk8gPSAxMDEyOworZW5kICQkCisKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9j ZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCiti ZWdpbgorICBERUNMQVJFIG5vdF9mb3VuZCBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMkFCQyI7 CisgIERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgU1FMU1RBVEUgIjAyQUJDIgorICBiZWdp bgorICAgIHNlbGVjdCAiQ2F1Z2h0IGJ5IFNRTFNUQVRFIjsKKyAgZW5kOworCisgIFNJR05BTCBu b3RfZm91bmQgU0VUCisgICAgTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYSBub3QgZm91bmQiLAor ICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9z aWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFU RSAiMDJBQkMiOworICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIDEwMTIKKyAgYmVnaW4K KyAgICBzZWxlY3QgIkNhdWdodCBieSBudW1iZXIiOworICBlbmQ7CisKKyAgU0lHTkFMIG5vdF9m b3VuZCBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhIG5vdCBmb3VuZCIsCisgICAg TVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCisKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJv cCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25h bCgpCitiZWdpbgorICBERUNMQVJFIG5vdF9mb3VuZCBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIw MkFCQyI7CisgIERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgTk9UIEZPVU5ECisgIGJlZ2lu CisgICAgc2VsZWN0ICJDYXVnaHQgYnkgTk9UIEZPVU5EIjsKKyAgZW5kOworCisgIFNJR05BTCBu b3RfZm91bmQgU0VUCisgICAgTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYSBub3QgZm91bmQiLAor ICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQK K2Ryb3AgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9z aWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICI1 NTU1NSI7CisgIERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgU1FMU1RBVEUgIjU1NTU1Igor ICBiZWdpbgorICAgIHNlbGVjdCAiQ2F1Z2h0IGJ5IFNRTFNUQVRFIjsKKyAgZW5kOworCisgIFNJ R05BTCBlcnJvciBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhbiBlcnJvciIsCisg ICAgTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCisKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAor ZHJvcCBwcm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Np Z25hbCgpCitiZWdpbgorICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjU1 NTU1IjsKKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCisgIGJlZ2luCisgICAg c2VsZWN0ICJDYXVnaHQgYnkgbnVtYmVyIjsKKyAgZW5kOworCisgIFNJR05BTCBlcnJvciBTRVQK KyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhbiBlcnJvciIsCisgICAgTVlTUUxfRVJSTk8g PSAxMDEyOworZW5kICQkCisKK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUg dGVzdF9zaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCgpCitiZWdpbgor ICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjU1NTU1IjsKKyAgREVDTEFS RSBDT05USU5VRSBIQU5ETEVSIGZvciBTUUxFWENFUFRJT04KKyAgYmVnaW4KKyAgICBzZWxlY3Qg IkNhdWdodCBieSBTUUxFWENFUFRJT04iOworICBlbmQ7CisKKyAgU0lHTkFMIGVycm9yIFNFVAor ICAgIE1FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGFuIGVycm9yIiwKKyAgICBNWVNRTF9FUlJOTyA9 IDEwMTI7CitlbmQgJCQKKworY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0 ZXN0X3NpZ25hbCAkJAorCisjIFRlc3Qgd2hlcmUgU0lHTkFMIGNhbiBiZSB1c2VkCisKK2NyZWF0 ZSBmdW5jdGlvbiB0ZXN0X3NpZ25hbF9mdW5jKCkgcmV0dXJucyBpbnRlZ2VyCitiZWdpbgorICBE RUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDFYWFgiOworCisgIFNJR05BTCB3 YXJuIFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJUaGlzIGZ1bmN0aW9uIFNJR05BTCBhIHdhcm5p bmciLAorICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKKworICByZXR1cm4gNTsKK2VuZCAkJAorCitz ZWxlY3QgdGVzdF9zaWduYWxfZnVuYygpICQkCitkcm9wIGZ1bmN0aW9uIHRlc3Rfc2lnbmFsX2Z1 bmMgJCQKKworY3JlYXRlIGZ1bmN0aW9uIHRlc3Rfc2lnbmFsX2Z1bmMoKSByZXR1cm5zIGludGVn ZXIKK2JlZ2luCisgIERFQ0xBUkUgbm90X2ZvdW5kIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAy WFhYIjsKKworICBTSUdOQUwgbm90X2ZvdW5kIFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJUaGlz IGZ1bmN0aW9uIFNJR05BTCBub3QgZm91bmQiLAorICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKKwor ICByZXR1cm4gNTsKK2VuZCAkJAorCistLWVycm9yIDEwMTIKK3NlbGVjdCB0ZXN0X3NpZ25hbF9m dW5jKCkgJCQKK2Ryb3AgZnVuY3Rpb24gdGVzdF9zaWduYWxfZnVuYyAkJAorCitjcmVhdGUgZnVu Y3Rpb24gdGVzdF9zaWduYWxfZnVuYygpIHJldHVybnMgaW50ZWdlcgorYmVnaW4KKyAgREVDTEFS RSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICI1MDAwMCI7CisKKyAgU0lHTkFMIGVycm9y IFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJUaGlzIGZ1bmN0aW9uIFNJR05BTCBhbiBlcnJvciIs CisgICAgTVlTUUxfRVJSTk8gPSAxMDEyOworCisgIHJldHVybiA1OworZW5kICQkCisKKy0tZXJy b3IgMTAxMgorc2VsZWN0IHRlc3Rfc2lnbmFsX2Z1bmMoKSAkJAorZHJvcCBmdW5jdGlvbiB0ZXN0 X3NpZ25hbF9mdW5jICQkCisKKy0tZGlzYWJsZV93YXJuaW5ncworZHJvcCB0YWJsZSBpZiBleGlz dHMgdDEgJCQKKy0tZW5hYmxlX3dhcm5pbmdzCisKK2NyZWF0ZSB0YWJsZSB0MSAoYSBpbnRlZ2Vy KSAkJAorCitjcmVhdGUgdHJpZ2dlciB0MV9haSBhZnRlciBpbnNlcnQgb24gdDEgZm9yIGVhY2gg cm93CitiZWdpbgorICBERUNMQVJFIG1zZyBWQVJDSEFSKDEyOCk7CisgIERFQ0xBUkUgd2FybiBD T05ESVRJT04gRk9SIFNRTFNUQVRFICIwMVhYWCI7CisKKyAgc2V0IG1zZz0gY29uY2F0KCJUaGlz IHRyaWdnZXIgU0lHTkFMIGEgd2FybmluZywgYT0iLCBORVcuYSk7CisgIFNJR05BTCB3YXJuIFNF VAorICAgIE1FU1NBR0VfVEVYVCA9IG1zZywKKyAgICBNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQg JCQKKworaW5zZXJ0IGludG8gdDEgdmFsdWVzICgxKSwgKDIpICQkCisgCitkcm9wIHRyaWdnZXIg dDFfYWkgJCQKKworY3JlYXRlIHRyaWdnZXIgdDFfYWkgYWZ0ZXIgaW5zZXJ0IG9uIHQxIGZvciBl YWNoIHJvdworYmVnaW4KKyAgREVDTEFSRSBtc2cgVkFSQ0hBUigxMjgpOworICBERUNMQVJFIG5v dF9mb3VuZCBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMlhYWCI7CisKKyAgc2V0IG1zZz0gY29u Y2F0KCJUaGlzIHRyaWdnZXIgU0lHTkFMIGEgbm90IGZvdW5kLCBhPSIsIE5FVy5hKTsKKyAgU0lH TkFMIG5vdF9mb3VuZCBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSBtc2csCisgICAgTVlTUUxfRVJS Tk8gPSAxMDEyOworZW5kICQkCisKKy0tZXJyb3IgMTAxMgoraW5zZXJ0IGludG8gdDEgdmFsdWVz ICgzKSwgKDQpICQkCisgCitkcm9wIHRyaWdnZXIgdDFfYWkgJCQKKworY3JlYXRlIHRyaWdnZXIg dDFfYWkgYWZ0ZXIgaW5zZXJ0IG9uIHQxIGZvciBlYWNoIHJvdworYmVnaW4KKyAgREVDTEFSRSBt c2cgVkFSQ0hBUigxMjgpOworICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUg IjAzWFhYIjsKKworICBzZXQgbXNnPSBjb25jYXQoIlRoaXMgdHJpZ2dlciBTSUdOQUwgYW4gZXJy b3IsIGE9IiwgTkVXLmEpOworICBTSUdOQUwgZXJyb3IgU0VUCisgICAgTUVTU0FHRV9URVhUID0g bXNnLAorICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorCistLWVycm9yIDEwMTIKK2lu c2VydCBpbnRvIHQxIHZhbHVlcyAoNSksICg2KSAkJAorCitkcm9wIHRhYmxlIHQxICQkCisKK2Ny ZWF0ZSB0YWJsZSB0MSAoZXJybm8gaW50ZWdlciwgbXNnIHZhcmNoYXIoMTI4KSkgJCQKKworY3Jl YXRlIHRyaWdnZXIgdDFfYWkgYWZ0ZXIgaW5zZXJ0IG9uIHQxIGZvciBlYWNoIHJvdworYmVnaW4K KyAgREVDTEFSRSB3YXJuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxWFhYIjsKKworICBTSUdO QUwgd2FybiBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSBORVcubXNnLAorICAgIE1ZU1FMX0VSUk5P ID0gTkVXLmVycm5vOworZW5kICQkCisKK2luc2VydCBpbnRvIHQxIHNldCBlcnJubz0xMDEyLCBt c2c9J1dhcm5pbmcgbWVzc2FnZSAxIGluIHRyaWdnZXInICQkCitpbnNlcnQgaW50byB0MSBzZXQg ZXJybm89MTAxMywgbXNnPSdXYXJuaW5nIG1lc3NhZ2UgMiBpbiB0cmlnZ2VyJyAkJAorCitkcm9w IHRhYmxlIHQxICQkCisKKy0tZGlzYWJsZV93YXJuaW5ncworZHJvcCB0YWJsZSBpZiBleGlzdHMg dDEgJCQKK2Ryb3AgcHJvY2VkdXJlIGlmIGV4aXN0cyBwMSAkJAorZHJvcCBmdW5jdGlvbiBpZiBl eGlzdHMgZjEgJCQKKy0tZW5hYmxlX3dhcm5pbmdzCisKK2NyZWF0ZSB0YWJsZSB0MSAoczEgaW50 KSAkJAoraW5zZXJ0IGludG8gdDEgdmFsdWVzICgxKSAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHAx KCkKK2JlZ2luCisgIGRlY2xhcmUgYSBpbnQ7CisgIGRlY2xhcmUgYyBjdXJzb3IgZm9yIHNlbGVj dCBmMSgpIGZyb20gdDE7CisgIGRlY2xhcmUgY29udGludWUgaGFuZGxlciBmb3Igc3Fsc3RhdGUg JzAzMDAwJworICAgIHNlbGVjdCAiY2F1Z2h0IDAzMDAwIjsKKyAgZGVjbGFyZSBjb250aW51ZSBo YW5kbGVyIGZvciAxMzI2CisgICAgc2VsZWN0ICJjYXVnaHQgY3Vyc29yIGlzIG5vdCBvcGVuIjsK KworICBzZWxlY3QgIkJlZm9yZSBvcGVuIjsKKyAgb3BlbiBjOworICBzZWxlY3QgIkJlZm9yZSBm ZXRjaCI7CisgIGZldGNoIGMgaW50byBhOworICBzZWxlY3QgIkJlZm9yZSBjbG9zZSI7CisgIGNs b3NlIGM7CitlbmQgJCQKKworY3JlYXRlIGZ1bmN0aW9uIGYxKCkgcmV0dXJucyBpbnQKK2JlZ2lu CisgIHNpZ25hbCBzcWxzdGF0ZSAnMDMwMDAnOworICByZXR1cm4gNTsKK2VuZCAkJAorCisjIyBG SVhNRSA6IE1FTU9SWSBwbHVnaW4gd2FybmluZywgdmFsZ3JpbmQgbGVhaywgYnVnIzM2NTE4Cisj IyBjYWxsIHAxKCkgJCQKKworZHJvcCB0YWJsZSB0MSAkJAorZHJvcCBwcm9jZWR1cmUgcDEgJCQK K2Ryb3AgZnVuY3Rpb24gZjEgJCQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdGhlIFJFU0lHTkFMIHJ1bnRpbWUKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CisjIDYgdGVzdHM6CisjIHtTaWduYWxlZCB3YXJuaW5nLCBTaWduYWxlZCBOb3QgRm91bmQsIFNp Z25hbGVkIEVycm9yLAorIyB3YXJuaW5nLCBub3QgZm91bmQsIGVycm9yfSAtLT4gUkVTSUdOQUwK KworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgd2Fy biBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIwMTIzNCI7CisgIERFQ0xBUkUgQ09OVElOVUUgSEFO RExFUiBmb3IgMTAxMgorICBiZWdpbgorICAgIHNlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKKyAg ICBSRVNJR05BTDsKKyAgICBzZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKKyAgZW5kOworCisgIFNJ R05BTCB3YXJuIFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGEgd2FybmluZyIsCisg ICAgTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCisKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQk Citkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVz dF9yZXNpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIG5vdF9mb3VuZCBDT05ESVRJT04gRk9SIFNR TFNUQVRFICIwMjIyMiI7CisgIERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgMTAxMgorICBi ZWdpbgorICAgIHNlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKKyAgICBSRVNJR05BTDsKKyAgICBz ZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKKyAgZW5kOworCisgIFNJR05BTCBub3RfZm91bmQgU0VU CisgICAgTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYSBub3QgZm91bmQiLAorICAgIE1ZU1FMX0VS Uk5PID0gMTAxMjsKK2VuZCAkJAorCistLWVycm9yIDEwMTIKK2NhbGwgdGVzdF9yZXNpZ25hbCgp ICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUg dGVzdF9yZXNpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FM U1RBVEUgIjU1NTU1IjsKKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCisgIGJl Z2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMOworICAgIHNl bGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7CisKKyAgU0lHTkFMIGVycm9yIFNFVAorICAg IE1FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGFuIGVycm9yIiwKKyAgICBNWVNRTF9FUlJOTyA9IDEw MTI7CitlbmQgJCQKKworLS1lcnJvciAxMDEyCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorZHJv cCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVz aWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBzcWx3YXJuaW5n CisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMOwor ICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7CisKKyAgaW5zZXJ0IGludG8gdF93 YXJuIHNldCBhPSA5OTk5OTk5OTk5OTk5OTk5OworZW5kICQkCisKK2NhbGwgdGVzdF9yZXNpZ25h bCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1 cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIHggaW50ZWdlcjsKKyAgREVDTEFS RSBjIGN1cnNvciBmb3Igc2VsZWN0ICogZnJvbSB0X2N1cnNvcjsKKyAgREVDTEFSRSBDT05USU5V RSBIQU5ETEVSIGZvciBub3QgZm91bmQKKyAgYmVnaW4KKyAgICBzZWxlY3QgImJlZm9yZSBSRVNJ R05BTCI7CisgICAgUkVTSUdOQUw7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CisgIGVu ZDsKKworICBvcGVuIGM7CisgIGZldGNoIGMgaW50byB4OworICBjbG9zZSBjOworZW5kICQkCisK Ky0tZXJyb3IgRVJfU1BfRkVUQ0hfTk9fREFUQQorY2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2Ry b3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jl c2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3Igc3FsZXhjZXB0 aW9uCisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFM OworICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7CisKKyAgZHJvcCB0YWJsZSBu b19zdWNoX3RhYmxlOworZW5kICQkCisKKy0tZXJyb3IgRVJfQkFEX1RBQkxFX0VSUk9SCitjYWxs IHRlc3RfcmVzaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCisj IDYgdGVzdHM6CisjIHtTaWduYWxlZCB3YXJuaW5nLCBTaWduYWxlZCBOb3QgRm91bmQsIFNpZ25h bGVkIEVycm9yLAorIyB3YXJuaW5nLCBub3QgZm91bmQsIGVycm9yfSAtLT4gUkVTSUdOQUwgU0VU IC4uLgorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KKyAgREVDTEFS RSB3YXJuIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMjM0IjsKKyAgREVDTEFSRSBDT05USU5V RSBIQU5ETEVSIGZvciAxMDEyCisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwi OworICAgIFJFU0lHTkFMIFNFVAorICAgICAgTUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIG9mIGEg d2FybmluZyIsCisgICAgICBNWVNRTF9FUlJOTyA9IDU1NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIg UkVTSUdOQUwiOworICBlbmQ7CisKKyAgU0lHTkFMIHdhcm4gU0VUCisgICAgTUVTU0FHRV9URVhU ID0gIlJhaXNpbmcgYSB3YXJuaW5nIiwKKyAgICBNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQgJCQK KworY2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwg JCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUg bm90X2ZvdW5kIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAyMTExIjsKKyAgREVDTEFSRSBDT05U SU5VRSBIQU5ETEVSIGZvciAxMDEyCisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdO QUwiOworICAgIFJFU0lHTkFMIFNFVAorICAgICAgTUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIG9m IGEgbm90IGZvdW5kIiwKKyAgICAgIE1ZU1FMX0VSUk5PID0gNTU1NSA7CisgICAgc2VsZWN0ICJh ZnRlciBSRVNJR05BTCI7CisgIGVuZDsKKworICBTSUdOQUwgbm90X2ZvdW5kIFNFVAorICAgIE1F U1NBR0VfVEVYVCA9ICJSYWlzaW5nIGEgbm90IGZvdW5kIiwKKyAgICBNWVNRTF9FUlJOTyA9IDEw MTI7CitlbmQgJCQKKworLS1lcnJvciA1NTU1CitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorZHJv cCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVz aWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICIz MzMzMyI7CisgIERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3IgMTAxMgorICBiZWdpbgorICAg IHNlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKKyAgICBSRVNJR05BTCBTRVQKKyAgICAgIE1FU1NB R0VfVEVYVCA9ICJSRVNJR05BTCBvZiBhbiBlcnJvciIsCisgICAgICBNWVNRTF9FUlJOTyA9IDU1 NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7CisKKyAgU0lHTkFMIGVy cm9yIFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGFuIGVycm9yIiwKKyAgICBNWVNR TF9FUlJOTyA9IDEwMTI7CitlbmQgJCQKKworLS1lcnJvciA1NTU1CitjYWxsIHRlc3RfcmVzaWdu YWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2Vk dXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZv ciBzcWx3YXJuaW5nCisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAg IFJFU0lHTkFMIFNFVAorICAgICAgTUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIG9mIGEgd2Fybmlu ZyIsCisgICAgICBNWVNRTF9FUlJOTyA9IDU1NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdO QUwiOworICBlbmQ7CisKKyAgaW5zZXJ0IGludG8gdF93YXJuIHNldCBhPSA5OTk5OTk5OTk5OTk5 OTk5OworZW5kICQkCisKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0 ZXN0X3Jlc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdp bgorICBERUNMQVJFIHggaW50ZWdlcjsKKyAgREVDTEFSRSBjIGN1cnNvciBmb3Igc2VsZWN0ICog ZnJvbSB0X2N1cnNvcjsKKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBub3QgZm91bmQK KyAgYmVnaW4KKyAgICBzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CisgICAgUkVTSUdOQUwgU0VU CisgICAgICBNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgb2Ygbm90IGZvdW5kIiwKKyAgICAgIE1Z U1FMX0VSUk5PID0gNTU1NSA7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CisgIGVuZDsK KworICBvcGVuIGM7CisgIGZldGNoIGMgaW50byB4OworICBjbG9zZSBjOworZW5kICQkCisKKy0t ZXJyb3IgNTU1NQorY2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3Rf cmVzaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCisg IERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3Igc3FsZXhjZXB0aW9uCisgIGJlZ2luCisgICAg c2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMIFNFVAorICAgICAgTUVTU0FH RV9URVhUID0gIlJFU0lHTkFMIG9mIGFuIGVycm9yIiwKKyAgICAgIE1ZU1FMX0VSUk5PID0gNTU1 NSA7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CisgIGVuZDsKKworICBkcm9wIHRhYmxl IG5vX3N1Y2hfdGFibGU7CitlbmQgJCQKKworLS1lcnJvciA1NTU1CitjYWxsIHRlc3RfcmVzaWdu YWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyAzIHRlc3Rz OgorIyB7U2lnbmFsZWQgd2FybmluZ30KKyMgLS0+IFJFU0lHTkFMIFNRTFNUQVRFIHt3YXJuaW5n LCBub3QgZm91bmQsIGVycm9yfSBTRVQgLi4uCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNp Z25hbCgpCitiZWdpbgorICBERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDEx MTEiOworICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIDEwMTIKKyAgYmVnaW4KKyAgICBz ZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CisgICAgUkVTSUdOQUwgU1FMU1RBVEUgIjAxMjIyIiBT RVQKKyAgICAgIE1FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byB3YXJuaW5nIiwKKyAgICAgIE1Z U1FMX0VSUk5PID0gNTU1NSA7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CisgIGVuZDsK KworICBTSUdOQUwgd2FybiBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhIHdhcm5p bmciLAorICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorCitjYWxsIHRlc3RfcmVzaWdu YWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2Vk dXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSB3YXJuIENPTkRJVElPTiBGT1Ig U1FMU1RBVEUgIjAxMTExIjsKKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCisg IGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMIFNRTFNU QVRFICIwMjIyMiIgU0VUCisgICAgICBNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gbm90IGZv dW5kIiwKKyAgICAgIE1ZU1FMX0VSUk5PID0gNTU1NSA7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJ R05BTCI7CisgIGVuZDsKKworICBTSUdOQUwgd2FybiBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSAi UmFpc2luZyBhIHdhcm5pbmciLAorICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorCist LWVycm9yIDU1NTUKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitzaG93IHdhcm5pbmdzICQkCitk cm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9y ZXNpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIHdhcm4gQ09ORElUSU9OIEZPUiBTUUxTVEFURSAi MDExMTEiOworICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIDEwMTIKKyAgYmVnaW4KKyAg ICBzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CisgICAgUkVTSUdOQUwgU1FMU1RBVEUgIjMzMzMz IiBTRVQKKyAgICAgIE1FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byBlcnJvciIsCisgICAgICBN WVNRTF9FUlJOTyA9IDU1NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7 CisKKyAgU0lHTkFMIHdhcm4gU0VUCisgICAgTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYSB3YXJu aW5nIiwKKyAgICBNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQgJCQKKworLS1lcnJvciA1NTU1Citj YWxsIHRlc3RfcmVzaWduYWwoKSAkJAorc2hvdyB3YXJuaW5ncyAkJAorZHJvcCBwcm9jZWR1cmUg dGVzdF9yZXNpZ25hbCAkJAorCisjIDMgdGVzdHM6CisjIHtTaWduYWxlZCBub3QgZm91bmR9Cisj IC0tPiBSRVNJR05BTCBTUUxTVEFURSB7d2FybmluZywgbm90IGZvdW5kLCBlcnJvcn0gU0VUIC4u LgorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBu b3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDJBQkMiOworICBERUNMQVJFIENPTlRJ TlVFIEhBTkRMRVIgZm9yIDEwMTIKKyAgYmVnaW4KKyAgICBzZWxlY3QgImJlZm9yZSBSRVNJR05B TCI7CisgICAgUkVTSUdOQUwgU1FMU1RBVEUgIjAxMjIyIiBTRVQKKyAgICAgIE1FU1NBR0VfVEVY VCA9ICJSRVNJR05BTCB0byB3YXJuaW5nIiwKKyAgICAgIE1ZU1FMX0VSUk5PID0gNTU1NSA7Cisg ICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CisgIGVuZDsKKworICBTSUdOQUwgbm90X2ZvdW5k IFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJSYWlzaW5nIGEgbm90IGZvdW5kIiwKKyAgICBNWVNR TF9FUlJOTyA9IDEwMTI7CitlbmQgJCQKKworY2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK2Ryb3Ag cHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKKworY3JlYXRlIHByb2NlZHVyZSB0ZXN0X3Jlc2ln bmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgbm90X2ZvdW5kIENPTkRJVElPTiBGT1IgU1FMU1RBVEUg IjAyQUJDIjsKKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCisgIGJlZ2luCisg ICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMIFNRTFNUQVRFICIwMjIy MiIgU0VUCisgICAgICBNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gbm90IGZvdW5kIiwKKyAg ICAgIE1ZU1FMX0VSUk5PID0gNTU1NSA7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7Cisg IGVuZDsKKworICBTSUdOQUwgbm90X2ZvdW5kIFNFVAorICAgIE1FU1NBR0VfVEVYVCA9ICJSYWlz aW5nIGEgbm90IGZvdW5kIiwKKyAgICBNWVNRTF9FUlJOTyA9IDEwMTI7CitlbmQgJCQKKworLS1l cnJvciA1NTU1CitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorc2hvdyB3YXJuaW5ncyAkJAorZHJv cCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVz aWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSBub3RfZm91bmQgQ09ORElUSU9OIEZPUiBTUUxTVEFU RSAiMDJBQkMiOworICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIDEwMTIKKyAgYmVnaW4K KyAgICBzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CisgICAgUkVTSUdOQUwgU1FMU1RBVEUgIjMz MzMzIiBTRVQKKyAgICAgIE1FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byBlcnJvciIsCisgICAg ICBNWVNRTF9FUlJOTyA9IDU1NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBl bmQ7CisKKyAgU0lHTkFMIG5vdF9mb3VuZCBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2lu ZyBhIG5vdCBmb3VuZCIsCisgICAgTVlTUUxfRVJSTk8gPSAxMDEyOworZW5kICQkCisKKy0tZXJy b3IgNTU1NQorY2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK3Nob3cgd2FybmluZ3MgJCQKK2Ryb3Ag cHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQKKworIyAzIHRlc3RzOgorIyB7U2lnbmFsZWQgZXJy b3J9CisjIC0tPiBSRVNJR05BTCBTUUxTVEFURSB7d2FybmluZywgbm90IGZvdW5kLCBlcnJvcn0g U0VUIC4uLgorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KKyAgREVD TEFSRSBlcnJvciBDT05ESVRJT04gRk9SIFNRTFNUQVRFICJBQUFBQSI7CisgIERFQ0xBUkUgQ09O VElOVUUgSEFORExFUiBmb3IgMTAxMgorICBiZWdpbgorICAgIHNlbGVjdCAiYmVmb3JlIFJFU0lH TkFMIjsKKyAgICBSRVNJR05BTCBTUUxTVEFURSAiMDEyMjIiIFNFVAorICAgICAgTUVTU0FHRV9U RVhUID0gIlJFU0lHTkFMIHRvIHdhcm5pbmciLAorICAgICAgTVlTUUxfRVJSTk8gPSA1NTU1IDsK KyAgICBzZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKKyAgZW5kOworCisgIFNJR05BTCBlcnJvciBT RVQKKyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhbiBlcnJvciIsCisgICAgTVlTUUxfRVJS Tk8gPSAxMDEyOworZW5kICQkCisKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitkcm9wIHByb2Nl ZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgp CitiZWdpbgorICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIkFBQUFBIjsK KyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCisgIGJlZ2luCisgICAgc2VsZWN0 ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMIFNRTFNUQVRFICIwMjIyMiIgU0VUCisg ICAgICBNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gbm90IGZvdW5kIiwKKyAgICAgIE1ZU1FM X0VSUk5PID0gNTU1NSA7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CisgIGVuZDsKKwor ICBTSUdOQUwgZXJyb3IgU0VUCisgICAgTUVTU0FHRV9URVhUID0gIlJhaXNpbmcgYW4gZXJyb3Ii LAorICAgIE1ZU1FMX0VSUk5PID0gMTAxMjsKK2VuZCAkJAorCistLWVycm9yIDU1NTUKK2NhbGwg dGVzdF9yZXNpZ25hbCgpICQkCitzaG93IHdhcm5pbmdzICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0 X3Jlc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgor ICBERUNMQVJFIGVycm9yIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIkFBQUFBIjsKKyAgREVDTEFS RSBDT05USU5VRSBIQU5ETEVSIGZvciAxMDEyCisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUg UkVTSUdOQUwiOworICAgIFJFU0lHTkFMIFNRTFNUQVRFICIzMzMzMyIgU0VUCisgICAgICBNRVNT QUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gZXJyb3IiLAorICAgICAgTVlTUUxfRVJSTk8gPSA1NTU1 IDsKKyAgICBzZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKKyAgZW5kOworCisgIFNJR05BTCBlcnJv ciBTRVQKKyAgICBNRVNTQUdFX1RFWFQgPSAiUmFpc2luZyBhbiBlcnJvciIsCisgICAgTVlTUUxf RVJSTk8gPSAxMDEyOworZW5kICQkCisKKy0tZXJyb3IgNTU1NQorY2FsbCB0ZXN0X3Jlc2lnbmFs KCkgJCQKK3Nob3cgd2FybmluZ3MgJCQKK2Ryb3AgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwgJCQK KworIyAzIHRlc3RzOgorIyB7d2FybmluZ30KKyMgLS0+IFJFU0lHTkFMIFNRTFNUQVRFIHt3YXJu aW5nLCBub3QgZm91bmQsIGVycm9yfSBTRVQgLi4uCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9y ZXNpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIHNxbHdhcm5p bmcKKyAgYmVnaW4KKyAgICBzZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CisgICAgUkVTSUdOQUwg U1FMU1RBVEUgIjAxMTExIiBTRVQKKyAgICAgIE1FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byBh IHdhcm5pbmciLAorICAgICAgTVlTUUxfRVJSTk8gPSA1NTU1IDsKKyAgICBzZWxlY3QgImFmdGVy IFJFU0lHTkFMIjsKKyAgZW5kOworCisgIGluc2VydCBpbnRvIHRfd2FybiBzZXQgYT0gOTk5OTk5 OTk5OTk5OTk5OTsKK2VuZCAkJAorCitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorZHJvcCBwcm9j ZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwo KQorYmVnaW4KKyAgREVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBzcWx3YXJuaW5nCisgIGJl Z2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMIFNRTFNUQVRF ICIwMjQ0NCIgU0VUCisgICAgICBNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gYSBub3QgZm91 bmQiLAorICAgICAgTVlTUUxfRVJSTk8gPSA1NTU1IDsKKyAgICBzZWxlY3QgImFmdGVyIFJFU0lH TkFMIjsKKyAgZW5kOworCisgIGluc2VydCBpbnRvIHRfd2FybiBzZXQgYT0gOTk5OTk5OTk5OTk5 OTk5OTsKK2VuZCAkJAorCistLWVycm9yIDU1NTUKK2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitz aG93IHdhcm5pbmdzICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQkCisKK2NyZWF0 ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIENPTlRJTlVFIEhB TkRMRVIgZm9yIHNxbHdhcm5pbmcKKyAgYmVnaW4KKyAgICBzZWxlY3QgImJlZm9yZSBSRVNJR05B TCI7CisgICAgUkVTSUdOQUwgU1FMU1RBVEUgIjQ0NDQ0IiBTRVQKKyAgICAgIE1FU1NBR0VfVEVY VCA9ICJSRVNJR05BTCB0byBhbiBlcnJvciIsCisgICAgICBNWVNRTF9FUlJOTyA9IDU1NTUgOwor ICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7CisKKyAgaW5zZXJ0IGludG8gdF93 YXJuIHNldCBhPSA5OTk5OTk5OTk5OTk5OTk5OworZW5kICQkCisKKy0tZXJyb3IgNTU1NQorY2Fs bCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK3Nob3cgd2FybmluZ3MgJCQKK2Ryb3AgcHJvY2VkdXJlIHRl c3RfcmVzaWduYWwgJCQKKworIyAzIHRlc3RzOgorIyB7bm90IGZvdW5kfQorIyAtLT4gUkVTSUdO QUwgU1FMU1RBVEUge3dhcm5pbmcsIG5vdCBmb3VuZCwgZXJyb3J9IFNFVCAuLi4KKworY3JlYXRl IHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgeCBpbnRlZ2VyOwor ICBERUNMQVJFIGMgY3Vyc29yIGZvciBzZWxlY3QgKiBmcm9tIHRfY3Vyc29yOworICBERUNMQVJF IENPTlRJTlVFIEhBTkRMRVIgZm9yIG5vdCBmb3VuZAorICBiZWdpbgorICAgIHNlbGVjdCAiYmVm b3JlIFJFU0lHTkFMIjsKKyAgICBSRVNJR05BTCBTUUxTVEFURSAiMDExMTEiIFNFVAorICAgICAg TUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIHRvIGEgd2FybmluZyIsCisgICAgICBNWVNRTF9FUlJO TyA9IDU1NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7CisKKyAgb3Bl biBjOworICBmZXRjaCBjIGludG8geDsKKyAgY2xvc2UgYzsKK2VuZCAkJAorCitjYWxsIHRlc3Rf cmVzaWduYWwoKSAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUg cHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KKyAgREVDTEFSRSB4IGludGVnZXI7Cisg IERFQ0xBUkUgYyBjdXJzb3IgZm9yIHNlbGVjdCAqIGZyb20gdF9jdXJzb3I7CisgIERFQ0xBUkUg Q09OVElOVUUgSEFORExFUiBmb3Igbm90IGZvdW5kCisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZv cmUgUkVTSUdOQUwiOworICAgIFJFU0lHTkFMIFNRTFNUQVRFICIwMjQ0NCIgU0VUCisgICAgICBN RVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwgdG8gYSBub3QgZm91bmQiLAorICAgICAgTVlTUUxfRVJS Tk8gPSA1NTU1IDsKKyAgICBzZWxlY3QgImFmdGVyIFJFU0lHTkFMIjsKKyAgZW5kOworCisgIG9w ZW4gYzsKKyAgZmV0Y2ggYyBpbnRvIHg7CisgIGNsb3NlIGM7CitlbmQgJCQKKworLS1lcnJvciA1 NTU1CitjYWxsIHRlc3RfcmVzaWduYWwoKSAkJAorc2hvdyB3YXJuaW5ncyAkJAorZHJvcCBwcm9j ZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwo KQorYmVnaW4KKyAgREVDTEFSRSB4IGludGVnZXI7CisgIERFQ0xBUkUgYyBjdXJzb3IgZm9yIHNl bGVjdCAqIGZyb20gdF9jdXJzb3I7CisgIERFQ0xBUkUgQ09OVElOVUUgSEFORExFUiBmb3Igbm90 IGZvdW5kCisgIGJlZ2luCisgICAgc2VsZWN0ICJiZWZvcmUgUkVTSUdOQUwiOworICAgIFJFU0lH TkFMIFNRTFNUQVRFICI0NDQ0NCIgU0VUCisgICAgICBNRVNTQUdFX1RFWFQgPSAiUkVTSUdOQUwg dG8gYW4gZXJyb3IiLAorICAgICAgTVlTUUxfRVJSTk8gPSA1NTU1IDsKKyAgICBzZWxlY3QgImFm dGVyIFJFU0lHTkFMIjsKKyAgZW5kOworCisgIG9wZW4gYzsKKyAgZmV0Y2ggYyBpbnRvIHg7Cisg IGNsb3NlIGM7CitlbmQgJCQKKworLS1lcnJvciA1NTU1CitjYWxsIHRlc3RfcmVzaWduYWwoKSAk JAorc2hvdyB3YXJuaW5ncyAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCAkJAorCisj IDMgdGVzdHM6CisjIHtlcnJvcn0KKyMgLS0+IFJFU0lHTkFMIFNRTFNUQVRFIHt3YXJuaW5nLCBu b3QgZm91bmQsIGVycm9yfSBTRVQgLi4uCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25h bCgpCitiZWdpbgorICBERUNMQVJFIENPTlRJTlVFIEhBTkRMRVIgZm9yIHNxbGV4Y2VwdGlvbgor ICBiZWdpbgorICAgIHNlbGVjdCAiYmVmb3JlIFJFU0lHTkFMIjsKKyAgICBSRVNJR05BTCBTUUxT VEFURSAiMDExMTEiIFNFVAorICAgICAgTUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIHRvIGEgd2Fy bmluZyIsCisgICAgICBNWVNRTF9FUlJOTyA9IDU1NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIgUkVT SUdOQUwiOworICBlbmQ7CisKKyAgZHJvcCB0YWJsZSBub19zdWNoX3RhYmxlOworZW5kICQkCisK K2NhbGwgdGVzdF9yZXNpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3Jlc2lnbmFsICQk CisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9yZXNpZ25hbCgpCitiZWdpbgorICBERUNMQVJFIENP TlRJTlVFIEhBTkRMRVIgZm9yIHNxbGV4Y2VwdGlvbgorICBiZWdpbgorICAgIHNlbGVjdCAiYmVm b3JlIFJFU0lHTkFMIjsKKyAgICBSRVNJR05BTCBTUUxTVEFURSAiMDI0NDQiIFNFVAorICAgICAg TUVTU0FHRV9URVhUID0gIlJFU0lHTkFMIHRvIGEgbm90IGZvdW5kIiwKKyAgICAgIE1ZU1FMX0VS Uk5PID0gNTU1NSA7CisgICAgc2VsZWN0ICJhZnRlciBSRVNJR05BTCI7CisgIGVuZDsKKworICBk cm9wIHRhYmxlIG5vX3N1Y2hfdGFibGU7CitlbmQgJCQKKworLS1lcnJvciA1NTU1CitjYWxsIHRl c3RfcmVzaWduYWwoKSAkJAorc2hvdyB3YXJuaW5ncyAkJAorZHJvcCBwcm9jZWR1cmUgdGVzdF9y ZXNpZ25hbCAkJAorCitjcmVhdGUgcHJvY2VkdXJlIHRlc3RfcmVzaWduYWwoKQorYmVnaW4KKyAg REVDTEFSRSBDT05USU5VRSBIQU5ETEVSIGZvciBzcWxleGNlcHRpb24KKyAgYmVnaW4KKyAgICBz ZWxlY3QgImJlZm9yZSBSRVNJR05BTCI7CisgICAgUkVTSUdOQUwgU1FMU1RBVEUgIjQ0NDQ0IiBT RVQKKyAgICAgIE1FU1NBR0VfVEVYVCA9ICJSRVNJR05BTCB0byBhbiBlcnJvciIsCisgICAgICBN WVNRTF9FUlJOTyA9IDU1NTUgOworICAgIHNlbGVjdCAiYWZ0ZXIgUkVTSUdOQUwiOworICBlbmQ7 CisKKyAgZHJvcCB0YWJsZSBub19zdWNoX3RhYmxlOworZW5kICQkCisKKy0tZXJyb3IgNTU1NQor Y2FsbCB0ZXN0X3Jlc2lnbmFsKCkgJCQKK3Nob3cgd2FybmluZ3MgJCQKK2Ryb3AgcHJvY2VkdXJl IHRlc3RfcmVzaWduYWwgJCQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIE1vcmUgY29tcGxleCBjYXNlcworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKy0tZGlzYWJs ZV93YXJuaW5ncworZHJvcCBwcm9jZWR1cmUgaWYgZXhpc3RzIHBldGVyX3AxICQkCitkcm9wIHBy b2NlZHVyZSBpZiBleGlzdHMgcGV0ZXJfcDIgJCQKKy0tZW5hYmxlX3dhcm5pbmdzCisKK0NSRUFU RSBQUk9DRURVUkUgcGV0ZXJfcDEgKCkKK0JFR0lOCisgIERFQ0xBUkUgeCBDT05ESVRJT04gRk9S IDEyMzE7CisgIERFQ0xBUkUgRVhJVCBIQU5ETEVSIEZPUiB4CisgIEJFR0lOCisgICAgU0VMRUNU ICcyJzsKKyAgICBSRVNJR05BTCBTRVQgTVlTUUxfRVJSTk8gPSA5OTk5OworICBFTkQ7CisKKyAg QkVHSU4KKyAgICBERUNMQVJFIEVYSVQgSEFORExFUiBGT1IgeAorICAgIEJFR0lOCisgICAgICBT RUxFQ1QgJzEnOworICAgICAgUkVTSUdOQUwgU0VUIFNDSEVNQV9OQU1FID0gJ3Rlc3QnOworICAg IEVORDsKKyAgICBTRVQgQEBzcWxfbW9kZT1OVUxMOworICBFTkQ7CitFTkQKKyQkCisKK0NSRUFU RSBQUk9DRURVUkUgcGV0ZXJfcDIgKCkKK0JFR0lOCisgIERFQ0xBUkUgeCBDT05ESVRJT04gZm9y IDk5OTk7CisgIERFQ0xBUkUgRVhJVCBIQU5ETEVSIEZPUiB4CisgIEJFR0lOCisgICAgU0VMRUNU ICczJzsKKyAgICBSRVNJR05BTCBTRVQgTUVTU0FHRV9URVhUID0gJ0hpLCBJIGFtIGEgdXNlbGVz cyBlcnJvciBtZXNzYWdlJzsKKyAgRU5EOworICBDQUxMIHBldGVyX3AxKCk7CitFTkQKKyQkCisK KyMKKyMgSGVyZSwgUkVTSUdOQUwgb25seSBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGNhdWdodCwK KyMgc28gdGhlcmUgaXMgb25seSAxIGNvbmRpdGlvbiBhdCB0aGUgZW5kCisjIFRoZSBmaW5hbCBT UUxTVEFURSBpcyA0MjAwMCAoaXQgY29tZXMgZnJvbSB0aGUgZXJyb3IgMTIzMSksCisjIHNpbmNl IHRoZSBjb25kaXRpb24gYXR0cmlidXRlcyBhcmUgcHJlc2VydmVkLgorIworLS1lcnJvciA5OTk5 CitDQUxMIHBldGVyX3AyKCkgJCQKK3Nob3cgd2FybmluZ3MgJCQKKworZHJvcCBwcm9jZWR1cmUg cGV0ZXJfcDEgJCQKK2Ryb3AgcHJvY2VkdXJlIHBldGVyX3AyICQkCisKK0NSRUFURSBQUk9DRURV UkUgcGV0ZXJfcDEgKCkKK0JFR0lOCisgIERFQ0xBUkUgeCBDT05ESVRJT04gRk9SIFNRTFNUQVRF ICc0MjAwMCc7CisgIERFQ0xBUkUgRVhJVCBIQU5ETEVSIEZPUiB4CisgIEJFR0lOCisgICAgU0VM RUNUICcyJzsKKyAgICBSRVNJR05BTCB4IFNFVCBNWVNRTF9FUlJOTyA9IDk5OTk7CisgIEVORDsK KworICBCRUdJTgorICAgIERFQ0xBUkUgRVhJVCBIQU5ETEVSIEZPUiB4CisgICAgQkVHSU4KKyAg ICAgIFNFTEVDVCAnMSc7CisgICAgICBSRVNJR05BTCB4IFNFVAorICAgICAgICBTQ0hFTUFfTkFN RSA9ICd0ZXN0JywKKyAgICAgICAgTVlTUUxfRVJSTk89IDEyMzE7CisgICAgRU5EOworICAgIC8q IFJhaXNlcyBFUl9XUk9OR19WQUxVRV9GT1JfVkFSIDogMTIzMSwgU1FMU1RBVEUgNDIwMDAgKi8K KyAgICBTRVQgQEBzcWxfbW9kZT1OVUxMOworICBFTkQ7CitFTkQKKyQkCisKK0NSRUFURSBQUk9D RURVUkUgcGV0ZXJfcDIgKCkKK0JFR0lOCisgIERFQ0xBUkUgeCBDT05ESVRJT04gZm9yIFNRTFNU QVRFICc0MjAwMCc7CisgIERFQ0xBUkUgRVhJVCBIQU5ETEVSIEZPUiB4CisgIEJFR0lOCisgICAg U0VMRUNUICczJzsKKyAgICBSRVNJR05BTCB4IFNFVAorICAgICAgTUVTU0FHRV9URVhUID0gJ0hp LCBJIGFtIGEgdXNlbGVzcyBlcnJvciBtZXNzYWdlJywKKyAgICAgIE1ZU1FMX0VSUk5PID0gOTk5 OTsKKyAgRU5EOworICBDQUxMIHBldGVyX3AxKCk7CitFTkQKKyQkCisKKyMKKyMgSGVyZSwgIlJF U0lHTkFMIDxjb25kaXRpb24+IiBjcmVhdGUgYSBuZXcgY29uZGl0aW9uIGluIHRoZSBkaWFnbm9z dGljcworIyBhcmVhLCBzbyB0aGF0IHRoZXJlIGFyZSA0IGNvbmRpdGlvbnMgYXQgdGhlIGVuZC4K KyMKKy0tZXJyb3IgOTk5OQorQ0FMTCBwZXRlcl9wMigpICQkCitzaG93IHdhcm5pbmdzICQkCisK K2Ryb3AgcHJvY2VkdXJlIHBldGVyX3AxICQkCitkcm9wIHByb2NlZHVyZSBwZXRlcl9wMiAkJAor CisjCisjIFRlc3QgdGhlIHZhbHVlIG9mIE1FU1NBR0VfVEVYVCBpbiBSRVNJR05BTCB3aGVuIG5v IFNFVCBNRVNTQUdFX1RFWFQgY2xhdXNlCisjIGlzIHByb3ZpZGVkICh0aGUgZXhwZWN0ZWQgcmVz dWx0IGlzIHRoZSB0ZXh0IGZyb20gdGhlIFNJR05BTGVkIGNvbmRpdGlvbikKKyMKKworZHJvcCBw cm9jZWR1cmUgaWYgZXhpc3RzIHBldGVyX3AzICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgcGV0ZXJf cDMoKQorYmVnaW4KKyAgZGVjbGFyZSBjb250aW51ZSBoYW5kbGVyIGZvciBzcWxleGNlcHRpb24K KyAgICByZXNpZ25hbCBzcWxzdGF0ZSAnOTkwMDInIHNldCBteXNxbF9lcnJubyA9IDI7CisKKyAg c2lnbmFsIHNxbHN0YXRlICc5OTAwMScgc2V0IG15c3FsX2Vycm5vID0gMSwgbWVzc2FnZV90ZXh0 ID0gIk9yaWdpbmFsIjsKK2VuZCAkJAorCistLWVycm9yIDIKK2NhbGwgcGV0ZXJfcDMoKSAkJAor CisjIEV4cGVjdGluZyAyIGNvbmRpdGlvbnMsIGJvdGggd2l0aCB0aGUgdGV4dCAiT3JpZ2luYWwi CitzaG93IHdhcm5pbmdzICQkCisKK2Ryb3AgcHJvY2VkdXJlIHBldGVyX3AzICQkCisKK2RlbGlt aXRlciA7JCQKKworZHJvcCB0YWJsZSB0X3dhcm47Citkcm9wIHRhYmxlIHRfY3Vyc29yOworCgo9 PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC90L3NpZ25hbF9jb2RlLnRlc3QnCi0tLSBhL215c3Fs LXRlc3QvdC9zaWduYWxfY29kZS50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC90L3NpZ25hbF9jb2RlLnRlc3QJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApA QCAtMCwwICsxLDU3IEBACisjIENvcHlyaWdodCAoQykgMjAwOCBTdW4gTWljcm9zeXN0ZW1zLCBJ bmMKKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorIworIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorCisjIFRlc3RzIGZvciBT SUdOQUwgYW5kIFJFU0lHTkFMCisKKy0tIHNvdXJjZSBpbmNsdWRlL2hhdmVfZGVidWcuaW5jCisK K3VzZSB0ZXN0OworCistLWRpc2FibGVfd2FybmluZ3MKK2Ryb3AgcHJvY2VkdXJlIGlmIGV4aXN0 cyBzaWduYWxfcHJvYzsKK2Ryb3AgZnVuY3Rpb24gaWYgZXhpc3RzIHNpZ25hbF9mdW5jOworLS1l bmFibGVfd2FybmluZ3MKKworZGVsaW1pdGVyICQkOworCitjcmVhdGUgcHJvY2VkdXJlIHNpZ25h bF9wcm9jKCkKK2JlZ2luCisgIERFQ0xBUkUgZm9vIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgJzEy MzQ1JzsKKworICBTSUdOQUwgZm9vOworICBTSUdOQUwgZm9vIFNFVCBNRVNTQUdFX1RFWFQgPSAi VGhpcyBpcyBhbiBlcnJvciBtZXNzYWdlIjsKKyAgUkVTSUdOQUwgZm9vOworICBSRVNJR05BTCBm b28gU0VUIE1FU1NBR0VfVEVYVCA9ICJUaGlzIGlzIGFuIGVycm9yIG1lc3NhZ2UiOworZW5kICQk CisKK2NyZWF0ZSBmdW5jdGlvbiBzaWduYWxfZnVuYygpIHJldHVybnMgaW50CitiZWdpbgorICBE RUNMQVJFIGZvbyBDT05ESVRJT04gRk9SIFNRTFNUQVRFICcxMjM0NSc7CisKKyAgU0lHTkFMIGZv bzsKKyAgU0lHTkFMIGZvbyBTRVQgTUVTU0FHRV9URVhUID0gIlRoaXMgaXMgYW4gZXJyb3IgbWVz c2FnZSI7CisgIFJFU0lHTkFMIGZvbzsKKyAgUkVTSUdOQUwgZm9vIFNFVCBNRVNTQUdFX1RFWFQg PSAiVGhpcyBpcyBhbiBlcnJvciBtZXNzYWdlIjsKKyAgcmV0dXJuIDA7CitlbmQgJCQKKworZGVs aW1pdGVyIDskJAorCitzaG93IHByb2NlZHVyZSBjb2RlIHNpZ25hbF9wcm9jOworZHJvcCBwcm9j ZWR1cmUgc2lnbmFsX3Byb2M7CisKK3Nob3cgZnVuY3Rpb24gY29kZSBzaWduYWxfZnVuYzsKK2Ry b3AgZnVuY3Rpb24gc2lnbmFsX2Z1bmM7CisKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3Qv c2lnbmFsX2RlbW8xLnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC9zaWduYWxfZGVtbzEudGVzdAkx OTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9zaWduYWxfZGVtbzEu dGVzdAkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0wLDAgKzEsMzMzIEBACisjIENvcHly aWdodCAoQykgMjAwOCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMKKyMKKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor IyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3IFVTQQorCisjCisjIERlbW9uc3RyYXRlIGhvdyBTSUdOQUwgY2FuIGJlIHVz ZWQgdG8gZW5mb3JjZSBpbnRlZ3JpdHkgY29uc3RyYWludHMuCisjCisKKyMgTmFtaW5nOgorIyAt IFBPOiBQdXJjaGFzZSBPcmRlcgorIyAtIEFCOiBBZGRyZXNzIEJvb2sKKyMgLSBJTjogSW52ZW50 b3J5CisKKyMgU2ltcGxpZmllZCBzY2hlbWE6CisjCisjIFJlbGF0aW9uIDE6CisjIFBPX09SREVS IChQSzogcG9faWQpIDE6MSA8LS0tPiAwOk4gKEZLOiBwb19pZCkgUE9fT1JERVJfTElORQorIwor IyBSZWxhdGlvbiAyOgorIyBJTl9JTlZFTlRPUlkgKFBLOiBpdGVtX2lkKSAxOjEgPC0tLT4gMDpO IChGSzogaXRlbV9pZCkgUE9fT1JERVJfTElORQorIworIyBSZWxhdGlvbiAzOgorIyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArLS0+IDA6MSAoUEs6IHBlcnNvbl9pZCkgQUJfUEhZU0lD QUxfUEVSU09OCisjIFBPX09SREVSIChGSzogY3VzdF9pZCkgMToxIDwtLXwKKyMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKy0tPiAwOjEgKFBLOiBjb21wYW55X2lkKSBBQl9NT1JBTF9Q RVJTT04KKyMgVGhpcyBpcyBhbiAnYXJjJyByZWxhdGlvbnNoaXAgOikKKyMKKworCistLWRpc2Fi bGVfd2FybmluZ3MKK2Ryb3AgZGF0YWJhc2UgaWYgZXhpc3RzIGRlbW87CistLWVuYWJsZV93YXJu aW5ncworCitjcmVhdGUgZGF0YWJhc2UgZGVtbzsKKwordXNlIGRlbW87CisKK2NyZWF0ZSB0YWJs ZSBhYl9waHlzaWNhbF9wZXJzb24gKAorICBwZXJzb25faWQgaW50ZWdlciwKKyAgZmlyc3RfbmFt ZSBWQVJDSEFSKDUwKSwKKyAgbWlkZGxlX2luaXRpYWwgQ0hBUiwKKyAgbGFzdF9uYW1lIFZBUkNI QVIoNTApLAorICBwcmltYXJ5IGtleSAocGVyc29uX2lkKSk7CisKK2NyZWF0ZSB0YWJsZSBhYl9t b3JhbF9wZXJzb24gKAorICBjb21wYW55X2lkIGludGVnZXIsCisgIG5hbWUgVkFSQ0hBUigxMDAp LAorICBwcmltYXJ5IGtleSAoY29tcGFueV9pZCkpOworCitjcmVhdGUgdGFibGUgaW5faW52ZW50 b3J5ICgKKyAgaXRlbV9pZCBpbnRlZ2VyLAorICBkZXNjciBWQVJDSEFSKDUwKSwKKyAgc3RvY2sg aW50ZWdlciwKKyAgcHJpbWFyeSBrZXkgKGl0ZW1faWQpKTsKKworY3JlYXRlIHRhYmxlIHBvX29y ZGVyICgKKyAgcG9faWQgaW50ZWdlciBhdXRvX2luY3JlbWVudCwKKyAgY3VzdF90eXBlIGNoYXIs IC8qIGFyYyByZWxhdGlvbnNoaXAsIHNlZSBjdXN0X2lkICovCisgIGN1c3RfaWQgaW50ZWdlciwg LyogRksgdG8gYWJfcGh5c2ljYWxfcGVyc29uICpPUiogYWJfbW9yYWxfcGVyc29uICovCisgIHBy aW1hcnkga2V5IChwb19pZCkpOworCitjcmVhdGUgdGFibGUgcG9fb3JkZXJfbGluZSAoCisgIHBv X2lkIGludGVnZXIsIC8qIEZLIHRvIHBvX29yZGVyLnBvX2lkICovCisgIGxpbmVfbm8gaW50ZWdl ciwKKyAgaXRlbV9pZCBpbnRlZ2VyLCAvKiBGSyB0byBpbl9pbnZlbnRvcnkuaXRlbV9pZCAqLwor ICBxdHkgaW50ZWdlcik7CisKK2RlbGltaXRlciAkJDsKKworIworIyBTY2hlbWEgaW50ZWdyaXR5 IGVuZm9yY2VtZW50CisjCisKK2NyZWF0ZSBwcm9jZWR1cmUgY2hlY2tfcGtfcGVyc29uKGluIHBl cnNvbl90eXBlIGNoYXIsIGluIGlkIGludGVnZXIpCitiZWdpbgorICBkZWNsYXJlIHggaW50ZWdl cjsKKyAgZGVjbGFyZSBtc2cgdmFyY2hhcigxMjgpOworCisgIC8qCisgICAgVGVzdCBpbnRlZ3Jp dHkgY29uc3RyYWludHMgZm9yIGFuICdhcmMnIHJlbGF0aW9uc2hpcC4KKyAgICBCYXNlZCBvbiAn cGVyc29uX3R5cGUnLCAnaWQnIHBvaW50cyB0byBlaXRoZXIgYQorICAgIHBoeXNpY2FsIHBlcnNv biwgb3IgYSBtb3JhbCBwZXJzb24uCisgICovCisgIGNhc2UgcGVyc29uX3R5cGUKKyAgICB3aGVu ICdQJyB0aGVuCisgICAgYmVnaW4KKyAgICAgIHNlbGVjdCBjb3VudChwZXJzb25faWQpIGZyb20g YWJfcGh5c2ljYWxfcGVyc29uCisgICAgICAgIHdoZXJlIGFiX3BoeXNpY2FsX3BlcnNvbi5wZXJz b25faWQgPSBpZAorICAgICAgICBpbnRvIHg7CisKKyAgICAgIGlmICh4ICE9IDEpCisgICAgICB0 aGVuCisgICAgICAgIHNldCBtc2c9IGNvbmNhdCgnTm8gc3VjaCBwaHlzaWNhbCBwZXJzb24sIFBL OicsIGlkKTsKKyAgICAgICAgU0lHTkFMIFNRTFNUQVRFICc0NTAwMCcgU0VUCisgICAgICAgICAg TUVTU0FHRV9URVhUID0gbXNnLAorICAgICAgICAgIE1ZU1FMX0VSUk5PID0gMTAwMDA7CisgICAg ICBlbmQgaWY7CisgICAgZW5kOworICAgIAorICAgIHdoZW4gJ00nIHRoZW4KKyAgICBiZWdpbgor ICAgICAgc2VsZWN0IGNvdW50KGNvbXBhbnlfaWQpIGZyb20gYWJfbW9yYWxfcGVyc29uCisgICAg ICAgIHdoZXJlIGFiX21vcmFsX3BlcnNvbi5jb21wYW55X2lkID0gaWQKKyAgICAgICAgaW50byB4 OworCisgICAgICBpZiAoeCAhPSAxKQorICAgICAgdGhlbgorICAgICAgICBzZXQgbXNnPSBjb25j YXQoJ05vIHN1Y2ggbW9yYWwgcGVyc29uLCBQSzonLCBpZCk7CisgICAgICAgIFNJR05BTCBTUUxT VEFURSAnNDUwMDAnIFNFVAorICAgICAgICAgIE1FU1NBR0VfVEVYVCA9IG1zZywKKyAgICAgICAg ICBNWVNRTF9FUlJOTyA9IDEwMDAwOworICAgICAgZW5kIGlmOworICAgIGVuZDsKKworICAgIGVs c2UKKyAgICBiZWdpbgorICAgICAgc2V0IG1zZz0gY29uY2F0KCdObyBzdWNoIHBlcnNvbiB0eXBl OicsIHBlcnNvbl90eXBlKTsKKyAgICAgIFNJR05BTCBTUUxTVEFURSAnNDUwMDAnIFNFVAorICAg ICAgICBNRVNTQUdFX1RFWFQgPSBtc2csCisgICAgICAgIE1ZU1FMX0VSUk5PID0gMjAwMDA7Cisg ICAgZW5kOworICBlbmQgY2FzZTsKK2VuZAorJCQKKworY3JlYXRlIHByb2NlZHVyZSBjaGVja19w a19pbnZlbnRvcnkoaW4gaWQgaW50ZWdlcikKK2JlZ2luCisgIGRlY2xhcmUgeCBpbnRlZ2VyOwor ICBkZWNsYXJlIG1zZyB2YXJjaGFyKDEyOCk7CisKKyAgc2VsZWN0IGNvdW50KGl0ZW1faWQpIGZy b20gaW5faW52ZW50b3J5CisgICAgd2hlcmUgaW5faW52ZW50b3J5Lml0ZW1faWQgPSBpZAorICAg IGludG8geDsKKworICBpZiAoeCAhPSAxKQorICB0aGVuCisgICAgc2V0IG1zZz0gY29uY2F0KCdG YWlsZWQgaW50ZWdyaXR5IGNvbnN0cmFpbnQsIHRhYmxlIGluX2ludmVudG9yeSwgUEs6JywKKyAg ICAgICAgICAgICAgICAgICAgaWQpOworICAgIFNJR05BTCBTUUxTVEFURSAnNDUwMDAnIFNFVAor ICAgICAgTUVTU0FHRV9URVhUID0gbXNnLAorICAgICAgTVlTUUxfRVJSTk8gPSAxMDAwMDsKKyAg ZW5kIGlmOworZW5kCiskJAorCitjcmVhdGUgcHJvY2VkdXJlIGNoZWNrX3BrX29yZGVyKGluIGlk IGludGVnZXIpCitiZWdpbgorICBkZWNsYXJlIHggaW50ZWdlcjsKKyAgZGVjbGFyZSBtc2cgdmFy Y2hhcigxMjgpOworCisgIHNlbGVjdCBjb3VudChwb19pZCkgZnJvbSBwb19vcmRlcgorICAgIHdo ZXJlIHBvX29yZGVyLnBvX2lkID0gaWQKKyAgICBpbnRvIHg7CisKKyAgaWYgKHggIT0gMSkKKyAg dGhlbgorICAgIHNldCBtc2c9IGNvbmNhdCgnRmFpbGVkIGludGVncml0eSBjb25zdHJhaW50LCB0 YWJsZSBwb19vcmRlciwgUEs6JywgaWQpOworICAgIFNJR05BTCBTUUxTVEFURSAnNDUwMDAnIFNF VAorICAgICAgTUVTU0FHRV9URVhUID0gbXNnLAorICAgICAgTVlTUUxfRVJSTk8gPSAxMDAwMDsK KyAgZW5kIGlmOworZW5kCiskJAorCitjcmVhdGUgdHJpZ2dlciBwb19vcmRlcl9iaSBiZWZvcmUg aW5zZXJ0IG9uIHBvX29yZGVyCitmb3IgZWFjaCByb3cKK2JlZ2luCisgIGNhbGwgY2hlY2tfcGtf cGVyc29uKE5FVy5jdXN0X3R5cGUsIE5FVy5jdXN0X2lkKTsKK2VuZAorJCQKKworY3JlYXRlIHRy aWdnZXIgcG9fb3JkZXJfYnUgYmVmb3JlIHVwZGF0ZSBvbiBwb19vcmRlcgorZm9yIGVhY2ggcm93 CitiZWdpbgorICBjYWxsIGNoZWNrX3BrX3BlcnNvbihORVcuY3VzdF90eXBlLCBORVcuY3VzdF9p ZCk7CitlbmQKKyQkCisKK2NyZWF0ZSB0cmlnZ2VyIHBvX29yZGVyX2xpbmVfYmkgYmVmb3JlIGlu c2VydCBvbiBwb19vcmRlcl9saW5lCitmb3IgZWFjaCByb3cKK2JlZ2luCisgIGNhbGwgY2hlY2tf cGtfb3JkZXIoTkVXLnBvX2lkKTsKKyAgY2FsbCBjaGVja19wa19pbnZlbnRvcnkoTkVXLml0ZW1f aWQpOworZW5kCiskJAorCitjcmVhdGUgdHJpZ2dlciBwb19vcmRlcl9saW5lX2J1IGJlZm9yZSB1 cGRhdGUgb24gcG9fb3JkZXJfbGluZQorZm9yIGVhY2ggcm93CitiZWdpbgorICBjYWxsIGNoZWNr X3BrX29yZGVyKE5FVy5wb19pZCk7CisgIGNhbGwgY2hlY2tfcGtfaW52ZW50b3J5KE5FVy5pdGVt X2lkKTsKK2VuZAorJCQKKworIworIyBBcHBsaWNhdGlvbiBoZWxwZXJzCisjCisKK2NyZWF0ZSBw cm9jZWR1cmUgcG9fY3JlYXRlX29yZGVyKAorICBpbiBwX2N1c3RfdHlwZSBjaGFyLAorICBpbiBw X2N1c3RfaWQgaW50ZWdlciwKKyAgb3V0IGlkIGludGVnZXIpCitiZWdpbgorICBpbnNlcnQgaW50 byBwb19vcmRlciBzZXQgY3VzdF90eXBlID0gcF9jdXN0X3R5cGUsIGN1c3RfaWQgPSBwX2N1c3Rf aWQ7CisgIHNldCBpZCA9IGxhc3RfaW5zZXJ0X2lkKCk7CitlbmQKKyQkCisKK2NyZWF0ZSBwcm9j ZWR1cmUgcG9fYWRkX29yZGVyX2xpbmUoCisgIGluIHBvIGludGVnZXIsCisgIGluIGxpbmUgaW50 ZWdlciwKKyAgaW4gaXRlbSBpbnRlZ2VyLAorICBpbiBxIGludGVnZXIpCitiZWdpbgorICBpbnNl cnQgaW50byBwb19vcmRlcl9saW5lIHNldAorICAgIHBvX2lkID0gcG8sIGxpbmVfbm8gPSBsaW5l LCBpdGVtX2lkID0gaXRlbSwgcXR5ID0gcTsKK2VuZAorJCQKKworZGVsaW1pdGVyIDskJAorCitz ZWxlY3QgIkNyZWF0ZSBzYW1wbGUgZGF0YSI7CisKK2luc2VydCBpbnRvIGFiX3BoeXNpY2FsX3Bl cnNvbiB2YWx1ZXMKKyAgKCAxLCAiSm9obiIsICJBIiwgIkRvZSIpLAorICAoIDIsICJNYXJyeSIs ICJCIiwgIlNtaXRoIikKKzsKKworaW5zZXJ0IGludG8gYWJfbW9yYWxfcGVyc29uIHZhbHVlcwor ICAoIDMsICJBQ01FIHJlYWwgZXN0YXRlLCBJTkMiKSwKKyAgKCA0LCAiTG9jYWwgc2Nob29sIikK KzsKKworaW5zZXJ0IGludG8gaW5faW52ZW50b3J5IHZhbHVlcworICAoIDEwMCwgIlRhYmxlLCBk aW5uZXIiLCA1KSwKKyAgKCAxMDEsICJDaGFpciIsIDIwKSwKKyAgKCAyMDAsICJUYWJsZSwgY29m ZmVlIiwgMyksCisgICggMzAwLCAiU2Nob29sIHRhYmxlIiwgMjUpLAorICAoIDMwMSwgIlNjaG9v bCBjaGFpcnMiLCA1MCkKKzsKKworc2VsZWN0ICogZnJvbSBhYl9waHlzaWNhbF9wZXJzb24gb3Jk ZXIgYnkgcGVyc29uX2lkOworc2VsZWN0ICogZnJvbSBhYl9tb3JhbF9wZXJzb24gb3JkZXIgYnkg Y29tcGFueV9pZDsKK3NlbGVjdCAqIGZyb20gaW5faW52ZW50b3J5IG9yZGVyIGJ5IGl0ZW1faWQ7 CisKK3NlbGVjdCAiRW50ZXJpbmcgYW4gb3JkZXIgISI7CisKK3NldCBAbXlfcG8gPSAwOworCisv KiBKb2huIERvZSB3YW50cyAxIHRhYmxlIGFuZCA0IGNoYWlycyAqLworY2FsbCBwb19jcmVhdGVf b3JkZXIoIlAiLCAxLCBAbXlfcG8pOworCitjYWxsIHBvX2FkZF9vcmRlcl9saW5lIChAbXlfcG8s IDEsIDEwMCwgMSk7CitjYWxsIHBvX2FkZF9vcmRlcl9saW5lIChAbXlfcG8sIDIsIDEwMSwgNCk7 CisKKy8qIE1hcnJ5IFNtaXRoIHdhbnRzIGEgY29mZmVlIHRhYmxlICovCitjYWxsIHBvX2NyZWF0 ZV9vcmRlcigiUCIsIDIsIEBteV9wbyk7CisKK2NhbGwgcG9fYWRkX29yZGVyX2xpbmUgKEBteV9w bywgMSwgMjAwLCAxKTsKKworc2VsZWN0ICJFbnRlcmluZyBiYWQgZGF0YSBpbiBhbiBvcmRlciI7 CisKKyMgVGhlcmUgaXMgbm8gaXRlbSA5OTkgaW4gaW5faW52ZW50b3J5CistLWVycm9yIDEwMDAw CitjYWxsIHBvX2FkZF9vcmRlcl9saW5lIChAbXlfcG8sIDEsIDk5OSwgMSk7CisKK3NlbGVjdCAi RW50ZXJpbmcgYmFkIGRhdGEgaW4gYW4gdW5rbm93biBvcmRlciI7CisKKyMgVGhlcmUgaXMgbm8g b3JkZXIgOTkgaW4gcG9fb3JkZXIKKy0tZXJyb3IgMTAwMDAKK2NhbGwgcG9fYWRkX29yZGVyX2xp bmUgKDk5LCAxLCAxMDAsIDEpOworCitzZWxlY3QgIkVudGVyaW5nIGFuIG9yZGVyIGZvciBhbiB1 bmtub3duIGNvbXBhbnkiOworCisjIFRoZXJlIGlzIG5vIG1vcmFsIHBlcnNvbiBvZiBpZCA3Cist LWVycm9yIDEwMDAwCitjYWxsIHBvX2NyZWF0ZV9vcmRlcigiTSIsIDcsIEBteV9wbyk7CisKK3Nl bGVjdCAiRW50ZXJpbmcgYW4gb3JkZXIgZm9yIGFuIHVua25vd24gcGVyc29uIHR5cGUiOworCisj IFRoZXJlIGlzIG5vIHBlcnNvbiBvZiB0eXBlIFgKKy0tZXJyb3IgMjAwMDAKK2NhbGwgcG9fY3Jl YXRlX29yZGVyKCJYIiwgMSwgQG15X3BvKTsKKworLyogVGhlIGxvY2FsIHNjaG9vbCB3YW50cyAx MCBjbGFzcyB0YWJsZXMgYW5kIDIwIGNoYWlycyAqLworY2FsbCBwb19jcmVhdGVfb3JkZXIoIk0i LCA0LCBAbXlfcG8pOworCitjYWxsIHBvX2FkZF9vcmRlcl9saW5lIChAbXlfcG8sIDEsIDMwMCwg MTApOworY2FsbCBwb19hZGRfb3JkZXJfbGluZSAoQG15X3BvLCAyLCAzMDEsIDIwKTsKKworIyBS YXcgZGF0YQorc2VsZWN0ICogZnJvbSBwb19vcmRlcjsKK3NlbGVjdCAqIGZyb20gcG9fb3JkZXJf bGluZTsKKworIyBDcmVhdGl2ZSByZXBvcnRpbmcgLi4uCisKK3NlbGVjdCBwb19pZCBhcyAiUE8j IiwKKyAgKCBjYXNlIGN1c3RfdHlwZQorICB3aGVuICJQIiB0aGVuIGNvbmNhdCAocHAuZmlyc3Rf bmFtZSwKKyAgICAgICAgICAgICAgICAgICAiICIsCisgICAgICAgICAgICAgICAgICAgcHAubWlk ZGxlX2luaXRpYWwsCisgICAgICAgICAgICAgICAgICAgIiAiLAorICAgICAgICAgICAgICAgICAg IHBwLmxhc3RfbmFtZSkKKyAgd2hlbiAiTSIgdGhlbiBtcC5uYW1lCisgIGVuZCApIGFzICJTb2xk IHRvIgorICBmcm9tIHBvX29yZGVyIHBvCisgIGxlZnQgam9pbiBhYl9waHlzaWNhbF9wZXJzb24g cHAgb24gcG8uY3VzdF9pZCA9IHBwLnBlcnNvbl9pZAorICBsZWZ0IGpvaW4gYWJfbW9yYWxfcGVy c29uIG1wIG9uIHBvLmN1c3RfaWQgPSBjb21wYW55X2lkCis7CisKK3NlbGVjdCBwb19pZCBhcyAi UE8jIiwKKyAgb2wubGluZV9ubyBhcyAiTGluZSIsCisgIG9sLml0ZW1faWQgYXMgIkl0ZW0iLAor ICBpbnYuZGVzY3IgYXMgIkRlc2NyaXB0aW9uIiwKKyAgb2wucXR5IGFzICJRdWFudGl0eSIKKyAg ZnJvbSBwb19vcmRlcl9saW5lIG9sLCBpbl9pbnZlbnRvcnkgaW52CisgIHdoZXJlIGludi5pdGVt X2lkID0gb2wuaXRlbV9pZAorICBvcmRlciBieSBvbC5pdGVtX2lkLCBvbC5saW5lX25vOworCitk cm9wIGRhdGFiYXNlIGRlbW87CisKKwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3QvdC9zaWdu YWxfZGVtbzIudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3NpZ25hbF9kZW1vMi50ZXN0CTE5NzAt MDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L3NpZ25hbF9kZW1vMi50ZXN0 CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTAsMCArMSwyMDcgQEAKKyMgQ29weXJpZ2h0 IChDKSAyMDA4IFN1biBNaWNyb3N5c3RlbXMsIEluYworIworIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExLTEzMDcgVVNBCisKKyMKKyMgRGVtb25zdHJhdGUgaG93IFJFU0lHTkFMIGNhbiBiZSB1c2Vk IHRvICdjYXRjaCcgYW5kICdyZS10aHJvdycgYW4gZXJyb3IKKyMKKworLS1kaXNhYmxlX3dhcm5p bmdzCitkcm9wIGRhdGFiYXNlIGlmIGV4aXN0cyBkZW1vOworLS1lbmFibGVfd2FybmluZ3MKKwor Y3JlYXRlIGRhdGFiYXNlIGRlbW87CisKK3VzZSBkZW1vOworCitkZWxpbWl0ZXIgJCQ7CisKK2Ny ZWF0ZSBwcm9jZWR1cmUgcHJvY190b3BfYShwMSBpbnRlZ2VyKQorYmVnaW4KKyAgIyMgREVDTEFS RSBDT05USU5VRSBIQU5ETEVSIGZvciBTUUxFWENFUFRJT04sIE5PVCBGT1VORAorICBiZWdpbgor ICBlbmQ7CisKKyAgc2VsZWN0ICJTdGFydGluZyAuLi4iOworICBjYWxsIHByb2NfbWlkZGxlX2Eo cDEpOworICBzZWxlY3QgIlRoZSBlbmQiOworZW5kCiskJAorCitjcmVhdGUgcHJvY2VkdXJlIHBy b2NfbWlkZGxlX2EocDEgaW50ZWdlcikKK2JlZ2luCisgIERFQ0xBUkUgbCBpbnRlZ2VyOworICAj IHdpdGhvdXQgUkVTSUdOQUw6CisgICMgU2hvdWxkIGJlOiBERUNMQVJFIEVYSVQgSEFORExFUiBm b3IgU1FMRVhDRVBUSU9OLCBOT1QgRk9VTkQKKyAgREVDTEFSRSBFWElUIEhBTkRMRVIgZm9yIDEg Lyogbm90IHN1cmUgaG93IHRvIGhhbmRsZSBleGNlcHRpb25zICovCisgIGJlZ2luCisgICAgc2Vs ZWN0ICJPb3BzIC4uLiBub3cgd2hhdCA/IjsKKyAgZW5kOworCisgIHNlbGVjdCAiSW4gcHJvZF9t aWRkbGUoKSI7CisKKyAgY3JlYXRlIHRlbXBvcmFyeSB0YWJsZSB0MShhIGludGVnZXIsIGIgaW50 ZWdlcik7CisgIHNlbGVjdCBHRVRfTE9DSygidXNlcl9tdXRleCIsIDEwKSBpbnRvIGw7CisKKyAg aW5zZXJ0IGludG8gdDEgc2V0IGEgPSBwMSwgYiA9IHAxOworCisgIGNhbGwgcHJvY19ib3R0b21f YShwMSk7CisKKyAgc2VsZWN0IFJFTEVBU0VfTE9DSygidXNlcl9tdXRleCIpIGludG8gbDsKKyAg ZHJvcCB0ZW1wb3JhcnkgdGFibGUgdDE7CitlbmQKKyQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgcHJv Y19ib3R0b21fYShwMSBpbnRlZ2VyKQorYmVnaW4KKyAgc2VsZWN0ICJJbiBwcm9jX2JvdHRvbSgp IjsKKworICBpZiAocDEgPSAxKSB0aGVuCisgICAgYmVnaW4KKyAgICAgIHNlbGVjdCAiRG9pbmcg c29tZXRoaW5nIHRoYXQgd29ya3MgLi4uIjsKKyAgICAgIHNlbGVjdCAqIGZyb20gdDE7CisgICAg ZW5kOworICBlbmQgaWY7CisKKyAgaWYgKHAxID0gMikgdGhlbgorICAgIGJlZ2luCisgICAgICBz ZWxlY3QgIkRvaW5nIHNvbWV0aGluZyB0aGF0IGZhaWwgKHNpbXVsYXRlIGFuIGVycm9yKSAuLi4i OworICAgICAgZHJvcCB0YWJsZSBub19zdWNoX3RhYmxlOworICAgIGVuZDsKKyAgZW5kIGlmOwor CisgIGlmIChwMSA9IDMpIHRoZW4KKyAgICBiZWdpbgorICAgICAgc2VsZWN0ICJEb2luZyBzb21l dGhpbmcgdGhhdCAqU0hPVUxEKiB3b3JrcyAuLi4iOworICAgICAgc2VsZWN0ICogZnJvbSB0MTsK KyAgICBlbmQ7CisgIGVuZCBpZjsKKworZW5kCiskJAorCitkZWxpbWl0ZXIgOyQkCisKKyMKKyMg Q29kZSB3aXRob3V0IFJFU0lHTkFMOgorIyBlcnJvcnMgYXJlIGFwcGFyZW50IHRvIHRoZSBjYWxs ZXIsCisjIGJ1dCB0aGVyZSBpcyBubyBjbGVhbnVwIGNvZGUsCisjIHNvIHRoYXQgdGhlIGVudmly b25tZW50IChnZXRfbG9jaygpLCB0ZW1wb3JhcnkgdGFibGUpIGlzIHBvbGx1dGVkIC4uLgorIwor Y2FsbCBwcm9jX3RvcF9hKDEpOworCisjIEV4cGVjdGVkCistLWVycm9yIEVSX0JBRF9UQUJMRV9F UlJPUgorY2FsbCBwcm9jX3RvcF9hKDIpOworCisjIERpcnR5IHN0YXRlCistLWVycm9yIEVSX1RB QkxFX0VYSVNUU19FUlJPUgorY2FsbCBwcm9jX3RvcF9hKDMpOworCisjIERpcnR5IHN0YXRlCist LWVycm9yIEVSX1RBQkxFX0VYSVNUU19FUlJPUgorY2FsbCBwcm9jX3RvcF9hKDEpOworCitkcm9w IHRlbXBvcmFyeSB0YWJsZSBpZiBleGlzdHMgdDE7CisKK2RlbGltaXRlciAkJDsKKworY3JlYXRl IHByb2NlZHVyZSBwcm9jX3RvcF9iKHAxIGludGVnZXIpCitiZWdpbgorICBzZWxlY3QgIlN0YXJ0 aW5nIC4uLiI7CisgIGNhbGwgcHJvY19taWRkbGVfYihwMSk7CisgIHNlbGVjdCAiVGhlIGVuZCI7 CitlbmQKKyQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY19taWRkbGVfYihwMSBpbnRlZ2VyKQor YmVnaW4KKyAgREVDTEFSRSBsIGludGVnZXI7CisgIERFQ0xBUkUgRVhJVCBIQU5ETEVSIGZvciBT UUxFWENFUFRJT04sIE5PVCBGT1VORAorICBiZWdpbgorICAgIGJlZ2luCisgICAgICBERUNMQVJF IENPTlRJTlVFIEhBTkRMRVIgZm9yIFNRTEVYQ0VQVElPTiwgTk9UIEZPVU5ECisgICAgICBiZWdp bgorICAgICAgICAvKiBJZ25vcmUgZXJyb3JzIGZyb20gdGhlIGNsZWFudXAgY29kZSAqLworICAg ICAgZW5kOworCisgICAgICBzZWxlY3QgIkRvaW5nIGNsZWFudXAgISI7CisgICAgICBzZWxlY3Qg UkVMRUFTRV9MT0NLKCJ1c2VyX211dGV4IikgaW50byBsOworICAgICAgZHJvcCB0ZW1wb3Jhcnkg dGFibGUgdDE7CisgICAgZW5kOworCisgICAgUkVTSUdOQUw7CisgIGVuZDsKKworICBzZWxlY3Qg IkluIHByb2RfbWlkZGxlKCkiOworCisgIGNyZWF0ZSB0ZW1wb3JhcnkgdGFibGUgdDEoYSBpbnRl Z2VyLCBiIGludGVnZXIpOworICBzZWxlY3QgR0VUX0xPQ0soInVzZXJfbXV0ZXgiLCAxMCkgaW50 byBsOworCisgIGluc2VydCBpbnRvIHQxIHNldCBhID0gcDEsIGIgPSBwMTsKKworICBjYWxsIHBy b2NfYm90dG9tX2IocDEpOworCisgIHNlbGVjdCBSRUxFQVNFX0xPQ0soInVzZXJfbXV0ZXgiKSBp bnRvIGw7CisgIGRyb3AgdGVtcG9yYXJ5IHRhYmxlIHQxOworZW5kCiskJAorCitjcmVhdGUgcHJv Y2VkdXJlIHByb2NfYm90dG9tX2IocDEgaW50ZWdlcikKK2JlZ2luCisgIHNlbGVjdCAiSW4gcHJv Y19ib3R0b20oKSI7CisKKyAgaWYgKHAxID0gMSkgdGhlbgorICAgIGJlZ2luCisgICAgICBzZWxl Y3QgIkRvaW5nIHNvbWV0aGluZyB0aGF0IHdvcmtzIC4uLiI7CisgICAgICBzZWxlY3QgKiBmcm9t IHQxOworICAgIGVuZDsKKyAgZW5kIGlmOworCisgIGlmIChwMSA9IDIpIHRoZW4KKyAgICBiZWdp bgorICAgICAgc2VsZWN0ICJEb2luZyBzb21ldGhpbmcgdGhhdCBmYWlsIChzaW11bGF0ZSBhbiBl cnJvcikgLi4uIjsKKyAgICAgIGRyb3AgdGFibGUgbm9fc3VjaF90YWJsZTsKKyAgICBlbmQ7Cisg IGVuZCBpZjsKKworICBpZiAocDEgPSAzKSB0aGVuCisgICAgYmVnaW4KKyAgICAgIHNlbGVjdCAi RG9pbmcgc29tZXRoaW5nIHRoYXQgKlNIT1VMRCogd29ya3MgLi4uIjsKKyAgICAgIHNlbGVjdCAq IGZyb20gdDE7CisgICAgZW5kOworICBlbmQgaWY7CisKK2VuZAorJCQKKworZGVsaW1pdGVyIDsk JAorCisjCisjIENvZGUgd2l0aCBSRVNJR05BTDoKKyMgZXJyb3JzIGFyZSBhcHBhcmVudCB0byB0 aGUgY2FsbGVyLAorIyB0aGUgYnV0IGNsZWFudXAgY29kZSBkaWQgZ2V0IGEgY2hhbmNlIHRvIGFj dCAuLi4KKyMKKworY2FsbCBwcm9jX3RvcF9iKDEpOworCistLWVycm9yIEVSX0JBRF9UQUJMRV9F UlJPUgorY2FsbCBwcm9jX3RvcF9iKDIpOworCitjYWxsIHByb2NfdG9wX2IoMyk7CisKK2NhbGwg cHJvY190b3BfYigxKTsKKworZHJvcCBkYXRhYmFzZSBkZW1vOworCgo9PT0gYWRkZWQgZmlsZSAn bXlzcWwtdGVzdC90L3NpZ25hbF9kZW1vMy50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3Qvc2lnbmFs X2RlbW8zLnRlc3QJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3Qv c2lnbmFsX2RlbW8zLnRlc3QJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtMCwwICsxLDE1 OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDggU3VuIE1pY3Jvc3lzdGVtcywgSW5jCisjCisjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworIworIyBEZW1vbnN0cmF0ZSBob3cgUkVT SUdOQUwgY2FuIGJlIHVzZWQgdG8gcHJpbnQgYSBzdGFjayB0cmFjZQorIworCisjIFNhdmUgZGVm YXVsdHMKKworU0VUIEBzdGFydF9nbG9iYWxfdmFsdWUgPSBAQGdsb2JhbC5tYXhfZXJyb3JfY291 bnQ7CitTRUxFQ1QgQHN0YXJ0X2dsb2JhbF92YWx1ZTsKK1NFVCBAc3RhcnRfc2Vzc2lvbl92YWx1 ZSA9IEBAc2Vzc2lvbi5tYXhfZXJyb3JfY291bnQ7CitTRUxFQ1QgQHN0YXJ0X3Nlc3Npb25fdmFs dWU7CisKKy0tZGlzYWJsZV93YXJuaW5ncworZHJvcCBkYXRhYmFzZSBpZiBleGlzdHMgZGVtbzsK Ky0tZW5hYmxlX3dhcm5pbmdzCisKK2NyZWF0ZSBkYXRhYmFzZSBkZW1vOworCit1c2UgZGVtbzsK KworZGVsaW1pdGVyICQkOworCitjcmVhdGUgcHJvY2VkdXJlIHByb2NfMSgpCitiZWdpbgorICBk ZWNsYXJlIGV4aXQgaGFuZGxlciBmb3Igc3FsZXhjZXB0aW9uCisgICAgcmVzaWduYWwgc3Fsc3Rh dGUgJzQ1MDAwJyBzZXQgbWVzc2FnZV90ZXh0PSdPb3BzIGluIHByb2NfMSc7CisKKyAgY2FsbCBw cm9jXzIoKTsKK2VuZAorJCQKKworY3JlYXRlIHByb2NlZHVyZSBwcm9jXzIoKQorYmVnaW4KKyAg ZGVjbGFyZSBleGl0IGhhbmRsZXIgZm9yIHNxbGV4Y2VwdGlvbgorICAgIHJlc2lnbmFsIHNxbHN0 YXRlICc0NTAwMCcgc2V0IG1lc3NhZ2VfdGV4dD0nT29wcyBpbiBwcm9jXzInOworCisgIGNhbGwg cHJvY18zKCk7CitlbmQKKyQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY18zKCkKK2JlZ2luCisg IGRlY2xhcmUgZXhpdCBoYW5kbGVyIGZvciBzcWxleGNlcHRpb24KKyAgICByZXNpZ25hbCBzcWxz dGF0ZSAnNDUwMDAnIHNldCBtZXNzYWdlX3RleHQ9J09vcHMgaW4gcHJvY18zJzsKKworICBjYWxs IHByb2NfNCgpOworZW5kCiskJAorCitjcmVhdGUgcHJvY2VkdXJlIHByb2NfNCgpCitiZWdpbgor ICBkZWNsYXJlIGV4aXQgaGFuZGxlciBmb3Igc3FsZXhjZXB0aW9uCisgICAgcmVzaWduYWwgc3Fs c3RhdGUgJzQ1MDAwJyBzZXQgbWVzc2FnZV90ZXh0PSdPb3BzIGluIHByb2NfNCc7CisKKyAgY2Fs bCBwcm9jXzUoKTsKK2VuZAorJCQKKworY3JlYXRlIHByb2NlZHVyZSBwcm9jXzUoKQorYmVnaW4K KyAgZGVjbGFyZSBleGl0IGhhbmRsZXIgZm9yIHNxbGV4Y2VwdGlvbgorICAgIHJlc2lnbmFsIHNx bHN0YXRlICc0NTAwMCcgc2V0IG1lc3NhZ2VfdGV4dD0nT29wcyBpbiBwcm9jXzUnOworCisgIGNh bGwgcHJvY182KCk7CitlbmQKKyQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY182KCkKK2JlZ2lu CisgIGRlY2xhcmUgZXhpdCBoYW5kbGVyIGZvciBzcWxleGNlcHRpb24KKyAgICByZXNpZ25hbCBz cWxzdGF0ZSAnNDUwMDAnIHNldCBtZXNzYWdlX3RleHQ9J09vcHMgaW4gcHJvY182JzsKKworICBj YWxsIHByb2NfNygpOworZW5kCiskJAorCitjcmVhdGUgcHJvY2VkdXJlIHByb2NfNygpCitiZWdp bgorICBkZWNsYXJlIGV4aXQgaGFuZGxlciBmb3Igc3FsZXhjZXB0aW9uCisgICAgcmVzaWduYWwg c3Fsc3RhdGUgJzQ1MDAwJyBzZXQgbWVzc2FnZV90ZXh0PSdPb3BzIGluIHByb2NfNyc7CisKKyAg Y2FsbCBwcm9jXzgoKTsKK2VuZAorJCQKKworY3JlYXRlIHByb2NlZHVyZSBwcm9jXzgoKQorYmVn aW4KKyAgZGVjbGFyZSBleGl0IGhhbmRsZXIgZm9yIHNxbGV4Y2VwdGlvbgorICAgIHJlc2lnbmFs IHNxbHN0YXRlICc0NTAwMCcgc2V0IG1lc3NhZ2VfdGV4dD0nT29wcyBpbiBwcm9jXzgnOworCisg IGNhbGwgcHJvY185KCk7CitlbmQKKyQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgcHJvY185KCkKK2Jl Z2luCisgIGRlY2xhcmUgZXhpdCBoYW5kbGVyIGZvciBzcWxleGNlcHRpb24KKyAgICByZXNpZ25h bCBzcWxzdGF0ZSAnNDUwMDAnIHNldCBtZXNzYWdlX3RleHQ9J09vcHMgaW4gcHJvY185JzsKKwor ICAjIyBEbyBzb21ldGhpbmcgdGhhdCBmYWlscywgdG8gc2VlIGhvdyBlcnJvcnMgYXJlIHJlcG9y dGVkCisgIGRyb3AgdGFibGUgb29wc19pdF9pc19ub3RfaGVyZTsKK2VuZAorJCQKKworZGVsaW1p dGVyIDskJAorCistLSBlcnJvciBFUl9TSUdOQUxfRVhDRVBUSU9OCitjYWxsIHByb2NfMSgpOwor CisjIFRoaXMgaXMgdGhlIGludGVyZXN0aW5nIHBhcnQ6CisjIHRoZSBjb21wbGV0ZSBjYWxsIHN0 YWNrIGZyb20gdGhlIG9yaWdpbiBvZiBmYWlsdXJlIChwcm9jXzkpCisjIHRvIHRoZSB0b3AgbGV2 ZWwgY2FsbGVyIChwcm9jXzEpIGlzIGF2YWlsYWJsZSAuLi4KKworc2hvdyB3YXJuaW5nczsKKwor U0VUIEBAc2Vzc2lvbi5tYXhfZXJyb3JfY291bnQgPSA1OworU0VMRUNUIEBAc2Vzc2lvbi5tYXhf ZXJyb3JfY291bnQ7CisKKy0tIGVycm9yIEVSX1NJR05BTF9FWENFUFRJT04KK2NhbGwgcHJvY18x KCk7CitzaG93IHdhcm5pbmdzOworCitTRVQgQEBzZXNzaW9uLm1heF9lcnJvcl9jb3VudCA9IDc7 CitTRUxFQ1QgQEBzZXNzaW9uLm1heF9lcnJvcl9jb3VudDsKKworLS0gZXJyb3IgRVJfU0lHTkFM X0VYQ0VQVElPTgorY2FsbCBwcm9jXzEoKTsKK3Nob3cgd2FybmluZ3M7CisKK1NFVCBAQHNlc3Np b24ubWF4X2Vycm9yX2NvdW50ID0gOTsKK1NFTEVDVCBAQHNlc3Npb24ubWF4X2Vycm9yX2NvdW50 OworCistLSBlcnJvciBFUl9TSUdOQUxfRVhDRVBUSU9OCitjYWxsIHByb2NfMSgpOworc2hvdyB3 YXJuaW5nczsKKworZHJvcCBkYXRhYmFzZSBkZW1vOworCisjIFJlc3RvcmUgZGVmYXVsdHMKKwor U0VUIEBAZ2xvYmFsLm1heF9lcnJvcl9jb3VudCA9IEBzdGFydF9nbG9iYWxfdmFsdWU7CitTRUxF Q1QgQEBnbG9iYWwubWF4X2Vycm9yX2NvdW50OworU0VUIEBAc2Vzc2lvbi5tYXhfZXJyb3JfY291 bnQgPSBAc3RhcnRfc2Vzc2lvbl92YWx1ZTsKK1NFTEVDVCBAQHNlc3Npb24ubWF4X2Vycm9yX2Nv dW50OworCgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC90L3NpZ25hbF9zcWxtb2RlLnRlc3Qn Ci0tLSBhL215c3FsLXRlc3QvdC9zaWduYWxfc3FsbW9kZS50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6 MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L3NpZ25hbF9zcWxtb2RlLnRlc3QJMjAwOC0wOC0y NyAyMjoxNDowMyArMDAwMApAQCAtMCwwICsxLDEyMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDgg U3VuIE1pY3Jvc3lzdGVtcywgSW5jCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4K KyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBV U0EKKworIyBUZXN0cyBmb3IgU0lHTkFMLCBSRVNJR05BTCBhbmQgR0VUIERJQUdOT1NUSUNTCisK K1NFVCBAc2F2ZV9zcWxfbW9kZT1AQHNxbF9tb2RlOworCitTRVQgc3FsX21vZGU9Jyc7CisKKy0t ZGlzYWJsZV93YXJuaW5ncworZHJvcCBwcm9jZWR1cmUgaWYgZXhpc3RzIHA7Citkcm9wIHByb2Nl ZHVyZSBpZiBleGlzdHMgcDI7Citkcm9wIHByb2NlZHVyZSBpZiBleGlzdHMgcDM7CistLWVuYWJs ZV93YXJuaW5ncworCitkZWxpbWl0ZXIgJCQ7CisKK2NyZWF0ZSBwcm9jZWR1cmUgcCgpCitiZWdp bgorICBkZWNsYXJlIHV0ZjhfdmFyIFZBUkNIQVIoMTI4KSBDSEFSQUNURVIgU0VUIFVURjg7Cisg IHNldCB1dGY4X3ZhciA9IGNvbmNhdChyZXBlYXQoJ0EnLCAxMjgpLCAnWCcpOworICBzZWxlY3Qg bGVuZ3RoKHV0ZjhfdmFyKSwgdXRmOF92YXI7CitlbmQKKyQkCisKK2NyZWF0ZSBwcm9jZWR1cmUg cDIoKQorYmVnaW4KKyAgZGVjbGFyZSBtc2cgVkFSQ0hBUigxMjkpIENIQVJBQ1RFUiBTRVQgVVRG ODsKKyAgc2V0IG1zZyA9IGNvbmNhdChyZXBlYXQoJ0EnLCAxMjgpLCAnWCcpOworICBzZWxlY3Qg bGVuZ3RoKG1zZyksIG1zZzsKKworICBzaWduYWwgc3Fsc3RhdGUgJzU1NTU1JyBzZXQgbWVzc2Fn ZV90ZXh0ID0gbXNnOworZW5kCiskJAorCitjcmVhdGUgcHJvY2VkdXJlIHAzKCkKK2JlZ2luCisg IGRlY2xhcmUgbmFtZSBWQVJDSEFSKDY1KSBDSEFSQUNURVIgU0VUIFVURjg7CisgIHNldCBuYW1l ID0gY29uY2F0KHJlcGVhdCgnQScsIDY0KSwgJ1gnKTsKKyAgc2VsZWN0IGxlbmd0aChuYW1lKSwg bmFtZTsKKworICBzaWduYWwgc3Fsc3RhdGUgJzU1NTU1JyBzZXQKKyAgICBtZXNzYWdlX3RleHQg PSAnTWVzc2FnZScsCisgICAgdGFibGVfbmFtZSA9IG5hbWU7CitlbmQKKyQkCitkZWxpbWl0ZXIg OyQkCisKK2NhbGwgcDsKKworLS1lcnJvciBFUl9TSUdOQUxfRVhDRVBUSU9OCitjYWxsIHAyOwor CistLWVycm9yIEVSX1NJR05BTF9FWENFUFRJT04KK2NhbGwgcDM7CisKK2Ryb3AgcHJvY2VkdXJl IHA7Citkcm9wIHByb2NlZHVyZSBwMjsKK2Ryb3AgcHJvY2VkdXJlIHAzOworCitTRVQgc3FsX21v ZGU9J1NUUklDVF9BTExfVEFCTEVTJzsKKworZGVsaW1pdGVyICQkOworCitjcmVhdGUgcHJvY2Vk dXJlIHAoKQorYmVnaW4KKyAgZGVjbGFyZSB1dGY4X3ZhciBWQVJDSEFSKDEyOCkgQ0hBUkFDVEVS IFNFVCBVVEY4OworICBzZXQgdXRmOF92YXIgPSBjb25jYXQocmVwZWF0KCdBJywgMTI4KSwgJ1gn KTsKKyAgc2VsZWN0IGxlbmd0aCh1dGY4X3ZhciksIHV0ZjhfdmFyOworZW5kCiskJAorCitjcmVh dGUgcHJvY2VkdXJlIHAyKCkKK2JlZ2luCisgIGRlY2xhcmUgbXNnIFZBUkNIQVIoMTI5KSBDSEFS QUNURVIgU0VUIFVURjg7CisgIHNldCBtc2cgPSBjb25jYXQocmVwZWF0KCdBJywgMTI4KSwgJ1gn KTsKKyAgc2VsZWN0IGxlbmd0aChtc2cpLCBtc2c7CisKKyAgc2lnbmFsIHNxbHN0YXRlICc1NTU1 NScgc2V0IG1lc3NhZ2VfdGV4dCA9IG1zZzsKK2VuZAorJCQKKworY3JlYXRlIHByb2NlZHVyZSBw MygpCitiZWdpbgorICBkZWNsYXJlIG5hbWUgVkFSQ0hBUig2NSkgQ0hBUkFDVEVSIFNFVCBVVEY4 OworICBzZXQgbmFtZSA9IGNvbmNhdChyZXBlYXQoJ0EnLCA2NCksICdYJyk7CisgIHNlbGVjdCBs ZW5ndGgobmFtZSksIG5hbWU7CisKKyAgc2lnbmFsIHNxbHN0YXRlICc1NTU1NScgc2V0CisgICAg bWVzc2FnZV90ZXh0ID0gJ01lc3NhZ2UnLAorICAgIHRhYmxlX25hbWUgPSBuYW1lOworZW5kCisk JAorCitkZWxpbWl0ZXIgOyQkCisKKy0tZXJyb3IgRVJfREFUQV9UT09fTE9ORworY2FsbCBwOwor CistLWVycm9yIEVSX0NPTkRfSVRFTV9UT09fTE9ORworY2FsbCBwMjsKKworLS1lcnJvciBFUl9D T05EX0lURU1fVE9PX0xPTkcKK2NhbGwgcDM7CisKK2Ryb3AgcHJvY2VkdXJlIHA7Citkcm9wIHBy b2NlZHVyZSBwMjsKK2Ryb3AgcHJvY2VkdXJlIHAzOworCitTRVQgQEBzcWxfbW9kZT1Ac2F2ZV9z cWxfbW9kZTsKKwoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3QvdC9zaWduYWxfdXRmMzIudGVz dCcKLS0tIGEvbXlzcWwtdGVzdC90L3NpZ25hbF91dGYzMi50ZXN0CTE5NzAtMDEtMDEgMDA6MDA6 MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L3NpZ25hbF91dGYzMi50ZXN0CTIwMDgtMDgtMjcg MjI6MTQ6MDMgKzAwMDAKQEAgLTAsMCArMSw2MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDggU3Vu IE1pY3Jvc3lzdGVtcywgSW5jCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKyMK KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EK KworIyBUZXN0cyBmb3IgU0lHTkFMLCBSRVNJR05BTCBhbmQgR0VUIERJQUdOT1NUSUNTCisKKy0t c291cmNlIGluY2x1ZGUvaGF2ZV91dGYzMi5pbmMKKworLS1kaXNhYmxlX3dhcm5pbmdzCitkcm9w IHByb2NlZHVyZSBpZiBleGlzdHMgdGVzdF9zaWduYWw7CistLWVuYWJsZV93YXJuaW5ncworCitk ZWxpbWl0ZXIgJCQ7CisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwoKQorYmVnaW4KKyAg REVDTEFSRSBzb21ldGhpbmcgQ09ORElUSU9OIEZPUiBTUUxTVEFURSAiMDEwMDAiOworICBTSUdO QUwgc29tZXRoaW5nIFNFVCBNRVNTQUdFX1RFWFQgPQorICAgIF91dGYzMiAnYSc7CitlbmQgJCQK KworY2FsbCB0ZXN0X3NpZ25hbCgpICQkCitkcm9wIHByb2NlZHVyZSB0ZXN0X3NpZ25hbCAkJAor CitjcmVhdGUgcHJvY2VkdXJlIHRlc3Rfc2lnbmFsKCkKK2JlZ2luCisgIERFQ0xBUkUgc29tZXRo aW5nIENPTkRJVElPTiBGT1IgU1FMU1RBVEUgIjAxMDAwIjsKKyAgU0lHTkFMIHNvbWV0aGluZyBT RVQgTUVTU0FHRV9URVhUID0KKyAgICBfdXRmMzIgWCcwMDAwMDA0ODAwMDAwMDQ1MDAwMDAwNEMw MDAwMDA0QzAwMDAwMDRGJzsKK2VuZCAkJAorCitjYWxsIHRlc3Rfc2lnbmFsKCkgJCQKK2Ryb3Ag cHJvY2VkdXJlIHRlc3Rfc2lnbmFsICQkCisKK2NyZWF0ZSBwcm9jZWR1cmUgdGVzdF9zaWduYWwo KQorYmVnaW4KKyAgZGVjbGFyZSBjb250aW51ZSBoYW5kbGVyIGZvciBzcWxleGNlcHRpb24KKyAg YmVnaW4KKyAgICBkZWNsYXJlIG1zZyB2YXJjaGFyKDEyOCk7CisgICAgc2V0IG1zZz0gcmVwZWF0 KF91dGYzMiAweDAwMDEwMGNjLCAxMjgpOworICAgIHJlc2lnbmFsIHNldCBtZXNzYWdlX3RleHQg PSBtc2c7CisgIGVuZDsKKworICBzaWduYWwgc3Fsc3RhdGUgJzc3Nzc3JzsKK2VuZCAkJAorCist LWVycm9yIEVSX1NJR05BTF9FWENFUFRJT04KK2NhbGwgdGVzdF9zaWduYWwoKSAkJAorZHJvcCBw cm9jZWR1cmUgdGVzdF9zaWduYWwgJCQKKworZGVsaW1pdGVyIDskJAorCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL0NNYWtlTGlzdHMudHh0JwotLS0gYS9zcWwvQ01ha2VMaXN0cy50eHQJMjAwOC0w Ny0wOSAwNzoxMjo0MyArMDAwMAorKysgYi9zcWwvQ01ha2VMaXN0cy50eHQJMjAwOC0wOC0yNyAy MjoxNDowMyArMDAwMApAQCAtNzgsNiArNzgsNyBAQCBBRERfRVhFQ1VUQUJMRShteXNxbGQKICAg ICAgICAgICAgICAgIHNxbF9jb25uZWN0LmNjIHNjaGVkdWxlci5jYyAKICAgICAgICAgICAgICAg IGRkbF9ibG9ja2VyLmNjIHNpX29iamVjdHMuY2MKICAgICAgICAgICAgICAgIHNxbF9wcm9maWxl LmNjIGV2ZW50X3BhcnNlX2RhdGEuY2MgbWRsLmNjCisgICAgICAgICAgICAgICBzcWxfc2lnbmFs LmNjIHNxbF9maXhzdHJpbmcuY2MKICAgICAgICAgICAgICAgICR7UFJPSkVDVF9TT1VSQ0VfRElS fS9zcWwvc3FsX3lhY2MuY2MKICAgICAgICAgICAgICAgICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9z cWwvc3FsX3lhY2MuaAogICAgICAgICAgICAgICAgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2luY2x1 ZGUvbXlzcWxkX2Vycm9yLmgKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvTWFrZWZpbGUuYW0nCi0t LSBhL3NxbC9NYWtlZmlsZS5hbQkyMDA4LTA3LTA5IDA3OjEyOjQzICswMDAwCisrKyBiL3NxbC9N YWtlZmlsZS5hbQkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC02Miw3ICs2Miw3IEBAIG5v aW5zdF9IRUFERVJTID0JaXRlbS5oIGl0ZW1fZnVuYy5oIGl0ZW0KIAkJCWl0ZW1fY3JlYXRlLmgg aXRlbV9zdWJzZWxlY3QuaCBpdGVtX3Jvdy5oIFwKIAkJCW15c3FsX3ByaXYuaCBpdGVtX2dlb2Z1 bmMuaCBzcWxfYml0bWFwLmggXAogCQkJcHJvY2VkdXJlLmggc3FsX2NsYXNzLmggc3FsX2xleC5o IHNxbF9saXN0LmggXAotCQkJc3FsX21hcC5oIHNxbF9zdHJpbmcuaCB1bmlyZWcuaCBcCisJCQlz cWxfbWFwLmggc3FsX3N0cmluZy5oIHNxbF9maXhzdHJpbmcuaCB1bmlyZWcuaCBcCiAJCQlzcWxf ZXJyb3IuaCBmaWVsZC5oIGhhbmRsZXIuaCBteXNxbGRfc3VmZml4LmggXAogCQkJc3FsX3Byb2Zp bGUuaCBcCiAJCQloYV9uZGJjbHVzdGVyLmggaGFfbmRiY2x1c3Rlcl9jb25kLmggXApAQCAtODks NyArODksOCBAQCBub2luc3RfSEVBREVSUyA9CWl0ZW0uaCBpdGVtX2Z1bmMuaCBpdGVtCiAJCQlz cWxfcGFydGl0aW9uLmggcGFydGl0aW9uX2luZm8uaCBwYXJ0aXRpb25fZWxlbWVudC5oIFwKIAkJ CXByb2Jlcy5oIHNxbF9hdWRpdC5oIFwKIAkJCWNvbnRyaWJ1dG9ycy5oIHNxbF9zZXJ2ZXJzLmgg ZGRsX2Jsb2NrZXIuaCBcCi0JCQlzaV9vYmplY3RzLmggc3FsX3BsaXN0LmggbWRsLmgKKwkJCXNp X29iamVjdHMuaCBzcWxfcGxpc3QuaCBtZGwuaCBcCisJCQlzcWxfc2lnbmFsLmggc3FsX2ZpeHN0 cmluZy5oCiAKIG15c3FsZF9TT1VSQ0VTID0Jc3FsX2xleC5jYyBzcWxfaGFuZGxlci5jYyBzcWxf cGFydGl0aW9uLmNjIFwKIAkJCWl0ZW0uY2MgaXRlbV9zdW0uY2MgaXRlbV9idWZmLmNjIGl0ZW1f ZnVuYy5jYyBcCkBAIC0xMzYsNyArMTM3LDcgQEAgbXlzcWxkX1NPVVJDRVMgPQlzcWxfbGV4LmNj IHNxbF9oYW5kbGVyLgogCQkJc3FsX2J1aWx0aW4uY2Mgc3FsX3RhYmxlc3BhY2UuY2MgcGFydGl0 aW9uX2luZm8uY2MgXAogCQkJc3FsX3NlcnZlcnMuY2Mgc3FsX2F1ZGl0LmNjIHNoYTIuY2MgXAog CQkJZGRsX2Jsb2NrZXIuY2Mgc2lfb2JqZWN0cy5jYyBldmVudF9wYXJzZV9kYXRhLmNjIFwKLQkJ CW1kbC5jYworCQkJbWRsLmNjIHNxbF9zaWduYWwuY2Mgc3FsX2ZpeHN0cmluZy5jYwogCiBpZiBI QVZFX0RUUkFDRQogICBteXNxbGRfU09VUkNFUyArPSBwcm9iZXMuZAoKPT09IG1vZGlmaWVkIGZp bGUgJ3NxbC9iYWNrdXAvbG9nZ2VyLmNjJwotLS0gYS9zcWwvYmFja3VwL2xvZ2dlci5jYwkyMDA4 LTAzLTIxIDA5OjU3OjQ1ICswMDAwCisrKyBiL3NxbC9iYWNrdXAvbG9nZ2VyLmNjCTIwMDgtMDgt MjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTUwLDcgKzUwLDcgQEAgaW50IExvZ2dlcjo6d3JpdGVfbWVz c2FnZShsb2dfbGV2ZWw6OnZhbAogICAgICAgIGVycm9ycy5wdXNoX2Zyb250KG5ldyBNWVNRTF9F UlJPUig6OmN1cnJlbnRfdGhkLCBlcnJvcl9jb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9FUlJPUiwgbXNnKSk7CiAg ICAgIHNxbF9wcmludF9lcnJvcihvdXQpOwotICAgICBwdXNoX3dhcm5pbmdfcHJpbnRmKGN1cnJl bnRfdGhkLCBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9FUlJPUiwKKyAgICAgcHVzaF93YXJuaW5n X3ByaW50ZihjdXJyZW50X3RoZCwgTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfV0FSTiwKICAgICAg ICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlLCBtc2cpOwogICAgICBEQlVHX1BSSU5UKCJi YWNrdXBfbG9nIiwoIltFUlJPUl0gJXMiLCBvdXQpKTsKICAgICAgCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3FsL2RlcnJvci5jYycKLS0tIGEvc3FsL2RlcnJvci5jYwkyMDA4LTA0LTA5IDAwOjU2OjQ5 ICswMDAwCisrKyBiL3NxbC9kZXJyb3IuY2MJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAt MTIxLDcgKzEyMSw3IEBAIFBsZWFzZSBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGkK ICAgfQogICAKICAgLyogVE9ETzogQ29udmVydCB0aGUgY2hhcmFjdGVyIHNldCB0byBzZXJ2ZXIg c3lzdGVtIGNoYXJhY3RlciBzZXQgKi8KLSAgaWYgKCFnZXRfY2hhcnNldChoZWFkWzMwXSxNWUYo TVlfV01FKSkpCisgIGlmICghKGVycm9yX21lc3NhZ2VfY2hhcnNldF9pbmZvPSBnZXRfY2hhcnNl dChoZWFkWzMwXSxNWUYoTVlfV01FKSkpKQogICB7CiAgICAgc3FsX3ByaW50X2Vycm9yKCJDaGFy YWN0ZXIgc2V0ICMlZCBpcyBub3Qgc3VwcG9ydGVkIGZvciBtZXNzYWdlZmlsZSAnJXMnIiwKICAg ICAgICAgICAgICAgICAgICAgKGludCloZWFkWzMwXSxuYW1lKTsKCj09PSBtb2RpZmllZCBmaWxl ICdzcWwvZXZlbnRfc2NoZWR1bGVyLmNjJwotLS0gYS9zcWwvZXZlbnRfc2NoZWR1bGVyLmNjCTIw MDgtMDUtMDggMTY6MDE6MTUgKzAwMDAKKysrIGIvc3FsL2V2ZW50X3NjaGVkdWxlci5jYwkyMDA4 LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC03Miw5ICs3Miw5IEBAIHN0cnVjdCBzY2hlZHVsZXJf cGFyYW0gewogdm9pZAogRXZlbnRfd29ya2VyX3RocmVhZDo6cHJpbnRfd2FybmluZ3MoVEhEICp0 aGQsIEV2ZW50X2pvYl9kYXRhICpldCkKIHsKLSAgTVlTUUxfRVJST1IgKmVycjsKKyAgU1FMX2Nv bmRpdGlvbiAqY29uZDsKICAgREJVR19FTlRFUigiZXZleF9wcmludF93YXJuaW5ncyIpOwotICBp ZiAoIXRoZC0+d2Fybl9saXN0LmVsZW1lbnRzKQorICBpZiAoIXRoZC0+bWFpbl9kYS5tX3N0bXRf YXJlYS53YXJuX2xpc3QuZWxlbWVudHMpCiAgICAgREJVR19WT0lEX1JFVFVSTjsKIAogICBjaGFy IG1zZ19idWZbMTAgKiBTVFJJTkdfQlVGRkVSX1VTVUFMX1NJWkVdOwpAQCAtOTAsMTcgKzkwLDE4 IEBAIEV2ZW50X3dvcmtlcl90aHJlYWQ6OnByaW50X3dhcm5pbmdzKFRIRCAKICAgcHJlZml4LmFw cGVuZChldC0+bmFtZS5zdHIsIGV0LT5uYW1lLmxlbmd0aCwgc3lzdGVtX2NoYXJzZXRfaW5mbyk7 CiAgIHByZWZpeC5hcHBlbmQoIl0gIiwgMik7CiAKLSAgTGlzdF9pdGVyYXRvcl9mYXN0PE1ZU1FM X0VSUk9SPiBpdCh0aGQtPndhcm5fbGlzdCk7Ci0gIHdoaWxlICgoZXJyPSBpdCsrKSkKKyAgTGlz dF9pdGVyYXRvcl9mYXN0PFNRTF9jb25kaXRpb24+IGl0KHRoZC0+bWFpbl9kYS5tX3N0bXRfYXJl YS53YXJuX2xpc3QpOworICB3aGlsZSAoKGNvbmQ9IGl0KyspKQogICB7CiAgICAgU3RyaW5nIGVy cl9tc2cobXNnX2J1Ziwgc2l6ZW9mKG1zZ19idWYpLCBzeXN0ZW1fY2hhcnNldF9pbmZvKTsKICAg ICAvKiBzZXQgaXQgdG8gMCBvciB3ZSBzdGFydCBhZGRpbmcgYXQgdGhlIGVuZC4gVGhhdCdzIHRo ZSB0cmljayA7KSAqLwogICAgIGVycl9tc2cubGVuZ3RoKDApOwogICAgIGVycl9tc2cuYXBwZW5k KHByZWZpeCk7Ci0gICAgZXJyX21zZy5hcHBlbmQoZXJyLT5tc2csIHN0cmxlbihlcnItPm1zZyks IHN5c3RlbV9jaGFyc2V0X2luZm8pOwotICAgIERCVUdfQVNTRVJUKGVyci0+bGV2ZWwgPCAzKTsK LSAgICAoc3FsX3ByaW50X21lc3NhZ2VfaGFuZGxlcnNbZXJyLT5sZXZlbF0pKCIlKnMiLCBlcnJf bXNnLmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVycl9tc2cuY19wdHIoKSk7CisgICAgZXJyX21zZy5hcHBlbmQoY29uZC0+Z2V0X21lc3Nh Z2VfdGV4dCgpLAorICAgICAgICAgICAgICAgICAgIGNvbmQtPmdldF9tZXNzYWdlX29jdGV0X2xl bmd0aCgpLCBzeXN0ZW1fY2hhcnNldF9pbmZvKTsKKyAgICBEQlVHX0FTU0VSVChjb25kLT5nZXRf bGV2ZWwoKSA8IDMpOworICAgIChzcWxfcHJpbnRfbWVzc2FnZV9oYW5kbGVyc1tjb25kLT5nZXRf bGV2ZWwoKV0pKCIlKnMiLCBlcnJfbXNnLmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycl9tc2cuY19wdHIoKSk7CiAgIH0KICAg REJVR19WT0lEX1JFVFVSTjsKIH0KCj09PSBtb2RpZmllZCBmaWxlICdzcWwvaGFfbmRiY2x1c3Rl cl9iaW5sb2cuY2MnCi0tLSBhL3NxbC9oYV9uZGJjbHVzdGVyX2JpbmxvZy5jYwkyMDA4LTA3LTE0 IDEyOjQ5OjE5ICswMDAwCisrKyBiL3NxbC9oYV9uZGJjbHVzdGVyX2JpbmxvZy5jYwkyMDA4LTA4 LTI3IDIyOjE0OjAzICswMDAwCkBAIC05NjIsNiArOTYyLDIwIEBAIHN0cnVjdCBDbHVzdGVyX3Nj aGVtYQogICB1aW50MzIgYW55X3ZhbHVlOwogfTsKIAordm9pZCBwcmludF9jb3VsZF9ub3RfZGlz Y292ZXJfZXJyb3IoVEhEICp0aGQsIGNvbnN0IENsdXN0ZXJfc2NoZW1hICpzY2hlbWEpCit7Cisg IHNxbF9wcmludF9lcnJvcigiTkRCIEJpbmxvZzogQ291bGQgbm90IGRpc2NvdmVyIHRhYmxlICcl cy4lcycgZnJvbSAiCisgICAgICAgICAgICAgICAgICAiYmlubG9nIHNjaGVtYSBldmVudCAnJXMn IGZyb20gbm9kZSAlZC4gIgorICAgICAgICAgICAgICAgICAgIm15X2Vycm5vOiAlZCIsCisgICAg ICAgICAgICAgICAgICAgc2NoZW1hLT5kYiwgc2NoZW1hLT5uYW1lLCBzY2hlbWEtPnF1ZXJ5LAor ICAgICAgICAgICAgICAgICAgc2NoZW1hLT5ub2RlX2lkLCBteV9lcnJubyk7CisgIExpc3RfaXRl cmF0b3JfZmFzdDxTUUxfY29uZGl0aW9uPiBpdCh0aGQtPm1haW5fZGEubV9zdG10X2FyZWEud2Fy bl9saXN0KTsKKyAgU1FMX2NvbmRpdGlvbiAqY29uZDsKKyAgd2hpbGUgKChjb25kPSBpdCsrKSkK KyAgICBzcWxfcHJpbnRfd2FybmluZygiTkRCIEJpbmxvZzogKCVkKSVzIiwgY29uZC0+Z2V0X3Nx bF9lcnJubygpLAorICAgICAgICAgICAgICAgICAgICAgIGNvbmQtPmdldF9tZXNzYWdlX3RleHQo KSk7Cit9CisKIC8qCiAgIFRyYW5zZmVyIHNjaGVtYSB0YWJsZSBkYXRhIGludG8gY29ycmVzcG9u ZGluZyBzdHJ1Y3QKICovCkBAIC0xODk0LDE1ICsxOTA4LDcgQEAgbmRiX2JpbmxvZ190aHJlYWRf aGFuZGxlX3NjaGVtYV9ldmVudChUSAogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmIChu ZGJfY3JlYXRlX3RhYmxlX2Zyb21fZW5naW5lKHRoZCwgc2NoZW1hLT5kYiwgc2NoZW1hLT5uYW1l KSkKICAgICAgICAgICB7Ci0gICAgICAgICAgICBzcWxfcHJpbnRfZXJyb3IoIk5EQiBCaW5sb2c6 IENvdWxkIG5vdCBkaXNjb3ZlciB0YWJsZSAnJXMuJXMnIGZyb20gIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIm15X2Vycm5vOiAlZCIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2NoZW1hLT5kYiwgc2NoZW1hLT5uYW1lLCBzY2hlbWEtPnF1ZXJ5LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYS0+bm9kZV9pZCwgbXlfZXJybm8pOwot ICAgICAgICAgICAgTGlzdF9pdGVyYXRvcl9mYXN0PE1ZU1FMX0VSUk9SPiBpdCh0aGQtPndhcm5f bGlzdCk7Ci0gICAgICAgICAgICBNWVNRTF9FUlJPUiAqZXJyOwotICAgICAgICAgICAgd2hpbGUg KChlcnI9IGl0KyspKQotICAgICAgICAgICAgICBzcWxfcHJpbnRfd2FybmluZygiTkRCIEJpbmxv ZzogKCVkKSVzIiwgZXJyLT5jb2RlLCBlcnItPm1zZyk7CisgICAgICAgICAgICBwcmludF9jb3Vs ZF9ub3RfZGlzY292ZXJfZXJyb3IodGhkLCBzY2hlbWEpOwogICAgICAgICAgIH0KICAgICAgICAg ICBwdGhyZWFkX211dGV4X3VubG9jaygmTE9DS19vcGVuKTsKICAgICAgICAgICBsb2dfcXVlcnk9 IDE7CkBAIC0yMjU1LDE0ICsyMjYxLDcgQEAgbmRiX2JpbmxvZ190aHJlYWRfaGFuZGxlX3NjaGVt YV9ldmVudF9wbwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmIChuZGJfY3JlYXRlX3Rh YmxlX2Zyb21fZW5naW5lKHRoZCwgc2NoZW1hLT5kYiwgc2NoZW1hLT5uYW1lKSkKICAgICAgICAg ICB7Ci0gICAgICAgICAgICBzcWxfcHJpbnRfZXJyb3IoIk5EQiBCaW5sb2c6IENvdWxkIG5vdCBk aXNjb3ZlciB0YWJsZSAnJXMuJXMnIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiBteV9lcnJubzogJWQiLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYS0+ZGIsIHNjaGVtYS0+bmFtZSwgc2No ZW1hLT5xdWVyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWEtPm5vZGVfaWQs IG15X2Vycm5vKTsKLSAgICAgICAgICAgIExpc3RfaXRlcmF0b3JfZmFzdDxNWVNRTF9FUlJPUj4g aXQodGhkLT53YXJuX2xpc3QpOwotICAgICAgICAgICAgTVlTUUxfRVJST1IgKmVycjsKLSAgICAg ICAgICAgIHdoaWxlICgoZXJyPSBpdCsrKSkKLSAgICAgICAgICAgICAgc3FsX3ByaW50X3dhcm5p bmcoIk5EQiBCaW5sb2c6ICglZCklcyIsIGVyci0+Y29kZSwgZXJyLT5tc2cpOworICAgICAgICAg ICAgcHJpbnRfY291bGRfbm90X2Rpc2NvdmVyX2Vycm9yKHRoZCwgc2NoZW1hKTsKICAgICAgICAg ICB9CiAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJkxPQ0tfb3Blbik7CiAgICAgICAg IH0KQEAgLTI0MzQsMTQgKzI0MzMsNyBAQCBuZGJfYmlubG9nX3RocmVhZF9oYW5kbGVfc2NoZW1h X2V2ZW50X3BvCiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UgaWYgKG5kYl9jcmVhdGVfdGFi bGVfZnJvbV9lbmdpbmUodGhkLCBzY2hlbWEtPmRiLCBzY2hlbWEtPm5hbWUpKQogICAgICAgICAg IHsKLSAgICAgICAgICAgIHNxbF9wcmludF9lcnJvcigiTkRCIEJpbmxvZzogQ291bGQgbm90IGRp c2NvdmVyIHRhYmxlICclcy4lcycgZnJvbSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ImJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIG15X2Vycm5vOiAlZCIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hLT5kYiwgc2NoZW1hLT5uYW1lLCBzY2hl bWEtPnF1ZXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtYS0+bm9kZV9pZCwg bXlfZXJybm8pOwotICAgICAgICAgICAgTGlzdF9pdGVyYXRvcl9mYXN0PE1ZU1FMX0VSUk9SPiBp dCh0aGQtPndhcm5fbGlzdCk7Ci0gICAgICAgICAgICBNWVNRTF9FUlJPUiAqZXJyOwotICAgICAg ICAgICAgd2hpbGUgKChlcnI9IGl0KyspKQotICAgICAgICAgICAgICBzcWxfcHJpbnRfd2Fybmlu ZygiTkRCIEJpbmxvZzogKCVkKSVzIiwgZXJyLT5jb2RlLCBlcnItPm1zZyk7CisgICAgICAgICAg ICBwcmludF9jb3VsZF9ub3RfZGlzY292ZXJfZXJyb3IodGhkLCBzY2hlbWEpOwogICAgICAgICAg IH0KICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmTE9DS19vcGVuKTsKICAgICAgICAg fQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYW5kbGVyLmNjJwotLS0gYS9zcWwvaGFuZGxlci5j YwkyMDA4LTA4LTE2IDE1OjIyOjQ3ICswMDAwCisrKyBiL3NxbC9oYW5kbGVyLmNjCTIwMDgtMDgt MjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTE4NTQsMjMgKzE4NTQsMTcgQEAgc3RhdGljIGNvbnN0IGNo YXIgKmNoZWNrX2xvd2VyY2FzZV9uYW1lcwogc3RydWN0IEhhX2RlbGV0ZV90YWJsZV9lcnJvcl9o YW5kbGVyOiBwdWJsaWMgSW50ZXJuYWxfZXJyb3JfaGFuZGxlcgogewogcHVibGljOgotICB2aXJ0 dWFsIGJvb2wgaGFuZGxlX2Vycm9yKHVpbnQgc3FsX2Vycm5vLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgTVlTUUxfRVJST1I6OmVudW1fd2FybmluZ19sZXZlbCBsZXZlbCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUSEQgKnRoZCk7CisgIHZpcnR1YWwgYm9vbCBoYW5kbGVfY29uZGl0aW9u KFRIRCAqdGhkLCBjb25zdCBTUUxfY29uZGl0aW9uICpjb25kKTsKICAgY2hhciBidWZmW01ZU1FM X0VSUk1TR19TSVpFXTsKIH07CiAKIAogYm9vbAogSGFfZGVsZXRlX3RhYmxlX2Vycm9yX2hhbmRs ZXI6OgotaGFuZGxlX2Vycm9yKHVpbnQgc3FsX2Vycm5vLAotICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgTVlTUUxfRVJST1I6OmVudW1fd2FybmluZ19sZXZl bCBsZXZlbCwKLSAgICAgICAgICAgICBUSEQgKnRoZCkKK2hhbmRsZV9jb25kaXRpb24oVEhEICos IGNvbnN0IFNRTF9jb25kaXRpb24gKmNvbmQpCiB7CiAgIC8qIEdyYWIgdGhlIGVycm9yIG1lc3Nh Z2UgKi8KLSAgc3RybWFrZShidWZmLCBtZXNzYWdlLCBzaXplb2YoYnVmZiktMSk7CisgIHN0cm1h a2UoYnVmZiwgY29uZC0+Z2V0X21lc3NhZ2VfdGV4dCgpLCBzaXplb2YoYnVmZiktMSk7CiAgIHJl dHVybiBUUlVFOwogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2xleC5oJwotLS0gYS9zcWwv bGV4LmgJMjAwOC0wNy0wOSAwNzoxMjo0MyArMDAwMAorKysgYi9zcWwvbGV4LmgJMjAwOC0wOC0y NyAyMjoxNDowMyArMDAwMApAQCAtOTYsNiArOTYsNyBAQCBzdGF0aWMgU1lNQk9MIHN5bWJvbHNb XSA9IHsKICAgeyAiQ0FTQ0FERSIsCQlTWU0oQ0FTQ0FERSl9LAogICB7ICJDQVNDQURFRCIsICAg ICAgICAgU1lNKENBU0NBREVEKX0sCiAgIHsgIkNBU0UiLAkJU1lNKENBU0VfU1lNKX0sCisgIHsg IkNBVEFMT0dfTkFNRSIsICAgICBTWU0oQ0FUQUxPR19OQU1FX1NZTSl9LAogICB7ICJDSEFJTiIs CQlTWU0oQ0hBSU5fU1lNKX0sCiAgIHsgIkNIQU5HRSIsCQlTWU0oQ0hBTkdFKX0sCiAgIHsgIkNI QU5HRUQiLAkJU1lNKENIQU5HRUQpfSwKQEAgLTEwNSw2ICsxMDYsNyBAQCBzdGF0aWMgU1lNQk9M IHN5bWJvbHNbXSA9IHsKICAgeyAiQ0hFQ0siLAkJU1lNKENIRUNLX1NZTSl9LAogICB7ICJDSEVD S1NVTSIsCQlTWU0oQ0hFQ0tTVU1fU1lNKX0sCiAgIHsgIkNJUEhFUiIsCQlTWU0oQ0lQSEVSX1NZ TSl9LAorICB7ICJDTEFTU19PUklHSU4iLCAgICAgU1lNKENMQVNTX09SSUdJTl9TWU0pfSwKICAg eyAiQ0xJRU5UIiwJCVNZTShDTElFTlRfU1lNKX0sCiAgIHsgIkNMT1NFIiwJCVNZTShDTE9TRV9T WU0pfSwKICAgeyAiQ09BTEVTQ0UiLAkJU1lNKENPQUxFU0NFKX0sCkBAIC0xMTIsNiArMTE0LDcg QEAgc3RhdGljIFNZTUJPTCBzeW1ib2xzW10gPSB7CiAgIHsgIkNPTExBVEUiLAkJU1lNKENPTExB VEVfU1lNKX0sCiAgIHsgIkNPTExBVElPTiIsCVNZTShDT0xMQVRJT05fU1lNKX0sCiAgIHsgIkNP TFVNTiIsCQlTWU0oQ09MVU1OX1NZTSl9LAorICB7ICJDT0xVTU5fTkFNRSIsICAgICAgU1lNKENP TFVNTl9OQU1FX1NZTSl9LAogICB7ICJDT0xVTU5TIiwJCVNZTShDT0xVTU5TKX0sCiAgIHsgIkNP TU1FTlQiLAkJU1lNKENPTU1FTlRfU1lNKX0sCiAgIHsgIkNPTU1JVCIsCQlTWU0oQ09NTUlUX1NZ TSl9LApAQCAtMTI2LDYgKzEyOSw5IEBAIHN0YXRpYyBTWU1CT0wgc3ltYm9sc1tdID0gewogICB7 ICJDT05ORUNUSU9OIiwgICAgICAgU1lNKENPTk5FQ1RJT05fU1lNKX0sCiAgIHsgIkNPTlNJU1RF TlQiLAlTWU0oQ09OU0lTVEVOVF9TWU0pfSwKICAgeyAiQ09OU1RSQUlOVCIsCVNZTShDT05TVFJB SU5UKX0sCisgIHsgIkNPTlNUUkFJTlRfQ0FUQUxPRyIsIFNZTShDT05TVFJBSU5UX0NBVEFMT0df U1lNKX0sCisgIHsgIkNPTlNUUkFJTlRfTkFNRSIsICBTWU0oQ09OU1RSQUlOVF9OQU1FX1NZTSl9 LAorICB7ICJDT05TVFJBSU5UX1NDSEVNQSIsIFNZTShDT05TVFJBSU5UX1NDSEVNQV9TWU0pfSwK ICAgeyAiQ09OVEFJTlMiLCAgICAgICAgIFNZTShDT05UQUlOU19TWU0pfSwKICAgeyAiQ09OVEVY VCIsICAgIFNZTShDT05URVhUX1NZTSl9LAogICB7ICJDT05USU5VRSIsICAgICAgICAgU1lNKENP TlRJTlVFX1NZTSl9LApAQCAtMTQwLDYgKzE0Niw3IEBAIHN0YXRpYyBTWU1CT0wgc3ltYm9sc1td ID0gewogICB7ICJDVVJSRU5UX1RJTUVTVEFNUCIsIFNZTShOT1dfU1lNKX0sCiAgIHsgIkNVUlJF TlRfVVNFUiIsCVNZTShDVVJSRU5UX1VTRVIpfSwKICAgeyAiQ1VSU09SIiwgICAgICAgICAgIFNZ TShDVVJTT1JfU1lNKX0sCisgIHsgIkNVUlNPUl9OQU1FIiwgICAgICBTWU0oQ1VSU09SX05BTUVf U1lNKX0sCiAgIHsgIkRBVEEiLAkJU1lNKERBVEFfU1lNKX0sCiAgIHsgIkRBVEFCQVNFIiwJCVNZ TShEQVRBQkFTRSl9LAogICB7ICJEQVRBQkFTRVMiLAlTWU0oREFUQUJBU0VTKX0sCkBAIC0zMzcs NiArMzQ0LDcgQEAgc3RhdGljIFNZTUJPTCBzeW1ib2xzW10gPSB7CiAgIHsgIk1FRElVTVRFWFQi LAlTWU0oTUVESVVNVEVYVCl9LAogICB7ICJNRU1PUlkiLAkJU1lNKE1FTU9SWV9TWU0pfSwKICAg eyAiTUVSR0UiLAkJU1lNKE1FUkdFX1NZTSl9LAorICB7ICJNRVNTQUdFX1RFWFQiLCAgICAgU1lN KE1FU1NBR0VfVEVYVF9TWU0pfSwKICAgeyAiTUlDUk9TRUNPTkQiLAlTWU0oTUlDUk9TRUNPTkRf U1lNKX0sCiAgIHsgIk1JRERMRUlOVCIsCVNZTShNRURJVU1JTlQpfSwJLyogRm9yIHBvd2VyYnVp bGRlciAqLwogICB7ICJNSUdSQVRFIiwgICAgICAgICAgU1lNKE1JR1JBVEVfU1lNKX0sCkBAIC0z NTIsNyArMzYwLDggQEAgc3RhdGljIFNZTUJPTCBzeW1ib2xzW10gPSB7CiAgIHsgIk1VTFRJTElO RVNUUklORyIsCVNZTShNVUxUSUxJTkVTVFJJTkcpfSwKICAgeyAiTVVMVElQT0lOVCIsCVNZTShN VUxUSVBPSU5UKX0sCiAgIHsgIk1VTFRJUE9MWUdPTiIsCVNZTShNVUxUSVBPTFlHT04pfSwKLSAg eyAiTVVURVgiLCAgU1lNKE1VVEVYX1NZTSl9LAorICB7ICJNVVRFWCIsICAgICAgICAgICAgU1lN KE1VVEVYX1NZTSl9LAorICB7ICJNWVNRTF9FUlJOTyIsICAgICAgU1lNKE1ZU1FMX0VSUk5PX1NZ TSl9LAogICB7ICJOQU1FIiwgICAgICAgICAgICAgU1lNKE5BTUVfU1lNKX0sCiAgIHsgIk5BTUVT IiwJCVNZTShOQU1FU19TWU0pfSwKICAgeyAiTkFUSU9OQUwiLAkJU1lNKE5BVElPTkFMX1NZTSl9 LApAQCAtNDQ4LDYgKzQ1Nyw3IEBAIHN0YXRpYyBTWU1CT0wgc3ltYm9sc1tdID0gewogICB7ICJS RVBFQVQiLCAgICAgICAgICAgU1lNKFJFUEVBVF9TWU0pfSwKICAgeyAiUkVRVUlSRSIsCSAgICAg ICAgU1lNKFJFUVVJUkVfU1lNKX0sCiAgIHsgIlJFU0VUIiwJCVNZTShSRVNFVF9TWU0pfSwKKyAg eyAiUkVTSUdOQUwiLCAgICAgICAgIFNZTShSRVNJR05BTF9TWU0pfSwKICAgeyAiUkVTVE9SRSIs CQlTWU0oUkVTVE9SRV9TWU0pfSwKICAgeyAiUkVTVFJJQ1QiLAkJU1lNKFJFU1RSSUNUKX0sCiAg IHsgIlJFU1VNRSIsICAgICAgICAgICBTWU0oUkVTVU1FX1NZTSl9LApAQCAtNDY3LDYgKzQ3Nyw3 IEBAIHN0YXRpYyBTWU1CT0wgc3ltYm9sc1tdID0gewogICB7ICJTQVZFUE9JTlQiLAlTWU0oU0FW RVBPSU5UX1NZTSl9LAogICB7ICJTQ0hFRFVMRSIsCQlTWU0oU0NIRURVTEVfU1lNKX0sCiAgIHsg IlNDSEVNQSIsCQlTWU0oREFUQUJBU0UpfSwKKyAgeyAiU0NIRU1BX05BTUUiLCAgICAgIFNZTShT Q0hFTUFfTkFNRV9TWU0pfSwKICAgeyAiU0NIRU1BUyIsICAgICAgICAgIFNZTShEQVRBQkFTRVMp fSwKICAgeyAiU0VDT05EIiwJCVNZTShTRUNPTkRfU1lNKX0sCiAgIHsgIlNFQ09ORF9NSUNST1NF Q09ORCIsIFNZTShTRUNPTkRfTUlDUk9TRUNPTkRfU1lNKX0sCkBAIC00ODIsNiArNDkzLDcgQEAg c3RhdGljIFNZTUJPTCBzeW1ib2xzW10gPSB7CiAgIHsgIlNIQVJFIiwJCVNZTShTSEFSRV9TWU0p fSwKICAgeyAiU0hPVyIsCQlTWU0oU0hPVyl9LAogICB7ICJTSFVURE9XTiIsCQlTWU0oU0hVVERP V04pfSwKKyAgeyAiU0lHTkFMIiwJCVNZTShTSUdOQUxfU1lNKX0sCiAgIHsgIlNJR05FRCIsCQlT WU0oU0lHTkVEX1NZTSl9LAogICB7ICJTSU1QTEUiLAkJU1lNKFNJTVBMRV9TWU0pfSwKICAgeyAi U0xBVkUiLCAgICAgICAgICAgIFNZTShTTEFWRSl9LApAQCAtNTIzLDYgKzUzNSw3IEBAIHN0YXRp YyBTWU1CT0wgc3ltYm9sc1tdID0gewogICB7ICJTVE9SQUdFIiwJCVNZTShTVE9SQUdFX1NZTSl9 LAogICB7ICJTVFJBSUdIVF9KT0lOIiwJU1lNKFNUUkFJR0hUX0pPSU4pfSwKICAgeyAiU1RSSU5H IiwJCVNZTShTVFJJTkdfU1lNKX0sCisgIHsgIlNVQkNMQVNTX09SSUdJTiIsICBTWU0oU1VCQ0xB U1NfT1JJR0lOX1NZTSl9LAogICB7ICJTVUJKRUNUIiwJCVNZTShTVUJKRUNUX1NZTSl9LAogICB7 ICJTVUJQQVJUSVRJT04iLCAgICAgU1lNKFNVQlBBUlRJVElPTl9TWU0pfSwKICAgeyAiU1VCUEFS VElUSU9OUyIsICAgIFNZTShTVUJQQVJUSVRJT05TX1NZTSl9LApAQCAtNTMxLDYgKzU0NCw3IEBA IHN0YXRpYyBTWU1CT0wgc3ltYm9sc1tdID0gewogICB7ICJTV0FQUyIsICAgICAgU1lNKFNXQVBT X1NZTSl9LAogICB7ICJTV0lUQ0hFUyIsICAgU1lNKFNXSVRDSEVTX1NZTSl9LAogICB7ICJUQUJM RSIsCQlTWU0oVEFCTEVfU1lNKX0sCisgIHsgIlRBQkxFX05BTUUiLCAgICAgICBTWU0oVEFCTEVf TkFNRV9TWU0pfSwKICAgeyAiVEFCTEVTIiwJCVNZTShUQUJMRVMpfSwKICAgeyAiVEFCTEVTUEFD RSIsCSAgICAgICAgU1lNKFRBQkxFU1BBQ0UpfSwKICAgeyAiVEFCTEVfQ0hFQ0tTVU0iLAlTWU0o VEFCTEVfQ0hFQ0tTVU1fU1lNKX0sCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL2xvZy5jYycKLS0t IGEvc3FsL2xvZy5jYwkyMDA4LTA3LTI1IDE3OjIxOjU1ICswMDAwCisrKyBiL3NxbC9sb2cuY2MJ MjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtODEsMTkgKzgxLDE0IEBAIHB1YmxpYzoKIAog ICB2aXJ0dWFsIH5TaWxlbmNlX2xvZ190YWJsZV9lcnJvcnMoKSB7fQogCi0gIHZpcnR1YWwgYm9v bCBoYW5kbGVfZXJyb3IodWludCBzcWxfZXJybm8sIGNvbnN0IGNoYXIgKm1lc3NhZ2UsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxfRVJST1I6OmVudW1fd2FybmluZ19sZXZlbCBs ZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSEQgKnRoZCk7CisgIHZpcnR1YWwg Ym9vbCBoYW5kbGVfY29uZGl0aW9uKFRIRCAqdGhkLCBjb25zdCBTUUxfY29uZGl0aW9uICpjb25k KTsKICAgY29uc3QgY2hhciAqbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQog fTsKIAogYm9vbAotU2lsZW5jZV9sb2dfdGFibGVfZXJyb3JzOjpoYW5kbGVfZXJyb3IodWludCAv KiBzcWxfZXJybm8gKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICptZXNzYWdlX2FyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgLyogbGV2ZWwgKi8sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSEQgKiAvKiB0aGQgKi8pCitTaWxl bmNlX2xvZ190YWJsZV9lcnJvcnM6OmhhbmRsZV9jb25kaXRpb24oVEhEICosIGNvbnN0IFNRTF9j b25kaXRpb24gKmNvbmQpCiB7Ci0gIHN0cm1ha2UobV9tZXNzYWdlLCBtZXNzYWdlX2FyZywgc2l6 ZW9mKG1fbWVzc2FnZSktMSk7CisgIHN0cm1ha2UobV9tZXNzYWdlLCBjb25kLT5nZXRfbWVzc2Fn ZV90ZXh0KCksIHNpemVvZihtX21lc3NhZ2UpLTEpOwogICByZXR1cm4gVFJVRTsKIH0KIAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NxbC9sb2dfZXZlbnQuY2MnCi0tLSBhL3NxbC9sb2dfZXZlbnQuY2MJ MjAwOC0wOC0yNSAwODoxMjowMiArMDAwMAorKysgYi9zcWwvbG9nX2V2ZW50LmNjCTIwMDgtMDgt MjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTEzMiwxNyArMTMyLDE4IEBAIHN0YXRpYyB2b2lkIGlubGlu ZSBzbGF2ZV9yb3dzX2Vycm9yX3JlcG8KICAgY2hhciBidWZmW01BWF9TTEFWRV9FUlJNU0ddLCAq c2xpZGVyOwogICBjb25zdCBjaGFyICpidWZmX2VuZD0gYnVmZiArIHNpemVvZihidWZmKTsKICAg dWludCBsZW47Ci0gIExpc3RfaXRlcmF0b3JfZmFzdDxNWVNRTF9FUlJPUj4gaXQodGhkLT53YXJu X2xpc3QpOwotICBNWVNRTF9FUlJPUiAqZXJyOworICBMaXN0X2l0ZXJhdG9yX2Zhc3Q8U1FMX2Nv bmRpdGlvbj4gaXQodGhkLT5tYWluX2RhLm1fc3RtdF9hcmVhLndhcm5fbGlzdCk7CisgIFNRTF9j b25kaXRpb24gKmNvbmQ7CiAgIGJ1ZmZbMF09IDA7CiAKLSAgZm9yIChlcnI9IGl0KyssIHNsaWRl cj0gYnVmZjsgZXJyICYmIHNsaWRlciA8IGJ1ZmZfZW5kIC0gMTsKLSAgICAgICBzbGlkZXIgKz0g bGVuLCBlcnI9IGl0KyspCisgIGZvciAoY29uZD0gaXQrKywgc2xpZGVyPSBidWZmOyBjb25kICYm IHNsaWRlciA8IGJ1ZmZfZW5kIC0gMTsKKyAgICAgICBzbGlkZXIgKz0gbGVuLCBjb25kPSBpdCsr KQogICB7CiAgICAgbGVuPSBteV9zbnByaW50ZihzbGlkZXIsIGJ1ZmZfZW5kIC0gc2xpZGVyLAot ICAgICAgICAgICAgICAgICAgICAgIiAlcywgRXJyb3JfY29kZTogJWQ7IiwgZXJyLT5tc2csIGVy ci0+Y29kZSk7CisgICAgICAgICAgICAgICAgICAgICAiICVzLCBFcnJvcl9jb2RlOiAlZDsiLCBj b25kLT5nZXRfbWVzc2FnZV90ZXh0KCksCisgICAgICAgICAgICAgICAgICAgICBjb25kLT5nZXRf c3FsX2Vycm5vKCkpOwogICB9Ci0gIAorCiAgIHJsaS0+cmVwb3J0KGxldmVsLCB0aGQtPmlzX2Vy cm9yKCk/IHRoZC0+bWFpbl9kYS5zcWxfZXJybm8oKSA6IDAsCiAgICAgICAgICAgICAgICJDb3Vs ZCBub3QgZXhlY3V0ZSAlcyBldmVudCBvbiB0YWJsZSAlcy4lczsiCiAgICAgICAgICAgICAgICIl cyBoYW5kbGVyIGVycm9yICVzOyAiCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL215c3FsX3ByaXYu aCcKLS0tIGEvc3FsL215c3FsX3ByaXYuaAkyMDA4LTA4LTI2IDA2OjUyOjAwICswMDAwCisrKyBi L3NxbC9teXNxbF9wcml2LmgJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtMTU0LDYgKzE1 NCwxMCBAQCBjaGFyKiBxdWVyeV90YWJsZV9zdGF0dXMoVEhEICp0aGQsY29uc3QgCiBleHRlcm4g Q0hBUlNFVF9JTkZPICpzeXN0ZW1fY2hhcnNldF9pbmZvLCAqZmlsZXNfY2hhcnNldF9pbmZvIDsK IGV4dGVybiBDSEFSU0VUX0lORk8gKm5hdGlvbmFsX2NoYXJzZXRfaW5mbywgKnRhYmxlX2FsaWFz X2NoYXJzZXQ7CiAKKy8qKgorICBDaGFyYWN0ZXIgc2V0IG9mIHRoZSBidWlsZGluIGVycm9yIG1l c3NhZ2VzIGxvYWRlZCBmcm9tIGVycm1zZy5zeXMuCisqLworZXh0ZXJuIENIQVJTRVRfSU5GTyAq ZXJyb3JfbWVzc2FnZV9jaGFyc2V0X2luZm87CiAKIGVudW0gRGVyaXZhdGlvbgogewpAQCAtNzky LDYgKzc5Niw3IEBAIHR5cGVkZWYgbXlfYm9vbCAoKnFjX2VuZ2luZV9jYWxsYmFjaykoVEgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBrZXlfbGVuZ3RoLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZ2xvbmcgKmVuZ2luZV9kYXRh KTsKICNpbmNsdWRlICJzcWxfc3RyaW5nLmgiCisjaW5jbHVkZSAic3FsX2ZpeHN0cmluZy5oIgog I2luY2x1ZGUgInNxbF9saXN0LmgiCiAjaW5jbHVkZSAic3FsX21hcC5oIgogI2luY2x1ZGUgIm15 X2RlY2ltYWwuaCIKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvbXlzcWxkLmNjJwotLS0gYS9zcWwv bXlzcWxkLmNjCTIwMDgtMDgtMjIgMTM6MjE6MzEgKzAwMDAKKysrIGIvc3FsL215c3FsZC5jYwky MDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC02NjUsNiArNjY1LDcgQEAgTVlfQklUTUFQIHRl bXBfcG9vbDsKIENIQVJTRVRfSU5GTyAqc3lzdGVtX2NoYXJzZXRfaW5mbywgKmZpbGVzX2NoYXJz ZXRfaW5mbyA7CiBDSEFSU0VUX0lORk8gKm5hdGlvbmFsX2NoYXJzZXRfaW5mbywgKnRhYmxlX2Fs aWFzX2NoYXJzZXQ7CiBDSEFSU0VUX0lORk8gKmNoYXJhY3Rlcl9zZXRfZmlsZXN5c3RlbTsKK0NI QVJTRVRfSU5GTyAqZXJyb3JfbWVzc2FnZV9jaGFyc2V0X2luZm87CiAKIE1ZX0xPQ0FMRSAqbXlf ZGVmYXVsdF9sY190aW1lX25hbWVzOwogCkBAIC0xOTAyLDcgKzE5MDMsMTAgQEAgdm9pZCBjbG9z ZV9jb25uZWN0aW9uKFRIRCAqdGhkLCB1aW50IGVycgogICBpZiAoKHZpbz0gdGhkLT5uZXQudmlv KSAhPSAwKQogICB7CiAgICAgaWYgKGVycmNvZGUpCi0gICAgICBuZXRfc2VuZF9lcnJvcih0aGQs IGVycmNvZGUsIEVSKGVycmNvZGUpKTsgLyogcHVyZWNvdjogaW5zcGVjdGVkICovCisgICAgewor ICAgICAgY29uc3QgY2hhciogc3Fsc3RhdGU9IG15c3FsX2Vycm5vX3RvX3NxbHN0YXRlKGVycmNv ZGUpOworICAgICAgbmV0X3NlbmRfZXJyb3IodGhkLCBlcnJjb2RlLCBFUihlcnJjb2RlKSwgc3Fs c3RhdGUpOyAvKiBwdXJlY292OiBpbnNwZWN0ZWQgKi8KKyAgICB9CiAgICAgdmlvX2Nsb3NlKHZp byk7CQkJLyogdmlvIGlzIGZyZWVkIGluIGRlbGV0ZSB0aGQgKi8KICAgfQogICBpZiAobG9jaykK QEAgLTI5NTIsOCArMjk1Niw2IEBAIGV4dGVybiAiQyIgdm9pZCBteV9tZXNzYWdlX3NxbCh1aW50 IGVycm8KIHZvaWQgbXlfbWVzc2FnZV9zcWwodWludCBlcnJvciwgY29uc3QgY2hhciAqc3RyLCBt eWYgTXlGbGFncykKIHsKICAgVEhEICp0aGQ7Ci0gIE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdf bGV2ZWwgbGV2ZWw7Ci0gIHNxbF9wcmludF9tZXNzYWdlX2Z1bmMgZnVuYzsKICAgREJVR19FTlRF UigibXlfbWVzc2FnZV9zcWwiKTsKICAgREJVR19QUklOVCgiZXJyb3IiLCAoImVycm9yOiAldSAg bWVzc2FnZTogJyVzJyIsIGVycm9yLCBzdHIpKTsKICAgLyoKQEAgLTI5NjEsMTA2ICsyOTYzLDM3 IEBAIHZvaWQgbXlfbWVzc2FnZV9zcWwodWludCBlcnJvciwgY29uc3QgY2gKICAgICB3aWxsIGJl IGZpeGVkCiAgICAgREJVR19BU1NFUlQoZXJyb3IgIT0gMCk7CiAgICovCisKKyAgLyoKKyAgICBU T0RPOiBNRV9KVVNUX0lORk8gYW5kIE1FX0pVU1RfV0FSTklORyBhcmUgYmFjayBkb29ycyB1c2Vk IGluCisgICAgc3RvcmFnZS9tYXJpYSB0byBwcmludCB0byB0aGUgc2VydmVyIGxvZyBmaWxlcy4K KyAgICBteV9lcnJvci9teV9tZXNzYWdlX3NxbCBzaG91bGQgbm90IGJlIHVzZWQgZm9yIHRoaXMs IHNpbmNlIHdlCisgICAgZG9uJ3Qgd2FudCB0aGUgZXhjZXB0aW9uIGhhbmRsZXJzIC8gU0lHTkFM IC8gUkVTSUdOQUwgdG8gaW50ZXJmZXJlCisgICAgd2l0aCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4g dGhpcyBjYXNlLgorICAgIEluc3RlYWQsIHRoZSBzZXJ2ZXIgc2hvdWxkIGV4cG9zZSBhIGNsZWFu IGludGVyZmFjZSB0byB0aGUgc3RvcmFnZQorICAgIGVuZ2luZXMgZm9yIHByaW50aW5nIGludG8g dGhlIHNlcnZlciBsb2dzIChzcWwvbG9nLmNjKSwKKyAgICBhbmQgdGhlIHN0b3JhZ2UgZW5naW5l IHNob3VsZCBjYWxsIHRoYXQgaW50ZXJmYWNlIChzZWUgbWFfbWVzc2FnZV9lbmRfdXNlcikKKyAg ICBTZWUgQnVnIzM4NzgxCisgICovCisKICAgaWYgKE15RmxhZ3MgJiBNRV9KVVNUX0lORk8pCiAg IHsKLSAgICBsZXZlbD0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfTk9URTsKLSAgICBmdW5jPSBz cWxfcHJpbnRfaW5mb3JtYXRpb247Ci0gIH0KLSAgZWxzZSBpZiAoTXlGbGFncyAmIE1FX0pVU1Rf V0FSTklORykKLSAgewotICAgIGxldmVsPSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOOwot ICAgIGZ1bmM9IHNxbF9wcmludF93YXJuaW5nOworICAgIHNxbF9wcmludF9pbmZvcm1hdGlvbigi JXM6ICVzIiwgbXlfcHJvZ25hbWUsIHN0cik7CisgICAgREJVR19WT0lEX1JFVFVSTjsKICAgfQot ICBlbHNlCisKKyAgaWYgKE15RmxhZ3MgJiBNRV9KVVNUX1dBUk5JTkcpCiAgIHsKLSAgICBsZXZl bD0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1I7Ci0gICAgZnVuYz0gc3FsX3ByaW50X2Vy cm9yOworICAgIHNxbF9wcmludF93YXJuaW5nKCIlczogJXMiLCBteV9wcm9nbmFtZSwgc3RyKTsK KyAgICBEQlVHX1ZPSURfUkVUVVJOOwogICB9CiAKICAgaWYgKCh0aGQ9IGN1cnJlbnRfdGhkKSkK ICAgewotICAgIGlmIChNeUZsYWdzICYgTUVfRkFUQUxFUlJPUikKLSAgICAgIHRoZC0+aXNfZmF0 YWxfZXJyb3I9IDE7Ci0KLSNpZmRlZiBCVUdfMzYwOThfRklYRUQKLSAgICBteXNxbF9hdWRpdF9n ZW5lcmFsKHRoZCxNWVNRTF9BVURJVF9HRU5FUkFMX0VSUk9SLGVycm9yLG15X3RpbWUoMCksCi0g ICAgICAgICAgICAgICAgICAgICAgICAwLDAsc3RyLHN0ciA/IHN0cmxlbihzdHIpIDogMCwKLSAg ICAgICAgICAgICAgICAgICAgICAgIHRoZC0+cXVlcnksdGhkLT5xdWVyeV9sZW5ndGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICB0aGQtPnZhcmlhYmxlcy5jaGFyYWN0ZXJfc2V0X2NsaWVudCwK LSAgICAgICAgICAgICAgICAgICAgICAgIHRoZC0+cm93X2NvdW50KTsKLSNlbmRpZgotCi0KLSAg ICAvKgotICAgICAgVE9ETzogVGhlcmUgYXJlIHR3byBleGNlcHRpb25zIG1lY2hhbmlzbSAoVEhE IGFuZCBzcF9yY29udGV4dCksCi0gICAgICB0aGlzIGNvdWxkIGJlIGltcHJvdmVkIGJ5IGhhdmlu ZyBhIGNvbW1vbiBzdGFjayBvZiBoYW5kbGVycy4KLSAgICAqLwotICAgIGlmICh0aGQtPmhhbmRs ZV9lcnJvcihlcnJvciwgc3RyLCBsZXZlbCkpCi0gICAgICBEQlVHX1ZPSURfUkVUVVJOOwotCi0g ICAgaWYgKGxldmVsID09IE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4pCi0gICAgICBwdXNo X3dhcm5pbmcodGhkLCBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOLCBlcnJvciwgc3RyKTsK LSAgICBpZiAobGV2ZWwgIT0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1IpCi0gICAgICBn b3RvIHRvX2Vycm9yX2xvZzsKLQotICAgIHRoZC0+aXNfc2xhdmVfZXJyb3I9ICAxOyAvLyBuZWVk ZWQgdG8gY2F0Y2ggcXVlcnkgZXJyb3JzIGR1cmluZyByZXBsaWNhdGlvbgotCi0gICAgLyoKLSAg ICAgIHRoZC0+bGV4LT5jdXJyZW50X3NlbGVjdCA9PSAwIGlmIGxleCBzdHJ1Y3R1cmUgaXMgbm90 IGluaXRlZAotICAgICAgKG5vdCBxdWVyeSBjb21tYW5kIChDT01fUVVFUlkpKQotICAgICovCi0g ICAgaWYgKHRoZC0+bGV4LT5jdXJyZW50X3NlbGVjdCAmJgotCXRoZC0+bGV4LT5jdXJyZW50X3Nl bGVjdC0+bm9fZXJyb3IgJiYgIXRoZC0+aXNfZmF0YWxfZXJyb3IpCi0gICAgewotICAgICAgREJV R19QUklOVCgiZXJyb3IiLAotICAgICAgICAgICAgICAgICAoIkVycm9yIGNvbnZlcnRlZCB0byB3 YXJuaW5nOiBjdXJyZW50X3NlbGVjdDogbm9fZXJyb3IgJWQgICIKLSAgICAgICAgICAgICAgICAg ICJmYXRhbF9lcnJvcjogJWQiLAotICAgICAgICAgICAgICAgICAgKHRoZC0+bGV4LT5jdXJyZW50 X3NlbGVjdCA/Ci0gICAgICAgICAgICAgICAgICAgdGhkLT5sZXgtPmN1cnJlbnRfc2VsZWN0LT5u b19lcnJvciA6IDApLAotICAgICAgICAgICAgICAgICAgKGludCkgdGhkLT5pc19mYXRhbF9lcnJv cikpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgaWYgKCEgdGhkLT5tYWluX2RhLmlz X2Vycm9yKCkpICAgICAgICAgICAgLy8gUmV0dXJuIG9ubHkgZmlyc3QgbWVzc2FnZQotICAgICAg ewotICAgICAgICBpZiAoZXJyb3IgPT0gMCkKLSAgICAgICAgICBlcnJvcj0gRVJfVU5LTk9XTl9F UlJPUjsKLSAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQotICAgICAgICAgIHN0cj0gRVIoZXJyb3Ip OwotICAgICAgICB0aGQtPm1haW5fZGEuc2V0X2Vycm9yX3N0YXR1cyh0aGQsIGVycm9yLCBzdHIp OwotICAgICAgfQotICAgICAgcXVlcnlfY2FjaGVfYWJvcnQoJnRoZC0+cXVlcnlfY2FjaGVfdGxz KTsKLSAgICB9Ci0gICAgLyoKLSAgICAgIElmIGEgY29udGludWUgaGFuZGxlciBpcyBmb3VuZCwg dGhlIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBjbGVhcmVkCi0gICAgICBieSB0aGUgc3RvcmVkIHBy b2NlZHVyZXMgY29kZS4KLSAgICAqLwotICAgIGlmICghdGhkLT5pc19mYXRhbF9lcnJvciAmJiB0 aGQtPnNwY29udCAmJgotICAgICAgICAhIChNeUZsYWdzICYgTUVfTk9fU1BfSEFORExFUikgJiYK LSAgICAgICAgdGhkLT5zcGNvbnQtPmhhbmRsZV9lcnJvcihlcnJvciwgTVlTUUxfRVJST1I6OldB Uk5fTEVWRUxfRVJST1IsIHRoZCkpCi0gICAgewotICAgICAgLyoKLSAgICAgICAgRG8gbm90IHB1 c2ggYW55IHdhcm5pbmdzLCBhIGhhbmRsZWQgZXJyb3IgbXVzdCBiZSBjb21wbGV0ZWx5Ci0gICAg ICAgIHNpbGVuY2VkLgotICAgICAgKi8KLSAgICAgIERCVUdfVk9JRF9SRVRVUk47Ci0gICAgfQot Ci0gICAgaWYgKCF0aGQtPmlzX2ZhdGFsX2Vycm9yICYmICF0aGQtPm5vX3dhcm5pbmdzX2Zvcl9l cnJvciAmJgotICAgICAgICAhKE15RmxhZ3MgJiBNRV9OT19XQVJOSU5HX0ZPUl9FUlJPUikpCi0g ICAgewotICAgICAgLyoKLSAgICAgICAgU3VwcHJlc3MgaW5maW5pdGUgcmVjdXJzaW9uIGlmIHRo ZXJlIGEgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IKLSAgICAgICAgaW5zaWRlIHB1c2hfd2Fybmlu Zy4KLSAgICAgICovCi0gICAgICB0aGQtPm5vX3dhcm5pbmdzX2Zvcl9lcnJvcj0gVFJVRTsKLSAg ICAgIHB1c2hfd2FybmluZyh0aGQsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX0VSUk9SLCBlcnJv ciwgc3RyKTsKLSAgICAgIHRoZC0+bm9fd2FybmluZ3NfZm9yX2Vycm9yPSBGQUxTRTsKLSAgICB9 CisgICAgdGhkLT5yYWlzZV9lcnJvcihlcnJvciwgc3RyLCBNeUZsYWdzKTsKICAgfQotdG9fZXJy b3JfbG9nOgotICBpZiAoIXRoZCB8fCAoTXlGbGFncyAmIE1FX05PUkVGUkVTSCkpCi0gICAgKCpm dW5jKSgiJXM6ICVzIiwgbXlfcHJvZ25hbWVfc2hvcnQsIHN0cik7IC8qIHB1cmVjb3Y6IGluc3Bl Y3RlZCAqLworICBpZiAoIXRoZCB8fCBNeUZsYWdzICYgTUVfTk9SRUZSRVNIKQorICAgIHNxbF9w cmludF9lcnJvcigiJXM6ICVzIiwgbXlfcHJvZ25hbWUsIHN0cik7IC8qIHB1cmVjb3Y6IGluc3Bl Y3RlZCAqLwogICBEQlVHX1ZPSURfUkVUVVJOOwogfQogCkBAIC0zMjI4LDYgKzMxNjEsNyBAQCBT SE9XX1ZBUiBjb21fc3RhdHVzX3ZhcnNbXT0gewogICB7InJlcGxhY2UiLCAgICAgICAgICAgICAg KGNoYXIqKSBvZmZzZXRvZihTVEFUVVNfVkFSLCBjb21fc3RhdFsodWludCkgU1FMQ09NX1JFUExB Q0VdKSwgU0hPV19MT05HX1NUQVRVU30sCiAgIHsicmVwbGFjZV9zZWxlY3QiLCAgICAgICAoY2hh ciopIG9mZnNldG9mKFNUQVRVU19WQVIsIGNvbV9zdGF0Wyh1aW50KSBTUUxDT01fUkVQTEFDRV9T RUxFQ1RdKSwgU0hPV19MT05HX1NUQVRVU30sCiAgIHsicmVzZXQiLCAgICAgICAgICAgICAgICAo Y2hhciopIG9mZnNldG9mKFNUQVRVU19WQVIsIGNvbV9zdGF0Wyh1aW50KSBTUUxDT01fUkVTRVRd KSwgU0hPV19MT05HX1NUQVRVU30sCisgIHsicmVzaWduYWwiLCAgICAgICAgICAgICAoY2hhciop IG9mZnNldG9mKFNUQVRVU19WQVIsIGNvbV9zdGF0Wyh1aW50KSBTUUxDT01fUkVTSUdOQUxdKSwg U0hPV19MT05HX1NUQVRVU30sCiAgIHsicmVzdG9yZSIsICAgICAgICAgICAgICAoY2hhciopIG9m ZnNldG9mKFNUQVRVU19WQVIsIGNvbV9zdGF0Wyh1aW50KSBTUUxDT01fUkVTVE9SRV0pLCBTSE9X X0xPTkdfU1RBVFVTfSwKICAgeyJyZXZva2UiLCAgICAgICAgICAgICAgIChjaGFyKikgb2Zmc2V0 b2YoU1RBVFVTX1ZBUiwgY29tX3N0YXRbKHVpbnQpIFNRTENPTV9SRVZPS0VdKSwgU0hPV19MT05H X1NUQVRVU30sCiAgIHsicmV2b2tlX2FsbCIsICAgICAgICAgICAoY2hhciopIG9mZnNldG9mKFNU QVRVU19WQVIsIGNvbV9zdGF0Wyh1aW50KSBTUUxDT01fUkVWT0tFX0FMTF0pLCBTSE9XX0xPTkdf U1RBVFVTfSwKQEAgLTMyMzYsNiArMzE3MCw3IEBAIFNIT1dfVkFSIGNvbV9zdGF0dXNfdmFyc1td PSB7CiAgIHsic2F2ZXBvaW50IiwgICAgICAgICAgICAoY2hhciopIG9mZnNldG9mKFNUQVRVU19W QVIsIGNvbV9zdGF0Wyh1aW50KSBTUUxDT01fU0FWRVBPSU5UXSksIFNIT1dfTE9OR19TVEFUVVN9 LAogICB7InNlbGVjdCIsICAgICAgICAgICAgICAgKGNoYXIqKSBvZmZzZXRvZihTVEFUVVNfVkFS LCBjb21fc3RhdFsodWludCkgU1FMQ09NX1NFTEVDVF0pLCBTSE9XX0xPTkdfU1RBVFVTfSwKICAg eyJzZXRfb3B0aW9uIiwgICAgICAgICAgIChjaGFyKikgb2Zmc2V0b2YoU1RBVFVTX1ZBUiwgY29t X3N0YXRbKHVpbnQpIFNRTENPTV9TRVRfT1BUSU9OXSksIFNIT1dfTE9OR19TVEFUVVN9LAorICB7 InNpZ25hbCIsICAgICAgICAgICAgICAgKGNoYXIqKSBvZmZzZXRvZihTVEFUVVNfVkFSLCBjb21f c3RhdFsodWludCkgU1FMQ09NX1NJR05BTF0pLCBTSE9XX0xPTkdfU1RBVFVTfSwKICAgeyJzaG93 X2F1dGhvcnMiLCAgICAgICAgIChjaGFyKikgb2Zmc2V0b2YoU1RBVFVTX1ZBUiwgY29tX3N0YXRb KHVpbnQpIFNRTENPTV9TSE9XX0FVVEhPUlNdKSwgU0hPV19MT05HX1NUQVRVU30sCiAgIHsic2hv d19iaW5sb2dfZXZlbnRzIiwgICAoY2hhciopIG9mZnNldG9mKFNUQVRVU19WQVIsIGNvbV9zdGF0 Wyh1aW50KSBTUUxDT01fU0hPV19CSU5MT0dfRVZFTlRTXSksIFNIT1dfTE9OR19TVEFUVVN9LAog ICB7InNob3dfYmlubG9ncyIsICAgICAgICAgKGNoYXIqKSBvZmZzZXRvZihTVEFUVVNfVkFSLCBj b21fc3RhdFsodWludCkgU1FMQ09NX1NIT1dfQklOTE9HU10pLCBTSE9XX0xPTkdfU1RBVFVTfSwK QEAgLTQ5MzcsNiArNDg3Miw4IEBAIHZvaWQgY3JlYXRlX3RocmVhZF90b19oYW5kbGVfY29ubmVj dGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9vbmVfY29ubmVjdGlv biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikgdGhkKSkpCiAgICAgewor ICAgICAgY29uc3QgY2hhciogc3Fsc3RhdGU7CisKICAgICAgIC8qIHB1cmVjb3Y6IGJlZ2luIGlu c3BlY3RlZCAqLwogICAgICAgREJVR19QUklOVCgiZXJyb3IiLAogICAgICAgICAgICAgICAgICAo IkNhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIHJlcXVlc3QgKGVycm9yICVkKSIsCkBAIC00 OTUzLDcgKzQ4OTAsOCBAQCB2b2lkIGNyZWF0ZV90aHJlYWRfdG9faGFuZGxlX2Nvbm5lY3Rpb24o CiAgICAgICAvKiBDYW4ndCB1c2UgbXlfZXJyb3IoKSBzaW5jZSBzdG9yZV9nbG9iYWxzIGhhcyBu b3QgYmVlbiBjYWxsZWQuICovCiAgICAgICBteV9zbnByaW50ZihlcnJvcl9tZXNzYWdlX2J1ZmYs IHNpemVvZihlcnJvcl9tZXNzYWdlX2J1ZmYpLAogICAgICAgICAgICAgICAgICAgRVIoRVJfQ0FO VF9DUkVBVEVfVEhSRUFEKSwgZXJyb3IpOwotICAgICAgbmV0X3NlbmRfZXJyb3IodGhkLCBFUl9D QU5UX0NSRUFURV9USFJFQUQsIGVycm9yX21lc3NhZ2VfYnVmZik7CisgICAgICBzcWxzdGF0ZT0g bXlzcWxfZXJybm9fdG9fc3Fsc3RhdGUoRVJfQ0FOVF9DUkVBVEVfVEhSRUFEKTsKKyAgICAgIG5l dF9zZW5kX2Vycm9yKHRoZCwgRVJfQ0FOVF9DUkVBVEVfVEhSRUFELCBlcnJvcl9tZXNzYWdlX2J1 ZmYsIHNxbHN0YXRlKTsKICAgICAgICh2b2lkKSBwdGhyZWFkX211dGV4X2xvY2soJkxPQ0tfdGhy ZWFkX2NvdW50KTsKICAgICAgIGNsb3NlX2Nvbm5lY3Rpb24odGhkLDAsMCk7CiAgICAgICBkZWxl dGUgdGhkOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9wcm90b2NvbC5jYycKLS0tIGEvc3FsL3By b3RvY29sLmNjCTIwMDgtMDYtMDUgMTY6MTE6MjIgKzAwMDAKKysrIGIvc3FsL3Byb3RvY29sLmNj CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTI5LDcgKzI5LDggQEAKIAogc3RhdGljIGNv bnN0IHVuc2lnbmVkIGludCBQQUNLRVRfQlVGRkVSX0VYVFJBX0FMTE9DPSAxMDI0OwogLyogRGVj bGFyZWQgbm9uLXN0YXRpYyBvbmx5IGJlY2F1c2Ugb2YgdGhlIGVtYmVkZGVkIGxpYnJhcnkuICov Ci12b2lkIG5ldF9zZW5kX2Vycm9yX3BhY2tldChUSEQgKnRoZCwgdWludCBzcWxfZXJybm8sIGNv bnN0IGNoYXIgKmVycik7Cit2b2lkIG5ldF9zZW5kX2Vycm9yX3BhY2tldChUSEQgKnRoZCwgdWlu dCBzcWxfZXJybm8sIGNvbnN0IGNoYXIgKmVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIqIHNxbHN0YXRlKTsKIHZvaWQgbmV0X3NlbmRfb2soVEhEICosIHVpbnQsIHVp bnQsIGhhX3Jvd3MsIHVsb25nbG9uZywgY29uc3QgY2hhciAqKTsKIHZvaWQgbmV0X3NlbmRfZW9m KFRIRCAqdGhkLCB1aW50IHNlcnZlcl9zdGF0dXMsIHVpbnQgdG90YWxfd2Fybl9jb3VudCk7CiAj aWZuZGVmIEVNQkVEREVEX0xJQlJBUlkKQEAgLTEyOCwxMyArMTI5LDE0IEBAIGJvb2wgUHJvdG9j b2w6Om5ldF9zdG9yZV9kYXRhKGNvbnN0IHVjaGEKICAgY3JpdGljYWwgdGhhdCBldmVyeSBlcnJv ciB0aGF0IGNhbiBiZSBpbnRlcmNlcHRlZCBpcyBpc3N1ZWQgaW4gb25lCiAgIHBsYWNlIG9ubHks IG15X21lc3NhZ2Vfc3FsLgogKi8KLXZvaWQgbmV0X3NlbmRfZXJyb3IoVEhEICp0aGQsIHVpbnQg c3FsX2Vycm5vLCBjb25zdCBjaGFyICplcnIpCit2b2lkIG5ldF9zZW5kX2Vycm9yKFRIRCAqdGhk LCB1aW50IHNxbF9lcnJubywgY29uc3QgY2hhciAqZXJyLAorICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyKiBzcWxzdGF0ZSkKIHsKICAgREJVR19FTlRFUigibmV0X3NlbmRfZXJyb3IiKTsK IAogICBEQlVHX0FTU0VSVCghdGhkLT5zcGNvbnQpOwogICBEQlVHX0FTU0VSVChzcWxfZXJybm8p OwotICBEQlVHX0FTU0VSVChlcnIgJiYgZXJyWzBdKTsKKyAgREJVR19BU1NFUlQoZXJyKTsKIAog ICBEQlVHX1BSSU5UKCJlbnRlciIsKCJzcWxfZXJybm86ICVkICBlcnI6ICVzIiwgc3FsX2Vycm5v LCBlcnIpKTsKIApAQCAtMTQ3LDcgKzE0OSw3IEBAIHZvaWQgbmV0X3NlbmRfZXJyb3IoVEhEICp0 aGQsIHVpbnQgc3FsX2UKICAgLyogQWJvcnQgbXVsdGktcmVzdWx0IHNldHMgKi8KICAgdGhkLT5z ZXJ2ZXJfc3RhdHVzJj0gflNFUlZFUl9NT1JFX1JFU1VMVFNfRVhJU1RTOwogCi0gIG5ldF9zZW5k X2Vycm9yX3BhY2tldCh0aGQsIHNxbF9lcnJubywgZXJyKTsKKyAgbmV0X3NlbmRfZXJyb3JfcGFj a2V0KHRoZCwgc3FsX2Vycm5vLCBlcnIsIHNxbHN0YXRlKTsKIAogICB0aGQtPm1haW5fZGEuY2Fu X292ZXJ3cml0ZV9zdGF0dXM9IEZBTFNFOwogCkBAIC0zMTgsNyArMzIwLDggQEAgYm9vbCBzZW5k X29sZF9wYXNzd29yZF9yZXF1ZXN0KFRIRCAqdGhkKQogfQogCiAKLXZvaWQgbmV0X3NlbmRfZXJy b3JfcGFja2V0KFRIRCAqdGhkLCB1aW50IHNxbF9lcnJubywgY29uc3QgY2hhciAqZXJyKQordm9p ZCBuZXRfc2VuZF9lcnJvcl9wYWNrZXQoVEhEICp0aGQsIHVpbnQgc3FsX2Vycm5vLCBjb25zdCBj aGFyICplcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzcWxzdGF0 ZSkKIHsKICAgTkVUICpuZXQ9ICZ0aGQtPm5ldDsKICAgdWludCBsZW5ndGg7CkBAIC0zNDUsNyAr MzQ4LDcgQEAgdm9pZCBuZXRfc2VuZF9lcnJvcl9wYWNrZXQoVEhEICp0aGQsIHVpbgogICB7CiAg ICAgLyogVGhlIGZpcnN0ICMgaXMgdG8gbWFrZSB0aGUgcHJvdG9jb2wgYmFja3dhcmQgY29tcGF0 aWJsZSAqLwogICAgIGJ1ZmZbMl09ICcjJzsKLSAgICBwb3M9ICh1Y2hhciopIHN0cm1vdigoY2hh ciopIGJ1ZmYrMywgbXlzcWxfZXJybm9fdG9fc3Fsc3RhdGUoc3FsX2Vycm5vKSk7CisgICAgcG9z PSAodWNoYXIqKSBzdHJtb3YoKGNoYXIqKSBidWZmKzMsIHNxbHN0YXRlKTsKICAgfQogICBsZW5n dGg9ICh1aW50KSAoc3RybWFrZSgoY2hhciopIHBvcywgZXJyLCBNWVNRTF9FUlJNU0dfU0laRS0x KSAtCiAgICAgICAgICAgICAgICAgICAoY2hhciopIGJ1ZmYpOwpAQCAtNDQ1LDcgKzQ0OCw4IEBA IHZvaWQgbmV0X2VuZF9zdGF0ZW1lbnQoVEhEICp0aGQpCiAgICAgLyogVGhlIHF1ZXJ5IGZhaWxl ZCwgc2VuZCBlcnJvciB0byBsb2cgYW5kIGFib3J0IGJvb3RzdHJhcC4gKi8KICAgICBuZXRfc2Vu ZF9lcnJvcih0aGQsCiAgICAgICAgICAgICAgICAgICAgdGhkLT5tYWluX2RhLnNxbF9lcnJubygp LAotICAgICAgICAgICAgICAgICAgIHRoZC0+bWFpbl9kYS5tZXNzYWdlKCkpOworICAgICAgICAg ICAgICAgICAgIHRoZC0+bWFpbl9kYS5tZXNzYWdlKCksCisgICAgICAgICAgICAgICAgICAgdGhk LT5tYWluX2RhLmdldF9zcWxzdGF0ZSgpKTsKICAgICBicmVhazsKICAgY2FzZSBEaWFnbm9zdGlj c19hcmVhOjpEQV9FT0Y6CiAgICAgbmV0X3NlbmRfZW9mKHRoZCwKCj09PSBtb2RpZmllZCBmaWxl ICdzcWwvcHJvdG9jb2wuaCcKLS0tIGEvc3FsL3Byb3RvY29sLmgJMjAwOC0wMi0xMSAxNjoxMToy MiArMDAwMAorKysgYi9zcWwvcHJvdG9jb2wuaAkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBA IC0xNzUsNyArMTc1LDggQEAgcHVibGljOgogfTsKIAogdm9pZCBzZW5kX3dhcm5pbmcoVEhEICp0 aGQsIHVpbnQgc3FsX2Vycm5vLCBjb25zdCBjaGFyICplcnI9MCk7Ci12b2lkIG5ldF9zZW5kX2Vy cm9yKFRIRCAqdGhkLCB1aW50IHNxbF9lcnJubz0wLCBjb25zdCBjaGFyICplcnI9MCk7Cit2b2lk IG5ldF9zZW5kX2Vycm9yKFRIRCAqdGhkLCB1aW50IHNxbF9lcnJubywgY29uc3QgY2hhciAqZXJy LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzcWxzdGF0ZSk7CiB2b2lkIG5ldF9l bmRfc3RhdGVtZW50KFRIRCAqdGhkKTsKIGJvb2wgc2VuZF9vbGRfcGFzc3dvcmRfcmVxdWVzdChU SEQgKnRoZCk7CiB1Y2hhciAqbmV0X3N0b3JlX2RhdGEodWNoYXIgKnRvLGNvbnN0IHVjaGFyICpm cm9tLCBzaXplX3QgbGVuZ3RoKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc2V0X3Zhci5jYycK LS0tIGEvc3FsL3NldF92YXIuY2MJMjAwOC0wOC0xMSAxNjowNjozMCArMDAwMAorKysgYi9zcWwv c2V0X3Zhci5jYwkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0zMjA1LDE2ICszMjA1LDE2 IEBAIHN0YXRpYyBpbnQgY2hlY2tfcHNldWRvX3RocmVhZF9pZChUSEQgKnQKIHN0YXRpYyB1Y2hh ciAqZ2V0X3dhcm5pbmdfY291bnQoVEhEICp0aGQpCiB7CiAgIHRoZC0+c3lzX3Zhcl90bXAubG9u Z192YWx1ZT0KLSAgICAodGhkLT53YXJuX2NvdW50Wyh1aW50KSBNWVNRTF9FUlJPUjo6V0FSTl9M RVZFTF9OT1RFXSArCi0gICAgIHRoZC0+d2Fybl9jb3VudFsodWludCkgTVlTUUxfRVJST1I6OldB Uk5fTEVWRUxfRVJST1JdICsKLSAgICAgdGhkLT53YXJuX2NvdW50Wyh1aW50KSBNWVNRTF9FUlJP Ujo6V0FSTl9MRVZFTF9XQVJOXSk7CisgICAgKHRoZC0+bWFpbl9kYS5tX3N0bXRfYXJlYS53YXJu X2NvdW50Wyh1aW50KSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9OT1RFXSArCisgICAgIHRoZC0+ bWFpbl9kYS5tX3N0bXRfYXJlYS53YXJuX2NvdW50Wyh1aW50KSBNWVNRTF9FUlJPUjo6V0FSTl9M RVZFTF9FUlJPUl0gKworICAgICB0aGQtPm1haW5fZGEubV9zdG10X2FyZWEud2Fybl9jb3VudFso dWludCkgTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfV0FSTl0pOwogICByZXR1cm4gKHVjaGFyKikg JnRoZC0+c3lzX3Zhcl90bXAubG9uZ192YWx1ZTsKIH0KIAogc3RhdGljIHVjaGFyICpnZXRfZXJy b3JfY291bnQoVEhEICp0aGQpCiB7Ci0gIHRoZC0+c3lzX3Zhcl90bXAubG9uZ192YWx1ZT0gCi0g ICAgdGhkLT53YXJuX2NvdW50Wyh1aW50KSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9FUlJPUl07 CisgIHRoZC0+c3lzX3Zhcl90bXAubG9uZ192YWx1ZT0KKyAgICB0aGQtPm1haW5fZGEubV9zdG10 X2FyZWEud2Fybl9jb3VudFsodWludCkgTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1JdOwog ICByZXR1cm4gKHVjaGFyKikgJnRoZC0+c3lzX3Zhcl90bXAubG9uZ192YWx1ZTsKIH0KIAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NxbC9zaGFyZS9lcnJtc2cudHh0JwotLS0gYS9zcWwvc2hhcmUvZXJy bXNnLnR4dAkyMDA4LTA4LTIyIDEzOjIxOjMxICswMDAwCisrKyBiL3NxbC9zaGFyZS9lcnJtc2cu dHh0CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTYzNzQsMyArNjM3NCwyOCBAQCBFUl9C QUNLVVBfUkVMRUFTRV9OQU1FX0xPQ0tfRkFJTEVECiAgIGVuZyAiUmVzdG9yZSBmYWlsZWQgdG8g cmVsZWFzZSB0aGUgbmFtZSBsb2NrcyBvbiB0aGUgdGFibGVzLiIKIEVSX0JBQ0tVUF9CQUNLVVBE SVIKICAgZW5nICJUaGUgcGF0aCBzcGVjaWZpZWQgZm9yIHRoZSBzeXN0ZW0gdmFyaWFibGUgYmFj a3VwZGlyIGNhbm5vdCBiZSBhY2Nlc3NlZCBvciBpcyBpbnZhbGlkLiByZWY6ICUtLjY0cyIKKwor RVJfRFVQX1NJR05BTF9TRVQgNDIwMDAKKyAgICAgICAgZW5nICJEdXBsaWNhdGUgY29uZGl0aW9u IGluZm9ybWF0aW9uIGl0ZW0gJyVzJyIKKworRVJfU0lHTkFMX1dBUk4gMDEwMDAKKyAgICAgICAg ZW5nICJVbmhhbmRsZWQgdXNlci1kZWZpbmVkIHdhcm5pbmciCisKK0VSX1NJR05BTF9OT1RfRk9V TkQgMDIwMDAKKyAgICAgICAgZW5nICJVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBmb3VuZCIK KworRVJfU0lHTkFMX0VYQ0VQVElPTiBIWTAwMAorICAgICAgICBlbmcgIlVuaGFuZGxlZCB1c2Vy LWRlZmluZWQgZXhjZXB0aW9uIgorCitFUl9SRVNJR05BTF9OT19IQU5ETEVSIDBLMDAwCisgICAg ICAgIGVuZyAiUkVTSUdOQUwgd2hlbiBoYW5kbGVyIG5vdCBhY3RpdmUiCisKK0VSX1NJR05BTF9C QURfQ09ORElUSU9OX1RZUEUKKyAgICAgICAgZW5nICJTSUdOQUwvUkVTSUdOQUwgY2FuIG9ubHkg dXNlIGEgQ09ORElUSU9OIGRlZmluZWQgd2l0aCBTUUxTVEFURSIKKworV0FSTl9DT05EX0lURU1f VFJVTkNBVEVECisgICAgICAgIGVuZyAiRGF0YSB0cnVuY2F0ZWQgZm9yIGNvbmRpdGlvbiBpdGVt ICclcyciCisKK0VSX0NPTkRfSVRFTV9UT09fTE9ORworICAgICAgICBlbmcgIkRhdGEgdG9vIGxv bmcgZm9yIGNvbmRpdGlvbiBpdGVtICclcyciCisKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc2xh dmUuY2MnCi0tLSBhL3NxbC9zbGF2ZS5jYwkyMDA4LTA3LTIxIDAzOjU1OjA5ICswMDAwCisrKyBi L3NxbC9zbGF2ZS5jYwkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0xNjYwLDEyICsxNjYw LDEzIEBAIHN0YXRpYyBpbnQgaGFzX3RlbXBvcmFyeV9lcnJvcihUSEQgKnRoZCkKICAgLyoKICAg ICBjdXJyZW50bHkgdGVtcG9yYXJ5IGVycm9yIHNldCBpbiBuZGJjbHVzdGVyCiAgICovCi0gIExp c3RfaXRlcmF0b3JfZmFzdDxNWVNRTF9FUlJPUj4gaXQodGhkLT53YXJuX2xpc3QpOwotICBNWVNR TF9FUlJPUiAqZXJyOwotICB3aGlsZSAoKGVycj0gaXQrKykpCi0gIHsKLSAgICBEQlVHX1BSSU5U KCJpbmZvIiwgKCJoYXMgd2FybmluZyAlZCAlcyIsIGVyci0+Y29kZSwgZXJyLT5tc2cpKTsKLSAg ICBzd2l0Y2ggKGVyci0+Y29kZSkKKyAgTGlzdF9pdGVyYXRvcl9mYXN0PFNRTF9jb25kaXRpb24+ IGl0KHRoZC0+bWFpbl9kYS5tX3N0bXRfYXJlYS53YXJuX2xpc3QpOworICBTUUxfY29uZGl0aW9u ICpjb25kOworICB3aGlsZSAoKGNvbmQ9IGl0KyspKQorICB7CisgICAgREJVR19QUklOVCgiaW5m byIsICgiaGFzIGNvbmRpdGlvbiAlZCAlcyIsIGNvbmQtPmdldF9zcWxfZXJybm8oKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIGNvbmQtPmdldF9tZXNzYWdlX3RleHQoKSkpOworICAgIHN3aXRj aCAoY29uZC0+Z2V0X3NxbF9lcnJubygpKQogICAgIHsKICAgICBjYXNlIEVSX0dFVF9URU1QT1JB UllfRVJSTVNHOgogICAgICAgREJVR19SRVRVUk4oMSk7CkBAIC0yNTc1LDE4ICsyNTc2LDE5IEBA IFNsYXZlIFNRTCB0aHJlYWQgYWJvcnRlZC4gQ2FuJ3QgZXhlY3V0ZSAKICAgICAgICAgfQogCiAg ICAgICAgIC8qIFByaW50IGFueSB3YXJuaW5ncyBpc3N1ZWQgKi8KLSAgICAgICAgTGlzdF9pdGVy YXRvcl9mYXN0PE1ZU1FMX0VSUk9SPiBpdCh0aGQtPndhcm5fbGlzdCk7Ci0gICAgICAgIE1ZU1FM X0VSUk9SICplcnI7CisgICAgICAgIExpc3RfaXRlcmF0b3JfZmFzdDxTUUxfY29uZGl0aW9uPiBp dCh0aGQtPm1haW5fZGEubV9zdG10X2FyZWEud2Fybl9saXN0KTsKKyAgICAgICAgU1FMX2NvbmRp dGlvbiAqY29uZDsKICAgICAgICAgLyoKICAgICAgICAgICBBZGRlZCBjb250cm9sbGVkIHNsYXZl IHRocmVhZCBjYW5jZWwgZm9yIHJlcGxpY2F0aW9uCiAgICAgICAgICAgb2YgdXNlci1kZWZpbmVk IHZhcmlhYmxlcy4KICAgICAgICAgKi8KICAgICAgICAgYm9vbCB1ZGZfZXJyb3IgPSBmYWxzZTsK LSAgICAgICAgd2hpbGUgKChlcnI9IGl0KyspKQorICAgICAgICB3aGlsZSAoKGNvbmQ9IGl0Kysp KQogICAgICAgICB7Ci0gICAgICAgICAgaWYgKGVyci0+Y29kZSA9PSBFUl9DQU5UX09QRU5fTElC UkFSWSkKKyAgICAgICAgICBpZiAoY29uZC0+Z2V0X3NxbF9lcnJubygpID09IEVSX0NBTlRfT1BF Tl9MSUJSQVJZKQogICAgICAgICAgICAgdWRmX2Vycm9yID0gdHJ1ZTsKLSAgICAgICAgICBzcWxf cHJpbnRfd2FybmluZygiU2xhdmU6ICVzIEVycm9yX2NvZGU6ICVkIixlcnItPm1zZywgZXJyLT5j b2RlKTsKKyAgICAgICAgICBzcWxfcHJpbnRfd2FybmluZygiU2xhdmU6ICVzIEVycm9yX2NvZGU6 ICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kLT5nZXRfbWVzc2FnZV90ZXh0 KCksIGNvbmQtPmdldF9zcWxfZXJybm8oKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHVkZl9l cnJvcikKICAgICAgICAgICBzcWxfcHJpbnRfZXJyb3IoIkVycm9yIGxvYWRpbmcgdXNlci1kZWZp bmVkIGxpYnJhcnksIHNsYXZlIFNRTCAiCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NwLmNjJwot LS0gYS9zcWwvc3AuY2MJMjAwOC0wNy0xNSAxNjoyOTo1MSArMDAwMAorKysgYi9zcWwvc3AuY2MJ MjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtNDk2LDE4ICs0OTYsMTUgQEAgZGJfZmluZF9y b3V0aW5lKFRIRCAqdGhkLCBpbnQgdHlwZSwgc3Bfbgogc3RydWN0IFNpbGVuY2VfZGVwcmVjYXRl ZF93YXJuaW5nIDogcHVibGljIEludGVybmFsX2Vycm9yX2hhbmRsZXIKIHsKIHB1YmxpYzoKLSAg dmlydHVhbCBib29sIGhhbmRsZV9lcnJvcih1aW50IHNxbF9lcnJubywgY29uc3QgY2hhciAqbWVz c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWVNRTF9FUlJPUjo6ZW51bV93YXJu aW5nX2xldmVsIGxldmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRIRCAqdGhkKTsK KyAgdmlydHVhbCBib29sIGhhbmRsZV9jb25kaXRpb24oVEhEICp0aGQsIGNvbnN0IFNRTF9jb25k aXRpb24gKmNvbmQpOwogfTsKIAogYm9vbAotU2lsZW5jZV9kZXByZWNhdGVkX3dhcm5pbmc6Omhh bmRsZV9lcnJvcih1aW50IHNxbF9lcnJubywgY29uc3QgY2hhciAqbWVzc2FnZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxfRVJST1I6OmVudW1fd2Fybmlu Z19sZXZlbCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VEhEICp0aGQpCitTaWxlbmNlX2RlcHJlY2F0ZWRfd2FybmluZzo6aGFuZGxlX2NvbmRpdGlvbihU SEQgKnRoZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IFNRTF9jb25kaXRpb24gKmNvbmQpCiB7Ci0gIGlmIChzcWxfZXJybm8gPT0gRVJfV0FSTl9E RVBSRUNBVEVEX1NZTlRBWCAmJgotICAgICAgbGV2ZWwgPT0gTVlTUUxfRVJST1I6OldBUk5fTEVW RUxfV0FSTikKKyAgaWYgKGNvbmQtPmdldF9zcWxfZXJybm8oKSA9PSBFUl9XQVJOX0RFUFJFQ0FU RURfU1lOVEFYICYmCisgICAgICBjb25kLT5nZXRfbGV2ZWwoKSA9PSBNWVNRTF9FUlJPUjo6V0FS Tl9MRVZFTF9XQVJOKQogICAgIHJldHVybiBUUlVFOwogCiAgIHJldHVybiBGQUxTRTsKCj09PSBt b2RpZmllZCBmaWxlICdzcWwvc3BfaGVhZC5jYycKLS0tIGEvc3FsL3NwX2hlYWQuY2MJMjAwOC0w OC0xOCAxODoxMjo0NiArMDAwMAorKysgYi9zcWwvc3BfaGVhZC5jYwkyMDA4LTA4LTI3IDIyOjE0 OjAzICswMDAwCkBAIC0xMjYzLDkgKzEyNjMsOSBAQCBzcF9oZWFkOjpleGVjdXRlKFRIRCAqdGhk KQogICAgICovCiAgICAgaWYgKGN0eCkKICAgICB7Ci0gICAgICB1aW50IGhmOworICAgICAgdWlu dCBoYW5kbGVyX2luZGV4OwogCi0gICAgICBzd2l0Y2ggKGN0eC0+Zm91bmRfaGFuZGxlcigmaGlw LCAmaGYpKSB7CisgICAgICBzd2l0Y2ggKGN0eC0+Zm91bmRfaGFuZGxlcigmIGhpcCwgJiBoYW5k bGVyX2luZGV4KSkgewogICAgICAgY2FzZSBTUF9IQU5ETEVSX05PTkU6CiAgICAgICAgIGJyZWFr OwogICAgICAgY2FzZSBTUF9IQU5ETEVSX0NPTlRJTlVFOgpAQCAtMTI3NCwxNiArMTI3NCwyMCBA QCBzcF9oZWFkOjpleGVjdXRlKFRIRCAqdGhkKQogICAgICAgICBjdHgtPnB1c2hfaHN0YWNrKGkt PmdldF9jb250X2Rlc3QoKSk7CiAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLwogICAgICAgZGVm YXVsdDoKKyAgICAgICAgaWYgKHRoZC0+ZW5kX3BhcnRpYWxfcmVzdWx0X3NldCkKKyAgICAgICAg ICB0aGQtPnByb3RvY29sLT5lbmRfcGFydGlhbF9yZXN1bHRfc2V0KHRoZCk7CiAgICAgICAgIGlw PSBoaXA7CiAgICAgICAgIGVycl9zdGF0dXM9IEZBTFNFOwogICAgICAgICBjdHgtPmNsZWFyX2hh bmRsZXIoKTsKLSAgICAgICAgY3R4LT5lbnRlcl9oYW5kbGVyKGhpcCk7CisgICAgICAgIGN0eC0+ ZW50ZXJfaGFuZGxlcihoaXAsIGhhbmRsZXJfaW5kZXgpOwogICAgICAgICB0aGQtPmNsZWFyX2Vy cm9yKCk7CiAgICAgICAgIHRoZC0+aXNfZmF0YWxfZXJyb3I9IDA7CiAgICAgICAgIHRoZC0+a2ls bGVkPSBUSEQ6Ok5PVF9LSUxMRUQ7CiAgICAgICAgIHRoZC0+bXlzeXNfdmFyLT5hYm9ydD0gMDsK ICAgICAgICAgY29udGludWU7CiAgICAgICB9CisKKyAgICAgIHRoZC0+ZW5kX3BhcnRpYWxfcmVz dWx0X3NldD0gRkFMU0U7CiAgICAgfQogICB9IHdoaWxlICghZXJyX3N0YXR1cyAmJiAhdGhkLT5r aWxsZWQgJiYgIXRoZC0+aXNfZmF0YWxfZXJyb3IpOwogCkBAIC0xNTI1LDcgKzE1MjksNyBAQCBz cF9oZWFkOjpleGVjdXRlX3RyaWdnZXIoVEhEICp0aGQsCiAgIGluaXRfc3FsX2FsbG9jKCZjYWxs X21lbV9yb290LCBNRU1fUk9PVF9CTE9DS19TSVpFLCAwKTsKICAgdGhkLT5zZXRfbl9iYWNrdXBf YWN0aXZlX2FyZW5hKCZjYWxsX2FyZW5hLCAmYmFja3VwX2FyZW5hKTsKIAotICBpZiAoIShuY3R4 PSBuZXcgc3BfcmNvbnRleHQobV9wY29udCwgMCwgb2N0eCkpIHx8CisgIGlmICghKG5jdHg9IG5l dyBzcF9yY29udGV4dChtZW1fcm9vdCwgbV9wY29udCwgMCwgb2N0eCkpIHx8CiAgICAgICBuY3R4 LT5pbml0KHRoZCkpCiAgIHsKICAgICBlcnJfc3RhdHVzPSBUUlVFOwpAQCAtMTY0Miw3ICsxNjQ2 LDcgQEAgc3BfaGVhZDo6ZXhlY3V0ZV9mdW5jdGlvbihUSEQgKnRoZCwgSXRlbQogICBpbml0X3Nx bF9hbGxvYygmY2FsbF9tZW1fcm9vdCwgTUVNX1JPT1RfQkxPQ0tfU0laRSwgMCk7CiAgIHRoZC0+ c2V0X25fYmFja3VwX2FjdGl2ZV9hcmVuYSgmY2FsbF9hcmVuYSwgJmJhY2t1cF9hcmVuYSk7CiAK LSAgaWYgKCEobmN0eD0gbmV3IHNwX3Jjb250ZXh0KG1fcGNvbnQsIHJldHVybl92YWx1ZV9mbGQs IG9jdHgpKSB8fAorICBpZiAoIShuY3R4PSBuZXcgc3BfcmNvbnRleHQobWVtX3Jvb3QsIG1fcGNv bnQsIHJldHVybl92YWx1ZV9mbGQsIG9jdHgpKSB8fAogICAgICAgbmN0eC0+aW5pdCh0aGQpKQog ICB7CiAgICAgdGhkLT5yZXN0b3JlX2FjdGl2ZV9hcmVuYSgmY2FsbF9hcmVuYSwgJmJhY2t1cF9h cmVuYSk7CkBAIC0xODQ2LDcgKzE4NTAsNyBAQCBzcF9oZWFkOjpleGVjdXRlX3Byb2NlZHVyZShU SEQgKnRoZCwgTGlzCiAgIHNhdmVfc3Bjb250PSBvY3R4PSB0aGQtPnNwY29udDsKICAgaWYgKCEg b2N0eCkKICAgewkJCQkvLyBDcmVhdGUgYSB0ZW1wb3Jhcnkgb2xkIGNvbnRleHQKLSAgICBpZiAo IShvY3R4PSBuZXcgc3BfcmNvbnRleHQobV9wY29udCwgTlVMTCwgb2N0eCkpIHx8CisgICAgaWYg KCEob2N0eD0gbmV3IHNwX3Jjb250ZXh0KG1lbV9yb290LCBtX3Bjb250LCBOVUxMLCBvY3R4KSkg fHwKICAgICAgICAgb2N0eC0+aW5pdCh0aGQpKQogICAgIHsKICAgICAgIGRlbGV0ZSBvY3R4OyAv KiBEZWxldGUgb2N0eCBpZiBpdCB3YXMgaW5pdCgpIHRoYXQgZmFpbGVkLiAqLwpAQCAtMTg2Miw3 ICsxODY2LDcgQEAgc3BfaGVhZDo6ZXhlY3V0ZV9wcm9jZWR1cmUoVEhEICp0aGQsIExpcwogICAg IHRoZC0+c3Bjb250LT5jYWxsZXJzX2FyZW5hPSB0aGQ7CiAgIH0KIAotICBpZiAoIShuY3R4PSBu ZXcgc3BfcmNvbnRleHQobV9wY29udCwgTlVMTCwgb2N0eCkpIHx8CisgIGlmICghKG5jdHg9IG5l dyBzcF9yY29udGV4dChtZW1fcm9vdCwgbV9wY29udCwgTlVMTCwgb2N0eCkpIHx8CiAgICAgICBu Y3R4LT5pbml0KHRoZCkpCiAgIHsKICAgICBkZWxldGUgbmN0eDsgLyogRGVsZXRlIG5jdHggaWYg aXQgd2FzIGluaXQoKSB0aGF0IGZhaWxlZC4gKi8KQEAgLTMyMTgsNyArMzIyMiw3IEBAIHNwX2lu c3RyX2hwdXNoX2p1bXA6OmV4ZWN1dGUoVEhEICp0aGQsIHUKICAgc3BfY29uZF90eXBlX3QgKnA7 CiAKICAgd2hpbGUgKChwPSBsaSsrKSkKLSAgICB0aGQtPnNwY29udC0+cHVzaF9oYW5kbGVyKHAs IG1faXArMSwgbV90eXBlLCBtX2ZyYW1lKTsKKyAgICB0aGQtPnNwY29udC0+cHVzaF9oYW5kbGVy KHAsIG1faXArMSwgbV90eXBlKTsKIAogICAqbmV4dHA9IG1fZGVzdDsKICAgREJVR19SRVRVUk4o MCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NwX3Bjb250ZXh0LmgnCi0tLSBhL3NxbC9zcF9w Y29udGV4dC5oCTIwMDctMDYtMTAgMTA6NDM6NTcgKzAwMDAKKysrIGIvc3FsL3NwX3Bjb250ZXh0 LmgJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtNzEsNyArNzEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBzcF9sYWJlbAogdHlwZWRlZiBzdHJ1Y3Qgc3BfY29uZF90eXBlCiB7CiAgIGVudW0geyBu dW1iZXIsIHN0YXRlLCB3YXJuaW5nLCBub3Rmb3VuZCwgZXhjZXB0aW9uIH0gdHlwZTsKLSAgY2hh ciBzcWxzdGF0ZVs2XTsKKyAgY2hhciBzcWxzdGF0ZVtTUUxTVEFURV9MRU5HVEgrMV07CiAgIHVp bnQgbXlzcWxlcnI7CiB9IHNwX2NvbmRfdHlwZV90OwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Fs L3NwX3Jjb250ZXh0LmNjJwotLS0gYS9zcWwvc3BfcmNvbnRleHQuY2MJMjAwOC0wMS0yMyAyMjoz Njo1NyArMDAwMAorKysgYi9zcWwvc3BfcmNvbnRleHQuY2MJMjAwOC0wOC0yNyAyMjoxNDowMyAr MDAwMApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgInNwX3Bjb250ZXh0LmgiCiAKIAotc3Bf cmNvbnRleHQ6OnNwX3Jjb250ZXh0KHNwX3Bjb250ZXh0ICpyb290X3BhcnNpbmdfY3R4LAorc3Bf cmNvbnRleHQ6OnNwX3Jjb250ZXh0KE1FTV9ST09UICpjb25kX3Jvb3QsIHNwX3Bjb250ZXh0ICpy b290X3BhcnNpbmdfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkICpyZXR1cm5f dmFsdWVfZmxkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNwX3Jjb250ZXh0ICpwcmV2X3J1 bnRpbWVfY3R4KQogICA6bV9yb290X3BhcnNpbmdfY3R4KHJvb3RfcGFyc2luZ19jdHgpLApAQCAt NDQsNyArNDQsOCBAQCBzcF9yY29udGV4dDo6c3BfcmNvbnRleHQoc3BfcGNvbnRleHQgKnJvCiAg ICBtX2hmb3VuZCgtMSksCiAgICBtX2Njb3VudCgwKSwKICAgIG1fY2FzZV9leHByX2hvbGRlcnMo MCksCi0gICBtX3ByZXZfcnVudGltZV9jdHgocHJldl9ydW50aW1lX2N0eCkKKyAgIG1fcHJldl9y dW50aW1lX2N0eChwcmV2X3J1bnRpbWVfY3R4KSwKKyAgIG1fY29uZF9yb290KGNvbmRfcm9vdCkK IHsKIH0KIApAQCAtNjgsNiArNjksOCBAQCBzcF9yY29udGV4dDo6fnNwX3Jjb250ZXh0KCkKIAog Ym9vbCBzcF9yY29udGV4dDo6aW5pdChUSEQgKnRoZCkKIHsKKyAgdWludCBoYW5kbGVyX2NvdW50 PSBtX3Jvb3RfcGFyc2luZ19jdHgtPm1heF9oYW5kbGVyX2luZGV4KCk7CisKICAgaW5fc3ViX3N0 bXQ9IHRoZC0+aW5fc3ViX3N0bXQ7CiAKICAgaWYgKGluaXRfdmFyX3RhYmxlKHRoZCkgfHwgaW5p dF92YXJfaXRlbXMoKSkKQEAgLTc1LDE0ICs3OCwxNCBAQCBib29sIHNwX3Jjb250ZXh0Ojppbml0 KFRIRCAqdGhkKQogCiAgIHJldHVybgogICAgICEobV9oYW5kbGVyPQotICAgICAgKHNwX2hhbmRs ZXJfdCopdGhkLT5hbGxvYyhtX3Jvb3RfcGFyc2luZ19jdHgtPm1heF9oYW5kbGVyX2luZGV4KCkg KgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3BfaGFuZGxlcl90KSkp IHx8CisgICAgICAoc3BfaGFuZGxlcl90Kil0aGQtPmFsbG9jKGhhbmRsZXJfY291bnQgKiBzaXpl b2Yoc3BfaGFuZGxlcl90KSkpIHx8CisgICAgIShtX3JhaXNlZF9jb25kaXRpb25zPQorICAgICAg KFNRTF9jb25kaXRpb24qKil0aGQtPmNhbGxvYyhoYW5kbGVyX2NvdW50ICogc2l6ZW9mKFNRTF9j b25kaXRpb24qKSkpIHx8CiAgICAgIShtX2hzdGFjaz0KLSAgICAgICh1aW50Kil0aGQtPmFsbG9j KG1fcm9vdF9wYXJzaW5nX2N0eC0+bWF4X2hhbmRsZXJfaW5kZXgoKSAqCi0gICAgICAgICAgICAg ICAgICAgICAgICBzaXplb2YodWludCkpKSB8fAorICAgICAgKHVpbnQqKXRoZC0+YWxsb2MoaGFu ZGxlcl9jb3VudCAqIHNpemVvZih1aW50KSkpIHx8CiAgICAgIShtX2luX2hhbmRsZXI9Ci0gICAg ICAodWludCopdGhkLT5hbGxvYyhtX3Jvb3RfcGFyc2luZ19jdHgtPm1heF9oYW5kbGVyX2luZGV4 KCkgKgotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQpKSkgfHwKKyAgICAgIChz cF9hY3RpdmVfaGFuZGxlcl90Kil0aGQtPmFsbG9jKGhhbmRsZXJfY291bnQgKgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNwX2FjdGl2ZV9oYW5kbGVyX3Qp KSkgfHwKICAgICAhKG1fY3N0YWNrPQogICAgICAgKHNwX2N1cnNvcioqKXRoZC0+YWxsb2MobV9y b290X3BhcnNpbmdfY3R4LT5tYXhfY3Vyc29yX2luZGV4KCkgKgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKHNwX2N1cnNvciopKSkgfHwKQEAgLTE5NCwxMyArMTk3LDE1IEBA IHNwX3Jjb250ZXh0OjpzZXRfcmV0dXJuX3ZhbHVlKFRIRCAqdGhkLCAKICovCiAKIGJvb2wKLXNw X3Jjb250ZXh0OjpmaW5kX2hhbmRsZXIoVEhEICp0aGQsIHVpbnQgc3FsX2Vycm5vLAotICAgICAg ICAgICAgICAgICAgICAgICAgICBNWVNRTF9FUlJPUjo6ZW51bV93YXJuaW5nX2xldmVsIGxldmVs KQorc3BfcmNvbnRleHQ6OmZpbmRfaGFuZGxlcihUSEQgKnRoZCwgY29uc3QgU1FMX2NvbmRpdGlv biAqY29uZCkKIHsKICAgaWYgKG1faGZvdW5kID49IDApCiAgICAgcmV0dXJuIDE7CQkJLy8gQWxy ZWFkeSBnb3Qgb25lCiAKLSAgY29uc3QgY2hhciAqc3Fsc3RhdGU9IG15c3FsX2Vycm5vX3RvX3Nx bHN0YXRlKHNxbF9lcnJubyk7CisgIHVpbnQgc3FsX2Vycm5vPSBjb25kLT5nZXRfc3FsX2Vycm5v KCk7CisgIE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgbGV2ZWw9IGNvbmQtPmdldF9s ZXZlbCgpOworCisgIGNvbnN0IGNoYXIgKnNxbHN0YXRlPSBjb25kLT5nZXRfc3Fsc3RhdGUoKTsK ICAgaW50IGk9IG1faGNvdW50LCBmb3VuZD0gLTE7CiAKICAgLyoKQEAgLTIyMCw3ICsyMjUsNyBA QCBzcF9yY29udGV4dDo6ZmluZF9oYW5kbGVyKFRIRCAqdGhkLCB1aW50CiAKICAgICAvKiBDaGVj ayBhY3RpdmUgaGFuZGxlcnMsIHRvIGF2b2lkIGludm9raW5nIG9uZSByZWN1cnNpdmVseSAqLwog ICAgIHdoaWxlIChqLS0pCi0gICAgICBpZiAobV9pbl9oYW5kbGVyW2pdID09IG1faGFuZGxlcltp XS5oYW5kbGVyKQorICAgICAgaWYgKG1faW5faGFuZGxlcltqXS5pcCA9PSBtX2hhbmRsZXJbaV0u aGFuZGxlcikKIAlicmVhazsKICAgICBpZiAoaiA+PSAwKQogICAgICAgY29udGludWU7ICAgICAg ICAgICAgICAgICAvLyBBbHJlYWR5IGV4ZWN1dGluZyB0aGlzIGhhbmRsZXIKQEAgLTI2NCwxMCAr MjY5LDE4IEBAIHNwX3Jjb250ZXh0OjpmaW5kX2hhbmRsZXIoVEhEICp0aGQsIHVpbnQKICAgICAq LwogICAgIGlmIChtX3ByZXZfcnVudGltZV9jdHggJiYgSVNfRVhDRVBUSU9OX0NPTkRJVElPTihz cWxzdGF0ZSkgJiYKICAgICAgICAgbGV2ZWwgPT0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJS T1IpCi0gICAgICByZXR1cm4gbV9wcmV2X3J1bnRpbWVfY3R4LT5maW5kX2hhbmRsZXIodGhkLCBz cWxfZXJybm8sIGxldmVsKTsKKyAgICAgIHJldHVybiBtX3ByZXZfcnVudGltZV9jdHgtPmZpbmRf aGFuZGxlcih0aGQsIGNvbmQpOwogICAgIHJldHVybiBGQUxTRTsKICAgfQorCiAgIG1faGZvdW5k PSBmb3VuZDsKKworICBTUUxfY29uZGl0aW9uICpyYWlzZWQ7CisgIHJhaXNlZD0gU1FMX2NvbmRp dGlvbjo6ZGVlcF9jb3B5KHRoZCwgbV9jb25kX3Jvb3QsIGNvbmQpIDsKKyAgREJVR19BU1NFUlQo bV9oZm91bmQgPj0gMCk7CisgIERCVUdfQVNTRVJUKG1faGZvdW5kIDwgbV9yb290X3BhcnNpbmdf Y3R4LT5tYXhfaGFuZGxlcl9pbmRleCgpKTsKKyAgbV9yYWlzZWRfY29uZGl0aW9uc1ttX2hmb3Vu ZF09IHJhaXNlZDsKKwogICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMjkzLDIyICszMDYsMjIgQEAg c3BfcmNvbnRleHQ6OmZpbmRfaGFuZGxlcihUSEQgKnRoZCwgdWludAogICAgIEZBTFNFICAgICAg aWYgbm8gaGFuZGxlciB3YXMgZm91bmQuCiAqLwogYm9vbAotc3BfcmNvbnRleHQ6OmhhbmRsZV9l cnJvcih1aW50IHNxbF9lcnJubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxfRVJS T1I6OmVudW1fd2FybmluZ19sZXZlbCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg VEhEICp0aGQpCitzcF9yY29udGV4dDo6aGFuZGxlX2NvbmRpdGlvbihUSEQgKnRoZCwgY29uc3Qg U1FMX2NvbmRpdGlvbiAqY29uZCkKIHsKLSAgTVlTUUxfRVJST1I6OmVudW1fd2FybmluZ19sZXZl bCBlbGV2YXRlZF9sZXZlbD0gbGV2ZWw7Ci0KLQogICAvKiBEZXBlbmRpbmcgb24gdGhlIHNxbF9t b2RlIG9mIGV4ZWN1dGlvbiwKICAgICAgd2FybmluZ3MgbWF5IGJlIGNvbnNpZGVyZWQgZXJyb3Jz ICovCi0gIGlmICgobGV2ZWwgPT0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfV0FSTikgJiYKKyAg aWYgKChjb25kLT5tX2xldmVsID09IE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4pICYmCiAg ICAgICB0aGQtPnJlYWxseV9hYm9ydF9vbl93YXJuaW5nKCkpCiAgIHsKLSAgICBlbGV2YXRlZF9s ZXZlbD0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1I7CisgICAgU1FMX2NvbmRpdGlvbiBl bGV2YXRlZF9jb25kKHRoZC0+bWVtX3Jvb3QpOworICAgIGVsZXZhdGVkX2NvbmQuc2V0KHRoZCwg Y29uZC0+bV9zcWxfZXJybm8sCisgICAgICAgICAgICAgICAgICAgICAgY29uZC0+Z2V0X21lc3Nh Z2VfdGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAgIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVM X0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgIE1ZRigwKSk7CisgICAgcmV0dXJuIGZpbmRf aGFuZGxlcih0aGQsICYgZWxldmF0ZWRfY29uZCk7CiAgIH0KIAotICByZXR1cm4gZmluZF9oYW5k bGVyKHRoZCwgc3FsX2Vycm5vLCBlbGV2YXRlZF9sZXZlbCk7CisgIHJldHVybiBmaW5kX2hhbmRs ZXIodGhkLCBjb25kKTsKIH0KIAogdm9pZApAQCAtMzM1LDcgKzM0OCw3IEBAIHNwX3Jjb250ZXh0 Ojpwb3BfY3Vyc29ycyh1aW50IGNvdW50KQogfQogCiB2b2lkCi1zcF9yY29udGV4dDo6cHVzaF9o YW5kbGVyKHN0cnVjdCBzcF9jb25kX3R5cGUgKmNvbmQsIHVpbnQgaCwgaW50IHR5cGUsIHVpbnQg ZikKK3NwX3Jjb250ZXh0OjpwdXNoX2hhbmRsZXIoc3RydWN0IHNwX2NvbmRfdHlwZSAqY29uZCwg dWludCBoLCBpbnQgdHlwZSkKIHsKICAgREJVR19FTlRFUigic3BfcmNvbnRleHQ6OnB1c2hfaGFu ZGxlciIpOwogICBEQlVHX0FTU0VSVChtX2hjb3VudCA8IG1fcm9vdF9wYXJzaW5nX2N0eC0+bWF4 X2hhbmRsZXJfaW5kZXgoKSk7CkBAIC0zNDMsNyArMzU2LDYgQEAgc3BfcmNvbnRleHQ6OnB1c2hf aGFuZGxlcihzdHJ1Y3Qgc3BfY29uZAogICBtX2hhbmRsZXJbbV9oY291bnRdLmNvbmQ9IGNvbmQ7 CiAgIG1faGFuZGxlclttX2hjb3VudF0uaGFuZGxlcj0gaDsKICAgbV9oYW5kbGVyW21faGNvdW50 XS50eXBlPSB0eXBlOwotICBtX2hhbmRsZXJbbV9oY291bnRdLmZvZmZzZXQ9IGY7CiAgIG1faGNv dW50Kz0gMTsKIAogICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJtX2hjb3VudDogJWQiLCBtX2hjb3Vu dCkpOwpAQCAtMzgyLDExICszOTQsMTMgQEAgc3BfcmNvbnRleHQ6OnBvcF9oc3RhY2soKQogfQog CiB2b2lkCi1zcF9yY29udGV4dDo6ZW50ZXJfaGFuZGxlcihpbnQgaGlkKQorc3BfcmNvbnRleHQ6 OmVudGVyX2hhbmRsZXIodWludCBoaXAsIHVpbnQgaGluZGV4KQogewogICBEQlVHX0VOVEVSKCJz cF9yY29udGV4dDo6ZW50ZXJfaGFuZGxlciIpOwogICBEQlVHX0FTU0VSVChtX2loc3AgPCBtX3Jv b3RfcGFyc2luZ19jdHgtPm1heF9oYW5kbGVyX2luZGV4KCkpOwotICBtX2luX2hhbmRsZXJbbV9p aHNwKytdPSBoaWQ7CisgIG1faW5faGFuZGxlclttX2loc3BdLmlwPSBoaXA7CisgIG1faW5faGFu ZGxlclttX2loc3BdLmluZGV4PSBoaW5kZXg7CisgIG1faWhzcCsrOwogICBEQlVHX1BSSU5UKCJp bmZvIiwgKCJtX2loc3A6ICVkIiwgbV9paHNwKSk7CiAgIERCVUdfVk9JRF9SRVRVUk47CiB9CkBA IC0zOTYsMTEgKzQxMCwzMiBAQCBzcF9yY29udGV4dDo6ZXhpdF9oYW5kbGVyKCkKIHsKICAgREJV R19FTlRFUigic3BfcmNvbnRleHQ6OmV4aXRfaGFuZGxlciIpOwogICBEQlVHX0FTU0VSVChtX2lo c3ApOworICB1aW50IGhpbmRleD0gbV9pbl9oYW5kbGVyW21faWhzcC0xXS5pbmRleDsKKyAgREJV R19BU1NFUlQobV9yYWlzZWRfY29uZGl0aW9uc1toaW5kZXhdKTsKKyAgZGVsZXRlIG1fcmFpc2Vk X2NvbmRpdGlvbnNbaGluZGV4XTsKKyAgbV9yYWlzZWRfY29uZGl0aW9uc1toaW5kZXhdPSBOVUxM OwogICBtX2loc3AtPSAxOwogICBEQlVHX1BSSU5UKCJpbmZvIiwgKCJtX2loc3A6ICVkIiwgbV9p aHNwKSk7CiAgIERCVUdfVk9JRF9SRVRVUk47CiB9CiAKK1NRTF9jb25kaXRpb24qCitzcF9yY29u dGV4dDo6cmFpc2VkX2NvbmRpdGlvbigpIGNvbnN0Cit7CisgIGlmIChtX2loc3AgPiAwKQorICB7 CisgICAgdWludCBoaW5kZXg9IG1faW5faGFuZGxlclttX2loc3AgLSAxXS5pbmRleDsKKyAgICBT UUxfY29uZGl0aW9uICpyYWlzZWQ9IG1fcmFpc2VkX2NvbmRpdGlvbnNbaGluZGV4XTsKKyAgICBE QlVHX0FTU0VSVChyYWlzZWQpOworICAgIHJldHVybiByYWlzZWQ7CisgIH0KKworICBpZiAobV9w cmV2X3J1bnRpbWVfY3R4KQorICAgIHJldHVybiBtX3ByZXZfcnVudGltZV9jdHgtPnJhaXNlZF9j b25kaXRpb24oKTsKKworICByZXR1cm4gTlVMTDsKK30KKwogCiBpbnQKIHNwX3Jjb250ZXh0Ojpz ZXRfdmFyaWFibGUoVEhEICp0aGQsIHVpbnQgdmFyX2lkeCwgSXRlbSAqKnZhbHVlKQoKPT09IG1v ZGlmaWVkIGZpbGUgJ3NxbC9zcF9yY29udGV4dC5oJwotLS0gYS9zcWwvc3BfcmNvbnRleHQuaAky MDA4LTAxLTIzIDIwOjI2OjQxICswMDAwCisrKyBiL3NxbC9zcF9yY29udGV4dC5oCTIwMDgtMDgt MjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTM0LDEyICszNCwyMSBAQCBjbGFzcyBzcF9pbnN0cl9jcHVz aDsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKKyAgLyoqIENvbmRpdGlvbiBjYXVnaHQgYnkgdGhpcyBI QU5ETEVSLiAqLwogICBzdHJ1Y3Qgc3BfY29uZF90eXBlICpjb25kOwotICB1aW50IGhhbmRsZXI7 CQkJLy8gTG9jYXRpb24gb2YgaGFuZGxlcgorICAvKiogTG9jYXRpb24gKGluc3RydWN0aW9uIHBv aW50ZXIpIG9mIHRoZSBoYW5kbGVyIGNvZGUuICovCisgIHVpbnQgaGFuZGxlcjsKKyAgLyoqIEhh bmRsZXIgdHlwZSAoRVhJVCwgQ09OVElOVUUpLiAqLwogICBpbnQgdHlwZTsKLSAgdWludCBmb2Zm c2V0OwkJCS8vIEZyYW1lIG9mZnNldCBmb3IgdGhlIGhhbmRsZXJzIGRlY2xhcmUgbGV2ZWwKIH0g c3BfaGFuZGxlcl90OwogCit0eXBlZGVmIHN0cnVjdAoreworICAvKiogSW5zdHJ1Y3Rpb24gcG9p bnRlciBvZiB0aGUgYWN0aXZlIGhhbmRsZXIuICovCisgIHVpbnQgaXA7CisgIC8qKiBIYW5kbGVy IGluZGV4IG9mIHRoZSBhY3RpdmUgaGFuZGxlci4gKi8KKyAgdWludCBpbmRleDsKK30gc3BfYWN0 aXZlX2hhbmRsZXJfdDsKIAogLyoKICAgVGhpcyBjbGFzcyBpcyBhIHJ1bnRpbWUgY29udGV4dCBv ZiBhIFN0b3JlZCBSb3V0aW5lLiBJdCBpcyB1c2VkIGluIGFuCkBAIC04Myw4ICs5Miw4IEBAIGNs YXNzIHNwX3Jjb250ZXh0IDogcHVibGljIFNxbF9hbGxvYwogICBzcF9oZWFkICpzcDsKICNlbmRp ZgogCi0gIHNwX3Jjb250ZXh0KHNwX3Bjb250ZXh0ICpyb290X3BhcnNpbmdfY3R4LCBGaWVsZCAq cmV0dXJuX3ZhbHVlX2ZsZCwKLSAgICAgICAgICAgICAgc3BfcmNvbnRleHQgKnByZXZfcnVudGlt ZV9jdHgpOworICBzcF9yY29udGV4dChNRU1fUk9PVCAqY29uZF9yb290LCBzcF9wY29udGV4dCAq cm9vdF9wYXJzaW5nX2N0eCwKKyAgICAgICAgICAgICAgRmllbGQgKnJldHVybl92YWx1ZV9mbGQs IHNwX3Jjb250ZXh0ICpwcmV2X3J1bnRpbWVfY3R4KTsKICAgYm9vbCBpbml0KFRIRCAqdGhkKTsK IAogICB+c3BfcmNvbnRleHQoKTsKQEAgLTEwNywzMSArMTE2LDMxIEBAIGNsYXNzIHNwX3Jjb250 ZXh0IDogcHVibGljIFNxbF9hbGxvYwogICAgIHJldHVybiBtX3JldHVybl92YWx1ZV9zZXQ7CiAg IH0KIAotICB2b2lkIHB1c2hfaGFuZGxlcihzdHJ1Y3Qgc3BfY29uZF90eXBlICpjb25kLCB1aW50 IGgsIGludCB0eXBlLCB1aW50IGYpOworICB2b2lkIHB1c2hfaGFuZGxlcihzdHJ1Y3Qgc3BfY29u ZF90eXBlICpjb25kLCB1aW50IGgsIGludCB0eXBlKTsKIAogICB2b2lkIHBvcF9oYW5kbGVycyh1 aW50IGNvdW50KTsKIAogICAvLyBSZXR1cm5zIDEgaWYgYSBoYW5kbGVyIHdhcyBmb3VuZCwgMCBv dGhlcndpc2UuCiAgIGJvb2wKLSAgZmluZF9oYW5kbGVyKFRIRCAqdGhkLCB1aW50IHNxbF9lcnJu byxNWVNRTF9FUlJPUjo6ZW51bV93YXJuaW5nX2xldmVsIGxldmVsKTsKKyAgZmluZF9oYW5kbGVy KFRIRCAqdGhkLCBjb25zdCBTUUxfY29uZGl0aW9uICpjb25kKTsKIAogICAvLyBJZiB0aGVyZSBp cyBhbiBlcnJvciBoYW5kbGVyIGZvciB0aGlzIGVycm9yLCBoYW5kbGUgaXQgYW5kIHJldHVybiBU UlVFLgotICBib29sCi0gIGhhbmRsZV9lcnJvcih1aW50IHNxbF9lcnJubywKLSAgICAgICAgICAg ICAgIE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgbGV2ZWwsCi0gICAgICAgICAgICAg ICBUSEQgKnRoZCk7CisgIGJvb2wgaGFuZGxlX2NvbmRpdGlvbihUSEQgKnRoZCwgY29uc3QgU1FM X2NvbmRpdGlvbiAqY29uZCk7CisKIAogICAvLyBSZXR1cm5zIGhhbmRsZXIgdHlwZSBhbmQgc2V0 cyAqaXAgdG8gbG9jYXRpb24gaWYgb25lIHdhcyBmb3VuZAogICBpbmxpbmUgaW50Ci0gIGZvdW5k X2hhbmRsZXIodWludCAqaXAsIHVpbnQgKmZwKQorICBmb3VuZF9oYW5kbGVyKHVpbnQgKmlwLCB1 aW50ICppbmRleCkKICAgewogICAgIGlmIChtX2hmb3VuZCA8IDApCiAgICAgICByZXR1cm4gU1Bf SEFORExFUl9OT05FOwogICAgICppcD0gbV9oYW5kbGVyW21faGZvdW5kXS5oYW5kbGVyOwotICAg ICpmcD0gbV9oYW5kbGVyW21faGZvdW5kXS5mb2Zmc2V0OworICAgICppbmRleD0gbV9oZm91bmQ7 CiAgICAgcmV0dXJuIG1faGFuZGxlclttX2hmb3VuZF0udHlwZTsKICAgfQogCisgIFNRTF9jb25k aXRpb24qIHJhaXNlZF9jb25kaXRpb24oKSBjb25zdDsKKwogICAvLyBSZXR1cm5zIHRydWUgaWYg d2UgZm91bmQgYSBoYW5kbGVyIGluIHRoaXMgY29udGV4dAogICBpbmxpbmUgYm9vbAogICBmb3Vu ZF9oYW5kbGVyX2hlcmUoKQpAQCAtMTUwLDcgKzE1OSwxMiBAQCBjbGFzcyBzcF9yY29udGV4dCA6 IHB1YmxpYyBTcWxfYWxsb2MKIAogICB1aW50IHBvcF9oc3RhY2soKTsKIAotICB2b2lkIGVudGVy X2hhbmRsZXIoaW50IGhpZCk7CisgIC8qKgorICAgIEVudGVyIGEgU1FMIGV4Y2VwdGlvbiBoYW5k bGVyLgorICAgIEBwYXJhbSBoaXAgdGhlIGhhbmRsZXIgaW5zdHJ1Y3Rpb24gcG9pbnRlcgorICAg IEBwYXJhbSBpbmRleCB0aGUgaGFuZGxlciBpbmRleAorICAqLworICB2b2lkIGVudGVyX2hhbmRs ZXIodWludCBoaXAsIHVpbnQgaW5kZXgpOwogCiAgIHZvaWQgZXhpdF9oYW5kbGVyKCk7CiAKQEAg LTIxNCwxMCArMjI4LDE4IEBAIHByaXZhdGU6CiAgIGJvb2wgaW5fc3ViX3N0bXQ7CiAKICAgc3Bf aGFuZGxlcl90ICptX2hhbmRsZXI7ICAgICAgLy8gVmlzaWJsZSBoYW5kbGVycworCisgIC8qKgor ICAgIFNRTCBjb25kaXRpb25zIGNhdWdodCBieSBlYWNoIGhhbmRsZXIuCisgICAgVGhpcyBpcyBh biBhcnJheSBpbmRleGVkIGJ5IGhhbmRsZXIgaW5kZXguCisgICovCisgIFNRTF9jb25kaXRpb24g KiogbV9yYWlzZWRfY29uZGl0aW9uczsKKwogICB1aW50IG1faGNvdW50OyAgICAgICAgICAgICAg ICAvLyBTdGFjayBwb2ludGVyIGZvciBtX2hhbmRsZXIKICAgdWludCAqbV9oc3RhY2s7ICAgICAg ICAgICAgICAgLy8gUmV0dXJuIHN0YWNrIGZvciBjb250aW51ZSBoYW5kbGVycwogICB1aW50IG1f aHNwOyAgICAgICAgICAgICAgICAgICAvLyBTdGFjayBwb2ludGVyIGZvciBtX2hzdGFjawotICB1 aW50ICptX2luX2hhbmRsZXI7ICAgICAgICAgICAvLyBBY3RpdmUgaGFuZGxlciwgZm9yIHJlY3Vy c2lvbiBjaGVjaworICAvKiogQWN0aXZlIGhhbmRsZXIgc3RhY2suICovCisgIHNwX2FjdGl2ZV9o YW5kbGVyX3QgKm1faW5faGFuZGxlcjsKICAgdWludCBtX2loc3A7ICAgICAgICAgICAgICAgICAg Ly8gU3RhY2sgcG9pbnRlciBmb3IgbV9pbl9oYW5kbGVyCiAgIGludCBtX2hmb3VuZDsgICAgICAg ICAgICAgICAgIC8vIFNldCBieSBmaW5kX2hhbmRsZXI7IC0xIGlmIG5vdCBmb3VuZAogCkBAIC0y MjksNiArMjUxLDkgQEAgcHJpdmF0ZToKICAgLyogUHJldmlvdXMgcnVudGltZSBjb250ZXh0IChO VUxMIGlmIG5vbmUpICovCiAgIHNwX3Jjb250ZXh0ICptX3ByZXZfcnVudGltZV9jdHg7CiAKKyAg LyoqIE1lbW9yeSByb290IHRvIHVzZSBmb3IgU1FMX2NvbmRpdGlvbiBjYXVnaHQgYnkgaGFuZGxl cnMuICovCisgIE1FTV9ST09UICptX2NvbmRfcm9vdDsKKwogcHJpdmF0ZToKICAgYm9vbCBpbml0 X3Zhcl90YWJsZShUSEQgKnRoZCk7CiAgIGJvb2wgaW5pdF92YXJfaXRlbXMoKTsKCj09PSBtb2Rp ZmllZCBmaWxlICdzcWwvc3FsX2FjbC5jYycKLS0tIGEvc3FsL3NxbF9hY2wuY2MJMjAwOC0wOC0w NyAwMzowNTozMyArMDAwMAorKysgYi9zcWwvc3FsX2FjbC5jYwkyMDA4LTA4LTI3IDIyOjE0OjAz ICswMDAwCkBAIC02MTMyLDkgKzYxMzIsNyBAQCBwdWJsaWM6CiAgIHZpcnR1YWwgflNpbGVuY2Vf cm91dGluZV9kZWZpbmVyX2Vycm9ycygpCiAgIHt9CiAKLSAgdmlydHVhbCBib29sIGhhbmRsZV9l cnJvcih1aW50IHNxbF9lcnJubywgY29uc3QgY2hhciAqbWVzc2FnZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNWVNRTF9FUlJPUjo6ZW51bV93YXJuaW5nX2xldmVsIGxldmVsLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRIRCAqdGhkKTsKKyAgdmlydHVhbCBib29sIGhhbmRs ZV9jb25kaXRpb24oVEhEICp0aGQsIGNvbnN0IFNRTF9jb25kaXRpb24gKmNvbmQpOwogCiAgIGJv b2wgaGFzX2Vycm9ycygpIHsgcmV0dXJuIGlzX2dyYXZlOyB9CiAKQEAgLTYxNDMsMTggKzYxNDEs MTcgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wKLVNpbGVuY2Vfcm91dGluZV9kZWZpbmVyX2Vycm9y czo6aGFuZGxlX2Vycm9yKHVpbnQgc3FsX2Vycm5vLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgbGV2ZWws Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSEQgKnRoZCkKK1NpbGVu Y2Vfcm91dGluZV9kZWZpbmVyX2Vycm9yczo6aGFuZGxlX2NvbmRpdGlvbihUSEQgKnRoZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTUUxf Y29uZGl0aW9uICpjb25kKQogewotICBpZiAobGV2ZWwgPT0gTVlTUUxfRVJST1I6OldBUk5fTEVW RUxfRVJST1IpCisgIGlmIChjb25kLT5nZXRfbGV2ZWwoKSA9PSBNWVNRTF9FUlJPUjo6V0FSTl9M RVZFTF9FUlJPUikKICAgewotICAgIHN3aXRjaCAoc3FsX2Vycm5vKQorICAgIHN3aXRjaCAoY29u ZC0+Z2V0X3NxbF9lcnJubygpKQogICAgIHsKICAgICAgIGNhc2UgRVJfTk9ORVhJU1RJTkdfUFJP Q19HUkFOVDoKICAgICAgICAgLyogQ29udmVydCB0aGUgZXJyb3IgaW50byBhIHdhcm5pbmcuICov Ci0gICAgICAgIHB1c2hfd2FybmluZyh0aGQsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4s IHNxbF9lcnJubywgbWVzc2FnZSk7CisgICAgICAgIHB1c2hfd2FybmluZyh0aGQsIE1ZU1FMX0VS Uk9SOjpXQVJOX0xFVkVMX1dBUk4sCisgICAgICAgICAgICAgICAgICAgICBjb25kLT5nZXRfc3Fs X2Vycm5vKCksIGNvbmQtPmdldF9tZXNzYWdlX3RleHQoKSk7CiAgICAgICAgIHJldHVybiBUUlVF OwogICAgICAgZGVmYXVsdDoKICAgICAgICAgaXNfZ3JhdmU9IFRSVUU7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL3NxbF9iYXNlLmNjJwotLS0gYS9zcWwvc3FsX2Jhc2UuY2MJMjAwOC0wOC0yNiAx MDoyMDo0MSArMDAwMAorKysgYi9zcWwvc3FsX2Jhc2UuY2MJMjAwOC0wOC0yNyAyMjoxNDowMyAr MDAwMApAQCAtNDQsOSArNDQsNyBAQCBwdWJsaWM6CiAKICAgdmlydHVhbCB+UHJlbG9ja19lcnJv cl9oYW5kbGVyKCkge30KIAotICB2aXJ0dWFsIGJvb2wgaGFuZGxlX2Vycm9yKHVpbnQgc3FsX2Vy cm5vLCBjb25zdCBjaGFyICptZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1Z U1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgVEhEICp0aGQpOworICB2aXJ0dWFsIGJvb2wgaGFuZGxlX2NvbmRpdGlvbihUSEQg KnRoZCwgY29uc3QgU1FMX2NvbmRpdGlvbiAqY29uZCk7CiAKICAgYm9vbCBzYWZlbHlfdHJhcHBl ZF9lcnJvcnMoKTsKIApAQCAtNTcsMTIgKzU1LDkgQEAgcHJpdmF0ZToKIAogCiBib29sCi1QcmVs b2NrX2Vycm9yX2hhbmRsZXI6OmhhbmRsZV9lcnJvcih1aW50IHNxbF9lcnJubywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiAvKiBtZXNzYWdlICovLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxfRVJST1I6OmVudW1fd2Fy bmluZ19sZXZlbCAvKiBsZXZlbCAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRIRCAqIC8qIHRoZCAqLykKK1ByZWxvY2tfZXJyb3JfaGFuZGxlcjo6aGFuZGxlX2NvbmRp dGlvbihUSEQgKiwgY29uc3QgU1FMX2NvbmRpdGlvbiAqY29uZCkKIHsKLSAgaWYgKHNxbF9lcnJu byA9PSBFUl9OT19TVUNIX1RBQkxFKQorICBpZiAoY29uZC0+Z2V0X3NxbF9lcnJubygpID09IEVS X05PX1NVQ0hfVEFCTEUpCiAgIHsKICAgICBtX2hhbmRsZWRfZXJyb3JzKys7CiAgICAgcmV0dXJu IFRSVUU7CkBAIC0yMzkwLDcgKzIzODUsNyBAQCBib29sIG9wZW5fdGFibGUoVEhEICp0aGQsIFRB QkxFX0xJU1QgKnRhCiAKICAgaWYgKGZsYWdzICYgTVlTUUxfT1BFTl9URU1QT1JBUllfT05MWSkK ICAgewotICAgIG15X2Vycm9yKEVSX05PX1NVQ0hfVEFCTEUsIE1ZRigwKSwgdGFibGVfbGlzdC0+ ZGIsIHRhYmxlX2xpc3QtPnRhYmxlX25hbWUpOworICAgIHRoZC0+cmFpc2VfRVJfTk9fU1VDSF9U QUJMRSh0YWJsZV9saXN0LT5kYiwgdGFibGVfbGlzdC0+dGFibGVfbmFtZSk7CiAgICAgREJVR19S RVRVUk4oVFJVRSk7CiAgIH0KIApAQCAtMjUxMyw3ICsyNTA4LDcgQEAgYm9vbCBvcGVuX3RhYmxl KFRIRCAqdGhkLCBUQUJMRV9MSVNUICp0YQogICAgICAgbG9ja2VkIHRhYmxlcyBsaXN0IHdhcyBj cmVhdGVkLgogICAgICovCiAgICAgaWYgKHRoZC0+bG9ja2VkX3RhYmxlc19tb2RlID09IExUTV9Q UkVMT0NLRUQpCi0gICAgICBteV9lcnJvcihFUl9OT19TVUNIX1RBQkxFLCBNWUYoMCksIHRhYmxl X2xpc3QtPmRiLCB0YWJsZV9saXN0LT5hbGlhcyk7CisgICAgICB0aGQtPnJhaXNlX0VSX05PX1NV Q0hfVEFCTEUodGFibGVfbGlzdC0+ZGIsIHRhYmxlX2xpc3QtPmFsaWFzKTsKICAgICBlbHNlCiAg ICAgICBteV9lcnJvcihFUl9UQUJMRV9OT1RfTE9DS0VELCBNWUYoMCksIGFsaWFzKTsKICAgICBE QlVHX1JFVFVSTihUUlVFKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX2NsYXNzLmNjJwot LS0gYS9zcWwvc3FsX2NsYXNzLmNjCTIwMDgtMDgtMjUgMTI6MjU6MDcgKzAwMDAKKysrIGIvc3Fs L3NxbF9jbGFzcy5jYwkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC0yMDYsOCArMjA2LDkg QEAgYm9vbCBmb3JlaWduX2tleV9wcmVmaXgoS2V5ICphLCBLZXkgKmIpCiBib29sCiBSZXByZXBh cmVfb2JzZXJ2ZXI6OnJlcG9ydF9lcnJvcihUSEQgKnRoZCkKIHsKLSAgbXlfZXJyb3IoRVJfTkVF RF9SRVBSRVBBUkUsIE1ZRihNRV9OT19XQVJOSU5HX0ZPUl9FUlJPUnxNRV9OT19TUF9IQU5ETEVS KSk7Ci0KKyAgLyogTm8gaGFuZGxlciwgbm8gZXJyb3IgaW4gdGhlIGNvbmRpdGlvbiBhcmVhICov CisgIHRoZC0+bWFpbl9kYS5zZXRfZXJyb3Jfc3RhdHVzKHRoZCwgRVJfTkVFRF9SRVBSRVBBUkUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVSKEVSX05FRURfUkVQUkVQQVJFKSwg IkhZMDAwIik7CiAgIG1faW52YWxpZGF0ZWQ9IFRSVUU7CiAKICAgcmV0dXJuIFRSVUU7CkBAIC0z NzAsNiArMzcxLDEyIEBAIGNoYXIgKnRoZF9zZWN1cml0eV9jb250ZXh0KFRIRCAqdGhkLCBjaGEK ICAgcmV0dXJuIHRoZC0+c3RybWFrZShzdHIucHRyKCksIHN0ci5sZW5ndGgoKSk7CiB9CiAKK3Zv aWQgRGlhZ25vc3RpY3Nfc3RtdF9hcmVhOjpjbGVhcigpCit7CisgIHdhcm5fbGlzdC5lbXB0eSgp OworICBtZW1zZXQoKGNoYXIqKSB3YXJuX2NvdW50LCAwLCBzaXplb2Yod2Fybl9jb3VudCkpOwor fQorCiAvKioKICAgQ2xlYXIgdGhpcyBkaWFnbm9zdGljcyBhcmVhLiAKIApAQCAtMzg1LDYgKzM5 Miw3IEBAIERpYWdub3N0aWNzX2FyZWE6OnJlc2V0X2RpYWdub3N0aWNzX2FyZWEKICAgLyoqIERv bid0IHRha2UgY2hhbmNlcyBpbiBwcm9kdWN0aW9uICovCiAgIG1fbWVzc2FnZVswXT0gJ1wwJzsK ICAgbV9zcWxfZXJybm89IDA7CisgIG1lbXNldChtX3NxbHN0YXRlLCAwLCBzaXplb2YobV9zcWxz dGF0ZSkpOwogICBtX3NlcnZlcl9zdGF0dXM9IDA7CiAgIG1fYWZmZWN0ZWRfcm93cz0gMDsKICAg bV9sYXN0X2luc2VydF9pZD0gMDsKQEAgLTQ2Myw5ICs0NzEsMTggQEAgRGlhZ25vc3RpY3NfYXJl YTo6c2V0X2VvZl9zdGF0dXMoVEhEICp0aAogKi8KIAogdm9pZAotRGlhZ25vc3RpY3NfYXJlYTo6 c2V0X2Vycm9yX3N0YXR1cyhUSEQgKnRoZCwgdWludCBzcWxfZXJybm9fYXJnLAorRGlhZ25vc3Rp Y3NfYXJlYTo6c2V0X2RlZmF1bHRfZXJyb3Jfc3RhdHVzKFRIRCAqdGhkLCB1aW50IHNxbF9lcnJu b19hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1l c3NhZ2VfYXJnKQogeworICBjb25zdCBjaGFyKiBzcWxzdGF0ZT0gbXlzcWxfZXJybm9fdG9fc3Fs c3RhdGUoc3FsX2Vycm5vX2FyZyk7CisgIHNldF9lcnJvcl9zdGF0dXModGhkLCBzcWxfZXJybm9f YXJnLCBtZXNzYWdlX2FyZywgc3Fsc3RhdGUpOworfQorCit2b2lkCitEaWFnbm9zdGljc19hcmVh OjpzZXRfZXJyb3Jfc3RhdHVzKFRIRCAqdGhkLCB1aW50IHNxbF9lcnJub19hcmcsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2VfYXJnLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcWxzdGF0ZSkKK3sK ICAgREJVR19FTlRFUigic2V0X2Vycm9yX3N0YXR1cyIpOwogICAvKgogICAgIE9ubHkgYWxsb3dl ZCB0byByZXBvcnQgZXJyb3IgaWYgaGFzIG5vdCB5ZXQgcmVwb3J0ZWQgYSBzdWNjZXNzCkBAIC00 ODMsNiArNTAwLDggQEAgRGlhZ25vc3RpY3NfYXJlYTo6c2V0X2Vycm9yX3N0YXR1cyhUSEQgKgog I2VuZGlmCiAKICAgbV9zcWxfZXJybm89IHNxbF9lcnJub19hcmc7CisgIHN0cm5jcHkobV9zcWxz dGF0ZSwgc3Fsc3RhdGUsIFNRTFNUQVRFX0xFTkdUSCk7CisgIG1fc3Fsc3RhdGVbU1FMU1RBVEVf TEVOR1RIXT0gJ1wwJzsKICAgc3RybWFrZShtX21lc3NhZ2UsIG1lc3NhZ2VfYXJnLCBzaXplb2Yo bV9tZXNzYWdlKS0xKTsKIAogICBtX3N0YXR1cz0gREFfRVJST1I7CkBAIC01MjgsNiArNTQ3LDcg QEAgVEhEOjpUSEQoKQogICAgYm9vdHN0cmFwKDApLAogICAgZGVyaXZlZF90YWJsZXNfcHJvY2Vz c2luZyhGQUxTRSksCiAgICBzcGNvbnQoTlVMTCksCisgICBlbmRfcGFydGlhbF9yZXN1bHRfc2V0 KEZBTFNFKSwKICAgIG1fcGFyc2VyX3N0YXRlKE5VTEwpLAogICAvKgogICAgIEB0b2RvIFRoZSBm b2xsb3dpbmcgaXMgYSB3b3JrIGFyb3VuZCBmb3Igb25saW5lIGJhY2t1cCBhbmQgdGhlIERETCBi bG9ja2VyLgpAQCAtNjY2LDEyICs2ODYsMTEgQEAgdm9pZCBUSEQ6OnB1c2hfaW50ZXJuYWxfaGFu ZGxlcihJbnRlcm5hbAogfQogCiAKLWJvb2wgVEhEOjpoYW5kbGVfZXJyb3IodWludCBzcWxfZXJy bm8sIGNvbnN0IGNoYXIgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIE1ZU1FMX0VS Uk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgbGV2ZWwpCitib29sIFRIRDo6aGFuZGxlX2NvbmRpdGlv bihjb25zdCBTUUxfY29uZGl0aW9uICpjb25kKQogewogICBpZiAobV9pbnRlcm5hbF9oYW5kbGVy KQogICB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWxfaGFuZGxlci0+aGFuZGxlX2Vycm9yKHNxbF9l cnJubywgbWVzc2FnZSwgbGV2ZWwsIHRoaXMpOworICAgIHJldHVybiBtX2ludGVybmFsX2hhbmRs ZXItPmhhbmRsZV9jb25kaXRpb24odGhpcywgY29uZCk7CiAgIH0KIAogICByZXR1cm4gRkFMU0U7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0ZBTFNFJywgYXMgcGVyIGNvZGlu ZyBzdHlsZQpAQCAtNjg0LDYgKzcwMywxODMgQEAgdm9pZCBUSEQ6OnBvcF9pbnRlcm5hbF9oYW5k bGVyKCkKICAgbV9pbnRlcm5hbF9oYW5kbGVyPSBOVUxMOwogfQogCit2b2lkIFRIRDo6cmFpc2Vf ZXJyb3IodWludCBjb2RlLCBjb25zdCBjaGFyICpzdHIsIG15ZiBNeUZsYWdzKQoreworICBTUUxf Y29uZGl0aW9uIGNvbmQodGhpcy0+bWVtX3Jvb3QpOworICBjb25kLnNldCh0aGlzLCBjb2RlLCBz dHIsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX0VSUk9SLCBNeUZsYWdzKTsKKyAgcmFpc2VfY29u ZGl0aW9uKCYgY29uZCk7Cit9CisKK3ZvaWQgVEhEOjpyYWlzZV9lcnJvcl9wcmludGYodWludCBj b2RlLCBjb25zdCBjaGFyICpmb3JtYXQsIG15ZiBNeUZsYWdzLCAuLi4pCit7CisgIHZhX2xpc3Qg YXJnczsKKyAgY2hhciBlYnVmZltFUlJNU0dTSVpFKzIwXTsKKyAgREJVR19FTlRFUigiVEhEOjpy YWlzZV9lcnJvcl9wcmludGYiKTsKKyAgREJVR19QUklOVCgibXkiLCAoIm5yOiAlZCAgTXlGbGFn czogJWQgIGVycm5vOiAlZCAgRm9ybWF0OiAlcyIsCisgICAgICAgICAgICAgICAgICAgIGNvZGUs IE15RmxhZ3MsIGVycm5vLCBmb3JtYXQpKTsKKyAgdmFfc3RhcnQoYXJncywgTXlGbGFncyk7Cisg IG15X3ZzbnByaW50ZihlYnVmZiwgc2l6ZW9mKGVidWZmKSwgZm9ybWF0LCBhcmdzKTsKKyAgdmFf ZW5kKGFyZ3MpOworICBTUUxfY29uZGl0aW9uIGNvbmQodGhpcy0+bWVtX3Jvb3QpOworICBjb25k LnNldCh0aGlzLCBjb2RlLCBlYnVmZiwgTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1IsIE15 RmxhZ3MpOworICByYWlzZV9jb25kaXRpb24oJiBjb25kKTsKKyAgREJVR19WT0lEX1JFVFVSTjsK K30KKwordm9pZCBUSEQ6OnJhaXNlX3dhcm5pbmcodWludCBjb2RlLCBjb25zdCBjaGFyICptc2cp Cit7CisgIFNRTF9jb25kaXRpb24gY29uZCh0aGlzLT5tZW1fcm9vdCk7CisgIGNvbmQuc2V0KHRo aXMsIGNvZGUsIG1zZywgTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfV0FSTiwgTVlGKDApKTsKKyAg cmFpc2VfY29uZGl0aW9uKCYgY29uZCk7Cit9CisKK3ZvaWQgVEhEOjpyYWlzZV93YXJuaW5nX3By aW50Zih1aW50IGNvZGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICB2YV9saXN0IGFy Z3M7CisgIGNoYXIgICAgZWJ1ZmZbRVJSTVNHU0laRSsyMF07CisgIERCVUdfRU5URVIoIlRIRDo6 cmFpc2Vfd2FybmluZ19wcmludGYiKTsKKyAgREJVR19QUklOVCgiZW50ZXIiLCAoIndhcm5pbmc6 ICV1IiwgY29kZSkpOworICB2YV9zdGFydChhcmdzLCBmb3JtYXQpOworICBteV92c25wcmludGYo ZWJ1ZmYsIHNpemVvZihlYnVmZiksIGZvcm1hdCwgYXJncyk7CisgIHZhX2VuZChhcmdzKTsKKyAg U1FMX2NvbmRpdGlvbiBjb25kKHRoaXMtPm1lbV9yb290KTsKKyAgY29uZC5zZXQodGhpcywgY29k ZSwgZWJ1ZmYsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4sIE1ZRigwKSk7CisgIHJhaXNl X2NvbmRpdGlvbigmIGNvbmQpOworICBEQlVHX1ZPSURfUkVUVVJOOworfQorCit2b2lkIFRIRDo6 cmFpc2Vfbm90ZSh1aW50IGNvZGUsIGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgREJVR19FTlRFUigi VEhEOjpyYWlzZV9ub3RlIik7CisgIERCVUdfUFJJTlQoImVudGVyIiwgKCJjb2RlOiAlZCwgbXNn OiAlcyIsIGNvZGUsIG1zZykpOworICBpZiAoISh0aGlzLT5vcHRpb25zICYgT1BUSU9OX1NRTF9O T1RFUykpCisgICAgREJVR19WT0lEX1JFVFVSTjsKKyAgU1FMX2NvbmRpdGlvbiBjb25kKHRoaXMt Pm1lbV9yb290KTsKKyAgY29uZC5zZXQodGhpcywgY29kZSwgbXNnLCBNWVNRTF9FUlJPUjo6V0FS Tl9MRVZFTF9OT1RFLCBNWUYoMCkpOworICByYWlzZV9jb25kaXRpb24oJiBjb25kKTsKKyAgREJV R19WT0lEX1JFVFVSTjsKK30KKwordm9pZCBUSEQ6OnJhaXNlX25vdGVfcHJpbnRmKHVpbnQgY29k ZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgY2hhciAg ICBlYnVmZltFUlJNU0dTSVpFKzIwXTsKKyAgREJVR19FTlRFUigiVEhEOjpyYWlzZV9ub3RlX3By aW50ZiIpOworICBEQlVHX1BSSU5UKCJlbnRlciIsKCJjb2RlOiAldSIsIGNvZGUpKTsKKyAgaWYg KCEodGhpcy0+b3B0aW9ucyAmIE9QVElPTl9TUUxfTk9URVMpKQorICAgIERCVUdfVk9JRF9SRVRV Uk47CisgIHZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CisgIG15X3ZzbnByaW50ZihlYnVmZiwgc2l6 ZW9mKGVidWZmKSwgZm9ybWF0LCBhcmdzKTsKKyAgdmFfZW5kKGFyZ3MpOworICBTUUxfY29uZGl0 aW9uIGNvbmQodGhpcy0+bWVtX3Jvb3QpOworICBjb25kLnNldCh0aGlzLCBjb2RlLCBlYnVmZiwg TVlTUUxfRVJST1I6OldBUk5fTEVWRUxfTk9URSwgTVlGKDApKTsKKyAgcmFpc2VfY29uZGl0aW9u KCYgY29uZCk7CisgIERCVUdfVk9JRF9SRVRVUk47Cit9CisKK3ZvaWQgVEhEOjpyYWlzZV9jb25k aXRpb24oY29uc3QgU1FMX2NvbmRpdGlvbiAqY29uZCkKK3sKKyAgY29uc3QgY2hhciogbXNnPSBj b25kLT5nZXRfbWVzc2FnZV90ZXh0KCk7CisKKyAgREJVR19FTlRFUigiVEhEOjpyYWlzZV9jb25k aXRpb24iKTsKKworICBpZiAoISh0aGlzLT5vcHRpb25zICYgT1BUSU9OX1NRTF9OT1RFUykgJiYK KyAgICAgIChjb25kLT5tX2xldmVsID09IE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX05PVEUpKQor ICAgIERCVUdfVk9JRF9SRVRVUk47CisKKyAgaWYgKHF1ZXJ5X2lkICE9IHdhcm5faWQgJiYgIXNw Y29udCkKKyAgICBteXNxbF9yZXNldF9lcnJvcnModGhpcywgMCk7CisKKyAgc3dpdGNoIChjb25k LT5tX2xldmVsKQorICB7CisgIGNhc2UgTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfTk9URToKKyAg Y2FzZSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOOgorICAgIGdvdF93YXJuaW5nPSAxOwor ICAgIGJyZWFrOworICBjYXNlIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX0VSUk9SOgorICAgIGlm IChjb25kLT5tX2ZsYWdzICYgTUVfRkFUQUxFUlJPUikKKyAgICAgIGlzX2ZhdGFsX2Vycm9yPSAx OworICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIERCVUdfQVNTRVJUKEZBTFNFKTsKKyAgfQor CisgIGlmIChoYW5kbGVfY29uZGl0aW9uKGNvbmQpKQorICAgIERCVUdfVk9JRF9SRVRVUk47CisK KyAgaWYgKGNvbmQtPm1fbGV2ZWwgPT0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1IpCisg IHsKKyAgICBpc19zbGF2ZV9lcnJvcj0gIDE7IC8vIG5lZWRlZCB0byBjYXRjaCBxdWVyeSBlcnJv cnMgZHVyaW5nIHJlcGxpY2F0aW9uCisKKyAgICAvKgorICAgICAgdGhkLT5sZXgtPmN1cnJlbnRf c2VsZWN0ID09IDAgaWYgbGV4IHN0cnVjdHVyZSBpcyBub3QgaW5pdGVkCisgICAgICAobm90IHF1 ZXJ5IGNvbW1hbmQgKENPTV9RVUVSWSkpCisgICAgKi8KKyAgICBpZiAobGV4LT5jdXJyZW50X3Nl bGVjdCAmJgorICAgICAgICBsZXgtPmN1cnJlbnRfc2VsZWN0LT5ub19lcnJvciAmJiAhaXNfZmF0 YWxfZXJyb3IpCisgICAgeworICAgICAgREJVR19QUklOVCgiZXJyb3IiLAorICAgICAgICAgICAg ICAgICAoIkVycm9yIGNvbnZlcnRlZCB0byB3YXJuaW5nOiBjdXJyZW50X3NlbGVjdDogbm9fZXJy b3IgJWQgICIKKyAgICAgICAgICAgICAgICAgICJmYXRhbF9lcnJvcjogJWQiLAorICAgICAgICAg ICAgICAgICAgKGxleC0+Y3VycmVudF9zZWxlY3QgPworICAgICAgICAgICAgICAgICAgIGxleC0+ Y3VycmVudF9zZWxlY3QtPm5vX2Vycm9yIDogMCksCisgICAgICAgICAgICAgICAgICAoaW50KSBp c19mYXRhbF9lcnJvcikpOworICAgIH0KKyAgICBlbHNlIGlmICghIG1haW5fZGEuaXNfZXJyb3Io KSkKKyAgICAgIG1haW5fZGEuc2V0X2Vycm9yX3N0YXR1cyh0aGlzLCBjb25kLT5tX3NxbF9lcnJu bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2csIGNvbmQtPmdldF9zcWxzdGF0 ZSgpKTsKKyAgfQorCisgIC8qCisgICAgSWYgYSBjb250aW51ZSBoYW5kbGVyIGlzIGZvdW5kLCB0 aGUgZXJyb3IgbWVzc2FnZSB3aWxsIGJlIGNsZWFyZWQKKyAgICBieSB0aGUgc3RvcmVkIHByb2Nl ZHVyZXMgY29kZS4KKyAgKi8KKyAgaWYgKCFpc19mYXRhbF9lcnJvciAmJiBzcGNvbnQgJiYKKyAg ICAgIHNwY29udC0+aGFuZGxlX2NvbmRpdGlvbih0aGlzLCBjb25kKSkKKyAgeworICAgIC8qCisg ICAgICBEbyBub3QgcHVzaCBhbnkgd2FybmluZ3MsIGEgaGFuZGxlZCBlcnJvciBtdXN0IGJlIGNv bXBsZXRlbHkKKyAgICAgIHNpbGVuY2VkLgorICAgICovCisgICAgREJVR19WT0lEX1JFVFVSTjsK KyAgfQorCisgIC8qIFVuLWhhbmRsZWQgY29uZGl0aW9ucyAqLworCisgIHJhaXNlX2NvbmRpdGlv bl9ub19oYW5kbGVyKGNvbmQpOworICBEQlVHX1ZPSURfUkVUVVJOOworfQorCit2b2lkIFRIRDo6 cmFpc2VfY29uZGl0aW9uX25vX2hhbmRsZXIoY29uc3QgU1FMX2NvbmRpdGlvbiAqY29uZCkKK3sK KyAgREJVR19FTlRFUigiVEhEOjpyYWlzZV9jb25kaXRpb25fbm9faGFuZGxlciIpOworCisgIHF1 ZXJ5X2NhY2hlX2Fib3J0KCYgcXVlcnlfY2FjaGVfdGxzKTsKKworICAvKiBGSVhNRTogYnJva2Vu IHNwZWNpYWwgY2FzZSAqLworICBpZiAobm9fd2FybmluZ3NfZm9yX2Vycm9yICYmIChjb25kLT5t X2xldmVsID09IE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX0VSUk9SKSkKKyAgICBEQlVHX1ZPSURf UkVUVVJOOworCisgIGlmICghIG1haW5fZGEubV9zdG10X2FyZWEuaXNfcmVhZF9vbmx5KCkpCisg IHsKKyAgICBpZiAobWFpbl9kYS5tX3N0bXRfYXJlYS53YXJuX2xpc3QuZWxlbWVudHMgPCB2YXJp YWJsZXMubWF4X2Vycm9yX2NvdW50KQorICAgIHsKKyAgICAgIC8qIFdlIGhhdmUgdG8gdXNlIHdh cm5fcm9vdCwgYXMgbWVtX3Jvb3QgaXMgZnJlZWQgYWZ0ZXIgZWFjaCBxdWVyeSAqLworICAgICAg U1FMX2NvbmRpdGlvbiAqc3RvcmVkX2NvbmQ7CisgICAgICBzdG9yZWRfY29uZD0gU1FMX2NvbmRp dGlvbjo6ZGVlcF9jb3B5KHRoaXMsICYgd2Fybl9yb290LCBjb25kKTsKKyAgICAgIGlmIChzdG9y ZWRfY29uZCkKKyAgICAgIHsKKyAgICAgICAgbWFpbl9kYS5tX3N0bXRfYXJlYS53YXJuX2xpc3Qu cHVzaF9iYWNrKHN0b3JlZF9jb25kLCAmIHdhcm5fcm9vdCk7CisgICAgICB9CisgICAgfQorCisg ICAgbWFpbl9kYS5tX3N0bXRfYXJlYS53YXJuX2NvdW50Wyh1aW50KSBjb25kLT5tX2xldmVsXSsr OworICB9CisKKyAgdG90YWxfd2Fybl9jb3VudCsrOworICBEQlVHX1ZPSURfUkVUVVJOOworfQor CiBleHRlcm4gIkMiCiB2b2lkICp0aGRfYWxsb2MoTVlTUUxfVEhEIHRoZCwgdW5zaWduZWQgaW50 IHNpemUpCiB7CkBAIC03NjYsOCArOTYyLDggQEAgdm9pZCBUSEQ6OmluaXQodm9pZCkKIAkJCVRM X1dSSVRFX0xPV19QUklPUklUWSA6CiAJCQlUTF9XUklURSk7CiAgIHNlc3Npb25fdHhfaXNvbGF0 aW9uPSAoZW51bV90eF9pc29sYXRpb24pIHZhcmlhYmxlcy50eF9pc29sYXRpb247Ci0gIHdhcm5f bGlzdC5lbXB0eSgpOwotICBiemVybygoY2hhciopIHdhcm5fY291bnQsIHNpemVvZih3YXJuX2Nv dW50KSk7CisgIG1haW5fZGEucmVzZXRfZGlhZ25vc3RpY3NfYXJlYSgpOworICBtYWluX2RhLm1f c3RtdF9hcmVhLmNsZWFyKCk7CiAgIHRvdGFsX3dhcm5fY291bnQ9IDA7CiAgIHVwZGF0ZV9jaGFy c2V0KCk7CiAgIHJlc2V0X2N1cnJlbnRfc3RtdF9iaW5sb2dfcm93X2Jhc2VkKCk7CkBAIC0xNTYy LDkgKzE3NTgsOCBAQCBib29sIHNlbGVjdF9zZW5kOjpzZW5kX2ZpZWxkcyhMaXN0PEl0ZW0+CiB2 b2lkIHNlbGVjdF9zZW5kOjphYm9ydCgpCiB7CiAgIERCVUdfRU5URVIoInNlbGVjdF9zZW5kOjph Ym9ydCIpOwotICBpZiAoaXNfcmVzdWx0X3NldF9zdGFydGVkICYmIHRoZC0+c3Bjb250ICYmCi0g ICAgICB0aGQtPnNwY29udC0+ZmluZF9oYW5kbGVyKHRoZCwgdGhkLT5tYWluX2RhLnNxbF9lcnJu bygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWVNRTF9FUlJPUjo6V0FSTl9M RVZFTF9FUlJPUikpCisKKyAgaWYgKGlzX3Jlc3VsdF9zZXRfc3RhcnRlZCAmJiB0aGQtPnNwY29u dCkKICAgewogICAgIC8qCiAgICAgICBXZSdyZSBleGVjdXRpbmcgYSBzdG9yZWQgcHJvY2VkdXJl LCBoYXZlIGFuIG9wZW4gcmVzdWx0CkBAIC0xNTc2LDcgKzE3NzEsNyBAQCB2b2lkIHNlbGVjdF9z ZW5kOjphYm9ydCgpCiAgICAgICBvdGhlcndpc2UgdGhlIGNsaWVudCB3aWxsIGhhbmcgZHVlIHRv IHRoZSB2aW9sYXRpb24gb2YgdGhlCiAgICAgICBjbGllbnQvc2VydmVyIHByb3RvY29sLgogICAg ICovCi0gICAgdGhkLT5wcm90b2NvbC0+ZW5kX3BhcnRpYWxfcmVzdWx0X3NldCh0aGQpOworICAg IHRoZC0+ZW5kX3BhcnRpYWxfcmVzdWx0X3NldD0gVFJVRTsKICAgfQogICBEQlVHX1ZPSURfUkVU VVJOOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfY2xhc3MuaCcKLS0tIGEvc3FsL3Nx bF9jbGFzcy5oCTIwMDgtMDgtMjUgMTI6MjU6MDcgKzAwMDAKKysrIGIvc3FsL3NxbF9jbGFzcy5o CTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTMwMyw2ICszMDMsNDEgQEAgc3RydWN0IFF1 ZXJ5X2NhY2hlX3RscwogICBRdWVyeV9jYWNoZV90bHMoKSA6Zmlyc3RfcXVlcnlfYmxvY2soTlVM TCkge30KIH07CiAKKy8qIFNJR05BTCAvIFJFU0lHTkFMIC8gR0VUIERJQUdOT1NUSUNTICovCisK Ky8qKgorICBUaGlzIGVudW1lcmF0aW9uIGxpc3QgYWxsIHRoZSBjb25kaXRpb24gaXRlbSBuYW1l cyBvZiBhIGNvbmRpdGlvbiBpbiB0aGUKKyAgU1FMIGNvbmRpdGlvbiBhcmVhLgorKi8KK3R5cGVk ZWYgZW51bSBlbnVtX2RpYWdfY29uZGl0aW9uX2l0ZW1fbmFtZQoreworICAvKgorICAgIENvbmRp dGlvbnMgdGhhdCBjYW4gYmUgc2V0IGJ5IHRoZSB1c2VyIChTSUdOQUwvUkVTSUdOQUwpLAorICAg IGFuZCBieSB0aGUgc2VydmVyIGltcGxlbWVudGF0aW9uIChUSEQ6OnJhaXNlX0VSX1hYWCkuCisg ICovCisKKyAgRElBR19DTEFTU19PUklHSU49IDAsCisgIEZJUlNUX0RJQUdfU0VUX1BST1BFUlRZ PSBESUFHX0NMQVNTX09SSUdJTiwKKyAgRElBR19TVUJDTEFTU19PUklHSU49IDEsCisgIERJQUdf Q09OU1RSQUlOVF9DQVRBTE9HPSAyLAorICBESUFHX0NPTlNUUkFJTlRfU0NIRU1BPSAzLAorICBE SUFHX0NPTlNUUkFJTlRfTkFNRT0gNCwKKyAgRElBR19DQVRBTE9HX05BTUU9IDUsCisgIERJQUdf U0NIRU1BX05BTUU9IDYsCisgIERJQUdfVEFCTEVfTkFNRT0gNywKKyAgRElBR19DT0xVTU5fTkFN RT0gOCwKKyAgRElBR19DVVJTT1JfTkFNRT0gOSwKKyAgRElBR19NRVNTQUdFX1RFWFQ9IDEwLAor ICBESUFHX01ZU1FMX0VSUk5PPSAxMSwKKyAgTEFTVF9ESUFHX1NFVF9QUk9QRVJUWT0gRElBR19N WVNRTF9FUlJOTworfSBEaWFnX2NvbmRpdGlvbl9pdGVtX25hbWU7CisKKy8qKgorICBOYW1lIG9m IGVhY2ggZGlhZ25vc3RpYyBjb25kaXRpb24gaXRlbS4KKyAgVGhpcyBhcnJheSBpcyBpbmRleGVk IGJ5IERpYWdfY29uZGl0aW9uX2l0ZW1fbmFtZS4KKyovCitleHRlcm4gY29uc3QgTEVYX1NUUklO RyBEaWFnX2NvbmRpdGlvbl9pdGVtX25hbWVzW107CisKICNpbmNsdWRlICJzcWxfbGV4LmgiCQkJ CS8qIE11c3QgYmUgaGVyZSAqLwogCiBjbGFzcyBEZWxheWVkX2luc2VydDsKQEAgLTEwNzMsNiAr MTEwOCwyMDIgQEAgZW51bSBlbnVtX3RocmVhZF90eXBlCiAKIAogLyoqCisgIFJlcHJlc2VudGF0 aW9uIG9mIGEgU1FMIGNvbmRpdGlvbi4KKyAgQSBTUUwgY29uZGl0aW9uIGNhbiBiZSBhIGNvbXBs ZXRpb24gY29uZGl0aW9uIChub3RlLCB3YXJuaW5nKSwKKyAgb3IgYW4gZXhjZXB0aW9uIGNvbnRp dGlvbiAoZXJyb3IsIG5vdCBmb3VuZCkuCisqLworY2xhc3MgU1FMX2NvbmRpdGlvbiA6IHB1Ymxp YyBTcWxfYWxsb2MKK3sKK3B1YmxpYzoKKyAgLyoqCisgICAgR2V0IHRoZSBNRVNTQUdFX1RFWFQg b2YgdGhpcyBjb25kaXRpb24uCisgICAgQHJldHVybiB0aGUgbWVzc2FnZSB0ZXh0LgorICAqLwor ICBjb25zdCBjaGFyKiBnZXRfbWVzc2FnZV90ZXh0KCkgY29uc3Q7CisKKyAgLyoqCisgICAgR2V0 IHRoZSBNRVNTQUdFX09DVEVUX0xFTkdUSCBvZiB0aGlzIGNvbmRpdGlvbi4KKyAgICBAcmV0dXJu IHRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgdGhlIG1lc3NhZ2UgdGV4dC4KKyAgKi8KKyAgaW50IGdl dF9tZXNzYWdlX29jdGV0X2xlbmd0aCgpIGNvbnN0OworCisgIC8qKgorICAgIEdldCB0aGUgU1FM U1RBVEUgb2YgdGhpcyBjb25kaXRpb24uCisgICAgQHJldHVybiB0aGUgc3FsIHN0YXRlLgorICAq LworICBjb25zdCBjaGFyKiBnZXRfc3Fsc3RhdGUoKSBjb25zdAorICB7IHJldHVybiBtX3JldHVy bmVkX3NxbHN0YXRlOyB9CisKKyAgLyoqCisgICAgR2V0IHRoZSBTUUxfRVJSTk8gb2YgdGhpcyBj b25kaXRpb24uCisgICAgQHJldHVybiB0aGUgc3FsIGVycm9yIG51bWJlciBjb25kaXRpb24gaXRl bS4KKyAgKi8KKyAgaW50IGdldF9zcWxfZXJybm8oKSBjb25zdAorICB7IHJldHVybiBtX3NxbF9l cnJubzsgfQorCisgIC8qKgorICAgIEdldCB0aGUgZXJyb3IgbGV2ZWwgb2YgdGhpcyBjb25kaXRp b24uCisgICAgQHJldHVybiB0aGUgZXJyb3IgbGV2ZWwgY29uZGl0aW9uIGl0ZW0uCisgICovCisg IE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgZ2V0X2xldmVsKCkgY29uc3QKKyAgeyBy ZXR1cm4gbV9sZXZlbDsgfQorCitwcml2YXRlOgorICAvKgorICAgIFRoZSBpbnRlcmZhY2Ugb2Yg U1FMX2NvbmRpdGlvbiBpcyBtb3N0bHkgcHJpdmF0ZSwgYnkgZGVzaWduLAorICAgIHNvIHRoYXQg b25seSB0aGUgZm9sbG93aW5nIGNvZGU6CisgICAgLSB2YXJpb3VzIHJhaXNlX2Vycm9yKCkgb3Ig cmFpc2Vfd2FybmluZygpIG1ldGhvZHMgaW4gY2xhc3MgVEhELAorICAgIC0gdGhlIGltcGxlbWVu dGF0aW9uIG9mIFNJR05BTCAvIFJFU0lHTkFMCisgICAgLSBjYXRjaCAvIHJlLXRocm93IG9mIFNR TCBjb25kaXRpb25zIGluIHN0b3JlZCBwcm9jZWR1cmVzIChzcF9yY29udGV4dCkKKyAgICBpcyBh bGxvd2VkIHRvIGNyZWF0ZSAvIG1vZGlmeSBhIFNRTF9jb25kaXRpb24uCisgICAgRW5mb3JjaW5n IHRoaXMgcG9saWN5IHByZXZlbnRzIGNvbmZ1c2lvbiwgc2luY2UgdGhlIG9ubHkgcHVibGljCisg ICAgaW50ZXJmYWNlIGF2YWlsYWJsZSB0byB0aGUgcmVzdCBvZiB0aGUgc2VydmVyIGltcGxlbWVu dGF0aW9uCisgICAgaXMgdGhlIGludGVyZmFjZSBvZmZlcmVkIGJ5IHRoZSBUSEQgbWV0aG9kcyAo VEhEOjpyYWlzZV9lcnJvcigpKSwKKyAgICB3aGljaCBzaG91bGQgYmUgdXNlZC4KKyAgICBNQUlO VEFJTkVSOiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgcHJpdmF0ZSBhdHRyaWJ1dGVzL21ldGhvZHMg aGVyZSwKKyAgICBwbGVhc2UgY29uc2lkZXIgY3JlYXRpbmcgYSBoZWxwZXIgc2ltaWxhciB0byBU SEQ6OnJhaXNlX0VSX05PX1NVQ0hfVEFCTEUKKyAgICBpbnN0ZWFkLgorICAqLworICBmcmllbmQg Y2xhc3MgVEhEOworICBmcmllbmQgY2xhc3MgQWJzdHJhY3Rfc2lnbmFsOworICBmcmllbmQgY2xh c3MgU1FMQ09NX3NpZ25hbDsKKyAgZnJpZW5kIGNsYXNzIFNRTENPTV9yZXNpZ25hbDsKKyAgZnJp ZW5kIGNsYXNzIHNwX3Jjb250ZXh0OworCisgIC8qKgorICAgIENvbnN0cnVjdG9yLgorICAgIEBw YXJhbSBtZW1fcm9vdCBUaGUgbWVtb3J5IHJvb3QgdG8gdXNlIGZvciB0aGUgY29uZGl0aW9uIGl0 ZW1zCisgICAgb2YgdGhpcyBjb25kaXRpb24KKyAgKi8KKyAgU1FMX2NvbmRpdGlvbihNRU1fUk9P VCAqbWVtX3Jvb3QpOworCisgIC8qKiBEZXN0cnVjdG9yLiAqLworICB+U1FMX2NvbmRpdGlvbigp CisgIHt9CisKKyAgLyoqCisgICAgRGVlcCBjb3B5IChzdGF0aWMgbWV0aG9kKS4KKyAgICBCdWls ZHMgYSBjb3B5IG9mIGEgY29uZGl0aW9uIHVzaW5nIGEgZ2l2ZW4gbWVtb3J5IHJvb3QuCisgICAg J0RlZXAgY29weScgaXMgdXNlZnVsIHRvIHByb3BhZ2F0ZSBTUUwgY29uZGl0aW9ucyByYWlzZWQg ZnJvbSBhIHNob3J0CisgICAgbGl2ZWQgcnVudGltZSBlbnZpcm9ubWVudCB0byBhIHBhcmVudCBl eGVjdXRpb24gZW52aXJvbm1lbnQgd2l0aCBhIGxvbmdlcgorICAgIGxpZmUgY3ljbGUuCisgICAg Rm9yIGV4YW1wbGUsIHdoZW4gcHJvY19wMSgpIGNhbGxzIHByb2NfcDIoKSwgYW4gZXhjZXB0aW9u IHJhaXNlZCBpbgorICAgIHByb2NfcDIoKSBzaG91bGQgYmUgY29waWVkIHdoZW4gY2F1Z2h0IGlu IHByb2NfcDEoKSwKKyAgICBiZWZvcmUgZGVzdHJveWluZyB0aGUgcHJvY19wMigpIG1lbW9yeSBy b290LgorICAgIEBwYXJhbSB0aGQgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgIEBwYXJhbSBtZW1f cm9vdCB0aGUgbWVtb3J5IHJvb3QgdG8gdXNlIGZvciBtZW1vcnkgYWxsb2NhdGlvbi4KKyAgICBA cGFyYW0gY29uZCB0aGUgY29uZGl0aW9uIHRvIGNvcHkuCisgICAgQHJldHVybiB0aGUgZHVwbGlj YXRlZCBjb25kaXRpb24uCisgICovCisgIHN0YXRpYyBTUUxfY29uZGl0aW9uKiBkZWVwX2NvcHko VEhEICp0aGQsIE1FTV9ST09UICptZW1fcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBTUUxfY29uZGl0aW9uICpjb25kKTsKKworICAvKioKKyAgICBEZWVwIGNv cHkgKGluc3RhbmNlIG1ldGhvZCkuCisgICAgQHBhcmFtIGNvbmQgdGhlIGNvbmRpdGlvbiB0byBj b3B5LgorICAqLworICB2b2lkIGRlZXBfY29weShjb25zdCBTUUxfY29uZGl0aW9uICpjb25kKTsK KworICAvKioKKyAgICBTZXQgdGhpcyBjb25kaXRpb24gYXJlYSB3aXRoIGEgZml4ZWQgbWVzc2Fn ZSB0ZXh0LgorICAgIEBwYXJhbSB0aGQgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgIEBwYXJhbSBj b2RlIHRoZSBlcnJvciBudW1iZXIgZm9yIHRoaXMgY29uZGl0aW9uLgorICAgIEBwYXJhbSBzdHIg dGhlIG1lc3NhZ2UgdGV4dCBmb3IgdGhpcyBjb25kaXRpb24uCisgICAgQHBhcmFtIGxldmVsIHRo ZSBlcnJvciBsZXZlbCBmb3IgdGhpcyBjb25kaXRpb24uCisgICAgQHBhcmFtIE15RmxhZ3MgYWRk aXRpb25hbCBmbGFncy4KKyAgKi8KKyAgdm9pZCBzZXQoVEhEICp0aGQsIHVpbnQgY29kZSwgY29u c3QgY2hhciAqc3RyLAorICAgICAgICAgICBNWVNRTF9FUlJPUjo6ZW51bV93YXJuaW5nX2xldmVs IGxldmVsLCBteWYgTXlGbGFncyk7CisKKyAgLyoqCisgICAgU2V0IHRoaXMgY29uZGl0aW9uIGFy ZWEgd2l0aCBmb3JtYXR0aW5nIG9mIHRoZSBtZXNzYWdlIHRleHQuCisgICAgQHBhcmFtIHRoZCB0 aGUgY3VycmVudCB0aHJlYWQuCisgICAgQHBhcmFtIGNvZGUgdGhlIGVycm9yIG51bWJlciBmb3Ig dGhpcyBjb25kaXRpb24uCisgICAgQHBhcmFtIHN0ciB0aGUgbWVzc2FnZSB0ZXh0IHByaW50ZiBm b3JtYXQgZm9yIHRoaXMgY29uZGl0aW9uLgorICAgIEBwYXJhbSBsZXZlbCB0aGUgZXJyb3IgbGV2 ZWwgZm9yIHRoaXMgY29uZGl0aW9uLgorICAgIEBwYXJhbSBNeUZsYWdzIGFkZGl0aW9uYWwgZmxh Z3MuCisgICovCisgIHZvaWQgc2V0X3ByaW50ZihUSEQgKnRoZCwgdWludCBjb2RlLCBjb25zdCBj aGFyICpzdHIsCisgICAgICAgICAgICAgICAgICBNWVNRTF9FUlJPUjo6ZW51bV93YXJuaW5nX2xl dmVsIGxldmVsLCBteWYgTXlGbGFncywgLi4uKTsKKworICAvKioKKyAgICBTZXQgdGhlIGNvbmRp dGlvbiBtZXNzYWdlIHRlc3QuCisgICAgQHBhcmFtIHN0ciBNZXNzYWdlIHRleHQsIGV4cHJlc3Nl ZCBpbiB0aGUgY2hhcmFjdGVyIHNldCBkZXJpdmVkIGZyb20KKyAgICB0aGUgc2VydmVyIC0tbGFu Z3VhZ2Ugb3B0aW9uCisgICovCisgIHZvaWQgc2V0X2J1aWx0aW5fbWVzc2FnZV90ZXh0KGNvbnN0 IGNoYXIqIHN0cik7CisKKyAgLyoqIFNldCB0aGUgU1FMU1RBVEUgb2YgdGhpcyBjb25kaXRpb24u ICovCisgIHZvaWQgc2V0X3NxbHN0YXRlKGNvbnN0IGNoYXIqIHNxbHN0YXRlKTsKKworICBib29s IGlzX21lc3NhZ2VfdGV4dF9zZXQoKSBjb25zdAorICB7IHJldHVybiBtX21lc3NhZ2VfdGV4dF9z ZXQ7IH0KKworcHJpdmF0ZToKKyAgLyoqIFNRTCBDTEFTU19PUklHSU4gY29uZGl0aW9uIGl0ZW0u ICovCisgIFVURjhTdHJpbmc2NCBtX2NsYXNzX29yaWdpbjsKKworICAvKiogU1FMIFNVQkNMQVNT X09SSUdJTiBjb25kaXRpb24gaXRlbS4gKi8KKyAgVVRGOFN0cmluZzY0IG1fc3ViY2xhc3Nfb3Jp Z2luOworCisgIC8qKiBTUUwgQ09OU1RSQUlOVF9DQVRBTE9HIGNvbmRpdGlvbiBpdGVtLiAqLwor ICBVVEY4U3RyaW5nNjQgbV9jb25zdHJhaW50X2NhdGFsb2c7CisKKyAgLyoqIFNRTCBDT05TVFJB SU5UX1NDSEVNQSBjb25kaXRpb24gaXRlbS4gKi8KKyAgVVRGOFN0cmluZzY0IG1fY29uc3RyYWlu dF9zY2hlbWE7CisKKyAgLyoqIFNRTCBDT05TVFJBSU5UX05BTUUgY29uZGl0aW9uIGl0ZW0uICov CisgIFVURjhTdHJpbmc2NCBtX2NvbnN0cmFpbnRfbmFtZTsKKworICAvKiogU1FMIENBVEFMT0df TkFNRSBjb25kaXRpb24gaXRlbS4gKi8KKyAgVVRGOFN0cmluZzY0IG1fY2F0YWxvZ19uYW1lOwor CisgIC8qKiBTUUwgU0NIRU1BX05BTUUgY29uZGl0aW9uIGl0ZW0uICovCisgIFVURjhTdHJpbmc2 NCBtX3NjaGVtYV9uYW1lOworCisgIC8qKiBTUUwgVEFCTEVfTkFNRSBjb25kaXRpb24gaXRlbS4g Ki8KKyAgVVRGOFN0cmluZzY0IG1fdGFibGVfbmFtZTsKKworICAvKiogU1FMIENPTFVNTl9OQU1F IGNvbmRpdGlvbiBpdGVtLiAqLworICBVVEY4U3RyaW5nNjQgbV9jb2x1bW5fbmFtZTsKKworICAv KiogU1FMIENVUlNPUl9OQU1FIGNvbmRpdGlvbiBpdGVtLiAqLworICBVVEY4U3RyaW5nNjQgbV9j dXJzb3JfbmFtZTsKKworICAvKiogTWVzc2FnZSB0ZXh0LCBleHByZXNzZWQgaW4gdGhlIGNoYXJh Y3RlciBzZXQgaW1wbGllZCBieSAtLWxhbmd1YWdlLiAqLworICBTdHJpbmcgbV9tZXNzYWdlX3Rl eHQ7CisKKyAgLyoqCisgICAgVHJ1ZSBpZiBtX21lc3NhZ2VfdGV4dCB3YXMgZXhwbGljaXRlbHkg c2V0LgorICAgIFRoaXMgbWVtYmVyIGlzIG5lZWRlZCB0byBkaWZmZXJlbnRpYXRlOgorICAgIC0g U0lHTkFMIC4uLiB3aXRob3V0IGEgU0VUIE1FU1NBR0VfVEVYVCBjbGF1c2UsIGluIHdoaWNoIGNh c2UgdGhlIG1lc3NhZ2UKKyAgICB0ZXh0IHNob3VsZCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSwKKyAg ICAtIFNJR05BTCAuLi4gU0VUIE1FU1NBR0VfVEVYVD0nJywgaW4gd2hpY2ggY2FzZSB0aGUgbWVz c2FnZSB0ZXh0IHNob3VsZAorICAgIGJlICcnIGFuZCBub3QgcmVwbGFjZWQgYnkgYSBkZWZhdWx0 IHZhbHVlLgorICAqLworCisgIGJvb2wgbV9tZXNzYWdlX3RleHRfc2V0OworCisgIC8qKiBNeVNR TCBleHRlbnNpb24sIE1ZU1FMX0VSUk5PIGNvbmRpdGlvbiBpdGVtLiAqLworICBpbnQgbV9zcWxf ZXJybm87CisKKyAgLyoqCisgICAgU1FMIFJFVFVSTkVEX1NRTFNUQVRFIGNvbmRpdGlvbiBpdGVt LgorICAgIFRoaXMgbWVtYmVyIGlzIGFsd2F5cyBOVUwgdGVybWluYXRlZC4KKyAgKi8KKyAgY2hh ciBtX3JldHVybmVkX3NxbHN0YXRlW1NRTFNUQVRFX0xFTkdUSCsxXTsKKworICAvKiogU2V2ZXJp dHkgKGVycm9yLCB3YXJuaW5nLCBub3RlKSBvZiB0aGlzIGNvbmRpdGlvbi4gKi8KKyAgTVlTUUxf RVJST1I6OmVudW1fd2FybmluZ19sZXZlbCBtX2xldmVsOworCisgIC8qKiBBZGRpdGlvbmFsIGZs YWdzLiAqLworICBteWYgbV9mbGFnczsKKworICAvKiogTWVtb3J5IHJvb3QgdG8gdXNlIHRvIGhv bGQgY29uZGl0aW9uIGl0ZW0gdmFsdWVzLiAqLworICBNRU1fUk9PVCAqbV9tZW1fcm9vdDsKK307 CisKKy8qKgogICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIGludGVyZmFjZSBmb3IgaW50ZXJu YWwgZXJyb3IgaGFuZGxlcnMuCiAgIEludGVybmFsIGVycm9yIGhhbmRsZXJzIGFyZSBleGNlcHRp b24gaGFuZGxlcnMgdXNlZCBieSB0aGUgc2VydmVyCiAgIGltcGxlbWVudGF0aW9uLgpAQCAtMTA4 NSwxMiArMTMxNiwxMiBAQCBwcm90ZWN0ZWQ6CiAKIHB1YmxpYzoKICAgLyoqCi0gICAgSGFuZGxl IGFuIGVycm9yIGNvbmRpdGlvbi4KKyAgICBIYW5kbGUgYSBzcWwgY29uZGl0aW9uLgogICAgIFRo aXMgbWV0aG9kIGNhbiBiZSBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzIHRvIGFjaGlldmUgYW55 IG9mIHRoZQogICAgIGZvbGxvd2luZzoKLSAgICAtIG1hc2sgYW4gZXJyb3IgaW50ZXJuYWxseSwg cHJldmVudCBleHBvc2luZyBpdCB0byB0aGUgdXNlciwKLSAgICAtIG1hc2sgYW4gZXJyb3IgYW5k IHRocm93IGFub3RoZXIgb25lIGluc3RlYWQuCi0gICAgV2hlbiB0aGlzIG1ldGhvZCByZXR1cm5z IHRydWUsIHRoZSBlcnJvciBjb25kaXRpb24gaXMgY29uc2lkZXJlZAorICAgIC0gbWFzayBhIHdh cm5pbmcvZXJyb3IgaW50ZXJuYWxseSwgcHJldmVudCBleHBvc2luZyBpdCB0byB0aGUgdXNlciwK KyAgICAtIG1hc2sgYSB3YXJuaW5nL2Vycm9yIGFuZCB0aHJvdyBhbm90aGVyIG9uZSBpbnN0ZWFk LgorICAgIFdoZW4gdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGUgc3FsIGNvbmRpdGlvbiBp cyBjb25zaWRlcmVkCiAgICAgJ2hhbmRsZWQnLCBhbmQgd2lsbCBub3QgYmUgcHJvcGFnYXRlZCB0 byB1cHBlciBsYXllcnMuCiAgICAgSXQgaXMgdGhlIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjb2Rl IGluc3RhbGxpbmcgYW4gaW50ZXJuYWwgaGFuZGxlcgogICAgIHRvIHRoZW4gY2hlY2sgZm9yIHRy YXBwZWQgY29uZGl0aW9ucywgYW5kIGltcGxlbWVudCBsb2dpYyB0byByZWNvdmVyCkBAIC0xMTA0 LDE1ICsxMzM1LDY5IEBAIHB1YmxpYzoKICAgICBiZWZvcmUgcmVtb3ZpbmcgaXQgZnJvbSB0aGUg ZXhjZXB0aW9uIHN0YWNrIHdpdGgKICAgICA8Y29kZT5USEQ6OnBvcF9pbnRlcm5hbF9oYW5kbGVy KCk8L2NvZGU+LgogCi0gICAgQHBhcmFtIHNxbF9lcnJubyB0aGUgZXJyb3IgbnVtYmVyCi0gICAg QHBhcmFtIGxldmVsIHRoZSBlcnJvciBsZXZlbAogICAgIEBwYXJhbSB0aGQgdGhlIGNhbGxpbmcg dGhyZWFkCi0gICAgQHJldHVybiB0cnVlIGlmIHRoZSBlcnJvciBpcyBoYW5kbGVkCisgICAgQHBh cmFtIGNvbmQgdGhlIGNvbmRpdGlvbiByYWlzZWQuCisgICAgQHJldHVybiB0cnVlIGlmIHRoZSBj b25kaXRpb24gaXMgaGFuZGxlZAorICAqLworICB2aXJ0dWFsIGJvb2wgaGFuZGxlX2NvbmRpdGlv bihUSEQgKnRoZCwgY29uc3QgU1FMX2NvbmRpdGlvbiAqY29uZCkgPSAwOworfTsKKworCisvKioK KyAgU3RhdGVtZW50IGRpYWdub3N0aWNzIGFyZWEuCisqLworY2xhc3MgRGlhZ25vc3RpY3Nfc3Rt dF9hcmVhCit7CitwdWJsaWM6CisgIC8qKiBDb25zdHJ1Y3Rvci4gKi8KKyAgRGlhZ25vc3RpY3Nf c3RtdF9hcmVhKCkKKyAgICA6IHdhcm5fbGlzdCgpLAorICAgICAgbV9yZWFkX29ubHkoRkFMU0Up CisgIHsKKyAgICBiemVybygoY2hhciopIHdhcm5fY291bnQsIHNpemVvZih3YXJuX2NvdW50KSk7 CisgIH0KKworICAvKiogRGVzdHJ1Y3Rvci4gKi8KKyAgfkRpYWdub3N0aWNzX3N0bXRfYXJlYSgp CisgIHt9CisKKyAgLyoqIENsZWFyIHRoZSBzdGF0ZW1lbnQgYXJlYS4gKi8KKyAgdm9pZCBjbGVh cigpOworCisgIC8qKiAKKyAgICBTZXQgdGhlIHJlYWQgb25seSBzdGF0dXMgZm9yIHRoaXMgc3Rh dGVtZW50IGFyZWEuCisgICAgVGhpcyBpcyBhIHByaXZpbGVkZ2VkIG9wZXJhdGlvbiwgcmVzZXJ2 ZWQgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorICAgIGRpYWdub3N0aWNzIHJlbGF0ZWQgc3Rh dGVtZW50cywgdG8gZW5mb3JjZSB0aGF0IHRoZSBzdGF0ZW1lbnQgYXJlYSBpcworICAgIGxlZnQg dW50b3VjaGVkIGR1cmluZyBleGVjdXRpb24uCisgICAgVGhlIGRpYWdub3N0aWNzIHN0YXRlbWVu dHMgYXJlOgorICAgIC0gU0hPVyBXQVJOSU5HUworICAgIC0gU0hPVyBFUlJPUlMKKyAgICAtIEdF VCBESUFHTk9TVElDUworICAgIEBwYXJhbSByZWFkX29ubHkgdGhlIHJlYWQgb25seSBwcm9wZXJ0 eSB0byBzZXQKKyAgKi8KKyAgdm9pZCBzZXRfcmVhZF9vbmx5KGJvb2wgcmVhZF9vbmx5KQorICB7 IG1fcmVhZF9vbmx5PSByZWFkX29ubHk7IH0KKworICAvKioKKyAgICBSZWFkIG9ubHkgc3RhdHVz LgorICAgIEByZXR1cm4gdGhlIHJlYWQgb25seSBwcm9wZXJ0eQorICAqLworICBib29sIGlzX3Jl YWRfb25seSgpIGNvbnN0CisgIHsgcmV0dXJuIG1fcmVhZF9vbmx5OyB9CisKKyAgLyoqCisgICAg Q29uZGl0aW9uIGFyZWEuCisgICovCisgIExpc3QJICAgICA8U1FMX2NvbmRpdGlvbj4gd2Fybl9s aXN0OworCisgIC8qKgorICAgIENvdW50ZXJzIGZvciBlcnJvcnMvd2FybmluZ3Mvbm90ZXMgaW4g dGhlIGNvbmRpdGlvbiBhcmVhLgogICAqLwotICB2aXJ0dWFsIGJvb2wgaGFuZGxlX2Vycm9yKHVp bnQgc3FsX2Vycm5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1l c3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxfRVJST1I6OmVudW1fd2Fy bmluZ19sZXZlbCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSEQgKnRoZCkg PSAwOworICB1aW50CSAgICAgd2Fybl9jb3VudFsodWludCkgTVlTUUxfRVJST1I6OldBUk5fTEVW RUxfRU5EXTsKKworcHJpdmF0ZToKKyAgLyoqIFJlYWQgb25seSBzdGF0dXMuICovCisgIGJvb2wg bV9yZWFkX29ubHk7CiB9OwogCiAKQEAgLTExNDgsNyArMTQzMywxMCBAQCBwdWJsaWM6CiAgICAg ICAgICAgICAgICAgICAgICB1bG9uZ2xvbmcgbGFzdF9pbnNlcnRfaWRfYXJnLAogICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAgIHZvaWQgc2V0X2VvZl9zdGF0dXMo VEhEICp0aGQpOwotICB2b2lkIHNldF9lcnJvcl9zdGF0dXMoVEhEICp0aGQsIHVpbnQgc3FsX2Vy cm5vX2FyZywgY29uc3QgY2hhciAqbWVzc2FnZV9hcmcpOworICB2b2lkIHNldF9kZWZhdWx0X2Vy cm9yX3N0YXR1cyhUSEQgKnRoZCwgdWludCBzcWxfZXJybm9fYXJnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZV9hcmcpOworICB2b2lkIHNldF9lcnJv cl9zdGF0dXMoVEhEICp0aGQsIHVpbnQgc3FsX2Vycm5vX2FyZywgY29uc3QgY2hhciAqbWVzc2Fn ZV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBzcWxzdGF0ZSk7CiAK ICAgdm9pZCBkaXNhYmxlX3N0YXR1cygpOwogCkBAIC0xMTY3LDYgKzE0NTUsOSBAQCBwdWJsaWM6 CiAgIHVpbnQgc3FsX2Vycm5vKCkgY29uc3QKICAgeyBEQlVHX0FTU0VSVChtX3N0YXR1cyA9PSBE QV9FUlJPUik7IHJldHVybiBtX3NxbF9lcnJubzsgfQogCisgIGNvbnN0IGNoYXIqIGdldF9zcWxz dGF0ZSgpIGNvbnN0CisgIHsgREJVR19BU1NFUlQobV9zdGF0dXMgPT0gREFfRVJST1IpOyByZXR1 cm4gbV9zcWxzdGF0ZTsgfQorCiAgIHVpbnQgc2VydmVyX3N0YXR1cygpIGNvbnN0CiAgIHsKICAg ICBEQlVHX0FTU0VSVChtX3N0YXR1cyA9PSBEQV9PSyB8fCBtX3N0YXR1cyA9PSBEQV9FT0YpOwpA QCAtMTE5Niw2ICsxNDg3LDggQEAgcHJpdmF0ZToKICAgKi8KICAgdWludCBtX3NxbF9lcnJubzsK IAorICBjaGFyIG1fc3Fsc3RhdGVbU1FMU1RBVEVfTEVOR1RIKzFdOworCiAgIC8qKgogICAgIENv cGllZCBmcm9tIHRoZC0+c2VydmVyX3N0YXR1cyB3aGVuIHRoZSBkaWFnbm9zdGljcyBhcmVhIGlz IGFzc2lnbmVkLgogICAgIFdlIG5lZWQgdGhpcyBtZW1iZXIgYXMgc29tZSBwbGFjZXMgaW4gdGhl IGNvZGUgdXNlIHRoZSBmb2xsb3dpbmcgcGF0dGVybjoKQEAgLTEyMjQsMTIgKzE1MTcsMTEgQEAg cHJpdmF0ZToKICAgKi8KICAgdWxvbmdsb25nICAgbV9sYXN0X2luc2VydF9pZDsKICAgLyoqIFRo ZSB0b3RhbCBudW1iZXIgb2Ygd2FybmluZ3MuICovCi0gIHVpbnQJICAgICBtX3RvdGFsX3dhcm5f Y291bnQ7CisgIHVpbnQgbV90b3RhbF93YXJuX2NvdW50OwogICBlbnVtX2RpYWdub3N0aWNzX3N0 YXR1cyBtX3N0YXR1czsKLSAgLyoqCi0gICAgQHRvZG86IHRoZSBmb2xsb3dpbmcgVEhEIG1lbWJl cnMgYmVsb25nIGhlcmU6Ci0gICAgLSB3YXJuX2xpc3QsIHdhcm5fY291bnQsCi0gICovCisKK3B1 YmxpYzoKKyAgRGlhZ25vc3RpY3Nfc3RtdF9hcmVhIG1fc3RtdF9hcmVhOwogfTsKIAogLyoqCkBA IC0xNzQ2LDE1ICsyMDM4LDcgQEAgcHVibGljOgogICB0YWJsZV9tYXAgIHVzZWRfdGFibGVzOwog ICBVU0VSX0NPTk4gKnVzZXJfY29ubmVjdDsKICAgQ0hBUlNFVF9JTkZPICpkYl9jaGFyc2V0Owot ICAvKgotICAgIEZJWE1FOiB0aGlzLCBhbmQgc29tZSBvdGhlciB2YXJpYWJsZXMgbGlrZSAnY291 bnRfY3V0ZWRfZmllbGRzJwotICAgIG1heWJlIHNob3VsZCBiZSBzdGF0ZW1lbnQvY3Vyc29yIGxv Y2FsLCB0aGF0IGlzLCBtb3ZlZCB0byBTdGF0ZW1lbnQKLSAgICBjbGFzcy4gV2l0aCBjdXJyZW50 IGltcGxlbWVudGF0aW9uIHdhcm5pbmdzIHByb2R1Y2VkIGluIGVhY2ggcHJlcGFyZWQKLSAgICBz dGF0ZW1lbnQvY3Vyc29yIHNldHRsZSBoZXJlLgotICAqLwotICBMaXN0CSAgICAgPE1ZU1FMX0VS Uk9SPiB3YXJuX2xpc3Q7Ci0gIHVpbnQJICAgICB3YXJuX2NvdW50Wyh1aW50KSBNWVNRTF9FUlJP Ujo6V0FSTl9MRVZFTF9FTkRdOwotICB1aW50CSAgICAgdG90YWxfd2Fybl9jb3VudDsKKyAgdWlu dCAgICAgICAgICAgICB0b3RhbF93YXJuX2NvdW50OwogICBEaWFnbm9zdGljc19hcmVhIG1haW5f ZGE7CiAjaWYgZGVmaW5lZChFTkFCTEVEX1BST0ZJTElORykKICAgUFJPRklMSU5HICBwcm9maWxp bmc7CkBAIC0xODY2LDYgKzIxNTAsOCBAQCBwdWJsaWM6CiAgIG15X2Jvb2wgICAgdGFibGVzcGFj ZV9vcDsJLyogVGhpcyBpcyBUUlVFIGluIERJU0NBUkQvSU1QT1JUIFRBQkxFU1BBQ0UgKi8KIAog ICBzcF9yY29udGV4dCAqc3Bjb250OwkJLy8gU1AgcnVudGltZSBjb250ZXh0CisgIGJvb2wgICAg ICAgZW5kX3BhcnRpYWxfcmVzdWx0X3NldDsKKwogICBzcF9jYWNoZSAgICpzcF9wcm9jX2NhY2hl OwogICBzcF9jYWNoZSAgICpzcF9mdW5jX2NhY2hlOwogCkBAIC0yMzQzLDE5ICsyNjI5LDEyMiBA QCBwdWJsaWM6CiAgIHZvaWQgcHVzaF9pbnRlcm5hbF9oYW5kbGVyKEludGVybmFsX2Vycm9yX2hh bmRsZXIgKmhhbmRsZXIpOwogCiAgIC8qKgotICAgIEhhbmRsZSBhbiBlcnJvciBjb25kaXRpb24u Ci0gICAgQHBhcmFtIHNxbF9lcnJubyB0aGUgZXJyb3IgbnVtYmVyCi0gICAgQHBhcmFtIGxldmVs IHRoZSBlcnJvciBsZXZlbAorICAgIEhhbmRsZSBhIHNxbCBjb25kaXRpb24uCisgICAgQHBhcmFt IGNvbmQgdGhlIHNxbCBjb25kaXRpb24gdG8gaGFuZGxlLgogICAgIEByZXR1cm4gdHJ1ZSBpZiB0 aGUgZXJyb3IgaXMgaGFuZGxlZAogICAqLwotICB2aXJ0dWFsIGJvb2wgaGFuZGxlX2Vycm9yKHVp bnQgc3FsX2Vycm5vLCBjb25zdCBjaGFyICptZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgbGV2ZWwpOworICB2aXJ0dWFs IGJvb2wgaGFuZGxlX2NvbmRpdGlvbihjb25zdCBTUUxfY29uZGl0aW9uICpjb25kKTsKIAogICAv KioKICAgICBSZW1vdmUgdGhlIGVycm9yIGhhbmRsZXIgbGFzdCBwdXNoZWQuCiAgICovCiAgIHZv aWQgcG9wX2ludGVybmFsX2hhbmRsZXIoKTsKIAorICAvKioKKyAgICBSYWlzZSBhbiBFUl9OT19T VUNIX1RBQkxFIGV4Y2VwdGlvbiBjb25kaXRpb24uCisgICAgQHBhcmFtIGRiIHRoZSBzY2hlbWEg bmFtZSBvZiB0aGUgbWlzc2luZyB0YWJsZQorICAgIEBwYXJhbSB0YWJsZSB0aGUgdGFibGUgbmFt ZSBvZiB0aGUgbWlzc2luZyB0YWJsZQorICAqLworICB2b2lkIHJhaXNlX0VSX05PX1NVQ0hfVEFC TEUoY29uc3QgY2hhciogZGIsIGNvbnN0IGNoYXIqIHRhYmxlKQorICB7CisgICAgU1FMX2NvbmRp dGlvbiBjb25kKHRoaXMtPm1lbV9yb290KTsKKyAgICBjb25kLnNldF9wcmludGYodGhpcywgRVJf Tk9fU1VDSF9UQUJMRSwgRVIoRVJfTk9fU1VDSF9UQUJMRSksCisgICAgICAgICAgICAgICAgICAg IE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX0VSUk9SLCBNWUYoMCksCisgICAgICAgICAgICAgICAg ICAgIGRiLCB0YWJsZSk7CisgICAgY29uZC5tX3NjaGVtYV9uYW1lLnNldChkYik7CisgICAgY29u ZC5tX3RhYmxlX25hbWUuc2V0KHRhYmxlKTsKKyAgICByYWlzZV9jb25kaXRpb24oJiBjb25kKTsK KyAgfQorCisgIC8qKgorICAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBjb25kaXRpb24uCisgICAgSGVs cGVyIGZvciBtb3N0IGNvbW1vbiB1c2FnZS4KKyAgICBAcGFyYW0gY29kZSB0aGUgTVlTUUxfRVJS Tk8gZXJyb3IgY29kZSBvZiB0aGUgZXJyb3IKKyAgKi8KKyAgdm9pZCByYWlzZV9lcnJvcih1aW50 IGNvZGUpCisgIHsKKyAgICByYWlzZV9lcnJvcihjb2RlLCBFUihjb2RlKSwgTVlGKDApKTsKKyAg fQorCisgIC8qKgorICAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBjb25kaXRpb24sIHdpdGggYSBmaXhl ZCBtZXNzYWdlLgorICAgIEBwYXJhbSBjb2RlIHRoZSBNWVNRTF9FUlJOTyBlcnJvciBjb2RlIG9m IHRoZSBlcnJvcgorICAgIEBwYXJhbSBzdHIgdGhlIE1FU1NBR0VfVEVYVCBvZiB0aGUgZXJyb3IK KyAgICBAcGFyYW0gTXlGbGFncyBhZGRpdGlvbmFsIGZsYWdzCisgICovCisgIHZvaWQgcmFpc2Vf ZXJyb3IodWludCBjb2RlLCBjb25zdCBjaGFyICpzdHIsIG15ZiBNeUZsYWdzKTsKKworICAvKioK KyAgICBSYWlzZSBhbiBleGNlcHRpb24gY29uZGl0aW9uLCB3aXRoIGEgZm9ybWF0dGVkIG1lc3Nh Z2UuCisgICAgQHBhcmFtIGNvZGUgdGhlIE1ZU1FMX0VSUk5PIGVycm9yIGNvZGUgb2YgdGhlIGVy cm9yCisgICAgQHBhcmFtIGZvcm1hdCB0aGUgTUVTU0FHRV9URVhUIHByaW50ZiBmb3JtYXQgb2Yg dGhlIGVycm9yCisgICAgQHBhcmFtIE15RmxhZ3MgYWRkaXRpb25hbCBmbGFncworICAqLworICB2 b2lkIHJhaXNlX2Vycm9yX3ByaW50Zih1aW50IGNvZGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgbXlm IE15RmxhZ3MsIC4uLik7CisKKyAgLyoqCisgICAgUmFpc2UgYSBjb21wbGV0aW9uIGNvbmRpdGlv biAod2FybmluZykuCisgICAgSGVscGVyIGZvciBtb3N0IGNvbW1vbiB1c2FnZS4KKyAgICBAcGFy YW0gY29kZSB0aGUgTVlTUUxfRVJSTk8gZXJyb3IgY29kZSBvZiB0aGUgd2FybmluZworICAqLwor ICB2b2lkIHJhaXNlX3dhcm5pbmcodWludCBjb2RlKQorICB7CisgICAgcmFpc2Vfd2FybmluZyhj b2RlLCBFUihjb2RlKSk7CisgIH0KKworICAvKioKKyAgICBSYWlzZSBhIGNvbXBsZXRpb24gY29u ZGl0aW9uICh3YXJuaW5nKSwgd2l0aCBhIGZpeGVkIG1lc3NhZ2UuCisgICAgQHBhcmFtIGNvZGUg dGhlIE1ZU1FMX0VSUk5PIGVycm9yIGNvZGUgb2YgdGhlIHdhcm5pbmcKKyAgICBAcGFyYW0gc3Ry IHRoZSBNRVNTQUdFX1RFWFQgb2YgdGhlIHdhcm5pbmcKKyAgKi8KKyAgdm9pZCByYWlzZV93YXJu aW5nKHVpbnQgY29kZSwgY29uc3QgY2hhciAqc3RyKTsKKworICAvKioKKyAgICBSYWlzZSBhIGNv bXBsZXRpb24gY29uZGl0aW9uICh3YXJuaW5nKSwgd2l0aCBhIGZvcm1hdHRlZCBtZXNzYWdlLgor ICAgIEBwYXJhbSBjb2RlIHRoZSBNWVNRTF9FUlJOTyBlcnJvciBjb2RlIG9mIHRoZSB3YXJuaW5n CisgICAgQHBhcmFtIGZvcm1hdCB0aGUgTUVTU0FHRV9URVhUIHByaW50ZiBmb3JtYXQgb2YgdGhl IHdhcm5pbmcKKyAgKi8KKyAgdm9pZCByYWlzZV93YXJuaW5nX3ByaW50Zih1aW50IGNvZGUsIGNv bnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKworICAvKioKKyAgICBSYWlzZSBhIGNvbXBsZXRpb24g Y29uZGl0aW9uIChub3RlKSwgd2l0aCBhIGZpeGVkIG1lc3NhZ2UuCisgICAgQHBhcmFtIGNvZGUg dGhlIE1ZU1FMX0VSUk5PIGVycm9yIGNvZGUgb2YgdGhlIG5vdGUKKyAgICBAcGFyYW0gc3RyIHRo ZSBNRVNTQUdFX1RFWFQgb2YgdGhlIG5vdGUKKyAgKi8KKyAgdm9pZCByYWlzZV9ub3RlKHVpbnQg Y29kZSwgY29uc3QgY2hhciAqc3RyKTsKKworICAvKioKKyAgICBSYWlzZSBhIGNvbXBsZXRpb24g Y29uZGl0aW9uIChub3RlKSwgd2l0aCBhIGZvcm1hdHRlZCBtZXNzYWdlLgorICAgIEBwYXJhbSBj b2RlIHRoZSBNWVNRTF9FUlJOTyBlcnJvciBjb2RlIG9mIHRoZSBub3RlCisgICAgQHBhcmFtIGZv cm1hdCB0aGUgTUVTU0FHRV9URVhUIHByaW50ZiBmb3JtYXQgb2YgdGhlIG5vdGUKKyAgKi8KKyAg dm9pZCByYWlzZV9ub3RlX3ByaW50Zih1aW50IGNvZGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4u KTsKKworcHJpdmF0ZToKKyAgLyoKKyAgICBPbmx5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg U0lHTkFMIGFuZCBSRVNJR05BTCBzdGF0ZW1lbnRzCisgICAgaXMgcGVybWl0dGVkIHRvIHJhaXNl IFNRTCBjb25kaXRpb25zIGluIGEgZ2VuZXJpYyB3YXksCisgICAgb3IgdG8gcmFpc2UgdGhlbSBi eSBieXBhc3NpbmcgaGFuZGxlcnMgKFJFU0lHTkFMKS4KKyAgICBUbyByYWlzZSBhIFNRTCBjb25k aXRpb24sIHRoZSBjb2RlIHNob3VsZCB1c2UgdGhlIHB1YmxpYworICAgIHJhaXNlX2Vycm9yKCkg b3IgcmFpc2Vfd2FybmluZygpIG1ldGhvZHMgcHJvdmlkZWQgYnkgY2xhc3MgVEhELgorICAqLwor ICBmcmllbmQgY2xhc3MgQWJzdHJhY3Rfc2lnbmFsOworICBmcmllbmQgY2xhc3MgU1FMQ09NX3Np Z25hbDsKKyAgZnJpZW5kIGNsYXNzIFNRTENPTV9yZXNpZ25hbDsKKworICAvKioKKyAgICBSYWlz ZSBhIGdlbmVyaWMgU1FMIGNvbmRpdGlvbi4KKyAgICBAcGFyYW0gY29uZCB0aGUgY29uZGl0aW9u IHRvIHJhaXNlCisgICovCisgIHZvaWQgcmFpc2VfY29uZGl0aW9uKGNvbnN0IFNRTF9jb25kaXRp b24gKmNvbmQpOworCisgIC8qKgorICAgIFJhaXNlIGEgZ2VuZXJpYyBTUUwgY29uZGl0aW9uLCB3 aXRob3V0IGFjdGl2YXRpb24gYW55IFNRTCBjb25kaXRpb24KKyAgICBoYW5kbGVycy4KKyAgICBA cGFyYW0gY29uZCB0aGUgY29uZGl0aW9uIHRvIHJhaXNlCisgICovCisgIHZvaWQgcmFpc2VfY29u ZGl0aW9uX25vX2hhbmRsZXIoY29uc3QgU1FMX2NvbmRpdGlvbiAqY29uZCk7CisKIHByaXZhdGU6 CiAgIC8qKiBUaGUgY3VycmVudCBpbnRlcm5hbCBlcnJvciBoYW5kbGVyIGZvciB0aGlzIHRocmVh ZCwgb3IgTlVMTC4gKi8KICAgSW50ZXJuYWxfZXJyb3JfaGFuZGxlciAqbV9pbnRlcm5hbF9oYW5k bGVyOwpAQCAtMzA4MSw2ICszNDcwLDE2IEBAIHB1YmxpYzoKICovCiAjZGVmaW5lIENGX0FVVE9f Q09NTUlUX1RSQU5TICAoQ0ZfSU1QTElDVF9DT01NSVRfQkVHSU4gfCBDRl9JTVBMSUNJVF9DT01N SVRfRU5EKQogCisvKioKKyAgRGlhZ25vc3RpYyBzdGF0ZW1lbnQuCisgIERpYWdub3N0aWMgc3Rh dGVtZW50czoKKyAgLSBTSE9XIFdBUk5JTkcKKyAgLSBTSE9XIEVSUk9SCisgIC0gR0VUIERJQUdO T1NUSUNTIChXTCMyMTExKQorICBkbyBub3QgbW9kaWZ5IHRoZSBkaWFnbm9zdGljcyBhcmVhIGR1 cmluZyBleGVjdXRpb24uCisqLworI2RlZmluZSBDRl9ESUFHTk9TVElDX1NUTVQgICAgICAgICgx VSA8PCA4KQorCiAvKiBCaXRzIGluIHNlcnZlcl9jb21tYW5kX2ZsYWdzICovCiAKIC8qKgoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfZXJyb3IuY2MnCi0tLSBhL3NxbC9zcWxfZXJyb3IuY2MJ MjAwOC0wNy0yOSAyMjowMzo1NyArMDAwMAorKysgYi9zcWwvc3FsX2Vycm9yLmNjCTIwMDgtMDgt MjcgMjI6MTQ6MDMgKzAwMDAKQEAgLTc0LDE0ICs3NCwxNyBAQCB2b2lkIE1ZU1FMX0VSUk9SOjpz ZXRfbXNnKFRIRCAqdGhkLCBjb25zCiB2b2lkIG15c3FsX3Jlc2V0X2Vycm9ycyhUSEQgKnRoZCwg Ym9vbCBmb3JjZSkKIHsKICAgREJVR19FTlRFUigibXlzcWxfcmVzZXRfZXJyb3JzIik7CisKKyAg aWYgKHRoZC0+bWFpbl9kYS5tX3N0bXRfYXJlYS5pc19yZWFkX29ubHkoKSkKKyAgICBEQlVHX1ZP SURfUkVUVVJOOworCiAgIGlmICh0aGQtPnF1ZXJ5X2lkICE9IHRoZC0+d2Fybl9pZCB8fCBmb3Jj ZSkKICAgewogICAgIHRoZC0+d2Fybl9pZD0gdGhkLT5xdWVyeV9pZDsKKyAgICB0aGQtPm1haW5f ZGEubV9zdG10X2FyZWEuY2xlYXIoKTsKICAgICBmcmVlX3Jvb3QoJnRoZC0+d2Fybl9yb290LE1Z RigwKSk7Ci0gICAgYnplcm8oKGNoYXIqKSB0aGQtPndhcm5fY291bnQsIHNpemVvZih0aGQtPndh cm5fY291bnQpKTsKICAgICBpZiAoZm9yY2UpCiAgICAgICB0aGQtPnRvdGFsX3dhcm5fY291bnQ9 IDA7Ci0gICAgdGhkLT53YXJuX2xpc3QuZW1wdHkoKTsKICAgICB0aGQtPnJvd19jb3VudD0gMTsg Ly8gYnkgZGVmYXVsdCBwb2ludCB0byByb3cgMQogICB9CiAgIERCVUdfVk9JRF9SRVRVUk47CkBA IC05OSw2MyArMTAyLDI4IEBAIHZvaWQgbXlzcWxfcmVzZXRfZXJyb3JzKFRIRCAqdGhkLCBib29s IGYKICAgICBtc2cJCQlDbGVhciBlcnJvciBtZXNzYWdlCiAqLwogCi12b2lkIHB1c2hfd2Fybmlu ZyhUSEQgKnRoZCwgTVlTUUxfRVJST1I6OmVudW1fd2FybmluZ19sZXZlbCBsZXZlbCwgCi0gICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQgY29kZSwgY29uc3QgY2hhciAqbXNnKQordm9pZCBw dXNoX3dhcm5pbmcoVEhEICp0aGQsIE1ZU1FMX0VSUk9SOjplbnVtX3dhcm5pbmdfbGV2ZWwgbGV2 ZWwsCisgICAgICAgICAgICAgICAgICB1aW50IGNvZGUsIGNvbnN0IGNoYXIgKm1zZykKIHsKLSAg TVlTUUxfRVJST1IgKmVycj0gMDsKICAgREJVR19FTlRFUigicHVzaF93YXJuaW5nIik7CiAgIERC VUdfUFJJTlQoImVudGVyIiwgKCJjb2RlOiAlZCwgbXNnOiAlcyIsIGNvZGUsIG1zZykpOwogCi0g IGlmIChsZXZlbCA9PSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9OT1RFICYmCi0gICAgICAhKHRo ZC0+b3B0aW9ucyAmIE9QVElPTl9TUUxfTk9URVMpKQotICAgIERCVUdfVk9JRF9SRVRVUk47Ci0K LSAgaWYgKHRoZC0+cXVlcnlfaWQgIT0gdGhkLT53YXJuX2lkICYmICF0aGQtPnNwY29udCkKLSAg ICBteXNxbF9yZXNldF9lcnJvcnModGhkLCAwKTsKLSAgdGhkLT5nb3Rfd2FybmluZz0gMTsKLQot ICAvKiBBYm9ydCBpZiB3ZSBhcmUgdXNpbmcgc3RyaWN0IG1vZGUgYW5kIHdlIGFyZSBub3QgdXNp bmcgSUdOT1JFICovCi0gIGlmICgoaW50KSBsZXZlbCA+PSAoaW50KSBNWVNRTF9FUlJPUjo6V0FS Tl9MRVZFTF9XQVJOICYmCi0gICAgICB0aGQtPnJlYWxseV9hYm9ydF9vbl93YXJuaW5nKCkpCisg IHN3aXRjaChsZXZlbCkKICAgewotICAgIC8qIEF2b2lkIG15X21lc3NhZ2UoKSBjYWxsaW5nIHB1 c2hfd2FybmluZyAqLwotICAgIGJvb2wgbm9fd2FybmluZ3NfZm9yX2Vycm9yPSB0aGQtPm5vX3dh cm5pbmdzX2Zvcl9lcnJvcjsKLSAgICBzcF9yY29udGV4dCAqc3Bjb250PSB0aGQtPnNwY29udDsK LQotICAgIHRoZC0+bm9fd2FybmluZ3NfZm9yX2Vycm9yPSAxOwotICAgIHRoZC0+c3Bjb250PSBO VUxMOwotCi0gICAgdGhkLT5raWxsZWQ9IFRIRDo6S0lMTF9CQURfREFUQTsKLSAgICBteV9tZXNz YWdlKGNvZGUsIG1zZywgTVlGKDApKTsKLQotICAgIHRoZC0+c3Bjb250PSBzcGNvbnQ7Ci0gICAg dGhkLT5ub193YXJuaW5nc19mb3JfZXJyb3I9IG5vX3dhcm5pbmdzX2Zvcl9lcnJvcjsKLSAgICAv KiBTdG9yZSBlcnJvciBpbiBlcnJvciBsaXN0IChhcyBteV9tZXNzYWdlKCkgZGlkbid0IGRvIGl0 KSAqLwotICAgIGxldmVsPSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9FUlJPUjsKKyAgY2FzZSBN WVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9OT1RFOgorICAgIHRoZC0+cmFpc2Vfbm90ZShjb2RlLCBt c2cpOworICAgIGJyZWFrOworICBjYXNlIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk46Cisg ICAgdGhkLT5yYWlzZV93YXJuaW5nKGNvZGUsIG1zZyk7CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6 CisgICAgREJVR19BU1NFUlQoRkFMU0UpOwogICB9CiAKLSAgaWYgKHRoZC0+aGFuZGxlX2Vycm9y KGNvZGUsIG1zZywgbGV2ZWwpKQotICAgIERCVUdfVk9JRF9SRVRVUk47Ci0KLSAgaWYgKHRoZC0+ c3Bjb250ICYmCi0gICAgICB0aGQtPnNwY29udC0+aGFuZGxlX2Vycm9yKGNvZGUsIGxldmVsLCB0 aGQpKQotICB7Ci0gICAgREJVR19WT0lEX1JFVFVSTjsKLSAgfQotICBxdWVyeV9jYWNoZV9hYm9y dCgmdGhkLT5xdWVyeV9jYWNoZV90bHMpOwotCi0KLSAgaWYgKHRoZC0+d2Fybl9saXN0LmVsZW1l bnRzIDwgdGhkLT52YXJpYWJsZXMubWF4X2Vycm9yX2NvdW50KQotICB7Ci0gICAgLyogV2UgaGF2 ZSB0byB1c2Ugd2Fybl9yb290LCBhcyBtZW1fcm9vdCBpcyBmcmVlZCBhZnRlciBlYWNoIHF1ZXJ5 ICovCi0gICAgaWYgKChlcnI9IG5ldyAoJnRoZC0+d2Fybl9yb290KSBNWVNRTF9FUlJPUih0aGQs IGNvZGUsIGxldmVsLCBtc2cpKSkKLSAgICAgIHRoZC0+d2Fybl9saXN0LnB1c2hfYmFjayhlcnIs ICZ0aGQtPndhcm5fcm9vdCk7Ci0gIH0KLSAgdGhkLT53YXJuX2NvdW50Wyh1aW50KSBsZXZlbF0r KzsKLSAgdGhkLT50b3RhbF93YXJuX2NvdW50Kys7CiAgIERCVUdfVk9JRF9SRVRVUk47CiB9CiAK KwogLyoKICAgUHVzaCB0aGUgd2FybmluZy9lcnJvciB0byBlcnJvciBsaXN0IGlmIHRoZXJlIGlz IHN0aWxsIHJvb20gaW4gdGhlIGxpc3QKIApAQCAtMjA4LDEwICsxNzYsMTIgQEAgY29uc3QgTEVY X1NUUklORyB3YXJuaW5nX2xldmVsX25hbWVzW109CiB9OwogCiBib29sIG15c3FsZF9zaG93X3dh cm5pbmdzKFRIRCAqdGhkLCB1bG9uZyBsZXZlbHNfdG9fc2hvdykKLXsgIAorewogICBMaXN0PEl0 ZW0+IGZpZWxkX2xpc3Q7CiAgIERCVUdfRU5URVIoIm15c3FsZF9zaG93X3dhcm5pbmdzIik7CiAK KyAgREJVR19BU1NFUlQodGhkLT5tYWluX2RhLm1fc3RtdF9hcmVhLmlzX3JlYWRfb25seSgpKTsK KwogICBmaWVsZF9saXN0LnB1c2hfYmFjayhuZXcgSXRlbV9lbXB0eV9zdHJpbmcoIkxldmVsIiwg NykpOwogICBmaWVsZF9saXN0LnB1c2hfYmFjayhuZXcgSXRlbV9yZXR1cm5faW50KCJDb2RlIiw0 LCBNWVNRTF9UWVBFX0xPTkcpKTsKICAgZmllbGRfbGlzdC5wdXNoX2JhY2sobmV3IEl0ZW1fZW1w dHlfc3RyaW5nKCJNZXNzYWdlIixNWVNRTF9FUlJNU0dfU0laRSkpOwpAQCAtMjIwLDcgKzE5MCw3 IEBAIGJvb2wgbXlzcWxkX3Nob3dfd2FybmluZ3MoVEhEICp0aGQsIHVsb24KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sOjpTRU5EX05VTV9ST1dTIHwgUHJvdG9jb2w6 OlNFTkRfRU9GKSkKICAgICBEQlVHX1JFVFVSTihUUlVFKTsKIAotICBNWVNRTF9FUlJPUiAqZXJy OworICBTUUxfY29uZGl0aW9uICpjb25kOwogICBTRUxFQ1RfTEVYICpzZWw9ICZ0aGQtPmxleC0+ c2VsZWN0X2xleDsKICAgU0VMRUNUX0xFWF9VTklUICp1bml0PSAmdGhkLT5sZXgtPnVuaXQ7CiAg IGhhX3Jvd3MgaWR4PSAwOwpAQCAtMjI4LDI0ICsxOTgsMzAgQEAgYm9vbCBteXNxbGRfc2hvd193 YXJuaW5ncyhUSEQgKnRoZCwgdWxvbgogCiAgIHVuaXQtPnNldF9saW1pdChzZWwpOwogCi0gIExp c3RfaXRlcmF0b3JfZmFzdDxNWVNRTF9FUlJPUj4gaXQodGhkLT53YXJuX2xpc3QpOwotICB3aGls ZSAoKGVycj0gaXQrKykpCisgIExpc3RfaXRlcmF0b3JfZmFzdDxTUUxfY29uZGl0aW9uPiBpdCh0 aGQtPm1haW5fZGEubV9zdG10X2FyZWEud2Fybl9saXN0KTsKKyAgd2hpbGUgKChjb25kPSBpdCsr KSkKICAgewogICAgIC8qIFNraXAgbGV2ZWxzIHRoYXQgdGhlIHVzZXIgaXMgbm90IGludGVyZXN0 ZWQgaW4gKi8KLSAgICBpZiAoIShsZXZlbHNfdG9fc2hvdyAmICgodWxvbmcpIDEgPDwgZXJyLT5s ZXZlbCkpKQorICAgIGlmICghKGxldmVsc190b19zaG93ICYgKCh1bG9uZykgMSA8PCBjb25kLT5n ZXRfbGV2ZWwoKSkpKQogICAgICAgY29udGludWU7CiAgICAgaWYgKCsraWR4IDw9IHVuaXQtPm9m ZnNldF9saW1pdF9jbnQpCiAgICAgICBjb250aW51ZTsKICAgICBpZiAoaWR4ID4gdW5pdC0+c2Vs ZWN0X2xpbWl0X2NudCkKICAgICAgIGJyZWFrOwogICAgIHByb3RvY29sLT5wcmVwYXJlX2Zvcl9y ZXNlbmQoKTsKLSAgICBwcm90b2NvbC0+c3RvcmUod2FybmluZ19sZXZlbF9uYW1lc1tlcnItPmxl dmVsXS5zdHIsCi0JCSAgICB3YXJuaW5nX2xldmVsX25hbWVzW2Vyci0+bGV2ZWxdLmxlbmd0aCwg c3lzdGVtX2NoYXJzZXRfaW5mbyk7Ci0gICAgcHJvdG9jb2wtPnN0b3JlKCh1aW50MzIpIGVyci0+ Y29kZSk7Ci0gICAgcHJvdG9jb2wtPnN0b3JlKGVyci0+bXNnLCBzdHJsZW4oZXJyLT5tc2cpLCBz eXN0ZW1fY2hhcnNldF9pbmZvKTsKKyAgICBwcm90b2NvbC0+c3RvcmUod2FybmluZ19sZXZlbF9u YW1lc1tjb25kLT5nZXRfbGV2ZWwoKV0uc3RyLAorCQkgICAgd2FybmluZ19sZXZlbF9uYW1lc1tj b25kLT5nZXRfbGV2ZWwoKV0ubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fY2hh cnNldF9pbmZvKTsKKyAgICBwcm90b2NvbC0+c3RvcmUoKHVpbnQzMikgY29uZC0+Z2V0X3NxbF9l cnJubygpKTsKKyAgICBwcm90b2NvbC0+c3RvcmUoY29uZC0+Z2V0X21lc3NhZ2VfdGV4dCgpLAor ICAgICAgICAgICAgICAgICAgICBjb25kLT5nZXRfbWVzc2FnZV9vY3RldF9sZW5ndGgoKSwKKyAg ICAgICAgICAgICAgICAgICAgc3lzdGVtX2NoYXJzZXRfaW5mbyk7CiAgICAgaWYgKHByb3RvY29s LT53cml0ZSgpKQogICAgICAgREJVR19SRVRVUk4oVFJVRSk7CiAgIH0KICAgbXlfZW9mKHRoZCk7 CisKKyAgdGhkLT5tYWluX2RhLm1fc3RtdF9hcmVhLnNldF9yZWFkX29ubHkoRkFMU0UpOworCiAg IERCVUdfUkVUVVJOKEZBTFNFKTsKIH0KCj09PSBhZGRlZCBmaWxlICdzcWwvc3FsX2ZpeHN0cmlu Zy5jYycKLS0tIGEvc3FsL3NxbF9maXhzdHJpbmcuY2MJMTk3MC0wMS0wMSAwMDowMDowMCArMDAw MAorKysgYi9zcWwvc3FsX2ZpeHN0cmluZy5jYwkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBA IC0wLDAgKzEsMTU4IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMDggTXlTUUwgQUIKKworICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQSAqLworCisjaW5jbHVkZSAibXlz cWxfcHJpdi5oIgorCitGaXhlZF9zdHJpbmc6On5GaXhlZF9zdHJpbmcoKQore30KKwordm9pZCBG aXhlZF9zdHJpbmc6OnNldChjb25zdCBjaGFyKiBzdHIpCit7CisgIHNldChzdHIsIHN0cmxlbihz dHIpKTsKK30KKwordm9pZCBGaXhlZF9zdHJpbmc6OnNldChjb25zdCBjaGFyKiBzdHIsIHNpemVf dCBsZW4pCit7CisgIHNpemVfdCBudW1jaGFyczsKKyAgc2l6ZV90IHRvX2NvcHk7CisgIENIQVJT RVRfSU5GTyAqY3M9IG1fcGFyYW0tPm1fY3M7CisgIGNvbnN0IGNoYXIgKmVuZD0gc3RyK2xlbjsK KworICBudW1jaGFycz0gY3MtPmNzZXQtPm51bWNoYXJzKGNzLCBzdHIsIGVuZCk7CisKKyAgaWYg KG51bWNoYXJzIDw9IG1fcGFyYW0tPm1fbWF4X2NoYXJfbGVuZ3RoKQorICB7CisgICAgdG9fY29w eT0gbGVuOworICAgIG1fdHJ1bmNhdGVkPSBGQUxTRTsKKyAgfQorICBlbHNlCisgIHsKKyAgICB0 b19jb3B5PSBjcy0+Y3NldC0+Y2hhcnBvcyhjcywgc3RyLCBlbmQsIG1fcGFyYW0tPm1fbWF4X2No YXJfbGVuZ3RoKTsKKyAgICBtX3RydW5jYXRlZD0gVFJVRTsKKyAgfQorCisgIHJlc2VydmUodG9f Y29weSArIGNzLT5tYm1pbmxlbik7CisgIGlmIChtX3B0cikKKyAgeworICAgIG1fYnl0ZV9sZW5n dGg9IHRvX2NvcHk7CisgICAgbWVtY3B5KG1fcHRyLCBzdHIsIHRvX2NvcHkpOworICAgIGFkZF9u dWwobV9wdHIgKyB0b19jb3B5KTsKKyAgfQorfQorCit2b2lkIEZpeGVkX3N0cmluZzo6c2V0KGNv bnN0IFN0cmluZyogc3RyKQoreworICBzZXQoc3RyLT5wdHIoKSwgc3RyLT5sZW5ndGgoKSwgKENI QVJTRVRfSU5GTyopIHN0ci0+Y2hhcnNldCgpKTsKK30KKwordm9pZCBGaXhlZF9zdHJpbmc6OnNl dChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4sIGNvbnN0IENIQVJTRVRfSU5GTyAqc3RyX2Nz KQoreworICB1aW50MzIgZHVtbXlfb2Zmc2V0OworICBzaXplX3QgbnVtY2hhcnM7CisgIHNpemVf dCB0b19jb3B5OworICBDSEFSU0VUX0lORk8gKmNzPSBtX3BhcmFtLT5tX2NzOworICBjb25zdCBj aGFyICplbmQ9IHN0ciArIGxlbjsKKworICBudW1jaGFycz0gY3MtPmNzZXQtPm51bWNoYXJzKGNz LCBzdHIsIGVuZCk7CisKKyAgaWYgKG51bWNoYXJzIDw9IG1fcGFyYW0tPm1fbWF4X2NoYXJfbGVu Z3RoKQorICB7CisgICAgdG9fY29weT0gbGVuOworICAgIG1fdHJ1bmNhdGVkPSBGQUxTRTsKKyAg fQorICBlbHNlCisgIHsKKyAgICBudW1jaGFycz0gbV9wYXJhbS0+bV9tYXhfY2hhcl9sZW5ndGg7 CisgICAgdG9fY29weT0gY3MtPmNzZXQtPmNoYXJwb3MoY3MsIHN0ciwgZW5kLCBudW1jaGFycyk7 CisgICAgbV90cnVuY2F0ZWQ9IFRSVUU7CisgIH0KKworICBpZiAoU3RyaW5nOjpuZWVkc19jb252 ZXJzaW9uKHRvX2NvcHksIChDSEFSU0VUX0lORk8qKSBzdHJfY3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKENIQVJTRVRfSU5GTyopIGNzLCAmIGR1bW15X29mZnNldCkpCisgIHsK KyAgICBzaXplX3QgZGVzdF9sZW49IG51bWNoYXJzICogY3MtPm1ibWF4bGVuOworICAgIHJlc2Vy dmUoZGVzdF9sZW4gKyBjcy0+bWJtaW5sZW4pOworICAgIGlmIChtX3B0cikKKyAgICB7CisgICAg ICBjb25zdCBjaGFyKiB3ZWxsX2Zvcm1lZF9lcnJvcl9wb3M7CisgICAgICBjb25zdCBjaGFyKiBj YW5ub3RfY29udmVydF9lcnJvcl9wb3M7CisgICAgICBjb25zdCBjaGFyKiBmcm9tX2VuZF9wb3M7 CisKKyAgICAgIG1fYnl0ZV9sZW5ndGg9IHdlbGxfZm9ybWVkX2NvcHlfbmNoYXJzKChDSEFSU0VU X0lORk8gKikgY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtX3B0ciwgZGVzdF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoQ0hBUlNFVF9JTkZPKikgc3RyX2NzLCBzdHIsIGxlbiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWNoYXJzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiB3ZWxsX2Zvcm1lZF9lcnJvcl9wb3MsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIGNhbm5vdF9jb252 ZXJ0X2Vycm9yX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYgZnJvbV9lbmRfcG9zKTsKKyAgICAgIGFkZF9udWwobV9wdHIgKyBtX2J5dGVfbGVuZ3Ro KTsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgcmVzZXJ2ZSh0b19jb3B5ICsgY3MtPm1i bWlubGVuKTsKKyAgICBpZiAobV9wdHIpCisgICAgeworICAgICAgbV9ieXRlX2xlbmd0aD0gdG9f Y29weTsKKyAgICAgIG1lbWNweShtX3B0ciwgc3RyLCB0b19jb3B5KTsKKyAgICAgIGFkZF9udWwo bV9wdHIgKyB0b19jb3B5KTsKKyAgICB9CisgIH0KK30KKwordm9pZCBGaXhlZF9zdHJpbmc6OmFk ZF9udWwoY2hhciAqcHRyKQoreworICAvKgorICAgIEFzc3VtZSB0aGF0IHRoZSBOVUwgY2hhcmFj dGVyIGlzIGFsd2F5cyBlbmNvZGVkIHVzaW5nIDAgYnl0ZXMsCisgICAgYW5kIGlzIGFsd2F5cyB1 c2luZyBhbiBlbmNvZGluZyBvZiB0aGUgbWluaW11bSBsZW5ndGguCisgICAgVmVyaWZpZWQgZm9y OgorICAgIC0gVVRGOCA6IE5VTCA9IDEgemVybyBieXRlCisgICAgLSBsYXRpbiogOiBOVUwgPSAx IHplcm8gYnl0ZQorICAgIC0gVVRGMTYgOiBOVUwgPSAyIHplcm8gYnl0ZQorICAgIC0gVVRGMzIg OiBOVUwgPSA0IHplcm8gYnl0ZQorICAqLworICBzd2l0Y2ggKG1fcGFyYW0tPm1fY3MtPm1ibWlu bGVuKQorICB7CisgIGNhc2UgNDogKnB0cisrID0gJ1wwJzsgLyogZmFsbCB0aHJvdWdoICovCisg IGNhc2UgMzogKnB0cisrID0gJ1wwJzsgLyogZmFsbCB0aHJvdWdoICovCisgIGNhc2UgMjogKnB0 cisrID0gJ1wwJzsgLyogZmFsbCB0aHJvdWdoICovCisgIGNhc2UgMTogKnB0cisrID0gJ1wwJzsg YnJlYWs7CisgIGRlZmF1bHQ6IERCVUdfQVNTRVJUKEZBTFNFKTsgYnJlYWs7CisgIH0KK30KKwor dm9pZCBGaXhlZF9zdHJpbmc6OmNvcHkoY29uc3QgRml4ZWRfc3RyaW5nICpzdHIpCit7CisgIERC VUdfQVNTRVJUKG1fcGFyYW0tPm1fY3MtPm51bWJlciA9PSBzdHItPm1fcGFyYW0tPm1fY3MtPm51 bWJlcik7CisKKyAgc2V0KHN0ci0+bV9wdHIsIHN0ci0+bV9ieXRlX2xlbmd0aCk7Cit9CisKK3Zv aWQgRml4ZWRfc3RyaW5nOjpyZXNlcnZlKHNpemVfdCBsZW4pCit7CisgIGlmICgobV9wdHIgIT0g TlVMTCkgJiYgKG1fYWxsb2NhdGVkX2xlbmd0aCA+PSBsZW4pKQorICAgIHJldHVybjsKKworICBt X3B0cj0gKGNoYXIqKSBhbGxvY19yb290KG1fbWVtX3Jvb3QsIGxlbik7CisgIG1fYWxsb2NhdGVk X2xlbmd0aD0gKG1fcHRyID8gbGVuIDogMCk7Cit9CisKK2NvbnN0IEZpeGVkX3N0cmluZ19wYXJh bSBVVEY4U3RyaW5nNjQ6OnBhcmFtcz0KK3s2NCwgJiBteV9jaGFyc2V0X3V0ZjhfYmluIH07CisK K2NvbnN0IEZpeGVkX3N0cmluZ19wYXJhbSBVVEY4U3RyaW5nMTI4OjpwYXJhbXM9Cit7MTI4LCAm IG15X2NoYXJzZXRfdXRmOF9iaW4gfTsKKworCgo9PT0gYWRkZWQgZmlsZSAnc3FsL3NxbF9maXhz dHJpbmcuaCcKLS0tIGEvc3FsL3NxbF9maXhzdHJpbmcuaAkxOTcwLTAxLTAxIDAwOjAwOjAwICsw MDAwCisrKyBiL3NxbC9zcWxfZml4c3RyaW5nLmgJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApA QCAtMCwwICsxLDIyNCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDA4IE15U1FMIEFCCisKKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwg U3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgKi8KKworI2lmbmRlZiBTUUxf RklYU1RSSU5HX0gKKyNkZWZpbmUgU1FMX0ZJWFNUUklOR19ICisKKy8qKgorICBUaGlzIHN0cnVj dHVyZSByZXByZXNlbnRzIHRoZSBwYXJhbWV0cml6ZWQgbWV0YWRhdGEgdXNlZAorICBpbiBjbGFz cyBGaXhlZF9zdHJpbmcuCisgIFRoZSBtZXRhZGF0YSBjb25zaXN0IG9mICdOJyBhbmQgJ0MnIGlu CisgIFZBUkNIQVIoTikgQ0hBUkFDVEVSIFNFVCBDCisgIE11bHRpcGxlIGluc3RhbmNlcyBvZiBG aXhlZF9zdHJpbmcgdHlwaWNhbGx5IHNoYXJlIHRoZSBzYW1lCisgIEZpeGVkX3N0cmluZ19wYXJh bSBpbnN0YW5jZS4KKyovCitzdHJ1Y3QgRml4ZWRfc3RyaW5nX3BhcmFtCit7CisgIC8qKgorICAg IE1heGltdW0gbGVuZ3RoIG9mIGEgVkFSQ0hBUiBzdHJpbmcgKE4pLCBpbiBWQVJDSEFSKE4pCisg ICovCisgIHNpemVfdCBtX21heF9jaGFyX2xlbmd0aDsKKyAgLyoqCisgICAgQ2hhcmFjdGVyIHNl dCBvZiBhIFZBUkNIQVIgc3RyaW5nIChDKSwgaW4gVkFSQ0hBUihOKSBDSEFSQUNURVIgU0VUIEMu CisgICovCisgIENIQVJTRVRfSU5GTyAqbV9jczsKK307CisKKy8qKgorICBUaGlzIGNsYXNzIHJl cHJlc2VudHMgYSBWQVJDSEFSIHN0cmluZyBvciBhIGdpdmVuIGZpeGVkIG1heGltdW0gc2l6ZSwK KyAgYW5kIG9mIGEgZ2l2ZW4gZml4ZWQgY2hhcmFjdGVyIHNldC4KKyAgVGhlIHNpemUgYW5kIGNo YXJhY3RlciBzZXQgYXJlIGltbXV0YWJsZS4KKyAgTWVtb3J5IHVzZWQgdG8gcmVwcmVzZW50IHRo ZSBzdHJpbmcgaXMgYWxsb2NhdGVkIGZyb20gYSBwcm92aWRlZCBtZW1vcnkgcm9vdC4KKyovCitj bGFzcyBGaXhlZF9zdHJpbmcKK3sKK3B1YmxpYzoKKyAgLyoqCisgICAgQ29uc3RydWN0b3IuCisg ICAgQHBhcmFtIHBhcmFtIEltbXV0YWJsZSBzaXplIGFuZCBjaGFyYWN0ZXIgc2V0IHBhcmFtZXRl cnMKKyAgICBAcGFyYW0gbWVtX3Jvb3QgTWVtb3J5IHJvb3QgdG8gdXNlIHRvIHJlcHJlc2VudCB0 aGUgc3RyaW5nIHZhbHVlCisgICovCisgIEZpeGVkX3N0cmluZyhjb25zdCBGaXhlZF9zdHJpbmdf cGFyYW0gKnBhcmFtLCBNRU1fUk9PVCAqbWVtX3Jvb3QpCisgICAgOiBtX3BhcmFtKHBhcmFtKSwK KyAgICBtX21lbV9yb290KG1lbV9yb290KSwKKyAgICBtX2J5dGVfbGVuZ3RoKDApLAorICAgIG1f YWxsb2NhdGVkX2xlbmd0aCgwKSwKKyAgICBtX3RydW5jYXRlZChGQUxTRSksCisgICAgbV9wdHIo TlVMTCkKKyAge30KKworICAvKiogRGVzdHJ1Y3Rvci4gKi8KKyAgfkZpeGVkX3N0cmluZygpOwor CisgIC8qKgorICAgIFNldCB0aGUgc3RyaW5nIHZhbHVlLgorICAgIEBwYXJhbSBzdHIgdGhlIHZh bHVlIHRvIHNldCwgZXhwcmVzc2VkIGluIHRoZSBjaGFyYWN0ZXIgc2V0IG9mCisgICAgRml4ZWRf c3RyaW5nX3BhcmFtCisgICovCisgIHZvaWQgc2V0KGNvbnN0IGNoYXIqIHN0cik7CisKKyAgLyoq CisgICAgU2V0IHRoZSBzdHJpbmcgdmFsdWUuCisgICAgQHBhcmFtIHN0ciB0aGUgdmFsdWUgdG8g c2V0LCBleHByZXNzZWQgaW4gdGhlIGNoYXJhY3RlciBzZXQgb2YKKyAgICBGaXhlZF9zdHJpbmdf cGFyYW0KKyAgICBAcGFyYW0gbGVuIGxlbmd0aCwgaW4gYnl0ZXMsIG9mIHN0cgorICAqLworICB2 b2lkIHNldChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pOworCisgIC8qKgorICAgIFNldCB0 aGUgc3RyaW5nIHZhbHVlLCB3aXRoIGNoYXJhY3RlciBzZXQgY29udmVyc2lvbiBpZiBuZWNlc3Nh cnkuCisgICAgQHBhcmFtIHN0ciB0aGUgdmFsdWUgdG8gc2V0LCBleHByZXNzZWQgaW4gYW55IGNo YXJhY3RlciBzZXQKKyAgKi8KKyAgdm9pZCBzZXQoY29uc3QgU3RyaW5nKiBzdHIpOworCisgIC8q KgorICAgIFNldCB0aGUgc3RyaW5nIHZhbHVlLCB3aXRoIGNoYXJhY3RlciBzZXQgY29udmVyc2lv biBpZiBuZWNlc3NhcnkuCisgICAgQHBhcmFtIHN0ciB0aGUgdmFsdWUgdG8gc2V0LCBleHByZXNz ZWQgaW4gY2hhcmFjdGVyIHNldCBzdHJfY3MKKyAgICBAcGFyYW0gbGVuIGxlbmd0aCwgaW4gYnl0 ZXMsIG9mIHN0cgorICAgIEBwYXJhbSBzdHJfY3MgY2hhcmFjdGVyIHNldCBvZiBzdHIKKyAgKi8K KyAgdm9pZCBzZXQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuLCBjb25zdCBDSEFSU0VUX0lO Rk8gKnN0cl9jcyk7CisKKyAgLyoqCisgICAgUHJlZGljYXRlLCBpbmRpY2F0ZXMgaWYgdGhlIHN0 cmluZyBpcyB0cnVuY2F0ZWQgdG8gdGhlIG1heGltdW0gc2l6ZS4KKyAgICBAcmV0dXJuIHRydWUg aWYgdGhlIHN0cmluZyBpcyB0cnVuY2F0ZWQKKyAgKi8KKyAgYm9vbCBpc190cnVuY2F0ZWQoKSBj b25zdAorICB7IHJldHVybiBtX3RydW5jYXRlZDsgfQorCisgIC8qKgorICAgIEFjY2VzcyB0byB0 aGUgQyBwb2ludGVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcuCisgICAgQHJldHVybiBh IE5VTCB0ZXJtaW5hdGVkIEMgc3RyaW5nLCBpbiB0aGUgY2hhcmFjdGVyIHNldCBvZgorICAgIEZp eGVkX3N0cmluZ19wYXJhbQorICAqLworICBjb25zdCBjaGFyKiBwdHIoKSBjb25zdAorICB7IHJl dHVybiBtX3B0cjsgfQorCisgIC8qKgorICAgIExlbmd0aCwgaW4gYnl0ZXMsIG9mIHRoZSBDIHN0 cmluZyByZXByZXNlbnRhdGlvbiwKKyAgICBleGNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIE5VTCBj aGFyYWN0ZXIuCisgICAgQHJldHVybiBUaGUgc3RyaW5nIGxlbmd0aCBpbiBieXRlcworICAqLwor ICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKKyAgeyByZXR1cm4gbV9ieXRlX2xlbmd0aDsgfQorCisg IC8qKgorICAgIENoYXJhY3RlciBzZXQgb2YgdGhlIHN0cmluZy4KKyAgICBAcmV0dXJuIHRoZSBz dHJpbmcgY2hhcmFjdGVyIHNldAorICAqLworICBjb25zdCBDSEFSU0VUX0lORk8gKmNoYXJzZXQo KSBjb25zdAorICB7IHJldHVybiBtX3BhcmFtLT5tX2NzOyB9CisKKyAgLyoqCisgICAgU2V0IHRo ZSBzdHJpbmcgdmFsdWUgZnJvbSBhbm90aGVyIEZpeGVkX3N0cmluZy4KKyAgICBOb3RlIHRoYXQg dGhlIGNoYXJhY3RlciBzZXQgb2YgdGhpcyBvYmplY3QgYW5kIG9mIHN0ciBtdXN0IGJlIGVxdWFs LgorICAgIEBwYXJhbSBzdHIgdGhlIHN0cmluZyB0byBjb3B5CisgICovCisgIHZvaWQgY29weShj b25zdCBGaXhlZF9zdHJpbmcgKnN0cik7CisKK3ByaXZhdGU6CisgIC8qKgorICAgIEFsbG9jYXRl IG1lbW9yeSBmb3IgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbi4KKyAgICBAcGFyYW0gbGVuIHNp emUgaW4gYnl0ZXMgdG8gYWxsb2NhdGUKKyAgKi8KKyAgdm9pZCByZXNlcnZlKHNpemVfdCBsZW4p OworCisgIC8qKgorICAgIEFkZCBhIE5VTCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgc3Ry aW5nLgorICAgIEBwYXJhbSBwdHIgbG9jYXRpb24gb2YgdGhlIE5VTCBjaGFyYWN0ZXIKKyAgKi8K KyAgdm9pZCBhZGRfbnVsKGNoYXIgKnB0cik7CisKKyAgLyoqCisgICAgSW1tdXRhYmxlIHN0cmlu ZyBwYXJhbWV0ZXJzLgorICAgIFRoZSBzdHJpbmcgcGFyYW1ldGVycyBhcmUgJmx0O04mZ3Q7IGFu ZCAmbHQ7QyZndDsKKyAgICBpbiBhIHBhcmFtZXRyaXplZCBjbGFzcyAnVkFSQ0hBUigmbHQ7TiZn dDspIENIQVJBQ1RFUiBTRVQgJmx0O0MmZ3Q7JworICAqLworICBjb25zdCBGaXhlZF9zdHJpbmdf cGFyYW0gKm1fcGFyYW07CisKKyAgLyoqCisgICAgTWVtb3J5IHJvb3QgdG8gdXNlIHRvIGFsbG9j YXRlIHRoZSBzdHJpbmcgdmFsdWUuCisgICovCisgIE1FTV9ST09UICptX21lbV9yb290OworCisg IC8qKgorICAgIExlbmd0aCBvZiB0aGUgQyBzdHJpbmcgcmVwcmVzZW50YXRpb24sIGluIGJ5dGVz LAorICAgIGV4Y2x1ZGluZyB0aGUgdGVybWluYXRpbmcgTlVMIGNoYXJhY3Rlci4KKyAgKi8KKyAg c2l6ZV90IG1fYnl0ZV9sZW5ndGg7CisKKyAgLyoqCisgICAgU2l6ZSwgaW4gYnl0ZXMsIG9mIHRo ZSBtZW1vcnkgYWxsb2NhdGVkLgorICAqLworICBzaXplX3QgbV9hbGxvY2F0ZWRfbGVuZ3RoOwor CisgIC8qKgorICAgIFRydWUgaWYgdGhlIHN0cmluZyB3YXMgdHJ1bmNhdGVkLgorICAgIE5vdGUg dGhhdCBubyB3YXJuaW5ncyBvciBlcnJvcnMgYXJlIGdlbmVyYXRlZCwKKyAgICB0aGUgc3RyaW5n IGlzIHRydW5jYXRlZCBzaWxlbnRseS4KKyAgKi8KKyAgYm9vbCBtX3RydW5jYXRlZDsKKworICAv KioKKyAgICBDIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzdHJpbmcsIE5VTCB0ZXJtaW5hdGVkLgor ICAqLworICBjaGFyICogbV9wdHI7Cit9OworCisvKioKKyAgVGhpcyBjbGFzcyByZXByZXNlbnRz IGEgJ1ZBUkNIQVIoNjQpIENIQVJBQ1RFUiBTRVQgVVRGOCcgc3RyaW5nIHZhbHVlLgorKi8KK2Ns YXNzIFVURjhTdHJpbmc2NCA6IHB1YmxpYyBGaXhlZF9zdHJpbmcKK3sKK3B1YmxpYzoKKyAgLyoq CisgICAgQ29uc3RydWN0b3IuCisgICAgQHBhcmFtIHJvb3QgVGhlIG1lbW9yeSByb290IHRvIHVz ZSB0byByZXByZXNlbnQgdGhlIHN0cmluZyB2YWx1ZS4KKyAgKi8KKyAgVVRGOFN0cmluZzY0KE1F TV9ST09UICpyb290KQorICAgIDogRml4ZWRfc3RyaW5nKCYgcGFyYW1zLCByb290KQorICB7fQor CisgIH5VVEY4U3RyaW5nNjQoKQorICB7fQorCitwcml2YXRlOgorICBzdGF0aWMgY29uc3QgRml4 ZWRfc3RyaW5nX3BhcmFtIHBhcmFtczsKK307CisKKy8qKgorICBUaGlzIGNsYXNzIHJlcHJlc2Vu dHMgYSAnVkFSQ0hBUigxMjgpIENIQVJBQ1RFUiBTRVQgVVRGOCcgc3RyaW5nIHZhbHVlLgorKi8K K2NsYXNzIFVURjhTdHJpbmcxMjggOiBwdWJsaWMgRml4ZWRfc3RyaW5nCit7CitwdWJsaWM6Cisg IC8qKgorICAgIENvbnN0cnVjdG9yLgorICAgIEBwYXJhbSByb290IFRoZSBtZW1vcnkgcm9vdCB0 byB1c2UgdG8gcmVwcmVzZW50IHRoZSBzdHJpbmcgdmFsdWUuCisgICovCisgIFVURjhTdHJpbmcx MjgoTUVNX1JPT1QgKnJvb3QpCisgICAgOiBGaXhlZF9zdHJpbmcoJiBwYXJhbXMsIHJvb3QpCisg IHt9CisKKyAgflVURjhTdHJpbmcxMjgoKQorICB7fQorCitwcml2YXRlOgorICBzdGF0aWMgY29u c3QgRml4ZWRfc3RyaW5nX3BhcmFtIHBhcmFtczsKK307CisKKyNlbmRpZgorCisKCj09PSBtb2Rp ZmllZCBmaWxlICdzcWwvc3FsX2luc2VydC5jYycKLS0tIGEvc3FsL3NxbF9pbnNlcnQuY2MJMjAw OC0wNy0yMSAwMzo1NTowOSArMDAwMAorKysgYi9zcWwvc3FsX2luc2VydC5jYwkyMDA4LTA4LTI3 IDIyOjE0OjAzICswMDAwCkBAIC0yMzE0LDggKzIzMTQsOCBAQCBwdGhyZWFkX2hhbmRsZXJfdCBo YW5kbGVfZGVsYXllZF9pbnNlcnQoCiAgIGlmIChteV90aHJlYWRfaW5pdCgpKQogICB7CiAgICAg LyogQ2FuJ3QgdXNlIG15X2Vycm9yIHNpbmNlIHN0b3JlX2dsb2JhbHMgaGFzIG5vdCB5ZXQgYmVl biBjYWxsZWQgKi8KLSAgICB0aGQtPm1haW5fZGEuc2V0X2Vycm9yX3N0YXR1cyh0aGQsIEVSX09V VF9PRl9SRVNPVVJDRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVIoRVJf T1VUX09GX1JFU09VUkNFUykpOworICAgIHRoZC0+bWFpbl9kYS5zZXRfZGVmYXVsdF9lcnJvcl9z dGF0dXModGhkLCBFUl9PVVRfT0ZfUkVTT1VSQ0VTLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRVIoRVJfT1VUX09GX1JFU09VUkNFUykpOwogICAgIGdvdG8gZW5k OwogICB9CiAjZW5kaWYKQEAgLTIzMjUsOCArMjMyNSw4IEBAIHB0aHJlYWRfaGFuZGxlcl90IGhh bmRsZV9kZWxheWVkX2luc2VydCgKICAgaWYgKGluaXRfdGhyX2xvY2soKSB8fCB0aGQtPnN0b3Jl X2dsb2JhbHMoKSkKICAgewogICAgIC8qIENhbid0IHVzZSBteV9lcnJvciBzaW5jZSBzdG9yZV9n bG9iYWxzIGhhcyBwZXJoYXBzIGZhaWxlZCAqLwotICAgIHRoZC0+bWFpbl9kYS5zZXRfZXJyb3Jf c3RhdHVzKHRoZCwgRVJfT1VUX09GX1JFU09VUkNFUywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFUihFUl9PVVRfT0ZfUkVTT1VSQ0VTKSk7CisgICAgdGhkLT5tYWluX2RhLnNl dF9kZWZhdWx0X2Vycm9yX3N0YXR1cyh0aGQsIEVSX09VVF9PRl9SRVNPVVJDRVMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUihFUl9PVVRfT0ZfUkVTT1VSQ0VT KSk7CiAgICAgdGhkLT5mYXRhbF9lcnJvcigpOwogICAgIGdvdG8gZXJyOwogICB9Cgo9PT0gbW9k aWZpZWQgZmlsZSAnc3FsL3NxbF9sZXguaCcKLS0tIGEvc3FsL3NxbF9sZXguaAkyMDA4LTA4LTE4 IDE4OjEyOjQ2ICswMDAwCisrKyBiL3NxbC9zcWxfbGV4LmgJMjAwOC0wOC0yNyAyMjoxNDowMyAr MDAwMApAQCAtMTIyLDYgKzEyMiw3IEBAIGVudW0gZW51bV9zcWxfY29tbWFuZCB7CiAgIFNRTENP TV9CQUNLVVBfVEVTVCwKICNlbmRpZgogICBTUUxDT01fU0hPV19QUk9GSUxFLCBTUUxDT01fU0hP V19QUk9GSUxFUywKKyAgU1FMQ09NX1NJR05BTCwgU1FMQ09NX1JFU0lHTkFMLAogCiAgIC8qCiAg ICAgV2hlbiBhIGNvbW1hbmQgaXMgYWRkZWQgaGVyZSwgYmUgc3VyZSBpdCdzIGFsc28gYWRkZWQg aW4gbXlzcWxkLmNjCkBAIC0xNTEwLDYgKzE1MTEsNjQgQEAgcHVibGljOgogICBDSEFSU0VUX0lO Rk8gKm1fdW5kZXJzY29yZV9jczsKIH07CiAKK3N0cnVjdCBzdF9sZXg7CisKKy8qKgorICBBYnN0 cmFjdCByZXByZXNlbnRhdGlvbiBvZiBhIHN0YXRlbWVudC4KKyAgVGhpcyBjbGFzcyBpcyBhbiBp bnRlcmZhY2UgYmV0d2VlbiB0aGUgcGFyc2VyIGFuZCB0aGUgcnVudGltZS4KKyAgVGhlIHBhcnNl ciBidWlsZHMgdGhlIGFwcHJvcHJpYXRlIHN1YiBjbGFzc2VzIG9mIFNRTENPTV9zdGF0ZW1lbnQK KyAgdG8gcmVwcmVzZW50IGEgU1FMIHN0YXRlbWVudCBpbiB0aGUgcGFyc2VkIHRyZWUuCisgIFRo ZSBleGVjdXRlKCkgbWV0aG9kIGluIHRoZSBzdWIgY2xhc3NlcyBjb250YWluIHRoZSBydW50aW1l IGltcGxlbWVudGF0aW9uLgorICBOb3RlIHRoYXQgdGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBmb3Ig U1FMIHN0YXRlbWVudCByZWNlbnRseSBpbXBsZW1lbnRlZCwKKyAgdGhlIGNvZGUgZm9yIG9sZGVy IHN0YXRlbWVudHMgdGVuZCB0byBsb2FkIHRoZSBMRVggc3RydWN0dXJlIHdpdGggbW9yZQorICBh dHRyaWJ1dGVzIGluc3RlYWQuCisgIFRoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW1wbGVtZW50IG5l dyBzdGF0ZW1lbnRzIGlzIHRvIHN1Yi1jbGFzcworICBTUUxDT01fc3RhdGVtZW50LCBhcyB0aGlz IGltcHJvdmVzIGNvZGUgbW9kdWxhcml0eSAoc2VlIHRoZSAnYmlnIHN3aXRjaCcgaW4KKyAgZGlz cGF0Y2hfY29tbWFuZCgpKSwgYW5kIGRlY3JlYXNlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBMRVgg c3RydWN0dXJlCisgICh0aGVyZWZvcmUgc2F2aW5nIG1lbW9yeSBpbiBzdG9yZWQgcHJvZ3JhbXMp LgorKi8KK2NsYXNzIFNRTENPTV9zdGF0ZW1lbnQgOiBwdWJsaWMgU3FsX2FsbG9jCit7CitwdWJs aWM6CisgIC8qKgorICAgIEV4ZWN1dGUgdGhpcyBTUUwgc3RhdGVtZW50LgorICAgIEBwYXJhbSB0 aGQgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgIEByZXR1cm4gMCBvbiBzdWNjZXNzLgorICAqLwor ICB2aXJ0dWFsIGludCBleGVjdXRlKFRIRCAqdGhkKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgLyoq CisgICAgQ29uc3RydWN0b3IuCisgICAgQHBhcmFtIGxleCB0aGUgTEVYIHN0cnVjdHVyZSB0aGF0 IHJlcHJlc2VudHMgcGFydHMgb2YgdGhpcyBzdGF0ZW1lbnQuCisgICovCisgIFNRTENPTV9zdGF0 ZW1lbnQoc3RydWN0IHN0X2xleCAqbGV4KQorICAgIDogbV9sZXgobGV4KQorICB7fQorCisgIC8q KiBEZXN0cnVjdG9yLiAqLworICB2aXJ0dWFsIH5TUUxDT01fc3RhdGVtZW50KCkKKyAgeworICAg IC8qCisgICAgICBTUUxDT01fc3RhdGVtZW50IG9iamVjdHMgYXJlIGFsbG9jYXRlZCBpbiB0aGQt Pm1lbV9yb290LgorICAgICAgSW4gTXlTUUwsIHRoZSBDKysgZGVzdHJ1Y3RvciBpcyBuZXZlciBj YWxsZWQsIHRoZSB1bmRlcmx5aW5nIE1FTV9ST09UIGlzCisgICAgICBzaW1wbHkgZGVzdHJveWVk IGluc3RlYWQuCisgICAgICBEbyBub3QgcmVseSBvbiB0aGUgZGVzdHJ1Y3RvciBmb3IgYW55IGNs ZWFudXAuCisgICAgKi8KKyAgICBEQlVHX0FTU0VSVChGQUxTRSk7CisgIH0KKworcHJvdGVjdGVk OgorICAvKioKKyAgICBUaGUgbGVnYWN5IExFWCBzdHJ1Y3R1cmUgZm9yIHRoaXMgc3RhdGVtZW50 LgorICAgIFRoZSBMRVggc3RydWN0dXJlIGNvbnRhaW5zIHRoZSBleGlzdGluZyBwcm9wZXJ0aWVz IG9mIHRoZSBwYXJzZWQgdHJlZS4KKyAgICBUT0RPOiB3aXRoIHRpbWUsIGF0dHJpYnV0ZXMgZnJv bSBMRVggc2hvdWxkIG1vdmUgdG8gc3ViIGNsYXNzZXMgb2YKKyAgICBTUUxDT01fc3RhdGVtZW50 LCBzbyB0aGF0IHRoZSBwYXJzZXIgb25seSBidWlsZHMgU1FMQ09NX3N0YXRlbWVudCBvYmplY3Rz CisgICAgd2l0aCB0aGUgbWluaW11bSBzZXQgb2YgYXR0cmlidXRlcywgaW5zdGVhZCBvZiBhIExF WCBzdHJ1Y3R1cmUgdGhhdAorICAgIGNvbnRhaW5zIHRoZSBjb2xsZWN0aW9uIG9mIGV2ZXJ5IHBv c3NpYmxlIGF0dHJpYnV0ZS4KKyAgKi8KKyAgc3RydWN0IHN0X2xleCAqbV9sZXg7Cit9OwogCiAv KiBUaGUgc3RhdGUgb2YgdGhlIGxleCBwYXJzaW5nLiBUaGlzIGlzIHNhdmVkIGluIHRoZSBUSEQg c3RydWN0ICovCiAKQEAgLTE2MTIsNiArMTY3MSw5IEBAIHR5cGVkZWYgc3RydWN0IHN0X2xleCA6 IHB1YmxpYyBRdWVyeV90YWIKICAgKi8KICAgbmVzdGluZ19tYXAgYWxsb3dfc3VtX2Z1bmM7CiAg IGVudW1fc3FsX2NvbW1hbmQgc3FsX2NvbW1hbmQ7CisKKyAgU1FMQ09NX3N0YXRlbWVudCAqbV9z dG10OworCiAgIC8qCiAgICAgVXN1YWxseSBgZXhwcmAgcnVsZSBvZiB5YWNjIGlzIHF1aXRlIHJl dXNlZCBidXQgc29tZSBjb21tYW5kcyBiZXR0ZXIKICAgICBub3Qgc3VwcG9ydCBzdWJxdWVyaWVz IHdoaWNoIGNvbWVzIHN0YW5kYXJkIHdpdGggdGhpcyBydWxlLCBsaWtlCkBAIC0xODc3LDYgKzE5 MzksMzYgQEAgdHlwZWRlZiBzdHJ1Y3Qgc3RfbGV4IDogcHVibGljIFF1ZXJ5X3RhYgogCiAKIC8q KgorICBTZXRfc2lnbmFsX2luZm9ybWF0aW9uIGlzIGEgY29udGFpbmVyIHVzZWQgaW4gdGhlIHBh cnNlZCB0cmVlIHRvIHJlcHJlc2VudAorICB0aGUgY29sbGVjdGlvbiBvZiBhc3NpZ25tZW50cyB0 byBjb25kaXRpb24gaXRlbXMgaW4gdGhlIFNJR05BTCBhbmQgUkVTSUdOQUwKKyAgc3RhdGVtZW50 cy4KKyovCitjbGFzcyBTZXRfc2lnbmFsX2luZm9ybWF0aW9uCit7CitwdWJsaWM6CisgIC8qKiBD b25zdHJ1Y3Rvci4gKi8KKyAgU2V0X3NpZ25hbF9pbmZvcm1hdGlvbigpOworCisgIC8qKiBDb3B5 IGNvbnN0cnVjdG9yLiAqLworICBTZXRfc2lnbmFsX2luZm9ybWF0aW9uKGNvbnN0IFNldF9zaWdu YWxfaW5mb3JtYXRpb24mIHNldCk7CisKKyAgLyoqIERlc3RydWN0b3IuICovCisgIH5TZXRfc2ln bmFsX2luZm9ybWF0aW9uKCkKKyAge30KKworICAvKiogQ2xlYXIgYWxsIGl0ZW1zLiAqLworICB2 b2lkIGNsZWFyKCk7CisKKyAgLyoqCisgICAgRm9yIGVhY2ggY29udGl0aW9uIGl0ZW0gYXNzaWdu bWVudCwgbV9pdGVtW10gY29udGFpbnMgdGhlIHBhcnNlZCB0cmVlCisgICAgdGhhdCByZXByZXNl bnRzIHRoZSBleHByZXNzaW9uIGFzc2lnbmVkLCBpZiBhbnkuCisgICAgbV9pdGVtW10gaXMgYW4g YXJyYXkgaW5kZXhlZCBieSBEaWFnX2NvbmRpdGlvbl9pdGVtX25hbWUuCisgICovCisgIEl0ZW0g Km1faXRlbVtMQVNUX0RJQUdfU0VUX1BST1BFUlRZKzFdOworfTsKKworCisvKioKICAgVGhlIGlu dGVybmFsIHN0YXRlIG9mIHRoZSBzeW50YXggcGFyc2VyLgogICBUaGlzIG9iamVjdCBpcyBvbmx5 IGF2YWlsYWJsZSBkdXJpbmcgcGFyc2luZywKICAgYW5kIGlzIHByaXZhdGUgdG8gdGhlIHN5bnRh eCBwYXJzZXIgaW1wbGVtZW50YXRpb24gKHNxbF95YWNjLnl5KS4KQEAgLTE5MDIsNiArMTk5NCwx MiBAQCBwdWJsaWM6CiAgICovCiAgIHVjaGFyICp5YWNjX3l5dnM7CiAKKyAgLyoqCisgICAgRnJh Z21lbnRzIG9mIHBhcnNlZCB0cmVlLAorICAgIHVzZWQgZHVyaW5nIHRoZSBwYXJzaW5nIG9mIFNJ R05BTCBhbmQgUkVTSUdOQUwuCisgICovCisgIFNldF9zaWduYWxfaW5mb3JtYXRpb24gbV9zZXRf c2lnbmFsX2luZm87CisKICAgLyoKICAgICBUT0RPOiBtb3ZlIG1vcmUgYXR0cmlidXRlcyBmcm9t IHRoZSBMRVggc3RydWN0dXJlIGhlcmUuCiAgICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3Nx bF9wYXJzZS5jYycKLS0tIGEvc3FsL3NxbF9wYXJzZS5jYwkyMDA4LTA4LTI1IDEyOjI1OjA3ICsw MDAwCisrKyBiL3NxbC9zcWxfcGFyc2UuY2MJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAt MzIwLDggKzMyMCw4IEBAIHZvaWQgaW5pdF91cGRhdGVfcXVlcmllcyh2b2lkKQogICBzcWxfY29t bWFuZF9mbGFnc1tTUUxDT01fU0hPV19BVVRIT1JTXT0gQ0ZfU1RBVFVTX0NPTU1BTkQ7CiAgIHNx bF9jb21tYW5kX2ZsYWdzW1NRTENPTV9TSE9XX0NPTlRSSUJVVE9SU109IENGX1NUQVRVU19DT01N QU5EOwogICBzcWxfY29tbWFuZF9mbGFnc1tTUUxDT01fU0hPV19QUklWSUxFR0VTXT0gQ0ZfU1RB VFVTX0NPTU1BTkQ7Ci0gIHNxbF9jb21tYW5kX2ZsYWdzW1NRTENPTV9TSE9XX1dBUk5TXT0gQ0Zf U1RBVFVTX0NPTU1BTkQ7Ci0gIHNxbF9jb21tYW5kX2ZsYWdzW1NRTENPTV9TSE9XX0VSUk9SU109 IENGX1NUQVRVU19DT01NQU5EOworICBzcWxfY29tbWFuZF9mbGFnc1tTUUxDT01fU0hPV19XQVJO U109IENGX1NUQVRVU19DT01NQU5EIHwgQ0ZfRElBR05PU1RJQ19TVE1UOworICBzcWxfY29tbWFu ZF9mbGFnc1tTUUxDT01fU0hPV19FUlJPUlNdPSBDRl9TVEFUVVNfQ09NTUFORCB8IENGX0RJQUdO T1NUSUNfU1RNVDsKICAgc3FsX2NvbW1hbmRfZmxhZ3NbU1FMQ09NX1NIT1dfRU5HSU5FX1NUQVRV U109IENGX1NUQVRVU19DT01NQU5EOwogICBzcWxfY29tbWFuZF9mbGFnc1tTUUxDT01fU0hPV19F TkdJTkVfTVVURVhdPSBDRl9TVEFUVVNfQ09NTUFORDsKICAgc3FsX2NvbW1hbmRfZmxhZ3NbU1FM Q09NX1NIT1dfRU5HSU5FX0xPR1NdPSBDRl9TVEFUVVNfQ09NTUFORDsKQEAgLTE5NDIsOCArMTk0 MiwxNiBAQCBteXNxbF9leGVjdXRlX2NvbW1hbmQoVEhEICp0aGQpCiAgICAgdmFyaWFibGVzLCBi dXQgZm9yIG5vdyB0aGlzIGlzIHByb2JhYmx5IGdvb2QgZW5vdWdoLgogICAgIERvbid0IHJlc2V0 IHdhcm5pbmdzIHdoZW4gZXhlY3V0aW5nIGEgc3RvcmVkIHJvdXRpbmUuCiAgICovCi0gIGlmICgo YWxsX3RhYmxlcyB8fCAhbGV4LT5pc19zaW5nbGVfbGV2ZWxfc3RtdCgpKSAmJiAhdGhkLT5zcGNv bnQpCi0gICAgbXlzcWxfcmVzZXRfZXJyb3JzKHRoZCwgMCk7CisgIGlmICgoc3FsX2NvbW1hbmRf ZmxhZ3NbbGV4LT5zcWxfY29tbWFuZF0gJiBDRl9ESUFHTk9TVElDX1NUTVQpICE9IDApCisgIHsK KyAgICB0aGQtPm1haW5fZGEubV9zdG10X2FyZWEuc2V0X3JlYWRfb25seShUUlVFKTsKKyAgfQor ICBlbHNlCisgIHsKKyAgICB0aGQtPm1haW5fZGEubV9zdG10X2FyZWEuc2V0X3JlYWRfb25seShG QUxTRSk7CisgICAgaWYgKChhbGxfdGFibGVzIHx8ICFsZXgtPmlzX3NpbmdsZV9sZXZlbF9zdG10 KCkpICYmICF0aGQtPnNwY29udCkKKyAgICAgIG15c3FsX3Jlc2V0X2Vycm9ycyh0aGQsIDApOwor ICB9CiAKICNpZmRlZiBIQVZFX1JFUExJQ0FUSU9OCiAgIGlmICh1bmxpa2VseSh0aGQtPnNsYXZl X3RocmVhZCkpCkBAIC00MjI5LDcgKzQyMzcsNyBAQCBjcmVhdGVfc3BfZXJyb3I6CiAgICAgICAg ICAgSWYgd2FybmluZ3MgaGF2ZSBiZWVuIGNsZWFyZWQsIHdlIGhhdmUgdG8gY2xlYXIgdG90YWxf d2Fybl9jb3VudAogICAgICAgICAgIHRvbywgb3RoZXJ3aXNlIHRoZSBjbGllbnRzIGdldCBjb25m dXNlZC4KIAkgKi8KLQlpZiAodGhkLT53YXJuX2xpc3QuaXNfZW1wdHkoKSkKKwlpZiAodGhkLT5t YWluX2RhLm1fc3RtdF9hcmVhLndhcm5fbGlzdC5pc19lbXB0eSgpKQogCSAgdGhkLT50b3RhbF93 YXJuX2NvdW50PSAwOwogCiAJdGhkLT52YXJpYWJsZXMuc2VsZWN0X2xpbWl0PSBzZWxlY3RfbGlt aXQ7CkBAIC00NzgwLDYgKzQ3ODgsMTEgQEAgY3JlYXRlX3NwX2Vycm9yOgogICAgIG15X29rKHRo ZCwgMSk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBTUUxDT01fU0lHTkFMOgorICBjYXNlIFNR TENPTV9SRVNJR05BTDoKKyAgICBEQlVHX0FTU0VSVChsZXgtPm1fc3RtdCAhPSBOVUxMKTsKKyAg ICByZXM9IGxleC0+bV9zdG10LT5leGVjdXRlKHRoZCk7CisgICAgYnJlYWs7CiAgIGRlZmF1bHQ6 CiAjaWZuZGVmIEVNQkVEREVEX0xJQlJBUlkKICAgICBEQlVHX0FTU0VSVCgwKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIEltcG9zc2libGUgKi8KCj09PSBhZGRlZCBmaWxlICdzcWwv c3FsX3NpZ25hbC5jYycKLS0tIGEvc3FsL3NxbF9zaWduYWwuY2MJMTk3MC0wMS0wMSAwMDowMDow MCArMDAwMAorKysgYi9zcWwvc3FsX3NpZ25hbC5jYwkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAw CkBAIC0wLDAgKzEsNjM4IEBACisvKiBDb3B5cmlnaHQgKEMpIDIwMDggU3VuIE1pY3Jvc3lzdGVt cywgSW5jCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EgKi8K KworI2luY2x1ZGUgIm15c3FsX3ByaXYuaCIKKyNpbmNsdWRlICJzcF9oZWFkLmgiCisjaW5jbHVk ZSAic3BfcGNvbnRleHQuaCIKKyNpbmNsdWRlICJzcF9yY29udGV4dC5oIgorI2luY2x1ZGUgInNx bF9zaWduYWwuaCIKKworLyoKKyAgVGhlIHBhcnNlciBhY2NlcHRzIGFueSBlcnJvciBjb2RlIChk ZXNpcmVkKQorICBUaGUgcnVudGltZSBpbnRlcm5hbGx5IHN1cHBvcnRzIGFueSBlcnJvciBjb2Rl IChkZXNpcmVkKQorICBUaGUgY2xpZW50IHNlcnZlciBwcm90b2NvbCBpcyBsaW1pdGVkIHRvIDE2 IGJpdHMgZXJyb3IgY29kZXMgKHJlc3RyaWN0aW9uKQorICBFbmZvcmNpbmcgdGhlIDY1NTM1IGxp bWl0IGluIHRoZSBydW50aW1lIHVudGlsIHRoZSBwcm90b2NvbCBjYW4gY2hhbmdlLgorKi8KKyNk ZWZpbmUgTUFYX01ZU1FMX0VSUk5PIFVJTlRfTUFYMTYKKworY29uc3QgTEVYX1NUUklORyBEaWFn X2NvbmRpdGlvbl9pdGVtX25hbWVzW109Cit7CisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkNMQVNT X09SSUdJTiIpIH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIlNVQkNMQVNTX09SSUdJTiIpIH0s CisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkNPTlNUUkFJTlRfQ0FUQUxPRyIpIH0sCisgIHsgQ19T VFJJTkdfV0lUSF9MRU4oIkNPTlNUUkFJTlRfU0NIRU1BIikgfSwKKyAgeyBDX1NUUklOR19XSVRI X0xFTigiQ09OU1RSQUlOVF9OQU1FIikgfSwKKyAgeyBDX1NUUklOR19XSVRIX0xFTigiQ0FUQUxP R19OQU1FIikgfSwKKyAgeyBDX1NUUklOR19XSVRIX0xFTigiU0NIRU1BX05BTUUiKSB9LAorICB7 IENfU1RSSU5HX1dJVEhfTEVOKCJUQUJMRV9OQU1FIikgfSwKKyAgeyBDX1NUUklOR19XSVRIX0xF TigiQ09MVU1OX05BTUUiKSB9LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJDVVJTT1JfTkFNRSIp IH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIk1FU1NBR0VfVEVYVCIpIH0sCisgIHsgQ19TVFJJ TkdfV0lUSF9MRU4oIk1ZU1FMX0VSUk5PIikgfSwKKworICB7IENfU1RSSU5HX1dJVEhfTEVOKCJD T05ESVRJT05fSURFTlRJRklFUiIpIH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkNPTkRJVElP Tl9OVU1CRVIiKSB9LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJDT05ORUNUSU9OX05BTUUiKSB9 LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNRVNTQUdFX0xFTkdUSCIpIH0sCisgIHsgQ19TVFJJ TkdfV0lUSF9MRU4oIk1FU1NBR0VfT0NURVRfTEVOR1RIIikgfSwKKyAgeyBDX1NUUklOR19XSVRI X0xFTigiUEFSQU1FVEVSX01PREUiKSB9LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJQQVJBTUVU RVJfTkFNRSIpIH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIlBBUkFNRVRFUl9PUkRJTkFMX1BP U0lUSU9OIikgfSwKKyAgeyBDX1NUUklOR19XSVRIX0xFTigiUkVUVVJORURfU1FMU1RBVEUiKSB9 LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJST1VUSU5FX0NBVEFMT0ciKSB9LAorICB7IENfU1RS SU5HX1dJVEhfTEVOKCJST1VUSU5FX05BTUUiKSB9LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJS T1VUSU5FX1NDSEVNQSIpIH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIlNFUlZFUl9OQU1FIikg fSwKKyAgeyBDX1NUUklOR19XSVRIX0xFTigiU1BFQ0lGSUNfTkFNRSIpIH0sCisgIHsgQ19TVFJJ TkdfV0lUSF9MRU4oIlRSSUdHRVJfQ0FUQUxPRyIpIH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4o IlRSSUdHRVJfTkFNRSIpIH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIlRSSUdHRVJfU0NIRU1B IikgfQorfTsKKworY29uc3QgTEVYX1NUUklORyBEaWFnX3N0YXRlbWVudF9pdGVtX25hbWVzW109 Cit7CisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIk5VTUJFUiIpIH0sCisgIHsgQ19TVFJJTkdfV0lU SF9MRU4oIk1PUkUiKSB9LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJDT01NQU5EX0ZVTkNUSU9O IikgfSwKKyAgeyBDX1NUUklOR19XSVRIX0xFTigiQ09NTUFORF9GVU5DVElPTl9DT0RFIikgfSwK KyAgeyBDX1NUUklOR19XSVRIX0xFTigiRFlOQU1JQ19GVU5DVElPTiIpIH0sCisgIHsgQ19TVFJJ TkdfV0lUSF9MRU4oIkRZTkFNSUNfRlVOQ1RJT05fQ09ERSIpIH0sCisgIHsgQ19TVFJJTkdfV0lU SF9MRU4oIlJPV19DT1VOVCIpIH0sCisgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIlRSQU5TQUNUSU9O U19DT01NSVRURUQiKSB9LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJUUkFOU0FDVElPTlNfUk9M TEVEX0JBQ0siKSB9LAorICB7IENfU1RSSU5HX1dJVEhfTEVOKCJUUkFOU0FDVElPTl9BQ1RJVkUi KSB9Cit9OworCisKK1NRTF9jb25kaXRpb246OlNRTF9jb25kaXRpb24oTUVNX1JPT1QgKm1lbV9y b290KQorIDogU3FsX2FsbG9jKCksCisgICBtX2NsYXNzX29yaWdpbihtZW1fcm9vdCksCisgICBt X3N1YmNsYXNzX29yaWdpbihtZW1fcm9vdCksCisgICBtX2NvbnN0cmFpbnRfY2F0YWxvZyhtZW1f cm9vdCksCisgICBtX2NvbnN0cmFpbnRfc2NoZW1hKG1lbV9yb290KSwKKyAgIG1fY29uc3RyYWlu dF9uYW1lKG1lbV9yb290KSwKKyAgIG1fY2F0YWxvZ19uYW1lKG1lbV9yb290KSwKKyAgIG1fc2No ZW1hX25hbWUobWVtX3Jvb3QpLAorICAgbV90YWJsZV9uYW1lKG1lbV9yb290KSwKKyAgIG1fY29s dW1uX25hbWUobWVtX3Jvb3QpLAorICAgbV9jdXJzb3JfbmFtZShtZW1fcm9vdCksCisgICBtX21l c3NhZ2VfdGV4dCgpLAorICAgbV9tZXNzYWdlX3RleHRfc2V0KEZBTFNFKSwKKyAgIG1fc3FsX2Vy cm5vKDApLAorICAgbV9sZXZlbChNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9FUlJPUiksCisgICBt X2ZsYWdzKDApLAorICAgbV9tZW1fcm9vdChtZW1fcm9vdCkKK3sKKyAgbWVtc2V0KG1fcmV0dXJu ZWRfc3Fsc3RhdGUsIDAsIHNpemVvZihtX3JldHVybmVkX3NxbHN0YXRlKSk7Cit9CisKK1NRTF9j b25kaXRpb24gKgorU1FMX2NvbmRpdGlvbjo6ZGVlcF9jb3B5KFRIRCAqdGhkLCBNRU1fUk9PVCAq bWVtX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1FMX2NvbmRpdGlvbiAq Y29uZCkKK3sKKyAgU1FMX2NvbmRpdGlvbiAqY29weT0gbmV3IChtZW1fcm9vdCkgU1FMX2NvbmRp dGlvbihtZW1fcm9vdCk7CisgIGlmIChjb3B5KQorICAgIGNvcHktPmRlZXBfY29weShjb25kKTsK KyAgcmV0dXJuIGNvcHk7Cit9CisKK3ZvaWQKK1NRTF9jb25kaXRpb246OmRlZXBfY29weShjb25z dCBTUUxfY29uZGl0aW9uICpjb25kKQoreworICBtZW1jcHkobV9yZXR1cm5lZF9zcWxzdGF0ZSwg Y29uZC0+bV9yZXR1cm5lZF9zcWxzdGF0ZSwKKyAgICAgICAgIHNpemVvZihtX3JldHVybmVkX3Nx bHN0YXRlKSk7CisKKyAgaWYgKGNvbmQtPm1fbWVzc2FnZV90ZXh0Lmxlbmd0aCgpKQorICB7Cisg ICAgY29uc3QgY2hhciogY29weTsKKworICAgIGNvcHk9IHN0cmR1cF9yb290KG1fbWVtX3Jvb3Qs IGNvbmQtPm1fbWVzc2FnZV90ZXh0LnB0cigpKTsKKyAgICBtX21lc3NhZ2VfdGV4dC5zZXQoY29w eSwgY29uZC0+bV9tZXNzYWdlX3RleHQubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAg IGVycm9yX21lc3NhZ2VfY2hhcnNldF9pbmZvKTsKKyAgfQorICBlbHNlCisgICAgbV9tZXNzYWdl X3RleHQubGVuZ3RoKDApOworCisgIERCVUdfQVNTRVJUKCEgbV9tZXNzYWdlX3RleHQuaXNfYWxs b2NlZCgpKTsKKworICBtX21lc3NhZ2VfdGV4dF9zZXQ9IGNvbmQtPm1fbWVzc2FnZV90ZXh0X3Nl dDsKKyAgbV9jbGFzc19vcmlnaW4uY29weSgmIGNvbmQtPm1fY2xhc3Nfb3JpZ2luKTsKKyAgbV9z dWJjbGFzc19vcmlnaW4uY29weSgmIGNvbmQtPm1fc3ViY2xhc3Nfb3JpZ2luKTsKKyAgbV9jb25z dHJhaW50X2NhdGFsb2cuY29weSgmIGNvbmQtPm1fY29uc3RyYWludF9jYXRhbG9nKTsKKyAgbV9j b25zdHJhaW50X3NjaGVtYS5jb3B5KCYgY29uZC0+bV9jb25zdHJhaW50X3NjaGVtYSk7CisgIG1f Y29uc3RyYWludF9uYW1lLmNvcHkoJiBjb25kLT5tX2NvbnN0cmFpbnRfbmFtZSk7CisgIG1fY2F0 YWxvZ19uYW1lLmNvcHkoJiBjb25kLT5tX2NhdGFsb2dfbmFtZSk7CisgIG1fc2NoZW1hX25hbWUu Y29weSgmIGNvbmQtPm1fc2NoZW1hX25hbWUpOworICBtX3RhYmxlX25hbWUuY29weSgmIGNvbmQt Pm1fdGFibGVfbmFtZSk7CisgIG1fY29sdW1uX25hbWUuY29weSgmIGNvbmQtPm1fY29sdW1uX25h bWUpOworICBtX2N1cnNvcl9uYW1lLmNvcHkoJiBjb25kLT5tX2N1cnNvcl9uYW1lKTsKKyAgbV9z cWxfZXJybm89IGNvbmQtPm1fc3FsX2Vycm5vOworICBtX2xldmVsPSBjb25kLT5tX2xldmVsOwor ICBtX2ZsYWdzPSBjb25kLT5tX2ZsYWdzOworfQorCit2b2lkCitTUUxfY29uZGl0aW9uOjpzZXRf cHJpbnRmKFRIRCAqdGhkLCB1aW50IGNvZGUsIGNvbnN0IGNoYXIgKnN0ciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgTVlTUUxfRVJST1I6OmVudW1fd2FybmluZ19sZXZlbCBsZXZlbCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgbXlmIGZsYWdzLCAuLi4pCit7CisgIHZhX2xpc3QgYXJn czsKKyAgY2hhciBlYnVmZltFUlJNU0dTSVpFKzIwXTsKKworCisgIERCVUdfRU5URVIoIlNRTF9j b25kaXRpb246OnNldF9wcmludGYiKTsKKworICB2YV9zdGFydChhcmdzLCBmbGFncyk7CisgICh2 b2lkKSBteV92c25wcmludGYgKGVidWZmLCBzaXplb2YoZWJ1ZmYpLCBzdHIsIGFyZ3MpOworICB2 YV9lbmQoYXJncyk7CisKKyAgc2V0KHRoZCwgY29kZSwgZWJ1ZmYsIGxldmVsLCBmbGFncyk7CisK KyAgREJVR19WT0lEX1JFVFVSTjsKK30KKwordm9pZAorU1FMX2NvbmRpdGlvbjo6c2V0KFRIRCAq dGhkLCB1aW50IGNvZGUsIGNvbnN0IGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgICBNWVNR TF9FUlJPUjo6ZW51bV93YXJuaW5nX2xldmVsIGxldmVsLCBteWYgZmxhZ3MpCit7CisgIGNvbnN0 IGNoYXIqIHNxbHN0YXRlOworCisgIC8qCisgICAgVE9ETzogcmVwbGFjZSBieSBEQlVHX0FTU0VS VChjb2RlICE9IDApIG9uY2UgYWxsIGJ1Z3Mgc2ltaWxhciB0bworICAgIEJ1ZyMzNjc2MCBhcmUg Zml4ZWQ6IGEgU1FMIGNvbmRpdGlvbiBtdXN0IGhhdmUgYSByZWFsICghPTApIGVycm9yIG51bWJl cgorICAgIHNvIHRoYXQgaXQgY2FuIGJlIGNhdWdodCBieSBoYW5kbGVycy4KKyAgKi8KKyAgaWYg KGNvZGUgPT0gMCkKKyAgICBjb2RlPSBFUl9VTktOT1dOX0VSUk9SOworICBpZiAoc3RyID09IE5V TEwpCisgICAgc3RyPSBFUihjb2RlKTsKKyAgbV9zcWxfZXJybm89IGNvZGU7CisKKyAgc3Fsc3Rh dGU9IG15c3FsX2Vycm5vX3RvX3NxbHN0YXRlKG1fc3FsX2Vycm5vKTsKKyAgbWVtY3B5KG1fcmV0 dXJuZWRfc3Fsc3RhdGUsIHNxbHN0YXRlLCBTUUxTVEFURV9MRU5HVEgpOworICBtX3JldHVybmVk X3NxbHN0YXRlW1NRTFNUQVRFX0xFTkdUSF09ICdcMCc7CisKKyAgc2V0X2J1aWx0aW5fbWVzc2Fn ZV90ZXh0KHN0cik7CisgIGlmICgobGV2ZWwgPT0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfV0FS TikgJiYKKyAgICAgIHRoZC0+cmVhbGx5X2Fib3J0X29uX3dhcm5pbmcoKSkKKyAgeworICAgIC8q CisgICAgICBGSVhNRToKKyAgICAgIHB1c2hfd2FybmluZyBhbmQgc3RyaWN0IFNRTF9NT0RFIGNh c2UuCisgICAgKi8KKyAgICBtX2xldmVsPSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9FUlJPUjsK KyAgICB0aGQtPmtpbGxlZD0gVEhEOjpLSUxMX0JBRF9EQVRBOworICB9CisgIGVsc2UKKyAgICBt X2xldmVsPSBsZXZlbDsKKyAgbV9mbGFncz0gZmxhZ3M7Cit9CisKK3ZvaWQKK1NRTF9jb25kaXRp b246OnNldF9idWlsdGluX21lc3NhZ2VfdGV4dChjb25zdCBjaGFyKiBzdHIpCit7CisgIGNvbnN0 IGNoYXIqIGNvcHk7CisKKyAgY29weT0gc3RyZHVwX3Jvb3QobV9tZW1fcm9vdCwgc3RyKTsKKyAg bV9tZXNzYWdlX3RleHQuc2V0KGNvcHksIHN0cmxlbihjb3B5KSwgZXJyb3JfbWVzc2FnZV9jaGFy c2V0X2luZm8pOworICBEQlVHX0FTU0VSVCghIG1fbWVzc2FnZV90ZXh0LmlzX2FsbG9jZWQoKSk7 CisgIG1fbWVzc2FnZV90ZXh0X3NldD0gVFJVRTsKK30KKworY29uc3QgY2hhcioKK1NRTF9jb25k aXRpb246OmdldF9tZXNzYWdlX3RleHQoKSBjb25zdAoreworICByZXR1cm4gbV9tZXNzYWdlX3Rl eHQucHRyKCk7Cit9CisKK2ludAorU1FMX2NvbmRpdGlvbjo6Z2V0X21lc3NhZ2Vfb2N0ZXRfbGVu Z3RoKCkgY29uc3QKK3sKKyAgcmV0dXJuIG1fbWVzc2FnZV90ZXh0Lmxlbmd0aCgpOworfQorCit2 b2lkCitTUUxfY29uZGl0aW9uOjpzZXRfc3Fsc3RhdGUoY29uc3QgY2hhciogc3Fsc3RhdGUpCit7 CisgIG1lbWNweShtX3JldHVybmVkX3NxbHN0YXRlLCBzcWxzdGF0ZSwgU1FMU1RBVEVfTEVOR1RI KTsKKyAgbV9yZXR1cm5lZF9zcWxzdGF0ZVtTUUxTVEFURV9MRU5HVEhdPSAnXDAnOworfQorCitT ZXRfc2lnbmFsX2luZm9ybWF0aW9uOjpTZXRfc2lnbmFsX2luZm9ybWF0aW9uKCkKK3sKKyAgY2xl YXIoKTsKK30KKworU2V0X3NpZ25hbF9pbmZvcm1hdGlvbjo6U2V0X3NpZ25hbF9pbmZvcm1hdGlv bigKKyAgY29uc3QgU2V0X3NpZ25hbF9pbmZvcm1hdGlvbiYgc2V0KQoreworICBpbnQgaTsKKyAg Zm9yIChpPSBGSVJTVF9ESUFHX1NFVF9QUk9QRVJUWTsKKyAgICAgICBpIDw9IExBU1RfRElBR19T RVRfUFJPUEVSVFk7CisgICAgICAgaSsrKQorICB7CisgICAgbV9pdGVtW2ldPSBzZXQubV9pdGVt W2ldOworICB9Cit9CisKK3ZvaWQgU2V0X3NpZ25hbF9pbmZvcm1hdGlvbjo6Y2xlYXIoKQorewor ICBpbnQgaTsKKyAgZm9yIChpPSBGSVJTVF9ESUFHX1NFVF9QUk9QRVJUWTsKKyAgICAgICBpIDw9 IExBU1RfRElBR19TRVRfUFJPUEVSVFk7CisgICAgICAgaSsrKQorICB7CisgICAgbV9pdGVtW2ld PSBOVUxMOworICB9Cit9CisKK2ludCBBYnN0cmFjdF9zaWduYWw6OmV2YWxfc3FsY29kZV9zcWxz dGF0ZShUSEQgKnRoZCwgU1FMX2NvbmRpdGlvbiAqY29uZCkKK3sKKyAgREJVR19BU1NFUlQobV9j b25kKTsKKyAgREJVR19BU1NFUlQoY29uZCk7CisKKyAgLyoKKyAgICBTSUdOQUwgaXMgcmVzdHJp Y3RlZCBpbiBzcWxfeWFjYy55eSB0byBvbmx5IHNpZ25hbCBTUUxTVEFURSBjb25kaXRpb25zCisg ICovCisgIERCVUdfQVNTRVJUKG1fY29uZC0+dHlwZSA9PSBzcF9jb25kX3R5cGU6OnN0YXRlKTsK KyAgY29uc3QgY2hhciogc3Fsc3RhdGU9IG1fY29uZC0+c3Fsc3RhdGU7CisKKyAgREJVR19BU1NF UlQoKHNxbHN0YXRlWzBdICE9ICcwJykgfHwgKHNxbHN0YXRlWzFdICE9ICcwJykpOworCisgIGNv bmQtPnNldF9zcWxzdGF0ZShzcWxzdGF0ZSk7CisKKyAgaWYgKChzcWxzdGF0ZVswXSA9PSAnMCcp ICYmIChzcWxzdGF0ZVsxXSA9PSAnMScpKQorICB7CisgICAgLyogU1FMU1RBVEUgY2xhc3MgIjAx Ijogd2FybmluZyAqLworICAgIGNvbmQtPm1fbGV2ZWw9IE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVM X1dBUk47CisgICAgY29uZC0+bV9zcWxfZXJybm89IEVSX1NJR05BTF9XQVJOOworICB9CisgIGVs c2UgaWYgKChzcWxzdGF0ZVswXSA9PSAnMCcpICYmIChzcWxzdGF0ZVsxXSA9PSAnMicpKQorICB7 CisgICAgLyogU1FMU1RBVEUgY2xhc3MgIjAyIjogbm90IGZvdW5kICovCisgICAgY29uZC0+bV9s ZXZlbD0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1I7CisgICAgY29uZC0+bV9zcWxfZXJy bm89IEVSX1NJR05BTF9OT1RfRk9VTkQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgY29uZC0+bV9s ZXZlbD0gTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1I7CisgICAgY29uZC0+bV9zcWxfZXJy bm89IEVSX1NJR05BTF9FWENFUFRJT047CisgIH0KKworICByZXR1cm4gMDsKK30KKworaW50IEFi c3RyYWN0X3NpZ25hbDo6ZXZhbF9kZWZhdWx0X21lc3NhZ2VfdGV4dChUSEQgKnRoZCwgU1FMX2Nv bmRpdGlvbiAqY29uZCkKK3sKKyAgY29uc3QgY2hhciogc3Fsc3RhdGU9IGNvbmQtPmdldF9zcWxz dGF0ZSgpOworCisgIERCVUdfQVNTRVJUKChzcWxzdGF0ZVswXSAhPSAnMCcpIHx8IChzcWxzdGF0 ZVsxXSAhPSAnMCcpKTsKKworICBpZiAoISBjb25kLT5pc19tZXNzYWdlX3RleHRfc2V0KCkpCisg IHsKKyAgICBpZiAoKHNxbHN0YXRlWzBdID09ICcwJykgJiYgKHNxbHN0YXRlWzFdID09ICcxJykp CisgICAgeworICAgICAgLyogU1FMU1RBVEUgY2xhc3MgIjAxIjogd2FybmluZyAqLworICAgICAg Y29uZC0+c2V0X2J1aWx0aW5fbWVzc2FnZV90ZXh0KEVSKEVSX1NJR05BTF9XQVJOKSk7CisgICAg fQorICAgIGVsc2UgaWYgKChzcWxzdGF0ZVswXSA9PSAnMCcpICYmIChzcWxzdGF0ZVsxXSA9PSAn MicpKQorICAgIHsKKyAgICAgIC8qIFNRTFNUQVRFIGNsYXNzICIwMiI6IG5vdCBmb3VuZCAqLwor ICAgICAgY29uZC0+c2V0X2J1aWx0aW5fbWVzc2FnZV90ZXh0KEVSKEVSX1NJR05BTF9OT1RfRk9V TkQpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGNvbmQtPnNldF9idWlsdGluX21l c3NhZ2VfdGV4dChFUihFUl9TSUdOQUxfRVhDRVBUSU9OKSk7CisgICAgfQorICB9CisKKyAgcmV0 dXJuIDA7Cit9CisKK2ludCBhc3NpZ25fY29uZGl0aW9uX2l0ZW0oY29uc3QgY2hhciogbmFtZSwg VEhEICp0aGQsIEl0ZW0gKnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGOFN0cmlu ZzY0ICpjaSkKK3sKKyAgU3RyaW5nIHN0cl92YWx1ZTsKKyAgU3RyaW5nICpzdHI7CisKKyAgREJV R19FTlRFUigiYXNzaWduX2NvbmRpdGlvbl9pdGVtIik7CisKKyAgaWYgKHNldC0+aXNfbnVsbCgp KQorICB7CisgICAgbXlfZXJyb3IoRVJfV1JPTkdfVkFMVUVfRk9SX1ZBUiwgTVlGKDApLCBuYW1l LCAiTlVMTCIpOworICAgIERCVUdfUkVUVVJOKDEpOworICB9CisKKyAgc3RyPSBzZXQtPnZhbF9z dHIoJiBzdHJfdmFsdWUpOworICBjaS0+c2V0KHN0cik7CisgIGlmIChjaS0+aXNfdHJ1bmNhdGVk KCkpCisgIHsKKyAgICBpZiAodGhkLT52YXJpYWJsZXMuc3FsX21vZGUgJiAoTU9ERV9TVFJJQ1Rf VFJBTlNfVEFCTEVTIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU9ERV9T VFJJQ1RfQUxMX1RBQkxFUykpCisgICAgeworICAgICAgbXlfZXJyb3IoRVJfQ09ORF9JVEVNX1RP T19MT05HLCBNWUYoMCksIG5hbWUpOworICAgICAgREJVR19SRVRVUk4oMSk7CisgICAgfQorCisg ICAgcHVzaF93YXJuaW5nX3ByaW50Zih0aGQsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4s CisgICAgICAgICAgICAgICAgICAgICAgICBXQVJOX0NPTkRfSVRFTV9UUlVOQ0FURUQsCisgICAg ICAgICAgICAgICAgICAgICAgICBFUihXQVJOX0NPTkRfSVRFTV9UUlVOQ0FURUQpLAorICAgICAg ICAgICAgICAgICAgICAgICAgbmFtZSk7CisgIH0KKworICBEQlVHX1JFVFVSTigwKTsKK30KKwor CitpbnQgQWJzdHJhY3Rfc2lnbmFsOjpldmFsX3NpZ25hbF9pbmZvcm1hdGlvbnMoVEhEICp0aGQs IFNRTF9jb25kaXRpb24gKmNvbmQpCit7CisgIEl0ZW0gKnNldDsKKyAgU3RyaW5nIHN0cl92YWx1 ZTsKKyAgU3RyaW5nICpzdHI7CisgIGludCBpOworICBpbnQgcmVzdWx0PSAxOworCisgIERCVUdf RU5URVIoIkFic3RyYWN0X3NpZ25hbDo6ZXZhbF9zaWduYWxfaW5mb3JtYXRpb25zIik7CisKKyAg Zm9yIChpPSBGSVJTVF9ESUFHX1NFVF9QUk9QRVJUWTsKKyAgICAgICBpIDw9IExBU1RfRElBR19T RVRfUFJPUEVSVFk7CisgICAgICAgaSsrKQorICB7CisgICAgc2V0PSBtX3NldF9zaWduYWxfaW5m b3JtYXRpb24ubV9pdGVtW2ldOworICAgIGlmIChzZXQpCisgICAgeworICAgICAgaWYgKCEgc2V0 LT5maXhlZCkKKyAgICAgIHsKKyAgICAgICAgaWYgKHNldC0+Zml4X2ZpZWxkcyh0aGQsICYgc2V0 KSkKKyAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9u Lm1faXRlbVtpXT0gc2V0OworICAgICAgfQorICAgIH0KKyAgfQorCisgIHNldD0gbV9zZXRfc2ln bmFsX2luZm9ybWF0aW9uLm1faXRlbVtESUFHX0NMQVNTX09SSUdJTl07CisgIGlmIChzZXQgIT0g TlVMTCkKKyAgeworICAgIGlmIChhc3NpZ25fY29uZGl0aW9uX2l0ZW0oIkNMQVNTX09SSUdJTiIs IHRoZCwgc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBjb25kLT5tX2NsYXNz X29yaWdpbikpCisgICAgICBnb3RvIGVuZDsKKyAgfQorCisgIHNldD0gbV9zZXRfc2lnbmFsX2lu Zm9ybWF0aW9uLm1faXRlbVtESUFHX1NVQkNMQVNTX09SSUdJTl07CisgIGlmIChzZXQgIT0gTlVM TCkKKyAgeworICAgIGlmIChhc3NpZ25fY29uZGl0aW9uX2l0ZW0oIlNVQkNMQVNTX09SSUdJTiIs IHRoZCwgc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBjb25kLT5tX3N1YmNs YXNzX29yaWdpbikpCisgICAgICBnb3RvIGVuZDsKKyAgfQorCisgIHNldD0gbV9zZXRfc2lnbmFs X2luZm9ybWF0aW9uLm1faXRlbVtESUFHX0NPTlNUUkFJTlRfQ0FUQUxPR107CisgIGlmIChzZXQg IT0gTlVMTCkKKyAgeworICAgIGlmIChhc3NpZ25fY29uZGl0aW9uX2l0ZW0oIkNPTlNUUkFJTlRf Q0FUQUxPRyIsIHRoZCwgc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBjb25k LT5tX2NvbnN0cmFpbnRfY2F0YWxvZykpCisgICAgICBnb3RvIGVuZDsKKyAgfQorCisgIHNldD0g bV9zZXRfc2lnbmFsX2luZm9ybWF0aW9uLm1faXRlbVtESUFHX0NPTlNUUkFJTlRfU0NIRU1BXTsK KyAgaWYgKHNldCAhPSBOVUxMKQorICB7CisgICAgaWYgKGFzc2lnbl9jb25kaXRpb25faXRlbSgi Q09OU1RSQUlOVF9TQ0hFTUEiLCB0aGQsIHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYgY29uZC0+bV9jb25zdHJhaW50X3NjaGVtYSkpCisgICAgICBnb3RvIGVuZDsKKyAgfQor CisgIHNldD0gbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9uLm1faXRlbVtESUFHX0NPTlNUUkFJTlRf TkFNRV07CisgIGlmIChzZXQgIT0gTlVMTCkKKyAgeworICAgIGlmIChhc3NpZ25fY29uZGl0aW9u X2l0ZW0oIkNPTlNUUkFJTlRfTkFNRSIsIHRoZCwgc2V0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJiBjb25kLT5tX2NvbnN0cmFpbnRfbmFtZSkpCisgICAgICBnb3RvIGVuZDsKKyAg fQorCisgIHNldD0gbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9uLm1faXRlbVtESUFHX0NBVEFMT0df TkFNRV07CisgIGlmIChzZXQgIT0gTlVMTCkKKyAgeworICAgIGlmIChhc3NpZ25fY29uZGl0aW9u X2l0ZW0oIkNBVEFMT0dfTkFNRSIsIHRoZCwgc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJiBjb25kLT5tX2NhdGFsb2dfbmFtZSkpCisgICAgICBnb3RvIGVuZDsKKyAgfQorCisg IHNldD0gbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9uLm1faXRlbVtESUFHX1NDSEVNQV9OQU1FXTsK KyAgaWYgKHNldCAhPSBOVUxMKQorICB7CisgICAgaWYgKGFzc2lnbl9jb25kaXRpb25faXRlbSgi U0NIRU1BX05BTUUiLCB0aGQsIHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYg Y29uZC0+bV9zY2hlbWFfbmFtZSkpCisgICAgICBnb3RvIGVuZDsKKyAgfQorCisgIHNldD0gbV9z ZXRfc2lnbmFsX2luZm9ybWF0aW9uLm1faXRlbVtESUFHX1RBQkxFX05BTUVdOworICBpZiAoc2V0 ICE9IE5VTEwpCisgIHsKKyAgICBpZiAoYXNzaWduX2NvbmRpdGlvbl9pdGVtKCJUQUJMRV9OQU1F IiwgdGhkLCBzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIGNvbmQtPm1fdGFi bGVfbmFtZSkpCisgICAgICBnb3RvIGVuZDsKKyAgfQorCisgIHNldD0gbV9zZXRfc2lnbmFsX2lu Zm9ybWF0aW9uLm1faXRlbVtESUFHX0NPTFVNTl9OQU1FXTsKKyAgaWYgKHNldCAhPSBOVUxMKQor ICB7CisgICAgaWYgKGFzc2lnbl9jb25kaXRpb25faXRlbSgiQ09MVU1OX05BTUUiLCB0aGQsIHNl dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgY29uZC0+bV9jb2x1bW5fbmFtZSkp CisgICAgICBnb3RvIGVuZDsKKyAgfQorCisgIHNldD0gbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9u Lm1faXRlbVtESUFHX0NVUlNPUl9OQU1FXTsKKyAgaWYgKHNldCAhPSBOVUxMKQorICB7CisgICAg aWYgKGFzc2lnbl9jb25kaXRpb25faXRlbSgiQ1VSU09SX05BTUUiLCB0aGQsIHNldCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICYgY29uZC0+bV9jdXJzb3JfbmFtZSkpCisgICAgICBn b3RvIGVuZDsKKyAgfQorCisgIHNldD0gbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9uLm1faXRlbVtE SUFHX01FU1NBR0VfVEVYVF07CisgIGlmIChzZXQgIT0gTlVMTCkKKyAgeworICAgIGlmIChzZXQt PmlzX251bGwoKSkKKyAgICB7CisgICAgICBteV9lcnJvcihFUl9XUk9OR19WQUxVRV9GT1JfVkFS LCBNWUYoMCksICJNRVNTQUdFX1RFWFQiLCAiTlVMTCIpOworICAgICAgZ290byBlbmQ7CisgICAg fQorICAgIC8qCisgICAgICBFbmZvcmNlIHRoYXQgU0VUIE1FU1NBR0VfVEVYVCA9IDx2YWx1ZT4g ZXZhbHVhdGVzIHRoZSB2YWx1ZQorICAgICAgYXMgVkFSQ0hBUigxMjgpIENIQVJBQ1RFUiBTRVQg VVRGOC4KKyAgICAqLworICAgIFVURjhTdHJpbmcxMjggdXRmOF90ZXh0KHRoZC0+bWVtX3Jvb3Qp OworICAgIHN0cj0gc2V0LT52YWxfc3RyKCYgc3RyX3ZhbHVlKTsKKyAgICB1dGY4X3RleHQuc2V0 KHN0ci0+cHRyKCksIChzaXplX3QpIHN0ci0+bGVuZ3RoKCksIHN0ci0+Y2hhcnNldCgpKTsKKwor ICAgIGlmICh1dGY4X3RleHQuaXNfdHJ1bmNhdGVkKCkpCisgICAgeworICAgICAgaWYgKHRoZC0+ dmFyaWFibGVzLnNxbF9tb2RlICYgKE1PREVfU1RSSUNUX1RSQU5TX1RBQkxFUyB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU9ERV9TVFJJQ1RfQUxMX1RBQkxFUykpCisg ICAgICB7CisgICAgICAgIG15X2Vycm9yKEVSX0NPTkRfSVRFTV9UT09fTE9ORywgTVlGKDApLCAi TUVTU0FHRV9URVhUIik7CisgICAgICAgIGdvdG8gZW5kOworICAgICAgfQorCisgICAgICBwdXNo X3dhcm5pbmdfcHJpbnRmKHRoZCwgTVlTUUxfRVJST1I6OldBUk5fTEVWRUxfV0FSTiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgV0FSTl9DT05EX0lURU1fVFJVTkNBVEVELAorICAgICAgICAg ICAgICAgICAgICAgICAgICBFUihXQVJOX0NPTkRfSVRFTV9UUlVOQ0FURUQpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAiTUVTU0FHRV9URVhUIik7CisgICAgfQorCisgICAgLyoKKyAgICAg IENvbnZlcnQgdG8gdGhlIGNoYXJhY3RlciBzZXQgdXNlZCB3aXRoIC0tbGFuZ3VhZ2UuCisgICAg ICBUaGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBXTCM3NTEgaXMgaW1wbGVtZW50ZWQu CisgICAgKi8KKyAgICBTdHJpbmcgY29udmVydGVkX3RleHQ7CisgICAgY29udmVydGVkX3RleHQu c2V0X2NoYXJzZXQoZXJyb3JfbWVzc2FnZV9jaGFyc2V0X2luZm8pOworICAgIGNvbnZlcnRlZF90 ZXh0LmFwcGVuZCh1dGY4X3RleHQucHRyKCksIHV0ZjhfdGV4dC5sZW5ndGgoKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKENIQVJTRVRfSU5GTyAqKSB1dGY4X3RleHQuY2hhcnNldCgpKTsK KyAgICBjb25kLT5zZXRfYnVpbHRpbl9tZXNzYWdlX3RleHQoY29udmVydGVkX3RleHQuY19wdHJf c2FmZSgpKTsKKyAgfQorCisgIHNldD0gbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9uLm1faXRlbVtE SUFHX01ZU1FMX0VSUk5PXTsKKyAgaWYgKHNldCAhPSBOVUxMKQorICB7CisgICAgaWYgKHNldC0+ aXNfbnVsbCgpKQorICAgIHsKKyAgICAgIG15X2Vycm9yKEVSX1dST05HX1ZBTFVFX0ZPUl9WQVIs IE1ZRigwKSwgIk1ZU1FMX0VSUk5PIiwgIk5VTEwiKTsKKyAgICAgIGdvdG8gZW5kOworICAgIH0K KyAgICBsb25nbG9uZyBjb2RlPSBzZXQtPnZhbF9pbnQoKTsKKyAgICBpZiAoKGNvZGUgPD0gMCkg fHwgKGNvZGUgPiBNQVhfTVlTUUxfRVJSTk8pKQorICAgIHsKKyAgICAgIHN0cj0gc2V0LT52YWxf c3RyKCYgc3RyX3ZhbHVlKTsKKyAgICAgIG15X2Vycm9yKEVSX1dST05HX1ZBTFVFX0ZPUl9WQVIs IE1ZRigwKSwKKyAgICAgICAgICAgICAgICJNWVNRTF9FUlJOTyIsIHN0ci0+Y19wdHJfc2FmZSgp KTsKKyAgICAgIGdvdG8gZW5kOworICAgIH0KKyAgICBjb25kLT5tX3NxbF9lcnJubz0gKGludCkg Y29kZTsKKyAgfQorCisgIC8qCisgICAgVGhlIHZhcmlvdXMgaXRlbS0+dmFsX3h4eCgpIG1ldGhv ZHMgZG9uJ3QgcmV0dXJuIGFuIGVycm9yIGNvZGUsCisgICAgYnV0IGZsYWcgdGhkIGluIGNhc2Ug b2YgZmFpbHVyZS4KKyAgKi8KKyAgaWYgKCEgdGhkLT5pc19lcnJvcigpKQorICAgIHJlc3VsdD0g MDsKKworZW5kOgorICBmb3IgKGk9IEZJUlNUX0RJQUdfU0VUX1BST1BFUlRZOworICAgICAgIGkg PD0gTEFTVF9ESUFHX1NFVF9QUk9QRVJUWTsKKyAgICAgICBpKyspCisgIHsKKyAgICBzZXQ9IG1f c2V0X3NpZ25hbF9pbmZvcm1hdGlvbi5tX2l0ZW1baV07CisgICAgaWYgKHNldCkKKyAgICB7Cisg ICAgICBpZiAoc2V0LT5maXhlZCkKKyAgICAgICAgc2V0LT5jbGVhbnVwKCk7CisgICAgfQorICB9 CisKKyAgREJVR19SRVRVUk4ocmVzdWx0KTsKK30KKworaW50IEFic3RyYWN0X3NpZ25hbDo6cmFp c2VfY29uZGl0aW9uKFRIRCAqdGhkLCBTUUxfY29uZGl0aW9uICpjb25kKQoreworICBpbnQgcmVz dWx0PSAxOworCisgIERCVUdfRU5URVIoIkFic3RyYWN0X3NpZ25hbDo6cmFpc2VfY29uZGl0aW9u Iik7CisKKyAgREJVR19BU1NFUlQobV9sZXgtPnF1ZXJ5X3RhYmxlcyA9PSBOVUxMKTsKKworICBp ZiAobV9jb25kICE9IE5VTEwpCisgIHsKKyAgICBpZiAoZXZhbF9zcWxjb2RlX3NxbHN0YXRlKHRo ZCwgY29uZCkpCisgICAgICBEQlVHX1JFVFVSTihyZXN1bHQpOworICB9CisKKyAgaWYgKGV2YWxf c2lnbmFsX2luZm9ybWF0aW9ucyh0aGQsIGNvbmQpKQorICAgIERCVUdfUkVUVVJOKHJlc3VsdCk7 CisKKyAgaWYgKGV2YWxfZGVmYXVsdF9tZXNzYWdlX3RleHQodGhkLCBjb25kKSkKKyAgICBEQlVH X1JFVFVSTihyZXN1bHQpOworCisgIC8qIFNJR05BTCBzaG91bGQgbm90IHNpZ25hbCBXQVJOX0xF VkVMX05PVEUgKi8KKyAgREJVR19BU1NFUlQoKGNvbmQtPm1fbGV2ZWwgPT0gTVlTUUxfRVJST1I6 OldBUk5fTEVWRUxfV0FSTikgfHwKKyAgICAgICAgICAgICAgKGNvbmQtPm1fbGV2ZWwgPT0gTVlT UUxfRVJST1I6OldBUk5fTEVWRUxfRVJST1IpKTsKKworICB0aGQtPnJhaXNlX2NvbmRpdGlvbihj b25kKTsKKworICBpZiAoY29uZC0+bV9sZXZlbCA9PSBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9X QVJOKQorICB7CisgICAgbXlfb2sodGhkKTsKKyAgICByZXN1bHQ9IDA7CisgIH0KKworICBEQlVH X1JFVFVSTihyZXN1bHQpOworfQorCitpbnQgU1FMQ09NX3NpZ25hbDo6ZXhlY3V0ZShUSEQgKnRo ZCkKK3sKKyAgaW50IHJlc3VsdD0gMTsKKyAgU1FMX2NvbmRpdGlvbiBjb25kKHRoZC0+bWVtX3Jv b3QpOworCisgIERCVUdfRU5URVIoIlNRTENPTV9zaWduYWw6OmV4ZWN1dGUiKTsKKworICB0aGQt Pm1haW5fZGEucmVzZXRfZGlhZ25vc3RpY3NfYXJlYSgpOworICB0aGQtPnJvd19jb3VudF9mdW5j PSAwOworICBteXNxbF9yZXNldF9lcnJvcnModGhkLCBUUlVFKTsKKworICByZXN1bHQ9IHJhaXNl X2NvbmRpdGlvbih0aGQsICZjb25kKTsKKworICBEQlVHX1JFVFVSTihyZXN1bHQpOworfQorCisK K2ludCBTUUxDT01fcmVzaWduYWw6OmV4ZWN1dGUoVEhEICp0aGQpCit7CisgIFNRTF9jb25kaXRp b24gKnNpZ25hbGVkOworICBpbnQgcmVzdWx0PSAxOworCisgIERCVUdfRU5URVIoIlNRTENPTV9y ZXNpZ25hbDo6ZXhlY3V0ZSIpOworCisgIGlmICghIHRoZC0+c3Bjb250IHx8ICEgKHNpZ25hbGVk PSB0aGQtPnNwY29udC0+cmFpc2VkX2NvbmRpdGlvbigpKSkKKyAgeworICAgIG15X2Vycm9yKEVS X1JFU0lHTkFMX05PX0hBTkRMRVIsIE1ZRigwKSk7CisgICAgREJVR19SRVRVUk4ocmVzdWx0KTsK KyAgfQorCisgIGlmIChtX2NvbmQgPT0gTlVMTCkKKyAgeworICAgIC8qIFJFU0lHTkFMIHdpdGhv dXQgc2lnbmFsX3ZhbHVlICovCisgICAgcmVzdWx0PSByYWlzZV9jb25kaXRpb24odGhkLCBzaWdu YWxlZCk7CisgICAgREJVR19SRVRVUk4ocmVzdWx0KTsKKyAgfQorCisgIC8qIFJFU0lHTkFMIHdp dGggc2lnbmFsX3ZhbHVlICovCisKKyAgLyogTWFrZSByb29tIGZvciAyIGNvbmRpdGlvbnMgKi8K KyAgd2hpbGUgKCh0aGQtPm1haW5fZGEubV9zdG10X2FyZWEud2Fybl9saXN0LmVsZW1lbnRzID4g MCkgJiYKKyAgICAgICAgICgodGhkLT5tYWluX2RhLm1fc3RtdF9hcmVhLndhcm5fbGlzdC5lbGVt ZW50cyArIDIpCisgICAgICAgICAgICAgICAgICAgICAgID4gdGhkLT52YXJpYWJsZXMubWF4X2Vy cm9yX2NvdW50KSkKKyAgeworICAgIHRoZC0+bWFpbl9kYS5tX3N0bXRfYXJlYS53YXJuX2xpc3Qu cG9wKCk7CisgIH0KKworICB0aGQtPnJhaXNlX2NvbmRpdGlvbl9ub19oYW5kbGVyKHNpZ25hbGVk KTsKKworICBTUUxfY29uZGl0aW9uIG5ld19jb25kKHRoZC0+bWVtX3Jvb3QpOworICBuZXdfY29u ZC5kZWVwX2NvcHkoc2lnbmFsZWQpOworICByZXN1bHQ9IHJhaXNlX2NvbmRpdGlvbih0aGQsICYg bmV3X2NvbmQpOworICBEQlVHX1JFVFVSTihyZXN1bHQpOworfQorCgo9PT0gYWRkZWQgZmlsZSAn c3FsL3NxbF9zaWduYWwuaCcKLS0tIGEvc3FsL3NxbF9zaWduYWwuaAkxOTcwLTAxLTAxIDAwOjAw OjAwICswMDAwCisrKyBiL3NxbC9zcWxfc2lnbmFsLmgJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAw MApAQCAtMCwwICsxLDE0OCBAQAorLyogQ29weXJpZ2h0IChDKSAyMDA4IFN1biBNaWNyb3N5c3Rl bXMsIEluYworCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKworICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBICov CisKKyNpZm5kZWYgU1FMX1NJR05BTF9ICisjZGVmaW5lIFNRTF9TSUdOQUxfSAorCisvKioKKyAg QWJzdHJhY3Rfc2lnbmFsIHJlcHJlc2VudHMgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIHRoZSBT SUdOQUwgYW5kIFJFU0lHTkFMCisgIHN0YXRlbWVudHMuCisqLworY2xhc3MgQWJzdHJhY3Rfc2ln bmFsIDogcHVibGljIFNRTENPTV9zdGF0ZW1lbnQKK3sKK3Byb3RlY3RlZDoKKyAgLyoqCisgICAg Q29uc3RydWN0b3IuCisgICAgQHBhcmFtIGxleCB0aGUgTEVYIHN0cnVjdHVyZSBmb3IgdGhpcyBz dGF0ZW1lbnQuCisgICAgQHBhcmFtIGNvbmQgdGhlIGNvbmRpdGlvbiBzaWduYWxlZCBpZiBhbnks IG9yIE5VTEwuCisgICAgQHBhcmFtIHNldCBjb2xsZWN0aW9uIG9mIHNpZ25hbCBjb25kaXRpb24g aXRlbSBhc3NpZ25tZW50cy4KKyAgKi8KKyAgQWJzdHJhY3Rfc2lnbmFsKExFWCAqbGV4LAorICAg ICAgICAgICAgICAgICAgY29uc3Qgc3BfY29uZF90eXBlX3QgKmNvbmQsCisgICAgICAgICAgICAg ICAgICBjb25zdCBTZXRfc2lnbmFsX2luZm9ybWF0aW9uJiBzZXQpCisgICAgOiBTUUxDT01fc3Rh dGVtZW50KGxleCksCisgICAgICBtX2NvbmQoY29uZCksCisgICAgICBtX3NldF9zaWduYWxfaW5m b3JtYXRpb24oc2V0KQorICB7fQorCisgIHZpcnR1YWwgfkFic3RyYWN0X3NpZ25hbCgpCisgIHt9 CisKKyAgLyoqCisgICAgRXZhbHVhdGUgdGhlIGNvbmRpdGlvbiBpdGVtcyAnTVlTUUxfRVJSTk8n LCAnUkVUVVJORURfU1FMU1RBVEUnIGFuZCAnbGV2ZWwnCisgICAgZGVmYXVsdCB2YWx1ZXMgZm9y IHRoaXMgc3RhdGVtZW50LgorICAgIEBwYXJhbSB0aGQgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAg IEBwYXJhbSBjb25kIHRoZSBjb25kaXRpb24gdG8gdXBkYXRlLgorICAgIEByZXR1cm4gMCBvbiBz dWNjZXNzLgorICAqLworICBpbnQgZXZhbF9zcWxjb2RlX3NxbHN0YXRlKFRIRCAqdGhkLCBTUUxf Y29uZGl0aW9uICpjb25kKTsKKworICAvKioKKyAgICBFdmFsdWF0ZSBjb25kaXRpb24gaXRlbSAn TUVTU0FHRV9URVhUJyBkZWZhdWx0IHZhbHVlLgorICAgIEBwYXJhbSB0aGQgdGhlIGN1cnJlbnQg dGhyZWFkLgorICAgIEBwYXJhbSBjb25kIHRoZSBjb25kaXRpb24gdG8gdXBkYXRlLgorICAgIEBy ZXR1cm4gMCBvbiBzdWNjZXNzLgorICAqLworICBpbnQgZXZhbF9kZWZhdWx0X21lc3NhZ2VfdGV4 dChUSEQgKnRoZCwgU1FMX2NvbmRpdGlvbiAqY29uZCk7CisKKyAgLyoqCisgICAgRXZhbHVhdGUg ZWFjaCBzaWduYWwgY29uZGl0aW9uIGl0ZW1zIGZvciB0aGlzIHN0YXRlbWVudC4KKyAgICBAcGFy YW0gdGhkIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgICBAcGFyYW0gY29uZCB0aGUgY29uZGl0aW9u IHRvIHVwZGF0ZS4KKyAgICBAcmV0dXJuIDAgb24gc3VjY2Vzcy4KKyAgKi8KKyAgaW50IGV2YWxf c2lnbmFsX2luZm9ybWF0aW9ucyhUSEQgKnRoZCwgU1FMX2NvbmRpdGlvbiAqY29uZCk7CisKKyAg LyoqCisgICAgUmFpc2UgYSBTUUwgY29uZGl0aW9uLgorICAgIEBwYXJhbSB0aGQgdGhlIGN1cnJl bnQgdGhyZWFkLgorICAgIEBwYXJhbSBjb25kIHRoZSBjb25kaXRpb24gdG8gcmFpc2UuCisgICAg QHJldHVybiAwIG9uIHN1Y2Nlc3MuCisgICovCisgIGludCByYWlzZV9jb25kaXRpb24oVEhEICp0 aGQsIFNRTF9jb25kaXRpb24gKmNvbmQpOworCisgIC8qKgorICAgIFRoZSBjb25kaXRpb24gdG8g c2lnbmFsIG9yIHJlc2lnbmFsLgorICAgIFRoaXMgbWVtYmVyIGlzIG9wdGlvbmFsIGFuZCBjYW4g YmUgTlVMTCAoUkVTSUdOQUwpLgorICAqLworICBjb25zdCBzcF9jb25kX3R5cGVfdCAqbV9jb25k OworCisgIC8qKgorICAgIENvbGxlY3Rpb24gb2YgJ1NFVCBpdGVtID0gdmFsdWUnIGFzc2lnbm1l bnRzIGluIHRoZQorICAgIFNJR05BTC9SRVNJR05BTCBzdGF0ZW1lbnQuCisgICovCisgIFNldF9z aWduYWxfaW5mb3JtYXRpb24gbV9zZXRfc2lnbmFsX2luZm9ybWF0aW9uOworfTsKKworLyoqCisg IFNRTENPTV9zaWduYWwgcmVwcmVzZW50cyBhIFNJR05BTCBzdGF0ZW1lbnQuCisqLworY2xhc3Mg U1FMQ09NX3NpZ25hbCA6IHB1YmxpYyBBYnN0cmFjdF9zaWduYWwKK3sKK3B1YmxpYzoKKyAgLyoq CisgICAgQ29uc3RydWN0b3IsIHVzZWQgdG8gcmVwcmVzZW50IGEgU0lHTkFMIHN0YXRlbWVudC4K KyAgICBAcGFyYW0gbGV4IHRoZSBMRVggc3RydWN0dXJlIGZvciB0aGlzIHN0YXRlbWVudC4KKyAg ICBAcGFyYW0gY29uZCB0aGUgU1FMIGNvbmRpdGlvbiB0byBzaWduYWwgKHJlcXVpcmVkKS4KKyAg ICBAcGFyYW0gc2V0IHRoZSBjb2xsZWN0aW9uIG9mIHNpZ25hbCBpbmZvcm1hdGlvbnMgdG8gc2ln bmFsLgorICAqLworICBTUUxDT01fc2lnbmFsKExFWCAqbGV4LAorICAgICAgICAgICAgICAgIGNv bnN0IHNwX2NvbmRfdHlwZV90ICpjb25kLAorICAgICAgICAgICAgICAgIGNvbnN0IFNldF9zaWdu YWxfaW5mb3JtYXRpb24mIHNldCkKKyAgICA6IEFic3RyYWN0X3NpZ25hbChsZXgsIGNvbmQsIHNl dCkKKyAge30KKworICB2aXJ0dWFsIH5TUUxDT01fc2lnbmFsKCkKKyAge30KKworICAvKioKKyAg ICBFeGVjdXRlIGEgU0lHTkFMIHN0YXRlbWVudCBhdCBydW50aW1lLgorICAgIEBwYXJhbSB0aGQg dGhlIGN1cnJlbnQgdGhyZWFkLgorICAgIEByZXR1cm4gMCBvbiBzdWNjZXNzLgorICAqLworICB2 aXJ0dWFsIGludCBleGVjdXRlKFRIRCAqdGhkKTsKK307CisKKy8qKgorICBTUUxDT01fcmVzaWdu YWwgcmVwcmVzZW50cyBhIFJFU0lHTkFMIHN0YXRlbWVudC4KKyovCitjbGFzcyBTUUxDT01fcmVz aWduYWwgOiBwdWJsaWMgQWJzdHJhY3Rfc2lnbmFsCit7CitwdWJsaWM6CisgIC8qKgorICAgIENv bnN0cnVjdG9yLCB1c2VkIHRvIHJlcHJlc2VudCBhIFJFU0lHTkFMIHN0YXRlbWVudC4KKyAgICBA cGFyYW0gbGV4IHRoZSBMRVggc3RydWN0dXJlIGZvciB0aGlzIHN0YXRlbWVudC4KKyAgICBAcGFy YW0gY29uZCB0aGUgU1FMIGNvbmRpdGlvbiB0byByZXNpZ25hbCAob3B0aW9uYWwsIG1heSBiZSBO VUxMKS4KKyAgICBAcGFyYW0gc2V0IHRoZSBjb2xsZWN0aW9uIG9mIHNpZ25hbCBpbmZvcm1hdGlv bnMgdG8gcmVzaWduYWwuCisgICovCisgIFNRTENPTV9yZXNpZ25hbChMRVggKmxleCwKKyAgICAg ICAgICAgICAgICAgIGNvbnN0IHNwX2NvbmRfdHlwZV90ICpjb25kLAorICAgICAgICAgICAgICAg ICAgY29uc3QgU2V0X3NpZ25hbF9pbmZvcm1hdGlvbiYgc2V0KQorICAgIDogQWJzdHJhY3Rfc2ln bmFsKGxleCwgY29uZCwgc2V0KQorICB7fQorCisgIHZpcnR1YWwgflNRTENPTV9yZXNpZ25hbCgp CisgIHt9CisKKyAgLyoqCisgICAgRXhlY3V0ZSBhIFJFU0lHTkFMIHN0YXRlbWVudCBhdCBydW50 aW1lLgorICAgIEBwYXJhbSB0aGQgdGhlIGN1cnJlbnQgdGhyZWFkLgorICAgIEByZXR1cm4gMCBv biBzdWNjZXNzLgorICAqLworICB2aXJ0dWFsIGludCBleGVjdXRlKFRIRCAqdGhkKTsKK307CisK KyNlbmRpZgorCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF90YWJsZS5jYycKLS0tIGEvc3Fs L3NxbF90YWJsZS5jYwkyMDA4LTA4LTI1IDE4OjIzOjE4ICswMDAwCisrKyBiL3NxbC9zcWxfdGFi bGUuY2MJMjAwOC0wOC0yNyAyMjoxNDowMyArMDAwMApAQCAtMzUzNyw3ICszNTM3LDcgQEAgYm9v bCBteXNxbF9jcmVhdGVfdGFibGVfbm9fbG9jayhUSEQgKnRoZAogCiAgIC8qIEdpdmUgd2Fybmlu Z3MgZm9yIG5vdCBzdXBwb3J0ZWQgdGFibGUgb3B0aW9ucyAqLwogICBpZiAoY3JlYXRlX2luZm8t PnRyYW5zYWN0aW9uYWwgJiYgIWZpbGUtPmh0LT5jb21taXQpCi0gICAgcHVzaF93YXJuaW5nX3By aW50Zih0aGQsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX0VSUk9SLAorICAgIHB1c2hfd2Fybmlu Z19wcmludGYodGhkLCBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOLAogICAgICAgICAgICAg ICAgICAgICAgICAgRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OLAogICAgICAgICAgICAgICAg ICAgICAgICAgRVIoRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OKSwKICAgICAgICAgICAgICAg ICAgICAgICAgIGZpbGUtPmVuZ2luZV9uYW1lKCktPnN0ciwKQEAgLTQyNDQsNyArNDI0NCw3IEBA IHN0YXRpYyBib29sIG15c3FsX2FkbWluX3RhYmxlKFRIRCogdGhkLCAKICAgICBpZiAoIXRhYmxl LT50YWJsZSkKICAgICB7CiAgICAgICBEQlVHX1BSSU5UKCJhZG1pbiIsICgib3BlbiB0YWJsZSBm YWlsZWQiKSk7Ci0gICAgICBpZiAoIXRoZC0+d2Fybl9saXN0LmVsZW1lbnRzKQorICAgICAgaWYg KCF0aGQtPm1haW5fZGEubV9zdG10X2FyZWEud2Fybl9saXN0LmVsZW1lbnRzKQogICAgICAgICBw dXNoX3dhcm5pbmcodGhkLCBNWVNRTF9FUlJPUjo6V0FSTl9MRVZFTF9XQVJOLAogICAgICAgICAg ICAgICAgICAgICAgRVJfQ0hFQ0tfTk9fU1VDSF9UQUJMRSwgRVIoRVJfQ0hFQ0tfTk9fU1VDSF9U QUJMRSkpOwogICAgICAgLyogaWYgaXQgd2FzIGEgdmlldyB3aWxsIGNoZWNrIG1kNSBzdW0gKi8K QEAgLTQzNTIsMTcgKzQzNTIsMTcgQEAgc2VuZF9yZXN1bHQ6CiAgICAgbGV4LT5jbGVhbnVwX2Fm dGVyX29uZV90YWJsZV9vcGVuKCk7CiAgICAgdGhkLT5jbGVhcl9lcnJvcigpOyAgLy8gdGhlc2Ug ZXJyb3JzIHNob3VsZG4ndCBnZXQgY2xpZW50CiAgICAgewotICAgICAgTGlzdF9pdGVyYXRvcl9m YXN0PE1ZU1FMX0VSUk9SPiBpdCh0aGQtPndhcm5fbGlzdCk7Ci0gICAgICBNWVNRTF9FUlJPUiAq ZXJyOwotICAgICAgd2hpbGUgKChlcnI9IGl0KyspKQorICAgICAgTGlzdF9pdGVyYXRvcl9mYXN0 PFNRTF9jb25kaXRpb24+IGl0KHRoZC0+bWFpbl9kYS5tX3N0bXRfYXJlYS53YXJuX2xpc3QpOwor ICAgICAgU1FMX2NvbmRpdGlvbiAqY29uZDsKKyAgICAgIHdoaWxlICgoY29uZD0gaXQrKykpCiAg ICAgICB7CiAgICAgICAgIHByb3RvY29sLT5wcmVwYXJlX2Zvcl9yZXNlbmQoKTsKICAgICAgICAg cHJvdG9jb2wtPnN0b3JlKHRhYmxlX25hbWUsIHN5c3RlbV9jaGFyc2V0X2luZm8pOwogICAgICAg ICBwcm90b2NvbC0+c3RvcmUoKGNoYXIqKSBvcGVyYXRvcl9uYW1lLCBzeXN0ZW1fY2hhcnNldF9p bmZvKTsKLSAgICAgICAgcHJvdG9jb2wtPnN0b3JlKHdhcm5pbmdfbGV2ZWxfbmFtZXNbZXJyLT5s ZXZlbF0uc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ19sZXZlbF9uYW1lc1tl cnItPmxldmVsXS5sZW5ndGgsCisgICAgICAgIHByb3RvY29sLT5zdG9yZSh3YXJuaW5nX2xldmVs X25hbWVzW2NvbmQtPmdldF9sZXZlbCgpXS5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICB3 YXJuaW5nX2xldmVsX25hbWVzW2NvbmQtPmdldF9sZXZlbCgpXS5sZW5ndGgsCiAgICAgICAgICAg ICAgICAgICAgICAgICBzeXN0ZW1fY2hhcnNldF9pbmZvKTsKLSAgICAgICAgcHJvdG9jb2wtPnN0 b3JlKGVyci0+bXNnLCBzeXN0ZW1fY2hhcnNldF9pbmZvKTsKKyAgICAgICAgcHJvdG9jb2wtPnN0 b3JlKGNvbmQtPmdldF9tZXNzYWdlX3RleHQoKSwgc3lzdGVtX2NoYXJzZXRfaW5mbyk7CiAgICAg ICAgIGlmIChwcm90b2NvbC0+d3JpdGUoKSkKICAgICAgICAgICBnb3RvIGVycjsKICAgICAgIH0K Cj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX3ZpZXcuY2MnCi0tLSBhL3NxbC9zcWxfdmlldy5j YwkyMDA4LTA3LTE1IDE2OjI5OjUxICswMDAwCisrKyBiL3NxbC9zcWxfdmlldy5jYwkyMDA4LTA4 LTI3IDIyOjE0OjAzICswMDAwCkBAIC00ODIsNyArNDgyLDcgQEAgYm9vbCBteXNxbF9jcmVhdGVf dmlldyhUSEQgKnRoZCwgVEFCTEVfTAogICAgICAgICBzdHJjbXAodGJsLT52aWV3X2RiLnN0ciwg dmlldy0+ZGIpID09IDAgJiYKICAgICAgICAgc3RyY21wKHRibC0+dmlld19uYW1lLnN0ciwgdmll dy0+dGFibGVfbmFtZSkgPT0gMCkKICAgICB7Ci0gICAgICBteV9lcnJvcihFUl9OT19TVUNIX1RB QkxFLCBNWUYoMCksIHRibC0+dmlld19kYi5zdHIsIHRibC0+dmlld19uYW1lLnN0cik7CisgICAg ICB0aGQtPnJhaXNlX0VSX05PX1NVQ0hfVEFCTEUodGJsLT52aWV3X2RiLnN0ciwgdGJsLT52aWV3 X25hbWUuc3RyKTsKICAgICAgIHJlcz0gVFJVRTsKICAgICAgIGdvdG8gZXJyOwogICAgIH0KQEAg LTkzNSw3ICs5MzUsNyBAQCBsb29wX291dDoKICAgIHsKICAgICAgIGlmIChtb2RlID09IFZJRVdf QUxURVIpCiAgICAgICB7Ci0JbXlfZXJyb3IoRVJfTk9fU1VDSF9UQUJMRSwgTVlGKDApLCB2aWV3 LT5kYiwgdmlldy0+YWxpYXMpOworICAgICAgICB0aGQtPnJhaXNlX0VSX05PX1NVQ0hfVEFCTEUo dmlldy0+ZGIsIHZpZXctPmFsaWFzKTsKICAgICAgICAgZXJyb3I9IC0xOwogICAgICAgICBnb3Rv IGVycjsKICAgICAgIH0KCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX3lhY2MueXknCi0tLSBh L3NxbC9zcWxfeWFjYy55eQkyMDA4LTA4LTIwIDEwOjM0OjQ2ICswMDAwCisrKyBiL3NxbC9zcWxf eWFjYy55eQkyMDA4LTA4LTI3IDIyOjE0OjAzICswMDAwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j bHVkZSAic3BfcGNvbnRleHQuaCIKICNpbmNsdWRlICJzcF9yY29udGV4dC5oIgogI2luY2x1ZGUg InNwLmgiCisjaW5jbHVkZSAic3FsX3NpZ25hbC5oIgogI2luY2x1ZGUgImV2ZW50X3BhcnNlX2Rh dGEuaCIKICNpbmNsdWRlIDxteWlzYW0uaD4KICNpbmNsdWRlIDxteWlzYW1tcmcuaD4KQEAgLTU4 Miw2ICs1ODMsNyBAQCBib29sIHNldHVwX3NlbGVjdF9pbl9wYXJlbnRoZXNlcyhMRVggKmxlCiAg IGVudW0gZW51bV9maWxldHlwZSBmaWxldHlwZTsKICAgZW51bSBoYV9idWlsZF9tZXRob2QgYnVp bGRfbWV0aG9kOwogICBlbnVtIEZvcmVpZ25fa2V5Ojpma19vcHRpb24gbV9ma19vcHRpb247Cisg IERpYWdfY29uZGl0aW9uX2l0ZW1fbmFtZSBkaWFnX2NvbmRpdGlvbl9pdGVtX25hbWU7CiB9CiAK ICV7CkBAIC02NjMsNiArNjY1LDcgQEAgYm9vbCBteV95eW92ZXJmbG93KHNob3J0ICoqYSwgWVlT VFlQRSAqKgogJXRva2VuICBDQVNDQURFRCAgICAgICAgICAgICAgICAgICAgICAvKiBTUUwtMjAw My1SICovCiAldG9rZW4gIENBU0VfU1lNICAgICAgICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAz LVIgKi8KICV0b2tlbiAgQ0FTVF9TWU0gICAgICAgICAgICAgICAgICAgICAgLyogU1FMLTIwMDMt UiAqLworJXRva2VuICBDQVRBTE9HX05BTUVfU1lNICAgICAgICAgICAgICAvKiBTUUwtMjAwMy1O ICovCiAldG9rZW4gIENIQUlOX1NZTSAgICAgICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAzLU4g Ki8KICV0b2tlbiAgQ0hBTkdFCiAldG9rZW4gIENIQU5HRUQKQEAgLTY3MSw2ICs2NzQsNyBAQCBi b29sIG15X3l5b3ZlcmZsb3coc2hvcnQgKiphLCBZWVNUWVBFICoqCiAldG9rZW4gIENIRUNLU1VN X1NZTQogJXRva2VuICBDSEVDS19TWU0gICAgICAgICAgICAgICAgICAgICAvKiBTUUwtMjAwMy1S ICovCiAldG9rZW4gIENJUEhFUl9TWU0KKyV0b2tlbiAgQ0xBU1NfT1JJR0lOX1NZTSAgICAgICAg ICAgICAgLyogU1FMLTIwMDMtTiAqLwogJXRva2VuICBDTElFTlRfU1lNCiAldG9rZW4gIENMT1NF X1NZTSAgICAgICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAzLVIgKi8KICV0b2tlbiAgQ09BTEVT Q0UgICAgICAgICAgICAgICAgICAgICAgLyogU1FMLTIwMDMtTiAqLwpAQCAtNjc5LDYgKzY4Myw3 IEBAIGJvb2wgbXlfeXlvdmVyZmxvdyhzaG9ydCAqKmEsIFlZU1RZUEUgKioKICV0b2tlbiAgQ09M TEFUSU9OX1NZTSAgICAgICAgICAgICAgICAgLyogU1FMLTIwMDMtTiAqLwogJXRva2VuICBDT0xV TU5TCiAldG9rZW4gIENPTFVNTl9TWU0gICAgICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAzLVIg Ki8KKyV0b2tlbiAgQ09MVU1OX05BTUVfU1lNICAgICAgICAgICAgICAgLyogU1FMLTIwMDMtTiAq LwogJXRva2VuICBDT01NRU5UX1NZTQogJXRva2VuICBDT01NSVRURURfU1lNICAgICAgICAgICAg ICAgICAvKiBTUUwtMjAwMy1OICovCiAldG9rZW4gIENPTU1JVF9TWU0gICAgICAgICAgICAgICAg ICAgIC8qIFNRTC0yMDAzLVIgKi8KQEAgLTY4OCwxMCArNjkzLDEzIEBAIGJvb2wgbXlfeXlvdmVy ZmxvdyhzaG9ydCAqKmEsIFlZU1RZUEUgKioKICV0b2tlbiAgQ09NUFJFU1NJT05fU1lNCiAldG9r ZW4gIENPTVBSRVNTSU9OX0FMR09SSVRITV9TWU0KICV0b2tlbiAgQ09OQ1VSUkVOVAotJXRva2Vu ICBDT05ESVRJT05fU1lNICAgICAgICAgICAgICAgICAvKiBTUUwtMjAwMy1OICovCisldG9rZW4g IENPTkRJVElPTl9TWU0gICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAzLVIsIFNRTC0yMDA4LVIg Ki8KICV0b2tlbiAgQ09OTkVDVElPTl9TWU0KICV0b2tlbiAgQ09OU0lTVEVOVF9TWU0KICV0b2tl biAgQ09OU1RSQUlOVCAgICAgICAgICAgICAgICAgICAgLyogU1FMLTIwMDMtUiAqLworJXRva2Vu ICBDT05TVFJBSU5UX0NBVEFMT0dfU1lNICAgICAgICAvKiBTUUwtMjAwMy1OICovCisldG9rZW4g IENPTlNUUkFJTlRfTkFNRV9TWU0gICAgICAgICAgIC8qIFNRTC0yMDAzLU4gKi8KKyV0b2tlbiAg Q09OU1RSQUlOVF9TQ0hFTUFfU1lNICAgICAgICAgLyogU1FMLTIwMDMtTiAqLwogJXRva2VuICBD T05UQUlOU19TWU0gICAgICAgICAgICAgICAgICAvKiBTUUwtMjAwMy1OICovCiAldG9rZW4gIENP TlRFWFRfU1lNCiAldG9rZW4gIENPTlRJTlVFX1NZTSAgICAgICAgICAgICAgICAgIC8qIFNRTC0y MDAzLVIgKi8KQEAgLTcwNSw2ICs3MTMsNyBAQCBib29sIG15X3l5b3ZlcmZsb3coc2hvcnQgKiph LCBZWVNUWVBFICoqCiAldG9rZW4gIENVUkRBVEUgICAgICAgICAgICAgICAgICAgICAgIC8qIE1Z U1FMLUZVTkMgKi8KICV0b2tlbiAgQ1VSUkVOVF9VU0VSICAgICAgICAgICAgICAgICAgLyogU1FM LTIwMDMtUiAqLwogJXRva2VuICBDVVJTT1JfU1lNICAgICAgICAgICAgICAgICAgICAvKiBTUUwt MjAwMy1SICovCisldG9rZW4gIENVUlNPUl9OQU1FX1NZTSAgICAgICAgICAgICAgIC8qIFNRTC0y MDAzLU4gKi8KICV0b2tlbiAgQ1VSVElNRSAgICAgICAgICAgICAgICAgICAgICAgLyogTVlTUUwt RlVOQyAqLwogJXRva2VuICBEQVRBQkFTRQogJXRva2VuICBEQVRBQkFTRVMKQEAgLTkwOCw2ICs5 MTcsNyBAQCBib29sIG15X3l5b3ZlcmZsb3coc2hvcnQgKiphLCBZWVNUWVBFICoqCiAldG9rZW4g IE1FRElVTV9TWU0KICV0b2tlbiAgTUVNT1JZX1NZTQogJXRva2VuICBNRVJHRV9TWU0gICAgICAg ICAgICAgICAgICAgICAvKiBTUUwtMjAwMy1SICovCisldG9rZW4gIE1FU1NBR0VfVEVYVF9TWU0g ICAgICAgICAgICAgIC8qIFNRTC0yMDAzLU4gKi8KICV0b2tlbiAgTUlDUk9TRUNPTkRfU1lNICAg ICAgICAgICAgICAgLyogTVlTUUwtRlVOQyAqLwogJXRva2VuICBNSUdSQVRFX1NZTQogJXRva2Vu ICBNSU5VVEVfTUlDUk9TRUNPTkRfU1lNCkBAIC05MjQsNiArOTM0LDcgQEAgYm9vbCBteV95eW92 ZXJmbG93KHNob3J0ICoqYSwgWVlTVFlQRSAqKgogJXRva2VuICBNVUxUSVBPSU5UCiAldG9rZW4g IE1VTFRJUE9MWUdPTgogJXRva2VuICBNVVRFWF9TWU0KKyV0b2tlbiAgTVlTUUxfRVJSTk9fU1lN CiAldG9rZW4gIE5BTUVTX1NZTSAgICAgICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAzLU4gKi8K ICV0b2tlbiAgTkFNRV9TWU0gICAgICAgICAgICAgICAgICAgICAgLyogU1FMLTIwMDMtTiAqLwog JXRva2VuICBOQVRJT05BTF9TWU0gICAgICAgICAgICAgICAgICAvKiBTUUwtMjAwMy1SICovCkBA IC0xMDI4LDYgKzEwMzksNyBAQCBib29sIG15X3l5b3ZlcmZsb3coc2hvcnQgKiphLCBZWVNUWVBF ICoqCiAldG9rZW4gIFJFUExJQ0FUSU9OCiAldG9rZW4gIFJFUVVJUkVfU1lNCiAldG9rZW4gIFJF U0VUX1NZTQorJXRva2VuICBSRVNJR05BTF9TWU0gICAgICAgICAgICAgICAgICAvKiBTUUwtMjAw My1SICovCiAldG9rZW4gIFJFU09VUkNFUwogJXRva2VuICBSRVNUT1JFX1NZTQogJXRva2VuICBS RVNUUklDVApAQCAtMTA0Niw2ICsxMDU4LDcgQEAgYm9vbCBteV95eW92ZXJmbG93KHNob3J0ICoq YSwgWVlTVFlQRSAqKgogJXRva2VuICBSVFJFRV9TWU0KICV0b2tlbiAgU0FWRVBPSU5UX1NZTSAg ICAgICAgICAgICAgICAgLyogU1FMLTIwMDMtUiAqLwogJXRva2VuICBTQ0hFRFVMRV9TWU0KKyV0 b2tlbiAgU0NIRU1BX05BTUVfU1lNICAgICAgICAgICAgICAgLyogU1FMLTIwMDMtTiAqLwogJXRv a2VuICBTRUNPTkRfTUlDUk9TRUNPTkRfU1lNCiAldG9rZW4gIFNFQ09ORF9TWU0gICAgICAgICAg ICAgICAgICAgIC8qIFNRTC0yMDAzLVIgKi8KICV0b2tlbiAgU0VDVVJJVFlfU1lNICAgICAgICAg ICAgICAgICAgLyogU1FMLTIwMDMtTiAqLwpAQCAtMTA2NCw2ICsxMDc3LDcgQEAgYm9vbCBteV95 eW92ZXJmbG93KHNob3J0ICoqYSwgWVlTVFlQRSAqKgogJXRva2VuICBTSElGVF9SSUdIVCAgICAg ICAgICAgICAgICAgICAvKiBPUEVSQVRPUiAqLwogJXRva2VuICBTSE9XCiAldG9rZW4gIFNIVVRE T1dOCisldG9rZW4gIFNJR05BTF9TWU0gICAgICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAzLVIg Ki8KICV0b2tlbiAgU0lHTkVEX1NZTQogJXRva2VuICBTSU1QTEVfU1lNICAgICAgICAgICAgICAg ICAgICAvKiBTUUwtMjAwMy1OICovCiAldG9rZW4gIFNMQVZFCkBAIC0xMDk3LDYgKzExMTEsNyBA QCBib29sIG15X3l5b3ZlcmZsb3coc2hvcnQgKiphLCBZWVNUWVBFICoqCiAldG9rZW4gIFNUT1JB R0VfU1lNCiAldG9rZW4gIFNUUkFJR0hUX0pPSU4KICV0b2tlbiAgU1RSSU5HX1NZTQorJXRva2Vu ICBTVUJDTEFTU19PUklHSU5fU1lNICAgICAgICAgICAvKiBTUUwtMjAwMy1OICovCiAldG9rZW4g IFNVQkRBVEVfU1lNCiAldG9rZW4gIFNVQkpFQ1RfU1lNCiAldG9rZW4gIFNVQlBBUlRJVElPTlNf U1lNCkBAIC0xMTEzLDYgKzExMjgsNyBAQCBib29sIG15X3l5b3ZlcmZsb3coc2hvcnQgKiphLCBZ WVNUWVBFICoqCiAldG9rZW4gIFRBQkxFX1JFRl9QUklPUklUWQogJXRva2VuICBUQUJMRV9TWU0g ICAgICAgICAgICAgICAgICAgICAvKiBTUUwtMjAwMy1SICovCiAldG9rZW4gIFRBQkxFX0NIRUNL U1VNX1NZTQorJXRva2VuICBUQUJMRV9OQU1FX1NZTSAgICAgICAgICAgICAgICAvKiBTUUwtMjAw My1OICovCiAldG9rZW4gIFRFTVBPUkFSWSAgICAgICAgICAgICAgICAgICAgIC8qIFNRTC0yMDAz LU4gKi8KICV0b2tlbiAgVEVNUFRBQkxFX1NZTQogJXRva2VuICBURVJNSU5BVEVECkBAIC0xMjkx LDYgKzEzMDcsNyBAQCBib29sIG15X3l5b3ZlcmZsb3coc2hvcnQgKiphLCBZWVNUWVBFICoqCiAg ICAgICAgIGZ1bmN0aW9uX2NhbGxfbm9ua2V5d29yZAogICAgICAgICBmdW5jdGlvbl9jYWxsX2dl bmVyaWMKICAgICAgICAgZnVuY3Rpb25fY2FsbF9jb25mbGljdAorICAgICAgICBzaWduYWxfYWxs b3dlZF9leHByCiAKICV0eXBlIDxpdGVtX251bT4KICAgICAgICAgTlVNX2xpdGVyYWwKQEAgLTE0 MjUsNyArMTQ0Miw3IEBAIEVORF9PRl9JTlBVVAogJXR5cGUgPE5PTkU+IGNhc2Vfc3RtdF9zcGVj aWZpY2F0aW9uIHNpbXBsZV9jYXNlX3N0bXQgc2VhcmNoZWRfY2FzZV9zdG10CiAKICV0eXBlIDxu dW0+ICBzcF9kZWNsX2lkZW50cyBzcF9vcHRfaW5vdXQgc3BfaGFuZGxlcl90eXBlIHNwX2hjb25k X2xpc3QKLSV0eXBlIDxzcGNvbmR0eXBlPiBzcF9jb25kIHNwX2hjb25kCisldHlwZSA8c3Bjb25k dHlwZT4gc3BfY29uZCBzcF9oY29uZCBzcWxzdGF0ZSBzaWduYWxfdmFsdWUgb3B0X3NpZ25hbF92 YWx1ZQogJXR5cGUgPHNwYmxvY2s+IHNwX2RlY2xzIHNwX2RlY2wKICV0eXBlIDxsZXg+IHNwX2N1 cnNvcl9zdG10CiAldHlwZSA8c3BuYW1lPiBzcF9uYW1lCkBAIC0xNDMzLDYgKzE0NTAsOSBAQCBF TkRfT0ZfSU5QVVQKICV0eXBlIDxudW0+IGluZGV4X2hpbnRfY2xhdXNlCiAldHlwZSA8ZmlsZXR5 cGU+IGRhdGFfb3JfeG1sCiAKKyV0eXBlIDxOT05FPiBzaWduYWxfc3RtdCByZXNpZ25hbF9zdG10 CisldHlwZSA8ZGlhZ19jb25kaXRpb25faXRlbV9uYW1lPiBzaWduYWxfY29uZGl0aW9uX2luZm9y bWF0aW9uX2l0ZW1fbmFtZQorCiAldHlwZSA8Tk9ORT4KICAgICAgICAgJy0nICcrJyAnKicgJy8n ICclJyAnKCcgJyknCiAgICAgICAgICcsJyAnIScgJ3snICd9JyAnJicgJ3wnIEFORF9TWU0gT1Jf U1lNIE9SX09SX1NZTSBCRVRXRUVOX1NZTSBDQVNFX1NZTQpAQCAtMTU1MywxMiArMTU3MywxNCBA QCBzdGF0ZW1lbnQ6CiAgICAgICAgIHwgcmVwYWlyCiAgICAgICAgIHwgcmVwbGFjZQogICAgICAg ICB8IHJlc2V0CisgICAgICAgIHwgcmVzaWduYWxfc3RtdAogICAgICAgICB8IHJlc3RvcmUKICAg ICAgICAgfCByZXZva2UKICAgICAgICAgfCByb2xsYmFjawogICAgICAgICB8IHNhdmVwb2ludAog ICAgICAgICB8IHNlbGVjdAogICAgICAgICB8IHNldAorICAgICAgICB8IHNpZ25hbF9zdG10CiAg ICAgICAgIHwgc2hvdwogICAgICAgICB8IHNsYXZlCiAgICAgICAgIHwgc3RhcnQKQEAgLTI2Mzgs NyArMjY2MCwxMSBAQCBzcF9jb25kOgogICAgICAgICAgICAgJCQtPnR5cGU9IHNwX2NvbmRfdHlw ZV90OjpudW1iZXI7CiAgICAgICAgICAgICAkJC0+bXlzcWxlcnI9ICQxOwogICAgICAgICAgIH0K LSAgICAgICAgfCBTUUxTVEFURV9TWU0gb3B0X3ZhbHVlIFRFWFRfU1RSSU5HX2xpdGVyYWwKKyAg ICAgICAgfCBzcWxzdGF0ZQorICAgICAgICA7CisKK3NxbHN0YXRlOgorICAgICAgICAgIFNRTFNU QVRFX1NZTSBvcHRfdmFsdWUgVEVYVF9TVFJJTkdfbGl0ZXJhbAogICAgICAgICAgIHsgLyogU1FM U1RBVEUgKi8KICAgICAgICAgICAgIGlmICghc3BfY29uZF9jaGVjaygmJDMpKQogICAgICAgICAg ICAgewpAQCAtMjY0OSw4ICsyNjc1LDggQEAgc3BfY29uZDoKICAgICAgICAgICAgIGlmICgkJCA9 PSBOVUxMKQogICAgICAgICAgICAgICBNWVNRTF9ZWUFCT1JUOwogICAgICAgICAgICAgJCQtPnR5 cGU9IHNwX2NvbmRfdHlwZV90OjpzdGF0ZTsKLSAgICAgICAgICAgIG1lbWNweSgkJC0+c3Fsc3Rh dGUsICQzLnN0ciwgNSk7Ci0gICAgICAgICAgICAkJC0+c3Fsc3RhdGVbNV09ICdcMCc7CisgICAg ICAgICAgICBtZW1jcHkoJCQtPnNxbHN0YXRlLCAkMy5zdHIsIFNRTFNUQVRFX0xFTkdUSCk7Cisg ICAgICAgICAgICAkJC0+c3Fsc3RhdGVbU1FMU1RBVEVfTEVOR1RIXT0gJ1wwJzsKICAgICAgICAg ICB9CiAgICAgICAgIDsKIApAQCAtMjY5Niw2ICsyNzIyLDE2MiBAQCBzcF9oY29uZDoKICAgICAg ICAgICB9CiAgICAgICAgIDsKIAorc2lnbmFsX3N0bXQ6CisgICAgICAgICAgU0lHTkFMX1NZTSBz aWduYWxfdmFsdWUgb3B0X3NldF9zaWduYWxfaW5mb3JtYXRpb24KKyAgICAgICAgICB7CisgICAg ICAgICAgICBUSEQgKnRoZD0gWVlUSEQ7CisgICAgICAgICAgICBMRVggKmxleD0gdGhkLT5sZXg7 CisgICAgICAgICAgICBZYWNjX3N0YXRlICpzdGF0ZT0gJiB0aGQtPm1fcGFyc2VyX3N0YXRlLT5t X3lhY2M7CisKKyAgICAgICAgICAgIGxleC0+c3FsX2NvbW1hbmQ9IFNRTENPTV9TSUdOQUw7Cisg ICAgICAgICAgICBsZXgtPm1fc3RtdD0gbmV3ICh0aGQtPm1lbV9yb290KSBTUUxDT01fc2lnbmFs KGxleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0ZS0+bV9zZXRfc2lnbmFsX2luZm8pOworICAgICAgICAgICAg aWYgKGxleC0+bV9zdG10ID09IE5VTEwpCisgICAgICAgICAgICAgIE1ZU1FMX1lZQUJPUlQ7Cisg ICAgICAgICAgfQorICAgICAgICA7CisKK3NpZ25hbF92YWx1ZToKKyAgICAgICAgICBpZGVudAor ICAgICAgICAgIHsKKyAgICAgICAgICAgIExFWCAqbGV4PSBMZXg7CisgICAgICAgICAgICBzcF9j b25kX3R5cGVfdCAqY29uZDsKKyAgICAgICAgICAgIGlmIChsZXgtPnNwY29udCA9PSBOVUxMKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBTSUdOQUwgZm9vIGNhbm5vdCBiZSB1c2Vk IG91dHNpZGUgb2Ygc3RvcmVkIHByb2dyYW1zICovCisgICAgICAgICAgICAgIG15X2Vycm9yKEVS X1NQX0NPTkRfTUlTTUFUQ0gsIE1ZRigwKSwgJDEuc3RyKTsKKyAgICAgICAgICAgICAgTVlTUUxf WVlBQk9SVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbmQ9IGxleC0+c3Bjb250LT5m aW5kX2NvbmQoJiQxKTsKKyAgICAgICAgICAgIGlmIChjb25kID09IE5VTEwpCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIG15X2Vycm9yKEVSX1NQX0NPTkRfTUlTTUFUQ0gsIE1ZRigwKSwg JDEuc3RyKTsKKyAgICAgICAgICAgICAgTVlTUUxfWVlBQk9SVDsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGlmIChjb25kLT50eXBlICE9IHNwX2NvbmRfdHlwZV90OjpzdGF0ZSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgbXlfZXJyb3IoRVJfU0lHTkFMX0JBRF9DT05ESVRJT05f VFlQRSwgTVlGKDApKTsKKyAgICAgICAgICAgICAgTVlTUUxfWVlBQk9SVDsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgICQkPSBjb25kOworICAgICAgICAgIH0KKyAgICAgICAgfCBzcWxzdGF0 ZQorICAgICAgICAgIHsgJCQ9ICQxOyB9CisgICAgICAgIDsKKworb3B0X3NpZ25hbF92YWx1ZToK KyAgICAgICAgICAvKiBlbXB0eSAqLworICAgICAgICAgIHsgJCQ9IE5VTEw7IH0KKyAgICAgICAg fCBzaWduYWxfdmFsdWUKKyAgICAgICAgICB7ICQkPSAkMTsgfQorICAgICAgICA7CisKK29wdF9z ZXRfc2lnbmFsX2luZm9ybWF0aW9uOgorICAgICAgICAgIC8qIGVtcHR5ICovCisgICAgICAgICAg eworICAgICAgICAgICAgWVlUSEQtPm1fcGFyc2VyX3N0YXRlLT5tX3lhY2MubV9zZXRfc2lnbmFs X2luZm8uY2xlYXIoKTsKKyAgICAgICAgICB9CisgICAgICAgIHwgU0VUIHNpZ25hbF9pbmZvcm1h dGlvbl9pdGVtX2xpc3QKKyAgICAgICAgOworCitzaWduYWxfaW5mb3JtYXRpb25faXRlbV9saXN0 OgorICAgICAgICAgIHNpZ25hbF9jb25kaXRpb25faW5mb3JtYXRpb25faXRlbV9uYW1lIEVRIHNp Z25hbF9hbGxvd2VkX2V4cHIKKyAgICAgICAgICB7CisgICAgICAgICAgICBTZXRfc2lnbmFsX2lu Zm9ybWF0aW9uICppbmZvOworICAgICAgICAgICAgaW5mbz0gJiBZWVRIRC0+bV9wYXJzZXJfc3Rh dGUtPm1feWFjYy5tX3NldF9zaWduYWxfaW5mbzsKKyAgICAgICAgICAgIGludCBpbmRleD0gKGlu dCkgJDE7CisgICAgICAgICAgICBpbmZvLT5jbGVhcigpOworICAgICAgICAgICAgaW5mby0+bV9p dGVtW2luZGV4XT0gJDM7CisgICAgICAgICAgfQorICAgICAgICB8IHNpZ25hbF9pbmZvcm1hdGlv bl9pdGVtX2xpc3QgJywnCisgICAgICAgICAgc2lnbmFsX2NvbmRpdGlvbl9pbmZvcm1hdGlvbl9p dGVtX25hbWUgRVEgc2lnbmFsX2FsbG93ZWRfZXhwcgorICAgICAgICAgIHsKKyAgICAgICAgICAg IFNldF9zaWduYWxfaW5mb3JtYXRpb24gKmluZm87CisgICAgICAgICAgICBpbmZvPSAmIFlZVEhE LT5tX3BhcnNlcl9zdGF0ZS0+bV95YWNjLm1fc2V0X3NpZ25hbF9pbmZvOworICAgICAgICAgICAg aW50IGluZGV4PSAoaW50KSAkMzsKKyAgICAgICAgICAgIGlmIChpbmZvLT5tX2l0ZW1baW5kZXhd ICE9IE5VTEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIG15X2Vycm9yKEVSX0RVUF9T SUdOQUxfU0VULCBNWUYoMCksCisgICAgICAgICAgICAgICAgICAgICAgIERpYWdfY29uZGl0aW9u X2l0ZW1fbmFtZXNbaW5kZXhdLnN0cik7CisgICAgICAgICAgICAgIE1ZU1FMX1lZQUJPUlQ7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvLT5tX2l0ZW1baW5kZXhdPSAkNTsKKyAgICAg ICAgICB9CisgICAgICAgIDsKKworLyoKKyAgT25seSBhIGxpbWl0ZWQgc3Vic2V0IG9mIDxleHBy PiBhcmUgYWxsb3dlZCBpbiBTSUdOQUwvUkVTSUdOQUwuCisqLworc2lnbmFsX2FsbG93ZWRfZXhw cjoKKyAgICAgICAgICBsaXRlcmFsCisgICAgICAgICAgeyAkJD0gJDE7IH0KKyAgICAgICAgfCB2 YXJpYWJsZQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgkMS0+dHlwZSgpID09IEl0ZW06 OkZVTkNfSVRFTSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgSXRlbV9mdW5jICppdGVt PSAoSXRlbV9mdW5jKikgJDE7CisgICAgICAgICAgICAgIGlmIChpdGVtLT5mdW5jdHlwZSgpID09 IEl0ZW1fZnVuYzo6U1VTRVJWQVJfRlVOQykKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgIC8qCisgICAgICAgICAgICAgICAgICBEb24ndCBhbGxvdyB0aGUgZm9sbG93aW5nIHN5bnRh eDoKKyAgICAgICAgICAgICAgICAgICAgU0lHTkFML1JFU0lHTkFMIC4uLgorICAgICAgICAgICAg ICAgICAgICBTRVQgPHNpZ25hbCBjb25kaXRpb24gaXRlbSBuYW1lPiA9IEBmb28gOj0gZXhwcgor ICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbXlfcGFyc2VfZXJyb3IoRVIoRVJf U1lOVEFYX0VSUk9SKSk7CisgICAgICAgICAgICAgICAgTVlTUUxfWVlBQk9SVDsKKyAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgJCQ9ICQxOworICAgICAgICAgIH0K KyAgICAgICAgfCBzaW1wbGVfaWRlbnQKKyAgICAgICAgICB7ICQkPSAkMTsgfQorICAgICAgICA7 CisKKy8qIGNvbmRpdGlvbnMgdGhhdCBjYW4gYmUgc2V0IGluIHNpZ25hbCAvIHJlc2lnbmFsICov CitzaWduYWxfY29uZGl0aW9uX2luZm9ybWF0aW9uX2l0ZW1fbmFtZToKKyAgICAgICAgICBDTEFT U19PUklHSU5fU1lNCisgICAgICAgICAgeyAkJD0gRElBR19DTEFTU19PUklHSU47IH0KKyAgICAg ICAgfCBTVUJDTEFTU19PUklHSU5fU1lNCisgICAgICAgICAgeyAkJD0gRElBR19TVUJDTEFTU19P UklHSU47IH0KKyAgICAgICAgfCBDT05TVFJBSU5UX0NBVEFMT0dfU1lNCisgICAgICAgICAgeyAk JD0gRElBR19DT05TVFJBSU5UX0NBVEFMT0c7IH0KKyAgICAgICAgfCBDT05TVFJBSU5UX1NDSEVN QV9TWU0KKyAgICAgICAgICB7ICQkPSBESUFHX0NPTlNUUkFJTlRfU0NIRU1BOyB9CisgICAgICAg IHwgQ09OU1RSQUlOVF9OQU1FX1NZTQorICAgICAgICAgIHsgJCQ9IERJQUdfQ09OU1RSQUlOVF9O QU1FOyB9CisgICAgICAgIHwgQ0FUQUxPR19OQU1FX1NZTQorICAgICAgICAgIHsgJCQ9IERJQUdf Q0FUQUxPR19OQU1FOyB9CisgICAgICAgIHwgU0NIRU1BX05BTUVfU1lNCisgICAgICAgICAgeyAk JD0gRElBR19TQ0hFTUFfTkFNRTsgfQorICAgICAgICB8IFRBQkxFX05BTUVfU1lNCisgICAgICAg ICAgeyAkJD0gRElBR19UQUJMRV9OQU1FOyB9CisgICAgICAgIHwgQ09MVU1OX05BTUVfU1lNCisg ICAgICAgICAgeyAkJD0gRElBR19DT0xVTU5fTkFNRTsgfQorICAgICAgICB8IENVUlNPUl9OQU1F X1NZTQorICAgICAgICAgIHsgJCQ9IERJQUdfQ1VSU09SX05BTUU7IH0KKyAgICAgICAgfCBNRVNT QUdFX1RFWFRfU1lNCisgICAgICAgICAgeyAkJD0gRElBR19NRVNTQUdFX1RFWFQ7IH0KKyAgICAg ICAgfCBNWVNRTF9FUlJOT19TWU0KKyAgICAgICAgICB7ICQkPSBESUFHX01ZU1FMX0VSUk5POyB9 CisgICAgICAgIDsKKworcmVzaWduYWxfc3RtdDoKKyAgICAgICAgICBSRVNJR05BTF9TWU0gb3B0 X3NpZ25hbF92YWx1ZSBvcHRfc2V0X3NpZ25hbF9pbmZvcm1hdGlvbgorICAgICAgICAgIHsKKyAg ICAgICAgICAgIFRIRCAqdGhkPSBZWVRIRDsKKyAgICAgICAgICAgIExFWCAqbGV4PSB0aGQtPmxl eDsKKyAgICAgICAgICAgIFlhY2Nfc3RhdGUgKnN0YXRlPSAmIHRoZC0+bV9wYXJzZXJfc3RhdGUt Pm1feWFjYzsKKworICAgICAgICAgICAgbGV4LT5zcWxfY29tbWFuZD0gU1FMQ09NX1JFU0lHTkFM OworICAgICAgICAgICAgbGV4LT5tX3N0bXQ9IG5ldyAodGhkLT5tZW1fcm9vdCkgU1FMQ09NX3Jl c2lnbmFsKGxleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1fc2V0X3NpZ25hbF9pbmZvKTsKKyAg ICAgICAgICAgIGlmIChsZXgtPm1fc3RtdCA9PSBOVUxMKQorICAgICAgICAgICAgICBNWVNRTF9Z WUFCT1JUOworICAgICAgICAgIH0KKyAgICAgICAgOworCiBzcF9kZWNsX2lkZW50czoKICAgICAg ICAgICBpZGVudAogICAgICAgICAgIHsKQEAgLTExNzY4LDE0ICsxMTk1MCwxNyBAQCBrZXl3b3Jk X3NwOgogICAgICAgICB8IEJPT0xFQU5fU1lNICAgICAgICAgICAgICB7fQogICAgICAgICB8IEJU UkVFX1NZTSAgICAgICAgICAgICAgICB7fQogICAgICAgICB8IENBU0NBREVEICAgICAgICAgICAg ICAgICB7fQorICAgICAgICB8IENBVEFMT0dfTkFNRV9TWU0gICAgICAgICB7fQogICAgICAgICB8 IENIQUlOX1NZTSAgICAgICAgICAgICAgICB7fQogICAgICAgICB8IENIQU5HRUQgICAgICAgICAg ICAgICAgICB7fQogICAgICAgICB8IENJUEhFUl9TWU0gICAgICAgICAgICAgICB7fQogICAgICAg ICB8IENMSUVOVF9TWU0gICAgICAgICAgICAgICB7fQorICAgICAgICB8IENMQVNTX09SSUdJTl9T WU0gICAgICAgICB7fQogICAgICAgICB8IENPQUxFU0NFICAgICAgICAgICAgICAgICB7fQogICAg ICAgICB8IENPREVfU1lNICAgICAgICAgICAgICAgICB7fQogICAgICAgICB8IENPTExBVElPTl9T WU0gICAgICAgICAgICB7fQogICAgICAgICB8IENPTFVNTl9GT1JNQVRfU1lNICAgICAgICB7fQor ICAgICAgICB8IENPTFVNTl9OQU1FX1NZTSAgICAgICAgICB7fQogICAgICAgICB8IENPTFVNTlMg ICAgICAgICAgICAgICAgICB7fQogICAgICAgICB8IENPTU1JVFRFRF9TWU0gICAgICAgICAgICB7 fQogICAgICAgICB8IENPTVBBQ1RfU1lNICAgICAgICAgICAgICB7fQpAQCAtMTE3ODYsMTAgKzEx OTcxLDE0IEBAIGtleXdvcmRfc3A6CiAgICAgICAgIHwgQ09OQ1VSUkVOVCAgICAgICAgICAgICAg IHt9CiAgICAgICAgIHwgQ09OTkVDVElPTl9TWU0gICAgICAgICAgIHt9CiAgICAgICAgIHwgQ09O U0lTVEVOVF9TWU0gICAgICAgICAgIHt9CisgICAgICAgIHwgQ09OU1RSQUlOVF9DQVRBTE9HX1NZ TSAgIHt9CisgICAgICAgIHwgQ09OU1RSQUlOVF9TQ0hFTUFfU1lNICAgIHt9CisgICAgICAgIHwg Q09OU1RSQUlOVF9OQU1FX1NZTSAgICAgIHt9CiAgICAgICAgIHwgQ09OVEVYVF9TWU0gICAgICAg ICAgICAgIHt9CiAgICAgICAgIHwgQ09OVFJJQlVUT1JTX1NZTSAgICAgICAgIHt9CiAgICAgICAg IHwgQ1BVX1NZTSAgICAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgQ1VCRV9TWU0gICAgICAg ICAgICAgICAgIHt9CisgICAgICAgIHwgQ1VSU09SX05BTUVfU1lNICAgICAgICAgIHt9CiAgICAg ICAgIHwgREFUQV9TWU0gICAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgREFUQUZJTEVfU1lN ICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgREFURVRJTUUgICAgICAgICAgICAgICAgIHt9CkBA IC0xMTg4MSw2ICsxMjA3MCw3IEBAIGtleXdvcmRfc3A6CiAgICAgICAgIHwgTUVESVVNX1NZTSAg ICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgTUVNT1JZX1NZTSAgICAgICAgICAgICAgIHt9CiAg ICAgICAgIHwgTUVSR0VfU1lNICAgICAgICAgICAgICAgIHt9CisgICAgICAgIHwgTUVTU0FHRV9U RVhUX1NZTSAgICAgICAgIHt9CiAgICAgICAgIHwgTUlDUk9TRUNPTkRfU1lNICAgICAgICAgIHt9 CiAgICAgICAgIHwgTUlHUkFURV9TWU0gICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgTUlOVVRF X1NZTSAgICAgICAgICAgICAgIHt9CkBAIC0xMTg5Miw2ICsxMjA4Miw3IEBAIGtleXdvcmRfc3A6 CiAgICAgICAgIHwgTVVMVElQT0lOVCAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgTVVMVElQ T0xZR09OICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgTVVURVhfU1lNICAgICAgICAgICAgICAg IHt9CisgICAgICAgIHwgTVlTUUxfRVJSTk9fU1lNICAgICAgICAgIHt9CiAgICAgICAgIHwgTkFN RV9TWU0gICAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgTkFNRVNfU1lNICAgICAgICAgICAg ICAgIHt9CiAgICAgICAgIHwgTkFUSU9OQUxfU1lNICAgICAgICAgICAgIHt9CkBAIC0xMTk1Niw2 ICsxMjE0Nyw3IEBAIGtleXdvcmRfc3A6CiAgICAgICAgIHwgUk9XX1NZTSAgICAgICAgICAgICAg ICAgIHt9CiAgICAgICAgIHwgUlRSRUVfU1lNICAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwg U0NIRURVTEVfU1lNICAgICAgICAgICAgIHt9CisgICAgICAgIHwgU0NIRU1BX05BTUVfU1lNICAg ICAgICAgIHt9CiAgICAgICAgIHwgU0VDT05EX1NZTSAgICAgICAgICAgICAgIHt9CiAgICAgICAg IHwgU0VSSUFMX1NZTSAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgU0VSSUFMSVpBQkxFX1NZ TSAgICAgICAgIHt9CkBAIC0xMTk3NCw2ICsxMjE2Niw3IEBAIGtleXdvcmRfc3A6CiAgICAgICAg IHwgU1RBVFVTX1NZTSAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgU1RPUkFHRV9TWU0gICAg ICAgICAgICAgIHt9CiAgICAgICAgIHwgU1RSSU5HX1NZTSAgICAgICAgICAgICAgIHt9CisgICAg ICAgIHwgU1VCQ0xBU1NfT1JJR0lOX1NZTSAgICAgIHt9CiAgICAgICAgIHwgU1VCREFURV9TWU0g ICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgU1VCSkVDVF9TWU0gICAgICAgICAgICAgIHt9CiAg ICAgICAgIHwgU1VCUEFSVElUSU9OX1NZTSAgICAgICAgIHt9CkBAIC0xMTk4Miw2ICsxMjE3NSw3 IEBAIGtleXdvcmRfc3A6CiAgICAgICAgIHwgU1VTUEVORF9TWU0gICAgICAgICAgICAgIHt9CiAg ICAgICAgIHwgU1dBUFNfU1lNICAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgU1dJVENIRVNf U1lNICAgICAgICAgICAgIHt9CisgICAgICAgIHwgVEFCTEVfTkFNRV9TWU0gICAgICAgICAgIHt9 CiAgICAgICAgIHwgVEFCTEVTICAgICAgICAgICAgICAgICAgIHt9CiAgICAgICAgIHwgVEFCTEVf Q0hFQ0tTVU1fU1lNICAgICAgIHt9CiAgICAgICAgIHwgVEFCTEVTUEFDRSAgICAgICAgICAgICAg IHt9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3RhYmxlLmNjJwotLS0gYS9zcWwvdGFibGUuY2MJ MjAwOC0wOC0wNyAwMzowNTozMyArMDAwMAorKysgYi9zcWwvdGFibGUuY2MJMjAwOC0wOC0yNyAy MjoxNDowMyArMDAwMApAQCAtMjMwNCw3ICsyMzA0LDcgQEAgdm9pZCBvcGVuX3RhYmxlX2Vycm9y KFRBQkxFX1NIQVJFICpzaGFyZQogICBjYXNlIDc6CiAgIGNhc2UgMToKICAgICBpZiAoZGJfZXJy bm8gPT0gRU5PRU5UKQotICAgICAgbXlfZXJyb3IoRVJfTk9fU1VDSF9UQUJMRSwgTVlGKDApLCBz aGFyZS0+ZGIuc3RyLCBzaGFyZS0+dGFibGVfbmFtZS5zdHIpOworICAgICAgY3VycmVudF90aGQt PnJhaXNlX0VSX05PX1NVQ0hfVEFCTEUoc2hhcmUtPmRiLnN0ciwgc2hhcmUtPnRhYmxlX25hbWUu c3RyKTsKICAgICBlbHNlCiAgICAgewogICAgICAgc3RyeG1vdihidWZmLCBzaGFyZS0+bm9ybWFs aXplZF9wYXRoLnN0ciwgcmVnX2V4dCwgTnVsbFMpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC90 aHJfbWFsbG9jLmNjJwotLS0gYS9zcWwvdGhyX21hbGxvYy5jYwkyMDA4LTA4LTE4IDE4OjEyOjQ2 ICswMDAwCisrKyBiL3NxbC90aHJfbWFsbG9jLmNjCTIwMDgtMDgtMjcgMjI6MTQ6MDMgKzAwMDAK QEAgLTQ0LDkgKzQ0LDkgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgICAgcmV0dXJuZWQgaW4gdGhl IGVycm9yIHBhY2tldC4KICAgICAgICAgICAtIFNIT1cgRVJST1IvU0hPVyBXQVJOSU5HUyBtYXkg YmUgZW1wdHkuCiAgICAgICAgICovCi0gICAgICAgIHRoZC0+bWFpbl9kYS5zZXRfZXJyb3Jfc3Rh dHVzKHRoZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVJfT1VUX09G X1JFU09VUkNFUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVIoRVJf T1VUX09GX1JFU09VUkNFUykpOworICAgICAgICB0aGQtPm1haW5fZGEuc2V0X2RlZmF1bHRfZXJy b3Jfc3RhdHVzKHRoZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFUl9PVVRfT0ZfUkVTT1VSQ0VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVSKEVSX09VVF9PRl9SRVNPVVJDRVMpKTsKICAgICAgIH0KICAgICB9 CiAgIH0KCj09PSBtb2RpZmllZCBmaWxlICdzcWwvdW5pcmVnLmNjJwotLS0gYS9zcWwvdW5pcmVn LmNjCTIwMDgtMDctMjQgMTE6MzM6MzUgKzAwMDAKKysrIGIvc3FsL3VuaXJlZy5jYwkyMDA4LTA4 LTI3IDIyOjE0OjAzICswMDAwCkBAIC01NiwxMCArNTYsNyBAQCBzdGF0aWMgYm9vbCBtYWtlX2Vt cHR5X3JlYyhUSEQgKnRoZCwgaW50CiAKIHN0cnVjdCBQYWNrX2hlYWRlcl9lcnJvcl9oYW5kbGVy OiBwdWJsaWMgSW50ZXJuYWxfZXJyb3JfaGFuZGxlcgogewotICB2aXJ0dWFsIGJvb2wgaGFuZGxl X2Vycm9yKHVpbnQgc3FsX2Vycm5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUxfRVJST1I6 OmVudW1fd2FybmluZ19sZXZlbCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBU SEQgKnRoZCk7CisgIHZpcnR1YWwgYm9vbCBoYW5kbGVfY29uZGl0aW9uKFRIRCAqdGhkLCBjb25z dCBTUUxfY29uZGl0aW9uICpjb25kKTsKICAgYm9vbCBpc19oYW5kbGVkOwogICBQYWNrX2hlYWRl cl9lcnJvcl9oYW5kbGVyKCkgOmlzX2hhbmRsZWQoRkFMU0UpIHt9CiB9OwpAQCAtNjcsMTIgKzY0 LDkgQEAgc3RydWN0IFBhY2tfaGVhZGVyX2Vycm9yX2hhbmRsZXI6IHB1YmxpYwogCiBib29sCiBQ YWNrX2hlYWRlcl9lcnJvcl9oYW5kbGVyOjoKLWhhbmRsZV9lcnJvcih1aW50IHNxbF9lcnJubywK LSAgICAgICAgICAgICBjb25zdCBjaGFyICogLyogbWVzc2FnZSAqLywKLSAgICAgICAgICAgICBN WVNRTF9FUlJPUjo6ZW51bV93YXJuaW5nX2xldmVsIC8qIGxldmVsICovLAotICAgICAgICAgICAg IFRIRCAqIC8qIHRoZCAqLykKK2hhbmRsZV9jb25kaXRpb24oVEhEICosIGNvbnN0IFNRTF9jb25k aXRpb24gKmNvbmQpCiB7Ci0gIGlzX2hhbmRsZWQ9IChzcWxfZXJybm8gPT0gRVJfVE9PX01BTllf RklFTERTKTsKKyAgaXNfaGFuZGxlZD0gKGNvbmQtPmdldF9zcWxfZXJybm8oKSA9PSBFUl9UT09f TUFOWV9GSUVMRFMpOwogICByZXR1cm4gaXNfaGFuZGxlZDsKIH0KIAoK