From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 10085 invoked from network); 28 Apr 2021 21:58:58 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 28 Apr 2021 21:58:58 -0000 Content-Type: multipart/mixed; boundary="===============1867817757648712343==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_recutils=3A_patch_to_fix_recins_not_working_outside_of_=24TMPDIR?= To: ml@inbox.vuxu.org From: loreb Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Wed, 28 Apr 2021 23:58:58 +0200 List-Id: Message-ID: <20210428215858.9qsYSTEPo3YysZTo76b5Y9Ccoln2s4F1Z3lrGkcYloc@z> GitHub notification mails are now in MIME to allow UTF8. --===============1867817757648712343== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgbG9yZWIgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL2xvcmVi L3ZvaWQtcGFja2FnZXMgbWFzdGVyCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQt cGFja2FnZXMvcHVsbC8zMDU2NwoKcmVjdXRpbHM6IHBhdGNoIHRvIGZpeCByZWNpbnMgbm90IHdv cmtpbmcgb3V0c2lkZSBvZiAkVE1QRElSCkRldGFpbHMgYXQgaHR0cHM6Ly9naXQuc2F2YW5uYWgu Z251Lm9yZy9jZ2l0L3JlY3V0aWxzLmdpdC9jb21taXQvdXRpbHMvcmVjdXRsLmM/aWQ9ODZmNjYy YTgyMDI0MDgxMzRhMjM1NTcyZWM2MDE0MWQzMDgyZjk3NQ0KV2lsbCBubyBsb25nZXIgYmUgbmVj ZXNzYXJ5IG9uY2UgMS45IGlzIHJlbGVhc2VkOyBmaXhlcyBidWcgIzMwNTQ2DQpUaGFua3MgdG8g ZXJpY29uciBmb3IgYWxsIHRoZSBhc3Npc3RhbmNlLg0KDQpub3RlIHRvIHNlbGY6IGJvb3RzdHJh cC5jb25mIGlzIG5vdCBzaGlwcGVkDQphZGQgKnRlbXBvcmFyeSogZGVwZW5kZW5jeSBvbiBhdXRv bWFrZQ0KYWRkaW5nIGdudWxpYiBwaWVjZXMgaXMgYSByZWFsIGNob3JlLi4uDQoNCkFuZCB0aGVu IHRoZSBHTlUgdG9vbHMgKHJpZ2h0ZnVsbHkpIGRlY2lkZWQgdGhhdCB0aGUgbWFucGFnZXMgd2Vy ZSBvdXQNCm9mIGRhdGUsIGJlY2F1c2UgYSBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLCBhbmQgaW5z aXN0ZWQgb24gcnVubmluZw0KaGVscDJtYW4gLSBJIHNpbXBseSB0b2xkIHByZV9jb25maWd1cmUg dG8gdXBkYXRlIHRoZSB0aW1lc3RhbXBzIG9mIHRoZQ0KbWFucGFnZXMuDQoNCjwhLS0gTWFyayBp dGVtcyB3aXRoIFt4XSB3aGVyZSBhcHBsaWNhYmxlIC0tPg0KDQojIyMjIEdlbmVyYWwNCi0gWyBd IFRoaXMgaXMgYSBuZXcgcGFja2FnZSBhbmQgaXQgY29uZm9ybXMgdG8gdGhlIFtxdWFsaXR5IHJl cXVpcmVtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9i bG9iL21hc3Rlci9NYW51YWwubWQjcXVhbGl0eS1yZXF1aXJlbWVudHMpDQoNCiMjIyMgSGF2ZSB0 aGUgcmVzdWx0cyBvZiB0aGUgcHJvcG9zZWQgY2hhbmdlcyBiZWVuIHRlc3RlZD8NCi0gWyBdIEkg dXNlIHRoZSBwYWNrYWdlcyBhZmZlY3RlZCBieSB0aGUgcHJvcG9zZWQgY2hhbmdlcyBvbiBhIHJl Z3VsYXIgYmFzaXMgYW5kIGNvbmZpcm0gdGhpcyBQUiB3b3JrcyBmb3IgbWUNCi0gWyBdIEkgZ2Vu ZXJhbGx5IGRvbid0IHVzZSB0aGUgYWZmZWN0ZWQgcGFja2FnZXMgYnV0IGJyaWVmbHkgdGVzdGVk IHRoaXMgUFINCg0KPCEtLQ0KSWYgR2l0SHViIENJIGNhbm5vdCBiZSB1c2VkIHRvIHZhbGlkYXRl IHRoZSBidWlsZCByZXN1bHQgKGZvciBleGFtcGxlLCBpZiB0aGUNCmJ1aWxkIGlzIGxpa2VseSB0 byB0YWtlIHNldmVyYWwgaG91cnMpLCBtYWtlIHN1cmUgdG8NCltza2lwIENJXShodHRwczovL2dp dGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElO Ry5tZCNjb250aW51b3VzLWludGVncmF0aW9uKS4NCldoZW4gc2tpcHBpbmcgQ0ksIHVuY29tbWVu dCBhbmQgZmlsbCBvdXQgdGhlIGZvbGxvd2luZyBzZWN0aW9uLg0KTm90ZTogZm9yIGJ1aWxkcyB0 aGF0IGFyZSBsaWtlbHkgdG8gY29tcGxldGUgaW4gbGVzcyB0aGFuIDIgaG91cnMsIGl0IGlzIG5v dA0KYWNjZXB0YWJsZSB0byBza2lwIENJLg0KLS0+DQo8IS0tIA0KIyMjIyBEb2VzIGl0IGJ1aWxk IGFuZCBydW4gc3VjY2Vzc2Z1bGx5PyANCihQbGVhc2UgY2hvb3NlIGF0IGxlYXN0IG9uZSBuYXRp dmUgYnVpbGQgYW5kLCBpZiBzdXBwb3J0ZWQsIGF0IGxlYXN0IG9uZSBjcm9zcyBidWlsZC4gTW9y ZSBhcmUgYmV0dGVyLikNCi0gWyBdIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciBteSBuYXRp dmUgYXJjaGl0ZWN0dXJlLCAoQVJDSC1MSUJDKQ0KLSBbIF0gSSBidWlsdCB0aGlzIFBSIGxvY2Fs bHkgZm9yIHRoZXNlIGFyY2hpdGVjdHVyZXMgKGlmIHN1cHBvcnRlZC4gbWFyayBjcm9zc2J1aWxk cyk6DQogIC0gWyBdIGFhcmNoNjQtbXVzbA0KICAtIFsgXSBhcm12N2wNCiAgLSBbIF0gYXJtdjZs LW11c2wNCi0tPg0KCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1s aW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzA1NjcucGF0Y2ggaXMgYXR0YWNoZWQ= --===============1867817757648712343== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-master-30567.patch" RnJvbSBhOWQ1OWQ4ZDVjMTYwMDFkYTI5YThiMDZiNDU2NmQxZDRhMzFhNGI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMb3JlbnpvIEJlcmV0dGEgPHZjLm5ldC5sb3JlYkBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjggQXByIDIwMjEgMTQ6MjA6NTMgKzAyMDAKU3ViamVjdDogW1BBVENI XSByZWN1dGlsczogcGF0Y2ggdG8gZml4IHJlY2lucyBub3Qgd29ya2luZyBvdXRzaWRlIG9mICRU TVBESVIKCkRldGFpbHMgYXQgaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L3JlY3V0 aWxzLmdpdC9jb21taXQvdXRpbHMvcmVjdXRsLmM/aWQ9ODZmNjYyYTgyMDI0MDgxMzRhMjM1NTcy ZWM2MDE0MWQzMDgyZjk3NQpXaWxsIG5vIGxvbmdlciBiZSBuZWNlc3Nhcnkgb25jZSAxLjkgaXMg cmVsZWFzZWQ7IGZpeGVzIGJ1ZyAjMzA1NDYKVGhhbmtzIHRvIGVyaWNvbnIgZm9yIGFsbCB0aGUg YXNzaXN0YW5jZS4KCm5vdGUgdG8gc2VsZjogYm9vdHN0cmFwLmNvbmYgaXMgbm90IHNoaXBwZWQK YWRkICp0ZW1wb3JhcnkqIGRlcGVuZGVuY3kgb24gYXV0b21ha2UKYWRkaW5nIGdudWxpYiBwaWVj ZXMgaXMgYSByZWFsIGNob3JlLi4uCgpBbmQgdGhlbiB0aGUgR05VIHRvb2xzIChyaWdodGZ1bGx5 KSBkZWNpZGVkIHRoYXQgdGhlIG1hbnBhZ2VzIHdlcmUgb3V0Cm9mIGRhdGUsIGJlY2F1c2UgYSBm aWxlIGhhcyBiZWVuIG1vZGlmaWVkLCBhbmQgaW5zaXN0ZWQgb24gcnVubmluZwpoZWxwMm1hbiAt IEkgc2ltcGx5IHRvbGQgcHJlX2NvbmZpZ3VyZSB0byB1cGRhdGUgdGhlIHRpbWVzdGFtcHMgb2Yg dGhlCm1hbnBhZ2VzLgotLS0KIHNyY3BrZ3MvcmVjdXRpbHMvcGF0Y2hlcy9jb3B5ZmlsZS5wYXRj aCB8IDE5MjkgKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvcmVjdXRpbHMvcGF0Y2hl cy9leGRldi5wYXRjaCAgICB8ICAgNTMgKwogc3JjcGtncy9yZWN1dGlscy90ZW1wbGF0ZSAgICAg ICAgICAgICAgIHwgICAxMiArLQogMyBmaWxlcyBjaGFuZ2VkLCAxOTkyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9yZWN1dGlscy9wYXRj aGVzL2NvcHlmaWxlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9yZWN1dGlscy9w YXRjaGVzL2V4ZGV2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZWN1dGlscy9wYXRjaGVz L2NvcHlmaWxlLnBhdGNoIGIvc3JjcGtncy9yZWN1dGlscy9wYXRjaGVzL2NvcHlmaWxlLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzJmMjg5ZjZmNDFkCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9yZWN1dGlscy9wYXRjaGVzL2NvcHlmaWxlLnBhdGNo CkBAIC0wLDAgKzEsMTkyOSBAQAorZGlmZiAtLWdpdCBhL2xpYi9jb3B5LWZpbGUuYyBiL2xpYi9j b3B5LWZpbGUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjE1ZTE3YWUK Ky0tLSAvZGV2L251bGwKKysrKyBiL2xpYi9jb3B5LWZpbGUuYworQEAgLTAsMCArMSwyMjEgQEAK KysvKiBDb3B5aW5nIG9mIGZpbGVzLgorKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDAzLCAyMDA2 LTIwMDcsIDIwMDktMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBXcml0 dGVuIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMS4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKworKyNpbmNsdWRl IDxjb25maWcuaD4KKysKKysvKiBTcGVjaWZpY2F0aW9uLiAgKi8KKysjaW5jbHVkZSAiY29weS1m aWxlLmgiCisrCisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisrI2lu Y2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3lzL3N0 YXQuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrCisrI2luY2x1ZGUgImVycm9yLmgiCisrI2lu Y2x1ZGUgImlnbm9yZS12YWx1ZS5oIgorKyNpbmNsdWRlICJzYWZlLXJlYWQuaCIKKysjaW5jbHVk ZSAiZnVsbC13cml0ZS5oIgorKyNpbmNsdWRlICJzdGF0LXRpbWUuaCIKKysjaW5jbHVkZSAidXRp bWVucy5oIgorKyNpbmNsdWRlICJhY2wuaCIKKysjaW5jbHVkZSAiYmluYXJ5LWlvLmgiCisrI2lu Y2x1ZGUgInF1b3RlLmgiCisrI2luY2x1ZGUgImdldHRleHQuaCIKKysKKysjZGVmaW5lIF8oc3Ry KSBnZXR0ZXh0IChzdHIpCisrCisrZW51bSB7IElPX1NJWkUgPSAzMiAqIDEwMjQgfTsKKysKKytp bnQKKytxY29weV9maWxlX3ByZXNlcnZpbmcgKGNvbnN0IGNoYXIgKnNyY19maWxlbmFtZSwgY29u c3QgY2hhciAqZGVzdF9maWxlbmFtZSkKKyt7CisrICBpbnQgZXJyID0gMDsKKysgIGludCBzcmNf ZmQ7CisrICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOworKyAgaW50IG1vZGU7CisrICBpbnQgZGVzdF9m ZDsKKysKKysgIHNyY19mZCA9IG9wZW4gKHNyY19maWxlbmFtZSwgT19SRE9OTFkgfCBPX0JJTkFS WSB8IE9fQ0xPRVhFQyk7CisrICBpZiAoc3JjX2ZkIDwgMCkKKysgICAgcmV0dXJuIEdMX0NPUFlf RVJSX09QRU5fUkVBRDsKKysgIGlmIChmc3RhdCAoc3JjX2ZkLCAmc3RhdGJ1ZikgPCAwKQorKyAg ICB7CisrICAgICAgZXJyID0gR0xfQ09QWV9FUlJfT1BFTl9SRUFEOworKyAgICAgIGdvdG8gZXJy b3Jfc3JjOworKyAgICB9CisrCisrICBtb2RlID0gc3RhdGJ1Zi5zdF9tb2RlICYgMDc3Nzc7Cisr ICBvZmZfdCBpbmJ5dGVzID0gU19JU1JFRyAoc3RhdGJ1Zi5zdF9tb2RlKSA/IHN0YXRidWYuc3Rf c2l6ZSA6IC0xOworKyAgYm9vbCBlbXB0eV9yZWd1bGFyX2ZpbGUgPSBpbmJ5dGVzID09IDA7Cisr CisrICBkZXN0X2ZkID0gb3BlbiAoZGVzdF9maWxlbmFtZSwKKysgICAgICAgICAgICAgICAgICBP X1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19CSU5BUlkgfCBPX0NMT0VYRUMsCisrICAg ICAgICAgICAgICAgICAgMDYwMCk7CisrICBpZiAoZGVzdF9mZCA8IDApCisrICAgIHsKKysgICAg ICBlcnIgPSBHTF9DT1BZX0VSUl9PUEVOX0JBQ0tVUF9XUklURTsKKysgICAgICBnb3RvIGVycm9y X3NyYzsKKysgICAgfQorKworKyAgLyogQ29weSB0aGUgZmlsZSBjb250ZW50cy4gIEZJWE1FOiBE byBub3QgY29weSBob2xlcy4gICovCisrICB3aGlsZSAoMCA8IGluYnl0ZXMpCisrICAgIHsKKysg ICAgICBzaXplX3QgY29weV9tYXggPSAtMTsKKysgICAgICBjb3B5X21heCAtPSBjb3B5X21heCAl IElPX1NJWkU7CisrICAgICAgc2l6ZV90IGxlbiA9IGluYnl0ZXMgPCBjb3B5X21heCA/IGluYnl0 ZXMgOiBjb3B5X21heDsKKysgICAgICBzc2l6ZV90IGNvcGllZCA9IGNvcHlfZmlsZV9yYW5nZSAo c3JjX2ZkLCBOVUxMLCBkZXN0X2ZkLCBOVUxMLCBsZW4sIDApOworKyAgICAgIGlmIChjb3BpZWQg PD0gMCkKKysgICAgICAgIGJyZWFrOworKyAgICAgIGluYnl0ZXMgLT0gY29waWVkOworKyAgICB9 CisrCisrICAvKiBGaW5pc2ggdXAgd2l0aCByZWFkL3dyaXRlLCBpbiBjYXNlIHRoZSBmaWxlIHdh cyBub3QgYSByZWd1bGFyCisrICAgICBmaWxlLCBvciB0aGUgZmlsZSBzaHJhbmsgb3IgaGFkIEkv TyBlcnJvcnMgKGluIHdoaWNoIGNhc2UgZmluZAorKyAgICAgd2hldGhlciBpdCB3YXMgYSByZWFk IG9yIHdyaXRlIGVycm9yKS4gIFJlYWQgZW1wdHkgcmVndWxhciBmaWxlcworKyAgICAgc2luY2Ug dGhleSBtaWdodCBiZSBpbiAvcHJvYyB3aXRoIHRoZWlyIHRydWUgc2l6ZXMgdW5rbm93biB1bnRp bAorKyAgICAgdGhleSBhcmUgcmVhZC4gICovCisrICBpZiAoaW5ieXRlcyAhPSAwIHx8IGVtcHR5 X3JlZ3VsYXJfZmlsZSkKKysgICAgeworKyAgICAgIGNoYXIgc21hbGxidWZbMTAyNF07CisrICAg ICAgaW50IGJ1ZnNpemUgPSBJT19TSVpFOworKyAgICAgIGNoYXIgKmJ1ZiA9IG1hbGxvYyAoYnVm c2l6ZSk7CisrICAgICAgaWYgKCFidWYpCisrICAgICAgICBidWYgPSBzbWFsbGJ1ZiwgYnVmc2l6 ZSA9IHNpemVvZiBzbWFsbGJ1ZjsKKysKKysgICAgICB3aGlsZSAodHJ1ZSkKKysgICAgICAgIHsK KysgICAgICAgICAgc2l6ZV90IG5fcmVhZCA9IHNhZmVfcmVhZCAoc3JjX2ZkLCBidWYsIGJ1ZnNp emUpOworKyAgICAgICAgICBpZiAobl9yZWFkID09IDApCisrICAgICAgICAgICAgYnJlYWs7Cisr ICAgICAgICAgIGlmIChuX3JlYWQgPT0gU0FGRV9SRUFEX0VSUk9SKQorKyAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgIGVyciA9IEdMX0NPUFlfRVJSX1JFQUQ7CisrICAgICAgICAgICAgICBi cmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIGlmIChmdWxsX3dyaXRlIChkZXN0X2Zk LCBidWYsIG5fcmVhZCkgPCBuX3JlYWQpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ZXJyID0gR0xfQ09QWV9FUlJfV1JJVEU7CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAg ICAgICB9CisrICAgICAgICB9CisrCisrICAgICAgaWYgKGJ1ZiAhPSBzbWFsbGJ1ZikKKysgICAg ICAgIGZyZWUgKGJ1Zik7CisrICAgICAgaWYgKGVycikKKysgICAgICAgIGdvdG8gZXJyb3Jfc3Jj X2Rlc3Q7CisrICAgIH0KKysKKysjaWYgIVVTRV9BQ0wKKysgIGlmIChjbG9zZSAoZGVzdF9mZCkg PCAwKQorKyAgICB7CisrICAgICAgZXJyID0gR0xfQ09QWV9FUlJfV1JJVEU7CisrICAgICAgZ290 byBlcnJvcl9zcmM7CisrICAgIH0KKysgIGlmIChjbG9zZSAoc3JjX2ZkKSA8IDApCisrICAgIHJl dHVybiBHTF9DT1BZX0VSUl9BRlRFUl9SRUFEOworKyNlbmRpZgorKworKyAgLyogUHJlc2VydmUg dGhlIGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzLiAgKi8KKysgIHsKKysgICAgc3RydWN0 IHRpbWVzcGVjIHRzWzJdOworKworKyAgICB0c1swXSA9IGdldF9zdGF0X2F0aW1lICgmc3RhdGJ1 Zik7CisrICAgIHRzWzFdID0gZ2V0X3N0YXRfbXRpbWUgKCZzdGF0YnVmKTsKKysgICAgdXRpbWVu cyAoZGVzdF9maWxlbmFtZSwgdHMpOworKyAgfQorKworKyNpZiBIQVZFX0NIT1dOCisrICAvKiBQ cmVzZXJ2ZSB0aGUgb3duZXIgYW5kIGdyb3VwLiAgKi8KKysgIGlnbm9yZV92YWx1ZSAoY2hvd24g KGRlc3RfZmlsZW5hbWUsIHN0YXRidWYuc3RfdWlkLCBzdGF0YnVmLnN0X2dpZCkpOworKyNlbmRp ZgorKworKyAgLyogUHJlc2VydmUgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucy4gICovCisrI2lmIFVT RV9BQ0wKKysgIHN3aXRjaCAocWNvcHlfYWNsIChzcmNfZmlsZW5hbWUsIHNyY19mZCwgZGVzdF9m aWxlbmFtZSwgZGVzdF9mZCwgbW9kZSkpCisrICAgIHsKKysgICAgY2FzZSAtMjoKKysgICAgICBl cnIgPSBHTF9DT1BZX0VSUl9HRVRfQUNMOworKyAgICAgIGdvdG8gZXJyb3Jfc3JjX2Rlc3Q7Cisr ICAgIGNhc2UgLTE6CisrICAgICAgZXJyID0gR0xfQ09QWV9FUlJfU0VUX0FDTDsKKysgICAgICBn b3RvIGVycm9yX3NyY19kZXN0OworKyAgICB9CisrI2Vsc2UKKysgIGNobW9kIChkZXN0X2ZpbGVu YW1lLCBtb2RlKTsKKysjZW5kaWYKKysKKysjaWYgVVNFX0FDTAorKyAgaWYgKGNsb3NlIChkZXN0 X2ZkKSA8IDApCisrICAgIHsKKysgICAgICBlcnIgPSBHTF9DT1BZX0VSUl9XUklURTsKKysgICAg ICBnb3RvIGVycm9yX3NyYzsKKysgICAgfQorKyAgaWYgKGNsb3NlIChzcmNfZmQpIDwgMCkKKysg ICAgcmV0dXJuIEdMX0NPUFlfRVJSX0FGVEVSX1JFQUQ7CisrI2VuZGlmCisrCisrICByZXR1cm4g MDsKKysKKysgZXJyb3Jfc3JjX2Rlc3Q6CisrICBjbG9zZSAoZGVzdF9mZCk7CisrIGVycm9yX3Ny YzoKKysgIGNsb3NlIChzcmNfZmQpOworKyAgcmV0dXJuIGVycjsKKyt9CisrCisrdm9pZAorK2Nv cHlfZmlsZV9wcmVzZXJ2aW5nIChjb25zdCBjaGFyICpzcmNfZmlsZW5hbWUsIGNvbnN0IGNoYXIg KmRlc3RfZmlsZW5hbWUpCisreworKyAgc3dpdGNoIChxY29weV9maWxlX3ByZXNlcnZpbmcgKHNy Y19maWxlbmFtZSwgZGVzdF9maWxlbmFtZSkpCisrICAgIHsKKysgICAgY2FzZSAwOgorKyAgICAg IHJldHVybjsKKysKKysgICAgY2FzZSBHTF9DT1BZX0VSUl9PUEVOX1JFQUQ6CisrICAgICAgZXJy b3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oImVycm9yIHdoaWxlIG9wZW5pbmcgJXMgZm9yIHJl YWRpbmciKSwKKysgICAgICAgICAgICAgcXVvdGUgKHNyY19maWxlbmFtZSkpOworKworKyAgICBj YXNlIEdMX0NPUFlfRVJSX09QRU5fQkFDS1VQX1dSSVRFOgorKyAgICAgIGVycm9yIChFWElUX0ZB SUxVUkUsIGVycm5vLCBfKCJjYW5ub3Qgb3BlbiBiYWNrdXAgZmlsZSAlcyBmb3Igd3JpdGluZyIp LAorKyAgICAgICAgICAgICBxdW90ZSAoZGVzdF9maWxlbmFtZSkpOworKworKyAgICBjYXNlIEdM X0NPUFlfRVJSX1JFQUQ6CisrICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oImVy cm9yIHJlYWRpbmcgJXMiKSwKKysgICAgICAgICAgICAgcXVvdGUgKHNyY19maWxlbmFtZSkpOwor KworKyAgICBjYXNlIEdMX0NPUFlfRVJSX1dSSVRFOgorKyAgICAgIGVycm9yIChFWElUX0ZBSUxV UkUsIGVycm5vLCBfKCJlcnJvciB3cml0aW5nICVzIiksCisrICAgICAgICAgICAgIHF1b3RlIChk ZXN0X2ZpbGVuYW1lKSk7CisrCisrICAgIGNhc2UgR0xfQ09QWV9FUlJfQUZURVJfUkVBRDoKKysg ICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiZXJyb3IgYWZ0ZXIgcmVhZGluZyAl cyIpLAorKyAgICAgICAgICAgICBxdW90ZSAoc3JjX2ZpbGVuYW1lKSk7CisrCisrICAgIGNhc2Ug R0xfQ09QWV9FUlJfR0VUX0FDTDoKKysgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywg IiVzIiwgcXVvdGUgKHNyY19maWxlbmFtZSkpOworKworKyAgICBjYXNlIEdMX0NPUFlfRVJSX1NF VF9BQ0w6CisrICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sIF8oInByZXNlcnZpbmcg cGVybWlzc2lvbnMgZm9yICVzIiksCisrICAgICAgICAgICAgIHF1b3RlIChkZXN0X2ZpbGVuYW1l KSk7CisrCisrICAgIGRlZmF1bHQ6CisrICAgICAgYWJvcnQgKCk7CisrICAgIH0KKyt9CitkaWZm IC0tZ2l0IGEvbGliL2NvcHktZmlsZS5oIGIvbGliL2NvcHktZmlsZS5oCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMDkyODFkNgorLS0tIC9kZXYvbnVsbAorKysrIGIvbGli L2NvcHktZmlsZS5oCitAQCAtMCwwICsxLDU0IEBACisrLyogQ29weWluZyBvZiBmaWxlcy4KKysg ICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMywgMjAwOS0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKyAgIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29u cy5vcmc+LCAyMDAxLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisrCisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisr CisrCisrLyogRXJyb3IgY29kZXMgcmV0dXJuZWQgYnkgcWNvcHlfZmlsZV9wcmVzZXJ2aW5nLiAg Ki8KKytlbnVtCisreworKyAgR0xfQ09QWV9FUlJfT1BFTl9SRUFEID0gLTEsCisrICBHTF9DT1BZ X0VSUl9PUEVOX0JBQ0tVUF9XUklURSA9IC0yLAorKyAgR0xfQ09QWV9FUlJfUkVBRCA9IC0zLAor KyAgR0xfQ09QWV9FUlJfV1JJVEUgPSAtNCwKKysgIEdMX0NPUFlfRVJSX0FGVEVSX1JFQUQgPSAt NSwKKysgIEdMX0NPUFlfRVJSX0dFVF9BQ0wgPSAtNiwKKysgIEdMX0NPUFlfRVJSX1NFVF9BQ0wg PSAtNworK307CisrCisrLyogQ29weSBhIHJlZ3VsYXIgZmlsZTogZnJvbSBzcmNfZmlsZW5hbWUg dG8gZGVzdF9maWxlbmFtZS4KKysgICBUaGUgZGVzdGluYXRpb24gZmlsZSBpcyBhc3N1bWVkIHRv IGJlIGEgYmFja3VwIGZpbGUuCisrICAgTW9kaWZpY2F0aW9uIHRpbWVzLCBvd25lciwgZ3JvdXAg YW5kIGFjY2VzcyBwZXJtaXNzaW9ucyBhcmUgcHJlc2VydmVkIGFzCisrICAgZmFyIGFzIHBvc3Np YmxlLgorKyAgIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBzZXQgZXJybm8gYW5k IHJldHVybiBvbmUgb2YgdGhlIGVycm9yCisrICAgY29kZXMgYWJvdmUuICAqLworK2V4dGVybiBp bnQgcWNvcHlfZmlsZV9wcmVzZXJ2aW5nIChjb25zdCBjaGFyICpzcmNfZmlsZW5hbWUsIGNvbnN0 IGNoYXIgKmRlc3RfZmlsZW5hbWUpOworKworKy8qIENvcHkgYSByZWd1bGFyIGZpbGU6IGZyb20g c3JjX2ZpbGVuYW1lIHRvIGRlc3RfZmlsZW5hbWUuCisrICAgVGhlIGRlc3RpbmF0aW9uIGZpbGUg aXMgYXNzdW1lZCB0byBiZSBhIGJhY2t1cCBmaWxlLgorKyAgIE1vZGlmaWNhdGlvbiB0aW1lcywg b3duZXIsIGdyb3VwIGFuZCBhY2Nlc3MgcGVybWlzc2lvbnMgYXJlIHByZXNlcnZlZCBhcworKyAg IGZhciBhcyBwb3NzaWJsZS4KKysgICBFeGl0IHVwb24gZmFpbHVyZS4gICovCisrZXh0ZXJuIHZv aWQgY29weV9maWxlX3ByZXNlcnZpbmcgKGNvbnN0IGNoYXIgKnNyY19maWxlbmFtZSwgY29uc3Qg Y2hhciAqZGVzdF9maWxlbmFtZSk7CisrCisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrfQorKyNl bmRpZgorZGlmZiAtLWdpdCBhL200L2NvcHktZmlsZS5tNCBiL200L2NvcHktZmlsZS5tNAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjYyMTExNzEKKy0tLSAvZGV2L251bGwK KysrKyBiL200L2NvcHktZmlsZS5tNAorQEAgLTAsMCArMSwxMSBAQAorKyMgY29weS1maWxlLm00 IHNlcmlhbCA1CisrZG5sIENvcHlyaWdodCAoQykgMjAwMywgMjAwOS0yMDIxIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lv biB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9k aWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisrCisrQUNf REVGVU4oW2dsX0NPUFlfRklMRV0sCisrWworKyAgQUNfQ0hFQ0tfSEVBREVSU19PTkNFKFt1bmlz dGQuaF0pCisrICBBQ19DSEVDS19GVU5DUyhbY2hvd25dKQorK10pCisKK2RpZmYgLS1naXQgYS9s aWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IGE2ZWMzMGIuLmYzNjNiODYg MTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2xpYi9NYWtlZmlsZS5hbQorQEAg LTIxOSw2ICsyMjUsMTIgQEAKKyAKKyAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGJhc2U2NAorIAor KyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgYmluYXJ5LWlvCisrCisrbGlicmVjdXRpbHNfbGFfU09V UkNFUyArPSBiaW5hcnktaW8uaCBiaW5hcnktaW8uYworKworKyMjIGVuZCAgIGdudWxpYiBtb2R1 bGUgYmluYXJ5LWlvCisrCisgIyMgYmVnaW4gZ251bGliIG1vZHVsZSBidG93YworIAorIAorQEAg LTI4OSw2ICszMDEsMjEgQEAKKyAKKyAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGNsb3Nlb3V0Cisg CisrIyMgYmVnaW4gZ251bGliIG1vZHVsZSBjb3B5LWZpbGUKKysKKytsaWJyZWN1dGlsc19sYV9T T1VSQ0VTICs9IGNvcHktZmlsZS5oIGNvcHktZmlsZS5jCisrCisrIyMgZW5kICAgZ251bGliIG1v ZHVsZSBjb3B5LWZpbGUKKysKKysjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGNvcHktZmlsZS1yYW5n ZQorKworKworK0VYVFJBX0RJU1QgKz0gY29weS1maWxlLXJhbmdlLmMKKysKKytFWFRSQV9saWJy ZWN1dGlsc19sYV9TT1VSQ0VTICs9IGNvcHktZmlsZS1yYW5nZS5jCisrCisrIyMgZW5kICAgZ251 bGliIG1vZHVsZSBjb3B5LWZpbGUtcmFuZ2UKKysKKyAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGNy YworIAorIGxpYnJlY3V0aWxzX2xhX1NPVVJDRVMgKz0gY3JjLmMKK0BAIC02MDUsNiArNjM0LDEy IEBACisgCisgIyMgZW5kICAgZ251bGliIG1vZHVsZSBmdGVsbG8KKyAKKysjIyBiZWdpbiBnbnVs aWIgbW9kdWxlIGZ1bGwtd3JpdGUKKysKKytsaWJyZWN1dGlsc19sYV9TT1VSQ0VTICs9IGZ1bGwt d3JpdGUuaCBmdWxsLXdyaXRlLmMKKysKKysjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGZ1bGwtd3Jp dGUKKysKKyAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGZ3cml0aW5nCisgCisgCitAQCAtNzc4LDYg KzgxMywxMyBAQAorIAorICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgaGF2ZWxpYgorIAorKyMjIGJl Z2luIGdudWxpYiBtb2R1bGUgaWdub3JlLXZhbHVlCisrCisrCisrRVhUUkFfRElTVCArPSBpZ25v cmUtdmFsdWUuaAorKworKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgaWdub3JlLXZhbHVlCisrCisg IyMgYmVnaW4gZ251bGliIG1vZHVsZSBpbnRwcm9wcworIAorIAorQEAgLTE3NjEsNiArMTgyNywz MiBAQAorIAorICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgcm9vdC11aWQKKyAKKysjIyBiZWdpbiBn bnVsaWIgbW9kdWxlIHNhZmUtcmVhZAorKworK2xpYnJlY3V0aWxzX2xhX1NPVVJDRVMgKz0gc2Fm ZS1yZWFkLmMKKysKKytFWFRSQV9ESVNUICs9IHNhZmUtcmVhZC5oIHN5cy1saW1pdHMuaAorKwor KyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc2FmZS1yZWFkCisrCisrIyMgYmVnaW4gZ251bGliIG1v ZHVsZSBzYWZlLXdyaXRlCisrCisrbGlicmVjdXRpbHNfbGFfU09VUkNFUyArPSBzYWZlLXdyaXRl LmMKKysKKytFWFRSQV9ESVNUICs9IHNhZmUtcmVhZC5jIHNhZmUtd3JpdGUuaCBzeXMtbGltaXRz LmgKKysKKytFWFRSQV9saWJyZWN1dGlsc19sYV9TT1VSQ0VTICs9IHNhZmUtcmVhZC5jCisrCisr IyMgZW5kICAgZ251bGliIG1vZHVsZSBzYWZlLXdyaXRlCisrCisrIyMgYmVnaW4gZ251bGliIG1v ZHVsZSB1dGltZW5zCisrCisrbGlicmVjdXRpbHNfbGFfU09VUkNFUyArPSB1dGltZW5zLmMKKysK KytFWFRSQV9ESVNUICs9IHV0aW1lbnMuaAorKworKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgdXRp bWVucworKworICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgc2FtZS1pbm9kZQorIAorIAorZGlmZiAt LWdpdCBhL2xpYi9pZ25vcmUtdmFsdWUuaCBiL2xpYi9pZ25vcmUtdmFsdWUuaAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjBhM2NmMWUKKy0tLSAvZGV2L251bGwKKysrKyBi L2xpYi9pZ25vcmUtdmFsdWUuaAorQEAgLTAsMCArMSw1MSBAQAorKy8qIGlnbm9yZSBhIGZ1bmN0 aW9uIHJldHVybiB3aXRob3V0IGEgY29tcGlsZXIgd2FybmluZy4gIC0qLSBjb2Rpbmc6IHV0Zi04 IC0qLQorKworKyAgIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisrCisrLyogV3JpdHRlbiBieSBKaW0gTWV5ZXJpbmcsIEVyaWMgQmxha2UgYW5kIFDDoWRyYWln IEJyYWR5LiAgKi8KKysKKysvKiBVc2UgImlnbm9yZV92YWx1ZSIgdG8gYXZvaWQgYSB3YXJuaW5n IHdoZW4gdXNpbmcgYSBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoCisrICAgZ2NjJ3Mgd2Fybl91bnVz ZWRfcmVzdWx0IGF0dHJpYnV0ZSwgYnV0IGZvciB3aGljaCB5b3UgcmVhbGx5IGRvIHdhbnQgdG8K KysgICBpZ25vcmUgdGhlIHJlc3VsdC4gIFRyYWRpdGlvbmFsbHksIHBlb3BsZSBoYXZlIHVzZWQg YSAiKHZvaWQpIiBjYXN0IHRvCisrICAgaW5kaWNhdGUgdGhhdCBhIGZ1bmN0aW9uJ3MgcmV0dXJu IHZhbHVlIGlzIGRlbGliZXJhdGVseSB1bnVzZWQuICBIb3dldmVyLAorKyAgIGlmIHRoZSBmdW5j dGlvbiBpcyBkZWNsYXJlZCB3aXRoIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkp LAorKyAgIGdjYyBpc3N1ZXMgYSB3YXJuaW5nIGV2ZW4gd2l0aCB0aGUgY2FzdC4KKysKKysgICBD YXV0aW9uOiBtb3N0IG9mIHRoZSB0aW1lLCB5b3UgcmVhbGx5IHNob3VsZCBoZWVkIGdjYydzIHdh cm5pbmcsIGFuZAorKyAgIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUuICBIb3dldmVyLCBpbiB0aG9z ZSBleGNlcHRpb25hbCBjYXNlcyBpbiB3aGljaAorKyAgIHlvdSdyZSBzdXJlIHlvdSBrbm93IHdo YXQgeW91J3JlIGRvaW5nLCB1c2UgdGhpcyBmdW5jdGlvbi4KKysKKysgICBGb3IgdGhlIHJlY29y ZCwgaGVyZSdzIG9uZSBvZiB0aGUgaWdub3JhYmxlIHdhcm5pbmdzOgorKyAgICJjb3B5LmM6MjMz OiB3YXJuaW5nOiBpZ25vcmluZyByZXR1cm4gdmFsdWUgb2YgJ2ZjaG93bicsCisrICAgZGVjbGFy ZWQgd2l0aCBhdHRyaWJ1dGUgd2Fybl91bnVzZWRfcmVzdWx0Ii4gICovCisrCisrI2lmbmRlZiBf R0xfSUdOT1JFX1ZBTFVFX0gKKysjZGVmaW5lIF9HTF9JR05PUkVfVkFMVUVfSAorKworKy8qIE5v cm1hbGx5IGNhc3RpbmcgYW4gZXhwcmVzc2lvbiB0byB2b2lkIGRpc2NhcmRzIGl0cyB2YWx1ZSwg YnV0IEdDQworKyAgIHZlcnNpb25zIDMuNCBhbmQgbmV3ZXIgaGF2ZSBfX2F0dHJpYnV0ZV9fICgo X193YXJuX3VudXNlZF9yZXN1bHRfXykpCisrICAgd2hpY2ggbWF5IGNhdXNlIHVud2FudGVkIGRp YWdub3N0aWNzIGluIHRoYXQgY2FzZS4gIFVzZSBfX3R5cGVvZl9fCisrICAgYW5kIF9fZXh0ZW5z aW9uX18gdG8gd29yayBhcm91bmQgdGhlIHByb2JsZW0sIGlmIHRoZSB3b3JrYXJvdW5kIGlzCisr ICAga25vd24gdG8gYmUgbmVlZGVkLgorKyAgIFRoZSB3b3JrYXJvdW5kIGlzIG5vdCBuZWVkZWQg d2l0aCBjbGFuZy4gICovCisrI2lmICgzIDwgX19HTlVDX18gKyAoNCA8PSBfX0dOVUNfTUlOT1Jf XykpICYmICFkZWZpbmVkIF9fY2xhbmdfXworKyMgZGVmaW5lIGlnbm9yZV92YWx1ZSh4KSBcCisr ICAgIChfX2V4dGVuc2lvbl9fICh7IF9fdHlwZW9mX18gKHgpIF9feCA9ICh4KTsgKHZvaWQpIF9f eDsgfSkpCisrI2Vsc2UKKysjIGRlZmluZSBpZ25vcmVfdmFsdWUoeCkgKCh2b2lkKSAoeCkpCisr I2VuZGlmCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGliL3NhZmUtcmVhZC5jIGIvbGliL3Nh ZmUtcmVhZC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYmU5YzMzYwor LS0tIC9kZXYvbnVsbAorKysrIGIvbGliL3NhZmUtcmVhZC5jCitAQCAtMCwwICsxLDcxIEBACisr LyogQW4gaW50ZXJmYWNlIHRvIHJlYWQgYW5kIHdyaXRlIHRoYXQgcmV0cmllcyBhZnRlciBpbnRl cnJ1cHRzLgorKworKyAgIENvcHlyaWdodCAoQykgMTk5My0xOTk0LCAxOTk4LCAyMDAyLTIwMDYs IDIwMDktMjAyMSBGcmVlIFNvZnR3YXJlCisrICAgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPGNvbmZp Zy5oPgorKworKy8qIFNwZWNpZmljYXRpb24uICAqLworKyNpZmRlZiBTQUZFX1dSSVRFCisrIyBp bmNsdWRlICJzYWZlLXdyaXRlLmgiCisrI2Vsc2UKKysjIGluY2x1ZGUgInNhZmUtcmVhZC5oIgor KyNlbmRpZgorKworKy8qIEdldCBzc2l6ZV90LiAgKi8KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKworKyNpbmNsdWRlIDxlcnJuby5oPgorKworKyNpZmRl ZiBFSU5UUgorKyMgZGVmaW5lIElTX0VJTlRSKHgpICgoeCkgPT0gRUlOVFIpCisrI2Vsc2UKKysj IGRlZmluZSBJU19FSU5UUih4KSAwCisrI2VuZGlmCisrCisrI2luY2x1ZGUgInN5cy1saW1pdHMu aCIKKysKKysjaWZkZWYgU0FGRV9XUklURQorKyMgZGVmaW5lIHNhZmVfcncgc2FmZV93cml0ZQor KyMgZGVmaW5lIHJ3IHdyaXRlCisrI2Vsc2UKKysjIGRlZmluZSBzYWZlX3J3IHNhZmVfcmVhZAor KyMgZGVmaW5lIHJ3IHJlYWQKKysjIHVuZGVmIGNvbnN0CisrIyBkZWZpbmUgY29uc3QgLyogZW1w dHkgKi8KKysjZW5kaWYKKysKKysvKiBSZWFkKHdyaXRlKSB1cCB0byBDT1VOVCBieXRlcyBhdCBC VUYgZnJvbSh0bykgZGVzY3JpcHRvciBGRCwgcmV0cnlpbmcgaWYKKysgICBpbnRlcnJ1cHRlZC4g IFJldHVybiB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkKHdyaXR0ZW4pLCB6ZXJvIGZv ciBFT0YsCisrICAgb3IgU0FGRV9SRUFEX0VSUk9SKFNBRkVfV1JJVEVfRVJST1IpIHVwb24gZXJy b3IuICAqLworK3NpemVfdAorK3NhZmVfcncgKGludCBmZCwgdm9pZCBjb25zdCAqYnVmLCBzaXpl X3QgY291bnQpCisreworKyAgZm9yICg7OykKKysgICAgeworKyAgICAgIHNzaXplX3QgcmVzdWx0 ID0gcncgKGZkLCBidWYsIGNvdW50KTsKKysKKysgICAgICBpZiAoMCA8PSByZXN1bHQpCisrICAg ICAgICByZXR1cm4gcmVzdWx0OworKyAgICAgIGVsc2UgaWYgKElTX0VJTlRSIChlcnJubykpCisr ICAgICAgICBjb250aW51ZTsKKysgICAgICBlbHNlIGlmIChlcnJubyA9PSBFSU5WQUwgJiYgU1lT X0JVRlNJWkVfTUFYIDwgY291bnQpCisrICAgICAgICBjb3VudCA9IFNZU19CVUZTSVpFX01BWDsK KysgICAgICBlbHNlCisrICAgICAgICByZXR1cm4gcmVzdWx0OworKyAgICB9CisrfQorZGlmZiAt LWdpdCBhL2xpYi9zYWZlLXJlYWQuaCBiL2xpYi9zYWZlLXJlYWQuaAorbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLjU0ODI5MDYKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYi9z YWZlLXJlYWQuaAorQEAgLTAsMCArMSw0NyBAQAorKy8qIEFuIGludGVyZmFjZSB0byByZWFkKCkg dGhhdCByZXRyaWVzIGFmdGVyIGludGVycnVwdHMuCisrICAgQ29weXJpZ2h0IChDKSAyMDAyLCAy MDA2LCAyMDA5LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKwor KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBTb21lIHN5c3RlbSBj YWxscyBtYXkgYmUgaW50ZXJydXB0ZWQgYW5kIGZhaWwgd2l0aCBlcnJubyA9IEVJTlRSIGluIHRo ZQorKyAgIGZvbGxvd2luZyBzaXR1YXRpb25zOgorKyAgICAgLSBUaGUgcHJvY2VzcyBpcyBzdG9w cGVkIGFuZCByZXN0YXJ0ZWQgKHNpZ25hbCBTSUdTVE9QIGFuZCBTSUdDT05ULCB1c2VyCisrICAg ICAgIHR5cGVzIEN0cmwtWikgb24gc29tZSBwbGF0Zm9ybXM6IE1hYyBPUyBYLgorKyAgICAgLSBU aGUgcHJvY2VzcyByZWNlaXZlcyBhIHNpZ25hbCBmb3Igd2hpY2ggYSBzaWduYWwgaGFuZGxlciB3 YXMgaW5zdGFsbGVkCisrICAgICAgIHdpdGggc2lnYWN0aW9uKCkgd2l0aCBhbiBzYV9mbGFncyBm aWVsZCB0aGF0IGRvZXMgbm90IGNvbnRhaW4KKysgICAgICAgU0FfUkVTVEFSVC4KKysgICAgIC0g VGhlIHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWwgZm9yIHdoaWNoIGEgc2lnbmFsIGhhbmRsZXIg d2FzIGluc3RhbGxlZAorKyAgICAgICB3aXRoIHNpZ25hbCgpIGFuZCBmb3Igd2hpY2ggbm8gY2Fs bCB0byBzaWdpbnRlcnJ1cHQoc2lnLDApIHdhcyBkb25lLAorKyAgICAgICBvbiBzb21lIHBsYXRm b3JtczogQUlYLCBIUC1VWCwgSVJJWCwgT1NGLzEsIFNvbGFyaXMuCisrCisrICAgVGhpcyBtb2R1 bGUgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCByZWFkKCkgdGhhdCBoYW5kbGVzIEVJTlRSLiAg Ki8KKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0 ZXJuICJDIiB7CisrI2VuZGlmCisrCisrCisrI2RlZmluZSBTQUZFX1JFQURfRVJST1IgKChzaXpl X3QpIC0xKQorKworKy8qIFJlYWQgdXAgdG8gQ09VTlQgYnl0ZXMgYXQgQlVGIGZyb20gZGVzY3Jp cHRvciBGRCwgcmV0cnlpbmcgaWYgaW50ZXJydXB0ZWQuCisrICAgUmV0dXJuIHRoZSBhY3R1YWwg bnVtYmVyIG9mIGJ5dGVzIHJlYWQsIHplcm8gZm9yIEVPRiwgb3IgU0FGRV9SRUFEX0VSUk9SCisr ICAgdXBvbiBlcnJvci4gICovCisrZXh0ZXJuIHNpemVfdCBzYWZlX3JlYWQgKGludCBmZCwgdm9p ZCAqYnVmLCBzaXplX3QgY291bnQpOworKworKworKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysj ZW5kaWYKK2RpZmYgLS1naXQgYS9saWIvc3lzLWxpbWl0cy5oIGIvbGliL3N5cy1saW1pdHMuaAor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmNkMDVhODEKKy0tLSAvZGV2L251 bGwKKysrKyBiL2xpYi9zeXMtbGltaXRzLmgKK0BAIC0wLDAgKzEsNDIgQEAKKysvKiBTeXN0ZW0g Y2FsbCBsaW1pdHMKKysKKysgICBDb3B5cmlnaHQgMjAxOC0yMDIxIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91 ciBvcHRpb24pCisrICAgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaWZuZGVm IF9HTF9TWVNfTElNSVRTX0gKKysjZGVmaW5lIF9HTF9TWVNfTElNSVRTX0gKKysKKysjaW5jbHVk ZSA8bGltaXRzLmg+CisrCisrLyogTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBvciB3 cml0ZSBpbiBhIHNpbmdsZSBzeXN0ZW0gY2FsbC4KKysgICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9y IHN5c3RlbSBjYWxscyBsaWtlIHNlbmRmaWxlIG9uIEdOVS9MaW51eCwKKysgICB3aGljaCBkbyBu b3QgaGFuZGxlIG1vcmUgdGhhbiBNQVhfUldfQ09VTlQgYnl0ZXMgY29ycmVjdGx5LgorKyAgIFRo ZSBMaW51eCBrZXJuZWwgTUFYX1JXX0NPVU5UIGlzIGF0IGxlYXN0IElOVF9NQVggPj4gMjAgPDwg MjAsCisrICAgd2hlcmUgdGhlIDIwIGNvbWVzIGZyb20gdGhlIEhleGFnb24gcG9ydCB3aXRoIDEg TWlCIHBhZ2VzOyB1c2UgdGhhdAorKyAgIGFzIGFuIGFwcHJveGltYXRpb24sIGFzIHRoZSBleGFj dCB2YWx1ZSBtYXkgbm90IGJlIGF2YWlsYWJsZSB0byB1cy4KKysKKysgICBVc2luZyB0aGlzIGFs c28gd29ya3MgYXJvdW5kIGEgc2VyaW91cyBMaW51eCBidWcgYmVmb3JlIDIuNi4xNjsgc2VlCisr ICAgPGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjEyODM5Pi4K KysKKysgICBVc2luZyB0aGlzIGFsc28gd29ya3MgYXJvdW5kIGEgVHJ1NjQgNS4xIGJ1Zywgd2hl cmUgYXR0ZW1wdGluZworKyAgIHRvIHJlYWQgSU5UX01BWCBieXRlcyBmYWlscyB3aXRoIGVycm5v ID09IEVJTlZBTC4gIFNlZQorKyAgIDxodHRwczovL2xpc3RzLmdudS5vcmcvci9idWctZ251LXV0 aWxzLzIwMDItMDQvbXNnMDAwMTAuaHRtbD4uCisrCisrICAgVXNpbmcgdGhpcyBpcyBsaWtlbHkg dG8gd29yayBhcm91bmQgc2ltaWxhciBidWdzIGluIG90aGVyIG9wZXJhdGluZworKyAgIHN5c3Rl bXMuICAqLworKworK2VudW0geyBTWVNfQlVGU0laRV9NQVggPSBJTlRfTUFYID4+IDIwIDw8IDIw IH07CisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvbTQvc2FmZS1yZWFkLm00IGIvbTQvc2FmZS1y ZWFkLm00CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uM2NiYTI4OAorLS0t IC9kZXYvbnVsbAorKysrIGIvbTQvc2FmZS1yZWFkLm00CitAQCAtMCwwICsxLDEyIEBACisrIyBz YWZlLXJlYWQubTQgc2VyaWFsIDYKKytkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMsIDIwMDUt MjAwNiwgMjAwOS0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKytkbmwgSW5jLgorK2Ru bCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bgorK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmli dXRlIGl0LAorK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0 aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisrCisrIyBQcmVyZXF1aXNpdGVzIG9mIGxpYi9zYWZl LXJlYWQuYy4KKytBQ19ERUZVTihbZ2xfUFJFUkVRX1NBRkVfUkVBRF0sCisrWworKyAgQUNfUkVR VUlSRShbZ3RfVFlQRV9TU0laRV9UXSkKKytdKQorZGlmZiAtLWdpdCBhL2xpYi9mdWxsLXdyaXRl LmMgYi9saWIvZnVsbC13cml0ZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uMmMwZTA2YgorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliL2Z1bGwtd3JpdGUuYworQEAgLTAs MCArMSw3OSBAQAorKy8qIEFuIGludGVyZmFjZSB0byByZWFkIGFuZCB3cml0ZSB0aGF0IHJldHJp ZXMgKGlmIG5lY2Vzc2FyeSkgdW50aWwgY29tcGxldGUuCisrCisrICAgQ29weXJpZ2h0IChDKSAx OTkzLTE5OTQsIDE5OTctMjAwNiwgMjAwOS0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisr I2luY2x1ZGUgPGNvbmZpZy5oPgorKworKy8qIFNwZWNpZmljYXRpb24uICAqLworKyNpZmRlZiBG VUxMX1JFQUQKKysjIGluY2x1ZGUgImZ1bGwtcmVhZC5oIgorKyNlbHNlCisrIyBpbmNsdWRlICJm dWxsLXdyaXRlLmgiCisrI2VuZGlmCisrCisrI2luY2x1ZGUgPGVycm5vLmg+CisrCisrI2lmZGVm IEZVTExfUkVBRAorKyMgaW5jbHVkZSAic2FmZS1yZWFkLmgiCisrIyBkZWZpbmUgc2FmZV9ydyBz YWZlX3JlYWQKKysjIGRlZmluZSBmdWxsX3J3IGZ1bGxfcmVhZAorKyMgdW5kZWYgY29uc3QKKysj IGRlZmluZSBjb25zdCAvKiBlbXB0eSAqLworKyNlbHNlCisrIyBpbmNsdWRlICJzYWZlLXdyaXRl LmgiCisrIyBkZWZpbmUgc2FmZV9ydyBzYWZlX3dyaXRlCisrIyBkZWZpbmUgZnVsbF9ydyBmdWxs X3dyaXRlCisrI2VuZGlmCisrCisrI2lmZGVmIEZVTExfUkVBRAorKy8qIFNldCBlcnJubyB0byB6 ZXJvIHVwb24gRU9GLiAgKi8KKysjIGRlZmluZSBaRVJPX0JZVEVfVFJBTlNGRVJfRVJSTk8gMAor KyNlbHNlCisrLyogU29tZSBidWdneSBkcml2ZXJzIHJldHVybiAwIHdoZW4gb25lIHRyaWVzIHRv IHdyaXRlIGJleW9uZAorKyAgIGEgZGV2aWNlJ3MgZW5kLiAgKEV4YW1wbGU6IExpbnV4IDEuMi4x MyBvbiAvZGV2L2ZkMC4pCisrICAgU2V0IGVycm5vIHRvIEVOT1NQQyBzbyB0aGV5IGdldCBhIHNl bnNpYmxlIGRpYWdub3N0aWMuICAqLworKyMgZGVmaW5lIFpFUk9fQllURV9UUkFOU0ZFUl9FUlJO TyBFTk9TUEMKKysjZW5kaWYKKysKKysvKiBXcml0ZShyZWFkKSBDT1VOVCBieXRlcyBhdCBCVUYg dG8oZnJvbSkgZGVzY3JpcHRvciBGRCwgcmV0cnlpbmcgaWYKKysgICBpbnRlcnJ1cHRlZCBvciBp ZiBhIHBhcnRpYWwgd3JpdGUocmVhZCkgb2NjdXJzLiAgUmV0dXJuIHRoZSBudW1iZXIKKysgICBv ZiBieXRlcyB0cmFuc2ZlcnJlZC4KKysgICBXaGVuIHdyaXRpbmcsIHNldCBlcnJubyBpZiBmZXdl ciB0aGFuIENPVU5UIGJ5dGVzIGFyZSB3cml0dGVuLgorKyAgIFdoZW4gcmVhZGluZywgaWYgZmV3 ZXIgdGhhbiBDT1VOVCBieXRlcyBhcmUgcmVhZCwgeW91IG11c3QgZXhhbWluZQorKyAgIGVycm5v IHRvIGRpc3Rpbmd1aXNoIGZhaWx1cmUgZnJvbSBFT0YgKGVycm5vID09IDApLiAgKi8KKytzaXpl X3QKKytmdWxsX3J3IChpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQorK3sK KysgIHNpemVfdCB0b3RhbCA9IDA7CisrICBjb25zdCBjaGFyICpwdHIgPSAoY29uc3QgY2hhciAq KSBidWY7CisrCisrICB3aGlsZSAoY291bnQgPiAwKQorKyAgICB7CisrICAgICAgc2l6ZV90IG5f cncgPSBzYWZlX3J3IChmZCwgcHRyLCBjb3VudCk7CisrICAgICAgaWYgKG5fcncgPT0gKHNpemVf dCkgLTEpCisrICAgICAgICBicmVhazsKKysgICAgICBpZiAobl9ydyA9PSAwKQorKyAgICAgICAg eworKyAgICAgICAgICBlcnJubyA9IFpFUk9fQllURV9UUkFOU0ZFUl9FUlJOTzsKKysgICAgICAg ICAgYnJlYWs7CisrICAgICAgICB9CisrICAgICAgdG90YWwgKz0gbl9ydzsKKysgICAgICBwdHIg Kz0gbl9ydzsKKysgICAgICBjb3VudCAtPSBuX3J3OworKyAgICB9CisrCisrICByZXR1cm4gdG90 YWw7CisrfQorZGlmZiAtLWdpdCBhL2xpYi9mdWxsLXdyaXRlLmggYi9saWIvZnVsbC13cml0ZS5o CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNmM0ZTI4YQorLS0tIC9kZXYv bnVsbAorKysrIGIvbGliL2Z1bGwtd3JpdGUuaAorQEAgLTAsMCArMSwzNCBAQAorKy8qIEFuIGlu dGVyZmFjZSB0byB3cml0ZSgpIHRoYXQgd3JpdGVzIGFsbCBpdCBpcyBhc2tlZCB0byB3cml0ZS4K KysKKysgICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMywgMjAwOS0yMDIxIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworKworKyNpZmRlZiBfX2NwbHVzcGx1 cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworKworKy8qIFdyaXRlIENPVU5UIGJ5dGVzIGF0 IEJVRiB0byBkZXNjcmlwdG9yIEZELCByZXRyeWluZyBpZiBpbnRlcnJ1cHRlZAorKyAgIG9yIGlm IHBhcnRpYWwgd3JpdGVzIG9jY3VyLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3VjY2Vz c2Z1bGx5CisrICAgd3JpdHRlbiwgc2V0dGluZyBlcnJubyBpZiB0aGF0IGlzIGxlc3MgdGhhbiBD T1VOVC4gICovCisrZXh0ZXJuIHNpemVfdCBmdWxsX3dyaXRlIChpbnQgZmQsIGNvbnN0IHZvaWQg KmJ1Ziwgc2l6ZV90IGNvdW50KTsKKysKKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKyt9CisrI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvbGliL3V0aW1lbnMuYyBiL2xpYi91dGltZW5zLmMKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4wNmQxYWEzCistLS0gL2Rldi9udWxsCisrKysg Yi9saWIvdXRpbWVucy5jCitAQCAtMCwwICsxLDY0NyBAQAorKy8qIFNldCBmaWxlIGFjY2VzcyBh bmQgbW9kaWZpY2F0aW9uIHRpbWVzLgorKworKyAgIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICAg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvciBhbnkKKysgICBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworKworKy8qIFdyaXR0ZW4gYnkgUGF1bCBFZ2dlcnQuICAqLworKworKy8qIGRlcml2ZWQgZnJv bSBhIGZ1bmN0aW9uIGluIHRvdWNoLmMgKi8KKysKKysjaW5jbHVkZSA8Y29uZmlnLmg+CisrCisr I2RlZmluZSBfR0xfVVRJTUVOU19JTkxJTkUgX0dMX0VYVEVSTl9JTkxJTkUKKysjaW5jbHVkZSAi dXRpbWVucy5oIgorKworKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxmY250bC5oPgor KyNpbmNsdWRlIDxzdGRib29sLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxz eXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4K KysjaW5jbHVkZSA8dXRpbWUuaD4KKysKKysjaW5jbHVkZSAic3RhdC10aW1lLmgiCisrI2luY2x1 ZGUgInRpbWVzcGVjLmgiCisrCisrLyogT24gbmF0aXZlIFdpbmRvd3MsIHVzZSBTZXRGaWxlVGlt ZTsgYnV0IGF2b2lkIHRoaXMgd2hlbiBjb21waWxpbmcKKysgICBHTlUgRW1hY3MsIHdoaWNoIGFy cmFuZ2VzIGZvciB0aGlzIGluIHNvbWUgb3RoZXIgd2F5IGFuZCB3aGljaAorKyAgIGRlZmluZXMg V0lOMzJfTEVBTl9BTkRfTUVBTiBpdHNlbGYuICAqLworKworKyNpZiBkZWZpbmVkIF9XSU4zMiAm JiAhIGRlZmluZWQgX19DWUdXSU5fXyAmJiAhIGRlZmluZWQgRU1BQ1NfQ09ORklHVVJBVElPTgor KyMgZGVmaW5lIFVTRV9TRVRGSUxFVElNRQorKyMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4K KysjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKysjIGlmIEdOVUxJQl9NU1ZDX05PVEhST1cKKysjICBp bmNsdWRlICJtc3ZjLW5vdGhyb3cuaCIKKysjIGVsc2UKKysjICBpbmNsdWRlIDxpby5oPgorKyMg ZW5kaWYKKysjZW5kaWYKKysKKysvKiBBdm9pZCByZWN1cnNpb24gd2l0aCBycGxfZnV0aW1lbnMg b3IgcnBsX3V0aW1lbnNhdC4gICovCisrI3VuZGVmIGZ1dGltZW5zCisrI2lmICFIQVZFX05FQVJM WV9XT1JLSU5HX1VUSU1FTlNBVAorKyMgdW5kZWYgdXRpbWVuc2F0CisrI2VuZGlmCisrCisrLyog U29sYXJpcyA5IG1pc3Rha2VubHkgc3VjY2VlZHMgd2hlbiBnaXZlbiBhIG5vbi1kaXJlY3Rvcnkg d2l0aCBhCisrICAgdHJhaWxpbmcgc2xhc2guICBGb3JjZSB0aGUgdXNlIG9mIHJwbF9zdGF0IGZv ciBhIGZpeC4gICovCisrI2lmbmRlZiBSRVBMQUNFX0ZVTkNfU1RBVF9GSUxFCisrIyBkZWZpbmUg UkVQTEFDRV9GVU5DX1NUQVRfRklMRSAwCisrI2VuZGlmCisrCisrI2lmIEhBVkVfVVRJTUVOU0FU IHx8IEhBVkVfRlVUSU1FTlMKKysvKiBDYWNoZSB2YXJpYWJsZXMgZm9yIHdoZXRoZXIgdGhlIHV0 aW1lbnNhdCBzeXNjYWxsIHdvcmtzOyB1c2VkIHRvCisrICAgYXZvaWQgY2FsbGluZyB0aGUgc3lz Y2FsbCBpZiB3ZSBrbm93IGl0IHdpbGwganVzdCBmYWlsIHdpdGggRU5PU1lTLAorKyAgIGFuZCB0 byBhdm9pZCB1bm5lY2Vzc2FyeSB3b3JrIGluIG1hc3NhZ2luZyB0aW1lc3RhbXBzIGlmIHRoZQor KyAgIHN5c2NhbGwgd2lsbCB3b3JrLiAgTXVsdGlwbGUgdmFyaWFibGVzIGFyZSBuZWVkZWQsIHRv IGRpc3Rpbmd1aXNoCisrICAgYmV0d2VlbiB0aGUgZm9sbG93aW5nIHNjZW5hcmlvcyBvbiBMaW51 eDoKKysgICB1dGltZW5zYXQgZG9lc24ndCBleGlzdCwgb3IgaXMgaW4gZ2xpYmMgYnV0IGtlcm5l bCAyLjYuMTggZmFpbHMgd2l0aCBFTk9TWVMKKysgICBrZXJuZWwgMi42LjIyIGFuZCBlYXJsaWVy IHJlamVjdHMgQVRfU1lNTElOS19OT0ZPTExPVworKyAgIGtlcm5lbCAyLjYuMjUgYW5kIGVhcmxp ZXIgcmVqZWN0IFVUSU1FX05PVy9VVElNRV9PTUlUIHdpdGggbm9uLXplcm8gdHZfc2VjCisrICAg a2VybmVsIDIuNi4zMiB1c2VkIHdpdGggeGZzIG9yIG50ZnMtM2cgZmFpbCB0byBob25vciBVVElN RV9PTUlUCisrICAgdXRpbWVuc2F0IGNvbXBsZXRlbHkgd29ya3MKKysgICBGb3IgZWFjaCBjYWNo ZSB2YXJpYWJsZTogMCA9IHVua25vd24sIDEgPSB5ZXMsIC0xID0gbm8uICAqLworK3N0YXRpYyBp bnQgdXRpbWVuc2F0X3dvcmtzX3JlYWxseTsKKytzdGF0aWMgaW50IGx1dGltZW5zYXRfd29ya3Nf cmVhbGx5OworKyNlbmRpZiAvKiBIQVZFX1VUSU1FTlNBVCB8fCBIQVZFX0ZVVElNRU5TICovCisr CisrLyogVmFsaWRhdGUgdGhlIHJlcXVlc3RlZCB0aW1lc3RhbXBzLiAgUmV0dXJuIDAgaWYgdGhl IHJlc3VsdGluZworKyAgIHRpbWVzcGVjIGNhbiBiZSB1c2VkIGZvciB1dGltZW5zYXQgKGFmdGVy IHBvc3NpYmx5IG1vZGlmeWluZyBpdCB0bworKyAgIHdvcmsgYXJvdW5kIGJ1Z3MgaW4gdXRpbWVu c2F0KS4gIFJldHVybiBhIHBvc2l0aXZlIHZhbHVlIGlmIHRoZQorKyAgIHRpbWVzcGVjIG5lZWRz IGZ1cnRoZXIgYWRqdXN0bWVudCBiYXNlZCBvbiBzdGF0IHJlc3VsdHM6IDEgaWYgYW55CisrICAg YWRqdXN0bWVudCBpcyBuZWVkZWQgZm9yIHV0aW1lcywgYW5kIDIgaWYgYW55IGFkanVzdG1lbnQg aXMgbmVlZGVkCisrICAgZm9yIExpbnV4IHV0aW1lbnNhdC4gIFJldHVybiAtMSwgd2l0aCBlcnJu byBzZXQgdG8gRUlOVkFMLCBpZgorKyAgIHRpbWVzcGVjIGlzIG91dCBvZiByYW5nZS4gICovCisr c3RhdGljIGludAorK3ZhbGlkYXRlX3RpbWVzcGVjIChzdHJ1Y3QgdGltZXNwZWMgdGltZXNwZWNb Ml0pCisreworKyAgaW50IHJlc3VsdCA9IDA7CisrICBpbnQgdXRpbWVfb21pdF9jb3VudCA9IDA7 CisrICBpZiAoKHRpbWVzcGVjWzBdLnR2X25zZWMgIT0gVVRJTUVfTk9XCisrICAgICAgICYmIHRp bWVzcGVjWzBdLnR2X25zZWMgIT0gVVRJTUVfT01JVAorKyAgICAgICAmJiAhICgwIDw9IHRpbWVz cGVjWzBdLnR2X25zZWMKKysgICAgICAgICAgICAgJiYgdGltZXNwZWNbMF0udHZfbnNlYyA8IFRJ TUVTUEVDX0haKSkKKysgICAgICB8fCAodGltZXNwZWNbMV0udHZfbnNlYyAhPSBVVElNRV9OT1cK KysgICAgICAgICAgJiYgdGltZXNwZWNbMV0udHZfbnNlYyAhPSBVVElNRV9PTUlUCisrICAgICAg ICAgICYmICEgKDAgPD0gdGltZXNwZWNbMV0udHZfbnNlYworKyAgICAgICAgICAgICAgICAmJiB0 aW1lc3BlY1sxXS50dl9uc2VjIDwgVElNRVNQRUNfSFopKSkKKysgICAgeworKyAgICAgIGVycm5v ID0gRUlOVkFMOworKyAgICAgIHJldHVybiAtMTsKKysgICAgfQorKyAgLyogV29yayBhcm91bmQg TGludXgga2VybmVsIDIuNi4yNSBidWcsIHdoZXJlIHV0aW1lbnNhdCBmYWlscyB3aXRoCisrICAg ICBFSU5WQUwgaWYgdHZfc2VjIGlzIG5vdCAwIHdoZW4gdXNpbmcgdGhlIGZsYWcgdmFsdWVzIG9m IHR2X25zZWMuCisrICAgICBGbGFnIGEgTGludXgga2VybmVsIDIuNi4zMiBidWcsIHdoZXJlIGFu IG10aW1lIG9mIFVUSU1FX09NSVQKKysgICAgIGZhaWxzIHRvIGJ1bXAgY3RpbWUuICAqLworKyAg aWYgKHRpbWVzcGVjWzBdLnR2X25zZWMgPT0gVVRJTUVfTk9XCisrICAgICAgfHwgdGltZXNwZWNb MF0udHZfbnNlYyA9PSBVVElNRV9PTUlUKQorKyAgICB7CisrICAgICAgdGltZXNwZWNbMF0udHZf c2VjID0gMDsKKysgICAgICByZXN1bHQgPSAxOworKyAgICAgIGlmICh0aW1lc3BlY1swXS50dl9u c2VjID09IFVUSU1FX09NSVQpCisrICAgICAgICB1dGltZV9vbWl0X2NvdW50Kys7CisrICAgIH0K KysgIGlmICh0aW1lc3BlY1sxXS50dl9uc2VjID09IFVUSU1FX05PVworKyAgICAgIHx8IHRpbWVz cGVjWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkKKysgICAgeworKyAgICAgIHRpbWVzcGVjWzFd LnR2X3NlYyA9IDA7CisrICAgICAgcmVzdWx0ID0gMTsKKysgICAgICBpZiAodGltZXNwZWNbMV0u dHZfbnNlYyA9PSBVVElNRV9PTUlUKQorKyAgICAgICAgdXRpbWVfb21pdF9jb3VudCsrOworKyAg ICB9CisrICByZXR1cm4gcmVzdWx0ICsgKHV0aW1lX29taXRfY291bnQgPT0gMSk7CisrfQorKwor Ky8qIE5vcm1hbGl6ZSBhbnkgVVRJTUVfTk9XIG9yIFVUSU1FX09NSVQgdmFsdWVzIGluICgqVFMp WzBdIGFuZCAoKlRTKVsxXSwKKysgICB1c2luZyBTVEFUQlVGIHRvIG9idGFpbiB0aGUgY3VycmVu dCB0aW1lc3RhbXBzIG9mIHRoZSBmaWxlLiAgSWYKKysgICBib3RoIHRpbWVzIGFyZSBVVElNRV9O T1csIHNldCAqVFMgdG8gTlVMTCAoYXMgdGhpcyBjYW4gYXZvaWQgc29tZQorKyAgIHBlcm1pc3Np b25zIGlzc3VlcykuICBJZiBib3RoIHRpbWVzIGFyZSBVVElNRV9PTUlULCByZXR1cm4gdHJ1ZQor KyAgIChub3RoaW5nIGZ1cnRoZXIgYmV5b25kIHRoZSBwcmlvciBjb2xsZWN0aW9uIG9mIFNUQVRC VUYgaXMKKysgICBuZWNlc3NhcnkpOyBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLiAgKi8KKytzdGF0 aWMgYm9vbAorK3VwZGF0ZV90aW1lc3BlYyAoc3RydWN0IHN0YXQgY29uc3QgKnN0YXRidWYsIHN0 cnVjdCB0aW1lc3BlYyAqKnRzKQorK3sKKysgIHN0cnVjdCB0aW1lc3BlYyAqdGltZXNwZWMgPSAq dHM7CisrICBpZiAodGltZXNwZWNbMF0udHZfbnNlYyA9PSBVVElNRV9PTUlUCisrICAgICAgJiYg dGltZXNwZWNbMV0udHZfbnNlYyA9PSBVVElNRV9PTUlUKQorKyAgICByZXR1cm4gdHJ1ZTsKKysg IGlmICh0aW1lc3BlY1swXS50dl9uc2VjID09IFVUSU1FX05PVworKyAgICAgICYmIHRpbWVzcGVj WzFdLnR2X25zZWMgPT0gVVRJTUVfTk9XKQorKyAgICB7CisrICAgICAgKnRzID0gTlVMTDsKKysg ICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysKKysgIGlmICh0aW1lc3BlY1swXS50dl9uc2Vj ID09IFVUSU1FX09NSVQpCisrICAgIHRpbWVzcGVjWzBdID0gZ2V0X3N0YXRfYXRpbWUgKHN0YXRi dWYpOworKyAgZWxzZSBpZiAodGltZXNwZWNbMF0udHZfbnNlYyA9PSBVVElNRV9OT1cpCisrICAg IGdldHRpbWUgKCZ0aW1lc3BlY1swXSk7CisrCisrICBpZiAodGltZXNwZWNbMV0udHZfbnNlYyA9 PSBVVElNRV9PTUlUKQorKyAgICB0aW1lc3BlY1sxXSA9IGdldF9zdGF0X210aW1lIChzdGF0YnVm KTsKKysgIGVsc2UgaWYgKHRpbWVzcGVjWzFdLnR2X25zZWMgPT0gVVRJTUVfTk9XKQorKyAgICBn ZXR0aW1lICgmdGltZXNwZWNbMV0pOworKworKyAgcmV0dXJuIGZhbHNlOworK30KKysKKysvKiBT ZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzdGFtcHMgb2YgRkQgKGEuay5hLiBG SUxFKSB0byBiZQorKyAgIFRJTUVTUEVDWzBdIGFuZCBUSU1FU1BFQ1sxXSwgcmVzcGVjdGl2ZWx5 LgorKyAgIEZEIG11c3QgYmUgZWl0aGVyIG5lZ2F0aXZlIC0tIGluIHdoaWNoIGNhc2UgaXQgaXMg aWdub3JlZCAtLQorKyAgIG9yIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQgaXMgb3BlbiBvbiBGSUxF LgorKyAgIElmIEZEIGlzIG5vbm5lZ2F0aXZlLCB0aGVuIEZJTEUgY2FuIGJlIE5VTEwsIHdoaWNo IG1lYW5zCisrICAgdXNlIGp1c3QgZnV0aW1lcyAob3IgZXF1aXZhbGVudCkgaW5zdGVhZCBvZiB1 dGltZXMgKG9yIGVxdWl2YWxlbnQpLAorKyAgIGFuZCBmYWlsIGlmIG9uIGFuIG9sZCBzeXN0ZW0g d2l0aG91dCBmdXRpbWVzIChvciBlcXVpdmFsZW50KS4KKysgICBJZiBUSU1FU1BFQyBpcyBudWxs LCBzZXQgdGhlIHRpbWVzdGFtcHMgdG8gdGhlIGN1cnJlbnQgdGltZS4KKysgICBSZXR1cm4gMCBv biBzdWNjZXNzLCAtMSAoc2V0dGluZyBlcnJubykgb24gZmFpbHVyZS4gICovCisrCisraW50Cisr ZmR1dGltZW5zIChpbnQgZmQsIGNoYXIgY29uc3QgKmZpbGUsIHN0cnVjdCB0aW1lc3BlYyBjb25z dCB0aW1lc3BlY1syXSkKKyt7CisrICBzdHJ1Y3QgdGltZXNwZWMgYWRqdXN0ZWRfdGltZXNwZWNb Ml07CisrICBzdHJ1Y3QgdGltZXNwZWMgKnRzID0gdGltZXNwZWMgPyBhZGp1c3RlZF90aW1lc3Bl YyA6IE5VTEw7CisrICBpbnQgYWRqdXN0bWVudF9uZWVkZWQgPSAwOworKyAgc3RydWN0IHN0YXQg c3Q7CisrCisrICBpZiAodHMpCisrICAgIHsKKysgICAgICBhZGp1c3RlZF90aW1lc3BlY1swXSA9 IHRpbWVzcGVjWzBdOworKyAgICAgIGFkanVzdGVkX3RpbWVzcGVjWzFdID0gdGltZXNwZWNbMV07 CisrICAgICAgYWRqdXN0bWVudF9uZWVkZWQgPSB2YWxpZGF0ZV90aW1lc3BlYyAodHMpOworKyAg ICB9CisrICBpZiAoYWRqdXN0bWVudF9uZWVkZWQgPCAwKQorKyAgICByZXR1cm4gLTE7CisrCisr ICAvKiBSZXF1aXJlIHRoYXQgYXQgbGVhc3Qgb25lIG9mIEZEIG9yIEZJTEUgYXJlIHBvdGVudGlh bGx5IHZhbGlkLCB0byBhdm9pZAorKyAgICAgYSBMaW51eCBidWcgd2hlcmUgZnV0aW1lbnMgKEFU X0ZEQ1dELCBOVUxMKSBjaGFuZ2VzICIuIiByYXRoZXIKKysgICAgIHRoYW4gZmFpbGluZy4gICov CisrICBpZiAoZmQgPCAwICYmICFmaWxlKQorKyAgICB7CisrICAgICAgZXJybm8gPSBFQkFERjsK KysgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgIC8qIFNvbWUgTGludXgtYmFzZWQgTkZT IGNsaWVudHMgYXJlIGJ1Z2d5LCBhbmQgbWlzaGFuZGxlIHRpbWVzdGFtcHMKKysgICAgIG9mIGZp bGVzIGluIE5GUyBmaWxlIHN5c3RlbXMgaW4gc29tZSBjYXNlcy4gIFdlIGhhdmUgbm8KKysgICAg IGNvbmZpZ3VyZS10aW1lIHRlc3QgZm9yIHRoaXMsIGJ1dCBwbGVhc2Ugc2VlCisrICAgICA8aHR0 cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjY3Mz4gZm9yIHJlZmVyZW5j ZXMgdG8KKysgICAgIHNvbWUgb2YgdGhlIHByb2JsZW1zIHdpdGggTGludXggMi42LjE2LiAgSWYg dGhpcyBhZmZlY3RzIHlvdSwKKysgICAgIGNvbXBpbGUgd2l0aCAtREhBVkVfQlVHR1lfTkZTX1RJ TUVfU1RBTVBTOyB0aGlzIGlzIHJlcG9ydGVkIHRvCisrICAgICBoZWxwIGluIHNvbWUgY2FzZXMs IGFsYmVpdCBhdCBhIGNvc3QgaW4gcGVyZm9ybWFuY2UuICBCdXQgeW91CisrICAgICByZWFsbHkg c2hvdWxkIHVwZ3JhZGUgeW91ciBrZXJuZWwgdG8gYSBmaXhlZCB2ZXJzaW9uLCBzaW5jZSB0aGUK KysgICAgIHByb2JsZW0gYWZmZWN0cyBtYW55IGFwcGxpY2F0aW9ucy4gICovCisrCisrI2lmIEhB VkVfQlVHR1lfTkZTX1RJTUVfU1RBTVBTCisrICBpZiAoZmQgPCAwKQorKyAgICBzeW5jICgpOwor KyAgZWxzZQorKyAgICBmc3luYyAoZmQpOworKyNlbmRpZgorKworKyAgLyogUE9TSVggMjAwOCBh ZGRlZCB0d28gaW50ZXJmYWNlcyB0byBzZXQgZmlsZSB0aW1lc3RhbXBzIHdpdGgKKysgICAgIG5h bm9zZWNvbmQgcmVzb2x1dGlvbjsgbmV3ZXIgTGludXggaW1wbGVtZW50cyBib3RoIGZ1bmN0aW9u cyB2aWEKKysgICAgIGEgc2luZ2xlIHN5c2NhbGwuICBXZSBwcm92aWRlIGEgZmFsbGJhY2sgZm9y IEVOT1NZUyAoZm9yIGV4YW1wbGUsCisrICAgICBjb21waWxpbmcgYWdhaW5zdCBMaW51eCAyLjYu MjUga2VybmVsIGhlYWRlcnMgYW5kIGdsaWJjIDIuNywgYnV0CisrICAgICBydW5uaW5nIG9uIExp bnV4IDIuNi4xOCBrZXJuZWwpLiAgKi8KKysjaWYgSEFWRV9VVElNRU5TQVQgfHwgSEFWRV9GVVRJ TUVOUworKyAgaWYgKDAgPD0gdXRpbWVuc2F0X3dvcmtzX3JlYWxseSkKKysgICAgeworKyAgICAg IGludCByZXN1bHQ7CisrIyBpZiBfX2xpbnV4X18gfHwgX19zdW4KKysgICAgICAvKiBBcyByZWNl bnRseSBhcyBMaW51eCBrZXJuZWwgMi42LjMyIChEZWMgMjAwOSksIHNldmVyYWwgZmlsZQorKyAg ICAgICAgIHN5c3RlbXMgKHhmcywgbnRmcy0zZykgaGF2ZSBidWdzIHdpdGggYSBzaW5nbGUgVVRJ TUVfT01JVCwKKysgICAgICAgICBidXQgd29yayBpZiBib3RoIHRpbWVzIGFyZSBlaXRoZXIgZXhw bGljaXRseSBzcGVjaWZpZWQgb3IKKysgICAgICAgICBVVElNRV9OT1cuICBXb3JrIGFyb3VuZCBp dCB3aXRoIGEgcHJlcGFyYXRvcnkgW2Zdc3RhdCBwcmlvcgorKyAgICAgICAgIHRvIGNhbGxpbmcg ZnV0aW1lbnMvdXRpbWVuc2F0OyBmb3J0dW5hdGVseSwgdGhlcmUgaXMgbm90IG11Y2gKKysgICAg ICAgICB0aW1pbmcgaW1wYWN0IGR1ZSB0byB0aGUgZXh0cmEgc3lzY2FsbCBldmVuIG9uIGZpbGUg c3lzdGVtcworKyAgICAgICAgIHdoZXJlIFVUSU1FX09NSVQgd291bGQgaGF2ZSB3b3JrZWQuCisr CisrICAgICAgICAgVGhlIHNhbWUgYnVnIG9jY3VycyBpbiBTb2xhcmlzIDExLjEgKEFwciAyMDEz KS4KKysKKysgICAgICAgICBGSVhNRTogU2ltcGxpZnkgdGhpcyBmb3IgTGludXggaW4gMjAxNiBh bmQgZm9yIFNvbGFyaXMgaW4KKysgICAgICAgICAyMDI0LCB3aGVuIGZpbGUgc3lzdGVtIGJ1Z3Mg YXJlIG5vIGxvbmdlciBjb21tb24uICAqLworKyAgICAgIGlmIChhZGp1c3RtZW50X25lZWRlZCA9 PSAyKQorKyAgICAgICAgeworKyAgICAgICAgICBpZiAoZmQgPCAwID8gc3RhdCAoZmlsZSwgJnN0 KSA6IGZzdGF0IChmZCwgJnN0KSkKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICAg IGlmICh0c1swXS50dl9uc2VjID09IFVUSU1FX09NSVQpCisrICAgICAgICAgICAgdHNbMF0gPSBn ZXRfc3RhdF9hdGltZSAoJnN0KTsKKysgICAgICAgICAgZWxzZSBpZiAodHNbMV0udHZfbnNlYyA9 PSBVVElNRV9PTUlUKQorKyAgICAgICAgICAgIHRzWzFdID0gZ2V0X3N0YXRfbXRpbWUgKCZzdCk7 CisrICAgICAgICAgIC8qIE5vdGUgdGhhdCBzdCBpcyBnb29kLCBpbiBjYXNlIHV0aW1lbnNhdCBn aXZlcyBFTk9TWVMuICAqLworKyAgICAgICAgICBhZGp1c3RtZW50X25lZWRlZCsrOworKyAgICAg ICAgfQorKyMgZW5kaWYKKysjIGlmIEhBVkVfVVRJTUVOU0FUCisrICAgICAgaWYgKGZkIDwgMCkK KysgICAgICAgIHsKKysjICBpZiBkZWZpbmVkIF9fQVBQTEVfXyAmJiBkZWZpbmVkIF9fTUFDSF9f CisrICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGZpbGUpOworKyAgICAgICAgICBpZiAo bGVuID4gMCAmJiBmaWxlW2xlbiAtIDFdID09ICcvJykKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOworKyAgICAgICAgICAgICAgaWYgKHN0YXQgKGZp bGUsICZzdGF0YnVmKSA8IDApCisrICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAg ICAgICAgIGlmICghU19JU0RJUiAoc3RhdGJ1Zi5zdF9tb2RlKSkKKysgICAgICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICAgIGVycm5vID0gRU5PVERJUjsKKysgICAgICAgICAgICAgICAg ICByZXR1cm4gLTE7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrIyAgZW5k aWYKKysgICAgICAgICAgcmVzdWx0ID0gdXRpbWVuc2F0IChBVF9GRENXRCwgZmlsZSwgdHMsIDAp OworKyMgIGlmZGVmIF9fbGludXhfXworKyAgICAgICAgICAvKiBXb3JrIGFyb3VuZCBhIGtlcm5l bCBidWc6CisrICAgICAgICAgICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1 Zy5jZ2k/aWQ9NDQyMzUyCisrICAgICAgICAgICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9zaG93X2J1Zy5jZ2k/aWQ9NDQ5OTEwCisrICAgICAgICAgICAgIEl0IGFwcGVhcnMgdGhhdCB1 dGltZW5zYXQgY2FuIG1pc3Rha2VubHkgcmV0dXJuIDI4MCByYXRoZXIKKysgICAgICAgICAgICAg dGhhbiAtMSB1cG9uIEVOT1NZUyBmYWlsdXJlLgorKyAgICAgICAgICAgICBGSVhNRTogcmVtb3Zl IGluIDIwMTAgb3Igd2hlbmV2ZXIgdGhlIG9mZmVuZGluZyBrZXJuZWxzCisrICAgICAgICAgICAg IGFyZSBubyBsb25nZXIgaW4gY29tbW9uIHVzZS4gICovCisrICAgICAgICAgIGlmICgwIDwgcmVz dWx0KQorKyAgICAgICAgICAgIGVycm5vID0gRU5PU1lTOworKyMgIGVuZGlmIC8qIF9fbGludXhf XyAqLworKyAgICAgICAgICBpZiAocmVzdWx0ID09IDAgfHwgZXJybm8gIT0gRU5PU1lTKQorKyAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgIHV0aW1lbnNhdF93b3Jrc19yZWFsbHkgPSAxOwor KyAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9 CisrIyBlbmRpZiAvKiBIQVZFX1VUSU1FTlNBVCAqLworKyMgaWYgSEFWRV9GVVRJTUVOUworKyAg ICAgIGlmICgwIDw9IGZkKQorKyAgICAgICAgeworKyAgICAgICAgICByZXN1bHQgPSBmdXRpbWVu cyAoZmQsIHRzKTsKKysjICBpZmRlZiBfX2xpbnV4X18KKysgICAgICAgICAgLyogV29yayBhcm91 bmQgdGhlIHNhbWUgYnVnIGFzIGFib3ZlLiAgKi8KKysgICAgICAgICAgaWYgKDAgPCByZXN1bHQp CisrICAgICAgICAgICAgZXJybm8gPSBFTk9TWVM7CisrIyAgZW5kaWYgLyogX19saW51eF9fICov CisrICAgICAgICAgIGlmIChyZXN1bHQgPT0gMCB8fCBlcnJubyAhPSBFTk9TWVMpCisrICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgdXRpbWVuc2F0X3dvcmtzX3JlYWxseSA9IDE7CisrICAg ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysj IGVuZGlmIC8qIEhBVkVfRlVUSU1FTlMgKi8KKysgICAgfQorKyAgdXRpbWVuc2F0X3dvcmtzX3Jl YWxseSA9IC0xOworKyAgbHV0aW1lbnNhdF93b3Jrc19yZWFsbHkgPSAtMTsKKysjZW5kaWYgLyog SEFWRV9VVElNRU5TQVQgfHwgSEFWRV9GVVRJTUVOUyAqLworKworKyNpZmRlZiBVU0VfU0VURklM RVRJTUUKKysgIC8qIE9uIG5hdGl2ZSBXaW5kb3dzLCB1c2UgU2V0RmlsZVRpbWUoKS4gU2VlCisr ICAgICA8aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL2Fw aS9maWxlYXBpL25mLWZpbGVhcGktc2V0ZmlsZXRpbWU+CisrICAgICA8aHR0cHM6Ly9kb2NzLm1p Y3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9kZXNrdG9wL2FwaS9taW53aW5iYXNlL25zLW1pbndp bmJhc2UtZmlsZXRpbWU+ICAqLworKyAgaWYgKDAgPD0gZmQpCisrICAgIHsKKysgICAgICBIQU5E TEUgaGFuZGxlOworKyAgICAgIEZJTEVUSU1FIGN1cnJlbnRfdGltZTsKKysgICAgICBGSUxFVElN RSBsYXN0X2FjY2Vzc190aW1lOworKyAgICAgIEZJTEVUSU1FIGxhc3Rfd3JpdGVfdGltZTsKKysK KysgICAgICBoYW5kbGUgPSAoSEFORExFKSBfZ2V0X29zZmhhbmRsZSAoZmQpOworKyAgICAgIGlm IChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisrICAgICAgICB7CisrICAgICAgICAg IGVycm5vID0gRUJBREY7CisrICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKysKKysg ICAgICBpZiAodHMgPT0gTlVMTCB8fCB0c1swXS50dl9uc2VjID09IFVUSU1FX05PVyB8fCB0c1sx XS50dl9uc2VjID09IFVUSU1FX05PVykKKysgICAgICAgIHsKKysgICAgICAgICAgLyogR2V0U3lz dGVtVGltZUFzRmlsZVRpbWUKKysgICAgICAgICAgICAgPGh0dHBzOi8vZG9jcy5taWNyb3NvZnQu Y29tL2VuLXVzL3dpbmRvd3MvZGVza3RvcC9hcGkvc3lzaW5mb2FwaS9uZi1zeXNpbmZvYXBpLWdl dHN5c3RlbXRpbWVhc2ZpbGV0aW1lPi4KKysgICAgICAgICAgICAgSXQgd291bGQgYmUgb3Zlcmtp bGwgdG8gdXNlCisrICAgICAgICAgICAgIEdldFN5c3RlbVRpbWVQcmVjaXNlQXNGaWxlVGltZQor KyAgICAgICAgICAgICA8aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy9k ZXNrdG9wL2FwaS9zeXNpbmZvYXBpL25mLXN5c2luZm9hcGktZ2V0c3lzdGVtdGltZXByZWNpc2Vh c2ZpbGV0aW1lPi4gICovCisrICAgICAgICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lICgmY3Vy cmVudF90aW1lKTsKKysgICAgICAgIH0KKysKKysgICAgICBpZiAodHMgPT0gTlVMTCB8fCB0c1sw XS50dl9uc2VjID09IFVUSU1FX05PVykKKysgICAgICAgIHsKKysgICAgICAgICAgbGFzdF9hY2Nl c3NfdGltZSA9IGN1cnJlbnRfdGltZTsKKysgICAgICAgIH0KKysgICAgICBlbHNlIGlmICh0c1sw XS50dl9uc2VjID09IFVUSU1FX09NSVQpCisrICAgICAgICB7CisrICAgICAgICAgIGxhc3RfYWNj ZXNzX3RpbWUuZHdMb3dEYXRlVGltZSA9IDA7CisrICAgICAgICAgIGxhc3RfYWNjZXNzX3RpbWUu ZHdIaWdoRGF0ZVRpbWUgPSAwOworKyAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgIHsK KysgICAgICAgICAgVUxPTkdMT05HIHRpbWVfc2luY2VfMTYwMTAxMDEgPQorKyAgICAgICAgICAg IChVTE9OR0xPTkcpIHRzWzBdLnR2X3NlYyAqIDEwMDAwMDAwICsgdHNbMF0udHZfbnNlYyAvIDEw MCArIDExNjQ0NDczNjAwMDAwMDAwMExMOworKyAgICAgICAgICBsYXN0X2FjY2Vzc190aW1lLmR3 TG93RGF0ZVRpbWUgPSAoRFdPUkQpIHRpbWVfc2luY2VfMTYwMTAxMDE7CisrICAgICAgICAgIGxh c3RfYWNjZXNzX3RpbWUuZHdIaWdoRGF0ZVRpbWUgPSB0aW1lX3NpbmNlXzE2MDEwMTAxID4+IDMy OworKyAgICAgICAgfQorKworKyAgICAgIGlmICh0cyA9PSBOVUxMIHx8IHRzWzFdLnR2X25zZWMg PT0gVVRJTUVfTk9XKQorKyAgICAgICAgeworKyAgICAgICAgICBsYXN0X3dyaXRlX3RpbWUgPSBj dXJyZW50X3RpbWU7CisrICAgICAgICB9CisrICAgICAgZWxzZSBpZiAodHNbMV0udHZfbnNlYyA9 PSBVVElNRV9PTUlUKQorKyAgICAgICAgeworKyAgICAgICAgICBsYXN0X3dyaXRlX3RpbWUuZHdM b3dEYXRlVGltZSA9IDA7CisrICAgICAgICAgIGxhc3Rfd3JpdGVfdGltZS5kd0hpZ2hEYXRlVGlt ZSA9IDA7CisrICAgICAgICB9CisrICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICBV TE9OR0xPTkcgdGltZV9zaW5jZV8xNjAxMDEwMSA9CisrICAgICAgICAgICAgKFVMT05HTE9ORykg dHNbMV0udHZfc2VjICogMTAwMDAwMDAgKyB0c1sxXS50dl9uc2VjIC8gMTAwICsgMTE2NDQ0NzM2 MDAwMDAwMDAwTEw7CisrICAgICAgICAgIGxhc3Rfd3JpdGVfdGltZS5kd0xvd0RhdGVUaW1lID0g KERXT1JEKSB0aW1lX3NpbmNlXzE2MDEwMTAxOworKyAgICAgICAgICBsYXN0X3dyaXRlX3RpbWUu ZHdIaWdoRGF0ZVRpbWUgPSB0aW1lX3NpbmNlXzE2MDEwMTAxID4+IDMyOworKyAgICAgICAgfQor KworKyAgICAgIGlmIChTZXRGaWxlVGltZSAoaGFuZGxlLCBOVUxMLCAmbGFzdF9hY2Nlc3NfdGlt ZSwgJmxhc3Rfd3JpdGVfdGltZSkpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgICBlbHNlCisr ICAgICAgICB7CisrICAgICAgICAgIERXT1JEIHNmdF9lcnJvciA9IEdldExhc3RFcnJvciAoKTsK KysgICAgICAgICAgI2lmIDAKKysgICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiZmR1dGltZW5z IFNldEZpbGVUaW1lIGVycm9yIDB4JXhcbiIsICh1bnNpZ25lZCBpbnQpIHNmdF9lcnJvcik7Cisr ICAgICAgICAgICNlbmRpZgorKyAgICAgICAgICBzd2l0Y2ggKHNmdF9lcnJvcikKKysgICAgICAg ICAgICB7CisrICAgICAgICAgICAgY2FzZSBFUlJPUl9BQ0NFU1NfREVOSUVEOiAvKiBmZCB3YXMg b3BlbmVkIHdpdGhvdXQgT19SRFdSICovCisrICAgICAgICAgICAgICBlcnJubyA9IEVBQ0NFUzsg Lyogbm90IHNwZWNpZmllZCBieSBQT1NJWCAqLworKyAgICAgICAgICAgICAgYnJlYWs7CisrICAg ICAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworKyAgICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICByZXR1cm4gLTE7Cisr ICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKysKKysgIC8qIFRoZSBwbGF0Zm9ybSBsYWNrcyBh biBpbnRlcmZhY2UgdG8gc2V0IGZpbGUgdGltZXN0YW1wcyB3aXRoCisrICAgICBuYW5vc2Vjb25k IHJlc29sdXRpb24sIHNvIGRvIHRoZSBiZXN0IHdlIGNhbiwgZGlzY2FyZGluZyBhbnkKKysgICAg IGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgdGltZXN0YW1wLiAgKi8KKysKKysgIGlmIChhZGp1c3Rt ZW50X25lZWRlZCB8fCAoUkVQTEFDRV9GVU5DX1NUQVRfRklMRSAmJiBmZCA8IDApKQorKyAgICB7 CisrICAgICAgaWYgKGFkanVzdG1lbnRfbmVlZGVkICE9IDMKKysgICAgICAgICAgJiYgKGZkIDwg MCA/IHN0YXQgKGZpbGUsICZzdCkgOiBmc3RhdCAoZmQsICZzdCkpKQorKyAgICAgICAgcmV0dXJu IC0xOworKyAgICAgIGlmICh0cyAmJiB1cGRhdGVfdGltZXNwZWMgKCZzdCwgJnRzKSkKKysgICAg ICAgIHJldHVybiAwOworKyAgICB9CisrCisrICB7CisrI2lmIEhBVkVfRlVUSU1FU0FUIHx8IEhB VkVfV09SS0lOR19VVElNRVMKKysgICAgc3RydWN0IHRpbWV2YWwgdGltZXZhbFsyXTsKKysgICAg c3RydWN0IHRpbWV2YWwgKnQ7CisrICAgIGlmICh0cykKKysgICAgICB7CisrICAgICAgICB0aW1l dmFsWzBdLnR2X3NlYyA9IHRzWzBdLnR2X3NlYzsKKysgICAgICAgIHRpbWV2YWxbMF0udHZfdXNl YyA9IHRzWzBdLnR2X25zZWMgLyAxMDAwOworKyAgICAgICAgdGltZXZhbFsxXS50dl9zZWMgPSB0 c1sxXS50dl9zZWM7CisrICAgICAgICB0aW1ldmFsWzFdLnR2X3VzZWMgPSB0c1sxXS50dl9uc2Vj IC8gMTAwMDsKKysgICAgICAgIHQgPSB0aW1ldmFsOworKyAgICAgIH0KKysgICAgZWxzZQorKyAg ICAgIHQgPSBOVUxMOworKworKyAgICBpZiAoZmQgPCAwKQorKyAgICAgIHsKKysjIGlmIEhBVkVf RlVUSU1FU0FUCisrICAgICAgICByZXR1cm4gZnV0aW1lc2F0IChBVF9GRENXRCwgZmlsZSwgdCk7 CisrIyBlbmRpZgorKyAgICAgIH0KKysgICAgZWxzZQorKyAgICAgIHsKKysgICAgICAgIC8qIElm IGZ1dGltZXNhdCBvciBmdXRpbWVzIGZhaWxzIGhlcmUsIGRvbid0IHRyeSB0byBzcGVlZCB0aGlu Z3MKKysgICAgICAgICAgIHVwIGJ5IHJldHVybmluZyByaWdodCBhd2F5LiAgZ2xpYmMgY2FuIGlu Y29ycmVjdGx5IGZhaWwgd2l0aAorKyAgICAgICAgICAgZXJybm8gPT0gRU5PRU5UIGlmIC9wcm9j IGlzbid0IG1vdW50ZWQuICBBbHNvLCBNYW5kcmFrZSAxMC4wCisrICAgICAgICAgICBpbiBoaWdo IHNlY3VyaXR5IG1vZGUgZG9lc24ndCBhbGxvdyBvcmRpbmFyeSB1c2VycyB0byByZWFkCisrICAg ICAgICAgICAvcHJvYy9zZWxmLCBzbyBnbGliYyBpbmNvcnJlY3RseSBmYWlscyB3aXRoIGVycm5v ID09IEVBQ0NFUy4KKysgICAgICAgICAgIElmIGVycm5vID09IEVJTywgRVBFUk0sIG9yIEVST0ZT LCBpdCdzIHByb2JhYmx5IHNhZmUgdG8gZmFpbAorKyAgICAgICAgICAgcmlnaHQgYXdheSwgYnV0 IHRoZXNlIGNhc2VzIGFyZSByYXJlIGVub3VnaCB0aGF0IHRoZXkncmUgbm90CisrICAgICAgICAg ICB3b3J0aCBvcHRpbWl6aW5nLCBhbmQgd2hvIGtub3dzIHdoYXQgb3RoZXIgbWVzc2VkLXVwIHN5 c3RlbXMKKysgICAgICAgICAgIGFyZSBvdXQgdGhlcmU/ICBTbyBwbGF5IGl0IHNhZmUgYW5kIGZh bGwgYmFjayBvbiB0aGUgY29kZQorKyAgICAgICAgICAgYmVsb3cuICAqLworKworKyMgaWYgKEhB VkVfRlVUSU1FU0FUICYmICFGVVRJTUVTQVRfTlVMTF9CVUcpIHx8IEhBVkVfRlVUSU1FUworKyMg IGlmIEhBVkVfRlVUSU1FU0FUICYmICFGVVRJTUVTQVRfTlVMTF9CVUcKKysjICAgdW5kZWYgZnV0 aW1lcworKyMgICBkZWZpbmUgZnV0aW1lcyhmZCwgdCkgZnV0aW1lc2F0IChmZCwgTlVMTCwgdCkK KysjICBlbmRpZgorKyAgICAgICAgaWYgKGZ1dGltZXMgKGZkLCB0KSA9PSAwKQorKyAgICAgICAg ICB7CisrIyAgaWYgX19saW51eF9fICYmIF9fR0xJQkNfXworKyAgICAgICAgICAgIC8qIFdvcmsg YXJvdW5kIGEgbG9uZ3N0YW5kaW5nIGdsaWJjIGJ1Zywgc3RpbGwgcHJlc2VudCBhcworKyAgICAg ICAgICAgICAgIG9mIDIwMTAtMTItMjcuICBPbiBvbGRlciBMaW51eCBrZXJuZWxzIHRoYXQgbGFj ayBib3RoCisrICAgICAgICAgICAgICAgdXRpbWVuc2F0IGFuZCB1dGltZXMsIGdsaWJjJ3MgZnV0 aW1lcyByb3VuZHMgaW5zdGVhZCBvZgorKyAgICAgICAgICAgICAgIHRydW5jYXRpbmcgd2hlbiBm YWxsaW5nIGJhY2sgb24gdXRpbWUuICBUaGUgc2FtZSBidWcKKysgICAgICAgICAgICAgICBvY2N1 cnMgaW4gZnV0aW1lc2F0IHdpdGggYSBudWxsIDJuZCBhcmcuICAqLworKyAgICAgICAgICAgIGlm ICh0KQorKyAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBib29sIGFiaWcgPSA1MDAw MDAgPD0gdFswXS50dl91c2VjOworKyAgICAgICAgICAgICAgICBib29sIG1iaWcgPSA1MDAwMDAg PD0gdFsxXS50dl91c2VjOworKyAgICAgICAgICAgICAgICBpZiAoKGFiaWcgfCBtYmlnKSAmJiBm c3RhdCAoZmQsICZzdCkgPT0gMCkKKysgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgICAgICAvKiBJZiB0aGVzZSB0d28gc3VidHJhY3Rpb25zIG92ZXJmbG93LCB0aGV5J2xsCisr ICAgICAgICAgICAgICAgICAgICAgICB0cmFjayB0aGUgb3ZlcmZsb3dzIGluc2lkZSB0aGUgYnVn Z3kgZ2xpYmMuICAqLworKyAgICAgICAgICAgICAgICAgICAgdGltZV90IGFkaWZmID0gc3Quc3Rf YXRpbWUgLSB0WzBdLnR2X3NlYzsKKysgICAgICAgICAgICAgICAgICAgIHRpbWVfdCBtZGlmZiA9 IHN0LnN0X210aW1lIC0gdFsxXS50dl9zZWM7CisrCisrICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdGltZXZhbCAqdHQgPSBOVUxMOworKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2 YWwgdHJ1bmNhdGVkX3RpbWV2YWxbMl07CisrICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZWRf dGltZXZhbFswXSA9IHRbMF07CisrICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZWRfdGltZXZh bFsxXSA9IHRbMV07CisrICAgICAgICAgICAgICAgICAgICBpZiAoYWJpZyAmJiBhZGlmZiA9PSAx ICYmIGdldF9zdGF0X2F0aW1lX25zICgmc3QpID09IDApCisrICAgICAgICAgICAgICAgICAgICAg IHsKKysgICAgICAgICAgICAgICAgICAgICAgICB0dCA9IHRydW5jYXRlZF90aW1ldmFsOworKyAg ICAgICAgICAgICAgICAgICAgICAgIHR0WzBdLnR2X3VzZWMgPSAwOworKyAgICAgICAgICAgICAg ICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBpZiAobWJpZyAmJiBtZGlmZiA9PSAxICYm IGdldF9zdGF0X210aW1lX25zICgmc3QpID09IDApCisrICAgICAgICAgICAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgICAgICAgICB0dCA9IHRydW5jYXRlZF90aW1ldmFsOworKyAgICAg ICAgICAgICAgICAgICAgICAgIHR0WzFdLnR2X3VzZWMgPSAwOworKyAgICAgICAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgICAgICAgICBpZiAodHQpCisrICAgICAgICAgICAgICAgICAg ICAgIGZ1dGltZXMgKGZkLCB0dCk7CisrICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgfQorKyMgIGVuZGlmCisrCisrICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgIH0K KysjIGVuZGlmCisrICAgICAgfQorKyNlbmRpZiAvKiBIQVZFX0ZVVElNRVNBVCB8fCBIQVZFX1dP UktJTkdfVVRJTUVTICovCisrCisrICAgIGlmICghZmlsZSkKKysgICAgICB7CisrI2lmICEgKChI QVZFX0ZVVElNRVNBVCAmJiAhRlVUSU1FU0FUX05VTExfQlVHKSAgICAgICAgICBcCisrICAgICAg ICB8fCAoSEFWRV9XT1JLSU5HX1VUSU1FUyAmJiBIQVZFX0ZVVElNRVMpKQorKyAgICAgICAgZXJy bm8gPSBFTk9TWVM7CisrI2VuZGlmCisrICAgICAgICByZXR1cm4gLTE7CisrICAgICAgfQorKwor KyNpZmRlZiBVU0VfU0VURklMRVRJTUUKKysgICAgcmV0dXJuIF9nbF91dGltZW5zX3dpbmRvd3Mg KGZpbGUsIHRzKTsKKysjZWxpZiBIQVZFX1dPUktJTkdfVVRJTUVTCisrICAgIHJldHVybiB1dGlt ZXMgKGZpbGUsIHQpOworKyNlbHNlCisrICAgIHsKKysgICAgICBzdHJ1Y3QgdXRpbWJ1ZiB1dGlt YnVmOworKyAgICAgIHN0cnVjdCB1dGltYnVmICp1dDsKKysgICAgICBpZiAodHMpCisrICAgICAg ICB7CisrICAgICAgICAgIHV0aW1idWYuYWN0aW1lID0gdHNbMF0udHZfc2VjOworKyAgICAgICAg ICB1dGltYnVmLm1vZHRpbWUgPSB0c1sxXS50dl9zZWM7CisrICAgICAgICAgIHV0ID0gJnV0aW1i dWY7CisrICAgICAgICB9CisrICAgICAgZWxzZQorKyAgICAgICAgdXQgPSBOVUxMOworKworKyAg ICAgIHJldHVybiB1dGltZSAoZmlsZSwgdXQpOworKyAgICB9CisrI2VuZGlmIC8qICFIQVZFX1dP UktJTkdfVVRJTUVTICovCisrICB9CisrfQorKworKy8qIFNldCB0aGUgYWNjZXNzIGFuZCBtb2Rp ZmljYXRpb24gdGltZXN0YW1wcyBvZiBGSUxFIHRvIGJlCisrICAgVElNRVNQRUNbMF0gYW5kIFRJ TUVTUEVDWzFdLCByZXNwZWN0aXZlbHkuICAqLworK2ludAorK3V0aW1lbnMgKGNoYXIgY29uc3Qg KmZpbGUsIHN0cnVjdCB0aW1lc3BlYyBjb25zdCB0aW1lc3BlY1syXSkKKyt7CisrICByZXR1cm4g ZmR1dGltZW5zICgtMSwgZmlsZSwgdGltZXNwZWMpOworK30KKysKKysvKiBTZXQgdGhlIGFjY2Vz cyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzdGFtcHMgb2YgRklMRSB0byBiZQorKyAgIFRJTUVTUEVD WzBdIGFuZCBUSU1FU1BFQ1sxXSwgcmVzcGVjdGl2ZWx5LCB3aXRob3V0IGRlcmVmZXJlbmNpbmcK KysgICBzeW1saW5rcy4gIEZhaWwgd2l0aCBFTk9TWVMgaWYgdGhlIHBsYXRmb3JtIGRvZXMgbm90 IHN1cHBvcnQKKysgICBjaGFuZ2luZyBzeW1saW5rIHRpbWVzdGFtcHMsIGJ1dCBGSUxFIHdhcyBh IHN5bWxpbmsuICAqLworK2ludAorK2x1dGltZW5zIChjaGFyIGNvbnN0ICpmaWxlLCBzdHJ1Y3Qg dGltZXNwZWMgY29uc3QgdGltZXNwZWNbMl0pCisreworKyAgc3RydWN0IHRpbWVzcGVjIGFkanVz dGVkX3RpbWVzcGVjWzJdOworKyAgc3RydWN0IHRpbWVzcGVjICp0cyA9IHRpbWVzcGVjID8gYWRq dXN0ZWRfdGltZXNwZWMgOiBOVUxMOworKyAgaW50IGFkanVzdG1lbnRfbmVlZGVkID0gMDsKKysg IHN0cnVjdCBzdGF0IHN0OworKworKyAgaWYgKHRzKQorKyAgICB7CisrICAgICAgYWRqdXN0ZWRf dGltZXNwZWNbMF0gPSB0aW1lc3BlY1swXTsKKysgICAgICBhZGp1c3RlZF90aW1lc3BlY1sxXSA9 IHRpbWVzcGVjWzFdOworKyAgICAgIGFkanVzdG1lbnRfbmVlZGVkID0gdmFsaWRhdGVfdGltZXNw ZWMgKHRzKTsKKysgICAgfQorKyAgaWYgKGFkanVzdG1lbnRfbmVlZGVkIDwgMCkKKysgICAgcmV0 dXJuIC0xOworKworKyAgLyogVGhlIExpbnV4IGtlcm5lbCBkaWQgbm90IHN1cHBvcnQgc3ltbGlu ayB0aW1lc3RhbXBzIHVudGlsCisrICAgICB1dGltZW5zYXQsIGluIHZlcnNpb24gMi42LjIyLCBz byB3ZSBkb24ndCBuZWVkIHRvIG1pbWljCisrICAgICBmZHV0aW1lbnMnIHdvcnJ5IGFib3V0IGJ1 Z2d5IE5GUyBjbGllbnRzLiAgQnV0IHdlIGRvIGhhdmUgdG8KKysgICAgIHdvcnJ5IGFib3V0IGJv Z3VzIHJldHVybiB2YWx1ZXMuICAqLworKworKyNpZiBIQVZFX1VUSU1FTlNBVAorKyAgaWYgKDAg PD0gbHV0aW1lbnNhdF93b3Jrc19yZWFsbHkpCisrICAgIHsKKysgICAgICBpbnQgcmVzdWx0Owor KyMgaWYgX19saW51eF9fIHx8IF9fc3VuCisrICAgICAgLyogQXMgcmVjZW50bHkgYXMgTGludXgg a2VybmVsIDIuNi4zMiAoRGVjIDIwMDkpLCBzZXZlcmFsIGZpbGUKKysgICAgICAgICBzeXN0ZW1z ICh4ZnMsIG50ZnMtM2cpIGhhdmUgYnVncyB3aXRoIGEgc2luZ2xlIFVUSU1FX09NSVQsCisrICAg ICAgICAgYnV0IHdvcmsgaWYgYm90aCB0aW1lcyBhcmUgZWl0aGVyIGV4cGxpY2l0bHkgc3BlY2lm aWVkIG9yCisrICAgICAgICAgVVRJTUVfTk9XLiAgV29yayBhcm91bmQgaXQgd2l0aCBhIHByZXBh cmF0b3J5IGxzdGF0IHByaW9yIHRvCisrICAgICAgICAgY2FsbGluZyB1dGltZW5zYXQ7IGZvcnR1 bmF0ZWx5LCB0aGVyZSBpcyBub3QgbXVjaCB0aW1pbmcKKysgICAgICAgICBpbXBhY3QgZHVlIHRv IHRoZSBleHRyYSBzeXNjYWxsIGV2ZW4gb24gZmlsZSBzeXN0ZW1zIHdoZXJlCisrICAgICAgICAg VVRJTUVfT01JVCB3b3VsZCBoYXZlIHdvcmtlZC4KKysKKysgICAgICAgICBUaGUgc2FtZSBidWcg b2NjdXJzIGluIFNvbGFyaXMgMTEuMSAoQXByIDIwMTMpLgorKworKyAgICAgICAgIEZJWE1FOiBT aW1wbGlmeSB0aGlzIGZvciBMaW51eCBpbiAyMDE2IGFuZCBmb3IgU29sYXJpcyBpbgorKyAgICAg ICAgIDIwMjQsIHdoZW4gZmlsZSBzeXN0ZW0gYnVncyBhcmUgbm8gbG9uZ2VyIGNvbW1vbi4gICov CisrICAgICAgaWYgKGFkanVzdG1lbnRfbmVlZGVkID09IDIpCisrICAgICAgICB7CisrICAgICAg ICAgIGlmIChsc3RhdCAoZmlsZSwgJnN0KSkKKysgICAgICAgICAgICByZXR1cm4gLTE7CisrICAg ICAgICAgIGlmICh0c1swXS50dl9uc2VjID09IFVUSU1FX09NSVQpCisrICAgICAgICAgICAgdHNb MF0gPSBnZXRfc3RhdF9hdGltZSAoJnN0KTsKKysgICAgICAgICAgZWxzZSBpZiAodHNbMV0udHZf bnNlYyA9PSBVVElNRV9PTUlUKQorKyAgICAgICAgICAgIHRzWzFdID0gZ2V0X3N0YXRfbXRpbWUg KCZzdCk7CisrICAgICAgICAgIC8qIE5vdGUgdGhhdCBzdCBpcyBnb29kLCBpbiBjYXNlIHV0aW1l bnNhdCBnaXZlcyBFTk9TWVMuICAqLworKyAgICAgICAgICBhZGp1c3RtZW50X25lZWRlZCsrOwor KyAgICAgICAgfQorKyMgZW5kaWYKKysgICAgICByZXN1bHQgPSB1dGltZW5zYXQgKEFUX0ZEQ1dE LCBmaWxlLCB0cywgQVRfU1lNTElOS19OT0ZPTExPVyk7CisrIyBpZmRlZiBfX2xpbnV4X18KKysg ICAgICAvKiBXb3JrIGFyb3VuZCBhIGtlcm5lbCBidWc6CisrICAgICAgICAgaHR0cHM6Ly9idWd6 aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD00NDIzNTIKKysgICAgICAgICBodHRwczov L2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTQ0OTkxMAorKyAgICAgICAgIEl0 IGFwcGVhcnMgdGhhdCB1dGltZW5zYXQgY2FuIG1pc3Rha2VubHkgcmV0dXJuIDI4MCByYXRoZXIK KysgICAgICAgICB0aGFuIC0xIHVwb24gRU5PU1lTIGZhaWx1cmUuCisrICAgICAgICAgRklYTUU6 IHJlbW92ZSBpbiAyMDEwIG9yIHdoZW5ldmVyIHRoZSBvZmZlbmRpbmcga2VybmVscworKyAgICAg ICAgIGFyZSBubyBsb25nZXIgaW4gY29tbW9uIHVzZS4gICovCisrICAgICAgaWYgKDAgPCByZXN1 bHQpCisrICAgICAgICBlcnJubyA9IEVOT1NZUzsKKysjIGVuZGlmCisrICAgICAgaWYgKHJlc3Vs dCA9PSAwIHx8IGVycm5vICE9IEVOT1NZUykKKysgICAgICAgIHsKKysgICAgICAgICAgdXRpbWVu c2F0X3dvcmtzX3JlYWxseSA9IDE7CisrICAgICAgICAgIGx1dGltZW5zYXRfd29ya3NfcmVhbGx5 ID0gMTsKKysgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKysgICAgICAgIH0KKysgICAgfQorKyAg bHV0aW1lbnNhdF93b3Jrc19yZWFsbHkgPSAtMTsKKysjZW5kaWYgLyogSEFWRV9VVElNRU5TQVQg Ki8KKysKKysgIC8qIFRoZSBwbGF0Zm9ybSBsYWNrcyBhbiBpbnRlcmZhY2UgdG8gc2V0IGZpbGUg dGltZXN0YW1wcyB3aXRoCisrICAgICBuYW5vc2Vjb25kIHJlc29sdXRpb24sIHNvIGRvIHRoZSBi ZXN0IHdlIGNhbiwgZGlzY2FyZGluZyBhbnkKKysgICAgIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUg dGltZXN0YW1wLiAgKi8KKysKKysgIGlmIChhZGp1c3RtZW50X25lZWRlZCB8fCBSRVBMQUNFX0ZV TkNfU1RBVF9GSUxFKQorKyAgICB7CisrICAgICAgaWYgKGFkanVzdG1lbnRfbmVlZGVkICE9IDMg JiYgbHN0YXQgKGZpbGUsICZzdCkpCisrICAgICAgICByZXR1cm4gLTE7CisrICAgICAgaWYgKHRz ICYmIHVwZGF0ZV90aW1lc3BlYyAoJnN0LCAmdHMpKQorKyAgICAgICAgcmV0dXJuIDA7CisrICAg IH0KKysKKysgIC8qIE9uIExpbnV4LCBsdXRpbWVzIGlzIGEgdGhpbiB3cmFwcGVyIGFyb3VuZCB1 dGltZW5zYXQsIHNvIHRoZXJlIGlzCisrICAgICBubyBwb2ludCB0cnlpbmcgbHV0aW1lcyBpZiB1 dGltZW5zYXQgZmFpbGVkIHdpdGggRU5PU1lTLiAgKi8KKysjaWYgSEFWRV9MVVRJTUVTICYmICFI QVZFX1VUSU1FTlNBVAorKyAgeworKyAgICBzdHJ1Y3QgdGltZXZhbCB0aW1ldmFsWzJdOworKyAg ICBzdHJ1Y3QgdGltZXZhbCAqdDsKKysgICAgaW50IHJlc3VsdDsKKysgICAgaWYgKHRzKQorKyAg ICAgIHsKKysgICAgICAgIHRpbWV2YWxbMF0udHZfc2VjID0gdHNbMF0udHZfc2VjOworKyAgICAg ICAgdGltZXZhbFswXS50dl91c2VjID0gdHNbMF0udHZfbnNlYyAvIDEwMDA7CisrICAgICAgICB0 aW1ldmFsWzFdLnR2X3NlYyA9IHRzWzFdLnR2X3NlYzsKKysgICAgICAgIHRpbWV2YWxbMV0udHZf dXNlYyA9IHRzWzFdLnR2X25zZWMgLyAxMDAwOworKyAgICAgICAgdCA9IHRpbWV2YWw7CisrICAg ICAgfQorKyAgICBlbHNlCisrICAgICAgdCA9IE5VTEw7CisrCisrICAgIHJlc3VsdCA9IGx1dGlt ZXMgKGZpbGUsIHQpOworKyAgICBpZiAocmVzdWx0ID09IDAgfHwgZXJybm8gIT0gRU5PU1lTKQor KyAgICAgIHJldHVybiByZXN1bHQ7CisrICB9CisrI2VuZGlmIC8qIEhBVkVfTFVUSU1FUyAmJiAh SEFWRV9VVElNRU5TQVQgKi8KKysKKysgIC8qIE91dCBvZiBsdWNrIGZvciBzeW1saW5rcywgYnV0 IHdlIHN0aWxsIGhhbmRsZSByZWd1bGFyIGZpbGVzLiAgKi8KKysgIGlmICghKGFkanVzdG1lbnRf bmVlZGVkIHx8IFJFUExBQ0VfRlVOQ19TVEFUX0ZJTEUpICYmIGxzdGF0IChmaWxlLCAmc3QpKQor KyAgICByZXR1cm4gLTE7CisrICBpZiAoIVNfSVNMTksgKHN0LnN0X21vZGUpKQorKyAgICByZXR1 cm4gZmR1dGltZW5zICgtMSwgZmlsZSwgdHMpOworKyAgZXJybm8gPSBFTk9TWVM7CisrICByZXR1 cm4gLTE7CisrfQorZGlmZiAtLWdpdCBhL2xpYi91dGltZW5zLmggYi9saWIvdXRpbWVucy5oCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjk1ZDNkNworLS0tIC9kZXYvbnVs bAorKysrIGIvbGliL3V0aW1lbnMuaAorQEAgLTAsMCArMSw0OSBAQAorKy8qIFNldCBmaWxlIGFj Y2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzLgorKworKyAgIENvcHlyaWdodCAyMDEyLTIwMjEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysg ICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIGFueQorKyAgIGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisrCisrLyogV3JpdHRlbiBieSBQYXVsIEVnZ2VydC4gICovCisrCisrI2luY2x1ZGUgPHRp bWUuaD4KKytpbnQgZmR1dGltZW5zIChpbnQsIGNoYXIgY29uc3QgKiwgc3RydWN0IHRpbWVzcGVj IGNvbnN0IFsyXSk7CisraW50IHV0aW1lbnMgKGNoYXIgY29uc3QgKiwgc3RydWN0IHRpbWVzcGVj IGNvbnN0IFsyXSk7CisraW50IGx1dGltZW5zIChjaGFyIGNvbnN0ICosIHN0cnVjdCB0aW1lc3Bl YyBjb25zdCBbMl0pOworKworKyNpZiBHTlVMSUJfRkRVVElNRU5TQVQKKysjIGluY2x1ZGUgPGZj bnRsLmg+CisrIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorKworKyNpZm5kZWYgX0dMX0lOTElORV9I RUFERVJfQkVHSU4KKysgI2Vycm9yICJQbGVhc2UgaW5jbHVkZSBjb25maWcuaCBmaXJzdC4iCisr I2VuZGlmCisrX0dMX0lOTElORV9IRUFERVJfQkVHSU4KKysjaWZuZGVmIF9HTF9VVElNRU5TX0lO TElORQorKyMgZGVmaW5lIF9HTF9VVElNRU5TX0lOTElORSBfR0xfSU5MSU5FCisrI2VuZGlmCisr CisraW50IGZkdXRpbWVuc2F0IChpbnQgZmQsIGludCBkaXIsIGNoYXIgY29uc3QgKm5hbWUsIHN0 cnVjdCB0aW1lc3BlYyBjb25zdCBbMl0sCisrICAgICAgICAgICAgICAgICBpbnQgYXRmbGFnKTsK KysKKysvKiBVc2luZyB0aGlzIGZ1bmN0aW9uIG1ha2VzIGFwcGxpY2F0aW9uIGNvZGUgc2xpZ2h0 bHkgbW9yZSByZWFkYWJsZS4gICovCisrX0dMX1VUSU1FTlNfSU5MSU5FIGludAorK2x1dGltZW5z YXQgKGludCBkaXIsIGNoYXIgY29uc3QgKmZpbGUsIHN0cnVjdCB0aW1lc3BlYyBjb25zdCB0aW1l c1syXSkKKyt7CisrICByZXR1cm4gdXRpbWVuc2F0IChkaXIsIGZpbGUsIHRpbWVzLCBBVF9TWU1M SU5LX05PRk9MTE9XKTsKKyt9CisrCisrX0dMX0lOTElORV9IRUFERVJfRU5ECisrCisrI2VuZGlm CitkaWZmIC0tZ2l0IGEvbTQvdXRpbWVucy5tNCBiL200L3V0aW1lbnMubTQKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yZWU0ZWY5CistLS0gL2Rldi9udWxsCisrKysgYi9t NC91dGltZW5zLm00CitAQCAtMCwwICsxLDUyIEBACisrZG5sIENvcHlyaWdodCAoQykgMjAwMy0y MDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK2RubCBUaGlzIGZpbGUgaXMgZnJl ZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorK2RubCBnaXZlcyB1bmxp bWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorK2RubCB3aXRo IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVz ZXJ2ZWQuCisrCisrZG5sIHNlcmlhbCAxMQorKworK0FDX0RFRlVOKFtnbF9VVElNRU5TXSwKKytb CisrICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBsaWIvdXRpbWVucy5jLgorKyAgQUNfUkVRVUlSRShb Z2xfRlVOQ19VVElNRVNdKQorKyAgQUNfUkVRVUlSRShbZ2xfQ0hFQ0tfVFlQRV9TVFJVQ1RfVElN RVNQRUNdKQorKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKSBkbmwgZm9yIGNyb3Nz LWNvbXBpbGVzCisrICBBQ19DSEVDS19GVU5DU19PTkNFKFtmdXRpbWVzIGZ1dGltZXNhdCBmdXRp bWVucyB1dGltZW5zYXQgbHV0aW1lc10pCisrCisrICBpZiB0ZXN0ICRhY19jdl9mdW5jX2Z1dGlt ZW5zID0gbm8gJiYgdGVzdCAkYWNfY3ZfZnVuY19mdXRpbWVzYXQgPSB5ZXM7IHRoZW4KKysgICAg ZG5sIEZyZWVCU0QgOC4wLXJjMiBtaXNoYW5kbGVzIGZ1dGltZXNhdChmZCxOVUxMLHRpbWUpLiAg SXQgaXMgbm90CisrICAgIGRubCBzdGFuZGFyZGl6ZWQsIGJ1dCBTb2xhcmlzIGltcGxlbWVudGVk IGl0IGZpcnN0IGFuZCB1c2VzIGl0IGFzCisrICAgIGRubCBpdHMgb25seSBtZWFucyB0byBzZXQg ZmQgdGltZS4KKysgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgZnV0aW1lc2F0IGhhbmRsZXMg TlVMTCBmaWxlXSwKKysgICAgICBbZ2xfY3ZfZnVuY19mdXRpbWVzYXRfd29ya3NdLAorKyAgICAg IFt0b3VjaCBjb25mdGVzdC5maWxlCisrICAgICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfUFJP R1JBTShbWworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysjaW5jbHVkZSA8c3lzL3RpbWVzLmg+Cisr I2luY2x1ZGUgPGZjbnRsLmg+CisrXUdMX01EQV9ERUZJTkVTXSwKKysgICAgICAgIFtbaW50IGZk ID0gb3BlbiAoImNvbmZ0ZXN0LmZpbGUiLCBPX1JEV1IpOworKyAgICAgICAgICBpZiAoZmQgPCAw KSByZXR1cm4gMTsKKysgICAgICAgICAgaWYgKGZ1dGltZXNhdCAoZmQsIE5VTEwsIE5VTEwpKSBy ZXR1cm4gMjsKKysgICAgICAgIF1dKV0sCisrICAgICAgICBbZ2xfY3ZfZnVuY19mdXRpbWVzYXRf d29ya3M9eWVzXSwKKysgICAgICAgIFtnbF9jdl9mdW5jX2Z1dGltZXNhdF93b3Jrcz1ub10sCisr ICAgICAgICBbY2FzZSAiJGhvc3Rfb3MiIGluCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgR3Vlc3MgeWVzIG9uIExpbnV4IHN5c3RlbXMuCisrICAgICAgICAgICBsaW51eC0qIHwgbGlu dXgpIGdsX2N2X2Z1bmNfZnV0aW1lc2F0X3dvcmtzPSJndWVzc2luZyB5ZXMiIDs7CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIGdsaWJjIHN5c3RlbXMuCisrICAg ICAgICAgICAqLWdudSopICAgICAgICAgIGdsX2N2X2Z1bmNfZnV0aW1lc2F0X3dvcmtzPSJndWVz c2luZyB5ZXMiIDs7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qg a25vdywgb2JleSAtLWVuYWJsZS1jcm9zcy1ndWVzc2VzLgorKyAgICAgICAgICAgKikgICAgICAg ICAgICAgICBnbF9jdl9mdW5jX2Z1dGltZXNhdF93b3Jrcz0iJGdsX2Nyb3NzX2d1ZXNzX25vcm1h bCIgOzsKKysgICAgICAgICBlc2FjCisrICAgICAgICBdKQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0 LmZpbGVdKQorKyAgICBjYXNlICIkZ2xfY3ZfZnVuY19mdXRpbWVzYXRfd29ya3MiIGluCisrICAg ICAgKnllcykgOzsKKysgICAgICAqKQorKyAgICAgICAgQUNfREVGSU5FKFtGVVRJTUVTQVRfTlVM TF9CVUddLCBbMV0sCisrICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiBmdXRpbWVzYXQgbWlzaGFu ZGxlcyBhIE5VTEwgZmlsZSBuYW1lLl0pCisrICAgICAgICA7OworKyAgICBlc2FjCisrICBmaQor K10pCitkaWZmIC0tZ2l0IGEvbTQvdXRpbWVzLm00IGIvbTQvdXRpbWVzLm00CituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMDQ0MGU3OAorLS0tIC9kZXYvbnVsbAorKysrIGIv bTQvdXRpbWVzLm00CitAQCAtMCwwICsxLDE2MSBAQAorKyMgRGV0ZWN0IHNvbWUgYnVncyBpbiBn bGliYydzIGltcGxlbWVudGF0aW9uIG9mIHV0aW1lcy4KKysjIHNlcmlhbCA4CisrCisrZG5sIENv cHlyaWdodCAoQykgMjAwMy0yMDA1LCAyMDA5LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uCisrZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5k L29yIGRpc3RyaWJ1dGUgaXQsCisrZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBh cyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKysKKysjIFNlZSBpZiB3ZSBuZWVk IHRvIHdvcmsgYXJvdW5kIGJ1Z3MgaW4gZ2xpYmMncyBpbXBsZW1lbnRhdGlvbiBvZgorKyMgdXRp bWVzIGZyb20gMjAwMy0wNy0xMiB0byAyMDAzLTA5LTE3LgorKyMgRmlyc3QsIHRoZXJlIHdhcyBh IGJ1ZyB0aGF0IHdvdWxkIG1ha2UgdXRpbWVzIHNldCBtdGltZQorKyMgYW5kIGF0aW1lIHRvIHpl cm8gKDE5NzAtMDEtMDEpIHVuY29uZGl0aW9uYWxseS4KKysjIFRoZW4sIHRoZXJlIHdhcyBjb2Rl IHRvIHJvdW5kIHJhdGhlciB0aGFuIHRydW5jYXRlLgorKyMgVGhlbiwgdGhlcmUgd2FzIGFuIGlt cGxlbWVudGF0aW9uIChzcGFyYzY0LCBMaW51eC0yLjQuMjgsIGdsaWJjLTIuMy4zKQorKyMgdGhh dCBkaWRuJ3QgaG9ub3IgdGhlIE5VTEwtbWVhbnMtc2V0LXRvLWN1cnJlbnQtdGltZSBzZW1hbnRp Y3MuCisrIyBGaW5hbGx5LCB0aGVyZSB3YXMgYWxzbyBhIHZlcnNpb24gb2YgdXRpbWVzIHRoYXQg ZmFpbGVkIG9uIHJlYWQtb25seQorKyMgZmlsZXMsIHdoaWxlIHV0aW1lIHdvcmtlZCBmaW5lIChs aW51eC0yLjIuMjAsIGdsaWJjLTIuMi41KS4KKysjCisrIyBGcm9tIEppbSBNZXllcmluZywgd2l0 aCBzdWdnZXN0aW9ucyBmcm9tIFBhdWwgRWdnZXJ0LgorKworK0FDX0RFRlVOKFtnbF9GVU5DX1VU SU1FU10sCisrWworKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKSBkbmwgZm9yIGNy b3NzLWNvbXBpbGVzCisrICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgdXRpbWVzIGZ1bmN0 aW9uIHdvcmtzXSwKKysgICAgICAgICAgICAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVz XSwKKysgICAgW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisrI2luY2x1ZGUgPHN5 cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxmY250bC5oPgor KyNpbmNsdWRlIDxzeXMvdGltZS5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisrI2luY2x1ZGUgPHVu aXN0ZC5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5j bHVkZSA8dXRpbWUuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKytdR0xfTURBX0RFRklORVNbCisr Cisrc3RhdGljIGludAorK2lub3JkZXIgKHRpbWVfdCBhLCB0aW1lX3QgYiwgdGltZV90IGMpCisr eworKyAgcmV0dXJuIGEgPD0gYiAmJiBiIDw9IGM7CisrfQorKworK2ludAorK21haW4gKCkKKyt7 CisrICBpbnQgcmVzdWx0ID0gMDsKKysgIGNoYXIgY29uc3QgKmZpbGUgPSAiY29uZnRlc3QudXRp bWVzIjsKKysgIC8qIE9uIE9TLzIsIGZpbGUgdGltZXN0YW1wcyBtdXN0IGJlIG9uIG9yIGFmdGVy IDE5ODAgaW4gbG9jYWwgdGltZSwKKysgICAgIHdpdGggYW4gZXZlbiBudW1iZXIgb2Ygc2Vjb25k cy4gICovCisrICBzdGF0aWMgc3RydWN0IHRpbWV2YWwgdGltZXZhbFsyXSA9IHt7MzE1NjIwMDAw ICsgMTAsIDEwfSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHszMTU2 MjAwMDAgKyAxMDAwMDAwLCA5OTk5OTh9fTsKKysKKysgIC8qIFRlc3Qgd2hldGhlciB1dGltZXMo KSBlc3NlbnRpYWxseSB3b3Jrcy4gICovCisrICB7CisrICAgIHN0cnVjdCBzdGF0IHNidWY7Cisr ICAgIEZJTEUgKmYgPSBmb3BlbiAoZmlsZSwgInciKTsKKysgICAgaWYgKGYgPT0gTlVMTCkKKysg ICAgICByZXN1bHQgfD0gMTsKKysgICAgZWxzZSBpZiAoZmNsb3NlIChmKSAhPSAwKQorKyAgICAg IHJlc3VsdCB8PSAxOworKyAgICBlbHNlIGlmICh1dGltZXMgKGZpbGUsIHRpbWV2YWwpICE9IDAp CisrICAgICAgcmVzdWx0IHw9IDI7CisrICAgIGVsc2UgaWYgKGxzdGF0IChmaWxlLCAmc2J1Zikg IT0gMCkKKysgICAgICByZXN1bHQgfD0gMTsKKysgICAgZWxzZSBpZiAoIShzYnVmLnN0X2F0aW1l ID09IHRpbWV2YWxbMF0udHZfc2VjCisrICAgICAgICAgICAgICAgJiYgc2J1Zi5zdF9tdGltZSA9 PSB0aW1ldmFsWzFdLnR2X3NlYykpCisrICAgICAgcmVzdWx0IHw9IDQ7CisrICAgIGlmICh1bmxp bmsgKGZpbGUpICE9IDApCisrICAgICAgcmVzdWx0IHw9IDE7CisrICB9CisrCisrICAvKiBUZXN0 IHdoZXRoZXIgdXRpbWVzKCkgd2l0aCBhIE5VTEwgYXJndW1lbnQgc2V0cyB0aGUgZmlsZSdzIHRp bWVzdGFtcAorKyAgICAgdG8gdGhlIGN1cnJlbnQgdGltZS4gIFVzZSAnZnN0YXQnIGFzIHdlbGwg YXMgJ3RpbWUnIHRvCisrICAgICBkZXRlcm1pbmUgdGhlICJjdXJyZW50IiB0aW1lLCB0byBhY2Nv bW1vZGF0ZSBORlMgZmlsZSBzeXN0ZW1zCisrICAgICBpZiB0aGVyZSBpcyBhIHRpbWUgc2tldyBi ZXR3ZWVuIHRoZSBob3N0IGFuZCB0aGUgTkZTIHNlcnZlci4gICovCisrICB7CisrICAgIGludCBm ZCA9IG9wZW4gKGZpbGUsIE9fV1JPTkxZfE9fQ1JFQVQsIDA2NDQpOworKyAgICBpZiAoZmQgPCAw KQorKyAgICAgIHJlc3VsdCB8PSAxOworKyAgICBlbHNlCisrICAgICAgeworKyAgICAgICAgdGlt ZV90IHQwLCB0MjsKKysgICAgICAgIHN0cnVjdCBzdGF0IHN0MCwgc3QxLCBzdDI7CisrICAgICAg ICBpZiAodGltZSAoJnQwKSA9PSAodGltZV90KSAtMSkKKysgICAgICAgICAgcmVzdWx0IHw9IDE7 CisrICAgICAgICBlbHNlIGlmIChmc3RhdCAoZmQsICZzdDApICE9IDApCisrICAgICAgICAgIHJl c3VsdCB8PSAxOworKyAgICAgICAgZWxzZSBpZiAodXRpbWVzIChmaWxlLCB0aW1ldmFsKSAhPSAw CisrICAgICAgICAgICAgICAgICAmJiAoZXJybm8gIT0gRUFDQ0VTCisrICAgICAgICAgICAgICAg ICAgICAgLyogT1MvMiBrTElCQyB1dGltZXMgZmFpbHMgb24gb3BlbmVkIGZpbGVzLiAgKi8KKysg ICAgICAgICAgICAgICAgICAgICB8fCBjbG9zZSAoZmQpICE9IDAKKysgICAgICAgICAgICAgICAg ICAgICB8fCB1dGltZXMgKGZpbGUsIHRpbWV2YWwpICE9IDAKKysgICAgICAgICAgICAgICAgICAg ICB8fCAoZmQgPSBvcGVuIChmaWxlLCBPX1dST05MWSkpIDwgMCkpCisrICAgICAgICAgIHJlc3Vs dCB8PSAyOworKyAgICAgICAgZWxzZSBpZiAodXRpbWVzIChmaWxlLCBOVUxMKSAhPSAwCisrICAg ICAgICAgICAgICAgICAmJiAoZXJybm8gIT0gRUFDQ0VTCisrICAgICAgICAgICAgICAgICAgICAg LyogT1MvMiBrTElCQyB1dGltZXMgZmFpbHMgb24gb3BlbmVkIGZpbGVzLiAgKi8KKysgICAgICAg ICAgICAgICAgICAgICB8fCBjbG9zZSAoZmQpICE9IDAKKysgICAgICAgICAgICAgICAgICAgICB8 fCB1dGltZXMgKGZpbGUsIE5VTEwpICE9IDAKKysgICAgICAgICAgICAgICAgICAgICB8fCAoZmQg PSBvcGVuIChmaWxlLCBPX1dST05MWSkpIDwgMCkpCisrICAgICAgICAgIHJlc3VsdCB8PSA4Owor KyAgICAgICAgZWxzZSBpZiAoZnN0YXQgKGZkLCAmc3QxKSAhPSAwKQorKyAgICAgICAgICByZXN1 bHQgfD0gMTsKKysgICAgICAgIGVsc2UgaWYgKHdyaXRlIChmZCwgIlxuIiwgMSkgIT0gMSkKKysg ICAgICAgICAgcmVzdWx0IHw9IDE7CisrICAgICAgICBlbHNlIGlmIChmc3RhdCAoZmQsICZzdDIp ICE9IDApCisrICAgICAgICAgIHJlc3VsdCB8PSAxOworKyAgICAgICAgZWxzZSBpZiAodGltZSAo JnQyKSA9PSAodGltZV90KSAtMSkKKysgICAgICAgICAgcmVzdWx0IHw9IDE7CisrICAgICAgICBl bHNlCisrICAgICAgICAgIHsKKysgICAgICAgICAgICBpbnQgbV9va19QT1NJWCA9IGlub3JkZXIg KHQwLCBzdDEuc3RfbXRpbWUsIHQyKTsKKysgICAgICAgICAgICBpbnQgbV9va19ORlMgPSBpbm9y ZGVyIChzdDAuc3RfbXRpbWUsIHN0MS5zdF9tdGltZSwgc3QyLnN0X210aW1lKTsKKysgICAgICAg ICAgICBpZiAoISAoc3QxLnN0X2F0aW1lID09IHN0MS5zdF9tdGltZSkpCisrICAgICAgICAgICAg ICByZXN1bHQgfD0gMTY7CisrICAgICAgICAgICAgaWYgKCEgKG1fb2tfUE9TSVggfHwgbV9va19O RlMpKQorKyAgICAgICAgICAgICAgcmVzdWx0IHw9IDMyOworKyAgICAgICAgICB9CisrICAgICAg ICBpZiAoY2xvc2UgKGZkKSAhPSAwKQorKyAgICAgICAgICByZXN1bHQgfD0gMTsKKysgICAgICB9 CisrICAgIGlmICh1bmxpbmsgKGZpbGUpICE9IDApCisrICAgICAgcmVzdWx0IHw9IDE7CisrICB9 CisrCisrICAvKiBUZXN0IHdoZXRoZXIgdXRpbWVzKCkgd2l0aCBhIE5VTEwgYXJndW1lbnQgd29y a3Mgb24gcmVhZC1vbmx5IGZpbGVzLiAgKi8KKysgIHsKKysgICAgaW50IGZkID0gb3BlbiAoZmls ZSwgT19XUk9OTFl8T19DUkVBVCwgMDQ0NCk7CisrICAgIGlmIChmZCA8IDApCisrICAgICAgcmVz dWx0IHw9IDE7CisrICAgIGVsc2UgaWYgKGNsb3NlIChmZCkgIT0gMCkKKysgICAgICByZXN1bHQg fD0gMTsKKysgICAgZWxzZSBpZiAodXRpbWVzIChmaWxlLCBOVUxMKSAhPSAwKQorKyAgICAgIHJl c3VsdCB8PSA2NDsKKysgICAgaWYgKHVubGluayAoZmlsZSkgIT0gMCkKKysgICAgICByZXN1bHQg fD0gMTsKKysgIH0KKysKKysgIHJldHVybiByZXN1bHQ7CisrfQorKyAgXV0pXSwKKysgICAgICAg W2dsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9eWVzXSwKKysgICAgICAgW2dsX2N2X2Z1bmNfd29y a2luZ191dGltZXM9bm9dLAorKyAgICAgICBbY2FzZSAiJGhvc3Rfb3MiIGluCisrICAgICAgICAg ICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIG11c2wgc3lzdGVtcy4KKysgICAgICAgICAgKi1tdXNs KikgZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcz0iZ3Vlc3NpbmcgeWVzIiA7OworKyAgICAgICAg ICAgICAgICAgICAjIEd1ZXNzIG5vIG9uIG5hdGl2ZSBXaW5kb3dzLgorKyAgICAgICAgICBtaW5n dyopICBnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPSJndWVzc2luZyBubyIgOzsKKysgICAgICAg ICAgKikgICAgICAgZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcz0iJGdsX2Nyb3NzX2d1ZXNzX25v cm1hbCIgOzsKKysgICAgICAgIGVzYWMKKysgICAgICAgXSkKKysgICAgXSkKKysKKysgIGNhc2Ug IiRnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzIiBpbgorKyAgICAqeWVzKQorKyAgICAgIEFDX0RF RklORShbSEFWRV9XT1JLSU5HX1VUSU1FU10sIFsxXSwgW0RlZmluZSBpZiB1dGltZXMgd29ya3Mg cHJvcGVybHkuXSkKKysgICAgICA7OworKyAgZXNhYworK10pCitkaWZmIC0tZ2l0IGEvbGliL2Jp bmFyeS1pby5jIGIvbGliL2JpbmFyeS1pby5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uZjI2Nzg5NworLS0tIC9kZXYvbnVsbAorKysrIGIvbGliL2JpbmFyeS1pby5jCitA QCAtMCwwICsxLDM5IEBACisrLyogQmluYXJ5IG1vZGUgSS9PLgorKyAgIENvcHlyaWdodCAyMDE3 LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8Y29uZmlnLmg+CisrCisr I2RlZmluZSBCSU5BUllfSU9fSU5MSU5FIF9HTF9FWFRFUk5fSU5MSU5FCisrI2luY2x1ZGUgImJp bmFyeS1pby5oIgorKworKyNpZiBkZWZpbmVkIF9fREpHUFBfXyB8fCBkZWZpbmVkIF9fRU1YX18K KysjIGluY2x1ZGUgPHVuaXN0ZC5oPgorKworK2ludAorK3NldF9iaW5hcnlfbW9kZSAoaW50IGZk LCBpbnQgbW9kZSkKKyt7CisrICBpZiAoaXNhdHR5IChmZCkpCisrICAgIC8qIElmIEZEIHJlZmVy cyB0byBhIGNvbnNvbGUgKG5vdCBhIHBpcGUsIG5vdCBhIHJlZ3VsYXIgZmlsZSksCisrICAgICAg IE9fVEVYVCBpcyB0aGUgb25seSByZWFzb25hYmxlIG1vZGUsIGJvdGggb24gaW5wdXQgYW5kIG9u IG91dHB1dC4KKysgICAgICAgU2lsZW50bHkgaWdub3JlIHRoZSByZXF1ZXN0LiAgSWYgd2Ugd2Vy ZSB0byByZXR1cm4gLTEgaGVyZSwKKysgICAgICAgYWxsIHByb2dyYW1zIHRoYXQgdXNlIHhzZXRf YmluYXJ5X21vZGUgd291bGQgZmFpbCB3aGVuIHJ1bgorKyAgICAgICB3aXRoIGNvbnNvbGUgaW5w dXQgb3IgY29uc29sZSBvdXRwdXQuICAqLworKyAgICByZXR1cm4gT19URVhUOworKyAgZWxzZQor KyAgICByZXR1cm4gX19nbF9zZXRtb2RlIChmZCwgbW9kZSk7CisrfQorKworKyNlbmRpZgorZGlm ZiAtLWdpdCBhL2xpYi9iaW5hcnktaW8uaCBiL2xpYi9iaW5hcnktaW8uaAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjg2NTRmZDIKKy0tLSAvZGV2L251bGwKKysrKyBiL2xp Yi9iaW5hcnktaW8uaAorQEAgLTAsMCArMSw3NyBAQAorKy8qIEJpbmFyeSBtb2RlIEkvTy4KKysg ICBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMDgtMjAyMSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKwor KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLworKworKyNpZm5kZWYgX0JJTkFSWV9ICisrI2RlZmluZSBfQklOQVJZX0gKKysKKysv KiBGb3Igc3lzdGVtcyB0aGF0IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGV4dCBhbmQgYmluYXJ5IEkv Ty4KKysgICBPX0JJTkFSWSBpcyBndWFyYW50ZWVkIGJ5IHRoZSBnbnVsaWIgPGZjbnRsLmg+LiAq LworKyNpbmNsdWRlIDxmY250bC5oPgorKworKy8qIFRoZSBNU1ZDNyA8c3RkaW8uaD4gZG9lc24n dCBsaWtlIHRvIGJlIGluY2x1ZGVkIGFmdGVyICcjZGVmaW5lIGZpbGVubyAuLi4nLAorKyAgIHNv IHdlIGluY2x1ZGUgaXQgaGVyZSBmaXJzdC4gICovCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisr I2lmbmRlZiBfR0xfSU5MSU5FX0hFQURFUl9CRUdJTgorKyAjZXJyb3IgIlBsZWFzZSBpbmNsdWRl IGNvbmZpZy5oIGZpcnN0LiIKKysjZW5kaWYKKytfR0xfSU5MSU5FX0hFQURFUl9CRUdJTgorKyNp Zm5kZWYgQklOQVJZX0lPX0lOTElORQorKyMgZGVmaW5lIEJJTkFSWV9JT19JTkxJTkUgX0dMX0lO TElORQorKyNlbmRpZgorKworKyNpZiBPX0JJTkFSWQorKyMgaWYgZGVmaW5lZCBfX0VNWF9fIHx8 IGRlZmluZWQgX19ESkdQUF9fIHx8IGRlZmluZWQgX19DWUdXSU5fXworKyMgIGluY2x1ZGUgPGlv Lmg+IC8qIGRlY2xhcmVzIHNldG1vZGUoKSAqLworKyMgIGRlZmluZSBfX2dsX3NldG1vZGUgc2V0 bW9kZQorKyMgZWxzZQorKyMgIGRlZmluZSBfX2dsX3NldG1vZGUgX3NldG1vZGUKKysjICB1bmRl ZiBmaWxlbm8KKysjICBkZWZpbmUgZmlsZW5vIF9maWxlbm8KKysjIGVuZGlmCisrI2Vsc2UKKysg IC8qIE9uIHJlYXNvbmFibGUgc3lzdGVtcywgYmluYXJ5IEkvTyBpcyB0aGUgb25seSBjaG9pY2Uu ICAqLworKyAgLyogVXNlIGEgZnVuY3Rpb24gcmF0aGVyIHRoYW4gYSBtYWNybywgdG8gYXZvaWQg Z2NjIHdhcm5pbmdzCisrICAgICAid2FybmluZzogc3RhdGVtZW50IHdpdGggbm8gZWZmZWN0Ii4g ICovCisrQklOQVJZX0lPX0lOTElORSBpbnQKKytfX2dsX3NldG1vZGUgKGludCBmZCBfR0xfVU5V U0VELCBpbnQgbW9kZSBfR0xfVU5VU0VEKQorK3sKKysgIHJldHVybiBPX0JJTkFSWTsKKyt9Cisr I2VuZGlmCisrCisrLyogU2V0IEZEJ3MgbW9kZSB0byBNT0RFLCB3aGljaCBzaG91bGQgYmUgZWl0 aGVyIE9fVEVYVCBvciBPX0JJTkFSWS4KKysgICBSZXR1cm4gdGhlIG9sZCBtb2RlIGlmIHN1Y2Nl c3NmdWwsIC0xIChzZXR0aW5nIGVycm5vKSBvbiBmYWlsdXJlLgorKyAgIE9yZGluYXJpbHkgdGhp cyBmdW5jdGlvbiB3b3VsZCBiZSBjYWxsZWQgJ3NldG1vZGUnLCBzaW5jZSB0aGF0IGlzCisrICAg aXRzIG9sZCBuYW1lIG9uIE1TLVdpbmRvd3MsIGJ1dCBpdCBpcyBjYWxsZWQgJ3NldF9iaW5hcnlf bW9kZScgaGVyZQorKyAgIHRvIGF2b2lkIGNvbGxpZGluZyB3aXRoIGEgQlNEIGZ1bmN0aW9uIG9m IGFub3RoZXIgbmFtZS4gICovCisrCisrI2lmIGRlZmluZWQgX19ESkdQUF9fIHx8IGRlZmluZWQg X19FTVhfXworK2V4dGVybiBpbnQgc2V0X2JpbmFyeV9tb2RlIChpbnQgZmQsIGludCBtb2RlKTsK KysjZWxzZQorK0JJTkFSWV9JT19JTkxJTkUgaW50Cisrc2V0X2JpbmFyeV9tb2RlIChpbnQgZmQs IGludCBtb2RlKQorK3sKKysgIHJldHVybiBfX2dsX3NldG1vZGUgKGZkLCBtb2RlKTsKKyt9Cisr I2VuZGlmCisrCisrLyogVGhpcyBtYWNybyBpcyBvYnNvbGVzY2VudC4gICovCisrI2RlZmluZSBT RVRfQklOQVJZKGZkKSAoKHZvaWQpIHNldF9iaW5hcnlfbW9kZSAoZmQsIE9fQklOQVJZKSkKKysK KytfR0xfSU5MSU5FX0hFQURFUl9FTkQKKysKKysjZW5kaWYgLyogX0JJTkFSWV9IICovCitkaWZm IC0tZ2l0IGEvbGliL3NhZmUtd3JpdGUuYyBiL2xpYi9zYWZlLXdyaXRlLmMKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hNDYwZGM5CistLS0gL2Rldi9udWxsCisrKysgYi9s aWIvc2FmZS13cml0ZS5jCitAQCAtMCwwICsxLDE4IEBACisrLyogQW4gaW50ZXJmYWNlIHRvIHdy aXRlIHRoYXQgcmV0cmllcyBhZnRlciBpbnRlcnJ1cHRzLgorKyAgIENvcHlyaWdodCAoQykgMjAw MiwgMjAwOS0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2RlZmluZSBTQUZFX1dSSVRF CisrI2luY2x1ZGUgInNhZmUtcmVhZC5jIgorZGlmZiAtLWdpdCBhL2xpYi9zYWZlLXdyaXRlLmgg Yi9saWIvc2FmZS13cml0ZS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u NDMwN2ZmZQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliL3NhZmUtd3JpdGUuaAorQEAgLTAsMCAr MSwzNyBAQAorKy8qIEFuIGludGVyZmFjZSB0byB3cml0ZSgpIHRoYXQgcmV0cmllcyBhZnRlciBp bnRlcnJ1cHRzLgorKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwOS0yMDIxIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisrCisrLyogU29tZSBzeXN0ZW0gY2FsbHMgbWF5IGJlIGludGVycnVwdGVkIGFu ZCBmYWlsIHdpdGggZXJybm8gPSBFSU5UUiBpbiB0aGUKKysgICBmb2xsb3dpbmcgc2l0dWF0aW9u czoKKysgICAgIC0gVGhlIHByb2Nlc3MgaXMgc3RvcHBlZCBhbmQgcmVzdGFydGVkIChzaWduYWwg U0lHU1RPUCBhbmQgU0lHQ09OVCwgdXNlcgorKyAgICAgICB0eXBlcyBDdHJsLVopIG9uIHNvbWUg cGxhdGZvcm1zOiBNYWMgT1MgWC4KKysgICAgIC0gVGhlIHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWdu YWwgZm9yIHdoaWNoIGEgc2lnbmFsIGhhbmRsZXIgd2FzIGluc3RhbGxlZAorKyAgICAgICB3aXRo IHNpZ2FjdGlvbigpIHdpdGggYW4gc2FfZmxhZ3MgZmllbGQgdGhhdCBkb2VzIG5vdCBjb250YWlu CisrICAgICAgIFNBX1JFU1RBUlQuCisrICAgICAtIFRoZSBwcm9jZXNzIHJlY2VpdmVzIGEgc2ln bmFsIGZvciB3aGljaCBhIHNpZ25hbCBoYW5kbGVyIHdhcyBpbnN0YWxsZWQKKysgICAgICAgd2l0 aCBzaWduYWwoKSBhbmQgZm9yIHdoaWNoIG5vIGNhbGwgdG8gc2lnaW50ZXJydXB0KHNpZywwKSB3 YXMgZG9uZSwKKysgICAgICAgb24gc29tZSBwbGF0Zm9ybXM6IEFJWCwgSFAtVVgsIElSSVgsIE9T Ri8xLCBTb2xhcmlzLgorKworKyAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91 bmQgd3JpdGUoKSB0aGF0IGhhbmRsZXMgRUlOVFIuICAqLworKworKyNpbmNsdWRlIDxzdGRkZWYu aD4KKysKKysjZGVmaW5lIFNBRkVfV1JJVEVfRVJST1IgKChzaXplX3QpIC0xKQorKworKy8qIFdy aXRlIHVwIHRvIENPVU5UIGJ5dGVzIGF0IEJVRiB0byBkZXNjcmlwdG9yIEZELCByZXRyeWluZyBp ZiBpbnRlcnJ1cHRlZC4KKysgICBSZXR1cm4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgd3Jp dHRlbiwgemVybyBmb3IgRU9GLCBvciBTQUZFX1dSSVRFX0VSUk9SCisrICAgdXBvbiBlcnJvci4g ICovCisrZXh0ZXJuIHNpemVfdCBzYWZlX3dyaXRlIChpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwg c2l6ZV90IGNvdW50KTsKK2RpZmYgLS1naXQgYS9tNC9zYWZlLXdyaXRlLm00IGIvbTQvc2FmZS13 cml0ZS5tNAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmVmMTBkOTYKKy0t LSAvZGV2L251bGwKKysrKyBiL200L3NhZmUtd3JpdGUubTQKK0BAIC0wLDAgKzEsMTEgQEAKKysj IHNhZmUtd3JpdGUubTQgc2VyaWFsIDQKKytkbmwgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LTIw MDYsIDIwMDktMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytkbmwgVGhpcyBm aWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKytkbmwg Z2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwK Kytkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3Rp Y2UgaXMgcHJlc2VydmVkLgorKworKyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvc2FmZS13cml0ZS5j LgorK0FDX0RFRlVOKFtnbF9QUkVSRVFfU0FGRV9XUklURV0sCisrWworKyAgZ2xfUFJFUkVRX1NB RkVfUkVBRAorK10pCisKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZWN1dGlscy9wYXRjaGVzL2V4 ZGV2LnBhdGNoIGIvc3JjcGtncy9yZWN1dGlscy9wYXRjaGVzL2V4ZGV2LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmQxZjhiYjIxM2ExCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9yZWN1dGlscy9wYXRjaGVzL2V4ZGV2LnBhdGNoCkBAIC0wLDAgKzEs NTMgQEAKK0Zyb20gODZmNjYyYTgyMDI0MDgxMzRhMjM1NTcyZWM2MDE0MWQzMDgyZjk3NSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJKb3NlIEUuIE1hcmNoZXNpIiA8am9zZS5tYXJj aGVzaUBvcmFjbGUuY29tPgorRGF0ZTogVHVlLCAyOCBKYW4gMjAyMCAxMjoxMzo0MiArMDEwMAor U3ViamVjdDogdXRpbHM6IG1ha2UgdXRpbGl0aXMgdG8gd29yayB3aXRoIHRlbXBvcmFyeSBmaWxl cyBpbiBhIGRpZmZlcmVudAorIGZpbGVzeXN0ZW0KKworMjAyMC0wMS0yOCAgSm9zZSBFLiBNYXJj aGVzaSAgPGpvc2UubWFyY2hlc2lAb3JhY2xlLmNvbT4KKworCSogYm9vdHN0cmFwLmNvbmYgKGdu dWxpYl9tb2R1bGVzKTogSW1wb3J0IHRoZSBtb2R1bGVzIGNvcHktZmlsZQorCWFuZCByZW1vdmUu CisJKiB1dGlscy9yZWN1dGwuYyAocmVjdXRsX3dyaXRlX2RiX3RvX2ZpbGUpOiBDb3B5IGFuZCBy ZW1vdmUKKwlpbnN0ZWFkIG9mIHJlbmFtZSB0ZW1wb3JhcnkgZmlsZXMuCistLS0KKyB1dGlscy9y ZWN1dGwuYyB8IDE0ICsrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKKworKGxpbWl0ZWQgdG8gJ3V0aWxzL3JlY3V0bC5jJykKKwor ZGlmZiAtLWdpdCBhL3V0aWxzL3JlY3V0bC5jIGIvdXRpbHMvcmVjdXRsLmMKK2luZGV4IDljZjgy M2QuLmE4MTRmZDggMTAwNjQ0CistLS0gYS91dGlscy9yZWN1dGwuYworKysrIGIvdXRpbHMvcmVj dXRsLmMKK0BAIC01OCw2ICs1OCw3IEBACisgI2luY2x1ZGUgPHJlYy5oPgorICNpbmNsdWRlIDxy ZWN1dGwuaD4KKyAjaW5jbHVkZSAicmVhZC1maWxlLmgiCisrI2luY2x1ZGUgImNvcHktZmlsZS5o IgorIAorIC8qCisgICogR2xvYmFsIHZhcmlhYmxlcy4KK0BAIC00MzIsMTIgKzQzMywxMyBAQCBy ZWN1dGxfd3JpdGVfZGJfdG9fZmlsZSAocmVjX2RiX3QgZGIsCisgCisgICBpZiAoZmlsZV9uYW1l KQorICAgICB7CistICAgICAgLyogUmVuYW1lIHRoZSB0ZW1wb3JhcnkgZmlsZSB0byBmaWxlX25h bWUuICAqLworLSAgICAgIGlmIChyZW5hbWUgKHRtcF9maWxlX25hbWUsIGZpbGVfbmFtZSkgPT0g LTEpCistICAgICAgICB7CistICAgICAgICAgIHJlbW92ZSAodG1wX2ZpbGVfbmFtZSk7CistICAg ICAgICAgIHJlY3V0bF9mYXRhbCAoXygicmVuYW1pbmcgZmlsZSAlcyB0byAlc1xuIiksIHRtcF9m aWxlX25hbWUsIGZpbGVfbmFtZSk7CistICAgICAgICB9CisrICAgICAgLyogUmVuYW1lIHRoZSB0 ZW1wb3JhcnkgZmlsZSB0byBmaWxlX25hbWUuICBXZSBjb3B5IGFuZCByZW1vdmUKKysgICAgICAg ICBpbnN0ZWFkIG9mIHJlbmFtaW5nIGJlY2F1c2UgdGhlIGxhdGVyIGRvZXNuJ3Qgd29yayBhY3Jv c3MKKysgICAgICAgICBkaWZmZXJlbnQgbW91bnQgcG9pbnRzLCBhbmQgaXQgaXMgZ2V0dGluZyBj b21tb24gZm9yIC90bXAgdG8KKysgICAgICAgICBiZSBtb3VudGVkIGluIGl0cyBvd24gZmlsZXN5 c3RlbS4gICovCisrICAgICAgaWYgKHFjb3B5X2ZpbGVfcHJlc2VydmluZyAodG1wX2ZpbGVfbmFt ZSwgZmlsZV9uYW1lKSAhPSAwKQorKyAgICAgICAgcmVjdXRsX2ZhdGFsIChfKCJyZW5hbWluZyBm aWxlICVzIHRvICVzXG4iKSwgdG1wX2ZpbGVfbmFtZSwgZmlsZV9uYW1lKTsKKysgICAgICByZW1v dmUgKHRtcF9maWxlX25hbWUpOworIAorICAgICAgIC8qIFJlc3RvcmUgdGhlIGF0dHJpYnV0ZXMg b2YgdGhlIG9yaWdpbmFsIGZpbGUuICovCisgICAgICAgaWYgKHN0YXRfcmVzdWx0ICE9IC0xKQor LS0gCitjZ2l0IHYxLjIuMQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JlY3V0aWxzL3RlbXBsYXRl IGIvc3JjcGtncy9yZWN1dGlscy90ZW1wbGF0ZQppbmRleCAzZTcxMzEyYzRlMjUuLmM4YjQ4ZTM1 NjgzNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9yZWN1dGlscy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3JlY3V0aWxzL3RlbXBsYXRlCkBAIC0xLDEwICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdyZWN1dGlscycKIHBrZ25hbWU9cmVjdXRpbHMKIHZlcnNpb249MS44Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS13 aXRoLWJhc2gtaGVhZGVycyAtLWRpc2FibGUtcnBhdGgiCi1ob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCisjIFRPRE8gcmVtb3ZlIGF1dG9tYWtlIGluIDEuOTsgb25seSBuZWVkZWQgZm9yIGNv cHktZmlsZQoraG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBwa2ctY29uZmlnIgogbWFrZWRlcGVu ZHM9ImFjbC1kZXZlbCBsaWJnY3J5cHQtZGV2ZWwgbGlidXVpZC1kZXZlbCBsaWJjdXJsLWRldmVs Igogc2hvcnRfZGVzYz0iVXRpbGl0aWVzIHRvIGRlYWwgd2l0aCByZWNmaWxlcyIKIG1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCkBAIC0xMiw3ICsxMywxNCBAQCBs aWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmdudS5vcmcv c29mdHdhcmUvcmVjdXRpbHMvIgogZGlzdGZpbGVzPSIke0dOVV9TSVRFfS9yZWN1dGlscy9yZWN1 dGlscy0ke3ZlcnNpb259LnRhci5neiIKIGNoZWNrc3VtPWRmOGVhZTY5NTkzZmRiYTUzZTI2NGNi ZjRiMjMwN2RmYjgyMTIwYzA5YjZmYWIyM2UyZGFkNTFhODlhNWIxOTMKK3BhdGNoX2FyZ3M9LU5w MQogCitwcmVfY29uZmlndXJlKCkgeworCSMgWFhYIGhvcnJpYmxlIGtsdWRnZSB0byBhdm9pZCBo ZWxwMm1hbiAtIHJlbW92ZSBpbiAxLjkKKwl0b3VjaCBtYW4vKi4xCisJIyBYWFggT05MWSBuZWVk ZWQgZm9yIGNvcHktZmlsZSAtIHJlbW92ZSBpbiAxLjkKKwlhY2xvY2FsICYmIGF1dG9tYWtlCit9 CiBsaWJyZWMxX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIHJlYzEgbGlicmFyeSIKIAlw a2dfaW5zdGFsbCgpIHsK --===============1867817757648712343==--