From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Remi Collet To: git-commits@fedoraproject.org Subject: [rpms/php] f43: v8.4.22 Date: Wed, 03 Jun 2026 05:33:02 GMT Message-ID: <178046478298.1.12244341914459149200.rpms-php-ccd59eeeaa05@fedoraproject.org> List-ID: X-Git-Repo: rpms/php X-Git-Branch: f43 X-Git-Rev: ccd59eeeaa05eeca9e55c5d16741ced6c8c59bfa QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcGhwCkJyYW5jaCA6 IGY0MwpDb21taXQgOiBjY2Q1OWVlZWFhMDVlZWNhOWU1NWM1ZDE2NzQxY2VkNmM4YzU5YmZhCkF1 dGhvciA6IFJlbWkgQ29sbGV0IDxyZW1pQGZlZG9yYXByb2plY3Qub3JnPgpEYXRlICAgOiAyMDI2 LTA2LTAzVDA3OjMyOjU2KzAyOjAwClN0YXRzICA6ICs3NTEvLTc0NiBpbiA1IGZpbGUocykKVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9waHAvYy9jY2Q1OWVlZWFh MDVlZWNhOWU1NWM1ZDE2NzQxY2VkNmM4YzU5YmZhP2JyYW5jaD1mNDMKCkxvZzoKdjguNC4yMgoK LS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCA5YzRmYjg2Li5j YzhmM2M1IDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTIzLDMg KzIzLDUgQEAgVE9ETwogL3BocC04LjQuMjAudGFyLnh6LmFzYwogL3BocC04LjQuMjEudGFyLnh6 CiAvcGhwLTguNC4yMS50YXIueHouYXNjCisvcGhwLTguNC4yMi50YXIueHoKKy9waHAtOC40LjIy LnRhci54ei5hc2MKCmRpZmYgLS1naXQgYS9waHAtOC40LjAtc3lzdHpkYXRhLXYyNC5wYXRjaCBi L3BocC04LjQuMC1zeXN0emRhdGEtdjI0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA2MTc2YThiLi4wMDAwMDAwCi0tLSBhL3BocC04LjQuMC1zeXN0emRhdGEtdjI0LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNzQyICswLDAgQEAKLSMgTGljZW5zZTogTUlUCi0jIGh0dHA6 Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVQKLQotQWRkIHN1cHBvcnQgZm9yIHVzZSBvZiB0 aGUgc3lzdGVtIHRpbWV6b25lIGRhdGFiYXNlLCByYXRoZXIKLXRoYW4gZW1iZWRkaW5nIGEgY29w eS4gIERpc2N1c3NlZCB1cHN0cmVhbSBidXQgd2FzIG5vdCBkZXNpcmVkLgotCi1IaXN0b3J5Ogot cjI0OiBhZGQgaW50ZXJuYWwgVVRDIGlmIHR6ZGF0YSBpcyBtaXNzaW5nCi1yMjM6IGZpeCBwb3Nz aWJsZSBidWZmZXIgb3ZlcmZsb3cKLXIyMjogcmV0cmlldmUgdHpkYXRhIHZlcnNpb24gZnJvbSAv dXNyL3NoYXJlL3pvbmVpbmZvL3R6ZGF0YS56aQotcjIxOiBhZGFwdCBmb3IgdGltZWxpYiAyMDIx LjAzIChpbiA4LjEuMCkKLXIyMDogYWRhcHQgZm9yIHRpbWVsaWIgMjAyMC4wMyAoaW4gOC4wLjEw UkMxKQotcjE5OiBhZGFwdCBmb3IgdGltZWxpYiAyMDIwLjAyIChpbiA4LjAuMGJldGEyKQotcjE4 OiBhZGFwdCBmb3IgYXV0b3Rvb2wgY2hhbmdlIGluIDcuMy4zUkMxCi1yMTc6IGFkYXB0IGZvciB0 aW1lbGliIDIwMTguMDEgKGluIDcuMy4yUkMxKQotcjE2OiBhZGFwdCBmb3IgdGltZWxpYiAyMDE3 LjA2IChpbiA3LjIuM1JDMSkKLXIxNTogYWRhcHQgZm9yIHRpbWVsaWIgMjAxNy4wNWJldGE3IChp biA3LjIuMFJDMSkKLXIxNDogaW1wcm92ZSBjaGVjayBmb3IgdmFsaWQgdHogZmlsZQotcjEzOiBh ZGFwdCBmb3IgdXBzdHJlYW0gY2hhbmdlcyB0byB1c2UgUEhQIGFsbG9jYXRvcgotcjEyOiBhZGFw dCBmb3IgdXBzdHJlYW0gY2hhbmdlcyBmb3IgbmV3IHppYwotcjExOiB1c2UgY2Fub25pY2FsIG5h bWVzIHRvIGF2b2lkIG1vcmUgY2FzZSBzZW5zaXRpdml0eSBpc3N1ZXMKLSAgICAgcm91bmQgbGF0 L2xvbmcgZnJvbSB6b25lLnRhYiB0b3dhcmRzIHplcm8gcGVyIGJ1aWx0aW4gZGIKLXIxMDogbWFr ZSB0aW1lem9uZSBjYXNlIGluc2Vuc2l0aXZlCi1yOTogZml4IGFub3RoZXIgY29tcGlsZSBlcnJv ciB3aXRob3V0IC0td2l0aC1zeXN0ZW0tdHpkYXRhIGNvbmZpZ3VyZWQgKE1pY2hhZWwgSGVpbXBv bGQpCi1yODogZml4IGNvbXBpbGUgZXJyb3Igd2l0aG91dCAtLXdpdGgtc3lzdGVtLXR6ZGF0YSBj b25maWd1cmVkCi1yNzogaW1wcm92ZSBjaGVjayBmb3IgdmFsaWQgdGltZXpvbmUgaWQgdG8gZXhj bHVkZSBkaXJlY3RvcmllcwotcjY6IGZpeCBmZCBsZWFrIGluIHI1LCBmaXggY291bnRyeSBjb2Rl L0JDIGZsYWcgdXNlIGluCi0gICAgdGltZXpvbmVfaWRlbnRpZmllcnNfbGlzdCgpIHVzaW5nIHN5 c3RlbSBkYiwKLSAgICBmaXggdXNlIG9mIFBFQ0wgdGltZXpvbmVkYiB0byBvdmVycmlkZSBzeXN0 ZW0gZGIsCi1yNTogcmV2ZXJ0cyBhZGRpdGlvbiBvZiAiU3lzdGVtL0xvY2FsdGltZSIgZmFrZSB0 em5hbWUuCi0gICAgdXBkYXRlZCBmb3IgNS4zLjAsIHBhcnNlcyB6b25lLnRhYiB0byBwaWNrIHVw IG1hcHBpbmcgYmV0d2VlbgotICAgIHRpbWV6b25lIG5hbWUsIGNvdW50cnkgY29kZSBhbmQgbG9u Zy9sYXQgY29vcmRzCi1yNDogYWRkZWQgIlN5c3RlbS9Mb2NhbHRpbWUiIHR6bmFtZSB3aGljaCB1 c2VzIC9ldGMvbG9jYWx0aW1lCi1yMzogZml4IGEgY3Jhc2ggaWYgL3Vzci9zaGFyZS96b25laW5m byBkb2Vzbid0IGV4aXN0IChSYXBoYWVsIEdlaXNzZXJ0KQotcjI6IGFkZCBmaWxlc3lzdGVtIHRy YXdsIHRvIHNldCB1cCBuYW1lIGFsaWFzIGluZGV4Ci1yMTogaW5pdGlhbCByZXZpc2lvbgotCi0K LWRpZmYgLXVwIC4vZXh0L2RhdGUvY29uZmlnMC5tNC5zeXN0emRhdGEgLi9leHQvZGF0ZS9jb25m aWcwLm00Ci0tLS0gLi9leHQvZGF0ZS9jb25maWcwLm00LnN5c3R6ZGF0YQkyMDI0LTA3LTAzIDE2 OjIxOjIwLjI0MDc4Njg0OCArMDIwMAotKysrIC4vZXh0L2RhdGUvY29uZmlnMC5tNAkyMDI0LTA3 LTAzIDE2OjI1OjE0LjgzODk5NTQ2NCArMDIwMAotQEAgLTgsNiArOCwxOCBAQAotICAgW1BIUF9E QVRFX0NGTEFHUz0iJFBIUF9EQVRFX0NGTEFHUyAtV25vLWltcGxpY2l0LWZhbGx0aHJvdWdoIl0s LAotICAgWy1XZXJyb3JdKQotIAotK1BIUF9BUkdfV0lUSChzeXN0ZW0tdHpkYXRhLCBmb3IgdXNl IG9mIHN5c3RlbSB0aW1lem9uZSBkYXRhLAotKyAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lz dGVtLXR6ZGF0YVs9RElSXV0sW3RvIHNwZWNpZnkgdXNlIG9mIHN5c3RlbSB0aW1lem9uZSBkYXRh XSldLCBubywgbm8pCi0rCi0raWYgdGVzdCAiJFBIUF9TWVNURU1fVFpEQVRBIiAhPSAibm8iOyB0 aGVuCi0rICAgQUNfREVGSU5FKEhBVkVfU1lTVEVNX1RaREFUQSwgMSwgW0RlZmluZSBpZiBzeXN0 ZW0gdGltZXpvbmUgZGF0YSBpcyB1c2VkXSkKLSsKLSsgICBpZiB0ZXN0ICIkUEhQX1NZU1RFTV9U WkRBVEEiICE9ICJ5ZXMiOyB0aGVuCi0rICAgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfU1lT VEVNX1RaREFUQV9QUkVGSVgsICIkUEhQX1NZU1RFTV9UWkRBVEEiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICBbRGVmaW5lIGZvciBsb2NhdGlvbiBvZiBzeXN0ZW0gdGltZXpvbmUgZGF0YV0p Ci0rICAgZmkKLStmaQotKwotIFBIUF9EQVRFX0NGTEFHUz0iJFBIUF9EQVRFX0NGTEFHUyAtSUBl eHRfYnVpbGRkaXJAL2xpYiAtRFpFTkRfRU5BQkxFX1NUQVRJQ19UU1JNTFNfQ0FDSEU9MSAtREhB VkVfVElNRUxJQl9DT05GSUdfSD0xIgotIHRpbWVsaWJfc291cmNlcz0ibGliL2FzdHJvLmMgbGli L2Rvdy5jIGxpYi9wYXJzZV9kYXRlLmMgbGliL3BhcnNlX3R6LmMgbGliL3BhcnNlX3Bvc2l4LmMK LSAgICAgICAgICAgICAgICAgIGxpYi90aW1lbGliLmMgbGliL3RtMnVuaXh0aW1lLmMgbGliL3Vu aXh0aW1lMnRtLmMgbGliL3BhcnNlX2lzb19pbnRlcnZhbHMuYyBsaWIvaW50ZXJ2YWwuYyIKLWRp ZmYgLXVwIC4vZXh0L2RhdGUvbGliL3BhcnNlX3R6LmMuc3lzdHpkYXRhIC4vZXh0L2RhdGUvbGli L3BhcnNlX3R6LmMKLS0tLSAuL2V4dC9kYXRlL2xpYi9wYXJzZV90ei5jLnN5c3R6ZGF0YQkyMDI0 LTA3LTAyIDE1OjQzOjEzLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZXh0L2RhdGUvbGliL3BhcnNl X3R6LmMJMjAyNC0wNy0wMyAxNjoyMToyMC4yNDA3ODY4NDggKzAyMDAKLUBAIC0yNiw5ICsyNiwz MyBAQAotICNpbmNsdWRlICJ0aW1lbGliLmgiCi0gI2luY2x1ZGUgInRpbWVsaWJfcHJpdmF0ZS5o IgotIAotKyNpZmRlZiBIQVZFX1NZU1RFTV9UWkRBVEEKLSsjaW5jbHVkZSA8c3lzL21tYW4uaD4K LSsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2luY2x1ZGUg PGZjbnRsLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKwotKyNpbmNsdWRlICJwaHBfc2NhbmRp ci5oIgotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGludGVybmFsX3V0Y1tdID0gewot KyAgICAgICAgMHg1NCwgMHg1YSwgMHg2OSwgMHg2NiwgMHgzMiwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSsgICAgICAg IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCi0rICAgICAgICAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAw LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotKyAgICAgICAgMHgwMCwgMHgwMCwgMHg1 NSwgMHg1NCwgMHg0MywgMHgwMCwgMHg1NCwgMHg1YSwgMHg2OSwgMHg2NiwgMHgzMiwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKLSsgICAgICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsCi0rICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAw LCAweDAwLAotKyAgICAgICAgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHg1NSwgMHg1NCwgMHg0MywgMHgwMCwgMHgwYSwgMHg1NSwgMHg1NCwgMHg0MywK LSsgICAgICAgIDB4MzAsIDB4MGEKLSt9OwotKwotKyNlbHNlCi0gI2RlZmluZSBUSU1FTElCX1NV UFBPUlRTX1YyREFUQQotICNkZWZpbmUgVElNRUxJQl9TVVBQT1JUX1NMSU1fRklMRQotICNpbmNs dWRlICJ0aW1lem9uZWRiLmgiCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi0g I2lmIChkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FQUExFX0NDX18pKSAmJiAoZGVm aW5lZChfX0JJR19FTkRJQU5fXykgfHwgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykpCi0gIyBp ZiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9fKQotQEAgLTk1LDYgKzExOSwxMSBAQCBzdGF0aWMg aW50IHJlYWRfcGhwX3ByZWFtYmxlKGNvbnN0IHVuc2lnCi0gewotIAl1aW50MzJfdCB2ZXJzaW9u OwotIAotKwlpZiAobWVtY21wKCp0emYsICJUWmlmIiwgNCkgPT0gMCkgewotKwkJKnR6ZiArPSAy MDsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0gCS8qIHJlYWQgSUQgKi8KLSAJdmVyc2lvbiA9ICgq dHpmKVszXSAtICcwJzsKLSAJKnR6ZiArPSA0OwotQEAgLTU3Nyw3ICs2MDYsNDc1IEBAIHZvaWQg dGltZWxpYl9kdW1wX3R6aW5mbyh0aW1lbGliX3R6aW5mbwotIAl9Ci0gfQotIAotLXN0YXRpYyBp bnQgc2Vla190b190el9wb3NpdGlvbihjb25zdCB1bnNpZ25lZCBjaGFyICoqdHpmLCBjb25zdCBj aGFyICp0aW1lem9uZSwgY29uc3QgdGltZWxpYl90emRiICp0emRiKQotKyNpZmRlZiBIQVZFX1NZ U1RFTV9UWkRBVEEKLSsKLSsjaWZkZWYgSEFWRV9TWVNURU1fVFpEQVRBX1BSRUZJWAotKyNkZWZp bmUgWk9ORUlORk9fUFJFRklYIEhBVkVfU1lTVEVNX1RaREFUQV9QUkVGSVgKLSsjZWxzZQotKyNk ZWZpbmUgWk9ORUlORk9fUFJFRklYICIvdXNyL3NoYXJlL3pvbmVpbmZvIgotKyNlbmRpZgotKwot Ky8qIFN5c3RlbSB0aW1lem9uZSBkYXRhYmFzZSBwb2ludGVyLiAqLwotK3N0YXRpYyBjb25zdCB0 aW1lbGliX3R6ZGIgKnRpbWV6b25lZGJfc3lzdGVtOwotKwotKy8qIEhhc2ggdGFibGUgZW50cnkg Zm9yIHRoZSBjYWNoZSBvZiB0aGUgem9uZS50YWIgbWFwcGluZyB0YWJsZS4gKi8KLStzdHJ1Y3Qg bG9jYXRpb25faW5mbyB7Ci0rICAgICAgICBjaGFyIGNvZGVbMl07Ci0rICAgICAgICBkb3VibGUg bGF0aXR1ZGUsIGxvbmdpdHVkZTsKLSsgICAgICAgIGNoYXIgbmFtZVs2NF07Ci0rICAgICAgICBj aGFyICpjb21tZW50OwotKyAgICAgICAgc3RydWN0IGxvY2F0aW9uX2luZm8gKm5leHQ7Ci0rfTsK LSsKLSsvKiBDYWNoZSBvZiB6b25lLnRhYi4gKi8KLStzdGF0aWMgc3RydWN0IGxvY2F0aW9uX2lu Zm8gKipzeXN0ZW1fbG9jYXRpb25fdGFibGU7Ci0rCi0rLyogU2l6ZSBvZiB0aGUgem9uZS50YWIg aGFzaCB0YWJsZTsgYSByYW5kb20taXNoIHByaW1lIGJpZyBlbm91Z2ggdG8KLSsgKiBwcmV2ZW50 IHRvbyBtYW55IGNvbGxpc2lvbnMuICovCi0rI2RlZmluZSBMT0NJTkZPX0hBU0hfU0laRSAoMTAy MSkKLSsKLSsvKiBDb21wdXRlIGEgY2FzZSBpbnNlbnNpdGl2ZSBoYXNoIG9mIHN0ciAqLwotK3N0 YXRpYyB1aW50MzJfdCB0el9oYXNoKGNvbnN0IGNoYXIgKnN0cikKLSt7Ci0rICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXN0cjsKLSsgICAgdWludDMy X3QgaGFzaCA9IDUzODE7Ci0rICAgIGludCBjOwotKwotKyAgICB3aGlsZSAoKGMgPSB0b2xvd2Vy KCpwKyspKSAhPSAnXDAnKSB7Ci0rICAgICAgICBoYXNoID0gKGhhc2ggPDwgNSkgXiBoYXNoIF4g YzsKLSsgICAgfQotKwotKyAgICByZXR1cm4gaGFzaCAlIExPQ0lORk9fSEFTSF9TSVpFOwotK30K LSsKLSsvKiBQYXJzZSBhbiBJU08tNjcwOSBkYXRlIGFzIHVzZWQgaW4gem9uZS50YWIuIFJldHVy bnMgZW5kIG9mIHRoZQotKyAqIHBhcnNlZCBzdHJpbmcgb24gc3VjY2Vzcywgb3IgTlVMTCBvbiBw YXJzZSBlcnJvci4gIE9uIHN1Y2Nlc3MsCi0rICogd3JpdGVzIHRoZSBwYXJzZWQgbnVtYmVyIHRv ICpyZXN1bHQuICovCi0rc3RhdGljIGNoYXIgKnBhcnNlX2lzbzY3MDkoY2hhciAqcCwgZG91Ymxl ICpyZXN1bHQpCi0rewotKyAgICBkb3VibGUgdiwgc2lnbjsKLSsgICAgY2hhciAqcGVuZDsKLSsg ICAgc2l6ZV90IGxlbjsKLSsKLSsgICAgaWYgKCpwID09ICcrJykKLSsgICAgICAgIHNpZ24gPSAx LjA7Ci0rICAgIGVsc2UgaWYgKCpwID09ICctJykKLSsgICAgICAgIHNpZ24gPSAtMS4wOwotKyAg ICBlbHNlCi0rICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgcCsrOwotKyAgICBmb3IgKHBl bmQgPSBwOyAqcGVuZCA+PSAnMCcgJiYgKnBlbmQgPD0gJzknOyBwZW5kKyspCi0rICAgICAgICA7 OwotKwotKyAgICAvKiBBbm5veWluZyBlbmNvZGluZyB1c2VkIGJ5IHpvbmUudGFiIGhhcyBubyBk ZWNpbWFsIHBvaW50LCBzbyB1c2UKLSsgICAgICogdGhlIGxlbmd0aCB0byBkZXRlcm1pbmUgdGhl IGZvcm1hdDoKLSsgICAgICogCi0rICAgICAqIDQgPSBERE1NCi0rICAgICAqIDUgPSBERERNTQot KyAgICAgKiA2ID0gRERNTVNTCi0rICAgICAqIDcgPSBERERNTVNTCi0rICAgICAqLwotKyAgICBs ZW4gPSBwZW5kIC0gcDsKLSsgICAgaWYgKGxlbiA8IDQgfHwgbGVuID4gNykgewotKyAgICAgICAg cmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgICAgLyogcCA9PiBbRF1ERCAqLwotKyAgICB2ID0g KHBbMF0gLSAnMCcpICogMTAuMCArIChwWzFdIC0gJzAnKTsKLSsgICAgcCArPSAyOwotKyAgICBp ZiAobGVuID09IDUgfHwgbGVuID09IDcpCi0rICAgICAgICB2ID0gdiAqIDEwLjAgKyAoKnArKyAt ICcwJyk7Ci0rICAgIC8qIHAgPT4gTU1bU1NdICovCi0rICAgIHYgKz0gKDEwLjAgKiAocFswXSAt ICcwJykKLSsgICAgICAgICAgKyBwWzFdIC0gJzAnKSAvIDYwLjA7Ci0rICAgIHAgKz0gMjsKLSsg ICAgLyogcCA9PiBbU1NdICovCi0rICAgIGlmIChsZW4gPiA1KSB7Ci0rICAgICAgICB2ICs9ICgx MC4wICogKHBbMF0gLSAnMCcpCi0rICAgICAgICAgICAgICArIHBbMV0gLSAnMCcpIC8gMzYwMC4w OwotKyAgICAgICAgcCArPSAyOwotKyAgICB9Ci0rCi0rICAgIC8qIFJvdW5kIHRvIGZpdmUgZGVj aW1hbCBwbGFjZSwgbm90IGJlY2F1c2UgaXQncyBhIGdvb2QgaWRlYSwKLSsgICAgICogYnV0LCBi ZWNhdXNlIHRoZSBidWlsdGluIGRhdGEgdXNlcyByb3VuZGVkIGRhdGEsIHNvLCBtYXRjaAotKyAg ICAgKiB0aGF0LiAqLwotKyAgICAqcmVzdWx0ID0gdHJ1bmModiAqIHNpZ24gKiAxMDAwMDAuMCkg LyAxMDAwMDAuMDsKLSsKLSsgICAgcmV0dXJuIHA7Ci0rfQotKwotKy8qIFRoaXMgZnVuY3Rpb24g cGFyc2VzIHRoZSB6b25lLnRhYiBmaWxlIHRvIGJ1aWxkIHVwIHRoZSBtYXBwaW5nIG9mCi0rICog dGltZXpvbmUgdG8gY291bnRyeSBjb2RlIGFuZCBnZW9ncmFwaGljIGxvY2F0aW9uLCBhbmQgcmV0 dXJucyBhCi0rICogaGFzaCB0YWJsZS4gIFRoZSBoYXNoIHRhYmxlIGlzIGluZGV4ZWQgYnkgdGhl IGZ1bmN0aW9uOgotKyAqCi0rICogICB0el9oYXNoKHRpbWV6b25lLW5hbWUpCi0rICovCi0rc3Rh dGljIHN0cnVjdCBsb2NhdGlvbl9pbmZvICoqY3JlYXRlX2xvY2F0aW9uX3RhYmxlKHZvaWQpCi0r ewotKyAgICBzdHJ1Y3QgbG9jYXRpb25faW5mbyAqKmxpLCAqaTsKLSsgICAgY2hhciB6b25lX3Rh YltQQVRIX01BWF07Ci0rICAgIGNoYXIgbGluZVs1MTJdOwotKyAgICBGSUxFICpmcDsKLSsKLSsg ICAgc3RybmNweSh6b25lX3RhYiwgWk9ORUlORk9fUFJFRklYICIvem9uZS50YWIiLCBzaXplb2Yg em9uZV90YWIpOwotKwotKyAgICBmcCA9IGZvcGVuKHpvbmVfdGFiLCAiciIpOwotKyAgICBpZiAo IWZwKSB7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgICBsaSA9IGNhbGxv YyhMT0NJTkZPX0hBU0hfU0laRSwgc2l6ZW9mICpsaSk7Ci0rCi0rICAgIHdoaWxlIChmZ2V0cyhs aW5lLCBzaXplb2YgbGluZSwgZnApKSB7Ci0rICAgICAgICBjaGFyICpwID0gbGluZSwgKmNvZGUs ICpuYW1lLCAqY29tbWVudDsKLSsgICAgICAgIHVpbnQzMl90IGhhc2g7Ci0rICAgICAgICBkb3Vi bGUgbGF0aXR1ZGUsIGxvbmdpdHVkZTsKLSsKLSsgICAgICAgIHdoaWxlIChpc3NwYWNlKCpwKSkK LSsgICAgICAgICAgICBwKys7Ci0rCi0rICAgICAgICBpZiAoKnAgPT0gJyMnIHx8ICpwID09ICdc MCcgfHwgKnAgPT0gJ1xuJykKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIAotKyAg ICAgICAgaWYgKCFpc2FscGhhKHBbMF0pIHx8ICFpc2FscGhhKHBbMV0pIHx8IHBbMl0gIT0gJ1x0 JykKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIAotKyAgICAgICAgLyogY29kZSA9 PiBBQSAqLwotKyAgICAgICAgY29kZSA9IHA7Ci0rICAgICAgICBwWzJdID0gMDsKLSsgICAgICAg IHAgKz0gMzsKLSsKLSsgICAgICAgIC8qIGNvb3JkcyA9PiBbKy1dW0RdRERNTVtTU11bKy1dW0Rd RERNTVtTU10gKi8KLSsgICAgICAgIHAgPSBwYXJzZV9pc282NzA5KHAsICZsYXRpdHVkZSk7Ci0r ICAgICAgICBpZiAoIXApIHsKLSsgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsg ICAgICAgIHAgPSBwYXJzZV9pc282NzA5KHAsICZsb25naXR1ZGUpOwotKyAgICAgICAgaWYgKCFw KSB7Ci0rICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBpZiAo IXAgfHwgKnAgIT0gJ1x0JykgewotKyAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQot KwotKyAgICAgICAgLyogbmFtZSA9IHN0cmluZyAqLwotKyAgICAgICAgbmFtZSA9ICsrcDsKLSsg ICAgICAgIHdoaWxlICgqcCAhPSAnXHQnICYmICpwICYmICpwICE9ICdcbicpCi0rICAgICAgICAg ICAgcCsrOwotKwotKyAgICAgICAgKnArKyA9ICdcMCc7Ci0rCi0rICAgICAgICAvKiBjb21tZW50 ID0gc3RyaW5nICovCi0rICAgICAgICBjb21tZW50ID0gcDsKLSsgICAgICAgIHdoaWxlICgqcCAh PSAnXHQnICYmICpwICYmICpwICE9ICdcbicpCi0rICAgICAgICAgICAgcCsrOwotKwotKyAgICAg ICAgaWYgKCpwID09ICdcbicgfHwgKnAgPT0gJ1x0JykKLSsgICAgICAgICAgICAqcCA9ICdcMCc7 Ci0rICAgICAgICAKLSsgICAgICAgIGhhc2ggPSB0el9oYXNoKG5hbWUpOwotKyAgICAgICAgaSA9 IG1hbGxvYyhzaXplb2YgKmkpOwotKyAgICAgICAgbWVtY3B5KGktPmNvZGUsIGNvZGUsIDIpOwot KyAgICAgICAgc3RybmNweShpLT5uYW1lLCBuYW1lLCBzaXplb2YgaS0+bmFtZSk7Ci0rICAgICAg ICBpLT5jb21tZW50ID0gc3RyZHVwKGNvbW1lbnQpOwotKyAgICAgICAgaS0+bG9uZ2l0dWRlID0g bG9uZ2l0dWRlOwotKyAgICAgICAgaS0+bGF0aXR1ZGUgPSBsYXRpdHVkZTsKLSsgICAgICAgIGkt Pm5leHQgPSBsaVtoYXNoXTsKLSsgICAgICAgIGxpW2hhc2hdID0gaTsKLSsgICAgICAgIC8qIHBy aW50ZigiJXMgWyV1LCAlZiwgJWZdXG4iLCBuYW1lLCBoYXNoLCBsYXRpdHVkZSwgbG9uZ2l0dWRl KTsgKi8KLSsgICAgfQotKwotKyAgICBmY2xvc2UoZnApOwotKwotKyAgICByZXR1cm4gbGk7Ci0r fQotKwotKy8qIFJldHVybiBsb2NhdGlvbiBpbmZvIGZyb20gaGFzaCB0YWJsZSwgdXNpbmcgZ2l2 ZW4gdGltZXpvbmUgbmFtZS4KLSsgKiBSZXR1cm5zIE5VTEwgaWYgdGhlIG5hbWUgY291bGQgbm90 IGJlIGZvdW5kLiAqLwotK2NvbnN0IHN0cnVjdCBsb2NhdGlvbl9pbmZvICpmaW5kX3pvbmVfaW5m byhzdHJ1Y3QgbG9jYXRpb25faW5mbyAqKmxpLCAKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICAgIHVpbnQzMl90IGhh c2ggPSB0el9oYXNoKG5hbWUpOwotKyAgICBjb25zdCBzdHJ1Y3QgbG9jYXRpb25faW5mbyAqbDsK LSsKLSsgICAgaWYgKCFsaSkgewotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsg ICAgZm9yIChsID0gbGlbaGFzaF07IGw7IGwgPSBsLT5uZXh0KSB7Ci0rICAgICAgICBpZiAodGlt ZWxpYl9zdHJjYXNlY21wKGwtPm5hbWUsIG5hbWUpID09IDApCi0rICAgICAgICAgICAgcmV0dXJu IGw7Ci0rICAgIH0KLSsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rfSAgICAKLSsKLSsvKiBGaWx0ZXIg b3V0IHNvbWUgbm9uLXR6ZGF0YSBmaWxlcyBhbmQgdGhlIHBvc2l4L3JpZ2h0IGRhdGFiYXNlcywg aWYKLSsgKiBwcmVzZW50LiAqLwotK3N0YXRpYyBpbnQgaW5kZXhfZmlsdGVyKGNvbnN0IHN0cnVj dCBkaXJlbnQgKmVudCkKLSt7Ci0rCXJldHVybiBzdHJjbXAoZW50LT5kX25hbWUsICIuIikgIT0g MAotKwkJJiYgc3RyY21wKGVudC0+ZF9uYW1lLCAiLi4iKSAhPSAwCi0rCQkmJiBzdHJjbXAoZW50 LT5kX25hbWUsICJwb3NpeCIpICE9IDAKLSsJCSYmIHN0cmNtcChlbnQtPmRfbmFtZSwgInBvc2l4 cnVsZXMiKSAhPSAwCi0rCQkmJiBzdHJjbXAoZW50LT5kX25hbWUsICJyaWdodCIpICE9IDAKLSsJ CSYmIHN0cnN0cihlbnQtPmRfbmFtZSwgIi5saXN0IikgPT0gTlVMTAotKwkJJiYgc3Ryc3RyKGVu dC0+ZF9uYW1lLCAiLnRhYiIpID09IE5VTEw7Ci0rfQotKwotK3N0YXRpYyBpbnQgc3lzZGJjbXAo Y29uc3Qgdm9pZCAqZmlyc3QsIGNvbnN0IHZvaWQgKnNlY29uZCkKLSt7Ci0rICAgICAgICBjb25z dCB0aW1lbGliX3R6ZGJfaW5kZXhfZW50cnkgKmFscGhhID0gZmlyc3QsICpiZXRhID0gc2Vjb25k OwotKwotKyAgICAgICAgcmV0dXJuIHRpbWVsaWJfc3RyY2FzZWNtcChhbHBoYS0+aWQsIGJldGEt PmlkKTsKLSt9Ci0rCi0rLyogUmV0cmlldmUgdHpkYXRhIHZlcnNpb24uICovCi0rc3RhdGljIHZv aWQgcmV0cmlldmVfem9uZV92ZXJzaW9uKHRpbWVsaWJfdHpkYiAqZGIpCi0rewotKyAgICBzdGF0 aWMgY2hhciBidWZbMzBdOwotKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOwotKyAgICBGSUxFICpm cDsKLSsKLSsgICAgc3RybmNweShwYXRoLCBaT05FSU5GT19QUkVGSVggIi90emRhdGEuemkiLCBz aXplb2YocGF0aCkpOwotKwotKyAgICBmcCA9IGZvcGVuKHBhdGgsICJyIik7Ci0rICAgIGlmIChm cCkgewotKwkJaWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZwKSkgewotKwkJCWlmICghbWVt Y21wKGJ1ZiwgIiMgdmVyc2lvbiAiLCAxMCkgJiYKLSsJCQkJaXNkaWdpdChidWZbMTBdKSAmJgot KwkJCQlpc2RpZ2l0KGJ1ZlsxMV0pICYmCi0rCQkJCWlzZGlnaXQoYnVmWzEyXSkgJiYKLSsJCQkJ aXNkaWdpdChidWZbMTNdKSAmJgotKwkJCQlpc2xvd2VyKGJ1ZlsxNF0pKSB7Ci0rCQkJCWlmIChi dWZbMTRdID49ICd0JykgeyAgICAgICAgLyogMjAyMnQgPSAyMDIyLjIwICovCi0rCQkJCQlidWZb MTddID0gMDsKLSsJCQkJCWJ1ZlsxNl0gPSBidWZbMTRdIC0gJ3QnICsgJzAnOwotKwkJCQkJYnVm WzE1XSA9ICcyJzsKLSsJCQkJfSBlbHNlIGlmIChidWZbMTRdID49ICdqJykgeyAvKiAyMDIyaiA9 IDIwMjIuMTAgKi8KLSsJCQkJCWJ1ZlsxN10gPSAwOwotKwkJCQkJYnVmWzE2XSA9IGJ1ZlsxNF0g LSAnaicgKyAnMCc7Ci0rCQkJCQlidWZbMTVdID0gJzEnOwotKwkJCQl9IGVsc2UgeyAgICAgICAg ICAgICAgICAgICAgIC8qIDIwMjJhID0gMjAyMi4xICAqLwotKwkJCQkJYnVmWzE2XSA9IDA7Ci0r CQkJCQlidWZbMTVdID0gYnVmWzE0XSAtICdhJyArICcxJzsKLSsJCQkJfQotKwkJCQlidWZbMTRd ID0gJy4nOwotKwkJCQlkYi0+dmVyc2lvbiA9IGJ1ZisxMDsKLSsJCQl9Ci0rCQl9Ci0rCQlmY2xv c2UoZnApOwotKyAgICB9Ci0rfQotKwotKwotKy8qIENyZWF0ZSB0aGUgem9uZSBpZGVudGlmaWVy IGluZGV4IGJ5IHRyYXdsaW5nIHRoZSBmaWxlc3lzdGVtLiAqLwotK3N0YXRpYyB2b2lkIGNyZWF0 ZV96b25lX2luZGV4KHRpbWVsaWJfdHpkYiAqZGIpCi0rewotKwlzaXplX3QgZGlyc3RhY2tfc2l6 ZSwgIGRpcnN0YWNrX3RvcDsKLSsJc2l6ZV90IGluZGV4X3NpemUsIGluZGV4X25leHQ7Ci0rCXRp bWVsaWJfdHpkYl9pbmRleF9lbnRyeSAqZGJfaW5kZXg7Ci0rCWNoYXIgKipkaXJzdGFjazsKLSsK LSsJLyogTElGTyBzdGFjayB0byBob2xkIGRpcmVjdG9yeSBlbnRyaWVzIHRvIHNjYW47IGVhY2gg c2xvdCBpcyBhCi0rCSAqIGRpcmVjdG9yeSBuYW1lIHJlbGF0aXZlIHRvIHRoZSB6b25laW5mbyBw cmVmaXguICovCi0rCWRpcnN0YWNrX3NpemUgPSAzMjsKLSsJZGlyc3RhY2sgPSBtYWxsb2MoZGly c3RhY2tfc2l6ZSAqIHNpemVvZiAqZGlyc3RhY2spOwotKwlkaXJzdGFja190b3AgPSAxOwotKwlk aXJzdGFja1swXSA9IHN0cmR1cCgiIik7Ci0rCQotKwkvKiBJbmRleCBhcnJheS4gKi8KLSsJaW5k ZXhfc2l6ZSA9IDY0OwotKwlkYl9pbmRleCA9IG1hbGxvYyhpbmRleF9zaXplICogc2l6ZW9mICpk Yl9pbmRleCk7Ci0rCWluZGV4X25leHQgPSAwOwotKwotKwlkbyB7Ci0rCQlzdHJ1Y3QgZGlyZW50 ICoqZW50czsKLSsJCWNoYXIgbmFtZVtQQVRIX01BWF0sICp0b3A7Ci0rCQlpbnQgY291bnQ7Ci0r Ci0rCQkvKiBQb3AgdGhlIHRvcCBzdGFjayBlbnRyeSwgYW5kIGl0ZXJhdGUgdGhyb3VnaCBpdHMg Y29udGVudHMuICovCi0rCQl0b3AgPSBkaXJzdGFja1stLWRpcnN0YWNrX3RvcF07Ci0rCQlzbnBy aW50ZihuYW1lLCBzaXplb2YgbmFtZSwgWk9ORUlORk9fUFJFRklYICIvJXMiLCB0b3ApOwotKwot KwkJY291bnQgPSBwaHBfc2NhbmRpcihuYW1lLCAmZW50cywgaW5kZXhfZmlsdGVyLCBwaHBfYWxw aGFzb3J0KTsKLSsKLSsJCXdoaWxlIChjb3VudCA+IDApIHsKLSsJCQlzdHJ1Y3Qgc3RhdCBzdDsK LSsJCQljb25zdCBjaGFyICpsZWFmID0gZW50c1tjb3VudCAtIDFdLT5kX25hbWU7Ci0rCi0rCQkJ c25wcmludGYobmFtZSwgc2l6ZW9mIG5hbWUsIFpPTkVJTkZPX1BSRUZJWCAiLyVzLyVzIiwgCi0r CQkJCSB0b3AsIGxlYWYpOwotKwkJCQotKwkJCWlmIChzdHJsZW4obmFtZSkgJiYgc3RhdChuYW1l LCAmc3QpID09IDApIHsKLSsJCQkJLyogTmFtZSwgcmVsYXRpdmUgdG8gdGhlIHpvbmVpbmZvIHBy ZWZpeC4gKi8KLSsJCQkJY29uc3QgY2hhciAqcm9vdCA9IHRvcDsKLSsKLSsJCQkJaWYgKHJvb3Rb MF0gPT0gJy8nKSByb290Kys7Ci0rCi0rCQkJCXNucHJpbnRmKG5hbWUsIHNpemVvZiBuYW1lLCAi JXMlcyVzIiwgcm9vdCwgCi0rCQkJCQkgKnJvb3QgPyAiLyI6ICIiLCBsZWFmKTsKLSsKLSsJCQkJ aWYgKFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKLSsJCQkJCWlmIChkaXJzdGFja190b3AgPT0gZGly c3RhY2tfc2l6ZSkgewotKwkJCQkJCWRpcnN0YWNrX3NpemUgKj0gMjsKLSsJCQkJCQlkaXJzdGFj ayA9IHJlYWxsb2MoZGlyc3RhY2ssIAotKwkJCQkJCQkJICAgZGlyc3RhY2tfc2l6ZSAqIHNpemVv ZiAqZGlyc3RhY2spOwotKwkJCQkJfQotKwkJCQkJZGlyc3RhY2tbZGlyc3RhY2tfdG9wKytdID0g c3RyZHVwKG5hbWUpOwotKwkJCQl9Ci0rCQkJCWVsc2UgewotKwkJCQkJaWYgKGluZGV4X25leHQg PT0gaW5kZXhfc2l6ZSkgewotKwkJCQkJCWluZGV4X3NpemUgKj0gMjsKLSsJCQkJCQlkYl9pbmRl eCA9IHJlYWxsb2MoZGJfaW5kZXgsCi0rCQkJCQkJCQkgICBpbmRleF9zaXplICogc2l6ZW9mICpk Yl9pbmRleCk7Ci0rCQkJCQl9Ci0rCi0rCQkJCQlkYl9pbmRleFtpbmRleF9uZXh0KytdLmlkID0g c3RyZHVwKG5hbWUpOwotKwkJCQl9Ci0rCQkJfQotKwotKwkJCWZyZWUoZW50c1stLWNvdW50XSk7 Ci0rCQl9Ci0rCQkKLSsJCWlmIChjb3VudCAhPSAtMSkgZnJlZShlbnRzKTsKLSsJCWZyZWUodG9w KTsKLSsJfSB3aGlsZSAoZGlyc3RhY2tfdG9wKTsKLSsKLSsgICAgICAgIHFzb3J0KGRiX2luZGV4 LCBpbmRleF9uZXh0LCBzaXplb2YgKmRiX2luZGV4LCBzeXNkYmNtcCk7Ci0rCi0rCWlmICghaW5k ZXhfbmV4dCkgewotKwkJZGJfaW5kZXhbaW5kZXhfbmV4dCsrXS5pZCA9IHN0cmR1cCgiVVRDIik7 Ci0rCX0KLSsJZGItPmluZGV4ID0gZGJfaW5kZXg7Ci0rCWRiLT5pbmRleF9zaXplID0gaW5kZXhf bmV4dDsKLSsKLSsJZnJlZShkaXJzdGFjayk7Ci0rfQotKwotKyNkZWZpbmUgRkFLRV9IRUFERVIg IjEyMzRcMD8/XDE/PyIKLSsjZGVmaW5lIEZBS0VfVVRDX1BPUyAoNyAtIDQpCi0rCi0rLyogQ3Jl YXRlIGEgZmFrZSBkYXRhIHNlZ21lbnQgZm9yIGRhdGFiYXNlICdzeXNkYicuICovCi0rc3RhdGlj IHZvaWQgZmFrZV9kYXRhX3NlZ21lbnQodGltZWxpYl90emRiICpzeXNkYiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbG9jYXRpb25faW5mbyAqKmluZm8pCi0rewotKyAg ICAgICAgc2l6ZV90IG47Ci0rICAgICAgICBjaGFyICpkYXRhLCAqcDsKLSsgICAgICAgIAotKyAg ICAgICAgZGF0YSA9IG1hbGxvYygzICogc3lzZGItPmluZGV4X3NpemUgKyBzaXplb2YoRkFLRV9I RUFERVIpIC0gMSk7Ci0rCi0rICAgICAgICBwID0gbWVtcGNweShkYXRhLCBGQUtFX0hFQURFUiwg c2l6ZW9mKEZBS0VfSEVBREVSKSAtIDEpOwotKwotKyAgICAgICAgZm9yIChuID0gMDsgbiA8IHN5 c2RiLT5pbmRleF9zaXplOyBuKyspIHsKLSsgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxv Y2F0aW9uX2luZm8gKmxpOwotKyAgICAgICAgICAgICAgICB0aW1lbGliX3R6ZGJfaW5kZXhfZW50 cnkgKmVudDsKLSsKLSsgICAgICAgICAgICAgICAgZW50ID0gKHRpbWVsaWJfdHpkYl9pbmRleF9l bnRyeSAqKSZzeXNkYi0+aW5kZXhbbl07Ci0rCi0rICAgICAgICAgICAgICAgIC8qIExvb2t1cCB0 aGUgdGltZXpvbmUgbmFtZSBpbiB0aGUgaGFzaCB0YWJsZS4gKi8KLSsgICAgICAgICAgICAgICAg aWYgKHN0cmNtcChlbnQtPmlkLCAiVVRDIikgPT0gMCkgewotKyAgICAgICAgICAgICAgICAgICAg ICAgIGVudC0+cG9zID0gRkFLRV9VVENfUE9TOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOwotKyAgICAgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgICAgIGxpID0gZmlu ZF96b25lX2luZm8oaW5mbywgZW50LT5pZCk7Ci0rICAgICAgICAgICAgICAgIGlmIChsaSkgewot KyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIGZvdW5kLCBhcHBlbmQgdGhlIEJDIGJ5dGUg YW5kIHRoZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGNvdW50cnkgY29kZTsgc2V0IHRo ZSBwb3NpdGlvbiBmb3IgdGhpcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHNlY3Rpb24g b2YgdGltZXpvbmUgZGF0YS4gICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgZW50LT5wb3Mg PSAocCAtIGRhdGEpIC0gNDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1wxJzsK LSsgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gbGktPmNvZGVbMF07Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgKnArKyA9IGxpLT5jb2RlWzFdOwotKyAgICAgICAgICAgICAgICB9Ci0r ICAgICAgICAgICAgICAgIGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIG5v dCBmb3VuZCwgdGhlIHRpbWV6b25lIGRhdGEgY2FuCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICogcG9pbnQgYXQgdGhlIGhlYWRlci4gKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBlbnQt PnBvcyA9IDA7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIAotKyAg ICAgICAgc3lzZGItPmRhdGEgPSAodW5zaWduZWQgY2hhciAqKWRhdGE7Ci0rfQotKwotKy8qIFJl dHVybnMgdHJ1ZSBpZiB0aGUgcGFzc2VkLWluIHN0YXQgc3RydWN0dXJlIGRlc2NyaWJlcyBhCi0r ICogcHJvYmFibHktdmFsaWQgdGltZXpvbmUgZmlsZS4gKi8KLStzdGF0aWMgaW50IGlzX3ZhbGlk X3R6ZmlsZShjb25zdCBzdHJ1Y3Qgc3RhdCAqc3QsIGludCBmZCkKLSt7Ci0rCWlmIChmZCkgewot KwkJY2hhciBidWZbMjBdOwotKwkJaWYgKHJlYWQoZmQsIGJ1ZiwgMjApIT0yMCkgewotKwkJCXJl dHVybiAwOwotKwkJfQotKwkJbHNlZWsoZmQsIFNFRUtfU0VULCAwKTsKLSsJCWlmIChtZW1jbXAo YnVmLCAiVFppZiIsIDQpKSB7Ci0rCQkJcmV0dXJuIDA7Ci0rCQl9Ci0rCX0KLSsJcmV0dXJuIFNf SVNSRUcoc3QtPnN0X21vZGUpICYmIHN0LT5zdF9zaXplID4gMjA7Ci0rfQotKwotKy8qIFRvIGFs bG93IHRpbWV6b25lIG5hbWVzIHRvIGJlIHVzZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LCBmaW5kIHRo ZQotKyAqIGNhbm9uaWNhbCBuYW1lIGZvciB0aGlzIHRpbWV6b25lLCBpZiBwb3NzaWJsZS4gKi8K LStzdGF0aWMgY29uc3QgY2hhciAqY2Fub25pY2FsX3R6bmFtZShjb25zdCBjaGFyICp0aW1lem9u ZSkKLSt7Ci0rICAgIGlmICh0aW1lem9uZWRiX3N5c3RlbSkgewotKyAgICAgICAgdGltZWxpYl90 emRiX2luZGV4X2VudHJ5ICplbnQsIGxvb2t1cDsKLSsKLSsgICAgICAgIGxvb2t1cC5pZCA9IChj aGFyICopdGltZXpvbmU7Ci0rCi0rICAgICAgICBlbnQgPSBic2VhcmNoKCZsb29rdXAsIHRpbWV6 b25lZGJfc3lzdGVtLT5pbmRleCwKLSsgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmVkYl9z eXN0ZW0tPmluZGV4X3NpemUsIHNpemVvZiBsb29rdXAsCi0rICAgICAgICAgICAgICAgICAgICAg IHN5c2RiY21wKTsKLSsgICAgICAgIGlmIChlbnQpIHsKLSsgICAgICAgICAgICByZXR1cm4gZW50 LT5pZDsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICByZXR1cm4gdGltZXpvbmU7Ci0rfQot KwotKy8qIFJldHVybiB0aGUgbW1hcCgpZWQgdHpmaWxlIGlmIGZvdW5kLCBlbHNlIE5VTEwuICBP biBzdWNjZXNzLCB0aGUKLSsgKiBsZW5ndGggb2YgdGhlIG1hcHBlZCBkYXRhIGlzIHBsYWNlZCBp biAqbGVuZ3RoLiAqLwotK3N0YXRpYyBjaGFyICptYXBfdHpmaWxlKGNvbnN0IGNoYXIgKnRpbWV6 b25lLCBzaXplX3QgKmxlbmd0aCkKLSt7Ci0rCWNoYXIgZm5hbWVbUEFUSF9NQVhdOwotKwlzdHJ1 Y3Qgc3RhdCBzdDsKLSsJY2hhciAqcDsKLSsJaW50IGZkOwotKwkKLSsJaWYgKHRpbWV6b25lWzBd ID09ICdcMCcgfHwgc3Ryc3RyKHRpbWV6b25lLCAiLi4iKSAhPSBOVUxMKSB7Ci0rCQlyZXR1cm4g TlVMTDsKLSsJfQotKwotKwlzbnByaW50ZihmbmFtZSwgc2l6ZW9mIGZuYW1lLCBaT05FSU5GT19Q UkVGSVggIi8lcyIsIGNhbm9uaWNhbF90em5hbWUodGltZXpvbmUpKTsKLSsKLSsJZmQgPSBvcGVu KGZuYW1lLCBPX1JET05MWSk7Ci0rCWlmIChmZCA9PSAtMSkgewotKwkJaWYgKHN0cmNtcCh0aW1l em9uZSwgIlVUQyIpKSB7Ci0rCQkJcmV0dXJuIE5VTEw7Ci0rCQl9IGVsc2UgewotKwkJCSpsZW5n dGggPSBzaXplb2YoaW50ZXJuYWxfdXRjKTsKLSsJCQlyZXR1cm4gaW50ZXJuYWxfdXRjOwotKwkJ fQotKwl9IGVsc2UgaWYgKGZzdGF0KGZkLCAmc3QpICE9IDAgfHwgIWlzX3ZhbGlkX3R6ZmlsZSgm c3QsIGZkKSkgewotKwkJY2xvc2UoZmQpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJKmxl bmd0aCA9IHN0LnN0X3NpemU7Ci0rCXAgPSBtbWFwKE5VTEwsIHN0LnN0X3NpemUsIFBST1RfUkVB RCwgTUFQX1NIQVJFRCwgZmQsIDApOwotKwljbG9zZShmZCk7Ci0rCQotKwlyZXR1cm4gcCAhPSBN QVBfRkFJTEVEID8gcCA6IE5VTEw7Ci0rfQotKwotKyNlbmRpZgotKwotK3N0YXRpYyBpbnQgaW5t ZW1fc2Vla190b190el9wb3NpdGlvbihjb25zdCB1bnNpZ25lZCBjaGFyICoqdHpmLCBjb25zdCBj aGFyICp0aW1lem9uZSwgY29uc3QgdGltZWxpYl90emRiICp0emRiKQotIHsKLSAJaW50IGxlZnQg PSAwLCByaWdodCA9IHR6ZGItPmluZGV4X3NpemUgLSAxOwotIAotQEAgLTYwMyw5ICsxMTAwLDQ5 IEBAIHN0YXRpYyBpbnQgc2Vla190b190el9wb3NpdGlvbihjb25zdCB1bnMKLSAJcmV0dXJuIDA7 Ci0gfQotIAotK3N0YXRpYyBpbnQgc2Vla190b190el9wb3NpdGlvbihjb25zdCB1bnNpZ25lZCBj aGFyICoqdHpmLCBjb25zdCBjaGFyICp0aW1lem9uZSwKLSsJCQkgICAgICAgY2hhciAqKm1hcCwg c2l6ZV90ICptYXBsZW4sCi0rCQkJICAgICAgIGNvbnN0IHRpbWVsaWJfdHpkYiAqdHpkYikKLSt7 Ci0rI2lmZGVmIEhBVkVfU1lTVEVNX1RaREFUQQotKwlpZiAodHpkYiA9PSB0aW1lem9uZWRiX3N5 c3RlbSkgewotKwkJY2hhciAqb3JpZzsKLSsKLSsJCW9yaWcgPSBtYXBfdHpmaWxlKHRpbWV6b25l LCBtYXBsZW4pOwotKwkJaWYgKG9yaWcgPT0gTlVMTCkgewotKwkJCXJldHVybiAwOwotKwkJfQot KwotKwkJKCp0emYpID0gKHVuc2lnbmVkIGNoYXIgKilvcmlnOwotKwkJKm1hcCA9IG9yaWc7Ci0r ICAgICAgICByZXR1cm4gMTsKLSsJfQotKwllbHNlCi0rI2VuZGlmCi0rCXsKLSsJCXJldHVybiBp bm1lbV9zZWVrX3RvX3R6X3Bvc2l0aW9uKHR6ZiwgdGltZXpvbmUsIHR6ZGIpOwotKwl9Ci0rfQot KwotIGNvbnN0IHRpbWVsaWJfdHpkYiAqdGltZWxpYl9idWlsdGluX2RiKHZvaWQpCi0gewotKyNp ZmRlZiBIQVZFX1NZU1RFTV9UWkRBVEEKLSsJaWYgKHRpbWV6b25lZGJfc3lzdGVtID09IE5VTEwp IHsKLSsJCXRpbWVsaWJfdHpkYiAqdG1wID0gbWFsbG9jKHNpemVvZiAqdG1wKTsKLSsKLSsJCXRt cC0+dmVyc2lvbiA9ICIwIjsKLSsJCXRtcC0+ZGF0YSA9IE5VTEw7Ci0rCQljcmVhdGVfem9uZV9p bmRleCh0bXApOwotKwkJcmV0cmlldmVfem9uZV92ZXJzaW9uKHRtcCk7Ci0rCQlzeXN0ZW1fbG9j YXRpb25fdGFibGUgPSBjcmVhdGVfbG9jYXRpb25fdGFibGUoKTsKLSsJCWZha2VfZGF0YV9zZWdt ZW50KHRtcCwgc3lzdGVtX2xvY2F0aW9uX3RhYmxlKTsKLSsJCXRpbWV6b25lZGJfc3lzdGVtID0g dG1wOwotKwl9Ci0rCi0rCXJldHVybiB0aW1lem9uZWRiX3N5c3RlbTsKLSsjZWxzZQotIAlyZXR1 cm4gJnRpbWV6b25lZGJfYnVpbHRpbjsKLSsjZW5kaWYKLSB9Ci0gCi0gY29uc3QgdGltZWxpYl90 emRiX2luZGV4X2VudHJ5ICp0aW1lbGliX3RpbWV6b25lX2lkZW50aWZpZXJzX2xpc3QoY29uc3Qg dGltZWxpYl90emRiICp0emRiLCBpbnQgKmNvdW50KQotQEAgLTYxNyw3ICsxMTU0LDMyIEBAIGNv bnN0IHRpbWVsaWJfdHpkYl9pbmRleF9lbnRyeSAqdGltZWxpYl8KLSBpbnQgdGltZWxpYl90aW1l em9uZV9pZF9pc192YWxpZChjb25zdCBjaGFyICp0aW1lem9uZSwgY29uc3QgdGltZWxpYl90emRi ICp0emRiKQotIHsKLSAJY29uc3QgdW5zaWduZWQgY2hhciAqdHpmOwotLQlyZXR1cm4gKHNlZWtf dG9fdHpfcG9zaXRpb24oJnR6ZiwgdGltZXpvbmUsIHR6ZGIpKTsKLSsKLSsjaWZkZWYgSEFWRV9T WVNURU1fVFpEQVRBCi0rCWlmICh0emRiID09IHRpbWV6b25lZGJfc3lzdGVtKSB7Ci0rCQljaGFy IGZuYW1lW1BBVEhfTUFYXTsKLSsJCXN0cnVjdCBzdGF0IHN0OwotKwotKwkJaWYgKHRpbWV6b25l WzBdID09ICdcMCcgfHwgc3Ryc3RyKHRpbWV6b25lLCAiLi4iKSAhPSBOVUxMKSB7Ci0rCQkJcmV0 dXJuIDA7Ci0rCQl9Ci0rCQlpZiAoIXN0cmNtcCh0aW1lem9uZSwgIlVUQyIpKSB7Ci0rCQkJcmV0 dXJuIDE7Ci0rCQl9Ci0rCQlpZiAoc3lzdGVtX2xvY2F0aW9uX3RhYmxlKSB7Ci0rCQkJaWYgKGZp bmRfem9uZV9pbmZvKHN5c3RlbV9sb2NhdGlvbl90YWJsZSwgdGltZXpvbmUpICE9IE5VTEwpIHsK LSsJCQkJLyogZm91bmQgaW4gY2FjaGUgKi8KLSsJCQkJcmV0dXJuIDE7Ci0rCQkJfQotKwkJfQot KwotKwkJc25wcmludGYoZm5hbWUsIHNpemVvZiBmbmFtZSwgWk9ORUlORk9fUFJFRklYICIvJXMi LCBjYW5vbmljYWxfdHpuYW1lKHRpbWV6b25lKSk7Ci0rCi0rCQlyZXR1cm4gc3RhdChmbmFtZSwg JnN0KSA9PSAwICYmIGlzX3ZhbGlkX3R6ZmlsZSgmc3QsIDApOwotKwl9Ci0rI2VuZGlmCi0rCi0r CXJldHVybiAoaW5tZW1fc2Vla190b190el9wb3NpdGlvbigmdHpmLCB0aW1lem9uZSwgdHpkYikp OwotIH0KLSAKLSBzdGF0aWMgaW50IHNraXBfNjRiaXRfcHJlYW1ibGUoY29uc3QgdW5zaWduZWQg Y2hhciAqKnR6ZiwgdGltZWxpYl90emluZm8gKnR6KQotQEAgLTY2Miw2ICsxMjI0LDggQEAgc3Rh dGljIHRpbWVsaWJfdHppbmZvKiB0aW1lbGliX3R6aW5mb19jdAotIHRpbWVsaWJfdHppbmZvICp0 aW1lbGliX3BhcnNlX3R6ZmlsZShjb25zdCBjaGFyICp0aW1lem9uZSwgY29uc3QgdGltZWxpYl90 emRiICp0emRiLCBpbnQgKmVycm9yX2NvZGUpCi0gewotIAljb25zdCB1bnNpZ25lZCBjaGFyICp0 emY7Ci0rCWNoYXIgKm1lbW1hcCA9IE5VTEw7Ci0rCXNpemVfdCBtYXBsZW47Ci0gCXRpbWVsaWJf dHppbmZvICp0bXA7Ci0gCWludCB2ZXJzaW9uOwotIAlpbnQgdHJhbnNpdGlvbnNfcmVzdWx0LCB0 eXBlc19yZXN1bHQ7Ci1AQCAtNjY5LDcgKzEyMzMsNyBAQCB0aW1lbGliX3R6aW5mbyAqdGltZWxp Yl9wYXJzZV90emZpbGUoY29uCi0gCi0gCSplcnJvcl9jb2RlID0gVElNRUxJQl9FUlJPUl9OT19F UlJPUjsKLSAKLS0JaWYgKHNlZWtfdG9fdHpfcG9zaXRpb24oJnR6ZiwgdGltZXpvbmUsIHR6ZGIp KSB7Ci0rCWlmIChzZWVrX3RvX3R6X3Bvc2l0aW9uKCZ0emYsIHRpbWV6b25lLCAmbWVtbWFwLCAm bWFwbGVuLCB0emRiKSkgewotIAkJdG1wID0gdGltZWxpYl90emluZm9fY3Rvcih0aW1lem9uZSk7 Ci0gCi0gCQl2ZXJzaW9uID0gcmVhZF9wcmVhbWJsZSgmdHpmLCB0bXAsICZ0eXBlKTsKLUBAIC03 MTIsMTEgKzEyNzYsMzggQEAgdGltZWxpYl90emluZm8gKnRpbWVsaWJfcGFyc2VfdHpmaWxlKGNv bgotIAkJCXJldHVybiBOVUxMOwotIAkJfQotIAotKyNpZmRlZiBIQVZFX1NZU1RFTV9UWkRBVEEK LSsJCWlmIChtZW1tYXApIHsKLSsJCQljb25zdCBzdHJ1Y3QgbG9jYXRpb25faW5mbyAqbGk7Ci0r Ci0rCQkJLyogVFppZi1zdHlsZSAtIGdyb2sgdGhlIGxvY2F0aW9uIGluZm8gZnJvbSB0aGUgc3lz dGVtIGRhdGFiYXNlLAotKwkJCSAqIGlmIHBvc3NpYmxlLiAqLwotKwotKwkJCWlmICgobGkgPSBm aW5kX3pvbmVfaW5mbyhzeXN0ZW1fbG9jYXRpb25fdGFibGUsIHRpbWV6b25lKSkgIT0gTlVMTCkg ewotKwkJCQl0bXAtPmxvY2F0aW9uLmNvbW1lbnRzID0gdGltZWxpYl9zdHJkdXAobGktPmNvbW1l bnQpOwotKwkJCQlzdHJuY3B5KHRtcC0+bG9jYXRpb24uY291bnRyeV9jb2RlLCBsaS0+Y29kZSwg Mik7Ci0rCQkJCXRtcC0+bG9jYXRpb24ubG9uZ2l0dWRlID0gbGktPmxvbmdpdHVkZTsKLSsJCQkJ dG1wLT5sb2NhdGlvbi5sYXRpdHVkZSA9IGxpLT5sYXRpdHVkZTsKLSsJCQkJdG1wLT5iYyA9IDE7 Ci0rCQkJfQotKwkJCWVsc2UgewotKwkJCQlzZXRfZGVmYXVsdF9sb2NhdGlvbl9hbmRfY29tbWVu dHMoJnR6ZiwgdG1wKTsKLSsJCQl9Ci0rCi0rCQkJLyogTm93IGRvbmUgd2l0aCB0aGUgbW1hcCBz ZWdtZW50IC0gZGlzY2FyZCBpdC4gKi8KLSsJCQlpZiAobWVtbWFwICE9IGludGVybmFsX3V0Yykg ewotKwkJCQltdW5tYXAobWVtbWFwLCBtYXBsZW4pOwotKwkJCX0KLSsJCX0gZWxzZSB7Ci0rI2Vu ZGlmCi0gCQlpZiAodHlwZSA9PSBUSU1FTElCX1RaSU5GT19QSFApIHsKLSAJCQlyZWFkX2xvY2F0 aW9uKCZ0emYsIHRtcCk7Ci0gCQl9IGVsc2UgewotIAkJCXNldF9kZWZhdWx0X2xvY2F0aW9uX2Fu ZF9jb21tZW50cygmdHpmLCB0bXApOwotIAkJfQotKyNpZmRlZiBIQVZFX1NZU1RFTV9UWkRBVEEK LSsJCX0KLSsjZW5kaWYKLSAJfSBlbHNlIHsKLSAJCSplcnJvcl9jb2RlID0gVElNRUxJQl9FUlJP Ul9OT19TVUNIX1RJTUVaT05FOwotIAkJdG1wID0gTlVMTDsKLWRpZmYgLXVwIC4vZXh0L2RhdGUv cGhwX2RhdGUuYy5zeXN0emRhdGEgLi9leHQvZGF0ZS9waHBfZGF0ZS5jCi0tLS0gLi9leHQvZGF0 ZS9waHBfZGF0ZS5jLnN5c3R6ZGF0YQkyMDI0LTA3LTAyIDE1OjQzOjEzLjAwMDAwMDAwMCArMDIw MAotKysrIC4vZXh0L2RhdGUvcGhwX2RhdGUuYwkyMDI0LTA3LTAzIDE2OjIxOjIwLjI0MDc4Njg0 OCArMDIwMAotQEAgLTQ4Nyw3ICs0ODcsMTEgQEAgUEhQX01JTkZPX0ZVTkNUSU9OKGRhdGUpCi0g CXBocF9pbmZvX3ByaW50X3RhYmxlX3JvdygyLCAiZGF0ZS90aW1lIHN1cHBvcnQiLCAiZW5hYmxl ZCIpOwotIAlwaHBfaW5mb19wcmludF90YWJsZV9yb3coMiwgInRpbWVsaWIgdmVyc2lvbiIsIFRJ TUVMSUJfQVNDSUlfVkVSU0lPTik7Ci0gCXBocF9pbmZvX3ByaW50X3RhYmxlX3JvdygyLCAiXCJP bHNvblwiIFRpbWV6b25lIERhdGFiYXNlIFZlcnNpb24iLCB0emRiLT52ZXJzaW9uKTsKLSsjaWZk ZWYgSEFWRV9TWVNURU1fVFpEQVRBCi0rCXBocF9pbmZvX3ByaW50X3RhYmxlX3JvdygyLCAiVGlt ZXpvbmUgRGF0YWJhc2UiLCAic3lzdGVtIik7Ci0rI2Vsc2UKLSAJcGhwX2luZm9fcHJpbnRfdGFi bGVfcm93KDIsICJUaW1lem9uZSBEYXRhYmFzZSIsIHBocF9kYXRlX2dsb2JhbF90aW1lem9uZV9k Yl9lbmFibGVkID8gImV4dGVybmFsIiA6ICJpbnRlcm5hbCIpOwotKyNlbmRpZgotIAlwaHBfaW5m b19wcmludF90YWJsZV9yb3coMiwgIkRlZmF1bHQgdGltZXpvbmUiLCBndWVzc190aW1lem9uZSh0 emRiKSk7Ci0gCXBocF9pbmZvX3ByaW50X3RhYmxlX2VuZCgpOwotIAoKZGlmZiAtLWdpdCBhL3Bo cC04LjQuMjItc3lzdHpkYXRhLXYyNC5wYXRjaCBiL3BocC04LjQuMjItc3lzdHpkYXRhLXYyNC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZThlNWIxCi0tLSAvZGV2 L251bGwKKysrIGIvcGhwLTguNC4yMi1zeXN0emRhdGEtdjI0LnBhdGNoCkBAIC0wLDAgKzEsNzQy IEBACisjIExpY2Vuc2U6IE1JVAorIyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlU CisKK0FkZCBzdXBwb3J0IGZvciB1c2Ugb2YgdGhlIHN5c3RlbSB0aW1lem9uZSBkYXRhYmFzZSwg cmF0aGVyCit0aGFuIGVtYmVkZGluZyBhIGNvcHkuICBEaXNjdXNzZWQgdXBzdHJlYW0gYnV0IHdh cyBub3QgZGVzaXJlZC4KKworSGlzdG9yeToKK3IyNDogYWRkIGludGVybmFsIFVUQyBpZiB0emRh dGEgaXMgbWlzc2luZworcjIzOiBmaXggcG9zc2libGUgYnVmZmVyIG92ZXJmbG93CityMjI6IHJl dHJpZXZlIHR6ZGF0YSB2ZXJzaW9uIGZyb20gL3Vzci9zaGFyZS96b25laW5mby90emRhdGEuemkK K3IyMTogYWRhcHQgZm9yIHRpbWVsaWIgMjAyMS4wMyAoaW4gOC4xLjApCityMjA6IGFkYXB0IGZv ciB0aW1lbGliIDIwMjAuMDMgKGluIDguMC4xMFJDMSkKK3IxOTogYWRhcHQgZm9yIHRpbWVsaWIg MjAyMC4wMiAoaW4gOC4wLjBiZXRhMikKK3IxODogYWRhcHQgZm9yIGF1dG90b29sIGNoYW5nZSBp biA3LjMuM1JDMQorcjE3OiBhZGFwdCBmb3IgdGltZWxpYiAyMDE4LjAxIChpbiA3LjMuMlJDMSkK K3IxNjogYWRhcHQgZm9yIHRpbWVsaWIgMjAxNy4wNiAoaW4gNy4yLjNSQzEpCityMTU6IGFkYXB0 IGZvciB0aW1lbGliIDIwMTcuMDViZXRhNyAoaW4gNy4yLjBSQzEpCityMTQ6IGltcHJvdmUgY2hl Y2sgZm9yIHZhbGlkIHR6IGZpbGUKK3IxMzogYWRhcHQgZm9yIHVwc3RyZWFtIGNoYW5nZXMgdG8g dXNlIFBIUCBhbGxvY2F0b3IKK3IxMjogYWRhcHQgZm9yIHVwc3RyZWFtIGNoYW5nZXMgZm9yIG5l dyB6aWMKK3IxMTogdXNlIGNhbm9uaWNhbCBuYW1lcyB0byBhdm9pZCBtb3JlIGNhc2Ugc2Vuc2l0 aXZpdHkgaXNzdWVzCisgICAgIHJvdW5kIGxhdC9sb25nIGZyb20gem9uZS50YWIgdG93YXJkcyB6 ZXJvIHBlciBidWlsdGluIGRiCityMTA6IG1ha2UgdGltZXpvbmUgY2FzZSBpbnNlbnNpdGl2ZQor cjk6IGZpeCBhbm90aGVyIGNvbXBpbGUgZXJyb3Igd2l0aG91dCAtLXdpdGgtc3lzdGVtLXR6ZGF0 YSBjb25maWd1cmVkIChNaWNoYWVsIEhlaW1wb2xkKQorcjg6IGZpeCBjb21waWxlIGVycm9yIHdp dGhvdXQgLS13aXRoLXN5c3RlbS10emRhdGEgY29uZmlndXJlZAorcjc6IGltcHJvdmUgY2hlY2sg Zm9yIHZhbGlkIHRpbWV6b25lIGlkIHRvIGV4Y2x1ZGUgZGlyZWN0b3JpZXMKK3I2OiBmaXggZmQg bGVhayBpbiByNSwgZml4IGNvdW50cnkgY29kZS9CQyBmbGFnIHVzZSBpbgorICAgIHRpbWV6b25l X2lkZW50aWZpZXJzX2xpc3QoKSB1c2luZyBzeXN0ZW0gZGIsCisgICAgZml4IHVzZSBvZiBQRUNM IHRpbWV6b25lZGIgdG8gb3ZlcnJpZGUgc3lzdGVtIGRiLAorcjU6IHJldmVydHMgYWRkaXRpb24g b2YgIlN5c3RlbS9Mb2NhbHRpbWUiIGZha2UgdHpuYW1lLgorICAgIHVwZGF0ZWQgZm9yIDUuMy4w LCBwYXJzZXMgem9uZS50YWIgdG8gcGljayB1cCBtYXBwaW5nIGJldHdlZW4KKyAgICB0aW1lem9u ZSBuYW1lLCBjb3VudHJ5IGNvZGUgYW5kIGxvbmcvbGF0IGNvb3JkcworcjQ6IGFkZGVkICJTeXN0 ZW0vTG9jYWx0aW1lIiB0em5hbWUgd2hpY2ggdXNlcyAvZXRjL2xvY2FsdGltZQorcjM6IGZpeCBh IGNyYXNoIGlmIC91c3Ivc2hhcmUvem9uZWluZm8gZG9lc24ndCBleGlzdCAoUmFwaGFlbCBHZWlz c2VydCkKK3IyOiBhZGQgZmlsZXN5c3RlbSB0cmF3bCB0byBzZXQgdXAgbmFtZSBhbGlhcyBpbmRl eAorcjE6IGluaXRpYWwgcmV2aXNpb24KKworCitkaWZmIC11cCAuL2V4dC9kYXRlL2NvbmZpZzAu bTQuc3lzdHpkYXRhIC4vZXh0L2RhdGUvY29uZmlnMC5tNAorLS0tIC4vZXh0L2RhdGUvY29uZmln MC5tNC5zeXN0emRhdGEJMjAyNi0wNS0xOSAxNzowMjozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyAu L2V4dC9kYXRlL2NvbmZpZzAubTQJMjAyNi0wNS0yMCAwNzozNDoxNC4zNjAxNzU3OTIgKzAyMDAK K0BAIC04LDYgKzgsMTggQEAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKFstV25vLWltcGxpY2l0LWZh bAorICAgW1BIUF9EQVRFX0NGTEFHUz0iJFBIUF9EQVRFX0NGTEFHUyAtV25vLWltcGxpY2l0LWZh bGx0aHJvdWdoIl0sLAorICAgWy1XZXJyb3JdKQorIAorK1BIUF9BUkdfV0lUSChzeXN0ZW0tdHpk YXRhLCBmb3IgdXNlIG9mIHN5c3RlbSB0aW1lem9uZSBkYXRhLAorKyAgW0FTX0hFTFBfU1RSSU5H KFstLXdpdGgtc3lzdGVtLXR6ZGF0YVs9RElSXV0sW3RvIHNwZWNpZnkgdXNlIG9mIHN5c3RlbSB0 aW1lem9uZSBkYXRhXSldLCBubywgbm8pCisrCisraWYgdGVzdCAiJFBIUF9TWVNURU1fVFpEQVRB IiAhPSAibm8iOyB0aGVuCisrICAgQUNfREVGSU5FKEhBVkVfU1lTVEVNX1RaREFUQSwgMSwgW0Rl ZmluZSBpZiBzeXN0ZW0gdGltZXpvbmUgZGF0YSBpcyB1c2VkXSkKKysKKysgICBpZiB0ZXN0ICIk UEhQX1NZU1RFTV9UWkRBVEEiICE9ICJ5ZXMiOyB0aGVuCisrICAgICAgQUNfREVGSU5FX1VOUVVP VEVEKEhBVkVfU1lTVEVNX1RaREFUQV9QUkVGSVgsICIkUEhQX1NZU1RFTV9UWkRBVEEiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIGZvciBsb2NhdGlvbiBvZiBzeXN0ZW0gdGlt ZXpvbmUgZGF0YV0pCisrICAgZmkKKytmaQorKworIFBIUF9EQVRFX0NGTEFHUz0iJFBIUF9EQVRF X0NGTEFHUyAtSUBleHRfYnVpbGRkaXJAL2xpYiAtRFpFTkRfRU5BQkxFX1NUQVRJQ19UU1JNTFNf Q0FDSEU9MSAtREhBVkVfVElNRUxJQl9DT05GSUdfSD0xIgorIAorIEFYX0NIRUNLX0NPTVBJTEVf RkxBRyhbLWZ3cmFwdl0sCitkaWZmIC11cCAuL2V4dC9kYXRlL2xpYi9wYXJzZV90ei5jLnN5c3R6 ZGF0YSAuL2V4dC9kYXRlL2xpYi9wYXJzZV90ei5jCistLS0gLi9leHQvZGF0ZS9saWIvcGFyc2Vf dHouYy5zeXN0emRhdGEJMjAyNi0wNS0xOSAxNzowMjozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyAu L2V4dC9kYXRlL2xpYi9wYXJzZV90ei5jCTIwMjYtMDUtMjAgMDc6MzM6MTAuMzAxMTIwOTc5ICsw MjAwCitAQCAtMjYsOSArMjYsMzMgQEAKKyAjaW5jbHVkZSAidGltZWxpYi5oIgorICNpbmNsdWRl ICJ0aW1lbGliX3ByaXZhdGUuaCIKKyAKKysjaWZkZWYgSEFWRV9TWVNURU1fVFpEQVRBCisrI2lu Y2x1ZGUgPHN5cy9tbWFuLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPGxp bWl0cy5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysKKysj aW5jbHVkZSAicGhwX3NjYW5kaXIuaCIKKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBp bnRlcm5hbF91dGNbXSA9IHsKKysgICAgICAgIDB4NTQsIDB4NWEsIDB4NjksIDB4NjYsIDB4MzIs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsCisrICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LAorKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKysgICAg ICAgIDB4MDAsIDB4MDAsIDB4NTUsIDB4NTQsIDB4NDMsIDB4MDAsIDB4NTQsIDB4NWEsIDB4Njks IDB4NjYsIDB4MzIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisrICAgICAgICAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorKyAgICAgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwKKysgICAgICAgIDB4MDAsIDB4MDQsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTUsIDB4NTQsIDB4NDMsIDB4MDAsIDB4MGEs IDB4NTUsIDB4NTQsIDB4NDMsCisrICAgICAgICAweDMwLCAweDBhCisrfTsKKysKKysjZWxzZQor ICNkZWZpbmUgVElNRUxJQl9TVVBQT1JUU19WMkRBVEEKKyAjZGVmaW5lIFRJTUVMSUJfU1VQUE9S VF9TTElNX0ZJTEUKKyAjaW5jbHVkZSAidGltZXpvbmVkYi5oIgorKyNlbmRpZgorKworKyNpbmNs dWRlIDxjdHlwZS5oPgorIAorICNpZiAoZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19B UFBMRV9DQ19fKSkgJiYgKGRlZmluZWQoX19CSUdfRU5ESUFOX18pIHx8IGRlZmluZWQoX19MSVRU TEVfRU5ESUFOX18pKQorICMgaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykKK0BAIC05NSw2 ICsxMTksMTEgQEAgc3RhdGljIGludCByZWFkX3BocF9wcmVhbWJsZShjb25zdCB1bnNpZworIHsK KyAJdWludDMyX3QgdmVyc2lvbjsKKyAKKysJaWYgKG1lbWNtcCgqdHpmLCAiVFppZiIsIDQpID09 IDApIHsKKysJCSp0emYgKz0gMjA7CisrCQlyZXR1cm4gMDsKKysJfQorKworIAkvKiByZWFkIElE ICovCisgCXZlcnNpb24gPSAoKnR6ZilbM10gLSAnMCc7CisgCSp0emYgKz0gNDsKK0BAIC01Nzcs NyArNjA2LDQ3NSBAQCB2b2lkIHRpbWVsaWJfZHVtcF90emluZm8odGltZWxpYl90emluZm8KKyAJ fQorIH0KKyAKKy1zdGF0aWMgaW50IHNlZWtfdG9fdHpfcG9zaXRpb24oY29uc3QgdW5zaWduZWQg Y2hhciAqKnR6ZiwgY29uc3QgY2hhciAqdGltZXpvbmUsIGNvbnN0IHRpbWVsaWJfdHpkYiAqdHpk YikKKysjaWZkZWYgSEFWRV9TWVNURU1fVFpEQVRBCisrCisrI2lmZGVmIEhBVkVfU1lTVEVNX1Ra REFUQV9QUkVGSVgKKysjZGVmaW5lIFpPTkVJTkZPX1BSRUZJWCBIQVZFX1NZU1RFTV9UWkRBVEFf UFJFRklYCisrI2Vsc2UKKysjZGVmaW5lIFpPTkVJTkZPX1BSRUZJWCAiL3Vzci9zaGFyZS96b25l aW5mbyIKKysjZW5kaWYKKysKKysvKiBTeXN0ZW0gdGltZXpvbmUgZGF0YWJhc2UgcG9pbnRlci4g Ki8KKytzdGF0aWMgY29uc3QgdGltZWxpYl90emRiICp0aW1lem9uZWRiX3N5c3RlbTsKKysKKysv KiBIYXNoIHRhYmxlIGVudHJ5IGZvciB0aGUgY2FjaGUgb2YgdGhlIHpvbmUudGFiIG1hcHBpbmcg dGFibGUuICovCisrc3RydWN0IGxvY2F0aW9uX2luZm8geworKyAgICAgICAgY2hhciBjb2RlWzJd OworKyAgICAgICAgZG91YmxlIGxhdGl0dWRlLCBsb25naXR1ZGU7CisrICAgICAgICBjaGFyIG5h bWVbNjRdOworKyAgICAgICAgY2hhciAqY29tbWVudDsKKysgICAgICAgIHN0cnVjdCBsb2NhdGlv bl9pbmZvICpuZXh0OworK307CisrCisrLyogQ2FjaGUgb2Ygem9uZS50YWIuICovCisrc3RhdGlj IHN0cnVjdCBsb2NhdGlvbl9pbmZvICoqc3lzdGVtX2xvY2F0aW9uX3RhYmxlOworKworKy8qIFNp emUgb2YgdGhlIHpvbmUudGFiIGhhc2ggdGFibGU7IGEgcmFuZG9tLWlzaCBwcmltZSBiaWcgZW5v dWdoIHRvCisrICogcHJldmVudCB0b28gbWFueSBjb2xsaXNpb25zLiAqLworKyNkZWZpbmUgTE9D SU5GT19IQVNIX1NJWkUgKDEwMjEpCisrCisrLyogQ29tcHV0ZSBhIGNhc2UgaW5zZW5zaXRpdmUg aGFzaCBvZiBzdHIgKi8KKytzdGF0aWMgdWludDMyX3QgdHpfaGFzaChjb25zdCBjaGFyICpzdHIp CisreworKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIg KilzdHI7CisrICAgIHVpbnQzMl90IGhhc2ggPSA1MzgxOworKyAgICBpbnQgYzsKKysKKysgICAg d2hpbGUgKChjID0gdG9sb3dlcigqcCsrKSkgIT0gJ1wwJykgeworKyAgICAgICAgaGFzaCA9ICho YXNoIDw8IDUpIF4gaGFzaCBeIGM7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGhhc2ggJSBMT0NJ TkZPX0hBU0hfU0laRTsKKyt9CisrCisrLyogUGFyc2UgYW4gSVNPLTY3MDkgZGF0ZSBhcyB1c2Vk IGluIHpvbmUudGFiLiBSZXR1cm5zIGVuZCBvZiB0aGUKKysgKiBwYXJzZWQgc3RyaW5nIG9uIHN1 Y2Nlc3MsIG9yIE5VTEwgb24gcGFyc2UgZXJyb3IuICBPbiBzdWNjZXNzLAorKyAqIHdyaXRlcyB0 aGUgcGFyc2VkIG51bWJlciB0byAqcmVzdWx0LiAqLworK3N0YXRpYyBjaGFyICpwYXJzZV9pc282 NzA5KGNoYXIgKnAsIGRvdWJsZSAqcmVzdWx0KQorK3sKKysgICAgZG91YmxlIHYsIHNpZ247Cisr ICAgIGNoYXIgKnBlbmQ7CisrICAgIHNpemVfdCBsZW47CisrCisrICAgIGlmICgqcCA9PSAnKycp CisrICAgICAgICBzaWduID0gMS4wOworKyAgICBlbHNlIGlmICgqcCA9PSAnLScpCisrICAgICAg ICBzaWduID0gLTEuMDsKKysgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAg IHArKzsKKysgICAgZm9yIChwZW5kID0gcDsgKnBlbmQgPj0gJzAnICYmICpwZW5kIDw9ICc5Jzsg cGVuZCsrKQorKyAgICAgICAgOzsKKysKKysgICAgLyogQW5ub3lpbmcgZW5jb2RpbmcgdXNlZCBi eSB6b25lLnRhYiBoYXMgbm8gZGVjaW1hbCBwb2ludCwgc28gdXNlCisrICAgICAqIHRoZSBsZW5n dGggdG8gZGV0ZXJtaW5lIHRoZSBmb3JtYXQ6CisrICAgICAqIAorKyAgICAgKiA0ID0gRERNTQor KyAgICAgKiA1ID0gRERETU0KKysgICAgICogNiA9IERETU1TUworKyAgICAgKiA3ID0gRERETU1T UworKyAgICAgKi8KKysgICAgbGVuID0gcGVuZCAtIHA7CisrICAgIGlmIChsZW4gPCA0IHx8IGxl biA+IDcpIHsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrCisrICAgIC8qIHAgPT4g W0RdREQgKi8KKysgICAgdiA9IChwWzBdIC0gJzAnKSAqIDEwLjAgKyAocFsxXSAtICcwJyk7Cisr ICAgIHAgKz0gMjsKKysgICAgaWYgKGxlbiA9PSA1IHx8IGxlbiA9PSA3KQorKyAgICAgICAgdiA9 IHYgKiAxMC4wICsgKCpwKysgLSAnMCcpOworKyAgICAvKiBwID0+IE1NW1NTXSAqLworKyAgICB2 ICs9ICgxMC4wICogKHBbMF0gLSAnMCcpCisrICAgICAgICAgICsgcFsxXSAtICcwJykgLyA2MC4w OworKyAgICBwICs9IDI7CisrICAgIC8qIHAgPT4gW1NTXSAqLworKyAgICBpZiAobGVuID4gNSkg eworKyAgICAgICAgdiArPSAoMTAuMCAqIChwWzBdIC0gJzAnKQorKyAgICAgICAgICAgICAgKyBw WzFdIC0gJzAnKSAvIDM2MDAuMDsKKysgICAgICAgIHAgKz0gMjsKKysgICAgfQorKworKyAgICAv KiBSb3VuZCB0byBmaXZlIGRlY2ltYWwgcGxhY2UsIG5vdCBiZWNhdXNlIGl0J3MgYSBnb29kIGlk ZWEsCisrICAgICAqIGJ1dCwgYmVjYXVzZSB0aGUgYnVpbHRpbiBkYXRhIHVzZXMgcm91bmRlZCBk YXRhLCBzbywgbWF0Y2gKKysgICAgICogdGhhdC4gKi8KKysgICAgKnJlc3VsdCA9IHRydW5jKHYg KiBzaWduICogMTAwMDAwLjApIC8gMTAwMDAwLjA7CisrCisrICAgIHJldHVybiBwOworK30KKysK KysvKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgem9uZS50YWIgZmlsZSB0byBidWlsZCB1cCB0 aGUgbWFwcGluZyBvZgorKyAqIHRpbWV6b25lIHRvIGNvdW50cnkgY29kZSBhbmQgZ2VvZ3JhcGhp YyBsb2NhdGlvbiwgYW5kIHJldHVybnMgYQorKyAqIGhhc2ggdGFibGUuICBUaGUgaGFzaCB0YWJs ZSBpcyBpbmRleGVkIGJ5IHRoZSBmdW5jdGlvbjoKKysgKgorKyAqICAgdHpfaGFzaCh0aW1lem9u ZS1uYW1lKQorKyAqLworK3N0YXRpYyBzdHJ1Y3QgbG9jYXRpb25faW5mbyAqKmNyZWF0ZV9sb2Nh dGlvbl90YWJsZSh2b2lkKQorK3sKKysgICAgc3RydWN0IGxvY2F0aW9uX2luZm8gKipsaSwgKmk7 CisrICAgIGNoYXIgem9uZV90YWJbUEFUSF9NQVhdOworKyAgICBjaGFyIGxpbmVbNTEyXTsKKysg ICAgRklMRSAqZnA7CisrCisrICAgIHN0cm5jcHkoem9uZV90YWIsIFpPTkVJTkZPX1BSRUZJWCAi L3pvbmUudGFiIiwgc2l6ZW9mIHpvbmVfdGFiKTsKKysKKysgICAgZnAgPSBmb3Blbih6b25lX3Rh YiwgInIiKTsKKysgICAgaWYgKCFmcCkgeworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0K KysKKysgICAgbGkgPSBjYWxsb2MoTE9DSU5GT19IQVNIX1NJWkUsIHNpemVvZiAqbGkpOworKwor KyAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mIGxpbmUsIGZwKSkgeworKyAgICAgICAgY2hh ciAqcCA9IGxpbmUsICpjb2RlLCAqbmFtZSwgKmNvbW1lbnQ7CisrICAgICAgICB1aW50MzJfdCBo YXNoOworKyAgICAgICAgZG91YmxlIGxhdGl0dWRlLCBsb25naXR1ZGU7CisrCisrICAgICAgICB3 aGlsZSAoaXNzcGFjZSgqcCkpCisrICAgICAgICAgICAgcCsrOworKworKyAgICAgICAgaWYgKCpw ID09ICcjJyB8fCAqcCA9PSAnXDAnIHx8ICpwID09ICdcbicpCisrICAgICAgICAgICAgY29udGlu dWU7CisrICAgICAgICAKKysgICAgICAgIGlmICghaXNhbHBoYShwWzBdKSB8fCAhaXNhbHBoYShw WzFdKSB8fCBwWzJdICE9ICdcdCcpCisrICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAK KysgICAgICAgIC8qIGNvZGUgPT4gQUEgKi8KKysgICAgICAgIGNvZGUgPSBwOworKyAgICAgICAg cFsyXSA9IDA7CisrICAgICAgICBwICs9IDM7CisrCisrICAgICAgICAvKiBjb29yZHMgPT4gWyst XVtEXURETU1bU1NdWystXVtEXURETU1bU1NdICovCisrICAgICAgICBwID0gcGFyc2VfaXNvNjcw OShwLCAmbGF0aXR1ZGUpOworKyAgICAgICAgaWYgKCFwKSB7CisrICAgICAgICAgICAgY29udGlu dWU7CisrICAgICAgICB9CisrICAgICAgICBwID0gcGFyc2VfaXNvNjcwOShwLCAmbG9uZ2l0dWRl KTsKKysgICAgICAgIGlmICghcCkgeworKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAg fQorKworKyAgICAgICAgaWYgKCFwIHx8ICpwICE9ICdcdCcpIHsKKysgICAgICAgICAgICBjb250 aW51ZTsKKysgICAgICAgIH0KKysKKysgICAgICAgIC8qIG5hbWUgPSBzdHJpbmcgKi8KKysgICAg ICAgIG5hbWUgPSArK3A7CisrICAgICAgICB3aGlsZSAoKnAgIT0gJ1x0JyAmJiAqcCAmJiAqcCAh PSAnXG4nKQorKyAgICAgICAgICAgIHArKzsKKysKKysgICAgICAgICpwKysgPSAnXDAnOworKwor KyAgICAgICAgLyogY29tbWVudCA9IHN0cmluZyAqLworKyAgICAgICAgY29tbWVudCA9IHA7Cisr ICAgICAgICB3aGlsZSAoKnAgIT0gJ1x0JyAmJiAqcCAmJiAqcCAhPSAnXG4nKQorKyAgICAgICAg ICAgIHArKzsKKysKKysgICAgICAgIGlmICgqcCA9PSAnXG4nIHx8ICpwID09ICdcdCcpCisrICAg ICAgICAgICAgKnAgPSAnXDAnOworKyAgICAgICAgCisrICAgICAgICBoYXNoID0gdHpfaGFzaChu YW1lKTsKKysgICAgICAgIGkgPSBtYWxsb2Moc2l6ZW9mICppKTsKKysgICAgICAgIG1lbWNweShp LT5jb2RlLCBjb2RlLCAyKTsKKysgICAgICAgIHN0cm5jcHkoaS0+bmFtZSwgbmFtZSwgc2l6ZW9m IGktPm5hbWUpOworKyAgICAgICAgaS0+Y29tbWVudCA9IHN0cmR1cChjb21tZW50KTsKKysgICAg ICAgIGktPmxvbmdpdHVkZSA9IGxvbmdpdHVkZTsKKysgICAgICAgIGktPmxhdGl0dWRlID0gbGF0 aXR1ZGU7CisrICAgICAgICBpLT5uZXh0ID0gbGlbaGFzaF07CisrICAgICAgICBsaVtoYXNoXSA9 IGk7CisrICAgICAgICAvKiBwcmludGYoIiVzIFsldSwgJWYsICVmXVxuIiwgbmFtZSwgaGFzaCwg bGF0aXR1ZGUsIGxvbmdpdHVkZSk7ICovCisrICAgIH0KKysKKysgICAgZmNsb3NlKGZwKTsKKysK KysgICAgcmV0dXJuIGxpOworK30KKysKKysvKiBSZXR1cm4gbG9jYXRpb24gaW5mbyBmcm9tIGhh c2ggdGFibGUsIHVzaW5nIGdpdmVuIHRpbWV6b25lIG5hbWUuCisrICogUmV0dXJucyBOVUxMIGlm IHRoZSBuYW1lIGNvdWxkIG5vdCBiZSBmb3VuZC4gKi8KKytjb25zdCBzdHJ1Y3QgbG9jYXRpb25f aW5mbyAqZmluZF96b25lX2luZm8oc3RydWN0IGxvY2F0aW9uX2luZm8gKipsaSwgCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCisr eworKyAgICB1aW50MzJfdCBoYXNoID0gdHpfaGFzaChuYW1lKTsKKysgICAgY29uc3Qgc3RydWN0 IGxvY2F0aW9uX2luZm8gKmw7CisrCisrICAgIGlmICghbGkpIHsKKysgICAgICAgIHJldHVybiBO VUxMOworKyAgICB9CisrCisrICAgIGZvciAobCA9IGxpW2hhc2hdOyBsOyBsID0gbC0+bmV4dCkg eworKyAgICAgICAgaWYgKHRpbWVsaWJfc3RyY2FzZWNtcChsLT5uYW1lLCBuYW1lKSA9PSAwKQor KyAgICAgICAgICAgIHJldHVybiBsOworKyAgICB9CisrCisrICAgIHJldHVybiBOVUxMOworK30g ICAgCisrCisrLyogRmlsdGVyIG91dCBzb21lIG5vbi10emRhdGEgZmlsZXMgYW5kIHRoZSBwb3Np eC9yaWdodCBkYXRhYmFzZXMsIGlmCisrICogcHJlc2VudC4gKi8KKytzdGF0aWMgaW50IGluZGV4 X2ZpbHRlcihjb25zdCBzdHJ1Y3QgZGlyZW50ICplbnQpCisreworKwlyZXR1cm4gc3RyY21wKGVu dC0+ZF9uYW1lLCAiLiIpICE9IDAKKysJCSYmIHN0cmNtcChlbnQtPmRfbmFtZSwgIi4uIikgIT0g MAorKwkJJiYgc3RyY21wKGVudC0+ZF9uYW1lLCAicG9zaXgiKSAhPSAwCisrCQkmJiBzdHJjbXAo ZW50LT5kX25hbWUsICJwb3NpeHJ1bGVzIikgIT0gMAorKwkJJiYgc3RyY21wKGVudC0+ZF9uYW1l LCAicmlnaHQiKSAhPSAwCisrCQkmJiBzdHJzdHIoZW50LT5kX25hbWUsICIubGlzdCIpID09IE5V TEwKKysJCSYmIHN0cnN0cihlbnQtPmRfbmFtZSwgIi50YWIiKSA9PSBOVUxMOworK30KKysKKytz dGF0aWMgaW50IHN5c2RiY21wKGNvbnN0IHZvaWQgKmZpcnN0LCBjb25zdCB2b2lkICpzZWNvbmQp CisreworKyAgICAgICAgY29uc3QgdGltZWxpYl90emRiX2luZGV4X2VudHJ5ICphbHBoYSA9IGZp cnN0LCAqYmV0YSA9IHNlY29uZDsKKysKKysgICAgICAgIHJldHVybiB0aW1lbGliX3N0cmNhc2Vj bXAoYWxwaGEtPmlkLCBiZXRhLT5pZCk7CisrfQorKworKy8qIFJldHJpZXZlIHR6ZGF0YSB2ZXJz aW9uLiAqLworK3N0YXRpYyB2b2lkIHJldHJpZXZlX3pvbmVfdmVyc2lvbih0aW1lbGliX3R6ZGIg KmRiKQorK3sKKysgICAgc3RhdGljIGNoYXIgYnVmWzMwXTsKKysgICAgY2hhciBwYXRoW1BBVEhf TUFYXTsKKysgICAgRklMRSAqZnA7CisrCisrICAgIHN0cm5jcHkocGF0aCwgWk9ORUlORk9fUFJF RklYICIvdHpkYXRhLnppIiwgc2l6ZW9mKHBhdGgpKTsKKysKKysgICAgZnAgPSBmb3BlbihwYXRo LCAiciIpOworKyAgICBpZiAoZnApIHsKKysJCWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBm cCkpIHsKKysJCQlpZiAoIW1lbWNtcChidWYsICIjIHZlcnNpb24gIiwgMTApICYmCisrCQkJCWlz ZGlnaXQoYnVmWzEwXSkgJiYKKysJCQkJaXNkaWdpdChidWZbMTFdKSAmJgorKwkJCQlpc2RpZ2l0 KGJ1ZlsxMl0pICYmCisrCQkJCWlzZGlnaXQoYnVmWzEzXSkgJiYKKysJCQkJaXNsb3dlcihidWZb MTRdKSkgeworKwkJCQlpZiAoYnVmWzE0XSA+PSAndCcpIHsgICAgICAgIC8qIDIwMjJ0ID0gMjAy Mi4yMCAqLworKwkJCQkJYnVmWzE3XSA9IDA7CisrCQkJCQlidWZbMTZdID0gYnVmWzE0XSAtICd0 JyArICcwJzsKKysJCQkJCWJ1ZlsxNV0gPSAnMic7CisrCQkJCX0gZWxzZSBpZiAoYnVmWzE0XSA+ PSAnaicpIHsgLyogMjAyMmogPSAyMDIyLjEwICovCisrCQkJCQlidWZbMTddID0gMDsKKysJCQkJ CWJ1ZlsxNl0gPSBidWZbMTRdIC0gJ2onICsgJzAnOworKwkJCQkJYnVmWzE1XSA9ICcxJzsKKysJ CQkJfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAvKiAyMDIyYSA9IDIwMjIuMSAgKi8KKysJ CQkJCWJ1ZlsxNl0gPSAwOworKwkJCQkJYnVmWzE1XSA9IGJ1ZlsxNF0gLSAnYScgKyAnMSc7Cisr CQkJCX0KKysJCQkJYnVmWzE0XSA9ICcuJzsKKysJCQkJZGItPnZlcnNpb24gPSBidWYrMTA7Cisr CQkJfQorKwkJfQorKwkJZmNsb3NlKGZwKTsKKysgICAgfQorK30KKysKKysKKysvKiBDcmVhdGUg dGhlIHpvbmUgaWRlbnRpZmllciBpbmRleCBieSB0cmF3bGluZyB0aGUgZmlsZXN5c3RlbS4gKi8K KytzdGF0aWMgdm9pZCBjcmVhdGVfem9uZV9pbmRleCh0aW1lbGliX3R6ZGIgKmRiKQorK3sKKysJ c2l6ZV90IGRpcnN0YWNrX3NpemUsICBkaXJzdGFja190b3A7CisrCXNpemVfdCBpbmRleF9zaXpl LCBpbmRleF9uZXh0OworKwl0aW1lbGliX3R6ZGJfaW5kZXhfZW50cnkgKmRiX2luZGV4OworKwlj aGFyICoqZGlyc3RhY2s7CisrCisrCS8qIExJRk8gc3RhY2sgdG8gaG9sZCBkaXJlY3RvcnkgZW50 cmllcyB0byBzY2FuOyBlYWNoIHNsb3QgaXMgYQorKwkgKiBkaXJlY3RvcnkgbmFtZSByZWxhdGl2 ZSB0byB0aGUgem9uZWluZm8gcHJlZml4LiAqLworKwlkaXJzdGFja19zaXplID0gMzI7CisrCWRp cnN0YWNrID0gbWFsbG9jKGRpcnN0YWNrX3NpemUgKiBzaXplb2YgKmRpcnN0YWNrKTsKKysJZGly c3RhY2tfdG9wID0gMTsKKysJZGlyc3RhY2tbMF0gPSBzdHJkdXAoIiIpOworKwkKKysJLyogSW5k ZXggYXJyYXkuICovCisrCWluZGV4X3NpemUgPSA2NDsKKysJZGJfaW5kZXggPSBtYWxsb2MoaW5k ZXhfc2l6ZSAqIHNpemVvZiAqZGJfaW5kZXgpOworKwlpbmRleF9uZXh0ID0gMDsKKysKKysJZG8g eworKwkJc3RydWN0IGRpcmVudCAqKmVudHM7CisrCQljaGFyIG5hbWVbUEFUSF9NQVhdLCAqdG9w OworKwkJaW50IGNvdW50OworKworKwkJLyogUG9wIHRoZSB0b3Agc3RhY2sgZW50cnksIGFuZCBp dGVyYXRlIHRocm91Z2ggaXRzIGNvbnRlbnRzLiAqLworKwkJdG9wID0gZGlyc3RhY2tbLS1kaXJz dGFja190b3BdOworKwkJc25wcmludGYobmFtZSwgc2l6ZW9mIG5hbWUsIFpPTkVJTkZPX1BSRUZJ WCAiLyVzIiwgdG9wKTsKKysKKysJCWNvdW50ID0gcGhwX3NjYW5kaXIobmFtZSwgJmVudHMsIGlu ZGV4X2ZpbHRlciwgcGhwX2FscGhhc29ydCk7CisrCisrCQl3aGlsZSAoY291bnQgPiAwKSB7Cisr CQkJc3RydWN0IHN0YXQgc3Q7CisrCQkJY29uc3QgY2hhciAqbGVhZiA9IGVudHNbY291bnQgLSAx XS0+ZF9uYW1lOworKworKwkJCXNucHJpbnRmKG5hbWUsIHNpemVvZiBuYW1lLCBaT05FSU5GT19Q UkVGSVggIi8lcy8lcyIsIAorKwkJCQkgdG9wLCBsZWFmKTsKKysJCQkKKysJCQlpZiAoc3RybGVu KG5hbWUpICYmIHN0YXQobmFtZSwgJnN0KSA9PSAwKSB7CisrCQkJCS8qIE5hbWUsIHJlbGF0aXZl IHRvIHRoZSB6b25laW5mbyBwcmVmaXguICovCisrCQkJCWNvbnN0IGNoYXIgKnJvb3QgPSB0b3A7 CisrCisrCQkJCWlmIChyb290WzBdID09ICcvJykgcm9vdCsrOworKworKwkJCQlzbnByaW50Zihu YW1lLCBzaXplb2YgbmFtZSwgIiVzJXMlcyIsIHJvb3QsIAorKwkJCQkJICpyb290ID8gIi8iOiAi IiwgbGVhZik7CisrCisrCQkJCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKSB7CisrCQkJCQlpZiAo ZGlyc3RhY2tfdG9wID09IGRpcnN0YWNrX3NpemUpIHsKKysJCQkJCQlkaXJzdGFja19zaXplICo9 IDI7CisrCQkJCQkJZGlyc3RhY2sgPSByZWFsbG9jKGRpcnN0YWNrLCAKKysJCQkJCQkJCSAgIGRp cnN0YWNrX3NpemUgKiBzaXplb2YgKmRpcnN0YWNrKTsKKysJCQkJCX0KKysJCQkJCWRpcnN0YWNr W2RpcnN0YWNrX3RvcCsrXSA9IHN0cmR1cChuYW1lKTsKKysJCQkJfQorKwkJCQllbHNlIHsKKysJ CQkJCWlmIChpbmRleF9uZXh0ID09IGluZGV4X3NpemUpIHsKKysJCQkJCQlpbmRleF9zaXplICo9 IDI7CisrCQkJCQkJZGJfaW5kZXggPSByZWFsbG9jKGRiX2luZGV4LAorKwkJCQkJCQkJICAgaW5k ZXhfc2l6ZSAqIHNpemVvZiAqZGJfaW5kZXgpOworKwkJCQkJfQorKworKwkJCQkJZGJfaW5kZXhb aW5kZXhfbmV4dCsrXS5pZCA9IHN0cmR1cChuYW1lKTsKKysJCQkJfQorKwkJCX0KKysKKysJCQlm cmVlKGVudHNbLS1jb3VudF0pOworKwkJfQorKwkJCisrCQlpZiAoY291bnQgIT0gLTEpIGZyZWUo ZW50cyk7CisrCQlmcmVlKHRvcCk7CisrCX0gd2hpbGUgKGRpcnN0YWNrX3RvcCk7CisrCisrICAg ICAgICBxc29ydChkYl9pbmRleCwgaW5kZXhfbmV4dCwgc2l6ZW9mICpkYl9pbmRleCwgc3lzZGJj bXApOworKworKwlpZiAoIWluZGV4X25leHQpIHsKKysJCWRiX2luZGV4W2luZGV4X25leHQrK10u aWQgPSBzdHJkdXAoIlVUQyIpOworKwl9CisrCWRiLT5pbmRleCA9IGRiX2luZGV4OworKwlkYi0+ aW5kZXhfc2l6ZSA9IGluZGV4X25leHQ7CisrCisrCWZyZWUoZGlyc3RhY2spOworK30KKysKKysj ZGVmaW5lIEZBS0VfSEVBREVSICIxMjM0XDA/P1wxPz8iCisrI2RlZmluZSBGQUtFX1VUQ19QT1Mg KDcgLSA0KQorKworKy8qIENyZWF0ZSBhIGZha2UgZGF0YSBzZWdtZW50IGZvciBkYXRhYmFzZSAn c3lzZGInLiAqLworK3N0YXRpYyB2b2lkIGZha2VfZGF0YV9zZWdtZW50KHRpbWVsaWJfdHpkYiAq c3lzZGIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxvY2F0aW9uX2lu Zm8gKippbmZvKQorK3sKKysgICAgICAgIHNpemVfdCBuOworKyAgICAgICAgY2hhciAqZGF0YSwg KnA7CisrICAgICAgICAKKysgICAgICAgIGRhdGEgPSBtYWxsb2MoMyAqIHN5c2RiLT5pbmRleF9z aXplICsgc2l6ZW9mKEZBS0VfSEVBREVSKSAtIDEpOworKworKyAgICAgICAgcCA9IG1lbXBjcHko ZGF0YSwgRkFLRV9IRUFERVIsIHNpemVvZihGQUtFX0hFQURFUikgLSAxKTsKKysKKysgICAgICAg IGZvciAobiA9IDA7IG4gPCBzeXNkYi0+aW5kZXhfc2l6ZTsgbisrKSB7CisrICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBsb2NhdGlvbl9pbmZvICpsaTsKKysgICAgICAgICAgICAgICAgdGlt ZWxpYl90emRiX2luZGV4X2VudHJ5ICplbnQ7CisrCisrICAgICAgICAgICAgICAgIGVudCA9ICh0 aW1lbGliX3R6ZGJfaW5kZXhfZW50cnkgKikmc3lzZGItPmluZGV4W25dOworKworKyAgICAgICAg ICAgICAgICAvKiBMb29rdXAgdGhlIHRpbWV6b25lIG5hbWUgaW4gdGhlIGhhc2ggdGFibGUuICov CisrICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoZW50LT5pZCwgIlVUQyIpID09IDApIHsKKysg ICAgICAgICAgICAgICAgICAgICAgICBlbnQtPnBvcyA9IEZBS0VfVVRDX1BPUzsKKysgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKworKyAgICAg ICAgICAgICAgICBsaSA9IGZpbmRfem9uZV9pbmZvKGluZm8sIGVudC0+aWQpOworKyAgICAgICAg ICAgICAgICBpZiAobGkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiBmb3VuZCwg YXBwZW5kIHRoZSBCQyBieXRlIGFuZCB0aGUKKysgICAgICAgICAgICAgICAgICAgICAgICAgKiBj b3VudHJ5IGNvZGU7IHNldCB0aGUgcG9zaXRpb24gZm9yIHRoaXMKKysgICAgICAgICAgICAgICAg ICAgICAgICAgKiBzZWN0aW9uIG9mIHRpbWV6b25lIGRhdGEuICAqLworKyAgICAgICAgICAgICAg ICAgICAgICAgIGVudC0+cG9zID0gKHAgLSBkYXRhKSAtIDQ7CisrICAgICAgICAgICAgICAgICAg ICAgICAgKnArKyA9ICdcMSc7CisrICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IGxpLT5j b2RlWzBdOworKyAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBsaS0+Y29kZVsxXTsKKysg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICAg ICAgICAgICAgICAvKiBJZiBub3QgZm91bmQsIHRoZSB0aW1lem9uZSBkYXRhIGNhbgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAqIHBvaW50IGF0IHRoZSBoZWFkZXIuICovCisrICAgICAgICAg ICAgICAgICAgICAgICAgZW50LT5wb3MgPSAwOworKyAgICAgICAgICAgICAgICB9CisrICAgICAg ICB9CisrICAgICAgICAKKysgICAgICAgIHN5c2RiLT5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilk YXRhOworK30KKysKKysvKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBhc3NlZC1pbiBzdGF0IHN0cnVj dHVyZSBkZXNjcmliZXMgYQorKyAqIHByb2JhYmx5LXZhbGlkIHRpbWV6b25lIGZpbGUuICovCisr c3RhdGljIGludCBpc192YWxpZF90emZpbGUoY29uc3Qgc3RydWN0IHN0YXQgKnN0LCBpbnQgZmQp CisreworKwlpZiAoZmQpIHsKKysJCWNoYXIgYnVmWzIwXTsKKysJCWlmIChyZWFkKGZkLCBidWYs IDIwKSE9MjApIHsKKysJCQlyZXR1cm4gMDsKKysJCX0KKysJCWxzZWVrKGZkLCBTRUVLX1NFVCwg MCk7CisrCQlpZiAobWVtY21wKGJ1ZiwgIlRaaWYiLCA0KSkgeworKwkJCXJldHVybiAwOworKwkJ fQorKwl9CisrCXJldHVybiBTX0lTUkVHKHN0LT5zdF9tb2RlKSAmJiBzdC0+c3Rfc2l6ZSA+IDIw OworK30KKysKKysvKiBUbyBhbGxvdyB0aW1lem9uZSBuYW1lcyB0byBiZSB1c2VkIGNhc2UtaW5z ZW5zaXRpdmVseSwgZmluZCB0aGUKKysgKiBjYW5vbmljYWwgbmFtZSBmb3IgdGhpcyB0aW1lem9u ZSwgaWYgcG9zc2libGUuICovCisrc3RhdGljIGNvbnN0IGNoYXIgKmNhbm9uaWNhbF90em5hbWUo Y29uc3QgY2hhciAqdGltZXpvbmUpCisreworKyAgICBpZiAodGltZXpvbmVkYl9zeXN0ZW0pIHsK KysgICAgICAgIHRpbWVsaWJfdHpkYl9pbmRleF9lbnRyeSAqZW50LCBsb29rdXA7CisrCisrICAg ICAgICBsb29rdXAuaWQgPSAoY2hhciAqKXRpbWV6b25lOworKworKyAgICAgICAgZW50ID0gYnNl YXJjaCgmbG9va3VwLCB0aW1lem9uZWRiX3N5c3RlbS0+aW5kZXgsCisrICAgICAgICAgICAgICAg ICAgICAgIHRpbWV6b25lZGJfc3lzdGVtLT5pbmRleF9zaXplLCBzaXplb2YgbG9va3VwLAorKyAg ICAgICAgICAgICAgICAgICAgICBzeXNkYmNtcCk7CisrICAgICAgICBpZiAoZW50KSB7CisrICAg ICAgICAgICAgcmV0dXJuIGVudC0+aWQ7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcmV0 dXJuIHRpbWV6b25lOworK30KKysKKysvKiBSZXR1cm4gdGhlIG1tYXAoKWVkIHR6ZmlsZSBpZiBm b3VuZCwgZWxzZSBOVUxMLiAgT24gc3VjY2VzcywgdGhlCisrICogbGVuZ3RoIG9mIHRoZSBtYXBw ZWQgZGF0YSBpcyBwbGFjZWQgaW4gKmxlbmd0aC4gKi8KKytzdGF0aWMgY2hhciAqbWFwX3R6Zmls ZShjb25zdCBjaGFyICp0aW1lem9uZSwgc2l6ZV90ICpsZW5ndGgpCisreworKwljaGFyIGZuYW1l W1BBVEhfTUFYXTsKKysJc3RydWN0IHN0YXQgc3Q7CisrCWNoYXIgKnA7CisrCWludCBmZDsKKysJ CisrCWlmICh0aW1lem9uZVswXSA9PSAnXDAnIHx8IHN0cnN0cih0aW1lem9uZSwgIi4uIikgIT0g TlVMTCkgeworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysKKysJc25wcmludGYoZm5hbWUsIHNpemVv ZiBmbmFtZSwgWk9ORUlORk9fUFJFRklYICIvJXMiLCBjYW5vbmljYWxfdHpuYW1lKHRpbWV6b25l KSk7CisrCisrCWZkID0gb3BlbihmbmFtZSwgT19SRE9OTFkpOworKwlpZiAoZmQgPT0gLTEpIHsK KysJCWlmIChzdHJjbXAodGltZXpvbmUsICJVVEMiKSkgeworKwkJCXJldHVybiBOVUxMOworKwkJ fSBlbHNlIHsKKysJCQkqbGVuZ3RoID0gc2l6ZW9mKGludGVybmFsX3V0Yyk7CisrCQkJcmV0dXJu IGludGVybmFsX3V0YzsKKysJCX0KKysJfSBlbHNlIGlmIChmc3RhdChmZCwgJnN0KSAhPSAwIHx8 ICFpc192YWxpZF90emZpbGUoJnN0LCBmZCkpIHsKKysJCWNsb3NlKGZkKTsKKysJCXJldHVybiBO VUxMOworKwl9CisrCisrCSpsZW5ndGggPSBzdC5zdF9zaXplOworKwlwID0gbW1hcChOVUxMLCBz dC5zdF9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGZkLCAwKTsKKysJY2xvc2UoZmQpOwor KwkKKysJcmV0dXJuIHAgIT0gTUFQX0ZBSUxFRCA/IHAgOiBOVUxMOworK30KKysKKysjZW5kaWYK KysKKytzdGF0aWMgaW50IGlubWVtX3NlZWtfdG9fdHpfcG9zaXRpb24oY29uc3QgdW5zaWduZWQg Y2hhciAqKnR6ZiwgY29uc3QgY2hhciAqdGltZXpvbmUsIGNvbnN0IHRpbWVsaWJfdHpkYiAqdHpk YikKKyB7CisgCWludCBsZWZ0ID0gMCwgcmlnaHQgPSB0emRiLT5pbmRleF9zaXplIC0gMTsKKyAK K0BAIC02MDMsOSArMTEwMCw0OSBAQCBzdGF0aWMgaW50IHNlZWtfdG9fdHpfcG9zaXRpb24oY29u c3QgdW5zCisgCXJldHVybiAwOworIH0KKyAKKytzdGF0aWMgaW50IHNlZWtfdG9fdHpfcG9zaXRp b24oY29uc3QgdW5zaWduZWQgY2hhciAqKnR6ZiwgY29uc3QgY2hhciAqdGltZXpvbmUsCisrCQkJ ICAgICAgIGNoYXIgKiptYXAsIHNpemVfdCAqbWFwbGVuLAorKwkJCSAgICAgICBjb25zdCB0aW1l bGliX3R6ZGIgKnR6ZGIpCisreworKyNpZmRlZiBIQVZFX1NZU1RFTV9UWkRBVEEKKysJaWYgKHR6 ZGIgPT0gdGltZXpvbmVkYl9zeXN0ZW0pIHsKKysJCWNoYXIgKm9yaWc7CisrCisrCQlvcmlnID0g bWFwX3R6ZmlsZSh0aW1lem9uZSwgbWFwbGVuKTsKKysJCWlmIChvcmlnID09IE5VTEwpIHsKKysJ CQlyZXR1cm4gMDsKKysJCX0KKysKKysJCSgqdHpmKSA9ICh1bnNpZ25lZCBjaGFyICopb3JpZzsK KysJCSptYXAgPSBvcmlnOworKyAgICAgICAgcmV0dXJuIDE7CisrCX0KKysJZWxzZQorKyNlbmRp ZgorKwl7CisrCQlyZXR1cm4gaW5tZW1fc2Vla190b190el9wb3NpdGlvbih0emYsIHRpbWV6b25l LCB0emRiKTsKKysJfQorK30KKysKKyBjb25zdCB0aW1lbGliX3R6ZGIgKnRpbWVsaWJfYnVpbHRp bl9kYih2b2lkKQorIHsKKysjaWZkZWYgSEFWRV9TWVNURU1fVFpEQVRBCisrCWlmICh0aW1lem9u ZWRiX3N5c3RlbSA9PSBOVUxMKSB7CisrCQl0aW1lbGliX3R6ZGIgKnRtcCA9IG1hbGxvYyhzaXpl b2YgKnRtcCk7CisrCisrCQl0bXAtPnZlcnNpb24gPSAiMCI7CisrCQl0bXAtPmRhdGEgPSBOVUxM OworKwkJY3JlYXRlX3pvbmVfaW5kZXgodG1wKTsKKysJCXJldHJpZXZlX3pvbmVfdmVyc2lvbih0 bXApOworKwkJc3lzdGVtX2xvY2F0aW9uX3RhYmxlID0gY3JlYXRlX2xvY2F0aW9uX3RhYmxlKCk7 CisrCQlmYWtlX2RhdGFfc2VnbWVudCh0bXAsIHN5c3RlbV9sb2NhdGlvbl90YWJsZSk7CisrCQl0 aW1lem9uZWRiX3N5c3RlbSA9IHRtcDsKKysJfQorKworKwlyZXR1cm4gdGltZXpvbmVkYl9zeXN0 ZW07CisrI2Vsc2UKKyAJcmV0dXJuICZ0aW1lem9uZWRiX2J1aWx0aW47CisrI2VuZGlmCisgfQor IAorIGNvbnN0IHRpbWVsaWJfdHpkYl9pbmRleF9lbnRyeSAqdGltZWxpYl90aW1lem9uZV9pZGVu dGlmaWVyc19saXN0KGNvbnN0IHRpbWVsaWJfdHpkYiAqdHpkYiwgaW50ICpjb3VudCkKK0BAIC02 MTcsNyArMTE1NCwzMiBAQCBjb25zdCB0aW1lbGliX3R6ZGJfaW5kZXhfZW50cnkgKnRpbWVsaWJf CisgaW50IHRpbWVsaWJfdGltZXpvbmVfaWRfaXNfdmFsaWQoY29uc3QgY2hhciAqdGltZXpvbmUs IGNvbnN0IHRpbWVsaWJfdHpkYiAqdHpkYikKKyB7CisgCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnR6 ZjsKKy0JcmV0dXJuIChzZWVrX3RvX3R6X3Bvc2l0aW9uKCZ0emYsIHRpbWV6b25lLCB0emRiKSk7 CisrCisrI2lmZGVmIEhBVkVfU1lTVEVNX1RaREFUQQorKwlpZiAodHpkYiA9PSB0aW1lem9uZWRi X3N5c3RlbSkgeworKwkJY2hhciBmbmFtZVtQQVRIX01BWF07CisrCQlzdHJ1Y3Qgc3RhdCBzdDsK KysKKysJCWlmICh0aW1lem9uZVswXSA9PSAnXDAnIHx8IHN0cnN0cih0aW1lem9uZSwgIi4uIikg IT0gTlVMTCkgeworKwkJCXJldHVybiAwOworKwkJfQorKwkJaWYgKCFzdHJjbXAodGltZXpvbmUs ICJVVEMiKSkgeworKwkJCXJldHVybiAxOworKwkJfQorKwkJaWYgKHN5c3RlbV9sb2NhdGlvbl90 YWJsZSkgeworKwkJCWlmIChmaW5kX3pvbmVfaW5mbyhzeXN0ZW1fbG9jYXRpb25fdGFibGUsIHRp bWV6b25lKSAhPSBOVUxMKSB7CisrCQkJCS8qIGZvdW5kIGluIGNhY2hlICovCisrCQkJCXJldHVy biAxOworKwkJCX0KKysJCX0KKysKKysJCXNucHJpbnRmKGZuYW1lLCBzaXplb2YgZm5hbWUsIFpP TkVJTkZPX1BSRUZJWCAiLyVzIiwgY2Fub25pY2FsX3R6bmFtZSh0aW1lem9uZSkpOworKworKwkJ cmV0dXJuIHN0YXQoZm5hbWUsICZzdCkgPT0gMCAmJiBpc192YWxpZF90emZpbGUoJnN0LCAwKTsK KysJfQorKyNlbmRpZgorKworKwlyZXR1cm4gKGlubWVtX3NlZWtfdG9fdHpfcG9zaXRpb24oJnR6 ZiwgdGltZXpvbmUsIHR6ZGIpKTsKKyB9CisgCisgc3RhdGljIGludCBza2lwXzY0Yml0X3ByZWFt YmxlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKip0emYsIHRpbWVsaWJfdHppbmZvICp0eikKK0BAIC02 NjIsNiArMTIyNCw4IEBAIHN0YXRpYyB0aW1lbGliX3R6aW5mbyogdGltZWxpYl90emluZm9fY3QK KyB0aW1lbGliX3R6aW5mbyAqdGltZWxpYl9wYXJzZV90emZpbGUoY29uc3QgY2hhciAqdGltZXpv bmUsIGNvbnN0IHRpbWVsaWJfdHpkYiAqdHpkYiwgaW50ICplcnJvcl9jb2RlKQorIHsKKyAJY29u c3QgdW5zaWduZWQgY2hhciAqdHpmOworKwljaGFyICptZW1tYXAgPSBOVUxMOworKwlzaXplX3Qg bWFwbGVuOworIAl0aW1lbGliX3R6aW5mbyAqdG1wOworIAlpbnQgdmVyc2lvbjsKKyAJaW50IHRy YW5zaXRpb25zX3Jlc3VsdCwgdHlwZXNfcmVzdWx0OworQEAgLTY2OSw3ICsxMjMzLDcgQEAgdGlt ZWxpYl90emluZm8gKnRpbWVsaWJfcGFyc2VfdHpmaWxlKGNvbgorIAorIAkqZXJyb3JfY29kZSA9 IFRJTUVMSUJfRVJST1JfTk9fRVJST1I7CisgCistCWlmIChzZWVrX3RvX3R6X3Bvc2l0aW9uKCZ0 emYsIHRpbWV6b25lLCB0emRiKSkgeworKwlpZiAoc2Vla190b190el9wb3NpdGlvbigmdHpmLCB0 aW1lem9uZSwgJm1lbW1hcCwgJm1hcGxlbiwgdHpkYikpIHsKKyAJCXRtcCA9IHRpbWVsaWJfdHpp bmZvX2N0b3IodGltZXpvbmUpOworIAorIAkJdmVyc2lvbiA9IHJlYWRfcHJlYW1ibGUoJnR6Ziwg dG1wLCAmdHlwZSk7CitAQCAtNzEyLDExICsxMjc2LDM4IEBAIHRpbWVsaWJfdHppbmZvICp0aW1l bGliX3BhcnNlX3R6ZmlsZShjb24KKyAJCQlyZXR1cm4gTlVMTDsKKyAJCX0KKyAKKysjaWZkZWYg SEFWRV9TWVNURU1fVFpEQVRBCisrCQlpZiAobWVtbWFwKSB7CisrCQkJY29uc3Qgc3RydWN0IGxv Y2F0aW9uX2luZm8gKmxpOworKworKwkJCS8qIFRaaWYtc3R5bGUgLSBncm9rIHRoZSBsb2NhdGlv biBpbmZvIGZyb20gdGhlIHN5c3RlbSBkYXRhYmFzZSwKKysJCQkgKiBpZiBwb3NzaWJsZS4gKi8K KysKKysJCQlpZiAoKGxpID0gZmluZF96b25lX2luZm8oc3lzdGVtX2xvY2F0aW9uX3RhYmxlLCB0 aW1lem9uZSkpICE9IE5VTEwpIHsKKysJCQkJdG1wLT5sb2NhdGlvbi5jb21tZW50cyA9IHRpbWVs aWJfc3RyZHVwKGxpLT5jb21tZW50KTsKKysJCQkJc3RybmNweSh0bXAtPmxvY2F0aW9uLmNvdW50 cnlfY29kZSwgbGktPmNvZGUsIDIpOworKwkJCQl0bXAtPmxvY2F0aW9uLmxvbmdpdHVkZSA9IGxp LT5sb25naXR1ZGU7CisrCQkJCXRtcC0+bG9jYXRpb24ubGF0aXR1ZGUgPSBsaS0+bGF0aXR1ZGU7 CisrCQkJCXRtcC0+YmMgPSAxOworKwkJCX0KKysJCQllbHNlIHsKKysJCQkJc2V0X2RlZmF1bHRf bG9jYXRpb25fYW5kX2NvbW1lbnRzKCZ0emYsIHRtcCk7CisrCQkJfQorKworKwkJCS8qIE5vdyBk b25lIHdpdGggdGhlIG1tYXAgc2VnbWVudCAtIGRpc2NhcmQgaXQuICovCisrCQkJaWYgKG1lbW1h cCAhPSBpbnRlcm5hbF91dGMpIHsKKysJCQkJbXVubWFwKG1lbW1hcCwgbWFwbGVuKTsKKysJCQl9 CisrCQl9IGVsc2UgeworKyNlbmRpZgorIAkJaWYgKHR5cGUgPT0gVElNRUxJQl9UWklORk9fUEhQ KSB7CisgCQkJcmVhZF9sb2NhdGlvbigmdHpmLCB0bXApOworIAkJfSBlbHNlIHsKKyAJCQlzZXRf ZGVmYXVsdF9sb2NhdGlvbl9hbmRfY29tbWVudHMoJnR6ZiwgdG1wKTsKKyAJCX0KKysjaWZkZWYg SEFWRV9TWVNURU1fVFpEQVRBCisrCQl9CisrI2VuZGlmCisgCX0gZWxzZSB7CisgCQkqZXJyb3Jf Y29kZSA9IFRJTUVMSUJfRVJST1JfTk9fU1VDSF9USU1FWk9ORTsKKyAJCXRtcCA9IE5VTEw7Citk aWZmIC11cCAuL2V4dC9kYXRlL3BocF9kYXRlLmMuc3lzdHpkYXRhIC4vZXh0L2RhdGUvcGhwX2Rh dGUuYworLS0tIC4vZXh0L2RhdGUvcGhwX2RhdGUuYy5zeXN0emRhdGEJMjAyNi0wNS0xOSAxNzow MjozOC4wMDAwMDAwMDAgKzAyMDAKKysrKyAuL2V4dC9kYXRlL3BocF9kYXRlLmMJMjAyNi0wNS0y MCAwNzozMzoxMC4zMDE0NjczMTEgKzAyMDAKK0BAIC00ODMsNyArNDgzLDExIEBAIFBIUF9NSU5G T19GVU5DVElPTihkYXRlKQorIAlwaHBfaW5mb19wcmludF90YWJsZV9yb3coMiwgImRhdGUvdGlt ZSBzdXBwb3J0IiwgImVuYWJsZWQiKTsKKyAJcGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJ0 aW1lbGliIHZlcnNpb24iLCBUSU1FTElCX0FTQ0lJX1ZFUlNJT04pOworIAlwaHBfaW5mb19wcmlu dF90YWJsZV9yb3coMiwgIlwiT2xzb25cIiBUaW1lem9uZSBEYXRhYmFzZSBWZXJzaW9uIiwgdHpk Yi0+dmVyc2lvbik7CisrI2lmZGVmIEhBVkVfU1lTVEVNX1RaREFUQQorKwlwaHBfaW5mb19wcmlu dF90YWJsZV9yb3coMiwgIlRpbWV6b25lIERhdGFiYXNlIiwgInN5c3RlbSIpOworKyNlbHNlCisg CXBocF9pbmZvX3ByaW50X3RhYmxlX3JvdygyLCAiVGltZXpvbmUgRGF0YWJhc2UiLCBwaHBfZGF0 ZV9nbG9iYWxfdGltZXpvbmVfZGJfZW5hYmxlZCA/ICJleHRlcm5hbCIgOiAiaW50ZXJuYWwiKTsK KysjZW5kaWYKKyAJcGhwX2luZm9fcHJpbnRfdGFibGVfcm93KDIsICJEZWZhdWx0IHRpbWV6b25l IiwgZ3Vlc3NfdGltZXpvbmUodHpkYikpOworIAlwaHBfaW5mb19wcmludF90YWJsZV9lbmQoKTsK KyAKCmRpZmYgLS1naXQgYS9waHAuc3BlYyBiL3BocC5zcGVjCmluZGV4IGFkN2I5MDUuLjc4NWY0 MTMgMTAwNjQ0Ci0tLSBhL3BocC5zcGVjCisrKyBiL3BocC5zcGVjCkBAIC02MCw3ICs2MCw3IEBA CiAlYmNvbmRfd2l0aCAgICAgIG1vZHBocAogJWJjb25kX3dpdGhvdXQgICBsbWRiCiAKLSVnbG9i YWwgdXB2ZXIgICAgICAgIDguNC4yMQorJWdsb2JhbCB1cHZlciAgICAgICAgOC40LjIyCiAKIFN1 bW1hcnk6IFBIUCBzY3JpcHRpbmcgbGFuZ3VhZ2UgZm9yIGNyZWF0aW5nIGR5bmFtaWMgd2ViIHNp dGVzCiBOYW1lOiBwaHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBQYXRjaDg6IHBocC04LjQuMC1saWJk Yi5wYXRjaAogIyBVc2Ugc3lzdGVtIG5pa2ljL3BocC1wYXJzZXIKIFBhdGNoNDE6IHBocC04LjMu My1wYXJzZXIucGF0Y2gKICMgdXNlIHN5c3RlbSB0emRhdGEKLVBhdGNoNDI6IHBocC04LjQuMC1z eXN0emRhdGEtdjI0LnBhdGNoCitQYXRjaDQyOiBwaHAtOC40LjIyLXN5c3R6ZGF0YS12MjQucGF0 Y2gKICMgU2VlIGh0dHA6Ly9idWdzLnBocC5uZXQvNTM0MzYKICMgKyBkaXNwbGF5IFBIUCB2ZXJz aW9uIGJhY2twb3J0ZWQgZnJvbSA4LjQKIFBhdGNoNDM6IHBocC04LjQuMC1waHBpemUucGF0Y2gK QEAgLTE1MDEsNiArMTUwMSw5IEBAIHN5c3RlbWN0bCB0cnktcmVzdGFydCBwaHAtZnBtLnNlcnZp Y2UgPi9kZXYvbnVsbCAyPiYxIHx8IDoKIAogCiAlY2hhbmdlbG9nCisqIFdlZCBKdW4gIDMgMjAy NiBSZW1pIENvbGxldCA8cmVtaUByZW1pcmVwby5uZXQ+IC0gOC40LjIyLTEKKy0gVXBkYXRlIHRv IDguNC4yMiAtIGh0dHA6Ly93d3cucGhwLm5ldC9yZWxlYXNlcy84XzRfMjIucGhwCisKICogV2Vk IE1heSAgNiAyMDI2IFJlbWkgQ29sbGV0IDxyZW1pQHJlbWlyZXBvLm5ldD4gLSA4LjQuMjEtMQog LSBVcGRhdGUgdG8gOC40LjIxIC0gaHR0cDovL3d3dy5waHAubmV0L3JlbGVhc2VzLzhfNF8yMS5w aHAKIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDU2ZmFhMzkuLjk0MTgx NDIgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKLVNI QTUxMiAocGhwLTguNC4yMS50YXIueHopID0gMTI2OTk1MjE2N2FmYjFlZmVhOGE4ZDYyZmMzYjU1 MzIwMThlOTE1NTZjZjlmOTcxZTE3NTJiNDM3ZmMyN2UzNDU3YjMxM2UwMjdmMTU2OTgwNjI5MTEz MWE1ZmYwNjVkODdhNzYwNGNmMDQ2Mzc4NzE4NDljNzMxZGVjMTZlMzYKLVNIQTUxMiAocGhwLTgu NC4yMS50YXIueHouYXNjKSA9IDZlMTk0M2ZlNzc1NGRkMTk4YWQyMDgxZTU5MGRjMGFkNTA0NTVh Njc3ZDA5NTc3OWRhNGQ3ZjYxYTg5ZDZlZGM0MGRiYzUyZmQzZDgxM2E0YmM2ZmNhZjk4ZTA1ZmRk ZTJjNGFlOTY0ZDA0YTA4MTNiNWNmYTBlNmU5OWYyMmE3CitTSEE1MTIgKHBocC04LjQuMjIudGFy Lnh6KSA9IDQ0YWRiOGRjYzQyMjgxM2U5MjUzMGE5MzZlNDMyZDcyZTRhOTMyOGEyM2I0MGY0ZDJl NjhiNDcxMzg2YzYwNDg4ODZiNDgxMGFlODEzZjEyNzdlNDc4MjJjMTg2NDVkNzgyOTljMGUzMGZh YzQxYWRiZjY5ODYyMjIyMzkzZmY0CitTSEE1MTIgKHBocC04LjQuMjIudGFyLnh6LmFzYykgPSAz YzYzZjFlNjVkNmRjZWNhZmQ1MWUyOWRlMjZkNTdmMTE1YWU1N2MwMDQyYmNmOTBmMWE3MmQ1NDMz YjVlODU3N2RlMGI4YjI4Y2U3NzY4MWE1YTNhN2FlYTllYjE3ZWJiOWUxYTA0ZDg4ZjhmMjIxYzBl YmRiNmU4YzBkMWQ3Ygo=