I did some REAL cleaning on this port. The files dir is now organized so the port can be maintained: previously there were multifile patches and several patches for the same file, now it is a lot cleaner. I also merged a memory leak fix and some fixes from spice3f5-spaghetti (before it became spiceng). I activated MFB and removed GNUREADLINE support because: 1) We were not building it and the patches made it difficult to maintain the filesdir. 2) Activating it showed it was broken. I also made the port respect CFLAGS and CC. I added documentation and I also renamed the port to Spice3 to match the Berkeley release notes and the program name. Fix: ________________________________________________________________________ Want to chat instantly with your online friends? Get the FREE Yahoo! Messenger http://uk.messenger.yahoo.com/ --0-60008898-1058507623=:26346 Content-Type: application/octet-stream; name=port-spice Content-Transfer-Encoding: base64 Content-Description: port-spice Content-Disposition: attachment; filename=port-spice IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxl LCByZW1vdmUgYW55dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhl biB1bnBhY2sgaXQgYnkgZW50ZXJpbmcgInNoIGZpbGUiLiAgTm90ZSwgaXQg bWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBmaWxlcyBhbmQgZGlyZWN0b3Jp ZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBkZWZhdWx0IHBl cm1pc3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJc3Bp Y2UKIwlzcGljZS9NYWtlZmlsZQojCXNwaWNlL2Rpc3RpbmZvCiMJc3BpY2Uv cGtnLWRlc2NyCiMJc3BpY2UvcGtnLXBsaXN0CiMJc3BpY2UvZmlsZXMKIwlz cGljZS9maWxlcy9GcmVlQlNECiMJc3BpY2UvZmlsZXMvTWFrZWZpbGUKIwlz cGljZS9maWxlcy9wYXRjaC1zcDNmNQojCXNwaWNlL2ZpbGVzL3BhdGNoLXNy Y19saWJfZnRlX2RvcGxvdF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xp Yl9mdGVfeDExX2MKIwlzcGljZS9maWxlcy9wYXRjaC1sZXZlbDEKIwlzcGlj ZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9jcGl0Zl9jCiMJc3BpY2UvZmls ZXMvcGF0Y2gtc3JjX2xpYl9mdGVfZGltZW5zX2MKIwlzcGljZS9maWxlcy9w YXRjaC1zcmNfbGliX2Z0ZV9hc3BpY2VfYwojCXNwaWNlL2ZpbGVzL3BhdGNo LXNyY19saWJfZnRlX2dyYWZfYwojCXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19p bmNsdWRlX3BhdGNobGV2X2gKIwlzcGljZS9maWxlcy9wYXRjaC1sZXZlbDIK IwlzcGljZS9maWxlcy9wYXRjaC11dGlsX3NrZWxldG9uX21ha2VfZGVmX2Jk CiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfbWlzY2NvbXNfYwoj CXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2dyaWRfYwojCXNwaWNl L2ZpbGVzL3BhdGNoLXNyY19pbmNsdWRlX21pc2NfaAojCXNwaWNlL2ZpbGVz L3BhdGNoLXNyY19saWJfZnRlX2RldmljZV9jCiMJc3BpY2UvZmlsZXMvcGF0 Y2gtc3JjX2Jpbl9zY29udmVydF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3Jj X2xpYl9mdGVfaW5wX2MKIwlzcGljZS9maWxlcy9wYXRjaC11dGlsX2J1aWxk CiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfcmVzb3VyY2VfYwoj CXNwaWNlL2ZpbGVzL3BhdGNoLXBzbW9kZWwKIwlzcGljZS9maWxlcy9wYXRj aC1zcmNfbGliX2hscF9yZWFkaGVscF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gt c3JjX2luY2x1ZGVfb3NfYnNkX2gKIwlzcGljZS9maWxlcy9wYXRjaC1zcmNf bGliX2lucF9pbnBmaW5kbF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xp Yl9ja3RfZGN0cmN1cnZfYwojCXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJf ZnRlX3Bvc3Rjb21zX2MKIwlzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0 ZV92ZWN0b3JzX2MKIwlzcGljZS9maWxlcy9wYXRjaC1jb25mX2RlZmF1bHRz CiMJc3BpY2Uvc2NyaXB0cwojCXNwaWNlL3NjcmlwdHMvY29uZmlndXJlCiMK ZWNobyBjIC0gc3BpY2UKbWtkaXIgLXAgc3BpY2UgPiAvZGV2L251bGwgMj4m MQplY2hvIHggLSBzcGljZS9NYWtlZmlsZQpzZWQgJ3MvXlgvLycgPnNwaWNl L01ha2VmaWxlIDw8ICdFTkQtb2Ytc3BpY2UvTWFrZWZpbGUnClgjIE5ldyBw b3J0cyBjb2xsZWN0aW9uIG1ha2VmaWxlIGZvcjogICAgc3BpY2UzClgjIERh dGUgY3JlYXRlZDogICAgICAgICAyNiBNYXIgOTYKWCMgV2hvbTogICAgICAg ICAgICAgICAgIEp1bGlhbiBKZW5raW5zIChvcmlnKQpYIwpYIyAkRnJlZUJT RDogcG9ydHMvY2FkL3NwaWNlL01ha2VmaWxlLHYgMS4yMyAyMDAzLzA2LzMw IDE5OjQ3OjE4IG1haG8gRXhwICQKWCMKWApYUE9SVE5BTUU9CXNwaWNlMwpY UE9SVFZFUlNJT049CTNmNS4yClhDQVRFR09SSUVTPQljYWQKWE1BU1RFUl9T SVRFUz0JZnRwOi8vaWMuZWVjcy5iZXJrZWxleS5lZHUvcHViL1NwaWNlMy86 c291cmNlcwlcClgJCWZ0cDovL2ljLmVlY3MuYmVya2VsZXkuZWR1L3B1Yi9T cGljZTMvdW0uM2YzLnBzLzpkb2NzClhFWFRSQUNUX1NVRlg9CS50YXIuWgpY RElTVEZJTEVTPQlzcDNmNC5raXQke0VYVFJBQ1RfU1VGWH06c291cmNlcwlc ClgJCWNwLnBzOmRvY3MgdG9jLnBzOmRvY3MgZG9jLnBzOmRvY3MKWERJU1Rf U1VCRElSPQlzcGljZTMKWEVYVFJBQ1RfT05MWT0Jc3AzZjQua2l0JHtFWFRS QUNUX1NVRlh9ClgKWE1BSU5UQUlORVI9CW1haG9ARnJlZUJTRC5vcmcKWENP TU1FTlQ9CUEgZ2VuZXJhbC1wdXJwb3NlIGNpcmN1aXQgc2ltdWxhdGlvbiBw cm9ncmFtClgKWFVTRV9YTElCPQl5ZXMKWFVTRV9SRUlOUExBQ0U9CXllcwpY Tk9fV1JLU1VCRElSPQl5ZXMKWE1BTjE9CQlzY29udmVydC4xIG51dG1lZy4x IHNwaWNlLjEKWE1BTjM9CQltZmIuMwpYTUFONT0JCW1mYmNhcC41ClhNTElO S1M9CQlzcGljZS4xIHNwaWNlMy4xClgKWHBvc3QtY29uZmlndXJlOgpYCUAk e1JFSU5QTEFDRV9DTUR9IC1lICdzK0BDQ0ArJHtDQ30rIDsgcytAQ0ZMQUdT QCske0NGTEFHU30rIDsgXApYCXMrQFgxMUJBU0VAKyR7WDExQkFTRX0rOycg XApYCSR7V1JLU1JDfS9jb25mL0ZyZWVCU0QKWApYcG9zdC1pbnN0YWxsOgpY LmlmICFkZWZpbmVkKE5PUE9SVERPQ1MpClgJJHtNS0RJUn0gJHtET0NTRElS fQpYCSR7Q0FUfSAke0RJU1RESVJ9LyR7RElTVF9TVUJESVJ9LyoucHMgPiAk e0RPQ1NESVJ9L3NwaWNlM2YzLnBzClgJJHtHWklQX0NNRH0gJHtET0NTRElS fS8qLnBzClgJJHtNS0RJUn0gJHtFWEFNUExFU0RJUn0KWAkke0lOU1RBTExf REFUQX0gJHtXUktTUkN9L2V4YW1wbGVzLyouY2lyICR7RVhBTVBMRVNESVJ9 ClguZW5kaWYKWApYLmluY2x1ZGUgPGJzZC5wb3J0Lm1rPgpFTkQtb2Ytc3Bp Y2UvTWFrZWZpbGUKZWNobyB4IC0gc3BpY2UvZGlzdGluZm8Kc2VkICdzL15Y Ly8nID5zcGljZS9kaXN0aW5mbyA8PCAnRU5ELW9mLXNwaWNlL2Rpc3RpbmZv JwpYTUQ1IChzcGljZTMvc3AzZjQua2l0LnRhci5aKSA9IGQ1NWViMDhhN2Y1 MjMyNDhiMWI1MDkwOTJhNDQ0YWViClhNRDUgKHNwaWNlMy9jcC5wcykgPSBl ZTkwNjVkZTZlMTFlODJmYTNmZTM0MzE4YzIzNzNmYwpYTUQ1IChzcGljZTMv dG9jLnBzKSA9IGY4NGNjZGQ5Y2E0MjNlMTEyZWM2ODEyMWE4NmMwMzJjClhN RDUgKHNwaWNlMy9kb2MucHMpID0gYmNlYTQxN2YzYmRlODU0M2Y0Mjg3ODVi ZmI1YTRkNjIKRU5ELW9mLXNwaWNlL2Rpc3RpbmZvCmVjaG8geCAtIHNwaWNl L3BrZy1kZXNjcgpzZWQgJ3MvXlgvLycgPnNwaWNlL3BrZy1kZXNjciA8PCAn RU5ELW9mLXNwaWNlL3BrZy1kZXNjcicKWFNQSUNFIGlzIGEgZ2VuZXJhbC1w dXJwb3NlIGNpcmN1aXQgc2ltdWxhdGlvbiBwcm9ncmFtIGZvciBub25saW5l YXIgREMsClhub25saW5lYXIgdHJhbnNpZW50LCBhbmQgbGluZWFyIEFDIGFu YWx5c2VzLiBDaXJjdWl0cyBtYXkgY29udGFpbiByZXNpc3RvcnMsClhjYXBh Y2l0b3JzLCBpbmR1Y3RvcnMsIG11dHVhbCBpbmR1Y3RvcnMsIGluZGVwZW5k ZW50IHZvbHRhZ2UgYW5kIGN1cnJlbnQKWHNvdXJjZXMsIGZvdXIgdHlwZXMg b2YgZGVwZW5kZW50IHNvdXJjZXMsIGxvc3NsZXNzIGFuZCBsb3NzeSB0cmFu c21pc3Npb24KWGxpbmVzICh0d28gc2VwYXJhdGUgaW1wbGVtZW50YXRpb25z KSwgc3dpdGNoZXMsIHVuaWZvcm0gZGlzdHJpYnV0ZWQgUkMKWGxpbmVzLCBh bmQgdGhlIGZpdmUgbW9zdCBjb21tb24gc2VtaWNvbmR1Y3RvciBkZXZpY2Vz OiBkaW9kZXMsIEJKVHMsIEpGRVRzLApYTUVTRkVUcywgYW5kIE1PU0ZFVHMu ClgKWAlGcm9tIHRoZSBTUElDRTMgVmVyc2lvbjNmMyBVc2VyJ3MgTWFudWFs LgpYCVRoaXMgaXMgYXZhaWxibGUgYXMgYSBwb3N0c2NyaXB0IGRvY3VtZW50 IGZyb206ClgJCWZ0cDovL2ljLmVlY3MuYmVya2VsZXkuZWR1L3B1Yi9TcGlj ZTMvdW0uM2YzLnBzClgJb3IgeW91IGNhbiByZWFkIHRoZSBvbmxpbmUgZG9j dW1lbnRhdGlvbiBvbiB0aGUgaG9tZXBhZ2UuClgKWFdXVzogaHR0cDovL2lu Zm9wYWQuZWVjcy5iZXJrZWxleS5lZHUvfmljZGVzaWduL1NQSUNFLwpYClhK dWxpYW4gSmVua2lucwpYa2F2ZW1hbkBtYWduYS5jb20uYXUKRU5ELW9mLXNw aWNlL3BrZy1kZXNjcgplY2hvIHggLSBzcGljZS9wa2ctcGxpc3QKc2VkICdz L15YLy8nID5zcGljZS9wa2ctcGxpc3QgPDwgJ0VORC1vZi1zcGljZS9wa2ct cGxpc3QnClhiaW4vc3BpY2UzClhiaW4vbnV0bWVnClhiaW4vc2NvbnZlcnQK WGJpbi9oZWxwClhiaW4vcHJvYzJtb2QKWGJpbi9tdWx0aWRlYwpYc2hhcmUv c3BpY2UzL2hlbHBkaXIvc3BpY2UudHh0ClhzaGFyZS9zcGljZTMvaGVscGRp ci9zcGljZS5pZHgKWHNoYXJlL3NwaWNlMy9zY3JpcHRzL3NldHBsb3QKWHNo YXJlL3NwaWNlMy9zY3JpcHRzL3NwaW5pdApYc2hhcmUvc3BpY2UzL21mYmNh cApYc2hhcmUvc3BpY2UzL25ld3MKWEBkaXJybSBzaGFyZS9zcGljZTMvaGVs cGRpcgpYQGRpcnJtIHNoYXJlL3NwaWNlMy9zY3JpcHRzClhAZGlycm0gc2hh cmUvc3BpY2UzClglJVBPUlRET0NTJSUlJURPQ1NESVIlJS9zcGljZTNmMy5w cy5negpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2JqdG5vaXNlLmNp cgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2JzaW0xdHN0LmNpcgpY JSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2JzaW0ydHN0LmNpcgpYJSVQ T1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2RpZmZwYWlyLmNpcgpYJSVQT1JU RE9DUyUlJSVFWEFNUExFU0RJUiUlL2Rpb2Rpc3RvLmNpcgpYJSVQT1JURE9D UyUlJSVFWEFNUExFU0RJUiUlL2x0cmFfMS5jaXIKWCUlUE9SVERPQ1MlJSUl RVhBTVBMRVNESVIlJS9sdHJhXzIuY2lyClglJVBPUlRET0NTJSUlJUVYQU1Q TEVTRElSJSUvbHRyYV8zLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJ UiUlL21peGRpc3RvLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUl L21vczZpbnYuY2lyClglJVBPUlRET0NTJSUlJUVYQU1QTEVTRElSJSUvbW9z YW1wMi5jaXIKWCUlUE9SVERPQ1MlJSUlRVhBTVBMRVNESVIlJS9tb3NtZW0u Y2lyClglJVBPUlRET0NTJSUlJUVYQU1QTEVTRElSJSUvcHoyLmNpcgpYJSVQ T1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL3B6dC5jaXIKWCUlUE9SVERPQ1Ml JSUlRVhBTVBMRVNESVIlJS9yYy5jaXIKWCUlUE9SVERPQ1MlJSUlRVhBTVBM RVNESVIlJS9yY2EzMDQwLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJ UiUlL3Jlc25vaXNlLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUl L3J0bGludi5jaXIKWCUlUE9SVERPQ1MlJSUlRVhBTVBMRVNESVIlJS9zY2ht aXR0LmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL3NpbXBsZXB6 LmNpcgpYJSVQT1JURE9DUyUlQGRpcnJtIHNoYXJlL2V4YW1wbGVzL3NwaWNl MwpFTkQtb2Ytc3BpY2UvcGtnLXBsaXN0CmVjaG8gYyAtIHNwaWNlL2ZpbGVz Cm1rZGlyIC1wIHNwaWNlL2ZpbGVzID4gL2Rldi9udWxsIDI+JjEKZWNobyB4 IC0gc3BpY2UvZmlsZXMvRnJlZUJTRApzZWQgJ3MvXlgvLycgPnNwaWNlL2Zp bGVzL0ZyZWVCU0QgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9GcmVlQlNEJwpY IyBGcmVlQlNEIGNvbmZpZyBleGNlcHRpb24gZmlsZQpYClhNQUtFCQk9IC91 c3IvYmluL21ha2UKWElOVEVSRkFDRV9PUFRTCT0gLURXQU5UX01GQiAtRFdB TlRfWDExClhDQwkJPSBAQ0NAClhDQ19PUFQJCSs9IEBDRkxBR1NAClhDQ19P UFRfU0FGRQkrPSAtTzIgLWZuby1zdHJlbmd0aC1yZWR1Y2UgLXBpcGUKWExE RkxBR1MJCSs9IC1MQFgxMUJBU0VAL2xpYiAtbG0gLWx0ZXJtY2FwClhTWVNf Q0ZMQUdTCT0gLURic2QKRU5ELW9mLXNwaWNlL2ZpbGVzL0ZyZWVCU0QKZWNo byB4IC0gc3BpY2UvZmlsZXMvTWFrZWZpbGUKc2VkICdzL15YLy8nID5zcGlj ZS9maWxlcy9NYWtlZmlsZSA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL01ha2Vm aWxlJwpYClhhbGw6ClgJdXRpbC9idWlsZCBGcmVlQlNEIGRlZmF1bHQKWApY aW5zdGFsbDoKWAl1dGlsL2J1aWxkIEZyZWVCU0QgaW5zdGFsbCAKWAljaG1v ZCBhK3J4ICR7UFJFRklYfS9iaW4vc3BpY2UzICR7UFJFRklYfS9iaW4vbnV0 bWVnIFwKWAkgICR7UFJFRklYfS9iaW4vc2NvbnZlcnQgJHtQUkVGSVh9L2Jp bi9oZWxwCVwKWAkgICR7UFJFRklYfS9iaW4vcHJvYzJtb2QgJHtQUkVGSVh9 L2Jpbi9tdWx0aWRlYwpYCXN0cmlwICR7UFJFRklYfS9iaW4vc3BpY2UzICR7 UFJFRklYfS9iaW4vbnV0bWVnCVwKWAkgICR7UFJFRklYfS9iaW4vc2NvbnZl cnQgJHtQUkVGSVh9L2Jpbi9oZWxwIFwKWAkgICR7UFJFRklYfS9iaW4vcHJv YzJtb2QgJHtQUkVGSVh9L2Jpbi9tdWx0aWRlYwpYCWNobW9kIC1SIGErclgg JHtQUkVGSVh9L3NoYXJlL3NwaWNlMwpYCWluc3RhbGwgLWMgLW0gNjQ0IC1v IGJpbiAtZyBiaW4gbWFuL21hbjUvbWZiY2FwLjUgJHtQUkVGSVh9L21hbi9t YW41L21mYmNhcC41ClgJaW5zdGFsbCAtYyAtbSA2NDQgLW8gYmluIC1nIGJp biBtYW4vbWFuMS9zY29udmVydC4xICR7UFJFRklYfS9tYW4vbWFuMS9zY29u dmVydC4xClgJaW5zdGFsbCAtYyAtbSA2NDQgLW8gYmluIC1nIGJpbiBtYW4v bWFuMS9udXRtZWcuMSAke1BSRUZJWH0vbWFuL21hbjEvbnV0bWVnLjEKWAlp bnN0YWxsIC1jIC1tIDY0NCAtbyBiaW4gLWcgYmluIG1hbi9tYW4xL3NwaWNl LjEgJHtQUkVGSVh9L21hbi9tYW4xL3NwaWNlLjEKWAlpbnN0YWxsIC1jIC1t IDY0NCAtbyBiaW4gLWcgYmluIG1hbi9tYW4zL21mYi4zICR7UFJFRklYfS9t YW4vbWFuMy9tZmIuMwpFTkQtb2Ytc3BpY2UvZmlsZXMvTWFrZWZpbGUKZWNo byB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3AzZjUKc2VkICdzL15YLy8nID5z cGljZS9maWxlcy9wYXRjaC1zcDNmNSA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVz L3BhdGNoLXNwM2Y1JwpYVGhlc2UgYXJlIG9mZmljaWFsIEJlcmtlbGV5IGZp eGVzIGZvciBzcDNmNApYKioqIHNyYy9saWIvZnRlL2dyaWQuYy5vcmlnCVN1 biBBcHIgMjUgMTQ6NTM6MTEgMTk5MwpYLS0tIHNyYy9saWIvZnRlL2dyaWQu YwlTYXQgSmFuIDI5IDEwOjQ3OjU5IDE5OTQKWCoqKioqKioqKioqKioqKgpY KioqIDE3LDIyICoqKioKWC0tLSAxNywyMyAtLS0tClggICNpbmNsdWRlICJz dWZmaXguaCIKWCAgClggICNkZWZpbmUgUkFEX1RPX0RFRwkoMTgwLjAgLyBN X1BJKQpYKyAjZGVmaW5lIExBQkVMX0NIQVJTCTIwClggIApYICBzdGF0aWMg ZG91YmxlICpsaW5ncmlkKCksICpsb2dncmlkKCk7ClggIHN0YXRpYyB2b2lk IHBvbGFyZ3JpZCgpLCBzbWl0aGdyaWQoKTsKWCoqKioqKioqKioqKioqKgpY KioqIDIyNSwyMzEgKioqKgpYICAgICAgaW50IG1heDsKWCAgICAgIHN0YXRp YyBkb3VibGUgZGRbMl07ClggICAgICBpbnQgbXVsdCA9IDE7ClghICAgICBj aGFyIGJ1ZlsxNl0sICpzOwpYICAgICAgaW50IHNsaW0sIGRpZ2l0czsKWCAg ClggICAgICBpZiAoYXhpcyA9PSB5X2F4aXMgJiYgZ3JhcGgtPmdyaWQueXNp emVkKSB7ClgtLS0gMjI2LDIzMiAtLS0tClggICAgICBpbnQgbWF4OwpYICAg ICAgc3RhdGljIGRvdWJsZSBkZFsyXTsKWCAgICAgIGludCBtdWx0ID0gMTsK WCEgICAgIGNoYXIgYnVmW0xBQkVMX0NIQVJTXSwgKnM7ClggICAgICBpbnQg c2xpbSwgZGlnaXRzOwpYICAKWCAgICAgIGlmIChheGlzID09IHlfYXhpcyAm JiBncmFwaC0+Z3JpZC55c2l6ZWQpIHsKWCoqKioqKioqKioqKioqKgpYKioq IDQ3Nyw0ODMgKioqKgpYICBkcmF3bGluZ3JpZChncmFwaCwgdW5pdHMsIHNw YWNpbmcsIG5zcCwgZHN0LCBsbXQsIGhtdCwgb25lZGVjLCBtdWx0LCBtYWcs ClggICAgICBkaWdpdHMsIGF4aXMpClggICAgICBHUkFQSCAqZ3JhcGg7Clgh ICAgICBjaGFyIHVuaXRzWzE2XTsKWCAgICAgIGJvb2wgb25lZGVjOwpYICAg ICAgaW50IG5zcCwgc3BhY2luZywgbXVsdDsKWCAgICAgIGRvdWJsZSBobXQs IGxtdCwgZHN0OwpYLS0tIDQ3OCw0ODQgLS0tLQpYICBkcmF3bGluZ3JpZChn cmFwaCwgdW5pdHMsIHNwYWNpbmcsIG5zcCwgZHN0LCBsbXQsIGhtdCwgb25l ZGVjLCBtdWx0LCBtYWcsClggICAgICBkaWdpdHMsIGF4aXMpClggICAgICBH UkFQSCAqZ3JhcGg7ClghICAgICBjaGFyICp1bml0czsKWCAgICAgIGJvb2wg b25lZGVjOwpYICAgICAgaW50IG5zcCwgc3BhY2luZywgbXVsdDsKWCAgICAg IGRvdWJsZSBobXQsIGxtdCwgZHN0OwpYKioqKioqKioqKioqKioqClgqKiog NDg4LDQ5NCAqKioqClggIApYICAgICAgaW50IGksIGo7ClggICAgICBkb3Vi bGUgbSwgc3RlcDsKWCEgICAgIGNoYXIgYnVmWzE2XTsKWCAgClggICAgICAv KiBpIGNvdW50cyBob3cgbWFueSBwaXhlbHMgd2UgaGF2ZSBkcmF3biwgYW5k IGogY291bnRzIHdoaWNoIHVuaXQKWCAgICAgICAqIHdlIGFyZSBhdC4KWC0t LSA0ODksNDk1IC0tLS0KWCAgClggICAgICBpbnQgaSwgajsKWCAgICAgIGRv dWJsZSBtLCBzdGVwOwpYISAgICAgY2hhciBidWZbTEFCRUxfQ0hBUlNdOwpY ICAKWCAgICAgIC8qIGkgY291bnRzIGhvdyBtYW55IHBpeGVscyB3ZSBoYXZl IGRyYXduLCBhbmQgaiBjb3VudHMgd2hpY2ggdW5pdApYICAgICAgICogd2Ug YXJlIGF0LgpYKioqKioqKioqKioqKioqClgqKiogNTY3LDU3MyAqKioqClgg ICAgICBkb3VibGUgazsKWCAgICAgIGRvdWJsZSBkZWNzOwpYICAgICAgZG91 YmxlIG1hZywgZ2FpbjsKWCEgICAgIGNoYXIgYnVmWzMyXSwgKnM7ClggIApY ICAgICAgaWYgKGF4aXMgPT0geF9heGlzICYmIGdyYXBoLT5ncmlkLnhzaXpl ZCkgewpYICAgICAgICBsbXQgPSBncmFwaC0+Z3JpZC54YXhpcy5sb2cubG10 OwpYLS0tIDU2OCw1NzQgLS0tLQpYICAgICAgZG91YmxlIGs7ClggICAgICBk b3VibGUgZGVjczsKWCAgICAgIGRvdWJsZSBtYWcsIGdhaW47ClghICAgICBj aGFyIGJ1ZltMQUJFTF9DSEFSU10sICpzOwpYICAKWCAgICAgIGlmIChheGlz ID09IHhfYXhpcyAmJiBncmFwaC0+Z3JpZC54c2l6ZWQpIHsKWCAgICAgICAg bG10ID0gZ3JhcGgtPmdyaWQueGF4aXMubG9nLmxtdDsKWCoqKioqKioqKioq KioqKgpYKioqIDY3MSw2NzcgKioqKgpYICB7ClggICAgICBpbnQgaSwgaiwg aywgbCwgbTsKWCAgICAgIGRvdWJsZSB0OwpYISAgICAgY2hhciBidWZbMTZd OwpYICAKWCAgICAgIC8qIE5vdyBwbG90IGV2ZXJ5IHBwJ3RoIGRlY2FkZSBs aW5lLCB3aXRoIHN1YnMgbGluZXMgYmV0d2VlbiB0aGVtLiAqLwpYICAgICAg aWYgKHN1YnMgPiAxKQpYLS0tIDY3Miw2NzggLS0tLQpYICB7ClggICAgICBp bnQgaSwgaiwgaywgbCwgbTsKWCAgICAgIGRvdWJsZSB0OwpYISAgICAgY2hh ciBidWZbTEFCRUxfQ0hBUlNdOwpYICAKWCAgICAgIC8qIE5vdyBwbG90IGV2 ZXJ5IHBwJ3RoIGRlY2FkZSBsaW5lLCB3aXRoIHN1YnMgbGluZXMgYmV0d2Vl biB0aGVtLiAqLwpYICAgICAgaWYgKHN1YnMgPiAxKQpYKioqIHNyYy9saWIv ZnRlL25ld2NvbXMuYy5vcmlnCVN1biBNYXIgIDcgMTY6MzA6NTggMTk5MwpY LS0tIHNyYy9saWIvZnRlL25ld2NvbXMuYwlXZWQgRmViIDIzIDIyOjM5OjU1 IDE5OTQKWCoqKioqKioqKioqKioqKgpYKioqIDE1MSwxNTYgKioqKgpYLS0t IDE1MSwxNjAgLS0tLQpYICAJICAgIC8qIENvcHkgZnJvbSB0aGUgZmlyc3Qg Ki8KWCAgCSAgICB2bmFtZSA9IGNwX3VucXVvdGUod2wtPndsX3dvcmQpOwpY ICAJICAgIGR2ID0gdmVjX2dldCh2bmFtZSk7ClgrIAkgICAgaWYgKCFkdikg ewpYKyAJCXByaW50ZigiJyVzJyByZWZlcmVuY2UgdmVjdG9yIG5vdCBmb3Vu ZFxuIiwgdm5hbWUpOwpYKyAJCXJldHVybjsKWCsgCSAgICB9ClggIAkgICAg bnVtZGltcyA9IGR2LT52X251bWRpbXM7ClggIAkgICAgZGltcyA9IGR2LT52 X2RpbXM7ClggIAkgICAgd2wgPSB3bC0+d2xfbmV4dDsKWCoqKiBzcmMvbGli L3NwYXJzZS9zcHNtcC5jLm9yaWcJV2VkIEZlYiAgMyAxNDoyMDo1MCAxOTkz ClgtLS0gc3JjL2xpYi9zcGFyc2Uvc3BzbXAuYwlTdW4gSmFuIDMwIDExOjUz OjEwIDE5OTQKWCoqKioqKioqKioqKioqKgpYKioqIDQ4Myw0OTIgKioqKgpY ICBpbnQgQ3JlYXRlSWZNaXNzaW5nOwpYICB7ClggIE1hdHJpeFB0ciBNYXRy aXggPSAoTWF0cml4UHRyKWVNYXRyaXg7ClghIEVsZW1lbnRQdHIgRWxlbWVu dCA9IE1hdHJpeC0+Rmlyc3RJbkNvbFtDb2xdOwpYICAKWCAgLyogQmVnaW4g YFNNUGZpbmRFbHQnLiAqLwpYICAgICAgQVNTRVJUKCBJU19TUEFSU0UoIE1h dHJpeCApICk7ClggICAgICBFbGVtZW50ID0gc3BjRmluZEVsZW1lbnRJbkNv bChNYXRyaXgsICZFbGVtZW50LCBSb3csIENvbCwgQ3JlYXRlSWZNaXNzaW5n KTsKWCAgICAgIHJldHVybiAoU01QZWxlbWVudCAqKUVsZW1lbnQ7ClggIH0K WC0tLSA0ODUsNDk3IC0tLS0KWCAgaW50IENyZWF0ZUlmTWlzc2luZzsKWCAg ewpYICBNYXRyaXhQdHIgTWF0cml4ID0gKE1hdHJpeFB0cillTWF0cml4OwpY ISBFbGVtZW50UHRyIEVsZW1lbnQ7ClggIApYICAvKiBCZWdpbiBgU01QZmlu ZEVsdCcuICovClggICAgICBBU1NFUlQoIElTX1NQQVJTRSggTWF0cml4ICkg KTsKWCsgICAgIFJvdyA9IE1hdHJpeC0+RXh0VG9JbnRSb3dNYXBbUm93XTsK WCsgICAgIENvbCA9IE1hdHJpeC0+RXh0VG9JbnRDb2xNYXBbQ29sXTsKWCsg ICAgIEVsZW1lbnQgPSBNYXRyaXgtPkZpcnN0SW5Db2xbQ29sXTsKWCAgICAg IEVsZW1lbnQgPSBzcGNGaW5kRWxlbWVudEluQ29sKE1hdHJpeCwgJkVsZW1l bnQsIFJvdywgQ29sLCBDcmVhdGVJZk1pc3NpbmcpOwpYICAgICAgcmV0dXJu IChTTVBlbGVtZW50ICopRWxlbWVudDsKWCAgfQpFTkQtb2Ytc3BpY2UvZmls ZXMvcGF0Y2gtc3AzZjUKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3Jj X2xpYl9mdGVfZG9wbG90X2MKc2VkICdzL15YLy8nID5zcGljZS9maWxlcy9w YXRjaC1zcmNfbGliX2Z0ZV9kb3Bsb3RfYyA8PCAnRU5ELW9mLXNwaWNlL2Zp bGVzL3BhdGNoLXNyY19saWJfZnRlX2RvcGxvdF9jJwpYLS0tIHNyYy9saWIv ZnRlL2RvcGxvdC5jLm9yaWcJU3VuIEFwciAyNSAyMzo0ODo0NSAxOTkzClgr Kysgc3JjL2xpYi9mdGUvZG9wbG90LmMJTW9uIEZlYiAyNiAxODowMzoyMCAy MDAxClhAQCAtMTE3LDcgKzExNyw3IEBAClggICAgIH0KWCAKWCAgICAgaWYg KCFjcF9nZXR2YXIoImhjb3B5ZGV2dHlwZSIsIFZUX1NUUklORywgYnVmKSkg ewpYLSAgICAgICAgZGV2dHlwZSA9ICJwbG90NSI7ClgrICAgICAgICBkZXZ0 eXBlID0gInBvc3RzY3JpcHQiOwpYICAgICB9IGVsc2UgewpYICAgICAgICAg ZGV2dHlwZSA9IGJ1ZjsKWCAgICAgfQpYQEAgLTE0NywxMCArMTQ3LDIzIEBA ClggCSAgICAgIERldlN3aXRjaChOVUxMKTsKWCAJICAgICAgcmV0dXJuOwpY IAkgICAgfQpYKwkgICAgLyoKWCsJICAgICAqIFNpbmNlIHRoZSBoYXJkY29w eSBvdXRwdXQgcm91dGluZXMgcmVseSBvbiBjdXJyZW50Z3JhcGgKWCsJICAg ICAqIGJlaW5nIHNldCwgd2UgbmVlZCB0byBzZXQgaXQgdG8gb3VyIHRlbXBn cmFwaC4gIE5vdGUKWCsJICAgICAqIHRoYXQgRGV2U3dpdGNoKE5VTEwpIGNh dXNlcyB0aGUgQ2xvc2UoKSBmdW5jdGlvbiBvZiB0aGUKWCsJICAgICAqIGhh cmRjb3B5IGRldmljZSB0byBiZSBjYWxsZWQgd2hpY2ggd2lsbCBpbiB0dXJu ClgrCSAgICAgKiBmaW5hbGl6ZSB0aGUgb3V0cHV0LCB0aHVzIHN0aWxsIG5l ZWRzIGEgdmFsaWQKWCsJICAgICAqIGN1cnJlbnRncmFwaC4gIEZvciB0aGF0 IHJlYXNvbiwgd2UgbWF5IG9ubHkgcG9wIHRoZQpYKwkgICAgICogY29udGV4 dCBhZnRlciBjYWxsaW5nIGl0LCBhbmQgbGlrZXdpc2Ugd2Ugc2hvdWxkIG5v dApYKwkgICAgICogZGVzdHJveSB0aGUgdGVtcGdyYXBoIHVudGlsIHRoZSBo YXJkY29weSBkZXZpY2UgaGFzClgrCSAgICAgKiBiZWVuIGNsb3NlZC4KWCsJ ICAgICAqLwpYKwkgICAgUHVzaEdyYXBoQ29udGV4dCh0ZW1wZ3JhcGgpOwpY IAkgICAgZ3JfcmVzaXplKHRlbXBncmFwaCk7ClggCSAgICBncl9yZWRyYXco dGVtcGdyYXBoKTsKWC0JICAgIERlc3Ryb3lHcmFwaCh0ZW1wZ3JhcGgtPmdy YXBoaWQpOwpYIAkgICAgRGV2U3dpdGNoKE5VTEwpOwpYKwkgICAgUG9wR3Jh cGhDb250ZXh0KCk7ClgrCSAgICBEZXN0cm95R3JhcGgodGVtcGdyYXBoLT5n cmFwaGlkKTsKWCAJICAgIGZvdW5kaXQgPSAxOwpYIAl9ClggICAgIH0KRU5E LW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2RvcGxvdF9jCmVj aG8geCAtIHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX3gxMV9jCnNl ZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfeDEx X2MgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV94 MTFfYycKWC0tLSBzcmMvbGliL2Z0ZS94MTEuYy5vcmlnCVRodSBKdWwgMTcg MTA6NTU6MDAgMjAwMwpYKysrIHNyYy9saWIvZnRlL3gxMS5jCVRodSBKdWwg MTcgMTE6Mzk6MDUgMjAwMwpYQEAgLTEyMCw3ICsxMjAsMTAgQEAKWCAJLyog ImludmVydCIgd29ya3MgYmV0dGVyIHRoYW4gInhvciIgZm9yIEImVyAqLwpY IApYIAkvKiB4b3IgZ2Mgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgdGhlIHBp eGVscyB0aGF0IGFyZSB3cml0dGVuIG9uICovClgtCWdjdmFsdWVzLmZ1bmN0 aW9uID0gR1h4b3I7ClgrCS8qIGdjdmFsdWVzLmZ1bmN0aW9uID0gR1h4b3I7 ICovClgrCS8qIHRoaXMgcGF0Y2ggbWFrZXMgbGluZXMgdmlzaWJsZSBvbiB0 cnVlIGNvbG9yIGRpc3BsYXlzClgrICAgICAgICAgICBHdWVudGhlciBSb2Vo cmljaCAyMi1KYW4tOTkgKi8KWCsJZ2N2YWx1ZXMuZnVuY3Rpb24gPSBHWGlu dmVydDsKWCAJZ2N2YWx1ZXMubGluZV93aWR0aCA9IDE7ClggCWdjdmFsdWVz LmZvcmVncm91bmQgPSAxOwpYIAlnY3ZhbHVlcy5iYWNrZ3JvdW5kID0gMDsK WEBAIC0zMDIsNyArMzA1LDcgQEAKWCAJcmV0dXJuICgwKTsKWCB9ClggClgt c3RhdGljClgrLyogUE4gc3RhdGljICovClggaW5pdGxpbmVzdHlsZXMoKQpY IHsKWCAKWEBAIC0zMTgsNyArMzIxLDcgQEAKWCAJcmV0dXJuOwpYIH0KWCAK WC1zdGF0aWMKWCsvKiBQTiBzdGF0aWMgKi8KWCBpbml0Y29sb3JzKGdyYXBo KQpYICAgICBHUkFQSCAqZ3JhcGg7ClggewpYQEAgLTgwNSwxMSArODA4LDEz IEBAClggewpYIApYIAlHUkFQSCAqZ3JhcGggPSAoR1JBUEggKikgY2xpZW50 X2RhdGE7ClgrCVdpZGdldCB3OwpYIApYIAkvKiBJcGxvdHMgYXJlIGRvbmUg YXN5bmNocm9ub3VzbHkgKi8KWCAJREVWREVQKGdyYXBoKS5pc29wZW4gPSAw OwpYKwl3ID0gREVWREVQKGdyYXBoKS5zaGVsbDsKWCAJRGVzdHJveUdyYXBo KGdyYXBoLT5ncmFwaGlkKTsKWC0JWHREZXN0cm95V2lkZ2V0KERFVkRFUChn cmFwaCkuc2hlbGwpOwpYKwlYdERlc3Ryb3lXaWRnZXQodyk7ClggClggfQpY IApYQEAgLTk0NSw3ICs5NTAsOCBAQApYIAkgICAgICAgICAgICAxIDw8IENv bm5lY3Rpb25OdW1iZXIoZGlzcGxheSk7ClggClggCSAgICAgIC8qIGJsb2Nr IG9uIENvbm5lY3Rpb25OdW1iZXIgYW5kIHJlcXVlc3QtPmZwICovClgtCSAg ICAgIHNlbGVjdChuZmRzICsgMSwgJnJlYWRmZHMsIChpbnQgKikgTlVMTCwg KGludCAqKSBOVUxMLCBOVUxMKTsKWCsJICAgICAgLyogUE4gYWRkZWQgZmRf c2V0ICogY2FzdGluZyAqLwpYKwkgICAgICBzZWxlY3QobmZkcyArIDEsIChm ZF9zZXQgKikgJnJlYWRmZHMsIChmZF9zZXQgKikgTlVMTCwgKGZkX3NldCAq KSBOVUxMLCBOVUxMKTsKWCAKWCAJICAgICAgLyogaGFuZGxlIFggZXZlbnRz IGZpcnN0ICovClggCSAgICAgIGlmIChyZWFkZmRzICYgKDEgPDwgQ29ubmVj dGlvbk51bWJlcihkaXNwbGF5KSkpIHsKWEBAIC05OTgsNyArMTAwNCw4IEBA ClggClggfQpYIApYLXN0YXRpYyBYX1NjcmVlbnRvRGF0YShncmFwaCwgeCwg eSwgZngsIGZ5KQpYKy8qIFBOIHN0YXRpYyAqLyAKWCtYX1NjcmVlbnRvRGF0 YShncmFwaCwgeCwgeSwgZngsIGZ5KQpYIEdSQVBIICpncmFwaDsKWCBpbnQg eCx5OwpYIGRvdWJsZSAqZngsICpmeTsKRU5ELW9mLXNwaWNlL2ZpbGVzL3Bh dGNoLXNyY19saWJfZnRlX3gxMV9jCmVjaG8geCAtIHNwaWNlL2ZpbGVzL3Bh dGNoLWxldmVsMQpzZWQgJ3MvXlgvLycgPnNwaWNlL2ZpbGVzL3BhdGNoLWxl dmVsMSA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLWxldmVsMScKWCMg IHNwaWNlM2Y0LzNmNSBwYXRjaCBsZXZlbCAxClgjICBKdW5lIDIyLCAxOTk0 ClgjICBBbnRob255IFBhcmtlciAodG9ueXBAbXBjZS5tcS5lZHUuYXUpClgj ICBNYWNxdWFyaWUgVW5pdmVyc2l0eSwgU3lkbmV5IEF1c3RyYWxpYSAyMTA5 IApYIwpYLS0tIHNyYy9saWIvZGV2L21vczYvbW9zNml0Zi5oLm9yaWcJTW9u IFNlcCAyOCAwMzoyNToyMiAxOTkyClgrKysgc3JjL2xpYi9kZXYvbW9zNi9t b3M2aXRmLmgJVGh1IEp1bCAxNyAwMDoyMTozMyAyMDAzClhAQCAtNDYsMTMg KzQ2LDggQEAKWCAgICAgTlVMTCwgLyogTU9TNmFjTG9hZCwgWFhYICovClgg ICAgIE5VTEwsClggICAgIE1PUzZkZXN0cm95LApYLSNpZmRlZiBERUxFVEVT ClgtICAgIE1PUzZtRGVsZXRlLApYLSAgICBNT1M2ZGVsZXRlLApYLSNlbHNl IC8qIERFTEVURVMgKi8KWC0gICAgTlVMTCwKWC0gICAgTlVMTCwKWC0jZW5k aWYgLyogREVMRVRFUyAqLwpYKyAgICBOVUxMLCAvKiBERUxFVEVTICovClgr ICAgIE5VTEwsLyogREVMRVRFUyAqLwpYICAgICBNT1M2Z2V0aWMsClggICAg IE1PUzZhc2ssClggICAgIE1PUzZtQXNrLApFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtbGV2ZWwxCmVjaG8geCAtIHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19s aWJfZnRlX2NwaXRmX2MKc2VkICdzL15YLy8nID5zcGljZS9maWxlcy9wYXRj aC1zcmNfbGliX2Z0ZV9jcGl0Zl9jIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfY3BpdGZfYycKWC0tLSBzcmMvbGliL2Z0ZS9j cGl0Zi5jLm9yaWcJVHVlIE1hciAzMCAxNjo1NTo0MiAxOTkzClgrKysgc3Jj L2xpYi9mdGUvY3BpdGYuYwlUaHUgSnVsIDE3IDAwOjQ3OjUwIDIwMDMKWEBA IC0yMTIsNyArMjEyLDkgQEAKWCAJCWNwX2ludGVyYWN0aXZlID0gZmFsc2U7 ClggCQlpbnBfc3Bzb3VyY2UoZnAsIHRydWUsIGJ1Zik7ClggCQljcF9pbnRl cmFjdGl2ZSA9IHRydWU7ClgtCQkodm9pZCkgZmNsb3NlKGZwKTsKWCsgICAg ICAgICAgICAgICAgLyogdGhlIGZvbGxvd2luZyBjYXVzZWQgbWUgU0lHU0VH VidzIHNpbmNlIGlucF9zcHNvdXJjZQpYKyAgICAgICAgICAgICAgICAgICBh bHJlYWR5IGNsb3NlcyBmcCAtIEEuIFZlbGlhdGggMTIvNy85NyAqLwpYKwkJ LyogKHZvaWQpIGZjbG9zZShmcCk7ICovClggCQlmb3VuZCA9IHRydWU7Clgg CQlicmVhazsKWCAJICAgIH0gZWxzZSBpZiAoZnRfY29udHJvbGRiKQpFTkQt b2Ytc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfY3BpdGZfYwplY2hv IHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9kaW1lbnNfYwpz ZWQgJ3MvXlgvLycgPnNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2Rp bWVuc19jIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9m dGVfZGltZW5zX2MnClgtLS0gc3JjL2xpYi9mdGUvZGltZW5zLmMub3JpZwlT dW4gQXByIDI1IDE4OjAzOjE5IDE5OTMKWCsrKyBzcmMvbGliL2Z0ZS9kaW1l bnMuYwlUaHUgU2VwIDMwIDEwOjAyOjEwIDE5OTkKWEBAIC0yMSw5ICsyMSwy MSBAQApYIHsKWCAgICAgaW50IGk7ClgtICAgIGNoYXIgYnVmW0JTSVpFX1NQ XTsKWCsgICAgY2hhciAqYnVmOwpYKyAgICBpZiAoIChidWYgPSAoY2hhciAq KSBtYWxsb2MoQlNJWkVfU1Aqc2l6ZW9mKGNoYXIpKSkgPT0gTlVMTCkKWCsg ICAgewpYKyAgICAgIGZwcmludGYoc3RkZXJyLCJsaWI6ZnRlOmRpbW5zOmRp bXN0cmluZzogIG1hbGxvYyBmYWlsZWRcbiIpOwpYKyAgICAgIGV4aXQoMSk7 ClgrICAgIH0KWCAKWCAgICAgaWYgKCFkYXRhIHx8IGxlbmd0aCA8IDEpClgg CXJldHVybiBOVUxMOwpYIApYKyAgICBpZiAobGVuZ3RoID4gQlNJWkVfU1Ap ClgrICAgIHsKWCsgICAgICBmcHJpbnRmKHN0ZGVyciwiV0FSTklORywgbGli OmZ0ZTpkaW1uczpkaW1zdHJpbmc6IGxlbmd0aD0lZCA+IEJTSVpFX1NQPSVk XG4iLApYKwlsZW5ndGgsQlNJWkVfU1ApOwpYKyAgICAgIGxlbmd0aCA9IEJT SVpFX1NQOwpYKyAgICB9ClgrClggICAgIGJ1ZlswXSA9ICdcMCc7ClggICAg IGZvciAoaT0wOyBpIDwgbGVuZ3RoOyBpKyspIHsKWEBAIC0zMSw1ICs0Myw1 IEBAClggCSAgICAoaSA8IGxlbmd0aCAtIDEpID8gIiwiIDogIiIpOwpYICAg ICB9ClgtICAgIC8qIFhYWCBTaG91bGQgSSByZXR1cm4gYSBjb3B5IGluc3Rl YWQ/ICovClgrICAgIApYICAgICByZXR1cm4oYnVmKTsKWCB9ClhAQCAtNDQs OCArNTYsMjEgQEAKWCB7ClggICAgIGludCBpOwpYLSAgICBjaGFyIGJ1ZltC U0laRV9TUF07ClgrICAgIGNoYXIgKmJ1ZjsgICAgICAgICAgClgrClgrICAg IGlmICggKGJ1ZiA9IChjaGFyICopIG1hbGxvYyhCU0laRV9TUCpzaXplb2Yo Y2hhcikpKSA9PSBOVUxMKQpYKyAgICB7ClgrICAgICAgZnByaW50ZihzdGRl cnIsImxpYjpmdGU6ZGltbnM6aW5kZXhzdHJpbmc6ICBtYWxsb2MgZmFpbGVk XG4iKTsKWCsgICAgICBleGl0KDEpOwpYKyAgICB9ClggClggICAgIGlmICgh ZGF0YSB8fCBsZW5ndGggPCAxKQpYIAlyZXR1cm4gTlVMTDsKWCsKWCsgICAg aWYgKGxlbmd0aCA+IEJTSVpFX1NQKQpYKyAgICB7ClgrICAgICAgZnByaW50 ZihzdGRlcnIsIldBUk5JTkcsIGxpYjpmdGU6ZGltbnM6aW5kZXhzdHJpbmc6 IGxlbmd0aD0lZCA+IEJTSVpFX1NQPSVkXG4iLApYKyAgICAgICAgbGVuZ3Ro LEJTSVpFX1NQKTsKWCsgICAgICBsZW5ndGggPSBCU0laRV9TUDsKWCsgICAg fQpYIApYICAgICBidWZbMF0gPSAnXDAnOwpFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfZGltZW5zX2MKZWNobyB4IC0gc3BpY2UvZmls ZXMvcGF0Y2gtc3JjX2xpYl9mdGVfYXNwaWNlX2MKc2VkICdzL15YLy8nID5z cGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9hc3BpY2VfYyA8PCAnRU5E LW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2FzcGljZV9jJwpY LS0tIHNyYy9saWIvZnRlL2FzcGljZS5jLm9yaWcJU3VuIEFwciAyNSAyMDo1 Nzo1NSAxOTkzClgrKysgc3JjL2xpYi9mdGUvYXNwaWNlLmMJVGh1IFNlcCAz MCAxMTo0Mjo0MCAxOTk5ClhAQCAtMTc1LDQgKzE3NSwxMCBAQApYICAgICBG SUxFICpmcDsKWCAgICAgaW50IHBpZDsKWCsjaWZkZWYgSEFTX0lOVFdBSVRT VEFUVVMKWCsgICAgaW50IHN0YXR1czsKWCsjZWxzZQpYKyAgICB1bmlvbiB3 YWl0IHN0YXR1czsKWCsjZW5kaWYKWCsKWCAgICAgc3RhdGljIGJvb2wgaGVy ZSA9IGZhbHNlOyAgIC8qIERvbid0IHdhbnQgdG8gYmUgcmUtZW50cmFudC4g Ki8KWCAKWEBAIC0xODMsNSArMTg5LDUgQEAKWCAKWCAgICAgd2hpbGUgKG51 bWNoYW5nZWQgPiAwKSB7ClgtICAgICAgICBwaWQgPSB3YWl0KCh1bmlvbiB3 YWl0ICopIE5VTEwpOwpYKyAgICAgICAgcGlkID0gd2FpdCgmc3RhdHVzKTsK WCAgICAgICAgIGlmIChwaWQgPT0gLTEpIHsKWCAgICAgICAgICAgICBmcHJp bnRmKGNwX2VyciwgCkVORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGli X2Z0ZV9hc3BpY2VfYwplY2hvIHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNf bGliX2Z0ZV9ncmFmX2MKc2VkICdzL15YLy8nID5zcGljZS9maWxlcy9wYXRj aC1zcmNfbGliX2Z0ZV9ncmFmX2MgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9w YXRjaC1zcmNfbGliX2Z0ZV9ncmFmX2MnClgtLS0gc3JjL2xpYi9mdGUvZ3Jh Zi5jLm9yaWcJVHVlIEphbiAgNSAxNjo0Mzo0NCAxOTkzClgrKysgc3JjL2xp Yi9mdGUvZ3JhZi5jCVRodSBKdWwgMTcgMTI6MTY6NDIgMjAwMwpYQEAgLTI4 OSw5ICsyODksMTEgQEAKWCAJCWlmICgqdGljcyA9PSAoZG91YmxlKSBucCkg ewpYIAkJICAgIFRleHQoIngiLCAoaW50KSAodG94IC0gY3VycmVudGdyYXBo LT5mb250d2lkdGggLyAyKSwKWCAJCQkoaW50KSAodG95IC0gY3VycmVudGdy YXBoLT5mb250aGVpZ2h0IC8gMikpOwpYLQkJICAgIFNhdmVUZXh0KGN1cnJl bnRncmFwaCwgIngiLApYKwkgICAgICAgLyogZ3JfcmVkcmF3IHdpbGwgcmVk cmF3IHRoaXMgdy9vIG91ciBoYXZpbmcgdG8gc2F2ZSBpdApYKyAgICAgICAg ICAgICAgICAgIEd1ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAqLyAKWCsJ ICAgICAgIC8qICAgU2F2ZVRleHQoY3VycmVudGdyYXBoLCAieCIsClggCQkJ KGludCkgKHRveCAtIGN1cnJlbnRncmFwaC0+Zm9udHdpZHRoIC8gMiksClgt CQkJKGludCkgKHRveSAtIGN1cnJlbnRncmFwaC0+Zm9udGhlaWdodCAvIDIp KTsKWCsJCQkoaW50KSAodG95IC0gY3VycmVudGdyYXBoLT5mb250aGVpZ2h0 IC8gMikpOyAqLwpYIAkJICAgIGJyZWFrOwpYIAkJfQpYIAkgICAgfQpYQEAg LTMwMSw5ICszMDMsMTEgQEAKWCAJICAgIC8qIERyYXcgYW4gJ3gnICovClgg CSAgICBUZXh0KCJ4IiwgKGludCkgKHRveCAtIGN1cnJlbnRncmFwaC0+Zm9u dHdpZHRoIC8gMiksClggCQkoaW50KSAodG95IC0gY3VycmVudGdyYXBoLT5m b250aGVpZ2h0IC8gMikpOwpYLQkgICAgU2F2ZVRleHQoY3VycmVudGdyYXBo LCAieCIsClgrICAgICAgICAgIC8qIGdyX3JlZHJhdyB3aWxsIHJlZHJhdyB0 aGlzIHcvbyBvdXIgaGF2aW5nIHRvIHNhdmUgaXQKWCsgICAgICAgICAgICAg ICAgICBHdWVudGhlciBSb2VocmljaCAyMi1KYW4tOTkgKi8gClgrCSAgLyog U2F2ZVRleHQoY3VycmVudGdyYXBoLCAieCIsClggCQkoaW50KSAodG94IC0g Y3VycmVudGdyYXBoLT5mb250d2lkdGggLyAyKSwKWC0JCShpbnQpICh0b3kg LSBjdXJyZW50Z3JhcGgtPmZvbnRoZWlnaHQgLyAyKSk7ClgrCQkoaW50KSAo dG95IC0gY3VycmVudGdyYXBoLT5mb250aGVpZ2h0IC8gMikpOyAqLwpYIAl9 ClggICAgICAgICBicmVhazsKWCAgICAgICBjYXNlIFBMT1RfQ09NQjoKRU5E LW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2dyYWZfYwplY2hv IHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfaW5jbHVkZV9wYXRjaGxldl9o CnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2luY2x1ZGVf cGF0Y2hsZXZfaCA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19p bmNsdWRlX3BhdGNobGV2X2gnClgtLS0gc3JjL2luY2x1ZGUvcGF0Y2hsZXYu aC5vcmlnCVRodSBKdWwgMjkgMDU6MzA6MzAgMTk5MwpYKysrIHNyYy9pbmNs dWRlL3BhdGNobGV2LmgJVGh1IEp1bCAxNyAwMDoyMTozMyAyMDAzClhAQCAt MSArMSBAQApYLSNkZWZpbmUgUEFUQ0hMRVZFTAkwClgrI2RlZmluZSBQQVRD SExFVkVMCTIKRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19pbmNsdWRl X3BhdGNobGV2X2gKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwy CnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwyIDw8ICdF TkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwyJwpYIyAgc3BpY2UzZjQv M2Y1IHBhdGNoIGxldmVsIDIKWCMgIEFkZHMgc3BlYyBjb21tYW5kIGZvciBz cGVjdHJ1bSBhbmFseXNpcyB1c2luZyBERlQKWCMgIEp1bHkgMTEsIDE5OTQK WCMgIEFudGhvbnkgUGFya2VyICh0b255cEBtcGNlLm1xLmVkdS5hdSkKWCMg IE1hY3F1YXJpZSBVbml2ZXJzaXR5LCBTeWRuZXkgQXVzdHJhbGlhIDIxMDkg ClgjClhkaWZmIC1ydU4gc3JjLm9yaWcvaW5jbHVkZS9mdGVleHQuaCBzcmMv aW5jbHVkZS9mdGVleHQuaApYLS0tIHNyYy5vcmlnL2luY2x1ZGUvZnRlZXh0 LmgJVHVlIEp1bCAyNyAxNDo1MToxOCAxOTkzClgrKysgc3JjL2luY2x1ZGUv ZnRlZXh0LmgJU3VuIE1heSAxOCAxMzoyNTo1MiAyMDAzClhAQCAtMjA4LDYg KzIwOCwxMCBAQApYIApYIGV4dGVybiB2b2lkIGNvbV9mb3VyaWVyKCk7Clgg ClgrLyogc3BlYy5jICovClgrClgrZXh0ZXJuIHZvaWQgY29tX3NwZWMoKTsK WCsKWCAvKiBnaW50ZXJmYWNlLmMgKi8KWCAKWCBleHRlcm4gYm9vbCBnaV9p bml0KCk7ClhkaWZmIC1ydU4gc3JjLm9yaWcvbGliL2Z0ZS9tYWtlZGVmcyBz cmMvbGliL2Z0ZS9tYWtlZGVmcwpYLS0tIHNyYy5vcmlnL2xpYi9mdGUvbWFr ZWRlZnMJTW9uIE1hciAyMiAyMDo1NjoxMCAxOTkzClgrKysgc3JjL2xpYi9m dGUvbWFrZWRlZnMJU3VuIE1heSAxOCAxMzoyNTo0NCAyMDAzClhAQCAtMTEs NyArMTEsOCBAQApYIAkJICBwYXJzZS5jIHBsb3Q1LmMgcGxvdGN1cnYuYyBw b2ludHMuYyBwb3N0Y29tcy5jIHBvc3RzYy5jIFwKWCAJCSAgcmF3ZmlsZS5j IHJlc291cmNlLmMgcnVuY29tcy5jIHNoeXUuYyBzaWduYWwuYyBzcGNtZHRh Yi5jIFwKWCAJCSAgc3BpY2VpZi5jIHN1YmNrdC5jIHR5cGVzLmMgdmVjdG9y cy5jIHdoZXJlLmMgeDEwLmMgeDExLmMgXApYLQkJICBnZW5zLmMgbmV3Y29t cy5jIGRpbWVucy5jIHhncmFwaC5jIHJ1bmNvbXMyLmMgYnJlYWtwMi5jClgr CQkgIGdlbnMuYyBuZXdjb21zLmMgZGltZW5zLmMgeGdyYXBoLmMgcnVuY29t czIuYyBicmVha3AyLmMgXApYKyAgICAgICAgICAgICAgICAgIHNwZWMuYwpY IApYIENPQkpTCQk9IGFncmFmLm8gYXJnLm8gYXNwaWNlLm8gYnJlYWtwLm8g Y2lyY3VpdHMubyBjbGlwLm8gY21hdGgxLm8gXApYIAkJICBjbWF0aDIubyBj bWF0aDMubyBjbWF0aDQubyBjb21wb3NlLm8gY3BpdGYubyBkZWJ1Z2NvbS5v IFwKWEBAIC0yMiw3ICsyMyw4IEBAClggCQkgIHBhcnNlLm8gcGxvdDUubyBw bG90Y3Vydi5vIHBvaW50cy5vIHBvc3Rjb21zLm8gcG9zdHNjLm8gXApYIAkJ ICByYXdmaWxlLm8gcmVzb3VyY2UubyBydW5jb21zLm8gc2h5dS5vIHNpZ25h bC5vIHNwY21kdGFiLm8gXApYIAkJICBzcGljZWlmLm8gc3ViY2t0Lm8gdHlw ZXMubyB2ZWN0b3JzLm8gd2hlcmUubyB4MTAubyB4MTEubyBcClgtCQkgIGdl bnMubyBuZXdjb21zLm8gZGltZW5zLm8geGdyYXBoLm8gcnVuY29tczIubyBi cmVha3AyLm8KWCsJCSAgZ2Vucy5vIG5ld2NvbXMubyBkaW1lbnMubyB4Z3Jh cGgubyBydW5jb21zMi5vIGJyZWFrcDIubyBcClgrICAgICAgICAgICAgICAg ICAgc3BlYy5vClggClggTElCUkFSWQkJPSBmdGUKWCBMSUJfVEFSR0VUCT0g JChPQkpMSUJfRElSKS8kKExJQlJBUlkpLmEKWEBAIC05MiwzICs5NCw0IEBA ClggeGdyYXBoLm86IHhncmFwaC5jClggcnVuY29tczIubzogcnVuY29tczIu YwpYIGJyZWFrcDIubzogYnJlYWtwMi5jClgrc3BlYy5vOiBzcGVjLmMKWGRp ZmYgLXJ1TiBzcmMub3JpZy9saWIvZnRlL21zYzUxLmJhdCBzcmMvbGliL2Z0 ZS9tc2M1MS5iYXQKWC0tLSBzcmMub3JpZy9saWIvZnRlL21zYzUxLmJhdAlG cmkgSnVsIDMwIDA0OjI2OjQ0IDE5OTMKWCsrKyBzcmMvbGliL2Z0ZS9tc2M1 MS5iYXQJU3VuIE1heSAxOCAxMzoyNTo0NCAyMDAzClhAQCAtNjEsNCArNjEs NSBAQApYIGNsIC9JLi5cLi5caW5jbHVkZSAvYyB4Z3JhcGguYyA+PiAuLlwu Llxtc2Mub3V0ClggY2wgL0kuLlwuLlxpbmNsdWRlIC9jIHJ1bmNvbXMyLmMg Pj4gLi5cLi5cbXNjLm91dApYIGNsIC9JLi5cLi5caW5jbHVkZSAvYyBicmVh a3AyLmMgPj4gLi5cLi5cbXNjLm91dApYK2NsIC9JLi5cLi5caW5jbHVkZSAv YyBzcGVjLmMgPj4gLi5cLi5cbXNjLm91dApYIGxpYiAuLlxmdGUubGliIEBy ZXNwb25zZS5saWIgPj4gLi5cLi5cbXNjLm91dApYZGlmZiAtcnVOIHNyYy5v cmlnL2xpYi9mdGUvcmVzcG9uc2UubGliIHNyYy9saWIvZnRlL3Jlc3BvbnNl LmxpYgpYLS0tIHNyYy5vcmlnL2xpYi9mdGUvcmVzcG9uc2UubGliCUZyaSBK dWwgMzAgMDQ6MjY6NDUgMTk5MwpYKysrIHNyYy9saWIvZnRlL3Jlc3BvbnNl LmxpYglTdW4gTWF5IDE4IDEzOjI1OjQ0IDIwMDMKWEBAIC01OSw0ICs1OSw1 IEBAClggK2RpbWVucy5vYmomClggK3hncmFwaC5vYmomClggK3J1bmNvbXMy Lm9iaiYKWCsrc3BlYy5vYmomClggK2JyZWFrcDIub2JqOwpYZGlmZiAtcnVO IHNyYy5vcmlnL2xpYi9mdGUvc3BjbWR0YWIuYyBzcmMvbGliL2Z0ZS9zcGNt ZHRhYi5jClgtLS0gc3JjLm9yaWcvbGliL2Z0ZS9zcGNtZHRhYi5jCVRodSBK dWwgMjkgMjA6NDk6MzMgMTk5MwpYKysrIHNyYy9saWIvZnRlL3NwY21kdGFi LmMJU3VuIE1heSAxOCAxMzoyNTo0NCAyMDAzClhAQCAtMTYyLDYgKzE2Miwx MCBAQApYICAgICAgIHsgMCwgMDQwMDAwLCAwNDAwMDAsIDA0MDAwMCB9LCBF X0RFRkhNQVNLLCAxLCBMT1RTLApYICAgICAgIChpbnQgKCopKCkpIE5VTEws ClggICAgICAgImZ1bmRfZnJlcSB2ZWN0b3IgLi4uIDogRG8gYSBmb3VyaWVy IGFuYWx5c2lzIG9mIHNvbWUgZGF0YS4iIH0gLApYKyAgICB7ICJzcGVjIiwg Y29tX3NwZWMsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwKWCsgICAgICB7IDAsIDAs IDAsIDAgfSwgRV9ERUZITUFTSywgNCwgTE9UUywKWCsgICAgICAoaW50ICgq KSgpKSBOVUxMLApYKyAgICAgICJzdGFydF9mcmVxIHN0b3BfZnJlcSBzdGVw X2ZyZXEgdmVjdG9yIC4uLiA6IENyZWF0ZSBhIGZyZXF1ZW5jeSBkb21haW4g cGxvdC4iIH0gLApYICAgICB7ICJzaG93IiwgY29tX3Nob3csIGZhbHNlLCB0 cnVlLCBmYWxzZSwKWCAgICAgICB7IDA0MCwgMDQwLCAwNDAsIDA0MCB9LCBF X0RFRkhNQVNLLCAwLCBMT1RTLApYICAgICAgIChpbnQgKCopKCkpIE5VTEws ClhkaWZmIC1ydU4gc3JjLm9yaWcvbGliL2Z0ZS9zcGVjLmMgc3JjL2xpYi9m dGUvc3BlYy5jClgtLS0gc3JjLm9yaWcvbGliL2Z0ZS9zcGVjLmMJV2VkIERl YyAzMSAxOTowMDowMCAxOTY5ClgrKysgc3JjL2xpYi9mdGUvc3BlYy5jCVN1 biBNYXkgMTggMTM6MjU6NDQgMjAwMwpYQEAgLTAsMCArMSwyODYgQEAKWCsv KioqKioqKioqKgpYK0NvcHlyaWdodCAxOTk0IE1hY3F1YXJpZSBVbml2ZXJz aXR5LCBTeWRuZXkgQXVzdHJhbGlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K WCtBdXRob3I6ICAgMTk5NCBBbnRob255IEUuIFBhcmtlciwgRGVwYXJ0bWVu dCBvZiBFbGVjdHJvbmljcywgTWFjcXVhcmllIFVuaS4KWCsqKioqKioqKioq LwpYKwpYKy8qClgrICogQ29kZSB0byBkbyBmb3VyaWVyIHRyYW5zZm9ybXMg b24gZGF0YS4KWCsgKi8KWCsKWCsjaW5jbHVkZSAic3BpY2UuaCIKWCsjaW5j bHVkZSAiZnRlZGVmcy5oIgpYKyNpbmNsdWRlICJmdGVkYXRhLmgiClgrI2lu Y2x1ZGUgInV0aWwuaCIKWCsjaW5jbHVkZSAic3VmZml4LmgiClgrClgrdm9p ZApYK2NvbV9zcGVjKHdsKQpYKyAgICB3b3JkbGlzdCAqd2w7ClgrewpYKyAg ICBjb21wbGV4ICoqZmR2ZWM7ClgrICAgIGRvdWJsZSAgKip0ZHZlYzsKWCsg ICAgZG91YmxlICAqZnJlcSwgKndpbiwgKnRpbWUsICpkYzsKWCsgICAgZG91 YmxlICBzdGFydGYsIHN0b3BmLCBzdGVwZiwgc3BhbjsKWCsgICAgaW50ICAg ICBmcHRzLCBpLCBqLCBrLCB0bGVuLCBuZ29vZDsKWCsgICAgYm9vbCAgICB0 cmFjZTsKWCsgICAgY2hhciAgICAqczsKWCsgICAgc3RydWN0IGR2ZWMgICpm LCAqdmxpc3QsICpsdiwgKnZlYzsKWCsgICAgc3RydWN0IHBub2RlICpuYW1l cywgKmZpcnN0X25hbWU7ClgrClgrICAgIGlmICghcGxvdF9jdXIgfHwgIXBs b3RfY3VyLT5wbF9zY2FsZSkgewpYKyAgICAgICAgZnByaW50ZihjcF9lcnIs ICJFcnJvcjogbm8gdmVjdG9ycyBsb2FkZWQuXG4iKTsKWCsgICAgICAgIHJl dHVybjsKWCsgICAgfQpYKyAgICBpZiAoIWlzcmVhbChwbG90X2N1ci0+cGxf c2NhbGUpIHx8IApYKyAgICAgICAgKChwbG90X2N1ci0+cGxfc2NhbGUpLT52 X3R5cGUgIT0gU1ZfVElNRSkpIHsKWCsgICAgICAgIGZwcmludGYoY3BfZXJy LCAiRXJyb3I6IHNwZWMgbmVlZHMgcmVhbCB0aW1lIHNjYWxlXG4iKTsKWCsg ICAgICAgIHJldHVybjsKWCsgICAgfQpYKyAgICBzID0gd2wtPndsX3dvcmQ7 ClgrICAgIHRsZW4gPSAocGxvdF9jdXItPnBsX3NjYWxlKS0+dl9sZW5ndGg7 ClgrICAgIGlmICghKGZyZXEgPSBmdF9udW1wYXJzZSgmcywgZmFsc2UpKSB8 fCAoKmZyZXEgPCAwLjApKSB7ClgrICAgICAgICBmcHJpbnRmKGNwX2Vyciwg IkVycm9yOiBiYWQgc3RhcnQgZnJlcSAlc1xuIiwgd2wtPndsX3dvcmQpOwpY KyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAgIHN0YXJ0ZiA9ICpmcmVx OwpYKyAgICB3bCA9IHdsLT53bF9uZXh0OwpYKyAgICBzID0gd2wtPndsX3dv cmQ7ClgrICAgIGlmICghKGZyZXEgPSBmdF9udW1wYXJzZSgmcywgZmFsc2Up KSB8fCAoKmZyZXEgPD0gc3RhcnRmKSkgewpYKyAgICAgICAgZnByaW50Zihj cF9lcnIsICJFcnJvcjogYmFkIHN0b3AgZnJlcSAlc1xuIiwgd2wtPndsX3dv cmQpOwpYKyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAgIHN0b3BmID0g KmZyZXE7ClgrICAgIHdsID0gd2wtPndsX25leHQ7ClgrICAgIHMgPSB3bC0+ d2xfd29yZDsKWCsgICAgaWYgKCEoZnJlcSA9IGZ0X251bXBhcnNlKCZzLCBm YWxzZSkpIHx8ICEoKmZyZXEgPD0gKHN0b3BmLXN0YXJ0ZikpKSB7ClgrICAg ICAgICBmcHJpbnRmKGNwX2VyciwgIkVycm9yOiBiYWQgc3RlcCBmcmVxICVz XG4iLCB3bC0+d2xfd29yZCk7ClgrICAgICAgICByZXR1cm47ClgrICAgIH0K WCsgICAgc3RlcGYgPSAqZnJlcTsKWCsgICAgd2wgPSB3bC0+d2xfbmV4dDsK WCsgICAgdGltZSA9IChwbG90X2N1ci0+cGxfc2NhbGUpLT52X3JlYWxkYXRh OwpYKyAgICBzcGFuID0gdGltZVt0bGVuLTFdIC0gdGltZVswXTsKWCsgICAg aWYgKHN0b3BmID4gMC41KnRsZW4vc3BhbikgewpYKyAgICAgICAgZnByaW50 ZihjcF9lcnIsClgrCSAgIkVycm9yOiBueXF1aXN0IGxpbWl0IGV4Y2VlZGVk LCB0cnkgc3RvcCBmcmVxIGxlc3MgdGhhbiAlZSBIelxuIiwKWCsJICAgICAg dGxlbi8yL3NwYW4pOwpYKyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAg IHNwYW4gPSAoKGludCkoc3BhbipzdGVwZioxLjAwMDAwMDAwMDAwMSkpL3N0 ZXBmOwpYKyAgICBpZiAoc3BhbiA+IDApIHsKWCsgICAgICAgIHN0YXJ0ZiA9 IChpbnQpKHN0YXJ0Zi9zdGVwZioxLjAwMDAwMDAwMDAwMSkgKiBzdGVwZjsK WCsgICAgICAgIGZwdHMgPSAoc3RvcGYgLSBzdGFydGYpL3N0ZXBmICsgMTsK WCsgICAgICAgIGlmIChzdG9wZiA+IHN0YXJ0ZiArIChmcHRzLTEpKnN0ZXBm KSBmcHRzKys7ClgrICAgIH0gZWxzZSB7ClgrICAgICAgICBmcHJpbnRmKGNw X2VyciwiRXJyb3I6IHRpbWUgc3BhbiBsaW1pdHMgc3RlcCBmcmVxIHRvICUx LjFlIEh6XG4iLApYKyAgICAgICAgICAgMS8odGltZVt0bGVuLTFdIC0gdGlt ZVswXSkpOwpYKyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAgIHdpbiA9 IChkb3VibGUgKikgdG1hbGxvYyh0bGVuICogc2l6ZW9mIChkb3VibGUpKTsK WCsgICAgewpYKyAgICAgICBjaGFyICAgd2luZG93W0JTSVpFX1NQXTsKWCsg ICAgICAgZG91YmxlIG1heHQgPSB0aW1lW3RsZW4tMV07ClgrICAgICAgIGlm ICghY3BfZ2V0dmFyKCJzcGVjd2luZG93IiwgVlRfU1RSSU5HLCB3aW5kb3cp KSAKWCsgICAgICAgICAgIHN0cmNweSh3aW5kb3csImhhbm5pbmciKTsKWCsg ICAgICAgaWYgKGVxKHdpbmRvdywgIm5vbmUiKSkKWCsgICAgICAgICAgZm9y KGk9MDsgaTx0bGVuOyBpKyspIHsKWCsgICAgICAgICAgICAgd2luW2ldID0g MTsKWCsgICAgICAgICAgfQpYKyAgICAgICBlbHNlIGlmIChlcSh3aW5kb3cs ICJyZWN0YW5ndWxhciIpKQpYKyAgICAgICAgICAgZm9yKGk9MDsgaTx0bGVu OyBpKyspIHsKWCsgICAgICAgICAgICAgaWYgKG1heHQtdGltZVtpXSA+IHNw YW4pIHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMDsKWCsgICAgICAg ICAgICAgfSBlbHNlIHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMTsK WCsgICAgICAgICAgICAgfQpYKyAgICAgICAgICB9ClgrICAgICAgIGVsc2Ug aWYgKGVxKHdpbmRvdywgImhhbm5pbmciKSB8fCBlcSh3aW5kb3csICJjb3Np bmUiKSkKWCsgICAgICAgICAgZm9yKGk9MDsgaTx0bGVuOyBpKyspIHsKWCsg ICAgICAgICAgICAgaWYgKG1heHQtdGltZVtpXSA+IHNwYW4pIHsKWCsgICAg ICAgICAgICAgICAgd2luW2ldID0gMDsKWCsgICAgICAgICAgICAgfSBlbHNl IHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMSAtIGNvcygyKk1fUEkq KHRpbWVbaV0tbWF4dCkvc3Bhbik7ClgrICAgICAgICAgICAgIH0KWCsgICAg ICAgICAgfQpYKyAgICAgICBlbHNlIGlmIChlcSh3aW5kb3csICJoYW1taW5n IikpClgrICAgICAgICAgIGZvcihpPTA7IGk8dGxlbjsgaSsrKSB7ClgrICAg ICAgICAgICAgIGlmIChtYXh0LXRpbWVbaV0gPiBzcGFuKSB7ClgrICAgICAg ICAgICAgICAgIHdpbltpXSA9IDA7ClgrICAgICAgICAgICAgIH0gZWxzZSB7 ClgrICAgICAgICAgICAgICAgIHdpbltpXSA9IDEgLSAwLjkyLzEuMDgqY29z KDIqTV9QSSoodGltZVtpXS1tYXh0KS9zcGFuKTsKWCsgICAgICAgICAgICAg fQpYKyAgICAgICAgICB9ClgrICAgICAgIGVsc2UgaWYgKGVxKHdpbmRvdywg InRyaWFuZ2xlIikgfHwgZXEod2luZG93LCAiYmFydGxldCIpKQpYKyAgICAg ICAgICBmb3IoaT0wOyBpPHRsZW47IGkrKykgewpYKyAgICAgICAgICAgICBp ZiAobWF4dC10aW1lW2ldID4gc3BhbikgewpYKyAgICAgICAgICAgICAgICB3 aW5baV0gPSAwOwpYKyAgICAgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAg ICAgICAgICB3aW5baV0gPSAyIC0gZmFicygyKzQqKHRpbWVbaV0tbWF4dCkv c3Bhbik7ClgrICAgICAgICAgICAgIH0KWCsgICAgICAgICAgfQpYKyAgICAg ICBlbHNlIGlmIChlcSh3aW5kb3csICJibGFja21hbiIpKSB7ClgrICAgICAg ICAgIGludCBvcmRlcjsKWCsgICAgICAgICAgaWYgKCFjcF9nZXR2YXIoInNw ZWN3aW5kb3dvcmRlciIsIFZUX05VTSwgJm9yZGVyKSkgb3JkZXIgPSAyOwpY KyAgICAgICAgICBpZiAob3JkZXIgPCAyKSBvcmRlciA9IDI7ICAvKiBvbmx5 IG9yZGVyIDIgc3VwcG9ydGVkIGhlcmUgKi8KWCsgICAgICAgICAgZm9yKGk9 MDsgaTx0bGVuOyBpKyspIHsKWCsgICAgICAgICAgICAgaWYgKG1heHQtdGlt ZVtpXSA+IHNwYW4pIHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMDsK WCsgICAgICAgICAgICAgfSBlbHNlIHsKWCsgICAgICAgICAgICAgICAgd2lu W2ldICA9IDE7ClgrICAgICAgICAgICAgICAgIHdpbltpXSAtPSAwLjUwLzAu NDIqY29zKDIqTV9QSSoodGltZVtpXS1tYXh0KS9zcGFuKTsKWCsgICAgICAg ICAgICAgICAgd2luW2ldICs9IDAuMDgvMC40Mipjb3MoNCpNX1BJKih0aW1l W2ldLW1heHQpL3NwYW4pOwpYKyAgICAgICAgICAgICB9ClgrICAgICAgICAg IH0KWCsgICAgICAgfSBlbHNlIGlmIChlcSh3aW5kb3csICJnYXVzc2lhbiIp KSB7ClgrICAgICAgICAgIGludCBvcmRlcjsKWCsgICAgICAgICAgZG91Ymxl IHNjYWxlOwpYKyAgICAgICAgICBleHRlcm4gZG91YmxlIGVyZmMoKTsKWCsg ICAgICAgICAgaWYgKCFjcF9nZXR2YXIoInNwZWN3aW5kb3dvcmRlciIsIFZU X05VTSwgJm9yZGVyKSkgb3JkZXIgPSAyOwpYKyAgICAgICAgICBpZiAob3Jk ZXIgPCAyKSBvcmRlciA9IDI7ClgrICAgICAgICAgIHNjYWxlID0gcG93KDIq TV9QSS9vcmRlciwwLjUpKigwLjUtZXJmYyhwb3cob3JkZXIsMC41KSkpOwpY KyAgICAgICAgICBmb3IoaT0wOyBpPHRsZW47IGkrKykgewpYKyAgICAgICAg ICAgICBpZiAobWF4dC10aW1lW2ldID4gc3BhbikgewpYKyAgICAgICAgICAg ICAgICB3aW5baV0gPSAwOwpYKyAgICAgICAgICAgICB9IGVsc2UgewpYKyAg ICAgICAgICAgICAgICB3aW5baV0gPSBleHAoLTAuNSpvcmRlciooMS0yKiht YXh0LXRpbWVbaV0pL3NwYW4pClgrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKigxLTIqKG1heHQtdGltZVtpXSkvc3BhbikpL3Nj YWxlOwpYKyAgICAgICAgICAgICB9ClgrICAgICAgICAgIH0KWCsJICAgfSBl bHNlIHsKWCsgICAgICAgICAgZnByaW50ZihjcF9lcnIsICJXYXJuaW5nOiB1 bmtub3duIHdpbmRvdyB0eXBlICVzXG4iLCB3aW5kb3cpOwpYKyAgICAgICAg ICB0ZnJlZSh3aW4pOwpYKyAgICAgICAgICByZXR1cm47ClgrICAgICAgIH0K WCsgICAgfQpYKyAgICAKWCsgICAgbmFtZXMgPSBmdF9nZXRwbmFtZXMod2ws IHRydWUpOwpYKyAgICBmaXJzdF9uYW1lID0gbmFtZXM7ClgrICAgIHZsaXN0 ID0gTlVMTDsKWCsgICAgbmdvb2QgPSAwOwpYKyAgICB3aGlsZSAobmFtZXMp IHsKWCsgICAgICAgIHZlYyA9IGZ0X2V2YWx1YXRlKG5hbWVzKTsKWCsgICAg ICAgIG5hbWVzID0gbmFtZXMtPnBuX25leHQ7ClgrICAgICAgICB3aGlsZSAo dmVjKSB7ClgrICAgICAgICAgICAgaWYgKHZlYy0+dl9sZW5ndGggIT0gdGxl bikgewpYKyAgICAgICAgICAgICAgICBmcHJpbnRmKGNwX2VyciwgIkVycm9y OiBsZW5ndGhzIGRvbid0IG1hdGNoOiAlZCwgJWRcbiIsClgrICAgICAgICAg ICAgICAgICAgICAgICAgdmVjLT52X2xlbmd0aCwgdGxlbik7ClgrICAgICAg ICAgICAgICAgIHZlYyA9IHZlYy0+dl9saW5rMjsKWCsgICAgICAgICAgICAg ICAgY29udGludWU7ClgrICAgICAgICAgICAgfQpYKyAgICAgICAgICAgIGlm ICghaXNyZWFsKHZlYykpIHsKWCsgICAgICAgICAgICAgICAgZnByaW50Zihj cF9lcnIsICJFcnJvcjogJXMgaXNuJ3QgcmVhbCFcbiIsIApYKyAgICAgICAg ICAgICAgICAgICAgICAgIHZlYy0+dl9uYW1lKTsKWCsgICAgICAgICAgICAg ICAgdmVjID0gdmVjLT52X2xpbmsyOwpYKyAgICAgICAgICAgICAgICBjb250 aW51ZTsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgaWYgKHZlYy0+ dl90eXBlID09IFNWX1RJTUUpIHsKWCsgICAgICAgICAgICAgICAgdmVjID0g dmVjLT52X2xpbmsyOwpYKyAgICAgICAgICAgICAgICBjb250aW51ZTsKWCsg ICAgICAgICAgICB9ClgrCSAgICAgICAgaWYgKCF2bGlzdCkKWCsJICAgICAg ICAgICB2bGlzdCA9IHZlYzsKWCsJICAgICAgICBlbHNlClgrCSAgICAgICAg ICAgbHYtPnZfbGluazIgPSB2ZWM7ClgrICAgICAgICAgICAgbHYgPSB2ZWM7 ClgrICAgICAgICAgICAgdmVjID0gdmVjLT52X2xpbmsyOwpYKyAgICAgICAg ICAgIG5nb29kKys7ClgrICAgICAgICB9ClgrICAgIH0KWCsgICAgZnJlZV9w bm9kZShmaXJzdF9uYW1lKTsKWCsgICAgaWYgKCFuZ29vZCkgewpYKyAgICAg ICB0ZnJlZSh3aW4pOwpYKyAgICAgICByZXR1cm47ClgrICAgIH0KWCsgClgr ICAgIHBsb3RfY3VyID0gcGxvdF9hbGxvYygic3BlY3RydW0iKTsKWCsgICAg cGxvdF9jdXItPnBsX25leHQgPSBwbG90X2xpc3Q7ClgrICAgIHBsb3RfbGlz dCA9IHBsb3RfY3VyOwpYKyAgICBwbG90X2N1ci0+cGxfdGl0bGUgPSBjb3B5 KChwbG90X2N1ci0+cGxfbmV4dCktPnBsX3RpdGxlKTsKWCsgICAgcGxvdF9j dXItPnBsX25hbWUgPSBjb3B5KCJTcGVjdHJ1bSIpOwpYKyAgICBwbG90X2N1 ci0+cGxfZGF0ZSA9IGNvcHkoZGF0ZXN0cmluZyggKSk7ClgrClgrICAgIGZy ZXEgPSAoZG91YmxlICopIHRtYWxsb2MoZnB0cyAqIHNpemVvZihkb3VibGUp KTsKWCsgICAgZiA9IGFsbG9jKHN0cnVjdCBkdmVjKTsKWCsgICAgWkVSTyhm LCBzdHJ1Y3QgZHZlYyk7ClgrICAgIGYtPnZfbmFtZSA9IGNvcHkoImZyZXF1 ZW5jeSIpOwpYKyAgICBmLT52X3R5cGUgPSBTVl9GUkVRVUVOQ1k7ClgrICAg IGYtPnZfZmxhZ3MgPSAoVkZfUkVBTCB8IFZGX1BFUk1BTkVOVCB8IFZGX1BS SU5UKTsKWCsgICAgZi0+dl9sZW5ndGggPSBmcHRzOwpYKyAgICBmLT52X3Jl YWxkYXRhID0gZnJlcTsKWCsgICAgdmVjX25ldyhmKTsKWCsKWCsgICAgdGR2 ZWMgPSAoZG91YmxlICAqKikgdG1hbGxvYyhuZ29vZCAqIHNpemVvZihkb3Vi bGUgICopKTsKWCsgICAgZmR2ZWMgPSAoY29tcGxleCAqKikgdG1hbGxvYyhu Z29vZCAqIHNpemVvZihjb21wbGV4ICopKTsKWCsgICAgZm9yIChpID0gMCwg dmVjID0gdmxpc3Q7IGk8bmdvb2Q7IGkrKykgewpYKyAgICAgICB0ZHZlY1tp XSA9IHZlYy0+dl9yZWFsZGF0YTsKWCsgICAgICAgZmR2ZWNbaV0gPSAoY29t cGxleCAqKSB0bWFsbG9jKGZwdHMgKiBzaXplb2YoY29tcGxleCkpOwpYKyAg ICAgICBmID0gYWxsb2Moc3RydWN0IGR2ZWMpOwpYKyAgICAgICBaRVJPKGYs IHN0cnVjdCBkdmVjKTsKWCsgICAgICAgZi0+dl9uYW1lID0gdmVjX2Jhc2Vu YW1lKHZlYyk7ClgrICAgICAgIGYtPnZfdHlwZSA9IHZlYy0+dl90eXBlOwpY KyAgICAgICBmLT52X2ZsYWdzID0gKFZGX0NPTVBMRVggfCBWRl9QRVJNQU5F TlQpOwpYKyAgICAgICBmLT52X2xlbmd0aCA9IGZwdHM7ClgrICAgICAgIGYt PnZfY29tcGRhdGEgPSBmZHZlY1tpXTsKWCsgICAgICAgdmVjX25ldyhmKTsK WCsgICAgICAgdmVjID0gdmVjLT52X2xpbmsyOwpYKyAgICB9ClgrClgrICAg IGRjID0gKGRvdWJsZSAgKikgdG1hbGxvYyhuZ29vZCAqIHNpemVvZihkb3Vi bGUpKTsKWCsgICAgZm9yIChpID0gMDsgaTxuZ29vZDsgaSsrKSB7ClgrICAg ICAgIGRjW2ldID0gMDsKWCsgICAgfQpYKyAgICBmb3IgKGsgPSAxOyBrPHRs ZW47IGsrKykgewpYKyAgICAgICBkb3VibGUgYW1wID0gd2luW2tdLyh0bGVu LTEpOwpYKyAgICAgICBmb3IgKGkgPSAwOyBpPG5nb29kOyBpKyspIHsKWCsJ ICAgICAgZGNbaV0gKz0gdGR2ZWNbaV1ba10qYW1wOwpYKyAgICAgICB9Clgr ICAgIH0KWCsgICAgY3BfZ2V0dmFyKCJzcGVjdHJhY2UiLCBWVF9CT09MLCAm dHJhY2UpOwpYKyAgICBmb3IgKGogPSAoc3RhcnRmPT0wID8gMSA6IDApOyBq PGZwdHM7IGorKykgewpYKyAgICAgICBmcmVxW2pdID0gc3RhcnRmICsgaipz dGVwZjsKWCsgICAgICAgaWYodHJhY2UpIGZwcmludGYoY3BfZXJyLCAic3Bl YzogJWUgSHo6IFxyIixmcmVxW2pdKTsKWCsgICAgICAgZm9yIChpID0gMDsg aTxuZ29vZDsgaSsrKSB7ClgrCSAgICAgIGZkdmVjW2ldW2pdLmN4X3JlYWwg PSAwOyAKWCsJICAgICAgZmR2ZWNbaV1bal0uY3hfaW1hZyA9IDA7ClgrICAg ICAgIH0KWCsgICAgICAgZm9yIChrID0gMTsgazx0bGVuOyBrKyspIHsKWCsg ICAgICAgICAgZG91YmxlClgrCSAgICAgICBhbXAgPSAyKndpbltrXS8odGxl bi0xKSwKWCsgICAgICAgICAgIHJhZCA9IDIqTV9QSSp0aW1lW2tdKmZyZXFb al0sClgrCSAgICAgICBjb3NhID0gYW1wKmNvcyhyYWQpLApYKwkgICAgICAg c2luYSA9IGFtcCpzaW4ocmFkKTsKWCsgICAgICAgICAgZm9yIChpID0gMDsg aTxuZ29vZDsgaSsrKSB7ClgrICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9 IHRkdmVjW2ldW2tdLWRjW2ldOwpYKwkgICAgICAgICBmZHZlY1tpXVtqXS5j eF9yZWFsICs9IHZhbHVlKmNvc2E7ClgrCSAgICAgICAgIGZkdmVjW2ldW2pd LmN4X2ltYWcgKz0gdmFsdWUqc2luYTsKWCsgICAgICAgICAgfQpYKyAgICAg ICB9ClgrICAgIH0KWCsgICAgaWYgKHN0YXJ0Zj09MCkgewpYKyAgICAgICBm cmVxWzBdID0gMDsKWCsgICAgICAgZm9yIChpID0gMDsgaTxuZ29vZDsgaSsr KSB7ClgrCSAgICAgIGZkdmVjW2ldWzBdLmN4X3JlYWwgPSBkY1tpXTsgClgr CSAgICAgIGZkdmVjW2ldWzBdLmN4X2ltYWcgPSAwOwpYKyAgICAgICB9Clgr ICAgIH0KWCsgICAgaWYodHJhY2UpIGZwcmludGYoY3BfZXJyLCAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgXHIiKTsKWCsgICAgdGZyZWUoZGMpOwpY KyAgICB0ZnJlZSh0ZHZlYyk7ClgrICAgIHRmcmVlKGZkdmVjKTsKWCsKWCsj aWZkZWYgS0VFUFdJTkRPVwpYKyAgICBmID0gYWxsb2Moc3RydWN0IGR2ZWMp OwpYKyAgICBaRVJPKGYsIHN0cnVjdCBkdmVjKTsKWCsgICAgZi0+dl9uYW1l ID0gY29weSgid2luIik7ClgrICAgIGYtPnZfdHlwZSA9IFNWX05PVFlQRTsK WCsgICAgZi0+dl9mbGFncyA9IChWRl9SRUFMIHwgVkZfUEVSTUFORU5UKTsK WCsgICAgZi0+dl9sZW5ndGggPSB0bGVuOwpYKyAgICBmLT52X3JlYWxkYXRh ID0gd2luOwpYKyAgICB2ZWNfbmV3KGYpOwpYKyNlbHNlClgrICAgIHRmcmVl KHdpbik7ClgrI2VuZGlmClgrCQpYKyAgICByZXR1cm47ClgrfQpYKwpFTkQt b2Ytc3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwyCmVjaG8geCAtIHNwaWNlL2Zp bGVzL3BhdGNoLXV0aWxfc2tlbGV0b25fbWFrZV9kZWZfYmQKc2VkICdzL15Y Ly8nID5zcGljZS9maWxlcy9wYXRjaC11dGlsX3NrZWxldG9uX21ha2VfZGVm X2JkIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtdXRpbF9za2VsZXRv bl9tYWtlX2RlZl9iZCcKWC0tLSB1dGlsL3NrZWxldG9uL21ha2VfZGVmLmJk Lm9yaWcJVGh1IEp1bCAyOSAxNjozNToxOCAxOTkzClgrKysgdXRpbC9za2Vs ZXRvbi9tYWtlX2RlZi5iZAlUaHUgSnVsIDE3IDAwOjQ3OjUxIDIwMDMKWEBA IC04LDcgKzgsNyBAQApYIFBBVEhfU0VQCT0gLwpYIFBTCQk9IC8KWCBSRVZJ U0lPTgk9ClgtVkVSU0lPTgkJPSAzZjQKWCtWRVJTSU9OCQk9IDNmNQpYIFZF UlNJT05fUkVWSVNJT049ICQoVkVSU0lPTikkKFJFVklTSU9OKQpYIE5PVElD RQkJPQpYIFRPUAkJPSAvcHJvamVjdHMvc3BpY2UzL3NwaWNlJChWRVJTSU9O KQpFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtdXRpbF9za2VsZXRvbl9tYWtl X2RlZl9iZAplY2hvIHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0 ZV9taXNjY29tc19jCnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gt c3JjX2xpYl9mdGVfbWlzY2NvbXNfYyA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVz L3BhdGNoLXNyY19saWJfZnRlX21pc2Njb21zX2MnClgkT3BlbkJTRDogcGF0 Y2gtc3JjX2xpYl9mdGVfbWlzY2NvbXNfYyx2IDEuMSAyMDAzLzA0LzE0IDEw OjI4OjAzIGF2c20gRXhwICQKWC0tLSBzcmMvbGliL2Z0ZS9taXNjY29tcy5j Lm9yaWcJTW9uIEFwciAxNCAxMToxOToyNCAyMDAzClgrKysgc3JjL2xpYi9m dGUvbWlzY2NvbXMuYwlNb24gQXByIDE0IDExOjIxOjAwIDIwMDMKWEBAIC0y ODYsNyArMjg2LDcgQEAgY29tX3F1aXQod2wpClggICAgICAgICAgICAgZnBy aW50ZihjcF9vdXQsIApYICAgICAgICAgICAgICAgICAiXG5BcmUgeW91IHN1 cmUgeW91IHdhbnQgdG8gcXVpdCAoeWVzKT8gIik7ClggICAgICAgICAgICAg KHZvaWQpIGZmbHVzaChjcF9vdXQpOwpYLSAgICAgICAgICAgIGlmICghZmdl dHMoYnVmLCBCU0laRV9TUCwgc3RkaW4pKSB7ClgrICAgICAgICAgICAgaWYg KCFmZ2V0cyhidWYsIHNpemVvZiBidWYsIHN0ZGluKSkgewpYICAgICAgICAg ICAgICAgICBjbGVhcmVycihzdGRpbik7ClggICAgICAgICAgICAgICAgICpi dWYgPSAneSc7ClggICAgICAgICAgICAgfQpFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfbWlzY2NvbXNfYwplY2hvIHggLSBzcGljZS9m aWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9ncmlkX2MKc2VkICdzL15YLy8nID5z cGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9ncmlkX2MgPDwgJ0VORC1v Zi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9ncmlkX2MnClgtLS0g c3JjL2xpYi9mdGUvZ3JpZC5jLm9yaWcJU3VuIEFwciAyNSAxNjo1MzoxMSAx OTkzClgrKysgc3JjL2xpYi9mdGUvZ3JpZC5jCVRodSBKdWwgMTcgMDA6NDc6 NTEgMjAwMwpYQEAgLTEyMzAsNyArMTIzMCwxMCBAQApYIApYICAgICAvKiBT ZXRMaW5lc3R5bGUoMSk7IHRha2VzIHRvbyBsb25nICovClggICAgIC8qIFBy b2JsZW1zIHdpdGggU3VucyBvbiB2ZXJ5IGxhcmdlIHJhZGlpICYmIGxpbmVz dHlsZSAqLwpYLSAgICBTZXRMaW5lc3R5bGUoMCk7ClgrICAgIC8qIFNldExp bmVzdHlsZSgwKTsgKi8KWCsgICAgLyogbGluZXN0eWxlIDEgbG9va3MgYmV0 dGVyClgrICAgICAgIEd1ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAqLwpY KyAgICBTZXRMaW5lc3R5bGUoMSk7ClggClggICAgIC8qIE5vdyBwbG90IGFs bCB0aGUgYXJjIHNldHMuICBHbyBhcyBoaWdoIGFzIDUgdGltZXMgdGhlIHJh ZGl1cyB0aGF0ClggICAgICAqIHdpbGwgZml0IG9uIHRoZSBzY3JlZW4uICBU aGUgYmFzZSBtYWduaXR1ZGUgaXMgb25lIG1vcmUgdGhhbiAKWEBAIC0xNDA5 LDcgKzE0MTIsMTAgQEAKWCAgICAgLyogTGV0J3MgYmUgbGF6eSBhbmQganVz dCBkcmF3IGV2ZXJ5dGhpbmcgLS0gd2Ugd29uJ3QgZ2V0IGNhbGxlZCB0b28K WCAgICAgICogbXVjaCBhbmQgdGhlIGNpcmNsZXMgZ2V0IGNsaXBwZWQgYW55 d2F5Li4uClggICAgICAqLwpYLSAgICBTZXRDb2xvcigxOCk7ClgrICAgIC8q IFNldENvbG9yKDE4KTsgKi8KWCsgICAgLyogZHJhdyBldmVyeXRoaW5nIGlu IGJsYWNrClgrICAgICAgIEd1ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAq LwpYKyAgICBTZXRDb2xvcigxKTsKWCAKWCAgICAgY2xpcGFyYygoZG91Ymxl KSAoY2VudHggKyB4b2Zmc2V0ICsgcmFkb2ZmIC0gcmFkKSwKWCAJICAgIChk b3VibGUpIChjZW50eSArIHlvZmZzZXQpLCByYWQsIDIqYW5nbGUsClhAQCAt MTQyNCw3ICsxNDMwLDEwIEBAClggICAgICAgICAgICAgTV9QSSAtIDIgKiBh bmdsZSwgY2VudHgsIGNlbnR5LCBtYXhyYWQsIDApOwpYIApYICAgICAvKiBE cmF3IHRoZSB1cHBlciBhbmQgbG93ZXIgY2lyY2xlcy4gICovClgtICAgIFNl dENvbG9yKDE5KTsKWCsgICAgLyogU2V0Q29sb3IoMTkpOyAqLwpYKyAgICAv KiBkcmF3IGV2ZXJ5dGhpbmcgaW4gYmxhY2sKWCsgICAgICAgR3VlbnRoZXIg Um9laHJpY2ggMjItSmFuLTk5ICovClgrICAgIFNldENvbG9yKDEpOwpYICAg ICBhY2xpcCA9IGNsaXBhcmMoKGRvdWJsZSkgKGNlbnR4ICsgeG9mZnNldCAr IHJhZG9mZiksClggCSAgICAoZG91YmxlKSAoY2VudHkgKyB5b2Zmc2V0ICsg aXJhZCksIGlyYWQsClggCSAgICAoZG91YmxlKSAoTV9QSSAqIDEuNSArIDIg KiBpYW5nbGUpLApYQEAgLTE0NDEsNyArMTQ1MCwxMCBAQApYIAlhZGRkZWds YWJlbChncmFwaCwgbmRlZywgeGxhYiwgeWxhYiwKWCAJICAgIGdyX3hjZW50 ZXIsIGdyX3ljZW50ZXIsIGdyX3hjZW50ZXIsIGdyX3ljZW50ZXIpOwpYICAq LwpYLQlTZXRDb2xvcigxOSk7ClgrCS8qIFNldENvbG9yKDE5KTsgKi8KWCsJ LyogZHJhdyBldmVyeXRoaW5nIGluIGJsYWNrClgrCSAgIEd1ZW50aGVyIFJv ZWhyaWNoIDIyLUphbi05OSAqLwpYKwlTZXRDb2xvcigxKTsKWCAJfQpYICAg ICB9ClggICAgIGFjbGlwID0gY2xpcGFyYygoZG91YmxlKSAoY2VudHggKyB4 b2Zmc2V0ICsgcmFkb2ZmKSwKWEBAIC0xNDU1LDcgKzE0NjcsMTAgQEAKWCAJ U2V0Q29sb3IoMSk7ClggCWFkZGRlZ2xhYmVsKGdyYXBoLCBuZGVnLCB4bGFi LCB5bGFiLApYIAkgICAgZ3JfeGNlbnRlciwgZ3JfeWNlbnRlciwgZ3JfeGNl bnRlciwgZ3JfeWNlbnRlcik7ClgtCVNldENvbG9yKDE5KTsKWCsJLyogU2V0 Q29sb3IoMTkpOyAqLwpYKwkvKiBkcmF3IGV2ZXJ5dGhpbmcgaW4gYmxhY2sK WCsJICAgR3VlbnRoZXIgUm9laHJpY2ggMjItSmFuLTk5ICovClgrCVNldENv bG9yKDEpOwpYICAgICB9ClggICAgIApYICAgICAvKiBOb3cgdG9zcyB0aGUg bGFiZWxzIG9uLi4uICovCkVORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNf bGliX2Z0ZV9ncmlkX2MKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3Jj X2luY2x1ZGVfbWlzY19oCnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0 Y2gtc3JjX2luY2x1ZGVfbWlzY19oIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2luY2x1ZGVfbWlzY19oJwpYKioqIHNyYy9pbmNsdWRlL21p c2MuaC5vcmlnCVRodSBEZWMgIDEgMDk6MTc6MDIgMTk5NApYLS0tIHNyYy9p bmNsdWRlL21pc2MuaAlTdW4gTWFyIDMxIDEyOjMyOjU4IDE5OTYKWCoqKioq KioqKioqKioqKgpYKioqIDg2LDkyICoqKioKWC0tLSA4Niw5NCAtLS0tClgg IGV4dGVybiBjaGFyICpyZWFsbG9jKCk7ClggIGV4dGVybiBjaGFyICpnZXRl bnYoKTsKWCAgZXh0ZXJuIGludCBlcnJubzsKWCsgI2lmbmRlZiBfX0ZyZWVC U0RfXwpYICBleHRlcm4gY2hhciAqc3lzX2Vycmxpc3RbXTsKWCsgI2VuZGlm ClggIGV4dGVybiBjaGFyICpnZXRlbnYoKTsKWCAgZXh0ZXJuIGNoYXIgKmdl dHdkKCk7ClggIGV4dGVybiBpbnQgcmFuZCgpOwpYKioqKioqKioqKioqKioq ClgqKiogMTExLDEyMiAqKioqClgtLS0gMTExLDEyNCAtLS0tClggICMgICAg ZW5kaWYgLyogY2xlYXJlcnIgKi8KWCAgIyAgZW5kaWYgLyogSEFTX0NMRUFS RVJSICovClggIApYKyAjaWZuZGVmIF9fRnJlZUJTRF9fClggICMgIGlmbmRl ZiBiemVybwpYICBleHRlcm4gaW50IGJ6ZXJvKCk7ClggICMgIGVuZGlmClgg ICMgIGlmbmRlZiBiY29weQpYICBleHRlcm4gdm9pZCBiY29weSgpOwpYICAj ICBlbmRpZgpYKyAjZW5kaWYgLyogX19GcmVlQlNEX18gKi8KWCAgClggICMg IGlmbmRlZiBpbmRleApYICAjICAgIGlmZGVmIEhBU19JTkRFWApFTkQtb2Yt c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2luY2x1ZGVfbWlzY19oCmVjaG8geCAt IHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2RldmljZV9jCnNlZCAn cy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfZGV2aWNl X2MgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9k ZXZpY2VfYycKWC0tLSBzcmMvbGliL2Z0ZS9kZXZpY2UuYy5vcmlnCVRodSBK dWwgMjkgMjE6MDk6NTkgMTk5MwpYKysrIHNyYy9saWIvZnRlL2RldmljZS5j CVRodSBKdWwgMTcgMDA6NDc6NTAgMjAwMwpYQEAgLTY2MSw3ICs2NjEsOSBA QApYICAgICB9ClggClggICAgIGR2ID0gZnRfZXZhbHVhdGUobjItPnBuX3Jp Z2h0KTsKWC0gICAgZnJlZV9wbm9kZShuYW1lcyk7ClgrICAgIC8qIHByZXZl bnQgbmFtZXMgZnJvbSBnZXR0aW5nIGZyZWVkIHR3aWNlClgrICAgICAgIEd1 ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAqLwpYKyAgICAvKiBmcmVlX3Bu b2RlKG5hbWVzKTsgKi8KWCAgICAgaWYgKCFkdikKWCAJcmV0dXJuOwpYICAg ICBpZiAoZHYtPnZfbGVuZ3RoIDwgMSkgewpFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfZGV2aWNlX2MKZWNobyB4IC0gc3BpY2UvZmls ZXMvcGF0Y2gtc3JjX2Jpbl9zY29udmVydF9jCnNlZCAncy9eWC8vJyA+c3Bp Y2UvZmlsZXMvcGF0Y2gtc3JjX2Jpbl9zY29udmVydF9jIDw8ICdFTkQtb2Yt c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2Jpbl9zY29udmVydF9jJwpYLS0tIHNy Yy9iaW4vc2NvbnZlcnQuYy5vcmlnCU1vbiBTZXAgMTQgMjE6MzA6NDEgMTk5 MgpYKysrIHNyYy9iaW4vc2NvbnZlcnQuYwlUaHUgSnVsIDE3IDAwOjQ3OjUw IDIwMDMKWEBAIC04MCwxOSArODAsMTkgQEAKWCAKWCAgICAgICAgIGNhc2Ug MTogcHJpbnRmKCJJbnB1dCBmaWxlOiAiKTsKWCAgICAgICAgICAgICAodm9p ZCkgZmZsdXNoKHN0ZG91dCk7ClgtICAgICAgICAgICAgKHZvaWQpIGdldHMo YnVmKTsKWCsgICAgICAgICAgICAodm9pZCkgZmdldHMoYnVmLEJTSVpFX1NQ LHN0ZGluKTsKWCAgICAgICAgICAgICBzZiA9IGNvcHkoYnVmKTsKWCAgICAg ICAgICAgICBwcmludGYoIklucHV0IHR5cGU6ICIpOwpYICAgICAgICAgICAg ICh2b2lkKSBmZmx1c2goc3Rkb3V0KTsKWC0gICAgICAgICAgICAodm9pZCkg Z2V0cyhidWYpOwpYKyAgICAgICAgICAgICh2b2lkKSBmZ2V0cyhidWYsQlNJ WkVfU1Asc3RkaW4pOwpYICAgICAgICAgICAgIGYgPSBidWZbMF07ClggICAg ICAgICAgICAgcHJpbnRmKCJPdXRwdXQgZmlsZTogIik7ClggICAgICAgICAg ICAgKHZvaWQpIGZmbHVzaChzdGRvdXQpOwpYLSAgICAgICAgICAgICh2b2lk KSBnZXRzKGJ1Zik7ClgrICAgICAgICAgICAgKHZvaWQpIGZnZXRzKGJ1ZixC U0laRV9TUCxzdGRpbik7ClggICAgICAgICAgICAgYWYgPSBjb3B5KGJ1Zik7 ClggICAgICAgICAgICAgcHJpbnRmKCJPdXRwdXQgdHlwZTogIik7ClggICAg ICAgICAgICAgKHZvaWQpIGZmbHVzaChzdGRvdXQpOwpYLSAgICAgICAgICAg ICh2b2lkKSBnZXRzKGJ1Zik7ClgrICAgICAgICAgICAgKHZvaWQpIGZnZXRz KGJ1ZixCU0laRV9TUCxzdGRpbik7ClggICAgICAgICAgICAgdCA9IGJ1Zlsw XTsKWCAgICAgICAgICAgICBicmVhazsKWCAgICAgICAgIGRlZmF1bHQ6CkVO RC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfYmluX3Njb252ZXJ0X2MKZWNo byB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfaW5wX2MKc2Vk ICdzL15YLy8nID5zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9pbnBf YyA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2lu cF9jJwpYLS0tIHNyYy9saWIvZnRlL2lucC5jLm9yaWcJVGh1IEFwciAyOSAx ODowNjoyOCAxOTkzClgrKysgc3JjL2xpYi9mdGUvaW5wLmMJVGh1IEp1bCAx NyAwMDo0Nzo1MCAyMDAzClhAQCAtNjY2LDcgKzY2Niw3IEBAClggClggICAg IGZwcmludGYoY3Bfb3V0LCAicnVuIGNpcmN1aXQ/ICIpOwpYICAgICBmZmx1 c2goY3Bfb3V0KTsKWC0gICAgKHZvaWQpIGdldHMoYnVmKTsKWCsgICAgKHZv aWQpIGZnZXRzKGJ1ZixCU0laRV9TUCxzdGRpbik7ClggICAgIGlmIChidWZb MF0gIT0gJ24nKSB7ClggICAgICAgZnByaW50ZihjcF9vdXQsICJydW5uaW5n IGNpcmN1aXRcbiIpOwpYICAgICAgIGNvbV9ydW4oTlVMTCk7CkVORC1vZi1z cGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9pbnBfYwplY2hvIHggLSBz cGljZS9maWxlcy9wYXRjaC11dGlsX2J1aWxkCnNlZCAncy9eWC8vJyA+c3Bp Y2UvZmlsZXMvcGF0Y2gtdXRpbF9idWlsZCA8PCAnRU5ELW9mLXNwaWNlL2Zp bGVzL3BhdGNoLXV0aWxfYnVpbGQnClgtLS0gdXRpbC9idWlsZC5vcmlnCVRo dSBKdWwgMjkgMDM6NDY6MzkgMTk5MwpYKysrIHV0aWwvYnVpbGQJVGh1IEp1 bCAxNyAwMDo0Nzo1MCAyMDAzClhAQCAtOTYsNyArOTYsNyBAQApYIApYIFRN UF9MRUFERVI9IiR7VE1QX0RJUn0vYnVpbGRsJCQiClggVE1QX1RSQUlMRVI9 IiR7VE1QX0RJUn0vYnVpbGR0JCQiClgtdHJhcCAncm0gLWYgJHtUTVBfTEVB REVSfSAke1RNUF9UUkFJTEVSfTsgZXhpdCAxJyAxIDIgMyA0IDYgNyA4IDkg MTAgMTIgMTMgMTQgMTUKWCt0cmFwICdybSAtZiAke1RNUF9MRUFERVJ9ICR7 VE1QX1RSQUlMRVJ9OyBleGl0IDEnIDEgMiAzIDQgNiA3IDggMTAgMTIgMTMg MTQgMTUKWCBlY2hvID4gIiR7VE1QX1RSQUlMRVJ9IgpYIEJBRD1mYWxzZQpY IERFQlVHPQpFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtdXRpbF9idWlsZApl Y2hvIHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9yZXNvdXJj ZV9jCnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9m dGVfcmVzb3VyY2VfYyA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNy Y19saWJfZnRlX3Jlc291cmNlX2MnClgtLS0gc3JjL2xpYi9mdGUvcmVzb3Vy Y2UuYy5vcmlnCVdlZCBBcHIgMjggMTc6Mzk6MDMgMTk5MwpYKysrIHNyYy9s aWIvZnRlL3Jlc291cmNlLmMJVGh1IEp1bCAxNyAwMDo0Nzo1MCAyMDAzClhA QCAtMzY5LDcgKzM2OSw5IEBAClggCWxvbmcgeDsKWCAJU0lHTkFMX1RZUEUJ KCpvcmlnX3NpZ25hbCkoICk7ClggClgrI2lmbmRlZiBfX0ZyZWVCU0RfXwpY IAlpZiAoZ2V0ZW52KCJTUElDRV9OT19EQVRBU0VHX0NIRUNLIikpClgrI2Vu ZGlmClggCQlyZXR1cm4gMDsKWCAKWCAJbG93ID0gMDsKRU5ELW9mLXNwaWNl L2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX3Jlc291cmNlX2MKZWNobyB4IC0g c3BpY2UvZmlsZXMvcGF0Y2gtcHNtb2RlbApzZWQgJ3MvXlgvLycgPnNwaWNl L2ZpbGVzL3BhdGNoLXBzbW9kZWwgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9w YXRjaC1wc21vZGVsJwpYIyAgc3BpY2UzZjQvM2Y1IHBhdGNoIHRvIGFkZCBs ZXZlbCAyIEpGRVQgbW9kZWwKWCMgIEp1bmUgMjIsIDE5OTQKWCMgIEFudGhv bnkgUGFya2VyICh0b255cEBtcGNlLm1xLmVkdS5hdSkKWCMgIE1hY3F1YXJp ZSBVbml2ZXJzaXR5LCBTeWRuZXkgQXVzdHJhbGlhIDIxMDkgClgjClhkaWZm IC1ydU4gLi4vd29yay5vcmlnL2NvbmYvZGVmYXVsdHMgLi9jb25mL2RlZmF1 bHRzClgtLS0gLi4vd29yay5vcmlnL2NvbmYvZGVmYXVsdHMJVGh1IEp1bCAy OSAxNjozMzo1NiAxOTkzClgrKysgLi9jb25mL2RlZmF1bHRzCVN1biBNYXkg MTggMTM6NDY6NDcgMjAwMwpYQEAgLTI0Niw2ICsyNDYsNyBAQApYICMJCWlu ZDoJaW5kdWN0b3IKWCAjCQlpc3JjOgljdXJyZW50IHNvdXJjZQpYICMJCWpm ZXQ6CUp1bmN0aW9uIEZFVApYKyMJCWpmZXQyOglQUyBNb2RlbCBKdW5jdGlv biBGRVQvTUVTRkVUClggIwkJbWVzOglNRVMgRkVUIChHYUFzKQpYICMJCW1v czE6CU1PUywgc2ltcGxlc3QgYW5hbHl0aWMgbW9kZWwKWCAjCQltb3MyOglN T1MsIHNpbXBsZXN0ClhAQCAtMjYwLDcgKzI2MSw3IEBAClggIwkJdnNyYzoJ dm9sdGFnZSBzb3VyY2UKWCAKWCBERVZJQ0VTCQk9IGFzcmMgYmp0IGJzaW0x IGJzaW0yIGNhcCBjY2NzIGNjdnMgY3N3IGRpbyBpbmQgaXNyYyBcClgtCQkg IGpmZXQgbHRyYSBtZXMgbW9zMSBtb3MyIG1vczMgbW9zNiByZXMgc3cgdHJh IHVyYyBcClgrCQkgIGpmZXQgamZldDIgbHRyYSBtZXMgbW9zMSBtb3MyIG1v czMgbW9zNiByZXMgc3cgdHJhIHVyYyBcClggCQkgIHZjY3MgdmN2cyB2c3Jj ClggClggIwlBTkFMWVNFUyBsaXN0IHRoZSBhbmFseXNpcyB0eXBlcyB0aGF0 IHlvdSB3YW50IHRvIGhhdmUgYXZhaWxhYmxlIGluClhkaWZmIC1ydU4gLi4v d29yay5vcmlnL3NyYy9iaW4vY29uZmlnLmMgLi9zcmMvYmluL2NvbmZpZy5j ClgtLS0gLi4vd29yay5vcmlnL3NyYy9iaW4vY29uZmlnLmMJVGh1IEp1bCAy OSAxNjozNjo0OSAxOTkzClgrKysgLi9zcmMvYmluL2NvbmZpZy5jCVN1biBN YXkgMTggMTM6NDY6NDcgMjAwMwpYQEAgLTcxLDYgKzcxLDcgQEAKWCAjaW5j bHVkZSAibW9zMml0Zi5oIgpYICNpbmNsdWRlICJtb3MzaXRmLmgiClggI2lu Y2x1ZGUgImpmZXRpdGYuaCIKWCsjaW5jbHVkZSAiamZldDJpdGYuaCIKWCAj aW5jbHVkZSAibWVzaXRmLmgiClggI2luY2x1ZGUgImx0cmFpdGYuaCIKWCAj aW5jbHVkZSAidHJhaXRmLmgiClhAQCAtMTAzLDYgKzEwNCw3IEBAClggI2lu Y2x1ZGUgIm1vczIvbW9zMml0Zi5oIgpYICNpbmNsdWRlICJtb3MzL21vczNp dGYuaCIKWCAjaW5jbHVkZSAiamZldC9qZmV0aXRmLmgiClgrI2luY2x1ZGUg ImpmZXQyL2pmZXQyaXRmLmgiClggI2luY2x1ZGUgIm1lcy9tZXNpdGYuaCIK WCAjaW5jbHVkZSAibHRyYS9sdHJhaXRmLmgiClggI2luY2x1ZGUgInRyYS90 cmFpdGYuaCIKWEBAIC0yMDcsNiArMjA5LDkgQEAKWCAjZW5kaWYKWCAjaWZk ZWYgREVWX2pmZXQKWCAgICAgICAgICZKRkVUaW5mbywKWCsjZW5kaWYKWCsj aWZkZWYgREVWX2pmZXQyClgrICAgICAgICAmSkZFVDJpbmZvLApYICNlbmRp ZgpYICNpZmRlZiBERVZfbHRyYQpYICAgICAgICAgJkxUUkFpbmZvLApYZGlm ZiAtcnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0Mi5j IC4vc3JjL2xpYi9kZXYvamZldDIvamZldDIuYwpYLS0tIC4uL3dvcmsub3Jp Zy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0Mi5jCVdlZCBEZWMgMzEgMTk6MDA6 MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZldDIvamZldDIuYwlUdWUg SnVuIDIxIDE0OjM0OjM0IDE5OTQKWEBAIC0wLDAgKzEsNzYgQEAKWCsvKioq KioqKioqKgpYK0Jhc2VkIG9uIGpmZXQuYyAKWCtDb3B5cmlnaHQgMTk5MCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwg cmlnaHRzIHJlc2VydmVkLgpYK0F1dGhvcjogMTk4NSBUaG9tYXMgTC4gUXVh cmxlcwpYKwpYK01vZGlmaWVkIHRvIGFkZCBQUyBtb2RlbCBhbmQgbmV3IHBh cmFtZXRlciBkZWZpbml0aW9ucyAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsg ICBDb3B5cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5l eSBBdXN0cmFsaWEuClgrICAgMTAgRmViIDE5OTQ6ICBQYXJhbWV0ZXIgZGVm aW5pdGlvbnMgY2FsbGVkIGZyb20gamZldHBhcm0uaApYKyAgICAgICAgICAg ICAgICAgRXh0cmEgc3RhdGUgdmVjdG9ycyBhZGRlZCB0byBKRkVUMnBUYWJs ZQpYKyoqKioqKioqKiovClgrClgrI2luY2x1ZGUgInNwaWNlLmgiClgrI2lu Y2x1ZGUgPHN0ZGlvLmg+ClgrI2luY2x1ZGUgImlmc2ltLmgiClgrI2luY2x1 ZGUgImRldmRlZnMuaCIKWCsjaW5jbHVkZSAiamZldDJkZWZzLmgiClgrI2lu Y2x1ZGUgInN1ZmZpeC5oIgpYKwpYK0lGcGFybSBKRkVUMnBUYWJsZVtdID0g eyAvKiBkZXZpY2UgcGFyYW1ldGVycyAqLyAKWCsgSU9QVSgib2ZmIiwgICAg ICAgICBKRkVUMl9PRkYsICAgICAgICAgICAgSUZfRkxBRywgICAiRGV2aWNl IGluaXRpYWxseSBvZmYiKSwKWCsgSU9QQVUoImljIiwgICAgICAgICBKRkVU Ml9JQywgICAgICAgICAgICAgSUZfUkVBTFZFQywiSW5pdGlhbCBWRFMsVkdT IHZlY3RvciIpLApYKyBJT1BVKCJhcmVhIiwgICAgICAgIEpGRVQyX0FSRUEs ICAgICAgICAgICBJRl9SRUFMLCAgICJBcmVhIGZhY3RvciIpLApYKyBJT1BB VSgiaWMtdmRzIiwgICAgIEpGRVQyX0lDX1ZEUywgICAgICAgICBJRl9SRUFM LCAgICJJbml0aWFsIEQtUyB2b2x0YWdlIiksClgrIElPUEFVKCJpYy12Z3Mi LCAgICAgSkZFVDJfSUNfVkdTLCAgICAgICAgIElGX1JFQUwsICAgIkluaXRp YWwgRy1TIHZvbHJhZ2UiKSwKWCsgSU9QVSgidGVtcCIsICAgICAgICBKRkVU Ml9URU1QLCAgICAgICAgICAgSUZfUkVBTCwgICAiSW5zdGFuY2UgdGVtcGVy YXR1cmUiKSwKWCsgT1BVKCJkcmFpbi1ub2RlIiwgICBKRkVUMl9EUkFJTk5P REUsICAgICAgSUZfSU5URUdFUiwiTnVtYmVyIG9mIGRyYWluIG5vZGUiKSwK WCsgT1BVKCJnYXRlLW5vZGUiLCAgICBKRkVUMl9HQVRFTk9ERSwgICAgICAg SUZfSU5URUdFUiwiTnVtYmVyIG9mIGdhdGUgbm9kZSIpLApYKyBPUFUoInNv dXJjZS1ub2RlIiwgIEpGRVQyX1NPVVJDRU5PREUsICAgICBJRl9JTlRFR0VS LCJOdW1iZXIgb2Ygc291cmNlIG5vZGUiKSwKWCsgT1BVKCJkcmFpbi1wcmlt ZS1ub2RlIiwgSkZFVDJfRFJBSU5QUklNRU5PREUsIElGX0lOVEVHRVIsIklu dGVybmFsIGRyYWluIG5vZGUiKSwKWCsgT1BVKCJzb3VyY2UtcHJpbWUtbm9k ZSIsSkZFVDJfU09VUkNFUFJJTUVOT0RFLElGX0lOVEVHRVIsIkludGVybmFs IHNvdXJjZSBub2RlIiksClgrIE9QKCJ2Z3MiLCAgIEpGRVQyX1ZHUywgIElG X1JFQUwsICJWb2x0YWdlIEctUyIpLApYKyBPUCgidmdkIiwgICBKRkVUMl9W R0QsICBJRl9SRUFMLCAiVm9sdGFnZSBHLUQiKSwKWCsgT1AoImlnIiwgICAg SkZFVDJfQ0csICAgSUZfUkVBTCwgIkN1cnJlbnQgYXQgZ2F0ZSBub2RlIiks ClgrIE9QKCJpZCIsICAgIEpGRVQyX0NELCAgIElGX1JFQUwsICJDdXJyZW50 IGF0IGRyYWluIG5vZGUiKSwKWCsgT1AoImlzIiwgICAgSkZFVDJfQ1MsICAg SUZfUkVBTCwgIlNvdXJjZSBjdXJyZW50IiksClgrIE9QKCJpZ2QiLCAgIEpG RVQyX0NHRCwgIElGX1JFQUwsICJDdXJyZW50IEctRCIpLApYKyBPUCgiZ20i LCAgICBKRkVUMl9HTSwgICBJRl9SRUFMLCAiVHJhbnNjb25kdWN0YW5jZSIp LApYKyBPUCgiZ2RzIiwgICBKRkVUMl9HRFMsICBJRl9SRUFMLCAiQ29uZHVj dGFuY2UgRC1TIiksClgrIE9QKCJnZ3MiLCAgIEpGRVQyX0dHUywgIElGX1JF QUwsICJDb25kdWN0YW5jZSBHLVMiKSwKWCsgT1AoImdnZCIsICAgSkZFVDJf R0dELCAgSUZfUkVBTCwgIkNvbmR1Y3RhbmNlIEctRCIpLApYKyBPUFUoInFn cyIsICBKRkVUMl9RR1MsICBJRl9SRUFMLCAiQ2hhcmdlIHN0b3JhZ2UgRy1T IGp1bmN0aW9uIiksClgrIE9QVSgicWdkIiwgIEpGRVQyX1FHRCwgIElGX1JF QUwsICJDaGFyZ2Ugc3RvcmFnZSBHLUQganVuY3Rpb24iKSwKWCsgT1BVKCJj cWdzIiwgSkZFVDJfQ1FHUywgSUZfUkVBTCwgIkNhcGFjaXRhbmNlIGR1ZSB0 byBjaGFyZ2Ugc3RvcmFnZSBHLVMganVuY3Rpb24iKSwKWCsgT1BVKCJjcWdk IiwgSkZFVDJfQ1FHRCwgSUZfUkVBTCwgIkNhcGFjaXRhbmNlIGR1ZSB0byBj aGFyZ2Ugc3RvcmFnZSBHLUQganVuY3Rpb24iKSwKWCsgT1BVKCJwIiwgICAg SkZFVDJfUE9XRVIsSUZfUkVBTCwgIlBvd2VyIGRpc3NpcGF0ZWQgYnkgdGhl IEpGRVQyIiksClgrIE9QVSgidnRyYXAiLEpGRVQyX1ZUUkFQLElGX1JFQUws ICJRdWllc2NlbnQgZHJhaW4gZmVlZGJhY2sgcG90ZW50aWFsIiksClgrIE9Q VSgidnBhdmUiLEpGRVQyX1BBVkUsIElGX1JFQUwsICJRdWllc2NlbnQgcG93 ZXIgZGlzc2lwYXRpb24iKSwKWCt9OwpYKwpYK0lGcGFybSBKRkVUMm1QVGFi bGVbXSA9IHsgLyogbW9kZWwgcGFyYW1ldGVycyAqLwpYKyBPUCgidHlwZSIs ICAgICBKRkVUMl9NT0RfVFlQRSwgICAgSUZfU1RSSU5HLCAiTi10eXBlIG9y IFAtdHlwZSBKRkVUMiBtb2RlbCIpLApYKyBJT1AoIm5qZiIsICAgICBKRkVU Ml9NT0RfTkpGLCAgICAgSUZfRkxBRywiTiB0eXBlIEpGRVQyIG1vZGVsIiks ClgrIElPUCgicGpmIiwgICAgIEpGRVQyX01PRF9QSkYsICAgICBJRl9GTEFH LCJQIHR5cGUgSkZFVDIgbW9kZWwiKSwKWCsgSU9QUigidnQwIiwgICAgSkZF VDJfTU9EX1ZUTywgICAgIElGX1JFQUwsIlRocmVzaG9sZCB2b2x0YWdlIiks ClgrIElPUFIoInZiaSIsICAgIEpGRVQyX01PRF9QQiwgICAgICBJRl9SRUFM LCJHYXRlIGp1bmN0aW9uIHBvdGVudGlhbCIpLApYKyNkZWZpbmUgIFBBUkFN KGNvZGUsaWQsZmxhZyxyZWYsZGVmYXVsdCxkZXNjcmlwKSBJT1AoY29kZSxp ZCxJRl9SRUFMLGRlc2NyaXApLApYKyNkZWZpbmUgUEFSQU1BKGNvZGUsaWQs ZmxhZyxyZWYsZGVmYXVsdCxkZXNjcmlwKSBJT1BBKGNvZGUsaWQsSUZfUkVB TCxkZXNjcmlwKSwKWCsjaW5jbHVkZSAiamZldDJwYXJtLmgiClgrClgrIE9Q VSgiZ2QiLCBKRkVUMl9NT0RfRFJBSU5DT05EVUNULCBJRl9SRUFMLCJEcmFp biBjb25kdWN0YW5jZSIpLApYKyBPUFUoImdzIiwgSkZFVDJfTU9EX1NPVVJD RUNPTkRVQ1QsSUZfUkVBTCwiU291cmNlIGNvbmR1Y3RhbmNlIiksClgrIElP UFUoInRub20iLCAgIEpGRVQyX01PRF9UTk9NLCAgICBJRl9SRUFMLCJwYXJh bWV0ZXIgbWVhc3VyZW1lbnQgdGVtcGVyYXR1cmUiKSwKWCt9OwpYKwpYKwpY K2NoYXIgKkpGRVQybmFtZXNbXSA9IHsKWCsgICAgIkRyYWluIiwKWCsgICAg IkdhdGUiLApYKyAgICAiU291cmNlIgpYK307ClgrClgraW50CUpGRVQyblNp emUgPSBOVU1FTEVNUyhKRkVUMm5hbWVzKTsKWCtpbnQJSkZFVDJwVFNpemUg PSBOVU1FTEVNUyhKRkVUMnBUYWJsZSk7ClgraW50CUpGRVQybVBUU2l6ZSA9 IE5VTUVMRU1TKEpGRVQybVBUYWJsZSk7ClgraW50CUpGRVQyaVNpemUgPSBz aXplb2YoSkZFVDJpbnN0YW5jZSk7ClgraW50CUpGRVQybVNpemUgPSBzaXpl b2YoSkZFVDJtb2RlbCk7ClhkaWZmIC1ydU4gLi4vd29yay5vcmlnL3NyYy9s aWIvZGV2L2pmZXQyL2pmZXQyYWNsZC5jIC4vc3JjL2xpYi9kZXYvamZldDIv amZldDJhY2xkLmMKWC0tLSAuLi93b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZl dDIvamZldDJhY2xkLmMJV2VkIERlYyAzMSAxOTowMDowMCAxOTY5ClgrKysg Li9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmFjbGQuYwlUdWUgSnVuIDI4IDA4 OjQ3OjQyIDE5OTQKWEBAIC0wLDAgKzEsOTEgQEAKWCsvKioqKioqKioqKgpY K0Jhc2VkIG9uIGpmZXRhY2xkLmMKWCtDb3B5cmlnaHQgMTk5MCBSZWdlbnRz IG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRz IHJlc2VydmVkLgpYK0F1dGhvcjogMTk4NSBUaG9tYXMgTC4gUXVhcmxlcwpY KwpYK01vZGlmaWVkIHRvIGFkZCBQUyBtb2RlbCBhbmQgbmV3IHBhcmFtZXRl ciBkZWZpbml0aW9ucyAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsgICBDb3B5 cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5leSBBdXN0 cmFsaWEuClgrICAgMTAgRmViIDE5OTQ6ICBOZXcgY2FsbCB0byBQU2FjbG9h ZCgpIHdpdGggbWF0cml4IGxvYWRpbmcKWCsqKioqKioqKioqLwpYKwpYKyNp bmNsdWRlICJzcGljZS5oIgpYKyNpbmNsdWRlIDxzdGRpby5oPgpYKyNpbmNs dWRlICJ1dGlsLmgiClgrI2luY2x1ZGUgImNrdGRlZnMuaCIKWCsjaW5jbHVk ZSAiamZldDJkZWZzLmgiClgrI2luY2x1ZGUgInNwZXJyb3IuaCIKWCsjaW5j bHVkZSAicHNtb2RlbC5oIgpYKyNpbmNsdWRlICJzdWZmaXguaCIKWCsKWCtp bnQKWCtKRkVUMmFjTG9hZChpbk1vZGVsLGNrdCkKWCsgICAgR0VObW9kZWwg KmluTW9kZWw7ClgrICAgIHJlZ2lzdGVyIENLVGNpcmN1aXQgKmNrdDsKWCt7 ClgrICAgIHJlZ2lzdGVyIEpGRVQybW9kZWwgKm1vZGVsID0gKEpGRVQybW9k ZWwqKWluTW9kZWw7ClgrICAgIHJlZ2lzdGVyIEpGRVQyaW5zdGFuY2UgKmhl cmU7ClgrICAgIGRvdWJsZSBnZHByOwpYKyAgICBkb3VibGUgZ3NwcjsKWCsg ICAgZG91YmxlIGdtOwpYKyAgICBkb3VibGUgZ2RzOwpYKyAgICBkb3VibGUg Z2dzOwpYKyAgICBkb3VibGUgeGdzOwpYKyAgICBkb3VibGUgZ2dkOwpYKyAg ICBkb3VibGUgeGdkOwpYKyAgICBkb3VibGUgeGdtLCB4Z2RzLCB2Z2QsIHZn cywgY2Q7ClgrClgrICAgIGZvciggOyBtb2RlbCAhPSBOVUxMOyBtb2RlbCA9 IG1vZGVsLT5KRkVUMm5leHRNb2RlbCApIHsKWCsgICAgICAgIApYKyAgICAg ICAgZm9yKCBoZXJlID0gbW9kZWwtPkpGRVQyaW5zdGFuY2VzOyBoZXJlICE9 IE5VTEw7IApYKyAgICAgICAgICAgICAgICBoZXJlID0gaGVyZS0+SkZFVDJu ZXh0SW5zdGFuY2UpIHsKWCsKWCsKWCsgICAgICAgICAgICBnZHByPW1vZGVs LT5KRkVUMmRyYWluQ29uZHVjdCAqIGhlcmUtPkpGRVQyYXJlYTsKWCsgICAg ICAgICAgICBnc3ByPW1vZGVsLT5KRkVUMnNvdXJjZUNvbmR1Y3QgKiBoZXJl LT5KRkVUMmFyZWE7ClgrICAgICAgICAgICAgZ209ICooY2t0LT5DS1RzdGF0 ZTAgKyBoZXJlLT5KRkVUMmdtKSA7ClgrICAgICAgICAgICAgZ2RzPSAqKGNr dC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnZHMpIDsKWCsgICAgICAgICAg ICBnZ3M9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmdncykgOwpY KyAgICAgICAgICAgIHhncz0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpG RVQycWdzKSAqIGNrdC0+Q0tUb21lZ2EgOwpYKyAgICAgICAgICAgIGdnZD0g Kihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQyZ2dkKSA7ClgrICAgICAg ICAgICAgeGdkPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJxZ2Qp ICogY2t0LT5DS1RvbWVnYSA7ClgrClgrICAgICAgICAgICAgdmdzID0gKihj a3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQydmdzKTsKWCsgICAgICAgICAg ICB2Z2QgPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJ2Z2QpOwpY KyAgICAgICAgICAgIGNkID0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpG RVQyY2QpOwpYKyAgICAgICAgICAgIFBTYWNsb2FkKGNrdCxtb2RlbCwgaGVy ZSwgdmdzLCB2Z2QsIGNkLCBja3QtPkNLVG9tZWdhLApYKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdtLCAmeGdtLCAmZ2RzLCAm eGdkcyk7ClgrICAgICAgICAgICAgeGdkcyArPSAqKGNrdC0+Q0tUc3RhdGUw ICsgaGVyZS0+SkZFVDJxZHMpICogY2t0LT5DS1RvbWVnYSA7ClgrICAgICAg ICAgICAgKihoZXJlLT5KRkVUMmRyYWluUHJpbWVEcmFpblByaW1lUHRyICsx KSAgICs9IHhnZHM7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMnNvdXJj ZVByaW1lU291cmNlUHJpbWVQdHIgKzEpICs9IHhnZHMreGdtOwpYKyAgICAg ICAgICAgICooaGVyZS0+SkZFVDJkcmFpblByaW1lR2F0ZVB0ciArMSkgICAg ICAgICArPSAgICAgIHhnbTsKWCsgICAgICAgICAgICAqKGhlcmUtPkpGRVQy ZHJhaW5QcmltZVNvdXJjZVByaW1lUHRyICsxKSAgLT0geGdkcyt4Z207Clgr ICAgICAgICAgICAgKihoZXJlLT5KRkVUMnNvdXJjZVByaW1lR2F0ZVB0ciAr MSkgI
Responsible Changed From-To: freebsd-ports-bugs->maho Over to maintainer.
State Changed From-To: open->closed Committed, thanks!