From: Marc Alff Date: October 10 2011 10:34am Subject: bzr push into mysql-trunk-wl5863 branch (marc.alff:3412 to 3414) List-Archive: http://lists.mysql.com/commits/141370 Message-Id: <201110101034.p9AAYKCU023679@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM0MTQgTWFyYyBBbGZmCTIwMTEtMTAtMTAgW21lcmdlXQogICAgICBNZXJnZSBteXNxbC10cnVu ayAtLT4gbXlzcWwtdHJ1bmstd2w1ODYzCgogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3Rk X2RhdGEvYnVnMTE3NDc4ODctYmluLjAwMDAwMgogICAgICBteXNxbC10ZXN0L3N0ZF9kYXRhL2J1 ZzQ4NjMzLkFSTQogICAgICBteXNxbC10ZXN0L3N0ZF9kYXRhL2J1ZzQ4NjMzLkFSWgogICAgICBt eXNxbC10ZXN0L3N0ZF9kYXRhL2J1ZzQ4NjMzLmZybQogICAgICBteXNxbC10ZXN0L3N1aXRlL3Jw bC9yL2JpbmxvZy1oZXhkdW1wLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L2Jp bmxvZy1oZXhkdW1wLnRlc3QKICAgIG1vZGlmaWVkOgogICAgICBteXNxbC10ZXN0L2NvbGxlY3Rp b25zL2RlZmF1bHQuZXhwZXJpbWVudGFsCiAgICAgIG15c3FsLXRlc3Qvci9hcmNoaXZlLnJlc3Vs dAogICAgICBteXNxbC10ZXN0L3IvcGFydGl0aW9uX2lubm9kYi5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9yL3BhcnRpdGlvbl9teWlzYW0ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBs L3QvcnBsX3BhcmFsbGVsX3N3aXRjaF9zZXF1ZW50aWFsLnRlc3QKICAgICAgbXlzcWwtdGVzdC90 L2FyY2hpdmUudGVzdAogICAgICBteXNxbC10ZXN0L3QvcGFydGl0aW9uX2lubm9kYi50ZXN0CiAg ICAgIG15c3FsLXRlc3QvdC9wYXJ0aXRpb25fbXlpc2FtLnRlc3QKICAgICAgbXlzcWwtdGVzdC92 YWxncmluZC5zdXBwCiAgICAgIHNjcmlwdHMvbXlzcWxfaW5zdGFsbF9kYi5wbC5pbgogICAgICBz Y3JpcHRzL215c3FsX2luc3RhbGxfZGIuc2gKICAgICAgc3FsL2hhX3BhcnRpdGlvbi5jYwogICAg ICBzcWwvbG9nX2V2ZW50LmNjCiAgICAgIHNxbC9ycGxfaW5mb19maWxlLmNjCiAgICAgIHNxbC9y cGxfcmxpX3BkYi5jYwogICAgICBzcWwvc2hhcmUvZXJybXNnLXV0ZjgudHh0CiAgICAgIHNxbC9z cWxfdGFibGUuY2MKICAgICAgc3FsL3RhYmxlLmNjCiAgICAgIHNxbC91ZGZfZXhhbXBsZS5jCiAg ICAgIHN0b3JhZ2UvYXJjaGl2ZS9hemlvLmMKICAgICAgc3RvcmFnZS9hcmNoaXZlL2hhX2FyY2hp dmUuY2MKICAgICAgc3RvcmFnZS9hcmNoaXZlL2hhX2FyY2hpdmUuaAogICAgICBzdG9yYWdlL3Bl cmZzY2hlbWEvdGFibGVfZXdzX2J5X3RocmVhZF9ieV9ldmVudF9uYW1lLmNjCiAgICAgIHN0b3Jh Z2UvcGVyZnNjaGVtYS90YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lLmNjCiAgICAg IHN0b3JhZ2UvcGVyZnNjaGVtYS90YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9pbnN0YW5jZS5jYwog ICAgICBzdG9yYWdlL3BlcmZzY2hlbWEvdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2Uu aAogMzQxMyBNYXJjIEFsZmYJMjAxMS0xMC0xMCBbbWVyZ2VdCiAgICAgIE1lcmdlIG15c3FsLXRy dW5rIC0tPiBteXNxbC10cnVuay13bDU4NjMKCiAgICBtb2RpZmllZDoKICAgICAgaW5jbHVkZS9t eV9wdGhyZWFkLmgKIDM0MTIgTWFyYyBBbGZmCTIwMTEtMTAtMDYgW21lcmdlXQogICAgICBNZXJn ZSBteXNxbC10cnVuayAtLT4gbXlzcWwtdHJ1bmstd2w1ODYzCgogICAgcmVtb3ZlZDoKICAgICAg bXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9kZWZhdWx0LnJlbGVhc2UKICAgICAgbXlzcWwtdGVzdC9l eHRyYS9ycGxfdGVzdHMvcnBsX2luc2VydF9kdXBsaWNhdGUudGVzdAogICAgICBteXNxbC10ZXN0 L3Ivam9pbl9jYWNoZV9ia2Ffbm9ibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9qb2luX25l c3RlZF9ia2Ffbm9ibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9qb2luX291dGVyX2JrYV9u b2JubC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3NlbGVjdF9hbGxfYmthX25vYm5sLnJlc3Vs dAogICAgICBteXNxbC10ZXN0L3Ivc2VsZWN0X2ljcF9tcnJfYmthX25vYm5sLnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3Ivc2VsZWN0X25vbmVfYmthX25vYm5sLnJlc3VsdAogICAgICBteXNxbC10 ZXN0L3Ivc3VicXVlcnlfYWxsX2JrYV9ub2JubC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1 YnF1ZXJ5X25vbWF0X25vc2pfYmthX25vYm5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3Vi cXVlcnlfbm9uZV9ia2Ffbm9ibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJxdWVyeV9z al9hbGxfYmthX25vYm5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfZHVw c3dlZWRfYmthX25vYm5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfZmly c3RtYXRjaF9ia2Ffbm9ibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJxdWVyeV9zal9p bm5vZGJfYWxsX2JrYV9ub2JubC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X3Nq X2lubm9kYl9ub25lX2JrYV9ub2JubC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5 X3NqX2xvb3Nlc2Nhbl9ia2Ffbm9ibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJxdWVy eV9zal9tYXRfYmthX25vYm5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pf bm9uZV9ia2Ffbm9ibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX2lu c2VydF9kdXBsaWNhdGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX2lu c2VydF9zZWxlY3QucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3QvcnBsX2luc2Vy dF9kdXBsaWNhdGUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9pbnNlcnRf c2VsZWN0LnRlc3QKICAgICAgbXlzcWwtdGVzdC90L2pvaW5fY2FjaGVfYmthX25vYm5sLnRlc3QK ICAgICAgbXlzcWwtdGVzdC90L2pvaW5fbmVzdGVkX2JrYV9ub2JubC50ZXN0CiAgICAgIG15c3Fs LXRlc3QvdC9qb2luX291dGVyX2JrYV9ub2JubC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zZWxl Y3RfYWxsX2JrYV9ub2JubC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zZWxlY3RfaWNwX21ycl9i a2Ffbm9ibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc2VsZWN0X25vbmVfYmthX25vYm5sLnRl c3QKICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X2FsbF9ia2Ffbm9ibmwudGVzdAogICAgICBt eXNxbC10ZXN0L3Qvc3VicXVlcnlfbm9tYXRfbm9zal9ia2Ffbm9ibmwudGVzdAogICAgICBteXNx bC10ZXN0L3Qvc3VicXVlcnlfbm9uZV9ia2Ffbm9ibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qv c3VicXVlcnlfc2pfYWxsX2JrYV9ub2JubC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zdWJxdWVy eV9zal9kdXBzd2VlZF9ia2Ffbm9ibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlf c2pfZmlyc3RtYXRjaF9ia2Ffbm9ibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlf c2pfaW5ub2RiX2FsbF9ia2Ffbm9ibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlf c2pfaW5ub2RiX25vbmVfYmthX25vYm5sLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5 X3NqX2xvb3Nlc2Nhbl9ia2Ffbm9ibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlf c2pfbWF0X2JrYV9ub2JubC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9zal9ub25l X2JrYV9ub2JubC50ZXN0CiAgICBhZGRlZDoKICAgICAgbXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9k ZWZhdWx0LnJlbGVhc2UuaW4KICAgICAgbXlzcWwtdGVzdC9yL2pvaW5fY2FjaGVfYmthX25peGJu bC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2pvaW5fbmVzdGVkX2JrYV9uaXhibmwucmVzdWx0 CiAgICAgIG15c3FsLXRlc3Qvci9qb2luX291dGVyX2JrYV9uaXhibmwucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvci9zZWxlY3RfYWxsX2JrYV9uaXhibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qv ci9zZWxlY3RfaWNwX21ycl9ia2Ffbml4Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc2Vs ZWN0X25vbmVfYmthX25peGJubC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X2Fs bF9ia2Ffbml4Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfbm9tYXRfbm9z al9ia2Ffbml4Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfbm9uZV9ia2Ff bml4Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfYWxsX2JrYV9uaXhi bmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJxdWVyeV9zal9kdXBzd2VlZF9ia2Ffbml4 Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfZmlyc3RtYXRjaF9ia2Ff bml4Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfaW5ub2RiX2FsbF9i a2Ffbml4Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfaW5ub2RiX25v bmVfYmthX25peGJubC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X3NqX2xvb3Nl c2Nhbl9ia2Ffbml4Ym5sLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfbWF0 X2JrYV9uaXhibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJxdWVyeV9zal9ub25lX2Jr YV9uaXhibmwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1 ZzQ3MTY3LW1hc3Rlci5vcHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJf ZmlsZV9mb3JtYXQtbWFzdGVyLm9wdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9n ZW5lcmFsX2xvZy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxfcmVwbGlj YXRlX3Jld3JpdGVfZGIucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3QvcnBsX2dl bmVyYWxfbG9nLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9ycGwvdC9ycGxfcmVwbGljYXRl X3Jld3JpdGVfZGIudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3N0cmVzcy90L3dyYXBwZXIu dGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3IvaW5ub2RiX2FuYWx5emVfaXNf cGVyc2lzdGVudF9iYXNpYy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9y L2lubm9kYl9tb25pdG9yX2Rpc2FibGVfYmFzaWMucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvc3lzX3ZhcnMvci9pbm5vZGJfbW9uaXRvcl9lbmFibGVfYmFzaWMucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvci9pbm5vZGJfbW9uaXRvcl9yZXNldF9hbGxfYmFzaWMu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvci9pbm5vZGJfbW9uaXRvcl9y ZXNldF9iYXNpYy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9yL2lubm9k Yl9wcmludF9hbGxfZGVhZGxvY2tzX2Jhc2ljLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRl L3N5c192YXJzL3IvaW5ub2RiX3N0YXRzX3BlcnNpc3RlbnRfc2FtcGxlX3BhZ2VzX2Jhc2ljLnJl c3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3IvaW5ub2RiX3N0YXRzX3RyYW5z aWVudF9zYW1wbGVfcGFnZXNfYmFzaWMucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lz X3ZhcnMvci9pbm5vZGJfc3luY19hcnJheV9zaXplX2Jhc2ljLnJlc3VsdAogICAgICBteXNxbC10 ZXN0L3N1aXRlL3N5c192YXJzL3QvaW5ub2RiX2FuYWx5emVfaXNfcGVyc2lzdGVudF9iYXNpYy50 ZXN0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfZmlsZV9mb3JtYXRf bWF4X2Jhc2ljLW1hc3Rlci5vcHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy90L2lu bm9kYl9tb25pdG9yX2Rpc2FibGVfYmFzaWMudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3N5 c192YXJzL3QvaW5ub2RiX21vbml0b3JfZW5hYmxlX2Jhc2ljLnRlc3QKICAgICAgbXlzcWwtdGVz dC9zdWl0ZS9zeXNfdmFycy90L2lubm9kYl9tb25pdG9yX3Jlc2V0X2FsbF9iYXNpYy50ZXN0CiAg ICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfbW9uaXRvcl9yZXNldF9iYXNp Yy50ZXN0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9pbm5vZGJfcHJpbnRfYWxs X2RlYWRsb2Nrc19iYXNpYy50ZXN0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9p bm5vZGJfc3RhdHNfcGVyc2lzdGVudF9zYW1wbGVfcGFnZXNfYmFzaWMudGVzdAogICAgICBteXNx bC10ZXN0L3N1aXRlL3N5c192YXJzL3QvaW5ub2RiX3N0YXRzX3RyYW5zaWVudF9zYW1wbGVfcGFn ZXNfYmFzaWMudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3QvaW5ub2RiX3N5 bmNfYXJyYXlfc2l6ZV9iYXNpYy50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9qb2luX2NhY2hlX2Jr YV9uaXhibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvam9pbl9uZXN0ZWRfYmthX25peGJubC50 ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9qb2luX291dGVyX2JrYV9uaXhibmwudGVzdAogICAgICBt eXNxbC10ZXN0L3Qvc2VsZWN0X2FsbF9ia2Ffbml4Ym5sLnRlc3QKICAgICAgbXlzcWwtdGVzdC90 L3NlbGVjdF9pY3BfbXJyX2JrYV9uaXhibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc2VsZWN0 X25vbmVfYmthX25peGJubC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9hbGxfYmth X25peGJubC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9ub21hdF9ub3NqX2JrYV9u aXhibmwudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlfbm9uZV9ia2Ffbml4Ym5sLnRl c3QKICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX2FsbF9ia2Ffbml4Ym5sLnRlc3QKICAg ICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX2R1cHN3ZWVkX2JrYV9uaXhibmwudGVzdAogICAg ICBteXNxbC10ZXN0L3Qvc3VicXVlcnlfc2pfZmlyc3RtYXRjaF9ia2Ffbml4Ym5sLnRlc3QKICAg ICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX2lubm9kYl9hbGxfYmthX25peGJubC50ZXN0CiAg ICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9zal9pbm5vZGJfbm9uZV9ia2Ffbml4Ym5sLnRlc3QK ICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX2xvb3Nlc2Nhbl9ia2Ffbml4Ym5sLnRlc3QK ICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX21hdF9ia2Ffbml4Ym5sLnRlc3QKICAgICAg bXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX25vbmVfYmthX25peGJubC50ZXN0CiAgICBtb2RpZmll ZDoKICAgICAgLmJ6cmlnbm9yZQogICAgICBWRVJTSU9OCiAgICAgIGNsaWVudC9teXNxbHRlc3Qu Y2MKICAgICAgY21ha2UvY3JlYXRlX2luaXRpYWxfZGIuY21ha2UuaW4KICAgICAgaW5jbHVkZS9o ZWFwLmgKICAgICAgbGlibXlzcWwvYXV0aGVudGljYXRpb25fd2luL2hhbmRzaGFrZV9jbGllbnQu Y2MKICAgICAgbGlibXlzcWxkL2xpYl9zcWwuY2MKICAgICAgbXlzcWwtdGVzdC9DTWFrZUxpc3Rz LnR4dAogICAgICBteXNxbC10ZXN0L2NvbGxlY3Rpb25zL1JFQURNRQogICAgICBteXNxbC10ZXN0 L2NvbGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJpbWVudGFsCiAgICAgIG15c3FsLXRlc3QvZXh0cmEv cnBsX3Rlc3RzL3JwbF9pbnNlcnRfaWQudGVzdAogICAgICBteXNxbC10ZXN0L2V4dHJhL3JwbF90 ZXN0cy9ycGxfaW5zZXJ0X2lnbm9yZS50ZXN0CiAgICAgIG15c3FsLXRlc3QvaW5jbHVkZS9jb21t aXQuaW5jCiAgICAgIG15c3FsLXRlc3QvaW5jbHVkZS9leHBsYWluX25vbl9zZWxlY3QuaW5jCiAg ICAgIG15c3FsLXRlc3QvaW5jbHVkZS9pY3BfdGVzdHMuaW5jCiAgICAgIG15c3FsLXRlc3QvaW5j bHVkZS9tcnJfdGVzdHMuaW5jCiAgICAgIG15c3FsLXRlc3QvaW5jbHVkZS9tdHJfY2hlY2suc3Fs CiAgICAgIG15c3FsLXRlc3QvaW5jbHVkZS9zdWJxdWVyeS5pbmMKICAgICAgbXlzcWwtdGVzdC9p bmNsdWRlL3N1YnF1ZXJ5X3NqLmluYwogICAgICBteXNxbC10ZXN0L2xpYi9NeS9Db3JlRHVtcC5w bQogICAgICBteXNxbC10ZXN0L215c3FsLXN0cmVzcy10ZXN0LnBsCiAgICAgIG15c3FsLXRlc3Qv bXlzcWwtdGVzdC1ydW4ucGwKICAgICAgbXlzcWwtdGVzdC9yL2NvbW1pdF8xaW5ub2RiLnJlc3Vs dAogICAgICBteXNxbC10ZXN0L3IvZGVyaXZlZC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2Vy cm9yX3NpbXVsYXRpb24ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9mdW5jX3N0ci5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9yL2dyb3VwX2J5LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvaGF2 aW5nLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvaGVhcC5yZXN1bHQKICAgICAgbXlzcWwtdGVz dC9yL2luZGV4X21lcmdlX215aXNhbS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2lubm9kYl9l eHBsYWluX25vbl9zZWxlY3RfYWxsLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvaW5ub2RiX2V4 cGxhaW5fbm9uX3NlbGVjdF9ub25lLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvaW5ub2RiX2lj cC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2lubm9kYl9pY3BfYWxsLnJlc3VsdAogICAgICBt eXNxbC10ZXN0L3IvaW5ub2RiX2ljcF9ub25lLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvaW5u b2RiX21yci5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2lubm9kYl9tcnJfYWxsLnJlc3VsdAog ICAgICBteXNxbC10ZXN0L3IvaW5ub2RiX21ycl9jb3N0LnJlc3VsdAogICAgICBteXNxbC10ZXN0 L3IvaW5ub2RiX21ycl9jb3N0X2FsbC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2lubm9kYl9t cnJfY29zdF9pY3AucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9pbm5vZGJfbXJyX2ljcC5yZXN1 bHQKICAgICAgbXlzcWwtdGVzdC9yL2lubm9kYl9tcnJfbm9uZS5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9yL2pvaW5fY2FjaGVfYmthLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivam9pbl9jYWNo ZV9ia2F1bmlxdWUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9qb2luX2NhY2hlX25vamIucmVz dWx0CiAgICAgIG15c3FsLXRlc3Qvci9qb2luX25lc3RlZF9ia2EucmVzdWx0CiAgICAgIG15c3Fs LXRlc3Qvci9qb2luX291dGVyLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivam9pbl9vdXRlcl9i a2EucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9teWlzYW1fZXhwbGFpbl9ub25fc2VsZWN0X2Fs bC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL215aXNhbV9leHBsYWluX25vbl9zZWxlY3Rfbm9u ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL215aXNhbV9pY3AucmVzdWx0CiAgICAgIG15c3Fs LXRlc3Qvci9teWlzYW1faWNwX2FsbC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL215aXNhbV9p Y3Bfbm9uZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL215aXNhbV9tcnIucmVzdWx0CiAgICAg IG15c3FsLXRlc3Qvci9teWlzYW1fbXJyX2FsbC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL215 aXNhbV9tcnJfY29zdC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL215aXNhbV9tcnJfY29zdF9h bGwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9teWlzYW1fbXJyX2Nvc3RfaWNwLnJlc3VsdAog ICAgICBteXNxbC10ZXN0L3IvbXlpc2FtX21ycl9pY3AucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qv ci9teWlzYW1fbXJyX25vbmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9teXNxbGQtLWhlbHAt bm90d2luLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3IvbXlzcWxkLS1oZWxwLXdpbi5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9yL215c3FsdGVzdC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL29w dGltaXplcl9zd2l0Y2gucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9wYXJ0aXRpb24ucmVzdWx0 CiAgICAgIG15c3FsLXRlc3Qvci9wYXJ0aXRpb25faW5ub2RiX3BsdWdpbi5yZXN1bHQKICAgICAg bXlzcWwtdGVzdC9yL3BhcnRpdGlvbl9teWlzYW0ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9w bHVnaW5fYXV0aC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3NlbGVjdF9hbGxfYmthLnJlc3Vs dAogICAgICBteXNxbC10ZXN0L3Ivc2VsZWN0X2ljcF9tcnJfYmthLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3Ivc2VsZWN0X25vbmVfYmthLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc2hvd19j aGVjay5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X2FsbF9ia2EucmVzdWx0CiAg ICAgIG15c3FsLXRlc3Qvci9zdWJxdWVyeV9ub21hdF9ub3NqLnJlc3VsdAogICAgICBteXNxbC10 ZXN0L3Ivc3VicXVlcnlfbm9tYXRfbm9zal9ia2EucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9z dWJxdWVyeV9ub25lLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfbm9uZV9ia2Eu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJxdWVyeV9zal9hbGwucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvci9zdWJxdWVyeV9zal9hbGxfYmthLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Iv c3VicXVlcnlfc2pfYWxsX2JrYXVuaXF1ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1 ZXJ5X3NqX2R1cHN3ZWVkLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfZHVw c3dlZWRfYmthLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfZHVwc3dlZWRf YmthdW5pcXVlLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfZmlyc3RtYXRj aC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X3NqX2ZpcnN0bWF0Y2hfYmthLnJl c3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfZmlyc3RtYXRjaF9ia2F1bmlxdWUu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJxdWVyeV9zal9pbm5vZGJfYWxsX2JrYS5yZXN1 bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X3NqX2lubm9kYl9hbGxfYmthdW5pcXVlLnJl c3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfaW5ub2RiX25vbmVfYmthLnJlc3Vs dAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfaW5ub2RiX25vbmVfYmthdW5pcXVlLnJl c3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfbG9vc2VzY2FuLnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfbG9vc2VzY2FuX2JrYS5yZXN1bHQKICAgICAgbXlz cWwtdGVzdC9yL3N1YnF1ZXJ5X3NqX2xvb3Nlc2Nhbl9ia2F1bmlxdWUucmVzdWx0CiAgICAgIG15 c3FsLXRlc3Qvci9zdWJxdWVyeV9zal9tYXQucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9zdWJx dWVyeV9zal9tYXRfYmthLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfbWF0 X2JrYXVuaXF1ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X3NqX21hdF9ub3Nq LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3Ivc3VicXVlcnlfc2pfbm9uZS5yZXN1bHQKICAgICAg bXlzcWwtdGVzdC9yL3N1YnF1ZXJ5X3NqX25vbmVfYmthLnJlc3VsdAogICAgICBteXNxbC10ZXN0 L3Ivc3VicXVlcnlfc2pfbm9uZV9ia2F1bmlxdWUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvYmlubG9nL3IvYmlubG9nX3N0bV9ibGFja2hvbGUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvYmlubG9nL3IvYmlubG9nX3Vuc2FmZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0 ZS9iaW5sb2cvdC9iaW5sb2dfdW5zYWZlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9mZWRl cmF0ZWQvZmVkZXJhdGVkX3BsdWdpbi1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUv ZmVkZXJhdGVkL2ZlZGVyYXRlZF9wbHVnaW4ucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUv ZmVkZXJhdGVkL2ZlZGVyYXRlZF9wbHVnaW4udGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lu bm9kYi9yL2lubm9kYl9idWc1Mjc0NS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5v ZGIvci9pbm5vZGJfYnVnNTM1OTEucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2Ri L3IvaW5ub2RiX2ZpbGVfZm9ybWF0LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9k Yi9yL2lubm9kYl9pbmRleF9sYXJnZV9wcmVmaXgucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvaW5ub2RiL3IvaW5ub2RiX3ByZWZpeF9pbmRleF9saWZ0ZWRsaW1pdC5yZXN1bHQKICAgICAg bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGJfcHJlZml4X2luZGV4X3Jlc3RhcnRfc2Vy dmVyLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi1hdXRvaW5j LTQ0MDMwLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItYXV0b2lu Yy50ZXN0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLWNyZWF0ZS1vcHRp b25zLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItaW5kZXgudGVz dAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi16aXAudGVzdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYl9idWczNjE3Mi50ZXN0CiAgICAgIG15c3Fs LXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiX2J1ZzUyNzQ1LnRlc3QKICAgICAgbXlzcWwtdGVz dC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfYnVnNTM1OTEudGVzdAogICAgICBteXNxbC10ZXN0L3N1 aXRlL2lubm9kYi90L2lubm9kYl9idWc1NjY4MC50ZXN0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUv aW5ub2RiL3QvaW5ub2RiX2ZpbGVfZm9ybWF0LnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9p bm5vZGIvdC9pbm5vZGJfaW5kZXhfbGFyZ2VfcHJlZml4LnRlc3QKICAgICAgbXlzcWwtdGVzdC9z dWl0ZS9pbm5vZGIvdC9pbm5vZGJfcHJlZml4X2luZGV4X2xpZnRlZGxpbWl0LnRlc3QKICAgICAg bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGJfcHJlZml4X2luZGV4X3Jlc3RhcnRfc2Vy dmVyLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9vcHRfdHJhY2UvaW5jbHVkZS9nZW5lcmFs LmluYwogICAgICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9pbmNsdWRlL2dlbmVyYWwyLmlu YwogICAgICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9pbmNsdWRlL3JhbmdlLmluYwogICAg ICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9pbmNsdWRlL3N1YnF1ZXJ5LmluYwogICAgICBt eXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9yL2J1Z3Nfbm9fcHJvdF9hbGwucmVzdWx0CiAgICAg IG15c3FsLXRlc3Qvc3VpdGUvb3B0X3RyYWNlL3IvYnVnc19ub19wcm90X25vbmUucmVzdWx0CiAg ICAgIG15c3FsLXRlc3Qvc3VpdGUvb3B0X3RyYWNlL3IvYnVnc19wc19wcm90X2FsbC5yZXN1bHQK ICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9vcHRfdHJhY2Uvci9idWdzX3BzX3Byb3Rfbm9uZS5yZXN1 bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9vcHRfdHJhY2Uvci9jaGFyc2V0LnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9yL2ZpbGVzb3J0X3BxLnJlc3VsdAogICAgICBt eXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9yL2dlbmVyYWwyX25vX3Byb3QucmVzdWx0CiAgICAg IG15c3FsLXRlc3Qvc3VpdGUvb3B0X3RyYWNlL3IvZ2VuZXJhbDJfcHNfcHJvdC5yZXN1bHQKICAg ICAgbXlzcWwtdGVzdC9zdWl0ZS9vcHRfdHJhY2Uvci9nZW5lcmFsX25vX3Byb3RfYWxsLnJlc3Vs dAogICAgICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9yL2dlbmVyYWxfbm9fcHJvdF9ub25l LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9yL2dlbmVyYWxfcHNfcHJv dF9hbGwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvb3B0X3RyYWNlL3IvZ2VuZXJhbF9w c19wcm90X25vbmUucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvb3B0X3RyYWNlL3IvcmFu Z2Vfbm9fcHJvdC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9vcHRfdHJhY2Uvci9yYW5n ZV9wc19wcm90LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9yL3NlY3Vy aXR5X25vX3Byb3QucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvb3B0X3RyYWNlL3Ivc2Vj dXJpdHlfcHNfcHJvdC5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9vcHRfdHJhY2Uvci9z dWJxdWVyeV9ub19wcm90LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL29wdF90cmFjZS9y L3N1YnF1ZXJ5X3BzX3Byb3QucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBs X2NoZWNrc3VtLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9pbnNlcnRf aWdub3JlLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9rbm93bl9idWdz X2RldGVjdGlvbi5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxfbG9nX3Bv cy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxfbWFudWFsX2NoYW5nZV9p bmRleF9maWxlLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9wYWNrZXQu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX3BhcmFsbGVsX3N0YXJ0X3N0 b3AucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX3Jvd19ldmVudF9tYXhf c2l6ZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxfc2xhdmVfbG9hZF9y ZW1vdmVfdG1wZmlsZS5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9ycGwvdC9ycGxfa25v d25fYnVnc19kZXRlY3Rpb24udGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9t YW51YWxfY2hhbmdlX2luZGV4X2ZpbGUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90 L3JwbF9wYWNrZXQudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9yb3dfZXZl bnRfbWF4X3NpemUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9zbGF2ZV9s b2FkX3JlbW92ZV90bXBmaWxlLnRlc3QKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9y L2FsbF92YXJzLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Ivb3B0aW1p emVyX3N3aXRjaF9iYXNpYy5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC90L2Rlcml2ZWQudGVzdAog ICAgICBteXNxbC10ZXN0L3QvZXJyb3Jfc2ltdWxhdGlvbi50ZXN0CiAgICAgIG15c3FsLXRlc3Qv dC9mdW5jX3N0ci50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9ncm91cF9ieS50ZXN0CiAgICAgIG15 c3FsLXRlc3QvdC9oZWFwLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L2pvaW5fY2FjaGVfYmthLnRl c3QKICAgICAgbXlzcWwtdGVzdC90L2pvaW5fY2FjaGVfYmthdW5pcXVlLnRlc3QKICAgICAgbXlz cWwtdGVzdC90L2pvaW5fY2FjaGVfbm9qYi50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9qb2luX25l c3RlZF9ia2EudGVzdAogICAgICBteXNxbC10ZXN0L3Qvam9pbl9vdXRlci50ZXN0CiAgICAgIG15 c3FsLXRlc3QvdC9qb2luX291dGVyX2JrYS50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9teXNxbF9w bHVnaW4udGVzdAogICAgICBteXNxbC10ZXN0L3QvbXlzcWxkLS1kZWZhdWx0cy1maWxlLnRlc3QK ICAgICAgbXlzcWwtdGVzdC90L215c3FsdGVzdC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9wYXJ0 aXRpb24udGVzdAogICAgICBteXNxbC10ZXN0L3QvcGFydGl0aW9uX2lubm9kYl9wbHVnaW4udGVz dAogICAgICBteXNxbC10ZXN0L3QvcGFydGl0aW9uX215aXNhbS50ZXN0CiAgICAgIG15c3FsLXRl c3QvdC9wbHVnaW5fYXV0aC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zZWxlY3RfYWxsX2JrYS50 ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zZWxlY3RfaWNwX21ycl9ia2EudGVzdAogICAgICBteXNx bC10ZXN0L3Qvc2VsZWN0X25vbmVfYmthLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3Nob3dfY2hl Y2sudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlfYWxsX2JrYS50ZXN0CiAgICAgIG15 c3FsLXRlc3QvdC9zdWJxdWVyeV9ub21hdF9ub3NqX2JrYS50ZXN0CiAgICAgIG15c3FsLXRlc3Qv dC9zdWJxdWVyeV9ub25lX2JrYS50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9zal9h bGxfYmthLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX2FsbF9ia2F1bmlxdWUu dGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlfc2pfZHVwc3dlZWRfYmthLnRlc3QKICAg ICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX2R1cHN3ZWVkX2JrYXVuaXF1ZS50ZXN0CiAgICAg IG15c3FsLXRlc3QvdC9zdWJxdWVyeV9zal9maXJzdG1hdGNoLnRlc3QKICAgICAgbXlzcWwtdGVz dC90L3N1YnF1ZXJ5X3NqX2ZpcnN0bWF0Y2hfYmthLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3N1 YnF1ZXJ5X3NqX2ZpcnN0bWF0Y2hfYmthdW5pcXVlLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3N1 YnF1ZXJ5X3NqX2lubm9kYl9hbGxfYmthLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5 X3NqX2lubm9kYl9hbGxfYmthdW5pcXVlLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5 X3NqX2lubm9kYl9ub25lX2JrYS50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9zal9p bm5vZGJfbm9uZV9ia2F1bmlxdWUudGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlfc2pf bG9vc2VzY2FuX2JrYS50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9zal9sb29zZXNj YW5fYmthdW5pcXVlLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L3N1YnF1ZXJ5X3NqX21hdF9ia2Eu dGVzdAogICAgICBteXNxbC10ZXN0L3Qvc3VicXVlcnlfc2pfbWF0X2JrYXVuaXF1ZS50ZXN0CiAg ICAgIG15c3FsLXRlc3QvdC9zdWJxdWVyeV9zal9ub25lX2JrYS50ZXN0CiAgICAgIG15c3FsLXRl c3QvdC9zdWJxdWVyeV9zal9ub25lX2JrYXVuaXF1ZS50ZXN0CiAgICAgIHNjcmlwdHMvbXlzcWxk X3NhZmUuc2gKICAgICAgc3FsL2V2ZW50X3NjaGVkdWxlci5jYwogICAgICBzcWwvaGFfcGFydGl0 aW9uLmNjCiAgICAgIHNxbC9oYV9wYXJ0aXRpb24uaAogICAgICBzcWwvaGFuZGxlci5jYwogICAg ICBzcWwvaGFuZGxlci5oCiAgICAgIHNxbC9pdGVtX2J1ZmYuY2MKICAgICAgc3FsL2l0ZW1fY21w ZnVuYy5jYwogICAgICBzcWwvaXRlbV9mdW5jLmNjCiAgICAgIHNxbC9pdGVtX3N1YnNlbGVjdC5j YwogICAgICBzcWwvaXRlbV9zdWJzZWxlY3QuaAogICAgICBzcWwvbG9nX2V2ZW50LmNjCiAgICAg IHNxbC9teXNxbGQuY2MKICAgICAgc3FsL29wdF9leHBsYWluLmNjCiAgICAgIHNxbC9vcHRfcmFu Z2UuY2MKICAgICAgc3FsL29wdF90cmFjZS5jYwogICAgICBzcWwvb3B0X3RyYWNlLmgKICAgICAg c3FsL29wdF90cmFjZTJzZXJ2ZXIuY2MKICAgICAgc3FsL3JwbF9tYXN0ZXIuY2MKICAgICAgc3Fs L3JwbF9ybGlfcGRiLmNjCiAgICAgIHNxbC9ycGxfc2xhdmUuY2MKICAgICAgc3FsL3NoYXJlL2Vy cm1zZy11dGY4LnR4dAogICAgICBzcWwvc3BfaGVhZC5jYwogICAgICBzcWwvc3FsX2Jhc2UuY2MK ICAgICAgc3FsL3NxbF9jbGFzcy5jYwogICAgICBzcWwvc3FsX2NsYXNzLmgKICAgICAgc3FsL3Nx bF9pbnNlcnQuY2MKICAgICAgc3FsL3NxbF9sZXguY2MKICAgICAgc3FsL3NxbF9sZXguaAogICAg ICBzcWwvc3FsX2xpc3QuaAogICAgICBzcWwvc3FsX3BhcnNlLmNjCiAgICAgIHNxbC9zcWxfcHJl cGFyZS5jYwogICAgICBzcWwvc3FsX3NlbGVjdC5jYwogICAgICBzcWwvc3FsX3NlbGVjdC5oCiAg ICAgIHNxbC9zcWxfc2hvdy5jYwogICAgICBzcWwvc3lzX3ZhcnMuY2MKICAgICAgc3FsL3RhYmxl LmNjCiAgICAgIHN0b3JhZ2UvaGVhcC9oYV9oZWFwLmNjCiAgICAgIHN0b3JhZ2UvaGVhcC9ocF9j cmVhdGUuYwogICAgICBzdG9yYWdlL2hlYXAvaHBfaW5mby5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvYnVmL2J1ZjBidWYuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwbHJ1LmMKICAg ICAgc3RvcmFnZS9pbm5vYmFzZS9kaWN0L2RpY3Qwc3RhdHMuYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9p X3MuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBjdXIuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvYnRyMGN1ci5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvYnVmMGJ1Zi5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwYnVmLmlj CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idWYwdHlwZXMuaAogICAgICBzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvc3luYzBydy5oCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVk ZS9zeW5jMHJ3LmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS91dDBjcmMzMi5oCiAg ICAgIHN0b3JhZ2UvaW5ub2Jhc2UvbG9nL2xvZzBsb2cuYwogICAgICBzdG9yYWdlL2lubm9iYXNl L29zL29zMGZpbGUuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3JlbS9yZW0wcmVjLmMKICAgICAg c3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHB1cmdlLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9z cnYvc3J2MHN0YXJ0LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9zeW5jL3N5bmMwcncuYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL3V0L3V0MGNyYzMyLmMKICAgICAgc3RvcmFnZS9teWlzYW0vaGFf bXlpc2FtLmNjCiAgICAgIHN1cHBvcnQtZmlsZXMvbXlzcWwuc3BlYy5zaAogICAgICB0ZXN0cy9t eXNxbF9jbGllbnRfdGVzdC5jCiAgICAgIHVuaXR0ZXN0L2d1bml0L29wdF90cmFjZS10LmNjCiAg ICAgIHVuaXR0ZXN0L2d1bml0L3NxbF9saXN0LXQuY2MKICAgICAgdW5pdHRlc3QvbXlzeXMvbXlf YXRvbWljLXQuYwo9PT0gbW9kaWZpZWQgZmlsZSAnaW5jbHVkZS9teV9wdGhyZWFkLmgnCi0tLSBh L2luY2x1ZGUvbXlfcHRocmVhZC5oCTIwMTEtMDgtMTkgMTM6MDQ6MjggKzAwMDAKKysrIGIvaW5j bHVkZS9teV9wdGhyZWFkLmgJMjAxMS0xMC0wNiAxNDozMzoxOCArMDAwMApAQCAtNTQyLDggKzU0 Miw4IEBAIHZvaWQgc2FmZV9tdXRleF9lbmQoRklMRSAqZmlsZSk7CiAgICAgICAgICAgREJVR19B U1NFUlQoISAobXApLT5jb3VudCB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgISBwdGhyZWFk X2VxdWFsKHB0aHJlYWRfc2VsZigpLCAobXApLT50aHJlYWQpKQogI2Vsc2UKLSNkZWZpbmUgc2Fm ZV9tdXRleF9hc3NlcnRfb3duZXIobXApCi0jZGVmaW5lIHNhZmVfbXV0ZXhfYXNzZXJ0X25vdF9v d25lcihtcCkKKyNkZWZpbmUgc2FmZV9tdXRleF9hc3NlcnRfb3duZXIobXApIGRvIHt9IHdoaWxl ICgwKQorI2RlZmluZSBzYWZlX211dGV4X2Fzc2VydF9ub3Rfb3duZXIobXApIGRvIHt9IHdoaWxl ICgwKQogI2VuZGlmIC8qIFNBRkVfTVVURVggKi8KIAogI2lmIGRlZmluZWQoTVlfUFRIUkVBRF9G QVNUTVVURVgpICYmICFkZWZpbmVkKFNBRkVfTVVURVgpCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlz cWwtdGVzdC9jb2xsZWN0aW9ucy9kZWZhdWx0LmV4cGVyaW1lbnRhbCcKLS0tIGEvbXlzcWwtdGVz dC9jb2xsZWN0aW9ucy9kZWZhdWx0LmV4cGVyaW1lbnRhbAkyMDExLTEwLTA0IDEwOjU1OjA5ICsw MDAwCisrKyBiL215c3FsLXRlc3QvY29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwJMjAx MS0xMC0wNyAwODozNjowNCArMDAwMApAQCAtNDEsNiArNDEsNiBAQCBzeXNfdmFycy5oYXZlX25k YmNsdXN0ZXJfYmFzaWMKIHN5c192YXJzLm5kYl9sb2dfdXBkYXRlZF9vbmx5X2Jhc2ljCiBzeXNf dmFycy5ycGxfaW5pdF9zbGF2ZV9mdW5jCQkgIyBCdWcjMTI1MzUzMDEgMjAxMS0wNS0wOSBhbmRy ZWkgc3lzX3ZhcnMucnBsX2luaXRfc2xhdmVfZnVuYyBtaXNtYXRjaGVzIGluIGRhaWx5LTUuNQog Ci1ycGwucnBsX21peGVkX210c19yZWNfY3Jhc2hfc2FmZSBAc29sYXJpcyAgICAgICAgICAjIEJ1 ZyAxMjkwMjUxNCAyMDExLTA4LTE5IGFuZHJlaSBtdHMgcmVjb3ZlcnkgdGVzdHMgYXJlIHNsb3cK LXJwbC5ycGxfbWl4ZWRfbXRzX3JlY19jcmFzaF9zYWZlX2NoZWNrc3VtIEBzb2xhcmlzICMgc2Ft ZSBhcyBycGxfbWl4ZWRfbXRzX3JlY19jcmFzaF9zYWZlCi1ycGwucnBsX21peGVkX210c19jcmFz aF9zYWZlIEBzb2xhcmlzICAgICAgICAgICAgICAjIHNhbWUgYXMgcnBsX21peGVkX210c19yZWNf Y3Jhc2hfc2FmZQorcnBsLnJwbF9taXhlZF9tdHNfcmVjX2NyYXNoX3NhZmUgQHNvbGFyaXMgICAg ICAgICAgIyBCdWcjMTI5MDI1MTQgMjAxMS0wOC0xOSBhbmRyZWkgbXRzIHJlY292ZXJ5IHRlc3Rz IGFyZSBzbG93CitycGwucnBsX21peGVkX210c19yZWNfY3Jhc2hfc2FmZV9jaGVja3N1bSBAc29s YXJpcyAjIEJ1ZyMxMjkwMjUxNCAyMDExLTA4LTE5IGFuZHJlaSBzYW1lIGFzIHJwbF9taXhlZF9t dHNfcmVjX2NyYXNoX3NhZmUKK3JwbC5ycGxfbWl4ZWRfbXRzX2NyYXNoX3NhZmUgQHNvbGFyaXMg ICAgICAgICAgICAgICMgQnVnIzEyOTAyNTE0IDIwMTEtMDgtMTkgYW5kcmVpIHNhbWUgYXMgcnBs X21peGVkX210c19yZWNfY3Jhc2hfc2FmZQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qv ci9hcmNoaXZlLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL2FyY2hpdmUucmVzdWx0CTIwMTEt MDMtMDMgMDk6MjI6MTcgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9yL2FyY2hpdmUucmVzdWx0CTIw MTEtMTAtMDYgMTM6NTE6MjggKzAwMDAKQEAgLTEyNzI5LDE1ICsxMjcyOSwxNyBAQCBpZAlpZAlu YW1lCW5hbWUKIDIJMglhCWIKIERST1AgVEFCTEUgdDEsdDI7CiBTSE9XIENSRUFURSBUQUJMRSB0 MTsKLUVSUk9SIEhZMDAwOiBUYWJsZSB1cGdyYWRlIHJlcXVpcmVkLiBQbGVhc2UgZG8gIlJFUEFJ UiBUQUJMRSBgdDFgIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhCitUYWJsZQlDcmVhdGUgVGFi bGUKK3QxCUNSRUFURSBUQUJMRSBgdDFgICgKKyAgYGNvbDFgIGludCgxMSkgREVGQVVMVCBOVUxM LAorICBgY29sMmAgdmFyY2hhcigyMCkgREVGQVVMVCBOVUxMCispIEVOR0lORT1BUkNISVZFIERF RkFVTFQgQ0hBUlNFVD1sYXRpbjEKIFNFTEVDVCAqIEZST00gdDE7Ci1FUlJPUiBIWTAwMDogVGFi bGUgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGRvICJSRVBBSVIgVEFCTEUgYHQxYCIgb3IgZHVt cC9yZWxvYWQgdG8gZml4IGl0IQorY29sMQljb2wyCiBJTlNFUlQgSU5UTyB0MSAoY29sMSwgY29s MikgVkFMVUVTICgxLCAidmFsdWUiKTsKLUVSUk9SIEhZMDAwOiBUYWJsZSB1cGdyYWRlIHJlcXVp cmVkLiBQbGVhc2UgZG8gIlJFUEFJUiBUQUJMRSBgdDFgIiBvciBkdW1wL3JlbG9hZCB0byBmaXgg aXQhCiBSRVBBSVIgVEFCTEUgdDE7CiBUYWJsZQlPcAlNc2dfdHlwZQlNc2dfdGV4dAotdGVzdC50 MQlyZXBhaXIJRXJyb3IJVGFibGUgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGRvICJSRVBBSVIg VEFCTEUgYHQxYCIgb3IgZHVtcC9yZWxvYWQgdG8gZml4IGl0IQotdGVzdC50MQlyZXBhaXIJZXJy b3IJQ29ycnVwdAordGVzdC50MQlyZXBhaXIJc3RhdHVzCU9LCiBEUk9QIFRBQkxFIHQxOwogIwog IyBCVUcjNDg3NTcgLSBtaXNzaW5nIC5BUlogZmlsZSBjYXVzZXMgc2VydmVyIGNyYXNoCkBAIC0x MjgyMywzICsxMjgyNSw1OSBAQCBhCWIJYwlkCWUJZgogLTEJYgljCWQJZQkxCiBEUk9QIFRBQkxF IHQxOwogU0VUIHNvcnRfYnVmZmVyX3NpemU9REVGQVVMVDsKKyMKKyMgQlVHIzExNzU2Njg3IC0g NDg2MzM6IEFSQ0hJVkUgVEFCTEVTIEFSRSBOT1QgVVBHUkFERUFCTEUKKyMKK1NIT1cgQ1JFQVRF IFRBQkxFIHQxOworVGFibGUJQ3JlYXRlIFRhYmxlCit0MQlDUkVBVEUgVEFCTEUgYHQxYCAoCisg IGBhYCBpbnQoMTEpIERFRkFVTFQgTlVMTCwKKyAgYGJgIHRleHQsCisgIGBjYCB2YXJjaGFyKDI1 NSkgREVGQVVMVCBOVUxMLAorICBgZGAgYmxvYiwKKyAgYGVgIGJsb2IKKykgRU5HSU5FPUFSQ0hJ VkUgREVGQVVMVCBDSEFSU0VUPWxhdGluMQorU0VMRUNUICogRlJPTSB0MTsKK2EJYgljCWQJZQor MQl0ZXh0CXZhcmNoYXIJYmxvYjEJYmxvYjIKKzIJdGV4dAl2YXJjaGFyCWJsb2IxCWJsb2IyCitT RUxFQ1QgKiBGUk9NIHQxOworYQliCWMJZAllCisxCXRleHQJdmFyY2hhcglibG9iMQlibG9iMgor Mgl0ZXh0CXZhcmNoYXIJYmxvYjEJYmxvYjIKK0ZMVVNIIFRBQkxFIHQxOworU0VMRUNUICogRlJP TSB0MTsKK2EJYgljCWQJZQorMQl0ZXh0CXZhcmNoYXIJYmxvYjEJYmxvYjIKKzIJdGV4dAl2YXJj aGFyCWJsb2IxCWJsb2IyCitDSEVDSyBUQUJMRSB0MTsKK1RhYmxlCU9wCU1zZ190eXBlCU1zZ190 ZXh0Cit0ZXN0LnQxCWNoZWNrCWVycm9yCVRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBk byAiUkVQQUlSIFRBQkxFIGB0MWAiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEKK1NFTEVDVCAq IEZST00gdDE7CithCWIJYwlkCWUKKzEJdGV4dAl2YXJjaGFyCWJsb2IxCWJsb2IyCisyCXRleHQJ dmFyY2hhcglibG9iMQlibG9iMgorSU5TRVJUIElOVE8gdDEgVkFMVUVTKDMsICd0ZXh0JywgJ3Zh cmNoYXInLCAnYmxvYjEnLCAnYmxvYjInKTsKK1NFTEVDVCAqIEZST00gdDE7CithCWIJYwlkCWUK KzEJdGV4dAl2YXJjaGFyCWJsb2IxCWJsb2IyCisyCXRleHQJdmFyY2hhcglibG9iMQlibG9iMgor Mwl0ZXh0CXZhcmNoYXIJYmxvYjEJYmxvYjIKK0ZMVVNIIFRBQkxFIHQxOworU0VMRUNUICogRlJP TSB0MTsKK2EJYgljCWQJZQorMQl0ZXh0CXZhcmNoYXIJYmxvYjEJYmxvYjIKKzIJdGV4dAl2YXJj aGFyCWJsb2IxCWJsb2IyCiszCXRleHQJdmFyY2hhcglibG9iMQlibG9iMgorUkVQQUlSIFRBQkxF IHQxOworVGFibGUJT3AJTXNnX3R5cGUJTXNnX3RleHQKK3Rlc3QudDEJcmVwYWlyCXN0YXR1cwlP SworU0VMRUNUICogRlJPTSB0MTsKK2EJYgljCWQJZQorMQl0ZXh0CXZhcmNoYXIJYmxvYjEJYmxv YjIKKzIJdGV4dAl2YXJjaGFyCWJsb2IxCWJsb2IyCiszCXRleHQJdmFyY2hhcglibG9iMQlibG9i MgorQ0hFQ0sgVEFCTEUgdDE7CitUYWJsZQlPcAlNc2dfdHlwZQlNc2dfdGV4dAordGVzdC50MQlj aGVjawlzdGF0dXMJT0sKK0RST1AgVEFCTEUgdDE7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwt dGVzdC9yL3BhcnRpdGlvbl9pbm5vZGIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvcGFydGl0 aW9uX2lubm9kYi5yZXN1bHQJMjAxMS0wOC0yOSAwNzowODoxOCArMDAwMAorKysgYi9teXNxbC10 ZXN0L3IvcGFydGl0aW9uX2lubm9kYi5yZXN1bHQJMjAxMS0xMC0wNyAwODozMDowMSArMDAwMApA QCAtMSw1ICsxLDE2IEBACiBkcm9wIHRhYmxlIGlmIGV4aXN0cyB0MSwgdDI7CiAjCisjIEJ1ZyMx MzAwNzE1NDogQ3Jhc2ggaW4ga2V5c190b191c2VfZm9yX3NjYW5uaW5nIHdpdGggT1JERVIgQlkK KyMgICAgICAgICAgICAgICBhbmQgUEFSVElUSU9OSU5HCisjCitDUkVBVEUgVEFCTEUgdDEgKGEg SU5ULCBLRVkoYSkpCitFTkdJTkUgPSBJbm5vREIKK1BBUlRJVElPTiBCWSBLRVkgKGEpIFBBUlRJ VElPTlMgMTsKK1NFTEVDVCAxIEZST00gdDEgV0hFUkUgYSA+IChTRUxFQ1QgTEFTVF9JTlNFUlRf SUQoKSBGUk9NIHQxIExJTUlUIDApCitPUkRFUiBCWSBhOworMQorRFJPUCBUQUJMRSB0MTsKKyMK ICMgQnVnIzU2Mjg3OiBjcmFzaCB3aGVuIHVzaW5nIFBhcnRpdGlvbiBkYXRldGltZSBpbiBzdWIg aW4gcXVlcnkKICMKIENSRUFURSBUQUJMRSB0MQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRl c3Qvci9wYXJ0aXRpb25fbXlpc2FtLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL3BhcnRpdGlv bl9teWlzYW0ucmVzdWx0CTIwMTEtMTAtMDYgMDk6NTA6NDAgKzAwMDAKKysrIGIvbXlzcWwtdGVz dC9yL3BhcnRpdGlvbl9teWlzYW0ucmVzdWx0CTIwMTEtMTAtMDcgMTQ6MjA6MjEgKzAwMDAKQEAg LTEsNSArMSwyNSBAQAogRFJPUCBUQUJMRSBJRiBFWElTVFMgdDEsIHQyOwogIworIyBCdWcjMTE3 NjM4MjUvNTY1OTA6IFBBUlRJVElPTlM6IEZVTExURVhUIFNFQVJDSEVTIEZBSUwKKyMgKGJhZC9j b25mdXNpbmcgZXJyb3IgbWVzc2FnZSkKK0NSRUFURSBUQUJMRSB0MQorKGEgSU5UIFVOU0lHTkVE IEFVVE9fSU5DUkVNRU5UIE5PVCBOVUxMIFBSSU1BUlkgS0VZLAorYiBWQVJDSEFSKDIwMCksCitj IFRFWFQpCitFTkdJTkU9TXlJU0FNCitQQVJUSVRJT04gQlkgSEFTSChhKSBQQVJUSVRJT05TIDE7 CitDUkVBVEUgRlVMTFRFWFQgSU5ERVggbXNnIE9OIHQxIChiLCBjKTsKK0VSUk9SIEhZMDAwOiBG VUxMVEVYVCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMuCitE Uk9QIFRBQkxFIHQxOworQ1JFQVRFIFRBQkxFIHQxCisoYSBJTlQgVU5TSUdORUQgQVVUT19JTkNS RU1FTlQgTk9UIE5VTEwgUFJJTUFSWSBLRVksCitiIFZBUkNIQVIoMjAwKSwKK2MgVEVYVCwKK0ZV TExURVhUIChiLCBjKSkKK0VOR0lORT1NeUlTQU0KK1BBUlRJVElPTiBCWSBIQVNIKGEpIFBBUlRJ VElPTlMgMTsKK0VSUk9SIEhZMDAwOiBGVUxMVEVYVCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkIGZv ciBwYXJ0aXRpb25lZCB0YWJsZXMuCisjCiAjIEJVRyMxMTkzMzIyNiAtIDYwNjgxOiBDSEVDS1NV TSBUQUJMRSBSRVRVUk5TIDAgRk9SIFBBUlRJVElPTkVEIFRBQkxFCiAjCiBDUkVBVEUgVEFCTEUg dDEgKAoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3RkX2RhdGEvYnVnMTE3NDc4ODctYmlu LjAwMDAwMicKQmluYXJ5IGZpbGVzIGEvbXlzcWwtdGVzdC9zdGRfZGF0YS9idWcxMTc0Nzg4Ny1i aW4uMDAwMDAyCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAgYW5kIGIvbXlzcWwtdGVzdC9zdGRf ZGF0YS9idWcxMTc0Nzg4Ny1iaW4uMDAwMDAyCTIwMTEtMTAtMTAgMDY6MjI6MTMgKzAwMDAgZGlm ZmVyCgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdGRfZGF0YS9idWc0ODYzMy5BUk0nCkJp bmFyeSBmaWxlcyBhL215c3FsLXRlc3Qvc3RkX2RhdGEvYnVnNDg2MzMuQVJNCTE5NzAtMDEtMDEg MDA6MDA6MDAgKzAwMDAgYW5kIGIvbXlzcWwtdGVzdC9zdGRfZGF0YS9idWc0ODYzMy5BUk0JMjAx MS0xMC0wNiAxMzo1MToyOCArMDAwMCBkaWZmZXIKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0 L3N0ZF9kYXRhL2J1ZzQ4NjMzLkFSWicKQmluYXJ5IGZpbGVzIGEvbXlzcWwtdGVzdC9zdGRfZGF0 YS9idWc0ODYzMy5BUloJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMCBhbmQgYi9teXNxbC10ZXN0 L3N0ZF9kYXRhL2J1ZzQ4NjMzLkFSWgkyMDExLTEwLTA2IDEzOjUxOjI4ICswMDAwIGRpZmZlcgoK PT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3RkX2RhdGEvYnVnNDg2MzMuZnJtJwpCaW5hcnkg ZmlsZXMgYS9teXNxbC10ZXN0L3N0ZF9kYXRhL2J1ZzQ4NjMzLmZybQkxOTcwLTAxLTAxIDAwOjAw OjAwICswMDAwIGFuZCBiL215c3FsLXRlc3Qvc3RkX2RhdGEvYnVnNDg2MzMuZnJtCTIwMTEtMTAt MDYgMTM6NTE6MjggKzAwMDAgZGlmZmVyCgo9PT0gYWRkZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0 ZS9ycGwvci9iaW5sb2ctaGV4ZHVtcC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvcnBs L3IvYmlubG9nLWhleGR1bXAucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9iaW5sb2ctaGV4ZHVtcC5yZXN1bHQJMjAxMS0xMC0xMCAw NjoyMjoxMyArMDAwMApAQCAtMCwwICsxLDg4IEBACitpbmNsdWRlL21hc3Rlci1zbGF2ZS5pbmMK K1tjb25uZWN0aW9uIG1hc3Rlcl0KK2luY2x1ZGUvcnBsX3Jlc2V0LmluYworLyohNDAwMTkgU0VU IEBAc2Vzc2lvbi5tYXhfaW5zZXJ0X2RlbGF5ZWRfdGhyZWFkcz0wKi87CisvKiE1MDAwMyBTRVQg QE9MRF9DT01QTEVUSU9OX1RZUEU9QEBDT01QTEVUSU9OX1RZUEUsQ09NUExFVElPTl9UWVBFPTAq LzsKK0RFTElNSVRFUiAvKiEqLzsKKyMgYXQgNAorIzExMDkyNyAyMDo1NzoxOSBzZXJ2ZXIgaWQg MSAgZW5kX2xvZ19wb3MgMTE0IAorIyBQb3NpdGlvbiAgVGltZXN0YW1wICAgVHlwZSAgIE1hc3Rl ciBJRCAgICAgICAgU2l6ZSAgICAgIE1hc3RlciBQb3MgICAgRmxhZ3MgCisjICAgICAgICA0IDdm IDBlIDgyIDRlICAgMGYgICAwMSAwMCAwMCAwMCAgIDZlIDAwIDAwIDAwICAgNzIgMDAgMDAgMDAg ICAwMCAwMAorIyAgICAgICAxNyAwNCAwMCAzNSAyZSAzNiAyZSAzNCAyZCAgNmQgMzUgMmQgNjQg NjUgNjIgNzUgNjcgfC4uNS42LjQubTUuZGVidWd8CisjICAgICAgIDI3IDJkIDZjIDZmIDY3IDAw IDAwIDAwIDAwICAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCB8LmxvZy4uLi4uLi4uLi4uLnwKKyMg ICAgICAgMzcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw IHwuLi4uLi4uLi4uLi4uLi4ufAorIyAgICAgICA0NyAwMCAwMCAwMCAwMCA3ZiAwZSA4MiA0ZSAg MTMgMzggMGQgMDAgMDggMDAgMTIgMDAgfC4uLi4uLi5OLjguLi4uLi58CisjICAgICAgIDU3IDA0 IDA0IDA0IDA0IDEyIDAwIDAwIDU2ICAwMCAwNCAxYSAwOCAwMCAwMCAwMCAwOCB8Li4uLi4uLlYu Li4uLi4uLnwKKyMgICAgICAgNjcgMDggMDggMDIgMDAgMDAgMDAgMDAgOTMgIGZhIGNkIGRjICAg ICAgICAgICAgICAgIHwuLi4uLi4uLi4uLnwKKyMgCVN0YXJ0OiBiaW5sb2cgdiA0LCBzZXJ2ZXIg diA1LjYuNC1tNS1kZWJ1Zy1sb2cgY3JlYXRlZCAxMTA5MjcgMjA6NTc6MTkgYXQgc3RhcnR1cAor Uk9MTEJBQ0svKiEqLzsKK0JJTkxPRyAnCitmdzZDVGc4QkFBQUFiZ0FBQUhJQUFBQUFBQVFBTlM0 MkxqUXRiVFV0WkdWaWRXY3RiRzluQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCitBQUFBQUFBQUFB QUFBQUFBQUFCL0RvSk9FemdOQUFnQUVnQUVCQVFFRWdBQVZnQUVHZ2dBQUFBSUNBZ0NBQUFBQUpQ Nnpkdz0KKycvKiEqLzsKKyMgYXQgMTE0CisjMTEwOTI3IDIwOjU3OjIzIHNlcnZlciBpZCAxICBl bmRfbG9nX3BvcyAyMzEgCisjIFBvc2l0aW9uICBUaW1lc3RhbXAgICBUeXBlICAgTWFzdGVyIElE ICAgICAgICBTaXplICAgICAgTWFzdGVyIFBvcyAgICBGbGFncyAKKyMgICAgICAgNzIgODMgMGUg ODIgNGUgICAwMiAgIDAxIDAwIDAwIDAwICAgNzUgMDAgMDAgMDAgICBlNyAwMCAwMCAwMCAgIDAw IDAwCisjICAgICAgIDg1IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwNCAwMCAwMCAyMSAwMCAw MCAwMCAwMCB8Li4uLi4uLi4uLi4uLi4uLnwKKyMgICAgICAgOTUgMDAgMDAgMDEgMDAgMDAgMDAg MDAgMDAgIDAwIDAwIDAwIDA2IDAzIDczIDc0IDY0IHwuLi4uLi4uLi4uLi4uc3RkfAorIyAgICAg ICBhNSAwNCAyMSAwMCAyMSAwMCAwOCAwMCAwYyAgMDEgNzQgNjUgNzMgNzQgMDAgNzQgNjUgfC4u Li4uLi4uLnRlc3QudGV8CisjICAgICAgIGI1IDczIDc0IDAwIDYzIDcyIDY1IDYxIDc0ICA2NSAy MCA3NCA2MSA2MiA2YyA2NSAyMCB8c3QuY3JlYXRlLnRhYmxlLnwKKyMgICAgICAgYzUgNzQgMzEg MjAgMjggNjEgMjAgNjUgNmUgIDc1IDZkIDI4IDI3IDZmIDZlIDY1IDI3IHx0MS4uYS5lbnVtLi5v bmUufAorIyAgICAgICBkNSAyYyAyMCAyNyA3NCA3NyA2ZiAyNyAyYyAgMjAgMjcgNzQgNjggNzIg NjUgNjUgMjcgfC4uLnR3by4uLi50aHJlZS58CisjICAgICAgIGU1IDI5IDI5ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Li58CisjIAlRdWVyeQl0aHJlYWRfaWQ9 MQlleGVjX3RpbWU9MAllcnJvcl9jb2RlPTAKK3VzZSB0ZXN0LyohKi87CitTRVQgVElNRVNUQU1Q PTEzMTcxNDYyNDMvKiEqLzsKK1NFVCBAQHNlc3Npb24ucHNldWRvX3RocmVhZF9pZD0xLyohKi87 CitTRVQgQEBzZXNzaW9uLmZvcmVpZ25fa2V5X2NoZWNrcz0xLCBAQHNlc3Npb24uc3FsX2F1dG9f aXNfbnVsbD0wLCBAQHNlc3Npb24udW5pcXVlX2NoZWNrcz0xLCBAQHNlc3Npb24uYXV0b2NvbW1p dD0xLyohKi87CitTRVQgQEBzZXNzaW9uLnNxbF9tb2RlPTAvKiEqLzsKK1NFVCBAQHNlc3Npb24u YXV0b19pbmNyZW1lbnRfaW5jcmVtZW50PTEsIEBAc2Vzc2lvbi5hdXRvX2luY3JlbWVudF9vZmZz ZXQ9MS8qISovOworLyohXEMgdXRmOCAqLy8qISovOworU0VUIEBAc2Vzc2lvbi5jaGFyYWN0ZXJf c2V0X2NsaWVudD0zMyxAQHNlc3Npb24uY29sbGF0aW9uX2Nvbm5lY3Rpb249MzMsQEBzZXNzaW9u LmNvbGxhdGlvbl9zZXJ2ZXI9OC8qISovOworU0VUIEBAc2Vzc2lvbi5sY190aW1lX25hbWVzPTAv KiEqLzsKK1NFVCBAQHNlc3Npb24uY29sbGF0aW9uX2RhdGFiYXNlPURFRkFVTFQvKiEqLzsKK2Ny ZWF0ZSB0YWJsZSB0MSAoYSBlbnVtKCdvbmUnLCAndHdvJywgJ3RocmVlJykpCisvKiEqLzsKKyMg YXQgMjMxCisjMTEwOTI3IDIwOjU3OjI1IHNlcnZlciBpZCAxICBlbmRfbG9nX3BvcyAzMDYgCisj IFBvc2l0aW9uICBUaW1lc3RhbXAgICBUeXBlICAgTWFzdGVyIElEICAgICAgICBTaXplICAgICAg TWFzdGVyIFBvcyAgICBGbGFncyAKKyMgICAgICAgZTcgODUgMGUgODIgNGUgICAwMiAgIDAxIDAw IDAwIDAwICAgNGIgMDAgMDAgMDAgICAzMiAwMSAwMCAwMCAgIDA4IDAwCisjICAgICAgIGZhIDAx IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwNCAwMCAwMCAyMSAwMCAwMCAwMCAwMCB8Li4uLi4uLi4u Li4uLi4uLnwKKyMgICAgICAxMGEgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDA2 IDAzIDczIDc0IDY0IHwuLi4uLi4uLi4uLi4uc3RkfAorIyAgICAgIDExYSAwNCAyMSAwMCAyMSAw MCAwOCAwMCAwYyAgMDEgNzQgNjUgNzMgNzQgMDAgNzQgNjUgfC4uLi4uLi4uLnRlc3QudGV8Cisj ICAgICAgMTJhIDczIDc0IDAwIDQyIDQ1IDQ3IDQ5IDRlICAgICAgICAgICAgICAgICAgICAgICAg ICB8c3QuQkVHSU58CisjIAlRdWVyeQl0aHJlYWRfaWQ9MQlleGVjX3RpbWU9MAllcnJvcl9jb2Rl PTAKK1NFVCBUSU1FU1RBTVA9MTMxNzE0NjI0NS8qISovOworQkVHSU4KKy8qISovOworIyBhdCAz MDYKKyMxMTA5MjcgMjA6NTc6MjUgc2VydmVyIGlkIDEgIGVuZF9sb2dfcG9zIDQwNSAKKyMgUG9z aXRpb24gIFRpbWVzdGFtcCAgIFR5cGUgICBNYXN0ZXIgSUQgICAgICAgIFNpemUgICAgICBNYXN0 ZXIgUG9zICAgIEZsYWdzIAorIyAgICAgIDEzMiA4NSAwZSA4MiA0ZSAgIDAyICAgMDEgMDAgMDAg MDAgICA2MyAwMCAwMCAwMCAgIDk1IDAxIDAwIDAwICAgMDAgMDAKKyMgICAgICAxNDUgMDEgMDAg MDAgMDAgMDAgMDAgMDAgMDAgIDA0IDAwIDAwIDIxIDAwIDAwIDAwIDAwIHwuLi4uLi4uLi4uLi4u Li4ufAorIyAgICAgIDE1NSAwMCAwMCAwMSAwMCAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDYgMDMg NzMgNzQgNjQgfC4uLi4uLi4uLi4uLi5zdGR8CisjICAgICAgMTY1IDA0IDIxIDAwIDIxIDAwIDA4 IDAwIDBjICAwMSA3NCA2NSA3MyA3NCAwMCA3NCA2NSB8Li4uLi4uLi4udGVzdC50ZXwKKyMgICAg ICAxNzUgNzMgNzQgMDAgNjkgNmUgNzMgNjUgNzIgIDc0IDIwIDY5IDZlIDc0IDZmIDIwIDc0IHxz dC5pbnNlcnQuaW50by50fAorIyAgICAgIDE4NSAzMSAyMCA3NiA2MSA2YyA3NSA2NSA3MyAgMjAg MjggMjcgNzQgNzcgNmYgMjcgMjkgfDEudmFsdWVzLi4udHdvLi58CisjIAlRdWVyeQl0aHJlYWRf aWQ9MQlleGVjX3RpbWU9MAllcnJvcl9jb2RlPTAKK1NFVCBUSU1FU1RBTVA9MTMxNzE0NjI0NS8q ISovOworaW5zZXJ0IGludG8gdDEgdmFsdWVzICgndHdvJykKKy8qISovOworIyBhdCA0MDUKKyMx MTA5MjcgMjA6NTc6MjUgc2VydmVyIGlkIDEgIGVuZF9sb2dfcG9zIDQzMiAKKyMgUG9zaXRpb24g IFRpbWVzdGFtcCAgIFR5cGUgICBNYXN0ZXIgSUQgICAgICAgIFNpemUgICAgICBNYXN0ZXIgUG9z ICAgIEZsYWdzIAorIyAgICAgIDE5NSA4NSAwZSA4MiA0ZSAgIDEwICAgMDEgMDAgMDAgMDAgICAx YiAwMCAwMCAwMCAgIGIwIDAxIDAwIDAwICAgMDAgMDAKKyMgICAgICAxYTggMDcgMDAgMDAgMDAg MDAgMDAgMDAgMDAgICAgICAgICAgICAgICAgICAgICAgICAgIHwuLi4uLi4uLnwKKyMgCVhpZCA9 IDcKK0NPTU1JVC8qISovOworIyBhdCA0MzIKKyMxMTA5MjcgMjA6NTc6MzAgc2VydmVyIGlkIDEg IGVuZF9sb2dfcG9zIDQ1MSAKKyMgUG9zaXRpb24gIFRpbWVzdGFtcCAgIFR5cGUgICBNYXN0ZXIg SUQgICAgICAgIFNpemUgICAgICBNYXN0ZXIgUG9zICAgIEZsYWdzIAorIyAgICAgIDFiMCA4YSAw ZSA4MiA0ZSAgIDAzICAgMDEgMDAgMDAgMDAgICAxMyAwMCAwMCAwMCAgIGMzIDAxIDAwIDAwICAg MDAgMDAKKyMgCVN0b3AKK0RFTElNSVRFUiA7CisjIEVuZCBvZiBsb2cgZmlsZQorUk9MTEJBQ0sg LyogYWRkZWQgYnkgbXlzcWxiaW5sb2cgKi87CisvKiE1MDAwMyBTRVQgQ09NUExFVElPTl9UWVBF PUBPTERfQ09NUExFVElPTl9UWVBFKi87CitpbmNsdWRlL3JwbF9lbmQuaW5jCgo9PT0gYWRkZWQg ZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9ycGwvdC9iaW5sb2ctaGV4ZHVtcC50ZXN0JwotLS0gYS9t eXNxbC10ZXN0L3N1aXRlL3JwbC90L2JpbmxvZy1oZXhkdW1wLnRlc3QJMTk3MC0wMS0wMSAwMDow MDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3JwbC90L2JpbmxvZy1oZXhkdW1wLnRl c3QJMjAxMS0xMC0xMCAwNjoyMjoxMyArMDAwMApAQCAtMCwwICsxLDE1IEBACisjCisjIEJ1ZyMx MTc0Nzg4NyAtIDM0Mzg2OiBNWVNRTEJJTkxPRyAtLUhFWERVTVAgUFJJTlRTIExBU1QgUk9XIE9G IEhFWERVTVAKKyMgSU5DT1JSRUNUTFkKKyMKKworLS1zb3VyY2UgaW5jbHVkZS9tYXN0ZXItc2xh dmUuaW5jCistLXNvdXJjZSBpbmNsdWRlL3JwbF9yZXNldC5pbmMKKworLS1zeW5jX3NsYXZlX3dp dGhfbWFzdGVyCisKKy0tbGV0ICRNWVNRTERfREFUQURJUj0gYHNlbGVjdCBAQGRhdGFkaXJgCisK Ky0tZXhlYyAkTVlTUUxfQklOTE9HIC0taGV4ZHVtcCBzdGRfZGF0YS9idWcxMTc0Nzg4Ny1iaW4u MDAwMDAyCisKKy0tc291cmNlIGluY2x1ZGUvcnBsX2VuZC5pbmMKCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9wYXJhbGxlbF9zd2l0Y2hfc2VxdWVudGlhbC50 ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9wYXJhbGxlbF9zd2l0Y2hfc2Vx dWVudGlhbC50ZXN0CTIwMTEtMDgtMTkgMTM6MDQ6MjggKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9z dWl0ZS9ycGwvdC9ycGxfcGFyYWxsZWxfc3dpdGNoX3NlcXVlbnRpYWwudGVzdAkyMDExLTEwLTA3 IDA4OjM2OjA0ICswMDAwCkBAIC00MCw2ICs0MCwxMSBAQCBsZXQgJHNsYXZlX3N0YXR1cz0gMDsK IGxldCAkdHJ4PSAwOwogbGV0ICRhbHRlcj0gMDsKIGxldCAkaT0gMjAwOyAjIHdpdGggYmlnZ2Vy IHZhbHVlIHRlc3QgdGltZXMgb3V0IG9uIHNvbWUgUEIgaG9zdHMgCitpZiAoJFZBTEdSSU5EX1RF U1QpCit7CisgICMgdGVzdCBtYXkgYmUgc2xvdyBvbiBWYWxncmluZAorICBsZXQgJGk9NTA7Cit9 CiBpZiAoYHNlbGVjdCBAQGJpbmxvZ19mb3JtYXQgbGlrZSAiU1RBVEVNRU5UImApIHsKICAgICMg cmVsYXggbXRyIHRvIHNjYW4gdW5zYWZlIHdhcm5pbmdzCiAgICBsZXQgJGk9NTA7Cgo9PT0gbW9k aWZpZWQgZmlsZSAnbXlzcWwtdGVzdC90L2FyY2hpdmUudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90 L2FyY2hpdmUudGVzdAkyMDExLTAzLTAzIDA5OjIyOjE3ICswMDAwCisrKyBiL215c3FsLXRlc3Qv dC9hcmNoaXZlLnRlc3QJMjAxMS0xMC0wNiAxMzo1MToyOCArMDAwMApAQCAtMTIsNiArMTIsNyBA QCBEUk9QIFRBQkxFIGlmIGV4aXN0cyB0MSx0Mix0Myx0NCx0NSx0NjsKIC0tZW5hYmxlX3dhcm5p bmdzCiAKIFNFVCBkZWZhdWx0X3N0b3JhZ2VfZW5naW5lPUFSQ0hJVkU7CitsZXQgJE1ZU1FMRF9E QVRBRElSPSBgU0VMRUNUIEBAZGF0YWRpcmA7CiAKIENSRUFURSBUQUJMRSB0MSAoCiAgIFBlcmlv ZCBzbWFsbGludCg0KSB1bnNpZ25lZCB6ZXJvZmlsbCBERUZBVUxUICcwMDAwJyBOT1QgTlVMTCwK QEAgLTE2NDEsMTggKzE2NDIsMTQgQEAgRFJPUCBUQUJMRSB0MSx0MjsKICMKICMgQlVHIzQ3MDEy IGFyY2hpdmUgdGFibGVzIGFyZSBub3QgdXBncmFkZWFibGUsIGFuZCBzZXJ2ZXIgY3Jhc2hlcyBv biBhbnkgYWNjZXNzCiAjCi1sZXQgJE1ZU1FMRF9EQVRBRElSPSBgU0VMRUNUIEBAZGF0YWRpcmA7 CiBjb3B5X2ZpbGUgc3RkX2RhdGEvYnVnNDcwMTIuZnJtICRNWVNRTERfREFUQURJUi90ZXN0L3Qx LmZybTsKIGNvcHlfZmlsZSBzdGRfZGF0YS9idWc0NzAxMi5BUlogJE1ZU1FMRF9EQVRBRElSL3Rl c3QvdDEuQVJaOwogY29weV9maWxlIHN0ZF9kYXRhL2J1ZzQ3MDEyLkFSTSAkTVlTUUxEX0RBVEFE SVIvdGVzdC90MS5BUk07CiAKLS0tZXJyb3IgRVJfVEFCTEVfTkVFRFNfVVBHUkFERQogU0hPVyBD UkVBVEUgVEFCTEUgdDE7CiAKLS0tZXJyb3IgRVJfVEFCTEVfTkVFRFNfVVBHUkFERQogU0VMRUNU ICogRlJPTSB0MTsKIAotLS1lcnJvciBFUl9UQUJMRV9ORUVEU19VUEdSQURFCiBJTlNFUlQgSU5U TyB0MSAoY29sMSwgY29sMikgVkFMVUVTICgxLCAidmFsdWUiKTsKIAogUkVQQUlSIFRBQkxFIHQx OwpAQCAtMTcxNSw3ICsxNzEyLDYgQEAgQ1JFQVRFIFRBQkxFIHQxIChhIGludCkgRU5HSU5FPUFS Q0hJVkU7CiBTSE9XIENSRUFURSBUQUJMRSB0MTsKIElOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMSk7 CiBPUFRJTUlaRSBUQUJMRSB0MTsKLWxldCAkTVlTUUxEX0RBVEFESVI9IGBzZWxlY3QgQEBkYXRh ZGlyYDsKIHJlbW92ZV9maWxlICRNWVNRTERfREFUQURJUi90ZXN0L3QxLmZybTsKIEZMVVNIIFRB QkxFUzsKIElOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMik7CkBAIC0xNzQ1LDMgKzE3NDEsMzMgQEAg SU5TRVJUIElOVE8gdDEgU0VMRUNUIHQxLiogRlJPTSB0MSx0MSB0MgogU0VMRUNUICogRlJPTSB0 MSBPUkRFUiBCWSBmIExJTUlUIDE7CiBEUk9QIFRBQkxFIHQxOwogU0VUIHNvcnRfYnVmZmVyX3Np emU9REVGQVVMVDsKKworLS1lY2hvICMKKy0tZWNobyAjIEJVRyMxMTc1NjY4NyAtIDQ4NjMzOiBB UkNISVZFIFRBQkxFUyBBUkUgTk9UIFVQR1JBREVBQkxFCistLWVjaG8gIworY29weV9maWxlIHN0 ZF9kYXRhL2J1ZzQ4NjMzLmZybSAkTVlTUUxEX0RBVEFESVIvdGVzdC90MS5mcm07Citjb3B5X2Zp bGUgc3RkX2RhdGEvYnVnNDg2MzMuQVJaICRNWVNRTERfREFUQURJUi90ZXN0L3QxLkFSWjsKK2Nv cHlfZmlsZSBzdGRfZGF0YS9idWc0ODYzMy5BUk0gJE1ZU1FMRF9EQVRBRElSL3Rlc3QvdDEuQVJN OworU0hPVyBDUkVBVEUgVEFCTEUgdDE7CisjIFRlc3QgZmlyc3QgdGFibGUgc2NhbgorU0VMRUNU ICogRlJPTSB0MTsKKyMgVGVzdCBzZWNvbmQgdGFibGUgc2NhbgorU0VMRUNUICogRlJPTSB0MTsK KyMgVGVzdCB0YWJsZSBjbG9zZQorRkxVU0ggVEFCTEUgdDE7CitTRUxFQ1QgKiBGUk9NIHQxOwor IyBUZXN0IGNoZWNrCitDSEVDSyBUQUJMRSB0MTsKK1NFTEVDVCAqIEZST00gdDE7CisjIFRlc3Qg aW5zZXJ0CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMywgJ3RleHQnLCAndmFyY2hhcicsICdibG9i MScsICdibG9iMicpOworU0VMRUNUICogRlJPTSB0MTsKKyMgVGVzdCB0YWJsZSBjbG9zZSBhZnRl ciBpbnNlcnQKK0ZMVVNIIFRBQkxFIHQxOworU0VMRUNUICogRlJPTSB0MTsKKyMgVGVzdCByZXBh aXIKK1JFUEFJUiBUQUJMRSB0MTsKK1NFTEVDVCAqIEZST00gdDE7CisjIFRlc3QgY2hlY2sgdGFi bGUgYWZ0ZXIgdXBncmFkZQorQ0hFQ0sgVEFCTEUgdDE7CitEUk9QIFRBQkxFIHQxOwoKPT09IG1v ZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9wYXJ0aXRpb25faW5ub2RiLnRlc3QnCi0tLSBhL215 c3FsLXRlc3QvdC9wYXJ0aXRpb25faW5ub2RiLnRlc3QJMjAxMS0wOC0yOSAwNzowODoxOCArMDAw MAorKysgYi9teXNxbC10ZXN0L3QvcGFydGl0aW9uX2lubm9kYi50ZXN0CTIwMTEtMTAtMDcgMDg6 MzA6MDEgKzAwMDAKQEAgLTksNiArOSwxNyBAQCBkcm9wIHRhYmxlIGlmIGV4aXN0cyB0MSwgdDI7 CiBsZXQgJE1ZU1FMRF9EQVRBRElSPSBgU0VMRUNUIEBAZGF0YWRpcmA7CiAKIC0tZWNobyAjCist LWVjaG8gIyBCdWcjMTMwMDcxNTQ6IENyYXNoIGluIGtleXNfdG9fdXNlX2Zvcl9zY2FubmluZyB3 aXRoIE9SREVSIEJZCistLWVjaG8gIyAgICAgICAgICAgICAgIGFuZCBQQVJUSVRJT05JTkcKKy0t ZWNobyAjCitDUkVBVEUgVEFCTEUgdDEgKGEgSU5ULCBLRVkoYSkpCitFTkdJTkUgPSBJbm5vREIK K1BBUlRJVElPTiBCWSBLRVkgKGEpIFBBUlRJVElPTlMgMTsKK1NFTEVDVCAxIEZST00gdDEgV0hF UkUgYSA+IChTRUxFQ1QgTEFTVF9JTlNFUlRfSUQoKSBGUk9NIHQxIExJTUlUIDApCitPUkRFUiBC WSBhOworRFJPUCBUQUJMRSB0MTsKKworLS1lY2hvICMKIC0tZWNobyAjIEJ1ZyM1NjI4NzogY3Jh c2ggd2hlbiB1c2luZyBQYXJ0aXRpb24gZGF0ZXRpbWUgaW4gc3ViIGluIHF1ZXJ5CiAtLWVjaG8g IwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC90L3BhcnRpdGlvbl9teWlzYW0udGVz dCcKLS0tIGEvbXlzcWwtdGVzdC90L3BhcnRpdGlvbl9teWlzYW0udGVzdAkyMDExLTEwLTA2IDA5 OjUwOjQwICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9wYXJ0aXRpb25fbXlpc2FtLnRlc3QJMjAx MS0xMC0wNyAxNDoyMDoyMSArMDAwMApAQCAtMTAsNiArMTAsMjcgQEAgRFJPUCBUQUJMRSBJRiBF WElTVFMgdDEsIHQyOwogbGV0ICRNWVNRTERfREFUQURJUj0gYFNFTEVDVCBAQGRhdGFkaXJgOwog CiAtLWVjaG8gIworLS1lY2hvICMgQnVnIzExNzYzODI1LzU2NTkwOiBQQVJUSVRJT05TOiBGVUxM VEVYVCBTRUFSQ0hFUyBGQUlMCistLWVjaG8gIyAoYmFkL2NvbmZ1c2luZyBlcnJvciBtZXNzYWdl KQorQ1JFQVRFIFRBQkxFIHQxCisoYSBJTlQgVU5TSUdORUQgQVVUT19JTkNSRU1FTlQgTk9UIE5V TEwgUFJJTUFSWSBLRVksCisgYiBWQVJDSEFSKDIwMCksCisgYyBURVhUKQorRU5HSU5FPU15SVNB TQorUEFSVElUSU9OIEJZIEhBU0goYSkgUEFSVElUSU9OUyAxOworLS1lcnJvciBFUl9GVUxMVEVY VF9OT1RfU1VQUE9SVEVEX1dJVEhfUEFSVElUSU9OSU5HCitDUkVBVEUgRlVMTFRFWFQgSU5ERVgg bXNnIE9OIHQxIChiLCBjKTsKK0RST1AgVEFCTEUgdDE7CistLWVycm9yIEVSX0ZVTExURVhUX05P VF9TVVBQT1JURURfV0lUSF9QQVJUSVRJT05JTkcKK0NSRUFURSBUQUJMRSB0MQorKGEgSU5UIFVO U0lHTkVEIEFVVE9fSU5DUkVNRU5UIE5PVCBOVUxMIFBSSU1BUlkgS0VZLAorIGIgVkFSQ0hBUigy MDApLAorIGMgVEVYVCwKKyBGVUxMVEVYVCAoYiwgYykpCitFTkdJTkU9TXlJU0FNCitQQVJUSVRJ T04gQlkgSEFTSChhKSBQQVJUSVRJT05TIDE7CisKKy0tZWNobyAjCiAtLWVjaG8gIyBCVUcjMTE5 MzMyMjYgLSA2MDY4MTogQ0hFQ0tTVU0gVEFCTEUgUkVUVVJOUyAwIEZPUiBQQVJUSVRJT05FRCBU QUJMRQogLS1lY2hvICMKIENSRUFURSBUQUJMRSB0MSAoCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlz cWwtdGVzdC92YWxncmluZC5zdXBwJwotLS0gYS9teXNxbC10ZXN0L3ZhbGdyaW5kLnN1cHAJMjAx MS0wOS0xOSAxNDowODozMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3ZhbGdyaW5kLnN1cHAJMjAx MS0xMC0wNyAwNjowMzoxNCArMDAwMApAQCAtMjgxLDYgKzI4MSwxNiBAQAogICAgZnVuOmRvX2Zs dXNoCiB9CiAKK3sKKyAgbGlieiBkZWZsYXRlNAorICBNZW1jaGVjazpQYXJhbQorICB3cml0ZShi dWYpCisgIGZ1bjoqCisgIGZ1bjpteV93cml0ZQorICBmdW46ZG9fZmx1c2gKKyAgZnVuOmF6Y2xv c2UKK30KKwogIwogIyBXYXJuaW5nIGZyb20gbXlfdGhyZWFkX2luaXQgYmVjYXN1ZSBteXNxbGQg ZGllcyBiZWZvcmUga2lsbCB0aHJlYWQgZXhpc3RzCiAjCgo9PT0gbW9kaWZpZWQgZmlsZSAnc2Ny aXB0cy9teXNxbF9pbnN0YWxsX2RiLnBsLmluJwotLS0gYS9zY3JpcHRzL215c3FsX2luc3RhbGxf ZGIucGwuaW4JMjAxMS0wOS0wNiAxNjoyMzo0MyArMDAwMAorKysgYi9zY3JpcHRzL215c3FsX2lu c3RhbGxfZGIucGwuaW4JMjAxMS0xMC0xMCAwNjo1OTo1OCArMDAwMApAQCAtNTM4LDcgKzUzOCw3 IEBAIGVsc2UKICAgICAgICAgICIiLAogICAgICAgICAiRXhhbWluZSB0aGUgbG9ncyBpbiAkb3B0 LT57bGRhdGF9IGZvciBtb3JlIGluZm9ybWF0aW9uLiIsCiAgICAgICAgICJZb3UgY2FuIHRyeSB0 byBzdGFydCB0aGUgbXlzcWxkIGRhZW1vbiB3aXRoOiIsCi0gICAgICAgICIkbXlzcWxkIC0tc2tp cC1ncmFudCAmIiwKKyAgICAgICAgIiRteXNxbGQgLS1za2lwLWdyYW50LXRhYmxlcyAmIiwKICAg ICAgICAgImFuZCB1c2UgdGhlIGNvbW1hbmQgbGluZSB0b29sIiwKICAgICAgICAgIiRiaW5kaXIv bXlzcWwgdG8gY29ubmVjdCB0byB0aGUgbXlzcWwiLAogICAgICAgICAiZGF0YWJhc2UgYW5kIGxv b2sgYXQgdGhlIGdyYW50IHRhYmxlczoiLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NjcmlwdHMvbXlz cWxfaW5zdGFsbF9kYi5zaCcKLS0tIGEvc2NyaXB0cy9teXNxbF9pbnN0YWxsX2RiLnNoCTIwMTEt MDktMDYgMTU6NTk6MTIgKzAwMDAKKysrIGIvc2NyaXB0cy9teXNxbF9pbnN0YWxsX2RiLnNoCTIw MTEtMTAtMTAgMDY6NTk6NTggKzAwMDAKQEAgLTQxMCw3ICs0MTAsNyBAQCBlbHNlCiAgIGVjaG8K ICAgZWNobyAiWW91IGNhbiB0cnkgdG8gc3RhcnQgdGhlIG15c3FsZCBkYWVtb24gd2l0aDoiCiAg IGVjaG8KLSAgZWNobyAiICAgIHNoZWxsPiAkbXlzcWxkIC0tc2tpcC1ncmFudCAmIgorICBlY2hv ICIgICAgc2hlbGw+ICRteXNxbGQgLS1za2lwLWdyYW50LXRhYmxlcyAmIgogICBlY2hvCiAgIGVj aG8gImFuZCB1c2UgdGhlIGNvbW1hbmQgbGluZSB0b29sICRiaW5kaXIvbXlzcWwiCiAgIGVjaG8g InRvIGNvbm5lY3QgdG8gdGhlIG15c3FsIGRhdGFiYXNlIGFuZCBsb29rIGF0IHRoZSBncmFudCB0 YWJsZXM6IgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYV9wYXJ0aXRpb24uY2MnCi0tLSBhL3Nx bC9oYV9wYXJ0aXRpb24uY2MJMjAxMS0xMC0wNiAwOTo1MDo0MCArMDAwMAorKysgYi9zcWwvaGFf cGFydGl0aW9uLmNjCTIwMTEtMTAtMDcgMDg6MzA6MDEgKzAwMDAKQEAgLTY0NzQsMjMgKzY0NzQs MTkgQEAgdm9pZCBoYV9wYXJ0aXRpb246OmxhdGVfZXh0cmFfbm9fY2FjaGUodQogICAgICAgICAg ICAgICAgIE1PRFVMRSBvcHRpbWlzZXIgc3VwcG9ydAogKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAot LyoKLSAgR2V0IGtleXMgdG8gdXNlIGZvciBzY2FubmluZworLyoqCisgIEdldCBrZXlzIHRvIHVz ZSBmb3Igc2Nhbm5pbmcuCiAKLSAgU1lOT1BTSVMKLSAgICBrZXlzX3RvX3VzZV9mb3Jfc2Nhbm5p bmcoKQorICBAcmV0dXJuIGtleV9tYXAgb2Yga2V5cyB1c2FibGUgZm9yIHNjYW5uaW5nCiAKLSAg UkVUVVJOIFZBTFVFCi0gICAga2V5X21hcCBvZiBrZXlzIHVzYWJsZSBmb3Igc2Nhbm5pbmcKKyAg QG5vdGUgTm8gbmVlZCB0byB1c2UgcmVhZF9wYXJ0aXRpb25zIGhlcmUsIHNpbmNlIGl0IGRvZXMg bm90IGRlcGVuZCBvbgorICB3aGljaCBwYXJ0aXRpb25zIGlzIHVzZWQsIG9ubHkgd2hpY2ggc3Rv cmFnZSBlbmdpbmUgdXNlZC4KICovCiAKIGNvbnN0IGtleV9tYXAgKmhhX3BhcnRpdGlvbjo6a2V5 c190b191c2VfZm9yX3NjYW5uaW5nKCkKIHsKLSAgdWludCBmaXJzdF91c2VkX3BhcnRpdGlvbjsK ICAgREJVR19FTlRFUigiaGFfcGFydGl0aW9uOjprZXlzX3RvX3VzZV9mb3Jfc2Nhbm5pbmciKTsK LQotICBmaXJzdF91c2VkX3BhcnRpdGlvbj0gYml0bWFwX2dldF9maXJzdF9zZXQoJihtX3BhcnRf aW5mby0+cmVhZF9wYXJ0aXRpb25zKSk7Ci0gIERCVUdfUkVUVVJOKG1fZmlsZVtmaXJzdF91c2Vk X3BhcnRpdGlvbl0tPmtleXNfdG9fdXNlX2Zvcl9zY2FubmluZygpKTsKKyAgREJVR19SRVRVUk4o bV9maWxlWzBdLT5rZXlzX3RvX3VzZV9mb3Jfc2Nhbm5pbmcoKSk7CiB9CiAKICNkZWZpbmUgTUFY X1BBUlRTX0ZPUl9PUFRJTUlaRVJfQ0FMTFMgMTAKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvbG9n X2V2ZW50LmNjJwotLS0gYS9zcWwvbG9nX2V2ZW50LmNjCTIwMTEtMDktMjIgMTA6MTQ6MDAgKzAw MDAKKysrIGIvc3FsL2xvZ19ldmVudC5jYwkyMDExLTEwLTEwIDA2OjIyOjEzICswMDAwCkBAIC0x Njc3LDYgKzE2NzcsMTEgQEAgdm9pZCBMb2dfZXZlbnQ6OnByaW50X2hlYWRlcihJT19DQUNIRSog ZgogICAgIGlmIChoZXhfc3RyaW5nWzBdKQogICAgIHsKICAgICAgIGNoYXIgZW1pdF9idWZbMjU2 XTsKKyAgICAgIGludCBwYWRfbGVuZ3RoPSA0OCAtIHN0cmxlbihoKTsKKyAgICAgIERCVUdfQVNT RVJUKHN0cmxlbihoKSA8IDQ4KTsKKyAgICAgIGZvcihpbnQgcGFkX2RvbmU9IDA7IHBhZF9kb25l IDwgcGFkX2xlbmd0aDsgcGFkX2RvbmUrKykKKyAgICAgICAgKmgrKyA9ICcgJzsKKyAgICAgICpo PSAnXDAnOwogICAgICAgc2l6ZV90IGNvbnN0IGJ5dGVzX3dyaXR0ZW49CiAgICAgICAgIG15X3Nu cHJpbnRmKGVtaXRfYnVmLCBzaXplb2YoZW1pdF9idWYpLAogICAgICAgICAgICAgICAgICAgICAi IyAlOC44bHggJS00OC40OHMgfCVzfFxuIiwKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvcnBsX2lu Zm9fZmlsZS5jYycKLS0tIGEvc3FsL3JwbF9pbmZvX2ZpbGUuY2MJMjAxMS0wOC0xOSAxMzowNDoy OCArMDAwMAorKysgYi9zcWwvcnBsX2luZm9fZmlsZS5jYwkyMDExLTA5LTE0IDE2OjEyOjIyICsw MDAwCkBAIC0xMzAsMjYgKzEzMCwxNCBAQCBpbnQgUnBsX2luZm9fZmlsZTo6ZG9fcHJlcGFyZV9p bmZvX2Zvcl93CiBpbnQgUnBsX2luZm9fZmlsZTo6ZG9fY2hlY2tfaW5mbyhjb25zdCB1bG9uZyAq dWlkeCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVpbnQgbmlkeCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKIHsKLSNpZm5k ZWYgTk9fREJVRwogICAvKgotICAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBmaWxlIGV4 aXN0cyBhbmQgaW4gb3RoZXIgbW9kdWxlcwotICAgIGZ1cnRoZXIgYWN0aW9ucyBhcmUgdGFrZW4g YmFzZWQgb24gdGhpcy4gSWYgdGhlIGZpbGUgZXhpc3RzCi0gICAgYnV0IHVzZXJzIGRvIG5vdCBo YXZlIHRoZSBhcHByb3ByaWF0ZWQgcmlnaHRzIHRvIGFjY2VzcyBpdCwKLSAgICBvdGhlciBtb2R1 bGVzIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QgYW5kCi0gICAgd2ls bCB0YWtlIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb25zIGFuZCBtb3N0IGxpa2VseSB3aWxsIGZhaWwK LSAgICBzYWZlbHkgYWZ0ZXIgdHJ5aW5nIHRvIGNyZWF0ZSBpdC4gCisgICAgVGhpcyBmdW5jdGlv biBpcyB1c2VkIGJ5IGNhbGxlcnMgdG8gY2hlY2sgaWYgdGhlIGZpbGUgZXhpc3RzLgogCi0gICAg VGhpcyBpcyBiZWhhdmlvciBpcyBub3QgYSBwcm9ibGVtLiBIb3dldmVyLCBpbiBvdGhlciBtb2R1 bGVzLAotICAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBwcmludCBvdXQgd2hhdCBpcyB0aGUgcm9v dCBvZiB0aGUKLSAgICBmYWlsdXJlIGFzIGEgZGV0YWlsZWQgZXJyb3IgY29kZSBpcyBub3QgcmV0 dXJuZWQuIEZvciB0aGF0Ci0gICAgcmVhc29uLCB3ZSBwcmludCBvdXQgc3VjaCBpbmZvcm1hdGlv biBpbiBoZXJlLgorICAgIElmIHRoZSBmaWxlIGV4aXN0cyBidXQgdXNlcnMgZG8gbm90IGhhdmUg dGhlIGFwcHJvcHJpYXRlZAorICAgIHJpZ2h0cyB0byBhY2Nlc3MgaXQsIGNhbGxlcnMgd2lsbCBh c3N1bWUgdGhhdCB0aGUgZmlsZSBkb2VzCisgICAgbm90IGV4aXN0IHRha2luZyB0aGUgYXBwcm9w cmlhdGUgYWN0aW9ucyBhbmQgZmFpbGluZyB3aGVuCisgICAgdHJ5aW5nIHRvIGNyZWF0ZSB0aGUg ZmlsZS4KICAgKi8KLSAgaWYgKG15X2FjY2VzcyhpbmZvX2ZuYW1lLCBGX09LIHwgUl9PSyB8IFdf T0spKQotICAgIHNxbF9wcmludF9pbmZvcm1hdGlvbigiSW5mbyBmaWxlICVzIGNhbm5vdCBiZSBh Y2Nlc3NlZCAoZXJybm8gJWQpLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiBNb3N0IGxp a2VseSB0aGlzIGlzIGEgbmV3IHNsYXZlIG9yIHlvdSBhcmUiCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICIgY2hhbmdpbmcgdGhlIHJlcG9zaXRvcnkgdHlwZS4iLCBpbmZvX2ZuYW1lLAotICAg ICAgICAgICAgICAgICAgICAgICAgICBlcnJubyk7Ci0jZW5kaWYKICAgcmV0dXJuIG15X2FjY2Vz cyhpbmZvX2ZuYW1lLCBGX09LKTsKIH0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9ycGxfcmxp X3BkYi5jYycKLS0tIGEvc3FsL3JwbF9ybGlfcGRiLmNjCTIwMTEtMTAtMDUgMTM6MTY6MzggKzAw MDAKKysrIGIvc3FsL3JwbF9ybGlfcGRiLmNjCTIwMTEtMTAtMDYgMTU6MzI6MjEgKzAwMDAKQEAg LTY5MiwxMiArNjkyLDExIEBAIFNsYXZlX3dvcmtlciAqbWFwX2RiX3RvX3dvcmtlcihjb25zdCBj aGEKICAgICAgIFVubGVzcyBcZXhpc3RzIHRoZSBsYXN0IGFzc2lnbmVkIFdvcmtlciwgZ2V0IGEg ZnJlZSB3b3JrZXIgYmFzZWQKICAgICAgIG9uIGEgcG9saWN5IGRlc2NyaWJlZCBpbiB0aGUgZnVu Y3Rpb24gZ2V0X2xlYXN0X29jY3VwaWVkX3dvcmtlcigpLgogICAgICovCisgICAgbXlzcWxfbXV0 ZXhfbG9jaygmc2xhdmVfd29ya2VyX2hhc2hfbG9jayk7CisKICAgICBlbnRyeS0+d29ya2VyPSAo IWxhc3Rfd29ya2VyKSA/CiAgICAgICBnZXRfbGVhc3Rfb2NjdXBpZWRfd29ya2VyKHdvcmtlcnMp IDogbGFzdF93b3JrZXI7CiAgICAgZW50cnktPndvcmtlci0+dXNhZ2VfcGFydGl0aW9uKys7Ci0K LSAgICBteXNxbF9tdXRleF9sb2NrKCZzbGF2ZV93b3JrZXJfaGFzaF9sb2NrKTsKLQogICAgIGlm IChtYXBwaW5nX2RiX3RvX3dvcmtlci5yZWNvcmRzID4gbXRzX3BhcnRpdGlvbl9oYXNoX3NvZnRf bWF4KQogICAgIHsKICAgICAgIC8qIHJlbW92ZSB6ZXJvLXVzYWdlICh0b2RvOiByYXJlIG9yIGxv bmcgYWdvIHNjaGVkdWxlZCkgcmVjb3JkcyAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zaGFy ZS9lcnJtc2ctdXRmOC50eHQnCi0tLSBhL3NxbC9zaGFyZS9lcnJtc2ctdXRmOC50eHQJMjAxMS0w OS0yOSAxMjo1NTowNiArMDAwMAorKysgYi9zcWwvc2hhcmUvZXJybXNnLXV0ZjgudHh0CTIwMTEt MTAtMDcgMTQ6MjA6MjEgKzAwMDAKQEAgLTY1OTIsMyArNjU5Miw3IEBAIEVSX1BMVUdJTl9OT19V TklOU1RBTEwKIAogRVJfUExVR0lOX05PX0lOU1RBTEwKICAgZW5nICJQbHVnaW4gJyVzJyBpcyBt YXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IGluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRo ZSBzZXJ2ZXIgdG8gaW5zdGFsbCBpdC4iCisKK0VSX0ZVTExURVhUX05PVF9TVVBQT1JURURfV0lU SF9QQVJUSVRJT05JTkcKKyAgZW5nICJGVUxMVEVYVCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkIGZv ciBwYXJ0aXRpb25lZCB0YWJsZXMuIgorICBzd2UgIkZVTExURVhUIGluZGV4IHN0w7ZkcyBlaiBm w7ZyIHBhcnRpdGlvbmVyYWRlIHRhYmVsbGVyLiIKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3Fs X3RhYmxlLmNjJwotLS0gYS9zcWwvc3FsX3RhYmxlLmNjCTIwMTEtMDgtMzAgMDQ6Mjg6MTggKzAw MDAKKysrIGIvc3FsL3NxbF90YWJsZS5jYwkyMDExLTEwLTA3IDE0OjIwOjIxICswMDAwCkBAIC0z NDU3LDYgKzM0NTcsMTUgQEAgbXlzcWxfcHJlcGFyZV9jcmVhdGVfdGFibGUoVEhEICp0aGQsIEhB XwogICAgIHsKICAgICAgIGlmICghKGZpbGUtPmhhX3RhYmxlX2ZsYWdzKCkgJiBIQV9DQU5fRlVM TFRFWFQpKQogICAgICAgeworI2lmZGVmIFdJVEhfUEFSVElUSU9OX1NUT1JBR0VfRU5HSU5FCisg ICAgICAgIGlmIChmaWxlLT5odCA9PSBwYXJ0aXRpb25faHRvbikKKyAgICAgICAgeworICAgICAg ICAgIG15X21lc3NhZ2UoRVJfRlVMTFRFWFRfTk9UX1NVUFBPUlRFRF9XSVRIX1BBUlRJVElPTklO RywKKyAgICAgICAgICAgICAgICAgICAgIEVSKEVSX0ZVTExURVhUX05PVF9TVVBQT1JURURfV0lU SF9QQVJUSVRJT05JTkcpLAorICAgICAgICAgICAgICAgICAgICAgTVlGKDApKTsKKyAgICAgICAg ICBEQlVHX1JFVFVSTihUUlVFKTsKKyAgICAgICAgfQorI2VuZGlmCiAJbXlfbWVzc2FnZShFUl9U QUJMRV9DQU5UX0hBTkRMRV9GVCwgRVIoRVJfVEFCTEVfQ0FOVF9IQU5ETEVfRlQpLAogICAgICAg ICAgICAgICAgICAgIE1ZRigwKSk7CiAJREJVR19SRVRVUk4oVFJVRSk7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL3RhYmxlLmNjJwotLS0gYS9zcWwvdGFibGUuY2MJMjAxMS0wOS0yNiAxMzo0ODow NiArMDAwMAorKysgYi9zcWwvdGFibGUuY2MJMjAxMS0xMC0wNyAwNjowMzoxNCArMDAwMApAQCAt MTE3Myw3ICsxMTczLDcgQEAgc3RhdGljIGludCBvcGVuX2JpbmFyeV9mcm0oVEhEICp0aGQsIFRB QgogICAgIH0KICAgICBlbHNlCiAjZW5kaWYKLSAgICBpZiAoc2hhcmUtPm15c3FsX3ZlcnNpb24g Pj0gNTAxMTApCisgICAgaWYgKHNoYXJlLT5teXNxbF92ZXJzaW9uID49IDUwMTEwICYmIG5leHRf Y2h1bmsgPCBidWZmX2VuZCkKICAgICB7CiAgICAgICAvKiBOZXcgYXV0b19wYXJ0aXRpb25lZCBp bmRpY2F0b3IgaW50cm9kdWNlZCBpbiA1LjEuMTEgKi8KICNpZmRlZiBXSVRIX1BBUlRJVElPTl9T VE9SQUdFX0VOR0lORQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC91ZGZfZXhhbXBsZS5jJwotLS0g YS9zcWwvdWRmX2V4YW1wbGUuYwkyMDExLTA2LTMwIDE1OjUwOjQ1ICswMDAwCisrKyBiL3NxbC91 ZGZfZXhhbXBsZS5jCTIwMTEtMTAtMTAgMDY6NTk6NTggKzAwMDAKQEAgLTIwLDcgKzIwLDcgQEAK ICoqIFRoZSBmdW5jdGlvbnMgbmFtZSwgdHlwZSBhbmQgc2hhcmVkIGxpYnJhcnkgaXMgc2F2ZWQg aW4gdGhlIG5ldyBzeXN0ZW0KICoqIHRhYmxlICdmdW5jJy4gIFRvIGJlIGFibGUgdG8gY3JlYXRl IG5ldyBmdW5jdGlvbnMgb25lIG11c3QgaGF2ZSB3cml0ZQogKiogcHJpdmlsZWdlIGZvciB0aGUg ZGF0YWJhc2UgJ215c3FsJy4JSWYgb25lIHN0YXJ0cyBNeVNRTCB3aXRoCi0qKiAtLXNraXAtZ3Jh bnQsIHRoZW4gVURGIGluaXRpYWxpemF0aW9uIHdpbGwgYWxzbyBiZSBza2lwcGVkLgorKiogLS1z a2lwLWdyYW50LXRhYmxlcywgdGhlbiBVREYgaW5pdGlhbGl6YXRpb24gd2lsbCBhbHNvIGJlIHNr aXBwZWQuCiAqKgogKiogU3ludGF4IGZvciB0aGUgbmV3IGNvbW1hbmRzIGFyZToKICoqIGNyZWF0 ZSBmdW5jdGlvbiA8ZnVuY3Rpb25fbmFtZT4gcmV0dXJucyB7c3RyaW5nfHJlYWx8aW50ZWdlcn0K Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2FyY2hpdmUvYXppby5jJwotLS0gYS9zdG9yYWdl L2FyY2hpdmUvYXppby5jCTIwMTEtMDYtMDMgMDc6NDk6MDUgKzAwMDAKKysrIGIvc3RvcmFnZS9h cmNoaXZlL2F6aW8uYwkyMDExLTEwLTA2IDEzOjUxOjI4ICswMDAwCkBAIC03MSw2ICs3MSw3IEBA IGludCBhel9vcGVuIChhemlvX3N0cmVhbSAqcywgY29uc3QgY2hhcgogICBzLT52ZXJzaW9uID0g KHVuc2lnbmVkIGNoYXIpYXpfbWFnaWNbMV07IC8qIHRoaXMgbmVlZHMgdG8gYmUgYSBkZWZpbmUg dG8gdmVyc2lvbiAqLwogICBzLT5taW5vcl92ZXJzaW9uPSAodW5zaWduZWQgY2hhcikgYXpfbWFn aWNbMl07IC8qIG1pbm9yIHZlcnNpb24gKi8KICAgcy0+ZGlydHk9IEFaX1NUQVRFX0NMRUFOOwor ICBzLT5zdGFydD0gMDsKIAogICAvKgogICAgIFdlIGRvIG91ciBvd24gdmVyc2lvbiBvZiBhcHBl bmQgYnkgbmF0dXJlLiAKQEAgLTE2OSw2ICsxNzAsOSBAQCBpbnQgd3JpdGVfaGVhZGVyKGF6aW9f c3RyZWFtICpzKQogICBjaGFyIGJ1ZmZlcltBWkhFQURFUl9TSVpFICsgQVpNRVRBX0JVRkZFUl9T SVpFXTsKICAgY2hhciAqcHRyPSBidWZmZXI7CiAKKyAgaWYgKHMtPnZlcnNpb24gPT0gMSkKKyAg ICByZXR1cm4gMDsKKwogICBzLT5ibG9ja19zaXplPSBBWl9CVUZTSVpFX1dSSVRFOwogICBzLT52 ZXJzaW9uID0gKHVuc2lnbmVkIGNoYXIpYXpfbWFnaWNbMV07CiAgIHMtPm1pbm9yX3ZlcnNpb24g PSAodW5zaWduZWQgY2hhcilhel9tYWdpY1syXTsKQEAgLTI5MCw5ICsyOTQsOSBAQCB2b2lkIGNo ZWNrX2hlYWRlcihhemlvX3N0cmVhbSAqcykKICAgLyogUGVlayBhaGVhZCB0byBjaGVjayB0aGUg Z3ppcCBtYWdpYyBoZWFkZXIgKi8KICAgaWYgKCBzLT5zdHJlYW0ubmV4dF9pblswXSA9PSBnel9t YWdpY1swXSAgJiYgcy0+c3RyZWFtLm5leHRfaW5bMV0gPT0gZ3pfbWFnaWNbMV0pCiAgIHsKKyAg ICByZWFkX2hlYWRlcihzLCBzLT5zdHJlYW0ubmV4dF9pbik7CiAgICAgcy0+c3RyZWFtLmF2YWls X2luIC09IDI7CiAgICAgcy0+c3RyZWFtLm5leHRfaW4gKz0gMjsKLSAgICBzLT52ZXJzaW9uPSAo dW5zaWduZWQgY2hhcikyOwogCiAgICAgLyogQ2hlY2sgdGhlIHJlc3Qgb2YgdGhlIGd6aXAgaGVh ZGVyICovCiAgICAgbWV0aG9kID0gZ2V0X2J5dGUocyk7CkBAIC0zMjEsNyArMzI1LDggQEAgdm9p ZCBjaGVja19oZWFkZXIoYXppb19zdHJlYW0gKnMpCiAgICAgICBmb3IgKGxlbiA9IDA7IGxlbiA8 IDI7IGxlbisrKSAodm9pZClnZXRfYnl0ZShzKTsKICAgICB9CiAgICAgcy0+el9lcnIgPSBzLT56 X2VvZiA/IFpfREFUQV9FUlJPUiA6IFpfT0s7Ci0gICAgcy0+c3RhcnQgPSBteV90ZWxsKHMtPmZp bGUsIE1ZRigwKSkgLSBzLT5zdHJlYW0uYXZhaWxfaW47CisgICAgaWYgKCFzLT5zdGFydCkKKyAg ICAgIHMtPnN0YXJ0PSBteV90ZWxsKHMtPmZpbGUsIE1ZRigwKSkgLSBzLT5zdHJlYW0uYXZhaWxf aW47CiAgIH0KICAgZWxzZSBpZiAoIHMtPnN0cmVhbS5uZXh0X2luWzBdID09IGF6X21hZ2ljWzBd ICAmJiBzLT5zdHJlYW0ubmV4dF9pblsxXSA9PSBhel9tYWdpY1sxXSkKICAgewpAQCAtMzY1LDkg KzM3MCwxMSBAQCB2b2lkIHJlYWRfaGVhZGVyKGF6aW9fc3RyZWFtICpzLCB1bnNpZ25lCiAgIGVs c2UgaWYgKGJ1ZmZlclswXSA9PSBnel9tYWdpY1swXSAgJiYgYnVmZmVyWzFdID09IGd6X21hZ2lj WzFdKQogICB7CiAgICAgLyoKLSAgICAgIFNldCB2ZXJzaW9uIG51bWJlciB0byBwcmV2aW91cyB2 ZXJzaW9uICgyKS4KKyAgICAgIFNldCB2ZXJzaW9uIG51bWJlciB0byBwcmV2aW91cyB2ZXJzaW9u ICgxKS4KICAgICAqLwotICAgIHMtPnZlcnNpb249ICh1bnNpZ25lZCBjaGFyKSAyOworICAgIHMt PnZlcnNpb249IDE7CisgICAgcy0+YXV0b19pbmNyZW1lbnQ9IDA7CisgICAgcy0+ZnJtX2xlbmd0 aD0gMDsKICAgfSBlbHNlIHsKICAgICAvKgogICAgICAgVW5rbm93biB2ZXJzaW9uLgoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvYXJjaGl2ZS9oYV9hcmNoaXZlLmNjJwotLS0gYS9zdG9yYWdl L2FyY2hpdmUvaGFfYXJjaGl2ZS5jYwkyMDExLTA5LTIxIDExOjAxOjQxICswMDAwCisrKyBiL3N0 b3JhZ2UvYXJjaGl2ZS9oYV9hcmNoaXZlLmNjCTIwMTEtMTAtMDggMTc6MTg6MjggKzAwMDAKQEAg LTkzLDYgKzkzLDExIEBACiAgICAgIGluc2VydHMgYSBsb3QgZmFzdGVyLCBidXQgd291bGQgbWVh biBoaWdobHkgYXJiaXRyYXJ5IHJlYWRzLgogCiAgICAgLUJyaWFuCisKKyAgQXJjaGl2ZSBmaWxl IGZvcm1hdCB2ZXJzaW9uczoKKyAgPDUuMS41IC0gdi4xCisgIDUuMS41LTUuMS4xNSAtIHYuMgor ICA+NS4xLjE1IC0gdi4zCiAqLwogCiAvKiBWYXJpYWJsZXMgZm9yIGFyY2hpdmUgc2hhcmUgbWV0 aG9kcyAqLwpAQCAtMTA0LDYgKzEwOSwxNCBAQCBzdGF0aWMgSEFTSCBhcmNoaXZlX29wZW5fdGFi bGVzOwogI2RlZmluZSBBUk4gIi5BUk4iICAgICAgICAgICAgICAgLy8gRmlsZXMgdXNlZCBkdXJp bmcgYW4gb3B0aW1pemUgY2FsbAogI2RlZmluZSBBUk0gIi5BUk0iICAgICAgICAgICAgICAgLy8g TWV0YSBmaWxlIChkZXByZWNhdGVkKQogCisvKiA1LjAgY29tcGF0aWJpbGl0eSAqLworI2RlZmlu ZSBNRVRBX1YxX09GRlNFVF9DSEVDS19IRUFERVIgIDAKKyNkZWZpbmUgTUVUQV9WMV9PRkZTRVRf VkVSU0lPTiAgICAgICAxCisjZGVmaW5lIE1FVEFfVjFfT0ZGU0VUX1JPV1NfUkVDT1JERUQgMgor I2RlZmluZSBNRVRBX1YxX09GRlNFVF9DSEVDS19QT0lOVCAgIDEwCisjZGVmaW5lIE1FVEFfVjFf T0ZGU0VUX0NSQVNIRUQgICAgICAgMTgKKyNkZWZpbmUgTUVUQV9WMV9MRU5HVEggICAgICAgICAg ICAgICAxOQorCiAvKgogICB1Y2hhciArIHVjaGFyCiAqLwpAQCAtMjgxLDYgKzI5NCwxMDYgQEAg ZXJyOgogICBEQlVHX1JFVFVSTigxKTsKIH0KIAorCisvKioKKyAgQGJyaWVmIFJlYWQgdmVyc2lv biAxIG1ldGEgZmlsZSAoNS4wIGNvbXBhdGliaWxpdHkgcm91dGluZSkuCisKKyAgQHJldHVybiBD b21wbGV0aW9uIHN0YXR1cworICAgIEByZXR2YWwgIDAgU3VjY2VzcworICAgIEByZXR2YWwgITAg RmFpbHVyZQorKi8KKworaW50IGhhX2FyY2hpdmU6OnJlYWRfdjFfbWV0YWZpbGUoKQoreworICBj aGFyIGZpbGVfbmFtZVtGTl9SRUZMRU5dOworICB1Y2hhciBidWZbTUVUQV9WMV9MRU5HVEhdOwor ICBGaWxlIGZkOworICBEQlVHX0VOVEVSKCJoYV9hcmNoaXZlOjpyZWFkX3YxX21ldGFmaWxlIik7 CisKKyAgZm5fZm9ybWF0KGZpbGVfbmFtZSwgc2hhcmUtPmRhdGFfZmlsZV9uYW1lLCAiIiwgQVJN LCBNWV9SRVBMQUNFX0VYVCk7CisgIGlmICgoZmQ9IG15X29wZW4oZmlsZV9uYW1lLCBPX1JET05M WSwgTVlGKDApKSkgPT0gLTEpCisgICAgREJVR19SRVRVUk4oLTEpOworCisgIGlmIChteV9yZWFk KGZkLCBidWYsIHNpemVvZihidWYpLCBNWUYoMCkpICE9IHNpemVvZihidWYpKQorICB7CisgICAg bXlfY2xvc2UoZmQsIE1ZRigwKSk7CisgICAgREJVR19SRVRVUk4oLTEpOworICB9CisgIAorICBz aGFyZS0+cm93c19yZWNvcmRlZD0gdWludDhrb3JyKGJ1ZiArIE1FVEFfVjFfT0ZGU0VUX1JPV1Nf UkVDT1JERUQpOworICBzaGFyZS0+Y3Jhc2hlZD0gYnVmW01FVEFfVjFfT0ZGU0VUX0NSQVNIRURd OworICBteV9jbG9zZShmZCwgTVlGKDApKTsKKyAgREJVR19SRVRVUk4oMCk7Cit9CisKKworLyoq CisgIEBicmllZiBXcml0ZSB2ZXJzaW9uIDEgbWV0YSBmaWxlICg1LjAgY29tcGF0aWJpbGl0eSBy b3V0aW5lKS4KKworICBAcmV0dXJuIENvbXBsZXRpb24gc3RhdHVzCisgICAgQHJldHZhbCAgMCBT dWNjZXNzCisgICAgQHJldHZhbCAhMCBGYWlsdXJlCisqLworCitpbnQgaGFfYXJjaGl2ZTo6d3Jp dGVfdjFfbWV0YWZpbGUoKQoreworICBjaGFyIGZpbGVfbmFtZVtGTl9SRUZMRU5dOworICB1Y2hh ciBidWZbTUVUQV9WMV9MRU5HVEhdOworICBGaWxlIGZkOworICBEQlVHX0VOVEVSKCJoYV9hcmNo aXZlOjp3cml0ZV92MV9tZXRhZmlsZSIpOworCisgIGJ1ZltNRVRBX1YxX09GRlNFVF9DSEVDS19I RUFERVJdPSBBUkNISVZFX0NIRUNLX0hFQURFUjsKKyAgYnVmW01FVEFfVjFfT0ZGU0VUX1ZFUlNJ T05dPSAxOworICBpbnQ4c3RvcmUoYnVmICsgTUVUQV9WMV9PRkZTRVRfUk9XU19SRUNPUkRFRCwg c2hhcmUtPnJvd3NfcmVjb3JkZWQpOworICBpbnQ4c3RvcmUoYnVmICsgTUVUQV9WMV9PRkZTRVRf Q0hFQ0tfUE9JTlQsICh1bG9uZ2xvbmcpIDApOworICBidWZbTUVUQV9WMV9PRkZTRVRfQ1JBU0hF RF09IHNoYXJlLT5jcmFzaGVkOworICAKKyAgZm5fZm9ybWF0KGZpbGVfbmFtZSwgc2hhcmUtPmRh dGFfZmlsZV9uYW1lLCAiIiwgQVJNLCBNWV9SRVBMQUNFX0VYVCk7CisgIGlmICgoZmQ9IG15X29w ZW4oZmlsZV9uYW1lLCBPX1dST05MWSwgTVlGKDApKSkgPT0gLTEpCisgICAgREJVR19SRVRVUk4o LTEpOworCisgIGlmIChteV93cml0ZShmZCwgYnVmLCBzaXplb2YoYnVmKSwgTVlGKDApKSAhPSBz aXplb2YoYnVmKSkKKyAgeworICAgIG15X2Nsb3NlKGZkLCBNWUYoMCkpOworICAgIERCVUdfUkVU VVJOKC0xKTsKKyAgfQorICAKKyAgbXlfY2xvc2UoZmQsIE1ZRigwKSk7CisgIERCVUdfUkVUVVJO KDApOworfQorCisKKy8qKgorICBAYnJpZWYgUGFjayB2ZXJzaW9uIDEgcm93ICg1LjAgY29tcGF0 aWJpbGl0eSByb3V0aW5lKS4KKworICBAcGFyYW1baW5dICByZWNvcmQgIHRoZSByZWNvcmQgdG8g cGFjaworCisgIEByZXR1cm4gTGVuZ3RoIG9mIHBhY2tlZCByb3cKKyovCisKK3Vuc2lnbmVkIGlu dCBoYV9hcmNoaXZlOjpwYWNrX3Jvd192MSh1Y2hhciAqcmVjb3JkKQoreworICB1aW50ICpibG9i LCAqZW5kOworICB1Y2hhciAqcG9zOworICBEQlVHX0VOVEVSKCJwYWNrX3Jvd192MSIpOworICBt ZW1jcHkocmVjb3JkX2J1ZmZlci0+YnVmZmVyLCByZWNvcmQsIHRhYmxlLT5zLT5yZWNsZW5ndGgp OworICBwb3M9IHJlY29yZF9idWZmZXItPmJ1ZmZlciArIHRhYmxlLT5zLT5yZWNsZW5ndGg7Cisg IGZvciAoYmxvYj0gdGFibGUtPnMtPmJsb2JfZmllbGQsIGVuZD0gYmxvYiArIHRhYmxlLT5zLT5i bG9iX2ZpZWxkczsKKyAgICAgICBibG9iICE9IGVuZDsgYmxvYisrKQorICB7CisgICAgdWludDMy IGxlbmd0aD0gKChGaWVsZF9ibG9iICopIHRhYmxlLT5maWVsZFsqYmxvYl0pLT5nZXRfbGVuZ3Ro KCk7CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICB1Y2hhciAqZGF0YV9wdHI7CisgICAg ICAoKEZpZWxkX2Jsb2IgKikgdGFibGUtPmZpZWxkWypibG9iXSktPmdldF9wdHIoJmRhdGFfcHRy KTsKKyAgICAgIG1lbWNweShwb3MsIGRhdGFfcHRyLCBsZW5ndGgpOworICAgICAgcG9zKz0gbGVu Z3RoOworICAgIH0KKyAgfQorICBEQlVHX1JFVFVSTihwb3MgLSByZWNvcmRfYnVmZmVyLT5idWZm ZXIpOworfQorCisKIC8qCiAgIFRoaXMgbWV0aG9kIHJlYWRzIHRoZSBoZWFkZXIgb2YgYSBkYXRh ZmlsZSBhbmQgcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpdCB3YXMgc3VjY2Vzc2Z1bC4KICovCkBA IC0zOTAsMTIgKzUwMyw4IEBAIEFSQ0hJVkVfU0hBUkUgKmhhX2FyY2hpdmU6OmdldF9zaGFyZShj b24KICAgICBzdGF0cy5hdXRvX2luY3JlbWVudF92YWx1ZT0gYXJjaGl2ZV90bXAuYXV0b19pbmNy ZW1lbnQgKyAxOwogICAgIHNoYXJlLT5yb3dzX3JlY29yZGVkPSAoaGFfcm93cylhcmNoaXZlX3Rt cC5yb3dzOwogICAgIHNoYXJlLT5jcmFzaGVkPSBhcmNoaXZlX3RtcC5kaXJ0eTsKLSAgICAvKgot ICAgICAgSWYgYXJjaGl2ZSB2ZXJzaW9uIGlzIGxlc3MgdGhhbiAzLCBJdCBzaG91bGQgYmUgdXBn cmFkZWQgYmVmb3JlCi0gICAgICB1c2UuCi0gICAgKi8KLSAgICBpZiAoYXJjaGl2ZV90bXAudmVy c2lvbiA8IEFSQ0hJVkVfVkVSU0lPTikKLSAgICAgICpyYz0gSEFfRVJSX1RBQkxFX05FRURTX1VQ R1JBREU7CisgICAgaWYgKGFyY2hpdmVfdG1wLnZlcnNpb24gPT0gMSkKKyAgICAgIHJlYWRfdjFf bWV0YWZpbGUoKTsKICAgICBhemNsb3NlKCZhcmNoaXZlX3RtcCk7CiAKICAgICAodm9pZCkgbXlf aGFzaF9pbnNlcnQoJmFyY2hpdmVfb3Blbl90YWJsZXMsICh1Y2hhciopIHNoYXJlKTsKQEAgLTQ0 MSw2ICs1NTAsOCBAQCBpbnQgaGFfYXJjaGl2ZTo6ZnJlZV9zaGFyZSgpCiAgICAgKi8KICAgICBp ZiAoc2hhcmUtPmFyY2hpdmVfd3JpdGVfb3BlbikKICAgICB7CisgICAgICBpZiAoc2hhcmUtPmFy Y2hpdmVfd3JpdGUudmVyc2lvbiA9PSAxKQorICAgICAgICB3cml0ZV92MV9tZXRhZmlsZSgpOwog ICAgICAgaWYgKGF6Y2xvc2UoJihzaGFyZS0+YXJjaGl2ZV93cml0ZSkpKQogICAgICAgICByYz0g MTsKICAgICB9CkBAIC01MjcsMTMgKzYzOCw3IEBAIGludCBoYV9hcmNoaXZlOjpvcGVuKGNvbnN0 IGNoYXIgKm5hbWUsIGkKICAgICAgICAgICAgICAgICAgICAgICAob3Blbl9vcHRpb25zICYgSEFf T1BFTl9GT1JfUkVQQUlSKSA/ICJ5ZXMiIDogIm5vIikpOwogICBzaGFyZT0gZ2V0X3NoYXJlKG5h bWUsICZyYyk7CiAKLSAvKgotICAgIEFsbG93IG9wZW4gb24gY3Jhc2hlZCB0YWJsZSBpbiByZXBh aXIgbW9kZSBvbmx5LgotICAgIEJsb2NrIG9wZW4gb24gNS4wIEFSQ0hJVkUgdGFibGUuIFRob3Vn aCB3ZSBoYXZlIGFsbW9zdCBhbGwKLSAgICByb3V0aW5lcyB0byBhY2Nlc3MgdGhlc2UgdGFibGVz LCB0aGV5IHdlcmUgbm90IHdlbGwgdGVzdGVkLgotICAgIEZvciBub3cgd2UgaGF2ZSB0byByZWZ1 c2UgdG8gb3BlbiBzdWNoIHRhYmxlIHRvIGF2b2lkCi0gICAgcG90ZW50aWFsIGRhdGEgbG9zcy4K LSAgKi8KKyAgLyogQWxsb3cgb3BlbiBvbiBjcmFzaGVkIHRhYmxlIGluIHJlcGFpciBtb2RlIG9u bHkuICovCiAgIHN3aXRjaCAocmMpCiAgIHsKICAgY2FzZSAwOgpAQCAtNTQxLDggKzY0Niw2IEBA IGludCBoYV9hcmNoaXZlOjpvcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGkKICAgY2FzZSBIQV9FUlJf Q1JBU0hFRF9PTl9VU0FHRToKICAgICBpZiAob3Blbl9vcHRpb25zICYgSEFfT1BFTl9GT1JfUkVQ QUlSKQogICAgICAgYnJlYWs7Ci0gICAgLyogZmFsbCB0aHJvdWdoICovCi0gIGNhc2UgSEFfRVJS X1RBQkxFX05FRURTX1VQR1JBREU6CiAgICAgZnJlZV9zaGFyZSgpOwogICAgIC8qIGZhbGwgdGhy b3VnaCAqLwogICBkZWZhdWx0OgpAQCAtNjEwLDExICs3MTMsNDAgQEAgaW50IGhhX2FyY2hpdmU6 OmNsb3NlKHZvaWQpCiB9CiAKIAordm9pZCBoYV9hcmNoaXZlOjpmcm1fbG9hZChjb25zdCBjaGFy ICpuYW1lLCBhemlvX3N0cmVhbSAqZHN0KQoreworICBjaGFyIG5hbWVfYnVmZltGTl9SRUZMRU5d OworICBNWV9TVEFUIGZpbGVfc3RhdDsKKyAgRmlsZSBmcm1fZmlsZTsKKyAgdWNoYXIgKmZybV9w dHI7CisgIERCVUdfRU5URVIoImhhX2FyY2hpdmU6OmZybV9sb2FkIik7CisgIGZuX2Zvcm1hdChu YW1lX2J1ZmYsIG5hbWUsICIiLCAiLmZybSIsIE1ZX1JFUExBQ0VfRVhUIHwgTVlfVU5QQUNLX0ZJ TEVOQU1FKTsKKworICAvKiBIZXJlIGlzIHdoZXJlIHdlIG9wZW4gdXAgdGhlIGZybSBhbmQgcGFz cyBpdCB0byBhcmNoaXZlIHRvIHN0b3JlICovCisgIGlmICgoZnJtX2ZpbGU9IG15X29wZW4obmFt ZV9idWZmLCBPX1JET05MWSwgTVlGKDApKSkgPj0gMCkKKyAgeworICAgIGlmICghbXlzcWxfZmls ZV9mc3RhdChmcm1fZmlsZSwgJmZpbGVfc3RhdCwgTVlGKE1ZX1dNRSkpKQorICAgIHsKKyAgICAg IGZybV9wdHI9ICh1Y2hhciAqKSBteV9tYWxsb2Moc2l6ZW9mKHVjaGFyKSAqIGZpbGVfc3RhdC5z dF9zaXplLCBNWUYoMCkpOworICAgICAgaWYgKGZybV9wdHIpCisgICAgICB7CisgICAgICAgIGlm IChteV9yZWFkKGZybV9maWxlLCBmcm1fcHRyLCBmaWxlX3N0YXQuc3Rfc2l6ZSwgTVlGKDApKSA9 PQorICAgICAgICAgICAgKHNpemVfdCkgZmlsZV9zdGF0LnN0X3NpemUpCisgICAgICAgICAgYXp3 cml0ZV9mcm0oZHN0LCAoY2hhciAqKSBmcm1fcHRyLCBmaWxlX3N0YXQuc3Rfc2l6ZSk7CisgICAg ICAgIG15X2ZyZWUoZnJtX3B0cik7CisgICAgICB9CisgICAgfQorICAgIG15X2Nsb3NlKGZybV9m aWxlLCBNWUYoMCkpOworICB9CisgIERCVUdfVk9JRF9SRVRVUk47Cit9CisKKwogLyoqCiAgIENv cHkgYSBmcm0gYmxvYiBiZXR3ZWVuIHN0cmVhbXMuCiAKLSAgQHBhcmFtICBzcmMgICBUaGUgc291 cmNlIHN0cmVhbS4KLSAgQHBhcmFtICBkc3QgICBUaGUgZGVzdGluYXRpb24gc3RyZWFtLgorICBA cGFyYW1baW5dICBzcmMgICBUaGUgc291cmNlIHN0cmVhbS4KKyAgQHBhcmFtW2luXSAgZHN0ICAg VGhlIGRlc3RpbmF0aW9uIHN0cmVhbS4KIAogICBAcmV0dXJuIFplcm8gb24gc3VjY2Vzcywgbm9u LXplcm8gb3RoZXJ3aXNlLgogKi8KQEAgLTYyNCw2ICs3NTYsMTMgQEAgaW50IGhhX2FyY2hpdmU6 OmZybV9jb3B5KGF6aW9fc3RyZWFtICpzcgogICBpbnQgcmM9IDA7CiAgIGNoYXIgKmZybV9wdHI7 CiAKKyAgLyogSWYgdGhlcmUgaXMgbm8gLmZybSBpbiBzb3VyY2Ugc3RyZWFtLCB0cnkgdG8gcmVh ZCAuZnJtIGZyb20gZmlsZS4gKi8KKyAgaWYgKCFzcmMtPmZybV9sZW5ndGgpCisgIHsKKyAgICBm cm1fbG9hZCh0YWJsZS0+cy0+bm9ybWFsaXplZF9wYXRoLnN0ciwgZHN0KTsKKyAgICByZXR1cm4g MDsKKyAgfQorCiAgIGlmICghKGZybV9wdHI9IChjaGFyICopIG15X21hbGxvYyhzcmMtPmZybV9s ZW5ndGgsIE1ZRigwKSkpKQogICAgIHJldHVybiBIQV9FUlJfT1VUX09GX01FTTsKIApAQCAtNjU0 LDkgKzc5Myw3IEBAIGludCBoYV9hcmNoaXZlOjpjcmVhdGUoY29uc3QgY2hhciAqbmFtZSwKICAg Y2hhciBsaW5rbmFtZVtGTl9SRUZMRU5dOwogICBpbnQgZXJyb3I7CiAgIGF6aW9fc3RyZWFtIGNy ZWF0ZV9zdHJlYW07ICAgICAgICAgICAgLyogQXJjaGl2ZSBmaWxlIHdlIGFyZSB3b3JraW5nIHdp dGggKi8KLSAgRmlsZSBmcm1fZmlsZTsgICAgICAgICAgICAgICAgICAgLyogRmlsZSBoYW5kbGVy IGZvciByZWFkZXJzICovCiAgIE1ZX1NUQVQgZmlsZV9zdGF0OyAgLy8gU3RhdCBpbmZvcm1hdGlv biBmb3IgdGhlIGRhdGEgZmlsZQotICB1Y2hhciAqZnJtX3B0cjsKIAogICBEQlVHX0VOVEVSKCJo YV9hcmNoaXZlOjpjcmVhdGUiKTsKIApAQCAtNzE2LDI2ICs4NTMsOCBAQCBpbnQgaGFfYXJjaGl2 ZTo6Y3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsCiAKICAgICBpZiAobGlua25hbWVbMF0pCiAgICAg ICBteV9zeW1saW5rKG5hbWVfYnVmZiwgbGlua25hbWUsIE1ZRigwKSk7Ci0gICAgZm5fZm9ybWF0 KG5hbWVfYnVmZiwgbmFtZSwgIiIsICIuZnJtIiwKLSAgICAgICAgICAgICAgTVlfUkVQTEFDRV9F WFQgfCBNWV9VTlBBQ0tfRklMRU5BTUUpOwogCi0gICAgLyoKLSAgICAgIEhlcmUgaXMgd2hlcmUg d2Ugb3BlbiB1cCB0aGUgZnJtIGFuZCBwYXNzIGl0IHRvIGFyY2hpdmUgdG8gc3RvcmUgCi0gICAg Ki8KLSAgICBpZiAoKGZybV9maWxlPSBteV9vcGVuKG5hbWVfYnVmZiwgT19SRE9OTFksIE1ZRigw KSkpID4gMCkKLSAgICB7Ci0gICAgICBpZiAoIW15c3FsX2ZpbGVfZnN0YXQoZnJtX2ZpbGUsICZm aWxlX3N0YXQsIE1ZRihNWV9XTUUpKSkKLSAgICAgIHsKLSAgICAgICAgZnJtX3B0cj0gKHVjaGFy ICopbXlfbWFsbG9jKHNpemVvZih1Y2hhcikgKiBmaWxlX3N0YXQuc3Rfc2l6ZSwgTVlGKDApKTsK LSAgICAgICAgaWYgKGZybV9wdHIpCi0gICAgICAgIHsKLSAgICAgICAgICBteV9yZWFkKGZybV9m aWxlLCBmcm1fcHRyLCBmaWxlX3N0YXQuc3Rfc2l6ZSwgTVlGKDApKTsKLSAgICAgICAgICBhendy aXRlX2ZybSgmY3JlYXRlX3N0cmVhbSwgKGNoYXIgKilmcm1fcHRyLCBmaWxlX3N0YXQuc3Rfc2l6 ZSk7Ci0gICAgICAgICAgbXlfZnJlZShmcm1fcHRyKTsKLSAgICAgICAgfQotICAgICAgfQotICAg ICAgbXlfY2xvc2UoZnJtX2ZpbGUsIE1ZRigwKSk7Ci0gICAgfQorICAgIGZybV9sb2FkKG5hbWUs ICZjcmVhdGVfc3RyZWFtKTsKIAogICAgIGlmIChjcmVhdGVfaW5mby0+Y29tbWVudC5zdHIpCiAg ICAgICBhendyaXRlX2NvbW1lbnQoJmNyZWF0ZV9zdHJlYW0sIGNyZWF0ZV9pbmZvLT5jb21tZW50 LnN0ciwgCkBAIC04MjksNiArOTQ4LDkgQEAgdW5zaWduZWQgaW50IGhhX2FyY2hpdmU6OnBhY2tf cm93KHVjaGFyCiAgIGlmIChmaXhfcmVjX2J1ZmYobWF4X3Jvd19sZW5ndGgocmVjb3JkKSkpCiAg ICAgREJVR19SRVRVUk4oSEFfRVJSX09VVF9PRl9NRU0pOyAvKiBwdXJlY292OiBpbnNwZWN0ZWQg Ki8KIAorICBpZiAoc2hhcmUtPmFyY2hpdmVfd3JpdGUudmVyc2lvbiA9PSAxKQorICAgIERCVUdf UkVUVVJOKHBhY2tfcm93X3YxKHJlY29yZCkpOworCiAgIC8qIENvcHkgbnVsbCBiaXRzICovCiAg IG1lbWNweShyZWNvcmRfYnVmZmVyLT5idWZmZXIrQVJDSElWRV9ST1dfSEVBREVSX1NJWkUsIAog ICAgICAgICAgcmVjb3JkLCB0YWJsZS0+cy0+bnVsbF9ieXRlcyk7CkBAIC0xMzgyLDYgKzE1MDQs OCBAQCBpbnQgaGFfYXJjaGl2ZTo6b3B0aW1pemUoVEhEKiB0aGQsIEhBX0NICiAgIC8vIG5vdyB3 ZSBjbG9zZSBib3RoIG91ciB3cml0ZXIgYW5kIG91ciByZWFkZXIgZm9yIHRoZSByZW5hbWUKICAg aWYgKHNoYXJlLT5hcmNoaXZlX3dyaXRlX29wZW4pCiAgIHsKKyAgICBpZiAoc2hhcmUtPmFyY2hp dmVfd3JpdGUudmVyc2lvbiA9PSAxKQorICAgICAgd3JpdGVfdjFfbWV0YWZpbGUoKTsKICAgICBh emNsb3NlKCYoc2hhcmUtPmFyY2hpdmVfd3JpdGUpKTsKICAgICBzaGFyZS0+YXJjaGl2ZV93cml0 ZV9vcGVuPSBGQUxTRTsKICAgfQpAQCAtMTQyNiw3ICsxNTUwLDcgQEAgaW50IGhhX2FyY2hpdmU6 Om9wdGltaXplKFRIRCogdGhkLCBIQV9DSAogICAgICAgc2hhcmUtPnJvd3NfcmVjb3JkZWQ9IDA7 CiAgICAgICBzdGF0cy5hdXRvX2luY3JlbWVudF92YWx1ZT0gMTsKICAgICAgIHNoYXJlLT5hcmNo aXZlX3dyaXRlLmF1dG9faW5jcmVtZW50PSAwOwotICAgICAgbXlfYml0bWFwX21hcCAqb3JnX2Jp dG1hcD0gZGJ1Z190bXBfdXNlX2FsbF9jb2x1bW5zKHRhYmxlLCB0YWJsZS0+cmVhZF9zZXQpOwor ICAgICAgbXlfYml0bWFwX21hcCAqb3JnX2JpdG1hcD0gdG1wX3VzZV9hbGxfY29sdW1ucyh0YWJs ZSwgdGFibGUtPnJlYWRfc2V0KTsKIAogICAgICAgd2hpbGUgKCEocmM9IGdldF9yb3coJmFyY2hp dmUsIHRhYmxlLT5yZWNvcmRbMF0pKSkKICAgICAgIHsKQEAgLTE0NDcsNyArMTU3MSw3IEBAIGlu dCBoYV9hcmNoaXZlOjpvcHRpbWl6ZShUSEQqIHRoZCwgSEFfQ0gKICAgICAgICAgfQogICAgICAg fQogCi0gICAgICBkYnVnX3RtcF9yZXN0b3JlX2NvbHVtbl9tYXAodGFibGUtPnJlYWRfc2V0LCBv cmdfYml0bWFwKTsKKyAgICAgIHRtcF9yZXN0b3JlX2NvbHVtbl9tYXAodGFibGUtPnJlYWRfc2V0 LCBvcmdfYml0bWFwKTsKICAgICAgIHNoYXJlLT5yb3dzX3JlY29yZGVkPSAoaGFfcm93cyl3cml0 ZXIucm93czsKICAgICB9CiAKQEAgLTE2NjQsNiArMTc4OCwyOSBAQCBib29sIGhhX2FyY2hpdmU6 OmlzX2NyYXNoZWQoKSBjb25zdAogICBEQlVHX1JFVFVSTihzaGFyZS0+Y3Jhc2hlZCk7IAogfQog CisKKy8qKgorICBAYnJpZWYgQ2hlY2sgZm9yIHVwZ3JhZGUKKworICBAcGFyYW1baW5dICBjaGVj a19vcHQgIGNoZWNrIG9wdGlvbnMKKworICBAcmV0dXJuIENvbXBsZXRpb24gc3RhdHVzCisgICAg QHJldHZhbCBIQV9BRE1JTl9PSyAgICAgICAgICAgIE5vIHVwZ3JhZGUgcmVxdWlyZWQKKyAgICBA cmV0dmFsIEhBX0FETUlOX0NPUlJVUFQgICAgICAgQ2Fubm90IHJlYWQgbWV0YS1kYXRhCisgICAg QHJldHZhbCBIQV9BRE1JTl9ORUVEU19VUEdSQURFIFVwZ3JhZGUgcmVxdWlyZWQKKyovCisKK2lu dCBoYV9hcmNoaXZlOjpjaGVja19mb3JfdXBncmFkZShIQV9DSEVDS19PUFQgKmNoZWNrX29wdCkK K3sKKyAgREJVR19FTlRFUigiaGFfYXJjaGl2ZTo6Y2hlY2tfZm9yX3VwZ3JhZGUiKTsKKyAgaWYg KGluaXRfYXJjaGl2ZV9yZWFkZXIoKSkKKyAgICBEQlVHX1JFVFVSTihIQV9BRE1JTl9DT1JSVVBU KTsKKyAgaWYgKGFyY2hpdmUudmVyc2lvbiA8IEFSQ0hJVkVfVkVSU0lPTikKKyAgICBEQlVHX1JF VFVSTihIQV9BRE1JTl9ORUVEU19VUEdSQURFKTsKKyAgREJVR19SRVRVUk4oSEFfQURNSU5fT0sp OworfQorCisKIC8qCiAgIFNpbXBsZSBzY2FuIG9mIHRoZSB0YWJsZXMgdG8gbWFrZSBzdXJlIGV2 ZXJ5dGhpbmcgaXMgb2suCiAqLwpAQCAtMTY3Nyw5ICsxODI0LDEyIEBAIGludCBoYV9hcmNoaXZl OjpjaGVjayhUSEQqIHRoZCwgSEFfQ0hFQ0sKIAogICBvbGRfcHJvY19pbmZvPSB0aGRfcHJvY19p bmZvKHRoZCwgIkNoZWNraW5nIHRhYmxlIik7CiAgIC8qIEZsdXNoIGFueSB3YWl0aW5nIGRhdGEg Ki8KLSAgbXlzcWxfbXV0ZXhfbG9jaygmc2hhcmUtPm11dGV4KTsKLSAgYXpmbHVzaCgmKHNoYXJl LT5hcmNoaXZlX3dyaXRlKSwgWl9TWU5DX0ZMVVNIKTsKLSAgbXlzcWxfbXV0ZXhfdW5sb2NrKCZz aGFyZS0+bXV0ZXgpOworICBpZiAoc2hhcmUtPmFyY2hpdmVfd3JpdGVfb3BlbikKKyAgeworICAg IG15c3FsX211dGV4X2xvY2soJnNoYXJlLT5tdXRleCk7CisgICAgYXpmbHVzaCgmKHNoYXJlLT5h cmNoaXZlX3dyaXRlKSwgWl9TWU5DX0ZMVVNIKTsKKyAgICBteXNxbF9tdXRleF91bmxvY2soJnNo YXJlLT5tdXRleCk7CisgIH0KIAogICBpZiAoaW5pdF9hcmNoaXZlX3JlYWRlcigpKQogICAgIERC VUdfUkVUVVJOKEhBX0FETUlOX0NPUlJVUFQpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv YXJjaGl2ZS9oYV9hcmNoaXZlLmgnCi0tLSBhL3N0b3JhZ2UvYXJjaGl2ZS9oYV9hcmNoaXZlLmgJ MjAxMS0wNi0zMCAxNTo1MDo0NSArMDAwMAorKysgYi9zdG9yYWdlL2FyY2hpdmUvaGFfYXJjaGl2 ZS5oCTIwMTEtMTAtMDcgMDY6MDM6MTQgKzAwMDAKQEAgLTcyLDYgKzcyLDEwIEBAIGNsYXNzIGhh X2FyY2hpdmU6IHB1YmxpYyBoYW5kbGVyCiAgIGFyY2hpdmVfcmVjb3JkX2J1ZmZlciAqY3JlYXRl X3JlY29yZF9idWZmZXIodW5zaWduZWQgaW50IGxlbmd0aCk7CiAgIHZvaWQgZGVzdHJveV9yZWNv cmRfYnVmZmVyKGFyY2hpdmVfcmVjb3JkX2J1ZmZlciAqcik7CiAgIGludCBmcm1fY29weShhemlv X3N0cmVhbSAqc3JjLCBhemlvX3N0cmVhbSAqZHN0KTsKKyAgdm9pZCBmcm1fbG9hZChjb25zdCBj aGFyICpuYW1lLCBhemlvX3N0cmVhbSAqZHN0KTsKKyAgaW50IHJlYWRfdjFfbWV0YWZpbGUoKTsK KyAgaW50IHdyaXRlX3YxX21ldGFmaWxlKCk7CisgIHVuc2lnbmVkIGludCBwYWNrX3Jvd192MSh1 Y2hhciAqcmVjb3JkKTsKIAogcHVibGljOgogICBoYV9hcmNoaXZlKGhhbmRsZXJ0b24gKmh0b24s IFRBQkxFX1NIQVJFICp0YWJsZV9hcmcpOwpAQCAtMTM5LDYgKzE0Myw3IEBAIHB1YmxpYzoKICAg VEhSX0xPQ0tfREFUQSAqKnN0b3JlX2xvY2soVEhEICp0aGQsIFRIUl9MT0NLX0RBVEEgKip0bywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB0aHJfbG9ja190eXBlIGxvY2tfdHlw ZSk7CiAgIGJvb2wgaXNfY3Jhc2hlZCgpIGNvbnN0OworICBpbnQgY2hlY2tfZm9yX3VwZ3JhZGUo SEFfQ0hFQ0tfT1BUICpjaGVja19vcHQpOwogICBpbnQgY2hlY2soVEhEKiB0aGQsIEhBX0NIRUNL X09QVCogY2hlY2tfb3B0KTsKICAgYm9vbCBjaGVja19hbmRfcmVwYWlyKFRIRCAqdGhkKTsKICAg dWludDMyIG1heF9yb3dfbGVuZ3RoKGNvbnN0IHVjaGFyICpidWYpOwoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvcGVyZnNjaGVtYS90YWJsZV9ld3NfYnlfdGhyZWFkX2J5X2V2ZW50X25hbWUu Y2MnCi0tLSBhL3N0b3JhZ2UvcGVyZnNjaGVtYS90YWJsZV9ld3NfYnlfdGhyZWFkX2J5X2V2ZW50 X25hbWUuY2MJMjAxMS0wOC0xNiAwMzo1NzozMCArMDAwMAorKysgYi9zdG9yYWdlL3BlcmZzY2hl bWEvdGFibGVfZXdzX2J5X3RocmVhZF9ieV9ldmVudF9uYW1lLmNjCTIwMTEtMTAtMDYgMTc6MTU6 NDcgKzAwMDAKQEAgLTI0Niw4ICsyNDYsOCBAQCB2b2lkIHRhYmxlX2V3c19ieV90aHJlYWRfYnlf ZXZlbnRfbmFtZQogICAqLyAgCiAgIGlmIChrbGFzcy0+aXNfZGVmZXJyZWQoKSkKICAgewotICAg IC8qIFZpc2l0IGluc3RhbmNlcyBvd25lZCBieSB0aGlzIHRocmVhZC4gRG8gbm90IHZpc2l0IHRo ZSBjbGFzcy4gKi8NCi0gICAgUEZTX2luc3RhbmNlX3dhaXRfdmlzaXRvciBpbnN0X3Zpc2l0b3I7 DQorICAgIC8qIFZpc2l0IGluc3RhbmNlcyBvd25lZCBieSB0aGlzIHRocmVhZC4gRG8gbm90IHZp c2l0IHRoZSBjbGFzcy4gKi8KKyAgICBQRlNfaW5zdGFuY2Vfd2FpdF92aXNpdG9yIGluc3Rfdmlz aXRvcjsKICAgICBQRlNfaW5zdGFuY2VfaXRlcmF0b3I6OnZpc2l0X2luc3RhbmNlcyhrbGFzcywg Jmluc3RfdmlzaXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aHJlYWQsIGZhbHNlKTsKICAgICAvKiBDb21iaW5lIHRoZSBkZWZlcnJlZCBzdGF0cyBhbmQg Z2xvYmFsIHN0YXRzICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9wZXJmc2NoZW1hL3Rh YmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25hbWUuY2MnCi0tLSBhL3N0b3JhZ2UvcGVyZnNj aGVtYS90YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lLmNjCTIwMTEtMDMtMjggMjM6 Mzc6MTAgKzAwMDAKKysrIGIvc3RvcmFnZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tldF9zdW1tYXJ5 X2J5X2V2ZW50X25hbWUuY2MJMjAxMS0xMC0wNiAxNzoxNTo0NyArMDAwMApAQCAtMSwzNDggKzEs MzQ4IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFm ZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotDQotICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KLSAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkNCi0gIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZS4NCi0NCi0gIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KLSAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCi0gIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCi0gIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQotDQotICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwNCi0gIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24s IE1BIDAyMTEwLTEzMzUgVVNBICovDQotDQotLyoqDQotICBAZmlsZSBzdG9yYWdlL3BlcmZzY2hl bWEvdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZS5jYw0KLSAgVGFibGUgU09DS0VU X0VWRU5UX05BTUVTIChpbXBsZW1lbnRhdGlvbikuDQotKi8NCi0NCi0jaW5jbHVkZSAibXlfZ2xv YmFsLmgiDQotI2luY2x1ZGUgIm15X3B0aHJlYWQuaCINCi0jaW5jbHVkZSAicGZzX2luc3RyLmgi DQotI2luY2x1ZGUgInBmc19jb2x1bW5fdHlwZXMuaCINCi0jaW5jbHVkZSAicGZzX2NvbHVtbl92 YWx1ZXMuaCINCi0jaW5jbHVkZSAidGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZS5o Ig0KLSNpbmNsdWRlICJwZnNfZ2xvYmFsLmgiDQotI2luY2x1ZGUgInBmc192aXNpdG9yLmgiDQot DQotVEhSX0xPQ0sgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZTo6bV90YWJsZV9s b2NrOw0KLQ0KLXN0YXRpYyBjb25zdCBUQUJMRV9GSUVMRF9UWVBFIGZpZWxkX3R5cGVzW109DQot ew0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJFVkVOVF9OQU1FIikgfSwNCi0gICAg eyBDX1NUUklOR19XSVRIX0xFTigidmFyY2hhcigxMjgpIikgfSwNCi0gICAgeyBOVUxMLCAwfQ0K LSAgfSwNCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiQ09VTlRfU1RBUiIpIH0sDQot ICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9 DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElNRVJfV0FJVCIp IH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5V TEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNSU5fVElNRVJf V0FJVCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAg ICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJBVkdf VElNRVJfV0FJVCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9 LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVO KCJNQVhfVElNRVJfV0FJVCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgy MCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLQ0KLSAgLyoqIFJlYWQgKi8NCi0gIHsN Ci0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiQ09VTlRfUkVBRCIpIH0sDQotICAgIHsgQ19TVFJJ TkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAg ew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElNRVJfUkVBRCIpIH0sDQotICAgIHsg Q19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9 LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNSU5fVElNRVJfUkVBRCIpIH0sDQot ICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9 DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJBVkdfVElNRVJfUkVBRCIp IH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5V TEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNQVhfVElNRVJf UkVBRCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAg ICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1f TlVNQkVSX09GX0JZVEVTX1JFQUQiKSB9LA0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdp bnQoMjApIikgfSwNCi0gICAgeyBOVUxMLCAwfQ0KLSAgfSwNCi0NCi0gIC8qKiBXcml0ZSAqLw0K LSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJDT1VOVF9XUklURSIpIH0sDQotICAgIHsg Q19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9 LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElNRVJfV1JJVEUiKSB9LA0K LSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwNCi0gICAgeyBOVUxMLCAw fQ0KLSAgfSwNCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiTUlOX1RJTUVSX1dSSVRF IikgfSwNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sDQotICAgIHsg TlVMTCwgMH0NCi0gIH0sDQotICB7DQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkFWR19USU1F Ul9XUklURSIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0K LSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJN QVhfVElNRVJfV1JJVEUiKSB9LA0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjAp IikgfSwNCi0gICAgeyBOVUxMLCAwfQ0KLSAgfSwNCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRI X0xFTigiU1VNX05VTUJFUl9PRl9CWVRFU19XUklURSIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lU SF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLQ0KLSAgLyoq IE1pc2MgKi8NCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiQ09VTlRfTUlTQyIpIH0s DQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEws IDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElNRVJfTUlT QyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7 IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNSU5fVElN RVJfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0K LSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJB VkdfVElNRVJfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCki KSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhf TEVOKCJNQVhfVElNRVJfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2lu dCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9DQotfTsNCi0NCi1UQUJMRV9GSUVMRF9E RUYNCi10YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lOjptX2ZpZWxkX2RlZj0NCi17 IDIzLCBmaWVsZF90eXBlcyB9Ow0KLQ0KLVBGU19lbmdpbmVfdGFibGVfc2hhcmUNCi10YWJsZV9z b2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lOjptX3NoYXJlPQ0KLXsNCi0gIHsgQ19TVFJJTkdf V0lUSF9MRU4oInNvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25hbWUiKSB9LA0KLSAgJnBmc19yZWFk b25seV9hY2wsDQotICAmdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZTo6Y3JlYXRl LA0KLSAgTlVMTCwgLyogd3JpdGVfcm93ICovDQotICB0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9l dmVudF9uYW1lOjpkZWxldGVfYWxsX3Jvd3MsDQotICBOVUxMLCAvKiBnZXRfcm93X2NvdW50ICov DQotICAxMDAwLCAvKiByZWNvcmRzICovDQotICBzaXplb2YoUEZTX3NpbXBsZV9pbmRleCksDQot ICAmbV90YWJsZV9sb2NrLA0KLSAgJm1fZmllbGRfZGVmLA0KLSAgZmFsc2UgLyogY2hlY2tlZCAq Lw0KLX07DQotDQotUEZTX2VuZ2luZV90YWJsZSogdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZl bnRfbmFtZTo6Y3JlYXRlKHZvaWQpDQotew0KLSAgcmV0dXJuIG5ldyB0YWJsZV9zb2NrZXRfc3Vt bWFyeV9ieV9ldmVudF9uYW1lKCk7DQotfQ0KLQ0KLXRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2 ZW50X25hbWU6OnRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25hbWUoKQ0KLSAgOiBQRlNf ZW5naW5lX3RhYmxlKCZtX3NoYXJlLCAmbV9wb3MpLA0KLSAgbV9yb3dfZXhpc3RzKGZhbHNlKSwg bV9wb3MoMSksIG1fbmV4dF9wb3MoMSkNCi17fQ0KLQ0KLWludCB0YWJsZV9zb2NrZXRfc3VtbWFy eV9ieV9ldmVudF9uYW1lOjpkZWxldGVfYWxsX3Jvd3Modm9pZCkNCi17DQotICByZXNldF9zb2Nr ZXRfaW5zdGFuY2VfaW8oKTsNCi0gIHJlc2V0X3NvY2tldF9jbGFzc19pbygpOw0KLSAgcmV0dXJu IDA7DQotfQ0KLQ0KLXZvaWQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZTo6cmVz ZXRfcG9zaXRpb24odm9pZCkNCi17DQotICBtX3Bvcy5tX2luZGV4PSAxOw0KLSAgbV9uZXh0X3Bv cy5tX2luZGV4PSAxOw0KLX0NCi0NCi1pbnQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRf bmFtZTo6cm5kX25leHQodm9pZCkNCi17DQotICBQRlNfc29ja2V0X2NsYXNzICpzb2NrZXRfY2xh c3M7DQotDQotICBtX3Bvcy5zZXRfYXQoJm1fbmV4dF9wb3MpOw0KLQ0KLSAgc29ja2V0X2NsYXNz PSBmaW5kX3NvY2tldF9jbGFzcyhtX3Bvcy5tX2luZGV4KTsNCi0gIGlmIChzb2NrZXRfY2xhc3Mp DQotICB7DQotICAgIG1ha2Vfcm93KHNvY2tldF9jbGFzcyk7DQotICAgIG1fbmV4dF9wb3Muc2V0 X2FmdGVyKCZtX3Bvcyk7DQotICAgIHJldHVybiAwOw0KLSAgfQ0KLQ0KLSAgcmV0dXJuIEhBX0VS Ul9FTkRfT0ZfRklMRTsNCi19DQotDQotaW50IHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50 X25hbWU6OnJuZF9wb3MoY29uc3Qgdm9pZCAqcG9zKQ0KLXsNCi0gIFBGU19zb2NrZXRfY2xhc3Mg KnNvY2tldF9jbGFzczsNCi0NCi0gIHNldF9wb3NpdGlvbihwb3MpOw0KLQ0KLSAgc29ja2V0X2Ns YXNzPSBmaW5kX3NvY2tldF9jbGFzcyhtX3Bvcy5tX2luZGV4KTsNCi0gIGlmIChzb2NrZXRfY2xh c3MpDQotICB7DQotICAgIG1ha2Vfcm93KHNvY2tldF9jbGFzcyk7DQotICAgIHJldHVybiAwOw0K LSAgfQ0KLQ0KLSAgcmV0dXJuIEhBX0VSUl9SRUNPUkRfREVMRVRFRDsNCi19DQotDQotdm9pZCB0 YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lOjptYWtlX3JvdyhQRlNfc29ja2V0X2Ns YXNzICpzb2NrZXRfY2xhc3MpDQotew0KLSAgbV9yb3cubV9ldmVudF9uYW1lLm1ha2Vfcm93KHNv Y2tldF9jbGFzcyk7DQotDQotICBQRlNfaW5zdGFuY2Vfc29ja2V0X2lvX3N0YXRfdmlzaXRvciB2 aXNpdG9yOw0KLSAgUEZTX2luc3RhbmNlX2l0ZXJhdG9yOjp2aXNpdF9zb2NrZXRfaW5zdGFuY2Vz KHNvY2tldF9jbGFzcywgJnZpc2l0b3IpOw0KLQ0KLSAgdGltZV9ub3JtYWxpemVyICpub3JtYWxp emVyPSB0aW1lX25vcm1hbGl6ZXI6OmdldCh3YWl0X3RpbWVyKTsNCi0gIA0KLSAgLyogQ29sbGVj dCB0aW1lciBhbmQgYnl0ZSBjb3VudCBzdGF0cyAqLw0KLSAgbV9yb3cubV9pb19zdGF0LnNldChu b3JtYWxpemVyLCAmdmlzaXRvci5tX3NvY2tldF9pb19zdGF0KTsNCi0gIG1fcm93X2V4aXN0cz0g dHJ1ZTsNCi19DQotDQotaW50IHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25hbWU6OnJl YWRfcm93X3ZhbHVlcyhUQUJMRSAqdGFibGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEZpZWxkICoqZmllbGRzLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZF9hbGwpDQotew0KLSAgRmllbGQgKmY7DQot DQotICBpZiAodW5saWtlbHkoIW1fcm93X2V4aXN0cykpDQotICAgIHJldHVybiBIQV9FUlJfUkVD T1JEX0RFTEVURUQ7DQotDQotICAvKiBTZXQgdGhlIG51bGwgYml0cyAqLw0KLSAgREJVR19BU1NF UlQodGFibGUtPnMtPm51bGxfYnl0ZXMgPT0gMCk7DQotDQotICBmb3IgKDsgKGY9ICpmaWVsZHMp IDsgZmllbGRzKyspDQotICB7DQotICAgIGlmIChyZWFkX2FsbCB8fCBiaXRtYXBfaXNfc2V0KHRh YmxlLT5yZWFkX3NldCwgZi0+ZmllbGRfaW5kZXgpKQ0KLSAgICB7DQotICAgICAgc3dpdGNoKGYt PmZpZWxkX2luZGV4KQ0KLSAgICAgIHsNCi0gICAgICBjYXNlICAwOiAvKiBFVkVOVF9OQU1FICov DQotICAgICAgICBtX3Jvdy5tX2V2ZW50X25hbWUuc2V0X2ZpZWxkKGYpOw0KLSAgICAgICAgYnJl YWs7DQotICAgICAgY2FzZSAgMTogLyogQ09VTlRfU1RBUiAqLw0KLSAgICAgICAgc2V0X2ZpZWxk X3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9hbGwubV93YWl0cy5tX2NvdW50KTsNCi0g ICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgIDI6IC8qIFNVTV9USU1FUl9XQUlUICovDQotICAg ICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX2FsbC5tX3dhaXRz Lm1fc3VtKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgIDM6IC8qIE1JTl9USU1FUl9X QUlUICovDQotICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5t X2FsbC5tX3dhaXRzLm1fbWluKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgIDQ6IC8q IEFWR19USU1FUl9XQUlUICovDQotICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93 Lm1faW9fc3RhdC5tX2FsbC5tX3dhaXRzLm1fYXZnKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAg IGNhc2UgIDU6IC8qIE1BWF9USU1FUl9XQUlUICovDQotICAgICAgICBzZXRfZmllbGRfdWxvbmds b25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX2FsbC5tX3dhaXRzLm1fbWF4KTsNCi0gICAgICAgIGJy ZWFrOw0KLQ0KLSAgICAgIGNhc2UgIDY6IC8qIENPVU5UX1JFQUQgKi8NCi0gICAgICAgIHNldF9m aWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fcmVhZC5tX3dhaXRzLm1fY291bnQp Ow0KLSAgICAgICAgYnJlYWs7DQotICAgICAgY2FzZSAgNzogLyogU1VNX1RJTUVSX1JFQUQgKi8N Ci0gICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fcmVhZC5t X3dhaXRzLm1fc3VtKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgIDg6IC8qIE1JTl9U SU1FUl9SRUFEICovDQotICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9f c3RhdC5tX3JlYWQubV93YWl0cy5tX21pbik7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNl ICA5OiAvKiBBVkdfVElNRVJfUkVBRCAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhm LCBtX3Jvdy5tX2lvX3N0YXQubV9yZWFkLm1fd2FpdHMubV9hdmcpOw0KLSAgICAgICAgYnJlYWs7 DQotICAgICAgY2FzZSAxMDogLyogTUFYX1RJTUVSX1JFQUQgKi8NCi0gICAgICAgIHNldF9maWVs ZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fcmVhZC5tX3dhaXRzLm1fbWF4KTsNCi0g ICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgMTE6IC8qIFNVTV9OVU1CRVJfT0ZfQllURVNfUkVB RCAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9y ZWFkLm1fYnl0ZXMpOw0KLSAgICAgICAgYnJlYWs7DQotDQotICAgICAgY2FzZSAxMjogLyogQ09V TlRfV1JJVEUgKi8NCi0gICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19z dGF0Lm1fd3JpdGUubV93YWl0cy5tX2NvdW50KTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNh c2UgMTM6IC8qIFNVTV9USU1FUl9XUklURSAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9u ZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV93cml0ZS5tX3dhaXRzLm1fc3VtKTsNCi0gICAgICAgIGJy ZWFrOw0KLSAgICAgIGNhc2UgMTQ6IC8qIE1JTl9USU1FUl9XUklURSAqLw0KLSAgICAgICAgc2V0 X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV93cml0ZS5tX3dhaXRzLm1fbWlu KTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgMTU6IC8qIEFWR19USU1FUl9XUklURSAq Lw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV93cml0 ZS5tX3dhaXRzLm1fYXZnKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgMTY6IC8qIE1B WF9USU1FUl9XUklURSAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5t X2lvX3N0YXQubV93cml0ZS5tX3dhaXRzLm1fbWF4KTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAg IGNhc2UgMTc6IC8qIFNVTV9OVU1CRVJfT0ZfQllURVNfV1JJVEUgKi8NCi0gICAgICAgIHNldF9m aWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUubV9ieXRlcyk7DQotICAg ICAgICBicmVhazsNCi0NCi0gICAgICBjYXNlIDE4OiAvKiBDT1VOVF9NSVNDICovDQotICAgICAg ICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX21pc2MubV93YWl0cy5t X2NvdW50KTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgMTk6IC8qIFNVTV9USU1FUl9N SVNDICovDQotICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5t X21pc2MubV93YWl0cy5tX3N1bSk7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlIDIwOiAv KiBNSU5fVElNRVJfTUlTQyAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jv dy5tX2lvX3N0YXQubV9taXNjLm1fd2FpdHMubV9taW4pOw0KLSAgICAgICAgYnJlYWs7DQotICAg ICAgY2FzZSAyMTogLyogQVZHX1RJTUVSX01JU0MgKi8NCi0gICAgICAgIHNldF9maWVsZF91bG9u Z2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fbWlzYy5tX3dhaXRzLm1fYXZnKTsNCi0gICAgICAg IGJyZWFrOw0KLSAgICAgIGNhc2UgMjI6IC8qIE1BWF9USU1FUl9NSVNDICovDQotICAgICAgICBz ZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX21pc2MubV93YWl0cy5tX21h eCk7DQotICAgICAgICBicmVhazsNCi0NCi0gICAgICBkZWZhdWx0Og0KLSAgICAgICAgREJVR19B U1NFUlQoZmFsc2UpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLSAgICB9IC8vIGlmDQot ICB9IC8vIGZvcg0KLQ0KLSAgcmV0dXJuIDA7DQotfQ0KLQ0KKy8qIENvcHlyaWdodCAoYykgMjAw OCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKworICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisKKyAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KworICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICA1MSBGcmFua2xpbiBTdHJlZXQsIFN1 aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzM1IFVTQSAqLworCisvKioKKyAgQGZpbGUgc3Rv cmFnZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25hbWUuY2MKKyAg VGFibGUgU09DS0VUX0VWRU5UX05BTUVTIChpbXBsZW1lbnRhdGlvbikuCisqLworCisjaW5jbHVk ZSAibXlfZ2xvYmFsLmgiCisjaW5jbHVkZSAibXlfcHRocmVhZC5oIgorI2luY2x1ZGUgInBmc19p bnN0ci5oIgorI2luY2x1ZGUgInBmc19jb2x1bW5fdHlwZXMuaCIKKyNpbmNsdWRlICJwZnNfY29s dW1uX3ZhbHVlcy5oIgorI2luY2x1ZGUgInRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25h bWUuaCIKKyNpbmNsdWRlICJwZnNfZ2xvYmFsLmgiCisjaW5jbHVkZSAicGZzX3Zpc2l0b3IuaCIK KworVEhSX0xPQ0sgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZTo6bV90YWJsZV9s b2NrOworCitzdGF0aWMgY29uc3QgVEFCTEVfRklFTERfVFlQRSBmaWVsZF90eXBlc1tdPQorewor ICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiRVZFTlRfTkFNRSIpIH0sCisgICAgeyBDX1NU UklOR19XSVRIX0xFTigidmFyY2hhcigxMjgpIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisg IHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJDT1VOVF9TVEFSIikgfSwKKyAgICB7IENfU1RS SU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsK KyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElNRVJfV0FJVCIpIH0sCisgICAgeyBDX1NU UklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9LAorICB7 CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiTUlOX1RJTUVSX1dBSVQiKSB9LAorICAgIHsgQ19T VFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAg eworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkFWR19USU1FUl9XQUlUIikgfSwKKyAgICB7IENf U1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisg IHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNQVhfVElNRVJfV0FJVCIpIH0sCisgICAgeyBD X1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9LAor CisgIC8qKiBSZWFkICovCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJDT1VOVF9SRUFE IikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5V TEwsIDB9CisgIH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElNRVJfUkVB RCIpIH0sCisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBO VUxMLCAwfQorICB9LAorICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiTUlOX1RJTUVSX1JF QUQiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsg TlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkFWR19USU1FUl9S RUFEIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7 IE5VTEwsIDB9CisgIH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNQVhfVElNRVJf UkVBRCIpIH0sCisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAg eyBOVUxMLCAwfQorICB9LAorICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiU1VNX05VTUJF Ul9PRl9CWVRFU19SRUFEIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjAp IikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisKKyAgLyoqIFdyaXRlICovCisgIHsKKyAgICB7 IENfU1RSSU5HX1dJVEhfTEVOKCJDT1VOVF9XUklURSIpIH0sCisgICAgeyBDX1NUUklOR19XSVRI X0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9LAorICB7CisgICAgeyBD X1NUUklOR19XSVRIX0xFTigiU1VNX1RJTUVSX1dSSVRFIikgfSwKKyAgICB7IENfU1RSSU5HX1dJ VEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsKKyAgICB7 IENfU1RSSU5HX1dJVEhfTEVOKCJNSU5fVElNRVJfV1JJVEUiKSB9LAorICAgIHsgQ19TVFJJTkdf V0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAg IHsgQ19TVFJJTkdfV0lUSF9MRU4oIkFWR19USU1FUl9XUklURSIpIH0sCisgICAgeyBDX1NUUklO R19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9LAorICB7Cisg ICAgeyBDX1NUUklOR19XSVRIX0xFTigiTUFYX1RJTUVSX1dSSVRFIikgfSwKKyAgICB7IENfU1RS SU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsK KyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fTlVNQkVSX09GX0JZVEVTX1dSSVRFIikgfSwK KyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9 CisgIH0sCisKKyAgLyoqIE1pc2MgKi8KKyAgeworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkNP VU5UX01JU0MiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAor ICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIlNVTV9U SU1FUl9NSVNDIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwK KyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNSU5f VElNRVJfTUlTQyIpIH0sCisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0s CisgICAgeyBOVUxMLCAwfQorICB9LAorICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiQVZH X1RJTUVSX01JU0MiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9 LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIk1B WF9USU1FUl9NSVNDIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikg fSwKKyAgICB7IE5VTEwsIDB9CisgIH0KK307CisKK1RBQkxFX0ZJRUxEX0RFRgordGFibGVfc29j a2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZTo6bV9maWVsZF9kZWY9Cit7IDIzLCBmaWVsZF90eXBl cyB9OworCitQRlNfZW5naW5lX3RhYmxlX3NoYXJlCit0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9l dmVudF9uYW1lOjptX3NoYXJlPQoreworICB7IENfU1RSSU5HX1dJVEhfTEVOKCJzb2NrZXRfc3Vt bWFyeV9ieV9ldmVudF9uYW1lIikgfSwKKyAgJnBmc19yZWFkb25seV9hY2wsCisgICZ0YWJsZV9z b2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lOjpjcmVhdGUsCisgIE5VTEwsIC8qIHdyaXRlX3Jv dyAqLworICB0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lOjpkZWxldGVfYWxsX3Jv d3MsCisgIE5VTEwsIC8qIGdldF9yb3dfY291bnQgKi8KKyAgMTAwMCwgLyogcmVjb3JkcyAqLwor ICBzaXplb2YoUEZTX3NpbXBsZV9pbmRleCksCisgICZtX3RhYmxlX2xvY2ssCisgICZtX2ZpZWxk X2RlZiwKKyAgZmFsc2UgLyogY2hlY2tlZCAqLworfTsKKworUEZTX2VuZ2luZV90YWJsZSogdGFi bGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZTo6Y3JlYXRlKHZvaWQpCit7CisgIHJldHVy biBuZXcgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZSgpOworfQorCit0YWJsZV9z b2NrZXRfc3VtbWFyeV9ieV9ldmVudF9uYW1lOjp0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9ldmVu dF9uYW1lKCkKKyAgOiBQRlNfZW5naW5lX3RhYmxlKCZtX3NoYXJlLCAmbV9wb3MpLAorICBtX3Jv d19leGlzdHMoZmFsc2UpLCBtX3BvcygxKSwgbV9uZXh0X3BvcygxKQore30KKworaW50IHRhYmxl X3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25hbWU6OmRlbGV0ZV9hbGxfcm93cyh2b2lkKQorewor ICByZXNldF9zb2NrZXRfaW5zdGFuY2VfaW8oKTsKKyAgcmVzZXRfc29ja2V0X2NsYXNzX2lvKCk7 CisgIHJldHVybiAwOworfQorCit2b2lkIHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50X25h bWU6OnJlc2V0X3Bvc2l0aW9uKHZvaWQpCit7CisgIG1fcG9zLm1faW5kZXg9IDE7CisgIG1fbmV4 dF9wb3MubV9pbmRleD0gMTsKK30KKworaW50IHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2V2ZW50 X25hbWU6OnJuZF9uZXh0KHZvaWQpCit7CisgIFBGU19zb2NrZXRfY2xhc3MgKnNvY2tldF9jbGFz czsKKworICBtX3Bvcy5zZXRfYXQoJm1fbmV4dF9wb3MpOworCisgIHNvY2tldF9jbGFzcz0gZmlu ZF9zb2NrZXRfY2xhc3MobV9wb3MubV9pbmRleCk7CisgIGlmIChzb2NrZXRfY2xhc3MpCisgIHsK KyAgICBtYWtlX3Jvdyhzb2NrZXRfY2xhc3MpOworICAgIG1fbmV4dF9wb3Muc2V0X2FmdGVyKCZt X3Bvcyk7CisgICAgcmV0dXJuIDA7CisgIH0KKworICByZXR1cm4gSEFfRVJSX0VORF9PRl9GSUxF OworfQorCitpbnQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFtZTo6cm5kX3Bvcyhj b25zdCB2b2lkICpwb3MpCit7CisgIFBGU19zb2NrZXRfY2xhc3MgKnNvY2tldF9jbGFzczsKKwor ICBzZXRfcG9zaXRpb24ocG9zKTsKKworICBzb2NrZXRfY2xhc3M9IGZpbmRfc29ja2V0X2NsYXNz KG1fcG9zLm1faW5kZXgpOworICBpZiAoc29ja2V0X2NsYXNzKQorICB7CisgICAgbWFrZV9yb3co c29ja2V0X2NsYXNzKTsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHJldHVybiBIQV9FUlJfUkVD T1JEX0RFTEVURUQ7Cit9CisKK3ZvaWQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZlbnRfbmFt ZTo6bWFrZV9yb3coUEZTX3NvY2tldF9jbGFzcyAqc29ja2V0X2NsYXNzKQoreworICBtX3Jvdy5t X2V2ZW50X25hbWUubWFrZV9yb3coc29ja2V0X2NsYXNzKTsKKworICBQRlNfaW5zdGFuY2Vfc29j a2V0X2lvX3N0YXRfdmlzaXRvciB2aXNpdG9yOworICBQRlNfaW5zdGFuY2VfaXRlcmF0b3I6OnZp c2l0X3NvY2tldF9pbnN0YW5jZXMoc29ja2V0X2NsYXNzLCAmdmlzaXRvcik7CisKKyAgdGltZV9u b3JtYWxpemVyICpub3JtYWxpemVyPSB0aW1lX25vcm1hbGl6ZXI6OmdldCh3YWl0X3RpbWVyKTsK KyAgCisgIC8qIENvbGxlY3QgdGltZXIgYW5kIGJ5dGUgY291bnQgc3RhdHMgKi8KKyAgbV9yb3cu bV9pb19zdGF0LnNldChub3JtYWxpemVyLCAmdmlzaXRvci5tX3NvY2tldF9pb19zdGF0KTsKKyAg bV9yb3dfZXhpc3RzPSB0cnVlOworfQorCitpbnQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfZXZl bnRfbmFtZTo6cmVhZF9yb3dfdmFsdWVzKFRBQkxFICp0YWJsZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkICoqZmllbGRzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWFkX2FsbCkKK3sKKyAgRmllbGQg KmY7CisKKyAgaWYgKHVubGlrZWx5KCFtX3Jvd19leGlzdHMpKQorICAgIHJldHVybiBIQV9FUlJf UkVDT1JEX0RFTEVURUQ7CisKKyAgLyogU2V0IHRoZSBudWxsIGJpdHMgKi8KKyAgREJVR19BU1NF UlQodGFibGUtPnMtPm51bGxfYnl0ZXMgPT0gMCk7CisKKyAgZm9yICg7IChmPSAqZmllbGRzKSA7 IGZpZWxkcysrKQorICB7CisgICAgaWYgKHJlYWRfYWxsIHx8IGJpdG1hcF9pc19zZXQodGFibGUt PnJlYWRfc2V0LCBmLT5maWVsZF9pbmRleCkpCisgICAgeworICAgICAgc3dpdGNoKGYtPmZpZWxk X2luZGV4KQorICAgICAgeworICAgICAgY2FzZSAgMDogLyogRVZFTlRfTkFNRSAqLworICAgICAg ICBtX3Jvdy5tX2V2ZW50X25hbWUuc2V0X2ZpZWxkKGYpOworICAgICAgICBicmVhazsKKyAgICAg IGNhc2UgIDE6IC8qIENPVU5UX1NUQVIgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhm LCBtX3Jvdy5tX2lvX3N0YXQubV9hbGwubV93YWl0cy5tX2NvdW50KTsKKyAgICAgICAgYnJlYWs7 CisgICAgICBjYXNlICAyOiAvKiBTVU1fVElNRVJfV0FJVCAqLworICAgICAgICBzZXRfZmllbGRf dWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX2FsbC5tX3dhaXRzLm1fc3VtKTsKKyAgICAg ICAgYnJlYWs7CisgICAgICBjYXNlICAzOiAvKiBNSU5fVElNRVJfV0FJVCAqLworICAgICAgICBz ZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX2FsbC5tX3dhaXRzLm1fbWlu KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICA0OiAvKiBBVkdfVElNRVJfV0FJVCAqLwor ICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX2FsbC5tX3dh aXRzLm1fYXZnKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICA1OiAvKiBNQVhfVElNRVJf V0FJVCAqLworICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5t X2FsbC5tX3dhaXRzLm1fbWF4KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgIDY6IC8q IENPVU5UX1JFQUQgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lv X3N0YXQubV9yZWFkLm1fd2FpdHMubV9jb3VudCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz ZSAgNzogLyogU1VNX1RJTUVSX1JFQUQgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhm LCBtX3Jvdy5tX2lvX3N0YXQubV9yZWFkLm1fd2FpdHMubV9zdW0pOworICAgICAgICBicmVhazsK KyAgICAgIGNhc2UgIDg6IC8qIE1JTl9USU1FUl9SRUFEICovCisgICAgICAgIHNldF9maWVsZF91 bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fcmVhZC5tX3dhaXRzLm1fbWluKTsKKyAgICAg ICAgYnJlYWs7CisgICAgICBjYXNlICA5OiAvKiBBVkdfVElNRVJfUkVBRCAqLworICAgICAgICBz ZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX3JlYWQubV93YWl0cy5tX2F2 Zyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxMDogLyogTUFYX1RJTUVSX1JFQUQgKi8K KyAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9yZWFkLm1f d2FpdHMubV9tYXgpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTE6IC8qIFNVTV9OVU1C RVJfT0ZfQllURVNfUkVBRCAqLworICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93 Lm1faW9fc3RhdC5tX3JlYWQubV9ieXRlcyk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNl IDEyOiAvKiBDT1VOVF9XUklURSAqLworICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1f cm93Lm1faW9fc3RhdC5tX3dyaXRlLm1fd2FpdHMubV9jb3VudCk7CisgICAgICAgIGJyZWFrOwor ICAgICAgY2FzZSAxMzogLyogU1VNX1RJTUVSX1dSSVRFICovCisgICAgICAgIHNldF9maWVsZF91 bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUubV93YWl0cy5tX3N1bSk7CisgICAg ICAgIGJyZWFrOworICAgICAgY2FzZSAxNDogLyogTUlOX1RJTUVSX1dSSVRFICovCisgICAgICAg IHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUubV93YWl0cy5t X21pbik7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNTogLyogQVZHX1RJTUVSX1dSSVRF ICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3Jp dGUubV93YWl0cy5tX2F2Zyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAxNjogLyogTUFY X1RJTUVSX1dSSVRFICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9p b19zdGF0Lm1fd3JpdGUubV93YWl0cy5tX21heCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz ZSAxNzogLyogU1VNX05VTUJFUl9PRl9CWVRFU19XUklURSAqLworICAgICAgICBzZXRfZmllbGRf dWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX3dyaXRlLm1fYnl0ZXMpOworICAgICAgICBi cmVhazsKKworICAgICAgY2FzZSAxODogLyogQ09VTlRfTUlTQyAqLworICAgICAgICBzZXRfZmll bGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX21pc2MubV93YWl0cy5tX2NvdW50KTsK KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE5OiAvKiBTVU1fVElNRVJfTUlTQyAqLworICAg ICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX21pc2MubV93YWl0 cy5tX3N1bSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyMDogLyogTUlOX1RJTUVSX01J U0MgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9t aXNjLm1fd2FpdHMubV9taW4pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjE6IC8qIEFW R19USU1FUl9NSVNDICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9p b19zdGF0Lm1fbWlzYy5tX3dhaXRzLm1fYXZnKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl IDIyOiAvKiBNQVhfVElNRVJfTUlTQyAqLworICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYs IG1fcm93Lm1faW9fc3RhdC5tX21pc2MubV93YWl0cy5tX21heCk7CisgICAgICAgIGJyZWFrOwor CisgICAgICBkZWZhdWx0OgorICAgICAgICBEQlVHX0FTU0VSVChmYWxzZSk7CisgICAgICAgIGJy ZWFrOworICAgICAgfQorICAgIH0gLy8gaWYKKyAgfSAvLyBmb3IKKworICByZXR1cm4gMDsKK30K KwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvcGVyZnNjaGVtYS90YWJsZV9zb2NrZXRfc3Vt bWFyeV9ieV9pbnN0YW5jZS5jYycKLS0tIGEvc3RvcmFnZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tl dF9zdW1tYXJ5X2J5X2luc3RhbmNlLmNjCTIwMTEtMDgtMTggMTI6Mjc6MjEgKzAwMDAKKysrIGIv c3RvcmFnZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNlLmNjCTIw MTEtMTAtMDYgMTc6MTU6NDcgKzAwMDAKQEAgLTEsMzcwICsxLDM3MCBAQAotLyogQ29weXJpZ2h0 IChjKSAyMDA4LCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRz IHJlc2VydmVkLg0KLQ0KLSAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCi0gIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQotICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuDQotDQotICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwNCi0gIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mDQotICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQotICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLg0KLQ0KLSAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sDQotICA1 MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzM1IFVTQSAq Lw0KLQ0KLS8qKg0KLSAgQGZpbGUgc3RvcmFnZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tldF9zdW1t YXJ5X2J5X2luc3RhbmNlLmNjDQotICBUYWJsZSBTT0NLRVRfSU5TVEFOQ0VTIChpbXBsZW1lbnRh dGlvbikuDQotKi8NCi0NCi0jaW5jbHVkZSAibXlfZ2xvYmFsLmgiDQotI2luY2x1ZGUgIm15X3B0 aHJlYWQuaCINCi0jaW5jbHVkZSAicGZzX2luc3RyLmgiDQotI2luY2x1ZGUgInBmc19jb2x1bW5f dHlwZXMuaCINCi0jaW5jbHVkZSAicGZzX2NvbHVtbl92YWx1ZXMuaCINCi0jaW5jbHVkZSAidGFi bGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2UuaCINCi0jaW5jbHVkZSAicGZzX2dsb2JhbC5o Ig0KLQ0KLVRIUl9MT0NLIHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNlOjptX3RhYmxl X2xvY2s7DQotDQotc3RhdGljIGNvbnN0IFRBQkxFX0ZJRUxEX1RZUEUgZmllbGRfdHlwZXNbXT0N Ci17DQotICB7DQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkVWRU5UX05BTUUiKSB9LA0KLSAg ICB7IENfU1RSSU5HX1dJVEhfTEVOKCJ2YXJjaGFyKDEyOCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9 DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJPQkpFQ1RfSU5TVEFOQ0Vf QkVHSU4iKSB9LA0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwNCi0g ICAgeyBOVUxMLCAwfQ0KLSAgfSwNCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiQ09V TlRfU1RBUiIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0K LSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJT VU1fVElNRVJfV0FJVCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCki KSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhf TEVOKCJNSU5fVElNRVJfV0FJVCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2lu dCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5H X1dJVEhfTEVOKCJBVkdfVElNRVJfV0FJVCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4o ImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENf U1RSSU5HX1dJVEhfTEVOKCJNQVhfVElNRVJfV0FJVCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lU SF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLQ0KLSAgLyoq IFJlYWQgKi8NCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiQ09VTlRfUkVBRCIpIH0s DQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEws IDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElNRVJfUkVB RCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7 IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNSU5fVElN RVJfUkVBRCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0K LSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJB VkdfVElNRVJfUkVBRCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCki KSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhf TEVOKCJNQVhfVElNRVJfUkVBRCIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2lu dCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5H X1dJVEhfTEVOKCJTVU1fTlVNQkVSX09GX0JZVEVTX1JFQUQiKSB9LA0KLSAgICB7IENfU1RSSU5H X1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwNCi0gICAgeyBOVUxMLCAwfQ0KLSAgfSwNCi0NCi0g IC8qKiBXcml0ZSAqLw0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJDT1VOVF9XUklU RSIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7 IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fVElN RVJfV1JJVEUiKSB9LA0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwN Ci0gICAgeyBOVUxMLCAwfQ0KLSAgfSwNCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigi TUlOX1RJTUVSX1dSSVRFIikgfSwNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIw KSIpIH0sDQotICAgIHsgTlVMTCwgMH0NCi0gIH0sDQotICB7DQotICAgIHsgQ19TVFJJTkdfV0lU SF9MRU4oIkFWR19USU1FUl9XUklURSIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJp Z2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RS SU5HX1dJVEhfTEVOKCJNQVhfVElNRVJfV1JJVEUiKSB9LA0KLSAgICB7IENfU1RSSU5HX1dJVEhf TEVOKCJiaWdpbnQoMjApIikgfSwNCi0gICAgeyBOVUxMLCAwfQ0KLSAgfSwNCi0gIHsNCi0gICAg eyBDX1NUUklOR19XSVRIX0xFTigiU1VNX05VTUJFUl9PRl9CWVRFU19XUklURSIpIH0sDQotICAg IHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQot ICB9LA0KLQ0KLSAgLyoqIE1pc2MgKi8NCi0gIHsNCi0gICAgeyBDX1NUUklOR19XSVRIX0xFTigi Q09VTlRfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9 LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJVEhfTEVO KCJTVU1fVElNRVJfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgy MCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RSSU5HX1dJ VEhfTEVOKCJNSU5fVElNRVJfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJp Z2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7IENfU1RS SU5HX1dJVEhfTEVOKCJBVkdfVElNRVJfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdfV0lUSF9M RU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9LA0KLSAgew0KLSAgICB7 IENfU1RSSU5HX1dJVEhfTEVOKCJNQVhfVElNRVJfTUlTQyIpIH0sDQotICAgIHsgQ19TVFJJTkdf V0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LA0KLSAgICB7IE5VTEwsIDB9DQotICB9DQotfTsNCi0N Ci1UQUJMRV9GSUVMRF9ERUYNCi10YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9pbnN0YW5jZTo6bV9m aWVsZF9kZWY9DQoteyAyNCwgZmllbGRfdHlwZXMgfTsNCi0NCi1QRlNfZW5naW5lX3RhYmxlX3No YXJlDQotdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2U6Om1fc2hhcmU9DQotew0KLSAg eyBDX1NUUklOR19XSVRIX0xFTigic29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2UiKSB9LA0KLSAg JnBmc19yZWFkb25seV9hY2wsDQotICAmdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2U6 OmNyZWF0ZSwNCi0gIE5VTEwsIC8qIHdyaXRlX3JvdyAqLw0KLSAgdGFibGVfc29ja2V0X3N1bW1h cnlfYnlfaW5zdGFuY2U6OmRlbGV0ZV9hbGxfcm93cywNCi0gIE5VTEwsIC8qIGdldF9yb3dfY291 bnQgKi8NCi0gIDEwMDAsIC8qIHJlY29yZHMgKi8NCi0gIHNpemVvZihQRlNfc2ltcGxlX2luZGV4 KSwNCi0gICZtX3RhYmxlX2xvY2ssDQotICAmbV9maWVsZF9kZWYsDQotICBmYWxzZSAvKiBjaGVj a2VkICovDQotfTsNCi0NCi1QRlNfZW5naW5lX3RhYmxlKiB0YWJsZV9zb2NrZXRfc3VtbWFyeV9i eV9pbnN0YW5jZTo6Y3JlYXRlKHZvaWQpDQotew0KLSAgcmV0dXJuIG5ldyB0YWJsZV9zb2NrZXRf c3VtbWFyeV9ieV9pbnN0YW5jZSgpOw0KLX0NCi0NCi10YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9p bnN0YW5jZTo6dGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2UoKQ0KLSAgOiBQRlNfZW5n aW5lX3RhYmxlKCZtX3NoYXJlLCAmbV9wb3MpLA0KLSAgbV9yb3dfZXhpc3RzKGZhbHNlKSwgbV9w b3MoMCksIG1fbmV4dF9wb3MoMCkNCi17fQ0KLQ0KLWludCB0YWJsZV9zb2NrZXRfc3VtbWFyeV9i eV9pbnN0YW5jZTo6ZGVsZXRlX2FsbF9yb3dzKHZvaWQpDQotew0KLSAgcmVzZXRfc29ja2V0X2lu c3RhbmNlX2lvKCk7DQotICByZXR1cm4gMDsNCi19DQotDQotdm9pZCB0YWJsZV9zb2NrZXRfc3Vt bWFyeV9ieV9pbnN0YW5jZTo6cmVzZXRfcG9zaXRpb24odm9pZCkNCi17DQotICBtX3Bvcy5tX2lu ZGV4PSAwOw0KLSAgbV9uZXh0X3Bvcy5tX2luZGV4PSAwOw0KLX0NCi0NCi1pbnQgdGFibGVfc29j a2V0X3N1bW1hcnlfYnlfaW5zdGFuY2U6OnJuZF9uZXh0KHZvaWQpDQotew0KLSAgUEZTX3NvY2tl dCAqcGZzOw0KLQ0KLSAgZm9yIChtX3Bvcy5zZXRfYXQoJm1fbmV4dF9wb3MpOw0KLSAgICAgICBt X3Bvcy5tX2luZGV4IDwgc29ja2V0X21heDsNCi0gICAgICAgbV9wb3MubmV4dCgpKQ0KLSAgew0K LSAgICBwZnM9ICZzb2NrZXRfYXJyYXlbbV9wb3MubV9pbmRleF07DQotICAgIGlmIChwZnMtPm1f bG9jay5pc19wb3B1bGF0ZWQoKSkNCi0gICAgew0KLSAgICAgIG1ha2Vfcm93KHBmcyk7DQotICAg ICAgbV9uZXh0X3Bvcy5zZXRfYWZ0ZXIoJm1fcG9zKTsNCi0gICAgICByZXR1cm4gMDsNCi0gICAg fQ0KLSAgfQ0KLQ0KLSAgcmV0dXJuIEhBX0VSUl9FTkRfT0ZfRklMRTsNCi19DQotDQotaW50IHRh YmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNlOjpybmRfcG9zKGNvbnN0IHZvaWQgKnBvcykN Ci17DQotICBQRlNfc29ja2V0ICpwZnM7DQotDQotICBzZXRfcG9zaXRpb24ocG9zKTsNCi0gIERC VUdfQVNTRVJUKG1fcG9zLm1faW5kZXggPCBzb2NrZXRfbWF4KTsNCi0gIHBmcz0gJnNvY2tldF9h cnJheVttX3Bvcy5tX2luZGV4XTsNCi0NCi0gIGlmICghIHBmcy0+bV9sb2NrLmlzX3BvcHVsYXRl ZCgpKQ0KLSAgICByZXR1cm4gSEFfRVJSX1JFQ09SRF9ERUxFVEVEOw0KLQ0KLSAgbWFrZV9yb3co cGZzKTsNCi0gIHJldHVybiAwOw0KLX0NCi0NCi12b2lkIHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5 X2luc3RhbmNlOjptYWtlX3JvdyhQRlNfc29ja2V0ICpwZnMpDQotew0KLSAgcGZzX2xvY2sgbG9j azsNCi0gIFBGU19zb2NrZXRfY2xhc3MgKnNhZmVfY2xhc3M7DQotDQotICBtX3Jvd19leGlzdHM9 IGZhbHNlOw0KLQ0KLSAgLyogUHJvdGVjdCB0aGlzIHJlYWRlciBhZ2FpbnN0IGEgc29ja2V0IGRl bGV0ZSAqLw0KLSAgcGZzLT5tX2xvY2suYmVnaW5fb3B0aW1pc3RpY19sb2NrKCZsb2NrKTsNCi0N Ci0gIHNhZmVfY2xhc3M9IHNhbml0aXplX3NvY2tldF9jbGFzcyhwZnMtPm1fY2xhc3MpOw0KLSAg aWYgKHVubGlrZWx5KHNhZmVfY2xhc3MgPT0gTlVMTCkpDQotICAgIHJldHVybjsNCi0NCi0gIG1f cm93Lm1fZXZlbnRfbmFtZS5tYWtlX3JvdyhzYWZlX2NsYXNzKTsNCi0gIG1fcm93Lm1faWRlbnRp dHk9IHBmcy0+bV9pZGVudGl0eTsNCi0NCi0gIHRpbWVfbm9ybWFsaXplciAqbm9ybWFsaXplcj0g dGltZV9ub3JtYWxpemVyOjpnZXQod2FpdF90aW1lcik7DQotDQotICAvKiBDb2xsZWN0IHRpbWVy IGFuZCBieXRlIGNvdW50IHN0YXRzICovDQotICBtX3Jvdy5tX2lvX3N0YXQuc2V0KG5vcm1hbGl6 ZXIsICZwZnMtPm1fc29ja2V0X3N0YXQubV9pb19zdGF0KTsNCi0NCi0gIGlmICghcGZzLT5tX2xv Y2suZW5kX29wdGltaXN0aWNfbG9jaygmbG9jaykpDQotICAgIHJldHVybjsNCi0NCi0gIG1fcm93 X2V4aXN0cz0gdHJ1ZTsNCi19DQotDQotaW50IHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3Rh bmNlOjpyZWFkX3Jvd192YWx1ZXMoVEFCTEUgKnRhYmxlLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwNCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCAqKmZpZWxkcywNCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlYWRfYWxsKQ0KLXsNCi0gIEZpZWxk ICpmOw0KLQ0KLSAgaWYgKHVubGlrZWx5KCFtX3Jvd19leGlzdHMpKQ0KLSAgICByZXR1cm4gSEFf RVJSX1JFQ09SRF9ERUxFVEVEOw0KLQ0KLSAgLyogU2V0IHRoZSBudWxsIGJpdHMgKi8NCi0gIERC VUdfQVNTRVJUKHRhYmxlLT5zLT5udWxsX2J5dGVzID09IDApOw0KLQ0KLSAgZm9yICg7IChmPSAq ZmllbGRzKSA7IGZpZWxkcysrKQ0KLSAgew0KLSAgICBpZiAocmVhZF9hbGwgfHwgYml0bWFwX2lz X3NldCh0YWJsZS0+cmVhZF9zZXQsIGYtPmZpZWxkX2luZGV4KSkNCi0gICAgew0KLSAgICAgIHN3 aXRjaChmLT5maWVsZF9pbmRleCkNCi0gICAgICB7DQotICAgICAgY2FzZSAgMDogLyogRVZFTlRf TkFNRSAqLw0KLSAgICAgICAgbV9yb3cubV9ldmVudF9uYW1lLnNldF9maWVsZChmKTsNCi0gICAg ICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgIDE6IC8qIE9CSkVDVF9JTlNUQU5DRSAqLw0KLSAgICAg ICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCAodWxvbmdsb25nKW1fcm93Lm1faWRlbnRpdHkpOw0K LSAgICAgICAgYnJlYWs7DQotDQotICAgICAgY2FzZSAgMjovKiBDT1VOVF9TVEFSICovDQotICAg ICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX2FsbC5tX3dhaXRz Lm1fY291bnQpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgY2FzZSAgMzovKiBTVU1fVElNRVJf V0FJVCAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQu bV9hbGwubV93YWl0cy5tX3N1bSk7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlICA0OiAv KiBNSU5fVElNRVJfV0FJVCAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jv dy5tX2lvX3N0YXQubV9hbGwubV93YWl0cy5tX21pbik7DQotICAgICAgICBicmVhazsNCi0gICAg ICBjYXNlICA1OiAvKiBBVkdfVElNRVJfV0FJVCAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25n bG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9hbGwubV93YWl0cy5tX2F2Zyk7DQotICAgICAgICBi cmVhazsNCi0gICAgICBjYXNlICA2OiAvKiBNQVhfVElNRVJfV0FJVCAqLw0KLSAgICAgICAgc2V0 X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9hbGwubV93YWl0cy5tX21heCk7 DQotICAgICAgICBicmVhazsNCi0NCi0gICAgICBjYXNlICA3OiAvKiBDT1VOVF9SRUFEICovDQot ICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX3JlYWQubV93 YWl0cy5tX2NvdW50KTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgIDg6IC8qIFNVTV9U SU1FUl9SRUFEICovDQotICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9f c3RhdC5tX3JlYWQubV93YWl0cy5tX3N1bSk7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNl ICA5OiAvKiBNSU5fVElNRVJfUkVBRCAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhm LCBtX3Jvdy5tX2lvX3N0YXQubV9yZWFkLm1fd2FpdHMubV9taW4pOw0KLSAgICAgICAgYnJlYWs7 DQotICAgICAgY2FzZSAxMDogLyogQVZHX1RJTUVSX1JFQUQgKi8NCi0gICAgICAgIHNldF9maWVs ZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fcmVhZC5tX3dhaXRzLm1fYXZnKTsNCi0g ICAgICAgIGJyZWFrOw0KLSAgICAgIGNhc2UgMTE6IC8qIE1BWF9USU1FUl9SRUFEICovDQotICAg ICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX3JlYWQubV93YWl0 cy5tX21heCk7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlIDEyOiAvKiBTVU1fTlVNQkVS X09GX0JZVEVTX1JFQUQgKi8NCi0gICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cu bV9pb19zdGF0Lm1fcmVhZC5tX2J5dGVzKTsNCi0gICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgIGNh c2UgMTM6IC8qIENPVU5UX1dSSVRFICovDQotICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYs IG1fcm93Lm1faW9fc3RhdC5tX3dyaXRlLm1fd2FpdHMubV9jb3VudCk7DQotICAgICAgICBicmVh azsNCi0gICAgICBjYXNlIDE0OiAvKiBTVU1fVElNRVJfV1JJVEUgKi8NCi0gICAgICAgIHNldF9m aWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUubV93YWl0cy5tX3N1bSk7 DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlIDE1OiAvKiBNSU5fVElNRVJfV1JJVEUgKi8N Ci0gICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUu bV93YWl0cy5tX21pbik7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlIDE2OiAvKiBBVkdf VElNRVJfV1JJVEUgKi8NCi0gICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9p b19zdGF0Lm1fd3JpdGUubV93YWl0cy5tX2F2Zyk7DQotICAgICAgICBicmVhazsNCi0gICAgICBj YXNlIDE3OiAvKiBNQVhfVElNRVJfV1JJVEUgKi8NCi0gICAgICAgIHNldF9maWVsZF91bG9uZ2xv bmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUubV93YWl0cy5tX21heCk7DQotICAgICAgICBi cmVhazsNCi0gICAgICBjYXNlIDE4OiAvKiBTVU1fTlVNQkVSX09GX0JZVEVTX1dSSVRFICovDQot ICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX3dyaXRlLm1f Ynl0ZXMpOw0KLSAgICAgICAgYnJlYWs7DQotDQotICAgICAgY2FzZSAxOTogLyogQ09VTlRfTUlT QyAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9t aXNjLm1fd2FpdHMubV9jb3VudCk7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlIDIwOiAv KiBTVU1fVElNRVJfTUlTQyAqLw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jv dy5tX2lvX3N0YXQubV9taXNjLm1fd2FpdHMubV9zdW0pOw0KLSAgICAgICAgYnJlYWs7DQotICAg ICAgY2FzZSAyMTogLyogTUlOX1RJTUVSX01JU0MgKi8NCi0gICAgICAgIHNldF9maWVsZF91bG9u Z2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fbWlzYy5tX3dhaXRzLm1fbWluKTsNCi0gICAgICAg IGJyZWFrOw0KLSAgICAgIGNhc2UgMjI6IC8qIEFWR19USU1FUl9NSVNDICovDQotICAgICAgICBz ZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX21pc2MubV93YWl0cy5tX2F2 Zyk7DQotICAgICAgICBicmVhazsNCi0gICAgICBjYXNlIDIzOiAvKiBNQVhfVElNRVJfTUlTQyAq Lw0KLSAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9taXNj Lm1fd2FpdHMubV9tYXgpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgZGVmYXVsdDoNCi0gICAg ICAgIERCVUdfQVNTRVJUKGZhbHNlKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgIH0NCi0gICAg fQ0KLSAgfQ0KLQ0KLSAgcmV0dXJuIDA7DQotfQ0KLQ0KKy8qIENvcHlyaWdodCAoYykgMjAwOCwg MjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KworICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisKKyAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRl IDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzM1IFVTQSAqLworCisvKioKKyAgQGZpbGUgc3RvcmFn ZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNlLmNjCisgIFRhYmxl IFNPQ0tFVF9TVU1NQVJZX0JZX0lOU1RBTkNFIChpbXBsZW1lbnRhdGlvbikuCisqLworCisjaW5j bHVkZSAibXlfZ2xvYmFsLmgiCisjaW5jbHVkZSAibXlfcHRocmVhZC5oIgorI2luY2x1ZGUgInBm c19pbnN0ci5oIgorI2luY2x1ZGUgInBmc19jb2x1bW5fdHlwZXMuaCIKKyNpbmNsdWRlICJwZnNf Y29sdW1uX3ZhbHVlcy5oIgorI2luY2x1ZGUgInRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3Rh bmNlLmgiCisjaW5jbHVkZSAicGZzX2dsb2JhbC5oIgorCitUSFJfTE9DSyB0YWJsZV9zb2NrZXRf c3VtbWFyeV9ieV9pbnN0YW5jZTo6bV90YWJsZV9sb2NrOworCitzdGF0aWMgY29uc3QgVEFCTEVf RklFTERfVFlQRSBmaWVsZF90eXBlc1tdPQoreworICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xF TigiRVZFTlRfTkFNRSIpIH0sCisgICAgeyBDX1NUUklOR19XSVRIX0xFTigidmFyY2hhcigxMjgp IikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVO KCJPQkpFQ1RfSU5TVEFOQ0VfQkVHSU4iKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJp Z2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdf V0lUSF9MRU4oIkNPVU5UX1NUQVIiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2lu dCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdfV0lU SF9MRU4oIlNVTV9USU1FUl9XQUlUIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdp bnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJ VEhfTEVOKCJNSU5fVElNRVJfV0FJVCIpIH0sCisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmln aW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9LAorICB7CisgICAgeyBDX1NUUklOR19X SVRIX0xFTigiQVZHX1RJTUVSX1dBSVQiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJp Z2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdf V0lUSF9MRU4oIk1BWF9USU1FUl9XQUlUIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJi aWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisKKyAgLyoqIFJlYWQgKi8KKyAg eworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIkNPVU5UX1JFQUQiKSB9LAorICAgIHsgQ19TVFJJ TkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgewor ICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIlNVTV9USU1FUl9SRUFEIikgfSwKKyAgICB7IENfU1RS SU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsK KyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJNSU5fVElNRVJfUkVBRCIpIH0sCisgICAgeyBDX1NU UklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9LAorICB7 CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiQVZHX1RJTUVSX1JFQUQiKSB9LAorICAgIHsgQ19T VFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAg eworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIk1BWF9USU1FUl9SRUFEIikgfSwKKyAgICB7IENf U1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisg IHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJTVU1fTlVNQkVSX09GX0JZVEVTX1JFQUQiKSB9 LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwg MH0KKyAgfSwKKworICAvKiogV3JpdGUgKi8KKyAgeworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4o IkNPVU5UX1dSSVRFIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikg fSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJT VU1fVElNRVJfV1JJVEUiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCki KSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4o Ik1JTl9USU1FUl9XUklURSIpIH0sCisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIw KSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9LAorICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xF TigiQVZHX1RJTUVSX1dSSVRFIikgfSwKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQo MjApIikgfSwKKyAgICB7IE5VTEwsIDB9CisgIH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhf TEVOKCJNQVhfVElNRVJfV1JJVEUiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2lu dCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKyAgeworICAgIHsgQ19TVFJJTkdfV0lU SF9MRU4oIlNVTV9OVU1CRVJfT0ZfQllURVNfV1JJVEUiKSB9LAorICAgIHsgQ19TVFJJTkdfV0lU SF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAgfSwKKworICAvKiogTWlz YyAqLworICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiQ09VTlRfTUlTQyIpIH0sCisgICAg eyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQorICB9 LAorICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiU1VNX1RJTUVSX01JU0MiKSB9LAorICAg IHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0KKyAg fSwKKyAgeworICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oIk1JTl9USU1FUl9NSVNDIikgfSwKKyAg ICB7IENfU1RSSU5HX1dJVEhfTEVOKCJiaWdpbnQoMjApIikgfSwKKyAgICB7IE5VTEwsIDB9Cisg IH0sCisgIHsKKyAgICB7IENfU1RSSU5HX1dJVEhfTEVOKCJBVkdfVElNRVJfTUlTQyIpIH0sCisg ICAgeyBDX1NUUklOR19XSVRIX0xFTigiYmlnaW50KDIwKSIpIH0sCisgICAgeyBOVUxMLCAwfQor ICB9LAorICB7CisgICAgeyBDX1NUUklOR19XSVRIX0xFTigiTUFYX1RJTUVSX01JU0MiKSB9LAor ICAgIHsgQ19TVFJJTkdfV0lUSF9MRU4oImJpZ2ludCgyMCkiKSB9LAorICAgIHsgTlVMTCwgMH0K KyAgfQorfTsKKworVEFCTEVfRklFTERfREVGCit0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9pbnN0 YW5jZTo6bV9maWVsZF9kZWY9Cit7IDI0LCBmaWVsZF90eXBlcyB9OworCitQRlNfZW5naW5lX3Rh YmxlX3NoYXJlCit0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9pbnN0YW5jZTo6bV9zaGFyZT0KK3sK KyAgeyBDX1NUUklOR19XSVRIX0xFTigic29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2UiKSB9LAor ICAmcGZzX3JlYWRvbmx5X2FjbCwKKyAgJnRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNl OjpjcmVhdGUsCisgIE5VTEwsIC8qIHdyaXRlX3JvdyAqLworICB0YWJsZV9zb2NrZXRfc3VtbWFy eV9ieV9pbnN0YW5jZTo6ZGVsZXRlX2FsbF9yb3dzLAorICBOVUxMLCAvKiBnZXRfcm93X2NvdW50 ICovCisgIDEwMDAsIC8qIHJlY29yZHMgKi8KKyAgc2l6ZW9mKFBGU19zaW1wbGVfaW5kZXgpLAor ICAmbV90YWJsZV9sb2NrLAorICAmbV9maWVsZF9kZWYsCisgIGZhbHNlIC8qIGNoZWNrZWQgKi8K K307CisKK1BGU19lbmdpbmVfdGFibGUqIHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNl OjpjcmVhdGUodm9pZCkKK3sKKyAgcmV0dXJuIG5ldyB0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9p bnN0YW5jZSgpOworfQorCit0YWJsZV9zb2NrZXRfc3VtbWFyeV9ieV9pbnN0YW5jZTo6dGFibGVf c29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2UoKQorICA6IFBGU19lbmdpbmVfdGFibGUoJm1fc2hh cmUsICZtX3BvcyksCisgIG1fcm93X2V4aXN0cyhmYWxzZSksIG1fcG9zKDApLCBtX25leHRfcG9z KDApCit7fQorCitpbnQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2U6OmRlbGV0ZV9h bGxfcm93cyh2b2lkKQoreworICByZXNldF9zb2NrZXRfaW5zdGFuY2VfaW8oKTsKKyAgcmV0dXJu IDA7Cit9CisKK3ZvaWQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2U6OnJlc2V0X3Bv c2l0aW9uKHZvaWQpCit7CisgIG1fcG9zLm1faW5kZXg9IDA7CisgIG1fbmV4dF9wb3MubV9pbmRl eD0gMDsKK30KKworaW50IHRhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNlOjpybmRfbmV4 dCh2b2lkKQoreworICBQRlNfc29ja2V0ICpwZnM7CisKKyAgZm9yIChtX3Bvcy5zZXRfYXQoJm1f bmV4dF9wb3MpOworICAgICAgIG1fcG9zLm1faW5kZXggPCBzb2NrZXRfbWF4OworICAgICAgIG1f cG9zLm5leHQoKSkKKyAgeworICAgIHBmcz0gJnNvY2tldF9hcnJheVttX3Bvcy5tX2luZGV4XTsK KyAgICBpZiAocGZzLT5tX2xvY2suaXNfcG9wdWxhdGVkKCkpCisgICAgeworICAgICAgbWFrZV9y b3cocGZzKTsKKyAgICAgIG1fbmV4dF9wb3Muc2V0X2FmdGVyKCZtX3Bvcyk7CisgICAgICByZXR1 cm4gMDsKKyAgICB9CisgIH0KKworICByZXR1cm4gSEFfRVJSX0VORF9PRl9GSUxFOworfQorCitp bnQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2U6OnJuZF9wb3MoY29uc3Qgdm9pZCAq cG9zKQoreworICBQRlNfc29ja2V0ICpwZnM7CisKKyAgc2V0X3Bvc2l0aW9uKHBvcyk7CisgIERC VUdfQVNTRVJUKG1fcG9zLm1faW5kZXggPCBzb2NrZXRfbWF4KTsKKyAgcGZzPSAmc29ja2V0X2Fy cmF5W21fcG9zLm1faW5kZXhdOworCisgIGlmICghIHBmcy0+bV9sb2NrLmlzX3BvcHVsYXRlZCgp KQorICAgIHJldHVybiBIQV9FUlJfUkVDT1JEX0RFTEVURUQ7CisKKyAgbWFrZV9yb3cocGZzKTsK KyAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgdGFibGVfc29ja2V0X3N1bW1hcnlfYnlfaW5zdGFuY2U6 Om1ha2Vfcm93KFBGU19zb2NrZXQgKnBmcykKK3sKKyAgcGZzX2xvY2sgbG9jazsKKyAgUEZTX3Nv Y2tldF9jbGFzcyAqc2FmZV9jbGFzczsKKworICBtX3Jvd19leGlzdHM9IGZhbHNlOworCisgIC8q IFByb3RlY3QgdGhpcyByZWFkZXIgYWdhaW5zdCBhIHNvY2tldCBkZWxldGUgKi8KKyAgcGZzLT5t X2xvY2suYmVnaW5fb3B0aW1pc3RpY19sb2NrKCZsb2NrKTsKKworICBzYWZlX2NsYXNzPSBzYW5p dGl6ZV9zb2NrZXRfY2xhc3MocGZzLT5tX2NsYXNzKTsKKyAgaWYgKHVubGlrZWx5KHNhZmVfY2xh c3MgPT0gTlVMTCkpCisgICAgcmV0dXJuOworCisgIG1fcm93Lm1fZXZlbnRfbmFtZS5tYWtlX3Jv dyhzYWZlX2NsYXNzKTsKKyAgbV9yb3cubV9pZGVudGl0eT0gcGZzLT5tX2lkZW50aXR5OworCisg IHRpbWVfbm9ybWFsaXplciAqbm9ybWFsaXplcj0gdGltZV9ub3JtYWxpemVyOjpnZXQod2FpdF90 aW1lcik7CisKKyAgLyogQ29sbGVjdCB0aW1lciBhbmQgYnl0ZSBjb3VudCBzdGF0cyAqLworICBt X3Jvdy5tX2lvX3N0YXQuc2V0KG5vcm1hbGl6ZXIsICZwZnMtPm1fc29ja2V0X3N0YXQubV9pb19z dGF0KTsKKworICBpZiAoIXBmcy0+bV9sb2NrLmVuZF9vcHRpbWlzdGljX2xvY2soJmxvY2spKQor ICAgIHJldHVybjsKKworICBtX3Jvd19leGlzdHM9IHRydWU7Cit9CisKK2ludCB0YWJsZV9zb2Nr ZXRfc3VtbWFyeV9ieV9pbnN0YW5jZTo6cmVhZF9yb3dfdmFsdWVzKFRBQkxFICp0YWJsZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkICoqZmllbGRz LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZWFkX2Fs bCkKK3sKKyAgRmllbGQgKmY7CisKKyAgaWYgKHVubGlrZWx5KCFtX3Jvd19leGlzdHMpKQorICAg IHJldHVybiBIQV9FUlJfUkVDT1JEX0RFTEVURUQ7CisKKyAgLyogU2V0IHRoZSBudWxsIGJpdHMg Ki8KKyAgREJVR19BU1NFUlQodGFibGUtPnMtPm51bGxfYnl0ZXMgPT0gMCk7CisKKyAgZm9yICg7 IChmPSAqZmllbGRzKSA7IGZpZWxkcysrKQorICB7CisgICAgaWYgKHJlYWRfYWxsIHx8IGJpdG1h cF9pc19zZXQodGFibGUtPnJlYWRfc2V0LCBmLT5maWVsZF9pbmRleCkpCisgICAgeworICAgICAg c3dpdGNoKGYtPmZpZWxkX2luZGV4KQorICAgICAgeworICAgICAgY2FzZSAgMDogLyogRVZFTlRf TkFNRSAqLworICAgICAgICBtX3Jvdy5tX2V2ZW50X25hbWUuc2V0X2ZpZWxkKGYpOworICAgICAg ICBicmVhazsKKyAgICAgIGNhc2UgIDE6IC8qIE9CSkVDVF9JTlNUQU5DRSAqLworICAgICAgICBz ZXRfZmllbGRfdWxvbmdsb25nKGYsICh1bG9uZ2xvbmcpbV9yb3cubV9pZGVudGl0eSk7CisgICAg ICAgIGJyZWFrOworCisgICAgICBjYXNlICAyOi8qIENPVU5UX1NUQVIgKi8KKyAgICAgICAgc2V0 X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9hbGwubV93YWl0cy5tX2NvdW50 KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICAzOi8qIFNVTV9USU1FUl9XQUlUICovCisg ICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fYWxsLm1fd2Fp dHMubV9zdW0pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgIDQ6IC8qIE1JTl9USU1FUl9X QUlUICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1f YWxsLm1fd2FpdHMubV9taW4pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgIDU6IC8qIEFW R19USU1FUl9XQUlUICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9p b19zdGF0Lm1fYWxsLm1fd2FpdHMubV9hdmcpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug IDY6IC8qIE1BWF9USU1FUl9XQUlUICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwg bV9yb3cubV9pb19zdGF0Lm1fYWxsLm1fd2FpdHMubV9tYXgpOworICAgICAgICBicmVhazsKKwor ICAgICAgY2FzZSAgNzogLyogQ09VTlRfUkVBRCAqLworICAgICAgICBzZXRfZmllbGRfdWxvbmds b25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX3JlYWQubV93YWl0cy5tX2NvdW50KTsKKyAgICAgICAg YnJlYWs7CisgICAgICBjYXNlICA4OiAvKiBTVU1fVElNRVJfUkVBRCAqLworICAgICAgICBzZXRf ZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1faW9fc3RhdC5tX3JlYWQubV93YWl0cy5tX3N1bSk7 CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAgOTogLyogTUlOX1RJTUVSX1JFQUQgKi8KKyAg ICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9yZWFkLm1fd2Fp dHMubV9taW4pOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMTA6IC8qIEFWR19USU1FUl9S RUFEICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1f cmVhZC5tX3dhaXRzLm1fYXZnKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDExOiAvKiBN QVhfVElNRVJfUkVBRCAqLworICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1fcm93Lm1f aW9fc3RhdC5tX3JlYWQubV93YWl0cy5tX21heCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz ZSAxMjogLyogU1VNX05VTUJFUl9PRl9CWVRFU19SRUFEICovCisgICAgICAgIHNldF9maWVsZF91 bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fcmVhZC5tX2J5dGVzKTsKKyAgICAgICAgYnJl YWs7CisKKyAgICAgIGNhc2UgMTM6IC8qIENPVU5UX1dSSVRFICovCisgICAgICAgIHNldF9maWVs ZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUubV93YWl0cy5tX2NvdW50KTsK KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE0OiAvKiBTVU1fVElNRVJfV1JJVEUgKi8KKyAg ICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV93cml0ZS5tX3dh aXRzLm1fc3VtKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE1OiAvKiBNSU5fVElNRVJf V1JJVEUgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQu bV93cml0ZS5tX3dhaXRzLm1fbWluKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE2OiAv KiBBVkdfVElNRVJfV1JJVEUgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25nbG9uZyhmLCBtX3Jv dy5tX2lvX3N0YXQubV93cml0ZS5tX3dhaXRzLm1fYXZnKTsKKyAgICAgICAgYnJlYWs7CisgICAg ICBjYXNlIDE3OiAvKiBNQVhfVElNRVJfV1JJVEUgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25n bG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV93cml0ZS5tX3dhaXRzLm1fbWF4KTsKKyAgICAgICAg YnJlYWs7CisgICAgICBjYXNlIDE4OiAvKiBTVU1fTlVNQkVSX09GX0JZVEVTX1dSSVRFICovCisg ICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fd3JpdGUubV9i eXRlcyk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIDE5OiAvKiBDT1VOVF9NSVNDICov CisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fbWlzYy5t X3dhaXRzLm1fY291bnQpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjA6IC8qIFNVTV9U SU1FUl9NSVNDICovCisgICAgICAgIHNldF9maWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19z dGF0Lm1fbWlzYy5tX3dhaXRzLm1fc3VtKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDIx OiAvKiBNSU5fVElNRVJfTUlTQyAqLworICAgICAgICBzZXRfZmllbGRfdWxvbmdsb25nKGYsIG1f cm93Lm1faW9fc3RhdC5tX21pc2MubV93YWl0cy5tX21pbik7CisgICAgICAgIGJyZWFrOworICAg ICAgY2FzZSAyMjogLyogQVZHX1RJTUVSX01JU0MgKi8KKyAgICAgICAgc2V0X2ZpZWxkX3Vsb25n bG9uZyhmLCBtX3Jvdy5tX2lvX3N0YXQubV9taXNjLm1fd2FpdHMubV9hdmcpOworICAgICAgICBi cmVhazsKKyAgICAgIGNhc2UgMjM6IC8qIE1BWF9USU1FUl9NSVNDICovCisgICAgICAgIHNldF9m aWVsZF91bG9uZ2xvbmcoZiwgbV9yb3cubV9pb19zdGF0Lm1fbWlzYy5tX3dhaXRzLm1fbWF4KTsK KyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBEQlVHX0FTU0VSVChmYWxz ZSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiAwOwor fQorCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tldF9z dW1tYXJ5X2J5X2luc3RhbmNlLmgnCi0tLSBhL3N0b3JhZ2UvcGVyZnNjaGVtYS90YWJsZV9zb2Nr ZXRfc3VtbWFyeV9ieV9pbnN0YW5jZS5oCTIwMTEtMDItMjUgMjE6MTI6NDMgKzAwMDAKKysrIGIv c3RvcmFnZS9wZXJmc2NoZW1hL3RhYmxlX3NvY2tldF9zdW1tYXJ5X2J5X2luc3RhbmNlLmgJMjAx MS0xMC0wNiAxNzoxNTo0NyArMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoYykg MjAwOCwgMjAxMCwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKy8qIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZm aWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxlc3MgZm9yIHB1c2ggZW1haWxzKS4=