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 8508 invoked from network); 28 Apr 2021 21:46:10 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 28 Apr 2021 21:46:10 -0000 Content-Type: multipart/mixed; boundary="===============5133507270298335189==" 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:46:10 +0200 List-Id: Message-ID: <20210428214610.hpoQ2UIl-pSFxGFihiIp1RRySEM_H76LY8pR8szDDrk@z> GitHub notification mails are now in MIME to allow UTF8. --===============5133507270298335189== 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= --===============5133507270298335189== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-master-30567.patch" RnJvbSAxY2UxNjE0OGM4ZDVjNGQ3OWVjOWI0MmU4Njg1MjNhMjY0NjExZjZhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMb3JlbnpvIEJlcmV0dGEgPHZjLm5ldC5sb3JlYkBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjggQXByIDIwMjEgMTQ6MjA6NTMgKzAyMDAKU3ViamVjdDogW1BBVENI XSByZWN1dGlsczogcGF0Y2ggdG8gZml4IHJlY2lucyBub3Qgd29ya2luZyBvdXRzaWRlIG9mICRU TVBESVIKCkRldGFpbHMgYXQgaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L3JlY3V0 aWxzLmdpdC9jb21taXQvdXRpbHMvcmVjdXRsLmM/aWQ9ODZmNjYyYTgyMDI0MDgxMzRhMjM1NTcy ZWM2MDE0MWQzMDgyZjk3NQpXaWxsIG5vIGxvbmdlciBiZSBuZWNlc3Nhcnkgb25jZSAxLjkgaXMg cmVsZWFzZWQ7IGZpeGVzIGJ1ZyAjMzA1NDYKVGhhbmtzIHRvIGVyaWNvbnIgZm9yIGFsbCB0aGUg YXNzaXN0YW5jZS4KCm5vdGUgdG8gc2VsZjogYm9vdHN0cmFwLmNvbmYgaXMgbm90IHNoaXBwZWQK YWRkICp0ZW1wb3JhcnkqIGRlcGVuZGVuY3kgb24gYXV0b21ha2UKYWRkaW5nIGdudWxpYiBwaWVj ZXMgaXMgYSByZWFsIGNob3JlLi4uCgpBbmQgdGhlbiB0aGUgR05VIHRvb2xzIChyaWdodGZ1bGx5 KSBkZWNpZGVkIHRoYXQgdGhlIG1hbnBhZ2VzIHdlcmUgb3V0Cm9mIGRhdGUsIGJlY2F1c2UgYSBm aWxlIGhhcyBiZWVuIG1vZGlmaWVkLCBhbmQgaW5zaXN0ZWQgb24gcnVubmluZwpoZWxwMm1hbiAt IEkgc2ltcGx5IHRvbGQgcHJlX2NvbmZpZ3VyZSB0byB1cGRhdGUgdGhlIHRpbWVzdGFtcHMgb2Yg dGhlCm1hbnBhZ2VzLgoKTGVmdCBhIGNoZWNrIGluIHByZV9jb25maWd1cmUgdG8gaGVscCByZW1l bWJlcmluZyB0byByZW1vdmUgYXV0b21ha2UKYW5kIHRoZSBrbHVkZ2UKLS0tCiBzcmNwa2dzL3Jl Y3V0aWxzL3BhdGNoZXMvY29weWZpbGUucGF0Y2ggfCAxOTI5ICsrKysrKysrKysrKysrKysrKysr KysrCiBzcmNwa2dzL3JlY3V0aWxzL3BhdGNoZXMvZXhkZXYucGF0Y2ggICAgfCAgIDUzICsKIHNy Y3BrZ3MvcmVjdXRpbHMvdGVtcGxhdGUgICAgICAgICAgICAgICB8ICAgMTcgKy0KIDMgZmlsZXMg Y2hhbmdlZCwgMTk5NyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcmVjdXRpbHMvcGF0Y2hlcy9jb3B5ZmlsZS5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcmVjdXRpbHMvcGF0Y2hlcy9leGRldi5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcmVjdXRpbHMvcGF0Y2hlcy9jb3B5ZmlsZS5wYXRjaCBiL3NyY3BrZ3MvcmVj dXRpbHMvcGF0Y2hlcy9jb3B5ZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmMyZjI4OWY2ZjQxZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcmVj dXRpbHMvcGF0Y2hlcy9jb3B5ZmlsZS5wYXRjaApAQCAtMCwwICsxLDE5MjkgQEAKK2RpZmYgLS1n aXQgYS9saWIvY29weS1maWxlLmMgYi9saWIvY29weS1maWxlLmMKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi4xNWUxN2FlCistLS0gL2Rldi9udWxsCisrKysgYi9saWIvY29w eS1maWxlLmMKK0BAIC0wLDAgKzEsMjIxIEBACisrLyogQ29weWluZyBvZiBmaWxlcy4KKysgICBD b3B5cmlnaHQgKEMpIDIwMDEtMjAwMywgMjAwNi0yMDA3LCAyMDA5LTIwMjEgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBj bGlzcC5jb25zLm9yZz4sIDIwMDEuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKysKKysKKysjaW5jbHVkZSA8Y29uZmlnLmg+CisrCisrLyogU3BlY2lmaWNh dGlvbi4gICovCisrI2luY2x1ZGUgImNvcHktZmlsZS5oIgorKworKyNpbmNsdWRlIDxlcnJuby5o PgorKyNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysjaW5jbHVkZSA8 c3RkbGliLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgor KworKyNpbmNsdWRlICJlcnJvci5oIgorKyNpbmNsdWRlICJpZ25vcmUtdmFsdWUuaCIKKysjaW5j bHVkZSAic2FmZS1yZWFkLmgiCisrI2luY2x1ZGUgImZ1bGwtd3JpdGUuaCIKKysjaW5jbHVkZSAi c3RhdC10aW1lLmgiCisrI2luY2x1ZGUgInV0aW1lbnMuaCIKKysjaW5jbHVkZSAiYWNsLmgiCisr I2luY2x1ZGUgImJpbmFyeS1pby5oIgorKyNpbmNsdWRlICJxdW90ZS5oIgorKyNpbmNsdWRlICJn ZXR0ZXh0LmgiCisrCisrI2RlZmluZSBfKHN0cikgZ2V0dGV4dCAoc3RyKQorKworK2VudW0geyBJ T19TSVpFID0gMzIgKiAxMDI0IH07CisrCisraW50CisrcWNvcHlfZmlsZV9wcmVzZXJ2aW5nIChj b25zdCBjaGFyICpzcmNfZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRlc3RfZmlsZW5hbWUpCisrewor KyAgaW50IGVyciA9IDA7CisrICBpbnQgc3JjX2ZkOworKyAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsK KysgIGludCBtb2RlOworKyAgaW50IGRlc3RfZmQ7CisrCisrICBzcmNfZmQgPSBvcGVuIChzcmNf ZmlsZW5hbWUsIE9fUkRPTkxZIHwgT19CSU5BUlkgfCBPX0NMT0VYRUMpOworKyAgaWYgKHNyY19m ZCA8IDApCisrICAgIHJldHVybiBHTF9DT1BZX0VSUl9PUEVOX1JFQUQ7CisrICBpZiAoZnN0YXQg KHNyY19mZCwgJnN0YXRidWYpIDwgMCkKKysgICAgeworKyAgICAgIGVyciA9IEdMX0NPUFlfRVJS X09QRU5fUkVBRDsKKysgICAgICBnb3RvIGVycm9yX3NyYzsKKysgICAgfQorKworKyAgbW9kZSA9 IHN0YXRidWYuc3RfbW9kZSAmIDA3Nzc3OworKyAgb2ZmX3QgaW5ieXRlcyA9IFNfSVNSRUcgKHN0 YXRidWYuc3RfbW9kZSkgPyBzdGF0YnVmLnN0X3NpemUgOiAtMTsKKysgIGJvb2wgZW1wdHlfcmVn dWxhcl9maWxlID0gaW5ieXRlcyA9PSAwOworKworKyAgZGVzdF9mZCA9IG9wZW4gKGRlc3RfZmls ZW5hbWUsCisrICAgICAgICAgICAgICAgICAgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyB8 IE9fQklOQVJZIHwgT19DTE9FWEVDLAorKyAgICAgICAgICAgICAgICAgIDA2MDApOworKyAgaWYg KGRlc3RfZmQgPCAwKQorKyAgICB7CisrICAgICAgZXJyID0gR0xfQ09QWV9FUlJfT1BFTl9CQUNL VVBfV1JJVEU7CisrICAgICAgZ290byBlcnJvcl9zcmM7CisrICAgIH0KKysKKysgIC8qIENvcHkg dGhlIGZpbGUgY29udGVudHMuICBGSVhNRTogRG8gbm90IGNvcHkgaG9sZXMuICAqLworKyAgd2hp bGUgKDAgPCBpbmJ5dGVzKQorKyAgICB7CisrICAgICAgc2l6ZV90IGNvcHlfbWF4ID0gLTE7Cisr ICAgICAgY29weV9tYXggLT0gY29weV9tYXggJSBJT19TSVpFOworKyAgICAgIHNpemVfdCBsZW4g PSBpbmJ5dGVzIDwgY29weV9tYXggPyBpbmJ5dGVzIDogY29weV9tYXg7CisrICAgICAgc3NpemVf dCBjb3BpZWQgPSBjb3B5X2ZpbGVfcmFuZ2UgKHNyY19mZCwgTlVMTCwgZGVzdF9mZCwgTlVMTCwg bGVuLCAwKTsKKysgICAgICBpZiAoY29waWVkIDw9IDApCisrICAgICAgICBicmVhazsKKysgICAg ICBpbmJ5dGVzIC09IGNvcGllZDsKKysgICAgfQorKworKyAgLyogRmluaXNoIHVwIHdpdGggcmVh ZC93cml0ZSwgaW4gY2FzZSB0aGUgZmlsZSB3YXMgbm90IGEgcmVndWxhcgorKyAgICAgZmlsZSwg b3IgdGhlIGZpbGUgc2hyYW5rIG9yIGhhZCBJL08gZXJyb3JzIChpbiB3aGljaCBjYXNlIGZpbmQK KysgICAgIHdoZXRoZXIgaXQgd2FzIGEgcmVhZCBvciB3cml0ZSBlcnJvcikuICBSZWFkIGVtcHR5 IHJlZ3VsYXIgZmlsZXMKKysgICAgIHNpbmNlIHRoZXkgbWlnaHQgYmUgaW4gL3Byb2Mgd2l0aCB0 aGVpciB0cnVlIHNpemVzIHVua25vd24gdW50aWwKKysgICAgIHRoZXkgYXJlIHJlYWQuICAqLwor KyAgaWYgKGluYnl0ZXMgIT0gMCB8fCBlbXB0eV9yZWd1bGFyX2ZpbGUpCisrICAgIHsKKysgICAg ICBjaGFyIHNtYWxsYnVmWzEwMjRdOworKyAgICAgIGludCBidWZzaXplID0gSU9fU0laRTsKKysg ICAgICBjaGFyICpidWYgPSBtYWxsb2MgKGJ1ZnNpemUpOworKyAgICAgIGlmICghYnVmKQorKyAg ICAgICAgYnVmID0gc21hbGxidWYsIGJ1ZnNpemUgPSBzaXplb2Ygc21hbGxidWY7CisrCisrICAg ICAgd2hpbGUgKHRydWUpCisrICAgICAgICB7CisrICAgICAgICAgIHNpemVfdCBuX3JlYWQgPSBz YWZlX3JlYWQgKHNyY19mZCwgYnVmLCBidWZzaXplKTsKKysgICAgICAgICAgaWYgKG5fcmVhZCA9 PSAwKQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICBpZiAobl9yZWFkID09IFNBRkVf UkVBRF9FUlJPUikKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBlcnIgPSBHTF9DT1BZ X0VSUl9SRUFEOworKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAg ICAgICBpZiAoZnVsbF93cml0ZSAoZGVzdF9mZCwgYnVmLCBuX3JlYWQpIDwgbl9yZWFkKQorKyAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGVyciA9IEdMX0NPUFlfRVJSX1dSSVRFOworKyAg ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAg IGlmIChidWYgIT0gc21hbGxidWYpCisrICAgICAgICBmcmVlIChidWYpOworKyAgICAgIGlmIChl cnIpCisrICAgICAgICBnb3RvIGVycm9yX3NyY19kZXN0OworKyAgICB9CisrCisrI2lmICFVU0Vf QUNMCisrICBpZiAoY2xvc2UgKGRlc3RfZmQpIDwgMCkKKysgICAgeworKyAgICAgIGVyciA9IEdM X0NPUFlfRVJSX1dSSVRFOworKyAgICAgIGdvdG8gZXJyb3Jfc3JjOworKyAgICB9CisrICBpZiAo Y2xvc2UgKHNyY19mZCkgPCAwKQorKyAgICByZXR1cm4gR0xfQ09QWV9FUlJfQUZURVJfUkVBRDsK KysjZW5kaWYKKysKKysgIC8qIFByZXNlcnZlIHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0 aW1lcy4gICovCisrICB7CisrICAgIHN0cnVjdCB0aW1lc3BlYyB0c1syXTsKKysKKysgICAgdHNb MF0gPSBnZXRfc3RhdF9hdGltZSAoJnN0YXRidWYpOworKyAgICB0c1sxXSA9IGdldF9zdGF0X210 aW1lICgmc3RhdGJ1Zik7CisrICAgIHV0aW1lbnMgKGRlc3RfZmlsZW5hbWUsIHRzKTsKKysgIH0K KysKKysjaWYgSEFWRV9DSE9XTgorKyAgLyogUHJlc2VydmUgdGhlIG93bmVyIGFuZCBncm91cC4g ICovCisrICBpZ25vcmVfdmFsdWUgKGNob3duIChkZXN0X2ZpbGVuYW1lLCBzdGF0YnVmLnN0X3Vp ZCwgc3RhdGJ1Zi5zdF9naWQpKTsKKysjZW5kaWYKKysKKysgIC8qIFByZXNlcnZlIHRoZSBhY2Nl c3MgcGVybWlzc2lvbnMuICAqLworKyNpZiBVU0VfQUNMCisrICBzd2l0Y2ggKHFjb3B5X2FjbCAo c3JjX2ZpbGVuYW1lLCBzcmNfZmQsIGRlc3RfZmlsZW5hbWUsIGRlc3RfZmQsIG1vZGUpKQorKyAg ICB7CisrICAgIGNhc2UgLTI6CisrICAgICAgZXJyID0gR0xfQ09QWV9FUlJfR0VUX0FDTDsKKysg ICAgICBnb3RvIGVycm9yX3NyY19kZXN0OworKyAgICBjYXNlIC0xOgorKyAgICAgIGVyciA9IEdM X0NPUFlfRVJSX1NFVF9BQ0w7CisrICAgICAgZ290byBlcnJvcl9zcmNfZGVzdDsKKysgICAgfQor KyNlbHNlCisrICBjaG1vZCAoZGVzdF9maWxlbmFtZSwgbW9kZSk7CisrI2VuZGlmCisrCisrI2lm IFVTRV9BQ0wKKysgIGlmIChjbG9zZSAoZGVzdF9mZCkgPCAwKQorKyAgICB7CisrICAgICAgZXJy ID0gR0xfQ09QWV9FUlJfV1JJVEU7CisrICAgICAgZ290byBlcnJvcl9zcmM7CisrICAgIH0KKysg IGlmIChjbG9zZSAoc3JjX2ZkKSA8IDApCisrICAgIHJldHVybiBHTF9DT1BZX0VSUl9BRlRFUl9S RUFEOworKyNlbmRpZgorKworKyAgcmV0dXJuIDA7CisrCisrIGVycm9yX3NyY19kZXN0OgorKyAg Y2xvc2UgKGRlc3RfZmQpOworKyBlcnJvcl9zcmM6CisrICBjbG9zZSAoc3JjX2ZkKTsKKysgIHJl dHVybiBlcnI7CisrfQorKworK3ZvaWQKKytjb3B5X2ZpbGVfcHJlc2VydmluZyAoY29uc3QgY2hh ciAqc3JjX2ZpbGVuYW1lLCBjb25zdCBjaGFyICpkZXN0X2ZpbGVuYW1lKQorK3sKKysgIHN3aXRj aCAocWNvcHlfZmlsZV9wcmVzZXJ2aW5nIChzcmNfZmlsZW5hbWUsIGRlc3RfZmlsZW5hbWUpKQor KyAgICB7CisrICAgIGNhc2UgMDoKKysgICAgICByZXR1cm47CisrCisrICAgIGNhc2UgR0xfQ09Q WV9FUlJfT1BFTl9SRUFEOgorKyAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJl cnJvciB3aGlsZSBvcGVuaW5nICVzIGZvciByZWFkaW5nIiksCisrICAgICAgICAgICAgIHF1b3Rl IChzcmNfZmlsZW5hbWUpKTsKKysKKysgICAgY2FzZSBHTF9DT1BZX0VSUl9PUEVOX0JBQ0tVUF9X UklURToKKysgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiY2Fubm90IG9wZW4g YmFja3VwIGZpbGUgJXMgZm9yIHdyaXRpbmciKSwKKysgICAgICAgICAgICAgcXVvdGUgKGRlc3Rf ZmlsZW5hbWUpKTsKKysKKysgICAgY2FzZSBHTF9DT1BZX0VSUl9SRUFEOgorKyAgICAgIGVycm9y IChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJlcnJvciByZWFkaW5nICVzIiksCisrICAgICAgICAg ICAgIHF1b3RlIChzcmNfZmlsZW5hbWUpKTsKKysKKysgICAgY2FzZSBHTF9DT1BZX0VSUl9XUklU RToKKysgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiZXJyb3Igd3JpdGluZyAl cyIpLAorKyAgICAgICAgICAgICBxdW90ZSAoZGVzdF9maWxlbmFtZSkpOworKworKyAgICBjYXNl IEdMX0NPUFlfRVJSX0FGVEVSX1JFQUQ6CisrICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJy bm8sIF8oImVycm9yIGFmdGVyIHJlYWRpbmcgJXMiKSwKKysgICAgICAgICAgICAgcXVvdGUgKHNy Y19maWxlbmFtZSkpOworKworKyAgICBjYXNlIEdMX0NPUFlfRVJSX0dFVF9BQ0w6CisrICAgICAg ZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIHF1b3RlIChzcmNfZmlsZW5hbWUpKTsK KysKKysgICAgY2FzZSBHTF9DT1BZX0VSUl9TRVRfQUNMOgorKyAgICAgIGVycm9yIChFWElUX0ZB SUxVUkUsIGVycm5vLCBfKCJwcmVzZXJ2aW5nIHBlcm1pc3Npb25zIGZvciAlcyIpLAorKyAgICAg ICAgICAgICBxdW90ZSAoZGVzdF9maWxlbmFtZSkpOworKworKyAgICBkZWZhdWx0OgorKyAgICAg IGFib3J0ICgpOworKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYi9jb3B5LWZpbGUuaCBiL2xp Yi9jb3B5LWZpbGUuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjA5Mjgx ZDYKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYi9jb3B5LWZpbGUuaAorQEAgLTAsMCArMSw1NCBA QAorKy8qIENvcHlpbmcgb2YgZmlsZXMuCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMsIDIw MDktMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBXcml0dGVuIGJ5IEJy dW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMS4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKworKyNpZmRlZiBfX2NwbHVzcGx1 cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworKworKy8qIEVycm9yIGNvZGVzIHJldHVybmVk IGJ5IHFjb3B5X2ZpbGVfcHJlc2VydmluZy4gICovCisrZW51bQorK3sKKysgIEdMX0NPUFlfRVJS X09QRU5fUkVBRCA9IC0xLAorKyAgR0xfQ09QWV9FUlJfT1BFTl9CQUNLVVBfV1JJVEUgPSAtMiwK KysgIEdMX0NPUFlfRVJSX1JFQUQgPSAtMywKKysgIEdMX0NPUFlfRVJSX1dSSVRFID0gLTQsCisr ICBHTF9DT1BZX0VSUl9BRlRFUl9SRUFEID0gLTUsCisrICBHTF9DT1BZX0VSUl9HRVRfQUNMID0g LTYsCisrICBHTF9DT1BZX0VSUl9TRVRfQUNMID0gLTcKKyt9OworKworKy8qIENvcHkgYSByZWd1 bGFyIGZpbGU6IGZyb20gc3JjX2ZpbGVuYW1lIHRvIGRlc3RfZmlsZW5hbWUuCisrICAgVGhlIGRl c3RpbmF0aW9uIGZpbGUgaXMgYXNzdW1lZCB0byBiZSBhIGJhY2t1cCBmaWxlLgorKyAgIE1vZGlm aWNhdGlvbiB0aW1lcywgb3duZXIsIGdyb3VwIGFuZCBhY2Nlc3MgcGVybWlzc2lvbnMgYXJlIHBy ZXNlcnZlZCBhcworKyAgIGZhciBhcyBwb3NzaWJsZS4KKysgICBSZXR1cm4gMCBpZiBzdWNjZXNz ZnVsLCBvdGhlcndpc2Ugc2V0IGVycm5vIGFuZCByZXR1cm4gb25lIG9mIHRoZSBlcnJvcgorKyAg IGNvZGVzIGFib3ZlLiAgKi8KKytleHRlcm4gaW50IHFjb3B5X2ZpbGVfcHJlc2VydmluZyAoY29u c3QgY2hhciAqc3JjX2ZpbGVuYW1lLCBjb25zdCBjaGFyICpkZXN0X2ZpbGVuYW1lKTsKKysKKysv KiBDb3B5IGEgcmVndWxhciBmaWxlOiBmcm9tIHNyY19maWxlbmFtZSB0byBkZXN0X2ZpbGVuYW1l LgorKyAgIFRoZSBkZXN0aW5hdGlvbiBmaWxlIGlzIGFzc3VtZWQgdG8gYmUgYSBiYWNrdXAgZmls ZS4KKysgICBNb2RpZmljYXRpb24gdGltZXMsIG93bmVyLCBncm91cCBhbmQgYWNjZXNzIHBlcm1p c3Npb25zIGFyZSBwcmVzZXJ2ZWQgYXMKKysgICBmYXIgYXMgcG9zc2libGUuCisrICAgRXhpdCB1 cG9uIGZhaWx1cmUuICAqLworK2V4dGVybiB2b2lkIGNvcHlfZmlsZV9wcmVzZXJ2aW5nIChjb25z dCBjaGFyICpzcmNfZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRlc3RfZmlsZW5hbWUpOworKworKwor KyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKK2RpZmYgLS1naXQgYS9tNC9jb3B5LWZp bGUubTQgYi9tNC9jb3B5LWZpbGUubTQKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi42MjExMTcxCistLS0gL2Rldi9udWxsCisrKysgYi9tNC9jb3B5LWZpbGUubTQKK0BAIC0w LDAgKzEsMTEgQEAKKysjIGNvcHktZmlsZS5tNCBzZXJpYWwgNQorK2RubCBDb3B5cmlnaHQgKEMp IDIwMDMsIDIwMDktMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytkbmwgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKytk bmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBp dCwKKytkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBu b3RpY2UgaXMgcHJlc2VydmVkLgorKworK0FDX0RFRlVOKFtnbF9DT1BZX0ZJTEVdLAorK1sKKysg IEFDX0NIRUNLX0hFQURFUlNfT05DRShbdW5pc3RkLmhdKQorKyAgQUNfQ0hFQ0tfRlVOQ1MoW2No b3duXSkKKytdKQorCitkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIvbGliL01ha2VmaWxl LmFtCitpbmRleCBhNmVjMzBiLi5mMzYzYjg2IDEwMDY0NAorLS0tIGEvbGliL01ha2VmaWxlLmFt CisrKysgYi9saWIvTWFrZWZpbGUuYW0KK0BAIC0yMTksNiArMjI1LDEyIEBACisgCisgIyMgZW5k ICAgZ251bGliIG1vZHVsZSBiYXNlNjQKKyAKKysjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGJpbmFy eS1pbworKworK2xpYnJlY3V0aWxzX2xhX1NPVVJDRVMgKz0gYmluYXJ5LWlvLmggYmluYXJ5LWlv LmMKKysKKysjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGJpbmFyeS1pbworKworICMjIGJlZ2luIGdu dWxpYiBtb2R1bGUgYnRvd2MKKyAKKyAKK0BAIC0yODksNiArMzAxLDIxIEBACisgCisgIyMgZW5k ICAgZ251bGliIG1vZHVsZSBjbG9zZW91dAorIAorKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgY29w eS1maWxlCisrCisrbGlicmVjdXRpbHNfbGFfU09VUkNFUyArPSBjb3B5LWZpbGUuaCBjb3B5LWZp bGUuYworKworKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgY29weS1maWxlCisrCisrIyMgYmVnaW4g Z251bGliIG1vZHVsZSBjb3B5LWZpbGUtcmFuZ2UKKysKKysKKytFWFRSQV9ESVNUICs9IGNvcHkt ZmlsZS1yYW5nZS5jCisrCisrRVhUUkFfbGlicmVjdXRpbHNfbGFfU09VUkNFUyArPSBjb3B5LWZp bGUtcmFuZ2UuYworKworKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgY29weS1maWxlLXJhbmdlCisr CisgIyMgYmVnaW4gZ251bGliIG1vZHVsZSBjcmMKKyAKKyBsaWJyZWN1dGlsc19sYV9TT1VSQ0VT ICs9IGNyYy5jCitAQCAtNjA1LDYgKzYzNCwxMiBAQAorIAorICMjIGVuZCAgIGdudWxpYiBtb2R1 bGUgZnRlbGxvCisgCisrIyMgYmVnaW4gZ251bGliIG1vZHVsZSBmdWxsLXdyaXRlCisrCisrbGli cmVjdXRpbHNfbGFfU09VUkNFUyArPSBmdWxsLXdyaXRlLmggZnVsbC13cml0ZS5jCisrCisrIyMg ZW5kICAgZ251bGliIG1vZHVsZSBmdWxsLXdyaXRlCisrCisgIyMgYmVnaW4gZ251bGliIG1vZHVs ZSBmd3JpdGluZworIAorIAorQEAgLTc3OCw2ICs4MTMsMTMgQEAKKyAKKyAjIyBlbmQgICBnbnVs aWIgbW9kdWxlIGhhdmVsaWIKKyAKKysjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGlnbm9yZS12YWx1 ZQorKworKworK0VYVFJBX0RJU1QgKz0gaWdub3JlLXZhbHVlLmgKKysKKysjIyBlbmQgICBnbnVs aWIgbW9kdWxlIGlnbm9yZS12YWx1ZQorKworICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgaW50cHJv cHMKKyAKKyAKK0BAIC0xNzYxLDYgKzE4MjcsMzIgQEAKKyAKKyAjIyBlbmQgICBnbnVsaWIgbW9k dWxlIHJvb3QtdWlkCisgCisrIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzYWZlLXJlYWQKKysKKyts aWJyZWN1dGlsc19sYV9TT1VSQ0VTICs9IHNhZmUtcmVhZC5jCisrCisrRVhUUkFfRElTVCArPSBz YWZlLXJlYWQuaCBzeXMtbGltaXRzLmgKKysKKysjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNhZmUt cmVhZAorKworKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgc2FmZS13cml0ZQorKworK2xpYnJlY3V0 aWxzX2xhX1NPVVJDRVMgKz0gc2FmZS13cml0ZS5jCisrCisrRVhUUkFfRElTVCArPSBzYWZlLXJl YWQuYyBzYWZlLXdyaXRlLmggc3lzLWxpbWl0cy5oCisrCisrRVhUUkFfbGlicmVjdXRpbHNfbGFf U09VUkNFUyArPSBzYWZlLXJlYWQuYworKworKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc2FmZS13 cml0ZQorKworKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgdXRpbWVucworKworK2xpYnJlY3V0aWxz X2xhX1NPVVJDRVMgKz0gdXRpbWVucy5jCisrCisrRVhUUkFfRElTVCArPSB1dGltZW5zLmgKKysK KysjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHV0aW1lbnMKKysKKyAjIyBiZWdpbiBnbnVsaWIgbW9k dWxlIHNhbWUtaW5vZGUKKyAKKyAKK2RpZmYgLS1naXQgYS9saWIvaWdub3JlLXZhbHVlLmggYi9s aWIvaWdub3JlLXZhbHVlLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4w YTNjZjFlCistLS0gL2Rldi9udWxsCisrKysgYi9saWIvaWdub3JlLXZhbHVlLmgKK0BAIC0wLDAg KzEsNTEgQEAKKysvKiBpZ25vcmUgYSBmdW5jdGlvbiByZXR1cm4gd2l0aG91dCBhIGNvbXBpbGVy IHdhcm5pbmcuICAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKysKKysgICBDb3B5cmlnaHQgKEMpIDIw MDgtMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKy8qIFdyaXR0ZW4gYnkgSmltIE1leWVy aW5nLCBFcmljIEJsYWtlIGFuZCBQw6FkcmFpZyBCcmFkeS4gICovCisrCisrLyogVXNlICJpZ25v cmVfdmFsdWUiIHRvIGF2b2lkIGEgd2FybmluZyB3aGVuIHVzaW5nIGEgZnVuY3Rpb24gZGVjbGFy ZWQgd2l0aAorKyAgIGdjYydzIHdhcm5fdW51c2VkX3Jlc3VsdCBhdHRyaWJ1dGUsIGJ1dCBmb3Ig d2hpY2ggeW91IHJlYWxseSBkbyB3YW50IHRvCisrICAgaWdub3JlIHRoZSByZXN1bHQuICBUcmFk aXRpb25hbGx5LCBwZW9wbGUgaGF2ZSB1c2VkIGEgIih2b2lkKSIgY2FzdCB0bworKyAgIGluZGlj YXRlIHRoYXQgYSBmdW5jdGlvbidzIHJldHVybiB2YWx1ZSBpcyBkZWxpYmVyYXRlbHkgdW51c2Vk LiAgSG93ZXZlciwKKysgICBpZiB0aGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQgd2l0aCBfX2F0dHJp YnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSwKKysgICBnY2MgaXNzdWVzIGEgd2FybmluZyBl dmVuIHdpdGggdGhlIGNhc3QuCisrCisrICAgQ2F1dGlvbjogbW9zdCBvZiB0aGUgdGltZSwgeW91 IHJlYWxseSBzaG91bGQgaGVlZCBnY2MncyB3YXJuaW5nLCBhbmQKKysgICBjaGVjayB0aGUgcmV0 dXJuIHZhbHVlLiAgSG93ZXZlciwgaW4gdGhvc2UgZXhjZXB0aW9uYWwgY2FzZXMgaW4gd2hpY2gK KysgICB5b3UncmUgc3VyZSB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZywgdXNlIHRoaXMgZnVu Y3Rpb24uCisrCisrICAgRm9yIHRoZSByZWNvcmQsIGhlcmUncyBvbmUgb2YgdGhlIGlnbm9yYWJs ZSB3YXJuaW5nczoKKysgICAiY29weS5jOjIzMzogd2FybmluZzogaWdub3JpbmcgcmV0dXJuIHZh bHVlIG9mICdmY2hvd24nLAorKyAgIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlIHdhcm5fdW51c2Vk X3Jlc3VsdCIuICAqLworKworKyNpZm5kZWYgX0dMX0lHTk9SRV9WQUxVRV9ICisrI2RlZmluZSBf R0xfSUdOT1JFX1ZBTFVFX0gKKysKKysvKiBOb3JtYWxseSBjYXN0aW5nIGFuIGV4cHJlc3Npb24g dG8gdm9pZCBkaXNjYXJkcyBpdHMgdmFsdWUsIGJ1dCBHQ0MKKysgICB2ZXJzaW9ucyAzLjQgYW5k IG5ld2VyIGhhdmUgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKQorKyAg IHdoaWNoIG1heSBjYXVzZSB1bndhbnRlZCBkaWFnbm9zdGljcyBpbiB0aGF0IGNhc2UuICBVc2Ug X190eXBlb2ZfXworKyAgIGFuZCBfX2V4dGVuc2lvbl9fIHRvIHdvcmsgYXJvdW5kIHRoZSBwcm9i bGVtLCBpZiB0aGUgd29ya2Fyb3VuZCBpcworKyAgIGtub3duIHRvIGJlIG5lZWRlZC4KKysgICBU aGUgd29ya2Fyb3VuZCBpcyBub3QgbmVlZGVkIHdpdGggY2xhbmcuICAqLworKyNpZiAoMyA8IF9f R05VQ19fICsgKDQgPD0gX19HTlVDX01JTk9SX18pKSAmJiAhZGVmaW5lZCBfX2NsYW5nX18KKysj IGRlZmluZSBpZ25vcmVfdmFsdWUoeCkgXAorKyAgICAoX19leHRlbnNpb25fXyAoeyBfX3R5cGVv Zl9fICh4KSBfX3ggPSAoeCk7ICh2b2lkKSBfX3g7IH0pKQorKyNlbHNlCisrIyBkZWZpbmUgaWdu b3JlX3ZhbHVlKHgpICgodm9pZCkgKHgpKQorKyNlbmRpZgorKworKyNlbmRpZgorZGlmZiAtLWdp dCBhL2xpYi9zYWZlLXJlYWQuYyBiL2xpYi9zYWZlLXJlYWQuYworbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLmJlOWMzM2MKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYi9zYWZl LXJlYWQuYworQEAgLTAsMCArMSw3MSBAQAorKy8qIEFuIGludGVyZmFjZSB0byByZWFkIGFuZCB3 cml0ZSB0aGF0IHJldHJpZXMgYWZ0ZXIgaW50ZXJydXB0cy4KKysKKysgICBDb3B5cmlnaHQgKEMp IDE5OTMtMTk5NCwgMTk5OCwgMjAwMi0yMDA2LCAyMDA5LTIwMjEgRnJlZSBTb2Z0d2FyZQorKyAg IEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKwor KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLworKworKyNpbmNsdWRlIDxjb25maWcuaD4KKysKKysvKiBTcGVjaWZpY2F0aW9uLiAg Ki8KKysjaWZkZWYgU0FGRV9XUklURQorKyMgaW5jbHVkZSAic2FmZS13cml0ZS5oIgorKyNlbHNl CisrIyBpbmNsdWRlICJzYWZlLXJlYWQuaCIKKysjZW5kaWYKKysKKysvKiBHZXQgc3NpemVfdC4g ICovCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysKKysj aW5jbHVkZSA8ZXJybm8uaD4KKysKKysjaWZkZWYgRUlOVFIKKysjIGRlZmluZSBJU19FSU5UUih4 KSAoKHgpID09IEVJTlRSKQorKyNlbHNlCisrIyBkZWZpbmUgSVNfRUlOVFIoeCkgMAorKyNlbmRp ZgorKworKyNpbmNsdWRlICJzeXMtbGltaXRzLmgiCisrCisrI2lmZGVmIFNBRkVfV1JJVEUKKysj IGRlZmluZSBzYWZlX3J3IHNhZmVfd3JpdGUKKysjIGRlZmluZSBydyB3cml0ZQorKyNlbHNlCisr IyBkZWZpbmUgc2FmZV9ydyBzYWZlX3JlYWQKKysjIGRlZmluZSBydyByZWFkCisrIyB1bmRlZiBj b25zdAorKyMgZGVmaW5lIGNvbnN0IC8qIGVtcHR5ICovCisrI2VuZGlmCisrCisrLyogUmVhZCh3 cml0ZSkgdXAgdG8gQ09VTlQgYnl0ZXMgYXQgQlVGIGZyb20odG8pIGRlc2NyaXB0b3IgRkQsIHJl dHJ5aW5nIGlmCisrICAgaW50ZXJydXB0ZWQuICBSZXR1cm4gdGhlIGFjdHVhbCBudW1iZXIgb2Yg Ynl0ZXMgcmVhZCh3cml0dGVuKSwgemVybyBmb3IgRU9GLAorKyAgIG9yIFNBRkVfUkVBRF9FUlJP UihTQUZFX1dSSVRFX0VSUk9SKSB1cG9uIGVycm9yLiAgKi8KKytzaXplX3QKKytzYWZlX3J3IChp bnQgZmQsIHZvaWQgY29uc3QgKmJ1Ziwgc2l6ZV90IGNvdW50KQorK3sKKysgIGZvciAoOzspCisr ICAgIHsKKysgICAgICBzc2l6ZV90IHJlc3VsdCA9IHJ3IChmZCwgYnVmLCBjb3VudCk7CisrCisr ICAgICAgaWYgKDAgPD0gcmVzdWx0KQorKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKysgICAgICBl bHNlIGlmIChJU19FSU5UUiAoZXJybm8pKQorKyAgICAgICAgY29udGludWU7CisrICAgICAgZWxz ZSBpZiAoZXJybm8gPT0gRUlOVkFMICYmIFNZU19CVUZTSVpFX01BWCA8IGNvdW50KQorKyAgICAg ICAgY291bnQgPSBTWVNfQlVGU0laRV9NQVg7CisrICAgICAgZWxzZQorKyAgICAgICAgcmV0dXJu IHJlc3VsdDsKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9saWIvc2FmZS1yZWFkLmggYi9saWIv c2FmZS1yZWFkLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41NDgyOTA2 CistLS0gL2Rldi9udWxsCisrKysgYi9saWIvc2FmZS1yZWFkLmgKK0BAIC0wLDAgKzEsNDcgQEAK KysvKiBBbiBpbnRlcmZhY2UgdG8gcmVhZCgpIHRoYXQgcmV0cmllcyBhZnRlciBpbnRlcnJ1cHRz LgorKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNiwgMjAwOS0yMDIxIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisrCisrLyogU29tZSBzeXN0ZW0gY2FsbHMgbWF5IGJlIGludGVycnVwdGVkIGFuZCBm YWlsIHdpdGggZXJybm8gPSBFSU5UUiBpbiB0aGUKKysgICBmb2xsb3dpbmcgc2l0dWF0aW9uczoK KysgICAgIC0gVGhlIHByb2Nlc3MgaXMgc3RvcHBlZCBhbmQgcmVzdGFydGVkIChzaWduYWwgU0lH U1RPUCBhbmQgU0lHQ09OVCwgdXNlcgorKyAgICAgICB0eXBlcyBDdHJsLVopIG9uIHNvbWUgcGxh dGZvcm1zOiBNYWMgT1MgWC4KKysgICAgIC0gVGhlIHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWwg Zm9yIHdoaWNoIGEgc2lnbmFsIGhhbmRsZXIgd2FzIGluc3RhbGxlZAorKyAgICAgICB3aXRoIHNp Z2FjdGlvbigpIHdpdGggYW4gc2FfZmxhZ3MgZmllbGQgdGhhdCBkb2VzIG5vdCBjb250YWluCisr ICAgICAgIFNBX1JFU1RBUlQuCisrICAgICAtIFRoZSBwcm9jZXNzIHJlY2VpdmVzIGEgc2lnbmFs IGZvciB3aGljaCBhIHNpZ25hbCBoYW5kbGVyIHdhcyBpbnN0YWxsZWQKKysgICAgICAgd2l0aCBz aWduYWwoKSBhbmQgZm9yIHdoaWNoIG5vIGNhbGwgdG8gc2lnaW50ZXJydXB0KHNpZywwKSB3YXMg ZG9uZSwKKysgICAgICAgb24gc29tZSBwbGF0Zm9ybXM6IEFJWCwgSFAtVVgsIElSSVgsIE9TRi8x LCBTb2xhcmlzLgorKworKyAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91bmQg cmVhZCgpIHRoYXQgaGFuZGxlcyBFSU5UUi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgor KworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworKworKyNk ZWZpbmUgU0FGRV9SRUFEX0VSUk9SICgoc2l6ZV90KSAtMSkKKysKKysvKiBSZWFkIHVwIHRvIENP VU5UIGJ5dGVzIGF0IEJVRiBmcm9tIGRlc2NyaXB0b3IgRkQsIHJldHJ5aW5nIGlmIGludGVycnVw dGVkLgorKyAgIFJldHVybiB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkLCB6ZXJvIGZv ciBFT0YsIG9yIFNBRkVfUkVBRF9FUlJPUgorKyAgIHVwb24gZXJyb3IuICAqLworK2V4dGVybiBz aXplX3Qgc2FmZV9yZWFkIChpbnQgZmQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKKysKKysK KysjaWZkZWYgX19jcGx1c3BsdXMKKyt9CisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGliL3N5cy1s aW1pdHMuaCBiL2xpYi9zeXMtbGltaXRzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi5jZDA1YTgxCistLS0gL2Rldi9udWxsCisrKysgYi9saWIvc3lzLWxpbWl0cy5oCitA QCAtMCwwICsxLDQyIEBACisrLyogU3lzdGVtIGNhbGwgbGltaXRzCisrCisrICAgQ29weXJpZ2h0 IDIwMTgtMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorKyAgIGFueSBsYXRlciB2ZXJz aW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisrCisrI2lmbmRlZiBfR0xfU1lTX0xJTUlUU19ICisrI2RlZmluZSBf R0xfU1lTX0xJTUlUU19ICisrCisrI2luY2x1ZGUgPGxpbWl0cy5oPgorKworKy8qIE1heGltdW0g bnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgb3Igd3JpdGUgaW4gYSBzaW5nbGUgc3lzdGVtIGNhbGwu CisrICAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzeXN0ZW0gY2FsbHMgbGlrZSBzZW5kZmlsZSBv biBHTlUvTGludXgsCisrICAgd2hpY2ggZG8gbm90IGhhbmRsZSBtb3JlIHRoYW4gTUFYX1JXX0NP VU5UIGJ5dGVzIGNvcnJlY3RseS4KKysgICBUaGUgTGludXgga2VybmVsIE1BWF9SV19DT1VOVCBp cyBhdCBsZWFzdCBJTlRfTUFYID4+IDIwIDw8IDIwLAorKyAgIHdoZXJlIHRoZSAyMCBjb21lcyBm cm9tIHRoZSBIZXhhZ29uIHBvcnQgd2l0aCAxIE1pQiBwYWdlczsgdXNlIHRoYXQKKysgICBhcyBh biBhcHByb3hpbWF0aW9uLCBhcyB0aGUgZXhhY3QgdmFsdWUgbWF5IG5vdCBiZSBhdmFpbGFibGUg dG8gdXMuCisrCisrICAgVXNpbmcgdGhpcyBhbHNvIHdvcmtzIGFyb3VuZCBhIHNlcmlvdXMgTGlu dXggYnVnIGJlZm9yZSAyLjYuMTY7IHNlZQorKyAgIDxodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5j b20vc2hvd19idWcuY2dpP2lkPTYxMjgzOT4uCisrCisrICAgVXNpbmcgdGhpcyBhbHNvIHdvcmtz IGFyb3VuZCBhIFRydTY0IDUuMSBidWcsIHdoZXJlIGF0dGVtcHRpbmcKKysgICB0byByZWFkIElO VF9NQVggYnl0ZXMgZmFpbHMgd2l0aCBlcnJubyA9PSBFSU5WQUwuICBTZWUKKysgICA8aHR0cHM6 Ly9saXN0cy5nbnUub3JnL3IvYnVnLWdudS11dGlscy8yMDAyLTA0L21zZzAwMDEwLmh0bWw+Lgor KworKyAgIFVzaW5nIHRoaXMgaXMgbGlrZWx5IHRvIHdvcmsgYXJvdW5kIHNpbWlsYXIgYnVncyBp biBvdGhlciBvcGVyYXRpbmcKKysgICBzeXN0ZW1zLiAgKi8KKysKKytlbnVtIHsgU1lTX0JVRlNJ WkVfTUFYID0gSU5UX01BWCA+PiAyMCA8PCAyMCB9OworKworKyNlbmRpZgorZGlmZiAtLWdpdCBh L200L3NhZmUtcmVhZC5tNCBiL200L3NhZmUtcmVhZC5tNAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLjNjYmEyODgKKy0tLSAvZGV2L251bGwKKysrKyBiL200L3NhZmUtcmVh ZC5tNAorQEAgLTAsMCArMSwxMiBAQAorKyMgc2FmZS1yZWFkLm00IHNlcmlhbCA2CisrZG5sIENv cHlyaWdodCAoQykgMjAwMi0yMDAzLCAyMDA1LTIwMDYsIDIwMDktMjAyMSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sCisrZG5sIEluYy4KKytkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKytkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1p c3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKytkbmwgd2l0aCBvciB3aXRob3V0 IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorKwor KyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvc2FmZS1yZWFkLmMuCisrQUNfREVGVU4oW2dsX1BSRVJF UV9TQUZFX1JFQURdLAorK1sKKysgIEFDX1JFUVVJUkUoW2d0X1RZUEVfU1NJWkVfVF0pCisrXSkK K2RpZmYgLS1naXQgYS9saWIvZnVsbC13cml0ZS5jIGIvbGliL2Z1bGwtd3JpdGUuYworbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjJjMGUwNmIKKy0tLSAvZGV2L251bGwKKysr KyBiL2xpYi9mdWxsLXdyaXRlLmMKK0BAIC0wLDAgKzEsNzkgQEAKKysvKiBBbiBpbnRlcmZhY2Ug dG8gcmVhZCBhbmQgd3JpdGUgdGhhdCByZXRyaWVzIChpZiBuZWNlc3NhcnkpIHVudGlsIGNvbXBs ZXRlLgorKworKyAgIENvcHlyaWdodCAoQykgMTk5My0xOTk0LCAxOTk3LTIwMDYsIDIwMDktMjAy MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxjb25maWcuaD4KKysKKysvKiBT cGVjaWZpY2F0aW9uLiAgKi8KKysjaWZkZWYgRlVMTF9SRUFECisrIyBpbmNsdWRlICJmdWxsLXJl YWQuaCIKKysjZWxzZQorKyMgaW5jbHVkZSAiZnVsbC13cml0ZS5oIgorKyNlbmRpZgorKworKyNp bmNsdWRlIDxlcnJuby5oPgorKworKyNpZmRlZiBGVUxMX1JFQUQKKysjIGluY2x1ZGUgInNhZmUt cmVhZC5oIgorKyMgZGVmaW5lIHNhZmVfcncgc2FmZV9yZWFkCisrIyBkZWZpbmUgZnVsbF9ydyBm dWxsX3JlYWQKKysjIHVuZGVmIGNvbnN0CisrIyBkZWZpbmUgY29uc3QgLyogZW1wdHkgKi8KKysj ZWxzZQorKyMgaW5jbHVkZSAic2FmZS13cml0ZS5oIgorKyMgZGVmaW5lIHNhZmVfcncgc2FmZV93 cml0ZQorKyMgZGVmaW5lIGZ1bGxfcncgZnVsbF93cml0ZQorKyNlbmRpZgorKworKyNpZmRlZiBG VUxMX1JFQUQKKysvKiBTZXQgZXJybm8gdG8gemVybyB1cG9uIEVPRi4gICovCisrIyBkZWZpbmUg WkVST19CWVRFX1RSQU5TRkVSX0VSUk5PIDAKKysjZWxzZQorKy8qIFNvbWUgYnVnZ3kgZHJpdmVy cyByZXR1cm4gMCB3aGVuIG9uZSB0cmllcyB0byB3cml0ZSBiZXlvbmQKKysgICBhIGRldmljZSdz IGVuZC4gIChFeGFtcGxlOiBMaW51eCAxLjIuMTMgb24gL2Rldi9mZDAuKQorKyAgIFNldCBlcnJu byB0byBFTk9TUEMgc28gdGhleSBnZXQgYSBzZW5zaWJsZSBkaWFnbm9zdGljLiAgKi8KKysjIGRl ZmluZSBaRVJPX0JZVEVfVFJBTlNGRVJfRVJSTk8gRU5PU1BDCisrI2VuZGlmCisrCisrLyogV3Jp dGUocmVhZCkgQ09VTlQgYnl0ZXMgYXQgQlVGIHRvKGZyb20pIGRlc2NyaXB0b3IgRkQsIHJldHJ5 aW5nIGlmCisrICAgaW50ZXJydXB0ZWQgb3IgaWYgYSBwYXJ0aWFsIHdyaXRlKHJlYWQpIG9jY3Vy cy4gIFJldHVybiB0aGUgbnVtYmVyCisrICAgb2YgYnl0ZXMgdHJhbnNmZXJyZWQuCisrICAgV2hl biB3cml0aW5nLCBzZXQgZXJybm8gaWYgZmV3ZXIgdGhhbiBDT1VOVCBieXRlcyBhcmUgd3JpdHRl bi4KKysgICBXaGVuIHJlYWRpbmcsIGlmIGZld2VyIHRoYW4gQ09VTlQgYnl0ZXMgYXJlIHJlYWQs IHlvdSBtdXN0IGV4YW1pbmUKKysgICBlcnJubyB0byBkaXN0aW5ndWlzaCBmYWlsdXJlIGZyb20g RU9GIChlcnJubyA9PSAwKS4gICovCisrc2l6ZV90CisrZnVsbF9ydyAoaW50IGZkLCBjb25zdCB2 b2lkICpidWYsIHNpemVfdCBjb3VudCkKKyt7CisrICBzaXplX3QgdG90YWwgPSAwOworKyAgY29u c3QgY2hhciAqcHRyID0gKGNvbnN0IGNoYXIgKikgYnVmOworKworKyAgd2hpbGUgKGNvdW50ID4g MCkKKysgICAgeworKyAgICAgIHNpemVfdCBuX3J3ID0gc2FmZV9ydyAoZmQsIHB0ciwgY291bnQp OworKyAgICAgIGlmIChuX3J3ID09IChzaXplX3QpIC0xKQorKyAgICAgICAgYnJlYWs7CisrICAg ICAgaWYgKG5fcncgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgZXJybm8gPSBaRVJPX0JZ VEVfVFJBTlNGRVJfRVJSTk87CisrICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICAg IHRvdGFsICs9IG5fcnc7CisrICAgICAgcHRyICs9IG5fcnc7CisrICAgICAgY291bnQgLT0gbl9y dzsKKysgICAgfQorKworKyAgcmV0dXJuIHRvdGFsOworK30KK2RpZmYgLS1naXQgYS9saWIvZnVs bC13cml0ZS5oIGIvbGliL2Z1bGwtd3JpdGUuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjZjNGUyOGEKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYi9mdWxsLXdyaXRlLmgK K0BAIC0wLDAgKzEsMzQgQEAKKysvKiBBbiBpbnRlcmZhY2UgdG8gd3JpdGUoKSB0aGF0IHdyaXRl cyBhbGwgaXQgaXMgYXNrZWQgdG8gd3JpdGUuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDAyLTIw MDMsIDIwMDktMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisr ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRkZWYu aD4KKysKKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5kaWYKKysK KysKKysvKiBXcml0ZSBDT1VOVCBieXRlcyBhdCBCVUYgdG8gZGVzY3JpcHRvciBGRCwgcmV0cnlp bmcgaWYgaW50ZXJydXB0ZWQKKysgICBvciBpZiBwYXJ0aWFsIHdyaXRlcyBvY2N1ci4gIFJldHVy biB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN1Y2Nlc3NmdWxseQorKyAgIHdyaXR0ZW4sIHNldHRpbmcg ZXJybm8gaWYgdGhhdCBpcyBsZXNzIHRoYW4gQ09VTlQuICAqLworK2V4dGVybiBzaXplX3QgZnVs bF93cml0ZSAoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCk7CisrCisrCisr I2lmZGVmIF9fY3BsdXNwbHVzCisrfQorKyNlbmRpZgorZGlmZiAtLWdpdCBhL2xpYi91dGltZW5z LmMgYi9saWIvdXRpbWVucy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u MDZkMWFhMworLS0tIC9kZXYvbnVsbAorKysrIGIvbGliL3V0aW1lbnMuYworQEAgLTAsMCArMSw2 NDcgQEAKKysvKiBTZXQgZmlsZSBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lcy4KKysKKysg ICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgYW55Cisr ICAgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBXcml0dGVuIGJ5IFBhdWwgRWdn ZXJ0LiAgKi8KKysKKysvKiBkZXJpdmVkIGZyb20gYSBmdW5jdGlvbiBpbiB0b3VjaC5jICovCisr CisrI2luY2x1ZGUgPGNvbmZpZy5oPgorKworKyNkZWZpbmUgX0dMX1VUSU1FTlNfSU5MSU5FIF9H TF9FWFRFUk5fSU5MSU5FCisrI2luY2x1ZGUgInV0aW1lbnMuaCIKKysKKysjaW5jbHVkZSA8ZXJy bm8uaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8c3RkYm9vbC5oPgorKyNpbmNs dWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8c3lzL3Rp bWUuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHV0aW1lLmg+CisrCisrI2lu Y2x1ZGUgInN0YXQtdGltZS5oIgorKyNpbmNsdWRlICJ0aW1lc3BlYy5oIgorKworKy8qIE9uIG5h dGl2ZSBXaW5kb3dzLCB1c2UgU2V0RmlsZVRpbWU7IGJ1dCBhdm9pZCB0aGlzIHdoZW4gY29tcGls aW5nCisrICAgR05VIEVtYWNzLCB3aGljaCBhcnJhbmdlcyBmb3IgdGhpcyBpbiBzb21lIG90aGVy IHdheSBhbmQgd2hpY2gKKysgICBkZWZpbmVzIFdJTjMyX0xFQU5fQU5EX01FQU4gaXRzZWxmLiAg Ki8KKysKKysjaWYgZGVmaW5lZCBfV0lOMzIgJiYgISBkZWZpbmVkIF9fQ1lHV0lOX18gJiYgISBk ZWZpbmVkIEVNQUNTX0NPTkZJR1VSQVRJT04KKysjIGRlZmluZSBVU0VfU0VURklMRVRJTUUKKysj IGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisrIyBpbmNsdWRlIDx3aW5kb3dzLmg+CisrIyBp ZiBHTlVMSUJfTVNWQ19OT1RIUk9XCisrIyAgaW5jbHVkZSAibXN2Yy1ub3Rocm93LmgiCisrIyBl bHNlCisrIyAgaW5jbHVkZSA8aW8uaD4KKysjIGVuZGlmCisrI2VuZGlmCisrCisrLyogQXZvaWQg cmVjdXJzaW9uIHdpdGggcnBsX2Z1dGltZW5zIG9yIHJwbF91dGltZW5zYXQuICAqLworKyN1bmRl ZiBmdXRpbWVucworKyNpZiAhSEFWRV9ORUFSTFlfV09SS0lOR19VVElNRU5TQVQKKysjIHVuZGVm IHV0aW1lbnNhdAorKyNlbmRpZgorKworKy8qIFNvbGFyaXMgOSBtaXN0YWtlbmx5IHN1Y2NlZWRz IHdoZW4gZ2l2ZW4gYSBub24tZGlyZWN0b3J5IHdpdGggYQorKyAgIHRyYWlsaW5nIHNsYXNoLiAg Rm9yY2UgdGhlIHVzZSBvZiBycGxfc3RhdCBmb3IgYSBmaXguICAqLworKyNpZm5kZWYgUkVQTEFD RV9GVU5DX1NUQVRfRklMRQorKyMgZGVmaW5lIFJFUExBQ0VfRlVOQ19TVEFUX0ZJTEUgMAorKyNl bmRpZgorKworKyNpZiBIQVZFX1VUSU1FTlNBVCB8fCBIQVZFX0ZVVElNRU5TCisrLyogQ2FjaGUg dmFyaWFibGVzIGZvciB3aGV0aGVyIHRoZSB1dGltZW5zYXQgc3lzY2FsbCB3b3JrczsgdXNlZCB0 bworKyAgIGF2b2lkIGNhbGxpbmcgdGhlIHN5c2NhbGwgaWYgd2Uga25vdyBpdCB3aWxsIGp1c3Qg ZmFpbCB3aXRoIEVOT1NZUywKKysgICBhbmQgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd29yayBpbiBt YXNzYWdpbmcgdGltZXN0YW1wcyBpZiB0aGUKKysgICBzeXNjYWxsIHdpbGwgd29yay4gIE11bHRp cGxlIHZhcmlhYmxlcyBhcmUgbmVlZGVkLCB0byBkaXN0aW5ndWlzaAorKyAgIGJldHdlZW4gdGhl IGZvbGxvd2luZyBzY2VuYXJpb3Mgb24gTGludXg6CisrICAgdXRpbWVuc2F0IGRvZXNuJ3QgZXhp c3QsIG9yIGlzIGluIGdsaWJjIGJ1dCBrZXJuZWwgMi42LjE4IGZhaWxzIHdpdGggRU5PU1lTCisr ICAga2VybmVsIDIuNi4yMiBhbmQgZWFybGllciByZWplY3RzIEFUX1NZTUxJTktfTk9GT0xMT1cK KysgICBrZXJuZWwgMi42LjI1IGFuZCBlYXJsaWVyIHJlamVjdCBVVElNRV9OT1cvVVRJTUVfT01J VCB3aXRoIG5vbi16ZXJvIHR2X3NlYworKyAgIGtlcm5lbCAyLjYuMzIgdXNlZCB3aXRoIHhmcyBv ciBudGZzLTNnIGZhaWwgdG8gaG9ub3IgVVRJTUVfT01JVAorKyAgIHV0aW1lbnNhdCBjb21wbGV0 ZWx5IHdvcmtzCisrICAgRm9yIGVhY2ggY2FjaGUgdmFyaWFibGU6IDAgPSB1bmtub3duLCAxID0g eWVzLCAtMSA9IG5vLiAgKi8KKytzdGF0aWMgaW50IHV0aW1lbnNhdF93b3Jrc19yZWFsbHk7Cisr c3RhdGljIGludCBsdXRpbWVuc2F0X3dvcmtzX3JlYWxseTsKKysjZW5kaWYgLyogSEFWRV9VVElN RU5TQVQgfHwgSEFWRV9GVVRJTUVOUyAqLworKworKy8qIFZhbGlkYXRlIHRoZSByZXF1ZXN0ZWQg dGltZXN0YW1wcy4gIFJldHVybiAwIGlmIHRoZSByZXN1bHRpbmcKKysgICB0aW1lc3BlYyBjYW4g YmUgdXNlZCBmb3IgdXRpbWVuc2F0IChhZnRlciBwb3NzaWJseSBtb2RpZnlpbmcgaXQgdG8KKysg ICB3b3JrIGFyb3VuZCBidWdzIGluIHV0aW1lbnNhdCkuICBSZXR1cm4gYSBwb3NpdGl2ZSB2YWx1 ZSBpZiB0aGUKKysgICB0aW1lc3BlYyBuZWVkcyBmdXJ0aGVyIGFkanVzdG1lbnQgYmFzZWQgb24g c3RhdCByZXN1bHRzOiAxIGlmIGFueQorKyAgIGFkanVzdG1lbnQgaXMgbmVlZGVkIGZvciB1dGlt ZXMsIGFuZCAyIGlmIGFueSBhZGp1c3RtZW50IGlzIG5lZWRlZAorKyAgIGZvciBMaW51eCB1dGlt ZW5zYXQuICBSZXR1cm4gLTEsIHdpdGggZXJybm8gc2V0IHRvIEVJTlZBTCwgaWYKKysgICB0aW1l c3BlYyBpcyBvdXQgb2YgcmFuZ2UuICAqLworK3N0YXRpYyBpbnQKKyt2YWxpZGF0ZV90aW1lc3Bl YyAoc3RydWN0IHRpbWVzcGVjIHRpbWVzcGVjWzJdKQorK3sKKysgIGludCByZXN1bHQgPSAwOwor KyAgaW50IHV0aW1lX29taXRfY291bnQgPSAwOworKyAgaWYgKCh0aW1lc3BlY1swXS50dl9uc2Vj ICE9IFVUSU1FX05PVworKyAgICAgICAmJiB0aW1lc3BlY1swXS50dl9uc2VjICE9IFVUSU1FX09N SVQKKysgICAgICAgJiYgISAoMCA8PSB0aW1lc3BlY1swXS50dl9uc2VjCisrICAgICAgICAgICAg ICYmIHRpbWVzcGVjWzBdLnR2X25zZWMgPCBUSU1FU1BFQ19IWikpCisrICAgICAgfHwgKHRpbWVz cGVjWzFdLnR2X25zZWMgIT0gVVRJTUVfTk9XCisrICAgICAgICAgICYmIHRpbWVzcGVjWzFdLnR2 X25zZWMgIT0gVVRJTUVfT01JVAorKyAgICAgICAgICAmJiAhICgwIDw9IHRpbWVzcGVjWzFdLnR2 X25zZWMKKysgICAgICAgICAgICAgICAgJiYgdGltZXNwZWNbMV0udHZfbnNlYyA8IFRJTUVTUEVD X0haKSkpCisrICAgIHsKKysgICAgICBlcnJubyA9IEVJTlZBTDsKKysgICAgICByZXR1cm4gLTE7 CisrICAgIH0KKysgIC8qIFdvcmsgYXJvdW5kIExpbnV4IGtlcm5lbCAyLjYuMjUgYnVnLCB3aGVy ZSB1dGltZW5zYXQgZmFpbHMgd2l0aAorKyAgICAgRUlOVkFMIGlmIHR2X3NlYyBpcyBub3QgMCB3 aGVuIHVzaW5nIHRoZSBmbGFnIHZhbHVlcyBvZiB0dl9uc2VjLgorKyAgICAgRmxhZyBhIExpbnV4 IGtlcm5lbCAyLjYuMzIgYnVnLCB3aGVyZSBhbiBtdGltZSBvZiBVVElNRV9PTUlUCisrICAgICBm YWlscyB0byBidW1wIGN0aW1lLiAgKi8KKysgIGlmICh0aW1lc3BlY1swXS50dl9uc2VjID09IFVU SU1FX05PVworKyAgICAgIHx8IHRpbWVzcGVjWzBdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkKKysg ICAgeworKyAgICAgIHRpbWVzcGVjWzBdLnR2X3NlYyA9IDA7CisrICAgICAgcmVzdWx0ID0gMTsK KysgICAgICBpZiAodGltZXNwZWNbMF0udHZfbnNlYyA9PSBVVElNRV9PTUlUKQorKyAgICAgICAg dXRpbWVfb21pdF9jb3VudCsrOworKyAgICB9CisrICBpZiAodGltZXNwZWNbMV0udHZfbnNlYyA9 PSBVVElNRV9OT1cKKysgICAgICB8fCB0aW1lc3BlY1sxXS50dl9uc2VjID09IFVUSU1FX09NSVQp CisrICAgIHsKKysgICAgICB0aW1lc3BlY1sxXS50dl9zZWMgPSAwOworKyAgICAgIHJlc3VsdCA9 IDE7CisrICAgICAgaWYgKHRpbWVzcGVjWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkKKysgICAg ICAgIHV0aW1lX29taXRfY291bnQrKzsKKysgICAgfQorKyAgcmV0dXJuIHJlc3VsdCArICh1dGlt ZV9vbWl0X2NvdW50ID09IDEpOworK30KKysKKysvKiBOb3JtYWxpemUgYW55IFVUSU1FX05PVyBv ciBVVElNRV9PTUlUIHZhbHVlcyBpbiAoKlRTKVswXSBhbmQgKCpUUylbMV0sCisrICAgdXNpbmcg U1RBVEJVRiB0byBvYnRhaW4gdGhlIGN1cnJlbnQgdGltZXN0YW1wcyBvZiB0aGUgZmlsZS4gIElm CisrICAgYm90aCB0aW1lcyBhcmUgVVRJTUVfTk9XLCBzZXQgKlRTIHRvIE5VTEwgKGFzIHRoaXMg Y2FuIGF2b2lkIHNvbWUKKysgICBwZXJtaXNzaW9ucyBpc3N1ZXMpLiAgSWYgYm90aCB0aW1lcyBh cmUgVVRJTUVfT01JVCwgcmV0dXJuIHRydWUKKysgICAobm90aGluZyBmdXJ0aGVyIGJleW9uZCB0 aGUgcHJpb3IgY29sbGVjdGlvbiBvZiBTVEFUQlVGIGlzCisrICAgbmVjZXNzYXJ5KTsgb3RoZXJ3 aXNlIHJldHVybiBmYWxzZS4gICovCisrc3RhdGljIGJvb2wKKyt1cGRhdGVfdGltZXNwZWMgKHN0 cnVjdCBzdGF0IGNvbnN0ICpzdGF0YnVmLCBzdHJ1Y3QgdGltZXNwZWMgKip0cykKKyt7CisrICBz dHJ1Y3QgdGltZXNwZWMgKnRpbWVzcGVjID0gKnRzOworKyAgaWYgKHRpbWVzcGVjWzBdLnR2X25z ZWMgPT0gVVRJTUVfT01JVAorKyAgICAgICYmIHRpbWVzcGVjWzFdLnR2X25zZWMgPT0gVVRJTUVf T01JVCkKKysgICAgcmV0dXJuIHRydWU7CisrICBpZiAodGltZXNwZWNbMF0udHZfbnNlYyA9PSBV VElNRV9OT1cKKysgICAgICAmJiB0aW1lc3BlY1sxXS50dl9uc2VjID09IFVUSU1FX05PVykKKysg ICAgeworKyAgICAgICp0cyA9IE5VTEw7CisrICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9Cisr CisrICBpZiAodGltZXNwZWNbMF0udHZfbnNlYyA9PSBVVElNRV9PTUlUKQorKyAgICB0aW1lc3Bl Y1swXSA9IGdldF9zdGF0X2F0aW1lIChzdGF0YnVmKTsKKysgIGVsc2UgaWYgKHRpbWVzcGVjWzBd LnR2X25zZWMgPT0gVVRJTUVfTk9XKQorKyAgICBnZXR0aW1lICgmdGltZXNwZWNbMF0pOworKwor KyAgaWYgKHRpbWVzcGVjWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkKKysgICAgdGltZXNwZWNb MV0gPSBnZXRfc3RhdF9tdGltZSAoc3RhdGJ1Zik7CisrICBlbHNlIGlmICh0aW1lc3BlY1sxXS50 dl9uc2VjID09IFVUSU1FX05PVykKKysgICAgZ2V0dGltZSAoJnRpbWVzcGVjWzFdKTsKKysKKysg IHJldHVybiBmYWxzZTsKKyt9CisrCisrLyogU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlv biB0aW1lc3RhbXBzIG9mIEZEIChhLmsuYS4gRklMRSkgdG8gYmUKKysgICBUSU1FU1BFQ1swXSBh bmQgVElNRVNQRUNbMV0sIHJlc3BlY3RpdmVseS4KKysgICBGRCBtdXN0IGJlIGVpdGhlciBuZWdh dGl2ZSAtLSBpbiB3aGljaCBjYXNlIGl0IGlzIGlnbm9yZWQgLS0KKysgICBvciBhIGZpbGUgZGVz Y3JpcHRvciB0aGF0IGlzIG9wZW4gb24gRklMRS4KKysgICBJZiBGRCBpcyBub25uZWdhdGl2ZSwg dGhlbiBGSUxFIGNhbiBiZSBOVUxMLCB3aGljaCBtZWFucworKyAgIHVzZSBqdXN0IGZ1dGltZXMg KG9yIGVxdWl2YWxlbnQpIGluc3RlYWQgb2YgdXRpbWVzIChvciBlcXVpdmFsZW50KSwKKysgICBh bmQgZmFpbCBpZiBvbiBhbiBvbGQgc3lzdGVtIHdpdGhvdXQgZnV0aW1lcyAob3IgZXF1aXZhbGVu dCkuCisrICAgSWYgVElNRVNQRUMgaXMgbnVsbCwgc2V0IHRoZSB0aW1lc3RhbXBzIHRvIHRoZSBj dXJyZW50IHRpbWUuCisrICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgKHNldHRpbmcgZXJybm8p IG9uIGZhaWx1cmUuICAqLworKworK2ludAorK2ZkdXRpbWVucyAoaW50IGZkLCBjaGFyIGNvbnN0 ICpmaWxlLCBzdHJ1Y3QgdGltZXNwZWMgY29uc3QgdGltZXNwZWNbMl0pCisreworKyAgc3RydWN0 IHRpbWVzcGVjIGFkanVzdGVkX3RpbWVzcGVjWzJdOworKyAgc3RydWN0IHRpbWVzcGVjICp0cyA9 IHRpbWVzcGVjID8gYWRqdXN0ZWRfdGltZXNwZWMgOiBOVUxMOworKyAgaW50IGFkanVzdG1lbnRf bmVlZGVkID0gMDsKKysgIHN0cnVjdCBzdGF0IHN0OworKworKyAgaWYgKHRzKQorKyAgICB7Cisr ICAgICAgYWRqdXN0ZWRfdGltZXNwZWNbMF0gPSB0aW1lc3BlY1swXTsKKysgICAgICBhZGp1c3Rl ZF90aW1lc3BlY1sxXSA9IHRpbWVzcGVjWzFdOworKyAgICAgIGFkanVzdG1lbnRfbmVlZGVkID0g dmFsaWRhdGVfdGltZXNwZWMgKHRzKTsKKysgICAgfQorKyAgaWYgKGFkanVzdG1lbnRfbmVlZGVk IDwgMCkKKysgICAgcmV0dXJuIC0xOworKworKyAgLyogUmVxdWlyZSB0aGF0IGF0IGxlYXN0IG9u ZSBvZiBGRCBvciBGSUxFIGFyZSBwb3RlbnRpYWxseSB2YWxpZCwgdG8gYXZvaWQKKysgICAgIGEg TGludXggYnVnIHdoZXJlIGZ1dGltZW5zIChBVF9GRENXRCwgTlVMTCkgY2hhbmdlcyAiLiIgcmF0 aGVyCisrICAgICB0aGFuIGZhaWxpbmcuICAqLworKyAgaWYgKGZkIDwgMCAmJiAhZmlsZSkKKysg ICAgeworKyAgICAgIGVycm5vID0gRUJBREY7CisrICAgICAgcmV0dXJuIC0xOworKyAgICB9Cisr CisrICAvKiBTb21lIExpbnV4LWJhc2VkIE5GUyBjbGllbnRzIGFyZSBidWdneSwgYW5kIG1pc2hh bmRsZSB0aW1lc3RhbXBzCisrICAgICBvZiBmaWxlcyBpbiBORlMgZmlsZSBzeXN0ZW1zIGluIHNv bWUgY2FzZXMuICBXZSBoYXZlIG5vCisrICAgICBjb25maWd1cmUtdGltZSB0ZXN0IGZvciB0aGlz LCBidXQgcGxlYXNlIHNlZQorKyAgICAgPGh0dHBzOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVn LmNnaT9pZD0xMzI2NzM+IGZvciByZWZlcmVuY2VzIHRvCisrICAgICBzb21lIG9mIHRoZSBwcm9i bGVtcyB3aXRoIExpbnV4IDIuNi4xNi4gIElmIHRoaXMgYWZmZWN0cyB5b3UsCisrICAgICBjb21w aWxlIHdpdGggLURIQVZFX0JVR0dZX05GU19USU1FX1NUQU1QUzsgdGhpcyBpcyByZXBvcnRlZCB0 bworKyAgICAgaGVscCBpbiBzb21lIGNhc2VzLCBhbGJlaXQgYXQgYSBjb3N0IGluIHBlcmZvcm1h bmNlLiAgQnV0IHlvdQorKyAgICAgcmVhbGx5IHNob3VsZCB1cGdyYWRlIHlvdXIga2VybmVsIHRv IGEgZml4ZWQgdmVyc2lvbiwgc2luY2UgdGhlCisrICAgICBwcm9ibGVtIGFmZmVjdHMgbWFueSBh cHBsaWNhdGlvbnMuICAqLworKworKyNpZiBIQVZFX0JVR0dZX05GU19USU1FX1NUQU1QUworKyAg aWYgKGZkIDwgMCkKKysgICAgc3luYyAoKTsKKysgIGVsc2UKKysgICAgZnN5bmMgKGZkKTsKKysj ZW5kaWYKKysKKysgIC8qIFBPU0lYIDIwMDggYWRkZWQgdHdvIGludGVyZmFjZXMgdG8gc2V0IGZp bGUgdGltZXN0YW1wcyB3aXRoCisrICAgICBuYW5vc2Vjb25kIHJlc29sdXRpb247IG5ld2VyIExp bnV4IGltcGxlbWVudHMgYm90aCBmdW5jdGlvbnMgdmlhCisrICAgICBhIHNpbmdsZSBzeXNjYWxs LiAgV2UgcHJvdmlkZSBhIGZhbGxiYWNrIGZvciBFTk9TWVMgKGZvciBleGFtcGxlLAorKyAgICAg Y29tcGlsaW5nIGFnYWluc3QgTGludXggMi42LjI1IGtlcm5lbCBoZWFkZXJzIGFuZCBnbGliYyAy LjcsIGJ1dAorKyAgICAgcnVubmluZyBvbiBMaW51eCAyLjYuMTgga2VybmVsKS4gICovCisrI2lm IEhBVkVfVVRJTUVOU0FUIHx8IEhBVkVfRlVUSU1FTlMKKysgIGlmICgwIDw9IHV0aW1lbnNhdF93 b3Jrc19yZWFsbHkpCisrICAgIHsKKysgICAgICBpbnQgcmVzdWx0OworKyMgaWYgX19saW51eF9f IHx8IF9fc3VuCisrICAgICAgLyogQXMgcmVjZW50bHkgYXMgTGludXgga2VybmVsIDIuNi4zMiAo RGVjIDIwMDkpLCBzZXZlcmFsIGZpbGUKKysgICAgICAgICBzeXN0ZW1zICh4ZnMsIG50ZnMtM2cp IGhhdmUgYnVncyB3aXRoIGEgc2luZ2xlIFVUSU1FX09NSVQsCisrICAgICAgICAgYnV0IHdvcmsg aWYgYm90aCB0aW1lcyBhcmUgZWl0aGVyIGV4cGxpY2l0bHkgc3BlY2lmaWVkIG9yCisrICAgICAg ICAgVVRJTUVfTk9XLiAgV29yayBhcm91bmQgaXQgd2l0aCBhIHByZXBhcmF0b3J5IFtmXXN0YXQg cHJpb3IKKysgICAgICAgICB0byBjYWxsaW5nIGZ1dGltZW5zL3V0aW1lbnNhdDsgZm9ydHVuYXRl bHksIHRoZXJlIGlzIG5vdCBtdWNoCisrICAgICAgICAgdGltaW5nIGltcGFjdCBkdWUgdG8gdGhl IGV4dHJhIHN5c2NhbGwgZXZlbiBvbiBmaWxlIHN5c3RlbXMKKysgICAgICAgICB3aGVyZSBVVElN RV9PTUlUIHdvdWxkIGhhdmUgd29ya2VkLgorKworKyAgICAgICAgIFRoZSBzYW1lIGJ1ZyBvY2N1 cnMgaW4gU29sYXJpcyAxMS4xIChBcHIgMjAxMykuCisrCisrICAgICAgICAgRklYTUU6IFNpbXBs aWZ5IHRoaXMgZm9yIExpbnV4IGluIDIwMTYgYW5kIGZvciBTb2xhcmlzIGluCisrICAgICAgICAg MjAyNCwgd2hlbiBmaWxlIHN5c3RlbSBidWdzIGFyZSBubyBsb25nZXIgY29tbW9uLiAgKi8KKysg ICAgICBpZiAoYWRqdXN0bWVudF9uZWVkZWQgPT0gMikKKysgICAgICAgIHsKKysgICAgICAgICAg aWYgKGZkIDwgMCA/IHN0YXQgKGZpbGUsICZzdCkgOiBmc3RhdCAoZmQsICZzdCkpCisrICAgICAg ICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgICBpZiAodHNbMF0udHZfbnNlYyA9PSBVVElNRV9P TUlUKQorKyAgICAgICAgICAgIHRzWzBdID0gZ2V0X3N0YXRfYXRpbWUgKCZzdCk7CisrICAgICAg ICAgIGVsc2UgaWYgKHRzWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkKKysgICAgICAgICAgICB0 c1sxXSA9IGdldF9zdGF0X210aW1lICgmc3QpOworKyAgICAgICAgICAvKiBOb3RlIHRoYXQgc3Qg aXMgZ29vZCwgaW4gY2FzZSB1dGltZW5zYXQgZ2l2ZXMgRU5PU1lTLiAgKi8KKysgICAgICAgICAg YWRqdXN0bWVudF9uZWVkZWQrKzsKKysgICAgICAgIH0KKysjIGVuZGlmCisrIyBpZiBIQVZFX1VU SU1FTlNBVAorKyAgICAgIGlmIChmZCA8IDApCisrICAgICAgICB7CisrIyAgaWYgZGVmaW5lZCBf X0FQUExFX18gJiYgZGVmaW5lZCBfX01BQ0hfXworKyAgICAgICAgICBzaXplX3QgbGVuID0gc3Ry bGVuIChmaWxlKTsKKysgICAgICAgICAgaWYgKGxlbiA+IDAgJiYgZmlsZVtsZW4gLSAxXSA9PSAn LycpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsK KysgICAgICAgICAgICAgIGlmIChzdGF0IChmaWxlLCAmc3RhdGJ1ZikgPCAwKQorKyAgICAgICAg ICAgICAgICByZXR1cm4gLTE7CisrICAgICAgICAgICAgICBpZiAoIVNfSVNESVIgKHN0YXRidWYu c3RfbW9kZSkpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICBlcnJubyA9 IEVOT1RESVI7CisrICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgICAgICAg ICB9CisrICAgICAgICAgICAgfQorKyMgIGVuZGlmCisrICAgICAgICAgIHJlc3VsdCA9IHV0aW1l bnNhdCAoQVRfRkRDV0QsIGZpbGUsIHRzLCAwKTsKKysjICBpZmRlZiBfX2xpbnV4X18KKysgICAg ICAgICAgLyogV29yayBhcm91bmQgYSBrZXJuZWwgYnVnOgorKyAgICAgICAgICAgICBodHRwczov L2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTQ0MjM1MgorKyAgICAgICAgICAg ICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTQ0OTkxMAorKyAg ICAgICAgICAgICBJdCBhcHBlYXJzIHRoYXQgdXRpbWVuc2F0IGNhbiBtaXN0YWtlbmx5IHJldHVy biAyODAgcmF0aGVyCisrICAgICAgICAgICAgIHRoYW4gLTEgdXBvbiBFTk9TWVMgZmFpbHVyZS4K KysgICAgICAgICAgICAgRklYTUU6IHJlbW92ZSBpbiAyMDEwIG9yIHdoZW5ldmVyIHRoZSBvZmZl bmRpbmcga2VybmVscworKyAgICAgICAgICAgICBhcmUgbm8gbG9uZ2VyIGluIGNvbW1vbiB1c2Uu ICAqLworKyAgICAgICAgICBpZiAoMCA8IHJlc3VsdCkKKysgICAgICAgICAgICBlcnJubyA9IEVO T1NZUzsKKysjICBlbmRpZiAvKiBfX2xpbnV4X18gKi8KKysgICAgICAgICAgaWYgKHJlc3VsdCA9 PSAwIHx8IGVycm5vICE9IEVOT1NZUykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICB1 dGltZW5zYXRfd29ya3NfcmVhbGx5ID0gMTsKKysgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyMgZW5kaWYgLyogSEFWRV9VVElNRU5TQVQg Ki8KKysjIGlmIEhBVkVfRlVUSU1FTlMKKysgICAgICBpZiAoMCA8PSBmZCkKKysgICAgICAgIHsK KysgICAgICAgICAgcmVzdWx0ID0gZnV0aW1lbnMgKGZkLCB0cyk7CisrIyAgaWZkZWYgX19saW51 eF9fCisrICAgICAgICAgIC8qIFdvcmsgYXJvdW5kIHRoZSBzYW1lIGJ1ZyBhcyBhYm92ZS4gICov CisrICAgICAgICAgIGlmICgwIDwgcmVzdWx0KQorKyAgICAgICAgICAgIGVycm5vID0gRU5PU1lT OworKyMgIGVuZGlmIC8qIF9fbGludXhfXyAqLworKyAgICAgICAgICBpZiAocmVzdWx0ID09IDAg fHwgZXJybm8gIT0gRU5PU1lTKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIHV0aW1l bnNhdF93b3Jrc19yZWFsbHkgPSAxOworKyAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKysg ICAgICAgICAgICB9CisrICAgICAgICB9CisrIyBlbmRpZiAvKiBIQVZFX0ZVVElNRU5TICovCisr ICAgIH0KKysgIHV0aW1lbnNhdF93b3Jrc19yZWFsbHkgPSAtMTsKKysgIGx1dGltZW5zYXRfd29y a3NfcmVhbGx5ID0gLTE7CisrI2VuZGlmIC8qIEhBVkVfVVRJTUVOU0FUIHx8IEhBVkVfRlVUSU1F TlMgKi8KKysKKysjaWZkZWYgVVNFX1NFVEZJTEVUSU1FCisrICAvKiBPbiBuYXRpdmUgV2luZG93 cywgdXNlIFNldEZpbGVUaW1lKCkuIFNlZQorKyAgICAgPGh0dHBzOi8vZG9jcy5taWNyb3NvZnQu Y29tL2VuLXVzL3dpbmRvd3MvZGVza3RvcC9hcGkvZmlsZWFwaS9uZi1maWxlYXBpLXNldGZpbGV0 aW1lPgorKyAgICAgPGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvZGVz a3RvcC9hcGkvbWlud2luYmFzZS9ucy1taW53aW5iYXNlLWZpbGV0aW1lPiAgKi8KKysgIGlmICgw IDw9IGZkKQorKyAgICB7CisrICAgICAgSEFORExFIGhhbmRsZTsKKysgICAgICBGSUxFVElNRSBj dXJyZW50X3RpbWU7CisrICAgICAgRklMRVRJTUUgbGFzdF9hY2Nlc3NfdGltZTsKKysgICAgICBG SUxFVElNRSBsYXN0X3dyaXRlX3RpbWU7CisrCisrICAgICAgaGFuZGxlID0gKEhBTkRMRSkgX2dl dF9vc2ZoYW5kbGUgKGZkKTsKKysgICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZB TFVFKQorKyAgICAgICAgeworKyAgICAgICAgICBlcnJubyA9IEVCQURGOworKyAgICAgICAgICBy ZXR1cm4gLTE7CisrICAgICAgICB9CisrCisrICAgICAgaWYgKHRzID09IE5VTEwgfHwgdHNbMF0u dHZfbnNlYyA9PSBVVElNRV9OT1cgfHwgdHNbMV0udHZfbnNlYyA9PSBVVElNRV9OT1cpCisrICAg ICAgICB7CisrICAgICAgICAgIC8qIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lCisrICAgICAgICAg ICAgIDxodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL2Rlc2t0b3AvYXBp L3N5c2luZm9hcGkvbmYtc3lzaW5mb2FwaS1nZXRzeXN0ZW10aW1lYXNmaWxldGltZT4uCisrICAg ICAgICAgICAgIEl0IHdvdWxkIGJlIG92ZXJraWxsIHRvIHVzZQorKyAgICAgICAgICAgICBHZXRT eXN0ZW1UaW1lUHJlY2lzZUFzRmlsZVRpbWUKKysgICAgICAgICAgICAgPGh0dHBzOi8vZG9jcy5t aWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvZGVza3RvcC9hcGkvc3lzaW5mb2FwaS9uZi1zeXNp bmZvYXBpLWdldHN5c3RlbXRpbWVwcmVjaXNlYXNmaWxldGltZT4uICAqLworKyAgICAgICAgICBH ZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSAoJmN1cnJlbnRfdGltZSk7CisrICAgICAgICB9CisrCisr ICAgICAgaWYgKHRzID09IE5VTEwgfHwgdHNbMF0udHZfbnNlYyA9PSBVVElNRV9OT1cpCisrICAg ICAgICB7CisrICAgICAgICAgIGxhc3RfYWNjZXNzX3RpbWUgPSBjdXJyZW50X3RpbWU7CisrICAg ICAgICB9CisrICAgICAgZWxzZSBpZiAodHNbMF0udHZfbnNlYyA9PSBVVElNRV9PTUlUKQorKyAg ICAgICAgeworKyAgICAgICAgICBsYXN0X2FjY2Vzc190aW1lLmR3TG93RGF0ZVRpbWUgPSAwOwor KyAgICAgICAgICBsYXN0X2FjY2Vzc190aW1lLmR3SGlnaERhdGVUaW1lID0gMDsKKysgICAgICAg IH0KKysgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgIFVMT05HTE9ORyB0aW1lX3Np bmNlXzE2MDEwMTAxID0KKysgICAgICAgICAgICAoVUxPTkdMT05HKSB0c1swXS50dl9zZWMgKiAx MDAwMDAwMCArIHRzWzBdLnR2X25zZWMgLyAxMDAgKyAxMTY0NDQ3MzYwMDAwMDAwMDBMTDsKKysg ICAgICAgICAgbGFzdF9hY2Nlc3NfdGltZS5kd0xvd0RhdGVUaW1lID0gKERXT1JEKSB0aW1lX3Np bmNlXzE2MDEwMTAxOworKyAgICAgICAgICBsYXN0X2FjY2Vzc190aW1lLmR3SGlnaERhdGVUaW1l ID0gdGltZV9zaW5jZV8xNjAxMDEwMSA+PiAzMjsKKysgICAgICAgIH0KKysKKysgICAgICBpZiAo dHMgPT0gTlVMTCB8fCB0c1sxXS50dl9uc2VjID09IFVUSU1FX05PVykKKysgICAgICAgIHsKKysg ICAgICAgICAgbGFzdF93cml0ZV90aW1lID0gY3VycmVudF90aW1lOworKyAgICAgICAgfQorKyAg ICAgIGVsc2UgaWYgKHRzWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkKKysgICAgICAgIHsKKysg ICAgICAgICAgbGFzdF93cml0ZV90aW1lLmR3TG93RGF0ZVRpbWUgPSAwOworKyAgICAgICAgICBs YXN0X3dyaXRlX3RpbWUuZHdIaWdoRGF0ZVRpbWUgPSAwOworKyAgICAgICAgfQorKyAgICAgIGVs c2UKKysgICAgICAgIHsKKysgICAgICAgICAgVUxPTkdMT05HIHRpbWVfc2luY2VfMTYwMTAxMDEg PQorKyAgICAgICAgICAgIChVTE9OR0xPTkcpIHRzWzFdLnR2X3NlYyAqIDEwMDAwMDAwICsgdHNb MV0udHZfbnNlYyAvIDEwMCArIDExNjQ0NDczNjAwMDAwMDAwMExMOworKyAgICAgICAgICBsYXN0 X3dyaXRlX3RpbWUuZHdMb3dEYXRlVGltZSA9IChEV09SRCkgdGltZV9zaW5jZV8xNjAxMDEwMTsK KysgICAgICAgICAgbGFzdF93cml0ZV90aW1lLmR3SGlnaERhdGVUaW1lID0gdGltZV9zaW5jZV8x NjAxMDEwMSA+PiAzMjsKKysgICAgICAgIH0KKysKKysgICAgICBpZiAoU2V0RmlsZVRpbWUgKGhh bmRsZSwgTlVMTCwgJmxhc3RfYWNjZXNzX3RpbWUsICZsYXN0X3dyaXRlX3RpbWUpKQorKyAgICAg ICAgcmV0dXJuIDA7CisrICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICBEV09SRCBz ZnRfZXJyb3IgPSBHZXRMYXN0RXJyb3IgKCk7CisrICAgICAgICAgICNpZiAwCisrICAgICAgICAg IGZwcmludGYgKHN0ZGVyciwgImZkdXRpbWVucyBTZXRGaWxlVGltZSBlcnJvciAweCV4XG4iLCAo dW5zaWduZWQgaW50KSBzZnRfZXJyb3IpOworKyAgICAgICAgICAjZW5kaWYKKysgICAgICAgICAg c3dpdGNoIChzZnRfZXJyb3IpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgIGNhc2UgRVJS T1JfQUNDRVNTX0RFTklFRDogLyogZmQgd2FzIG9wZW5lZCB3aXRob3V0IE9fUkRXUiAqLworKyAg ICAgICAgICAgICAgZXJybm8gPSBFQUNDRVM7IC8qIG5vdCBzcGVjaWZpZWQgYnkgUE9TSVggKi8K KysgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAg ICAgICBlcnJubyA9IEVJTlZBTDsKKysgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisr CisrICAvKiBUaGUgcGxhdGZvcm0gbGFja3MgYW4gaW50ZXJmYWNlIHRvIHNldCBmaWxlIHRpbWVz dGFtcHMgd2l0aAorKyAgICAgbmFub3NlY29uZCByZXNvbHV0aW9uLCBzbyBkbyB0aGUgYmVzdCB3 ZSBjYW4sIGRpc2NhcmRpbmcgYW55CisrICAgICBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIHRpbWVz dGFtcC4gICovCisrCisrICBpZiAoYWRqdXN0bWVudF9uZWVkZWQgfHwgKFJFUExBQ0VfRlVOQ19T VEFUX0ZJTEUgJiYgZmQgPCAwKSkKKysgICAgeworKyAgICAgIGlmIChhZGp1c3RtZW50X25lZWRl ZCAhPSAzCisrICAgICAgICAgICYmIChmZCA8IDAgPyBzdGF0IChmaWxlLCAmc3QpIDogZnN0YXQg KGZkLCAmc3QpKSkKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgICBpZiAodHMgJiYgdXBkYXRl X3RpbWVzcGVjICgmc3QsICZ0cykpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAg eworKyNpZiBIQVZFX0ZVVElNRVNBVCB8fCBIQVZFX1dPUktJTkdfVVRJTUVTCisrICAgIHN0cnVj dCB0aW1ldmFsIHRpbWV2YWxbMl07CisrICAgIHN0cnVjdCB0aW1ldmFsICp0OworKyAgICBpZiAo dHMpCisrICAgICAgeworKyAgICAgICAgdGltZXZhbFswXS50dl9zZWMgPSB0c1swXS50dl9zZWM7 CisrICAgICAgICB0aW1ldmFsWzBdLnR2X3VzZWMgPSB0c1swXS50dl9uc2VjIC8gMTAwMDsKKysg ICAgICAgIHRpbWV2YWxbMV0udHZfc2VjID0gdHNbMV0udHZfc2VjOworKyAgICAgICAgdGltZXZh bFsxXS50dl91c2VjID0gdHNbMV0udHZfbnNlYyAvIDEwMDA7CisrICAgICAgICB0ID0gdGltZXZh bDsKKysgICAgICB9CisrICAgIGVsc2UKKysgICAgICB0ID0gTlVMTDsKKysKKysgICAgaWYgKGZk IDwgMCkKKysgICAgICB7CisrIyBpZiBIQVZFX0ZVVElNRVNBVAorKyAgICAgICAgcmV0dXJuIGZ1 dGltZXNhdCAoQVRfRkRDV0QsIGZpbGUsIHQpOworKyMgZW5kaWYKKysgICAgICB9CisrICAgIGVs c2UKKysgICAgICB7CisrICAgICAgICAvKiBJZiBmdXRpbWVzYXQgb3IgZnV0aW1lcyBmYWlscyBo ZXJlLCBkb24ndCB0cnkgdG8gc3BlZWQgdGhpbmdzCisrICAgICAgICAgICB1cCBieSByZXR1cm5p bmcgcmlnaHQgYXdheS4gIGdsaWJjIGNhbiBpbmNvcnJlY3RseSBmYWlsIHdpdGgKKysgICAgICAg ICAgIGVycm5vID09IEVOT0VOVCBpZiAvcHJvYyBpc24ndCBtb3VudGVkLiAgQWxzbywgTWFuZHJh a2UgMTAuMAorKyAgICAgICAgICAgaW4gaGlnaCBzZWN1cml0eSBtb2RlIGRvZXNuJ3QgYWxsb3cg b3JkaW5hcnkgdXNlcnMgdG8gcmVhZAorKyAgICAgICAgICAgL3Byb2Mvc2VsZiwgc28gZ2xpYmMg aW5jb3JyZWN0bHkgZmFpbHMgd2l0aCBlcnJubyA9PSBFQUNDRVMuCisrICAgICAgICAgICBJZiBl cnJubyA9PSBFSU8sIEVQRVJNLCBvciBFUk9GUywgaXQncyBwcm9iYWJseSBzYWZlIHRvIGZhaWwK KysgICAgICAgICAgIHJpZ2h0IGF3YXksIGJ1dCB0aGVzZSBjYXNlcyBhcmUgcmFyZSBlbm91Z2gg dGhhdCB0aGV5J3JlIG5vdAorKyAgICAgICAgICAgd29ydGggb3B0aW1pemluZywgYW5kIHdobyBr bm93cyB3aGF0IG90aGVyIG1lc3NlZC11cCBzeXN0ZW1zCisrICAgICAgICAgICBhcmUgb3V0IHRo ZXJlPyAgU28gcGxheSBpdCBzYWZlIGFuZCBmYWxsIGJhY2sgb24gdGhlIGNvZGUKKysgICAgICAg ICAgIGJlbG93LiAgKi8KKysKKysjIGlmIChIQVZFX0ZVVElNRVNBVCAmJiAhRlVUSU1FU0FUX05V TExfQlVHKSB8fCBIQVZFX0ZVVElNRVMKKysjICBpZiBIQVZFX0ZVVElNRVNBVCAmJiAhRlVUSU1F U0FUX05VTExfQlVHCisrIyAgIHVuZGVmIGZ1dGltZXMKKysjICAgZGVmaW5lIGZ1dGltZXMoZmQs IHQpIGZ1dGltZXNhdCAoZmQsIE5VTEwsIHQpCisrIyAgZW5kaWYKKysgICAgICAgIGlmIChmdXRp bWVzIChmZCwgdCkgPT0gMCkKKysgICAgICAgICAgeworKyMgIGlmIF9fbGludXhfXyAmJiBfX0dM SUJDX18KKysgICAgICAgICAgICAvKiBXb3JrIGFyb3VuZCBhIGxvbmdzdGFuZGluZyBnbGliYyBi dWcsIHN0aWxsIHByZXNlbnQgYXMKKysgICAgICAgICAgICAgICBvZiAyMDEwLTEyLTI3LiAgT24g b2xkZXIgTGludXgga2VybmVscyB0aGF0IGxhY2sgYm90aAorKyAgICAgICAgICAgICAgIHV0aW1l bnNhdCBhbmQgdXRpbWVzLCBnbGliYydzIGZ1dGltZXMgcm91bmRzIGluc3RlYWQgb2YKKysgICAg ICAgICAgICAgICB0cnVuY2F0aW5nIHdoZW4gZmFsbGluZyBiYWNrIG9uIHV0aW1lLiAgVGhlIHNh bWUgYnVnCisrICAgICAgICAgICAgICAgb2NjdXJzIGluIGZ1dGltZXNhdCB3aXRoIGEgbnVsbCAy bmQgYXJnLiAgKi8KKysgICAgICAgICAgICBpZiAodCkKKysgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgYm9vbCBhYmlnID0gNTAwMDAwIDw9IHRbMF0udHZfdXNlYzsKKysgICAgICAg ICAgICAgICAgYm9vbCBtYmlnID0gNTAwMDAwIDw9IHRbMV0udHZfdXNlYzsKKysgICAgICAgICAg ICAgICAgaWYgKChhYmlnIHwgbWJpZykgJiYgZnN0YXQgKGZkLCAmc3QpID09IDApCisrICAgICAg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgLyogSWYgdGhlc2UgdHdvIHN1YnRy YWN0aW9ucyBvdmVyZmxvdywgdGhleSdsbAorKyAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sg dGhlIG92ZXJmbG93cyBpbnNpZGUgdGhlIGJ1Z2d5IGdsaWJjLiAgKi8KKysgICAgICAgICAgICAg ICAgICAgIHRpbWVfdCBhZGlmZiA9IHN0LnN0X2F0aW1lIC0gdFswXS50dl9zZWM7CisrICAgICAg ICAgICAgICAgICAgICB0aW1lX3QgbWRpZmYgPSBzdC5zdF9tdGltZSAtIHRbMV0udHZfc2VjOwor KworKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKnR0ID0gTlVMTDsKKysgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsIHRydW5jYXRlZF90aW1ldmFsWzJdOworKyAg ICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVkX3RpbWV2YWxbMF0gPSB0WzBdOworKyAgICAgICAg ICAgICAgICAgICAgdHJ1bmNhdGVkX3RpbWV2YWxbMV0gPSB0WzFdOworKyAgICAgICAgICAgICAg ICAgICAgaWYgKGFiaWcgJiYgYWRpZmYgPT0gMSAmJiBnZXRfc3RhdF9hdGltZV9ucyAoJnN0KSA9 PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAg dHQgPSB0cnVuY2F0ZWRfdGltZXZhbDsKKysgICAgICAgICAgICAgICAgICAgICAgICB0dFswXS50 dl91c2VjID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAg ICAgaWYgKG1iaWcgJiYgbWRpZmYgPT0gMSAmJiBnZXRfc3RhdF9tdGltZV9ucyAoJnN0KSA9PSAw KQorKyAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdHQg PSB0cnVuY2F0ZWRfdGltZXZhbDsKKysgICAgICAgICAgICAgICAgICAgICAgICB0dFsxXS50dl91 c2VjID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAg aWYgKHR0KQorKyAgICAgICAgICAgICAgICAgICAgICBmdXRpbWVzIChmZCwgdHQpOworKyAgICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgIH0KKysjICBlbmRpZgorKworKyAgICAgICAg ICAgIHJldHVybiAwOworKyAgICAgICAgICB9CisrIyBlbmRpZgorKyAgICAgIH0KKysjZW5kaWYg LyogSEFWRV9GVVRJTUVTQVQgfHwgSEFWRV9XT1JLSU5HX1VUSU1FUyAqLworKworKyAgICBpZiAo IWZpbGUpCisrICAgICAgeworKyNpZiAhICgoSEFWRV9GVVRJTUVTQVQgJiYgIUZVVElNRVNBVF9O VUxMX0JVRykgICAgICAgICAgXAorKyAgICAgICAgfHwgKEhBVkVfV09SS0lOR19VVElNRVMgJiYg SEFWRV9GVVRJTUVTKSkKKysgICAgICAgIGVycm5vID0gRU5PU1lTOworKyNlbmRpZgorKyAgICAg ICAgcmV0dXJuIC0xOworKyAgICAgIH0KKysKKysjaWZkZWYgVVNFX1NFVEZJTEVUSU1FCisrICAg IHJldHVybiBfZ2xfdXRpbWVuc193aW5kb3dzIChmaWxlLCB0cyk7CisrI2VsaWYgSEFWRV9XT1JL SU5HX1VUSU1FUworKyAgICByZXR1cm4gdXRpbWVzIChmaWxlLCB0KTsKKysjZWxzZQorKyAgICB7 CisrICAgICAgc3RydWN0IHV0aW1idWYgdXRpbWJ1ZjsKKysgICAgICBzdHJ1Y3QgdXRpbWJ1ZiAq dXQ7CisrICAgICAgaWYgKHRzKQorKyAgICAgICAgeworKyAgICAgICAgICB1dGltYnVmLmFjdGlt ZSA9IHRzWzBdLnR2X3NlYzsKKysgICAgICAgICAgdXRpbWJ1Zi5tb2R0aW1lID0gdHNbMV0udHZf c2VjOworKyAgICAgICAgICB1dCA9ICZ1dGltYnVmOworKyAgICAgICAgfQorKyAgICAgIGVsc2UK KysgICAgICAgIHV0ID0gTlVMTDsKKysKKysgICAgICByZXR1cm4gdXRpbWUgKGZpbGUsIHV0KTsK KysgICAgfQorKyNlbmRpZiAvKiAhSEFWRV9XT1JLSU5HX1VUSU1FUyAqLworKyAgfQorK30KKysK KysvKiBTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzdGFtcHMgb2YgRklMRSB0 byBiZQorKyAgIFRJTUVTUEVDWzBdIGFuZCBUSU1FU1BFQ1sxXSwgcmVzcGVjdGl2ZWx5LiAgKi8K KytpbnQKKyt1dGltZW5zIChjaGFyIGNvbnN0ICpmaWxlLCBzdHJ1Y3QgdGltZXNwZWMgY29uc3Qg dGltZXNwZWNbMl0pCisreworKyAgcmV0dXJuIGZkdXRpbWVucyAoLTEsIGZpbGUsIHRpbWVzcGVj KTsKKyt9CisrCisrLyogU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lc3RhbXBz IG9mIEZJTEUgdG8gYmUKKysgICBUSU1FU1BFQ1swXSBhbmQgVElNRVNQRUNbMV0sIHJlc3BlY3Rp dmVseSwgd2l0aG91dCBkZXJlZmVyZW5jaW5nCisrICAgc3ltbGlua3MuICBGYWlsIHdpdGggRU5P U1lTIGlmIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0CisrICAgY2hhbmdpbmcgc3ltbGlu ayB0aW1lc3RhbXBzLCBidXQgRklMRSB3YXMgYSBzeW1saW5rLiAgKi8KKytpbnQKKytsdXRpbWVu cyAoY2hhciBjb25zdCAqZmlsZSwgc3RydWN0IHRpbWVzcGVjIGNvbnN0IHRpbWVzcGVjWzJdKQor K3sKKysgIHN0cnVjdCB0aW1lc3BlYyBhZGp1c3RlZF90aW1lc3BlY1syXTsKKysgIHN0cnVjdCB0 aW1lc3BlYyAqdHMgPSB0aW1lc3BlYyA/IGFkanVzdGVkX3RpbWVzcGVjIDogTlVMTDsKKysgIGlu dCBhZGp1c3RtZW50X25lZWRlZCA9IDA7CisrICBzdHJ1Y3Qgc3RhdCBzdDsKKysKKysgIGlmICh0 cykKKysgICAgeworKyAgICAgIGFkanVzdGVkX3RpbWVzcGVjWzBdID0gdGltZXNwZWNbMF07Cisr ICAgICAgYWRqdXN0ZWRfdGltZXNwZWNbMV0gPSB0aW1lc3BlY1sxXTsKKysgICAgICBhZGp1c3Rt ZW50X25lZWRlZCA9IHZhbGlkYXRlX3RpbWVzcGVjICh0cyk7CisrICAgIH0KKysgIGlmIChhZGp1 c3RtZW50X25lZWRlZCA8IDApCisrICAgIHJldHVybiAtMTsKKysKKysgIC8qIFRoZSBMaW51eCBr ZXJuZWwgZGlkIG5vdCBzdXBwb3J0IHN5bWxpbmsgdGltZXN0YW1wcyB1bnRpbAorKyAgICAgdXRp bWVuc2F0LCBpbiB2ZXJzaW9uIDIuNi4yMiwgc28gd2UgZG9uJ3QgbmVlZCB0byBtaW1pYworKyAg ICAgZmR1dGltZW5zJyB3b3JyeSBhYm91dCBidWdneSBORlMgY2xpZW50cy4gIEJ1dCB3ZSBkbyBo YXZlIHRvCisrICAgICB3b3JyeSBhYm91dCBib2d1cyByZXR1cm4gdmFsdWVzLiAgKi8KKysKKysj aWYgSEFWRV9VVElNRU5TQVQKKysgIGlmICgwIDw9IGx1dGltZW5zYXRfd29ya3NfcmVhbGx5KQor KyAgICB7CisrICAgICAgaW50IHJlc3VsdDsKKysjIGlmIF9fbGludXhfXyB8fCBfX3N1bgorKyAg ICAgIC8qIEFzIHJlY2VudGx5IGFzIExpbnV4IGtlcm5lbCAyLjYuMzIgKERlYyAyMDA5KSwgc2V2 ZXJhbCBmaWxlCisrICAgICAgICAgc3lzdGVtcyAoeGZzLCBudGZzLTNnKSBoYXZlIGJ1Z3Mgd2l0 aCBhIHNpbmdsZSBVVElNRV9PTUlULAorKyAgICAgICAgIGJ1dCB3b3JrIGlmIGJvdGggdGltZXMg YXJlIGVpdGhlciBleHBsaWNpdGx5IHNwZWNpZmllZCBvcgorKyAgICAgICAgIFVUSU1FX05PVy4g IFdvcmsgYXJvdW5kIGl0IHdpdGggYSBwcmVwYXJhdG9yeSBsc3RhdCBwcmlvciB0bworKyAgICAg ICAgIGNhbGxpbmcgdXRpbWVuc2F0OyBmb3J0dW5hdGVseSwgdGhlcmUgaXMgbm90IG11Y2ggdGlt aW5nCisrICAgICAgICAgaW1wYWN0IGR1ZSB0byB0aGUgZXh0cmEgc3lzY2FsbCBldmVuIG9uIGZp bGUgc3lzdGVtcyB3aGVyZQorKyAgICAgICAgIFVUSU1FX09NSVQgd291bGQgaGF2ZSB3b3JrZWQu CisrCisrICAgICAgICAgVGhlIHNhbWUgYnVnIG9jY3VycyBpbiBTb2xhcmlzIDExLjEgKEFwciAy MDEzKS4KKysKKysgICAgICAgICBGSVhNRTogU2ltcGxpZnkgdGhpcyBmb3IgTGludXggaW4gMjAx NiBhbmQgZm9yIFNvbGFyaXMgaW4KKysgICAgICAgICAyMDI0LCB3aGVuIGZpbGUgc3lzdGVtIGJ1 Z3MgYXJlIG5vIGxvbmdlciBjb21tb24uICAqLworKyAgICAgIGlmIChhZGp1c3RtZW50X25lZWRl ZCA9PSAyKQorKyAgICAgICAgeworKyAgICAgICAgICBpZiAobHN0YXQgKGZpbGUsICZzdCkpCisr ICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgICBpZiAodHNbMF0udHZfbnNlYyA9PSBV VElNRV9PTUlUKQorKyAgICAgICAgICAgIHRzWzBdID0gZ2V0X3N0YXRfYXRpbWUgKCZzdCk7Cisr ICAgICAgICAgIGVsc2UgaWYgKHRzWzFdLnR2X25zZWMgPT0gVVRJTUVfT01JVCkKKysgICAgICAg ICAgICB0c1sxXSA9IGdldF9zdGF0X210aW1lICgmc3QpOworKyAgICAgICAgICAvKiBOb3RlIHRo YXQgc3QgaXMgZ29vZCwgaW4gY2FzZSB1dGltZW5zYXQgZ2l2ZXMgRU5PU1lTLiAgKi8KKysgICAg ICAgICAgYWRqdXN0bWVudF9uZWVkZWQrKzsKKysgICAgICAgIH0KKysjIGVuZGlmCisrICAgICAg cmVzdWx0ID0gdXRpbWVuc2F0IChBVF9GRENXRCwgZmlsZSwgdHMsIEFUX1NZTUxJTktfTk9GT0xM T1cpOworKyMgaWZkZWYgX19saW51eF9fCisrICAgICAgLyogV29yayBhcm91bmQgYSBrZXJuZWwg YnVnOgorKyAgICAgICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9NDQyMzUyCisrICAgICAgICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVn LmNnaT9pZD00NDk5MTAKKysgICAgICAgICBJdCBhcHBlYXJzIHRoYXQgdXRpbWVuc2F0IGNhbiBt aXN0YWtlbmx5IHJldHVybiAyODAgcmF0aGVyCisrICAgICAgICAgdGhhbiAtMSB1cG9uIEVOT1NZ UyBmYWlsdXJlLgorKyAgICAgICAgIEZJWE1FOiByZW1vdmUgaW4gMjAxMCBvciB3aGVuZXZlciB0 aGUgb2ZmZW5kaW5nIGtlcm5lbHMKKysgICAgICAgICBhcmUgbm8gbG9uZ2VyIGluIGNvbW1vbiB1 c2UuICAqLworKyAgICAgIGlmICgwIDwgcmVzdWx0KQorKyAgICAgICAgZXJybm8gPSBFTk9TWVM7 CisrIyBlbmRpZgorKyAgICAgIGlmIChyZXN1bHQgPT0gMCB8fCBlcnJubyAhPSBFTk9TWVMpCisr ICAgICAgICB7CisrICAgICAgICAgIHV0aW1lbnNhdF93b3Jrc19yZWFsbHkgPSAxOworKyAgICAg ICAgICBsdXRpbWVuc2F0X3dvcmtzX3JlYWxseSA9IDE7CisrICAgICAgICAgIHJldHVybiByZXN1 bHQ7CisrICAgICAgICB9CisrICAgIH0KKysgIGx1dGltZW5zYXRfd29ya3NfcmVhbGx5ID0gLTE7 CisrI2VuZGlmIC8qIEhBVkVfVVRJTUVOU0FUICovCisrCisrICAvKiBUaGUgcGxhdGZvcm0gbGFj a3MgYW4gaW50ZXJmYWNlIHRvIHNldCBmaWxlIHRpbWVzdGFtcHMgd2l0aAorKyAgICAgbmFub3Nl Y29uZCByZXNvbHV0aW9uLCBzbyBkbyB0aGUgYmVzdCB3ZSBjYW4sIGRpc2NhcmRpbmcgYW55Cisr ICAgICBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIHRpbWVzdGFtcC4gICovCisrCisrICBpZiAoYWRq dXN0bWVudF9uZWVkZWQgfHwgUkVQTEFDRV9GVU5DX1NUQVRfRklMRSkKKysgICAgeworKyAgICAg IGlmIChhZGp1c3RtZW50X25lZWRlZCAhPSAzICYmIGxzdGF0IChmaWxlLCAmc3QpKQorKyAgICAg ICAgcmV0dXJuIC0xOworKyAgICAgIGlmICh0cyAmJiB1cGRhdGVfdGltZXNwZWMgKCZzdCwgJnRz KSkKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAvKiBPbiBMaW51eCwgbHV0aW1l cyBpcyBhIHRoaW4gd3JhcHBlciBhcm91bmQgdXRpbWVuc2F0LCBzbyB0aGVyZSBpcworKyAgICAg bm8gcG9pbnQgdHJ5aW5nIGx1dGltZXMgaWYgdXRpbWVuc2F0IGZhaWxlZCB3aXRoIEVOT1NZUy4g ICovCisrI2lmIEhBVkVfTFVUSU1FUyAmJiAhSEFWRV9VVElNRU5TQVQKKysgIHsKKysgICAgc3Ry dWN0IHRpbWV2YWwgdGltZXZhbFsyXTsKKysgICAgc3RydWN0IHRpbWV2YWwgKnQ7CisrICAgIGlu dCByZXN1bHQ7CisrICAgIGlmICh0cykKKysgICAgICB7CisrICAgICAgICB0aW1ldmFsWzBdLnR2 X3NlYyA9IHRzWzBdLnR2X3NlYzsKKysgICAgICAgIHRpbWV2YWxbMF0udHZfdXNlYyA9IHRzWzBd LnR2X25zZWMgLyAxMDAwOworKyAgICAgICAgdGltZXZhbFsxXS50dl9zZWMgPSB0c1sxXS50dl9z ZWM7CisrICAgICAgICB0aW1ldmFsWzFdLnR2X3VzZWMgPSB0c1sxXS50dl9uc2VjIC8gMTAwMDsK KysgICAgICAgIHQgPSB0aW1ldmFsOworKyAgICAgIH0KKysgICAgZWxzZQorKyAgICAgIHQgPSBO VUxMOworKworKyAgICByZXN1bHQgPSBsdXRpbWVzIChmaWxlLCB0KTsKKysgICAgaWYgKHJlc3Vs dCA9PSAwIHx8IGVycm5vICE9IEVOT1NZUykKKysgICAgICByZXR1cm4gcmVzdWx0OworKyAgfQor KyNlbmRpZiAvKiBIQVZFX0xVVElNRVMgJiYgIUhBVkVfVVRJTUVOU0FUICovCisrCisrICAvKiBP dXQgb2YgbHVjayBmb3Igc3ltbGlua3MsIGJ1dCB3ZSBzdGlsbCBoYW5kbGUgcmVndWxhciBmaWxl cy4gICovCisrICBpZiAoIShhZGp1c3RtZW50X25lZWRlZCB8fCBSRVBMQUNFX0ZVTkNfU1RBVF9G SUxFKSAmJiBsc3RhdCAoZmlsZSwgJnN0KSkKKysgICAgcmV0dXJuIC0xOworKyAgaWYgKCFTX0lT TE5LIChzdC5zdF9tb2RlKSkKKysgICAgcmV0dXJuIGZkdXRpbWVucyAoLTEsIGZpbGUsIHRzKTsK KysgIGVycm5vID0gRU5PU1lTOworKyAgcmV0dXJuIC0xOworK30KK2RpZmYgLS1naXQgYS9saWIv dXRpbWVucy5oIGIvbGliL3V0aW1lbnMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjI5NWQzZDcKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYi91dGltZW5zLmgKK0BAIC0w LDAgKzEsNDkgQEAKKysvKiBTZXQgZmlsZSBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lcy4K KysKKysgICBDb3B5cmlnaHQgMjAxMi0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciBhbnkK KysgICBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw czovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKy8qIFdyaXR0ZW4gYnkgUGF1bCBF Z2dlcnQuICAqLworKworKyNpbmNsdWRlIDx0aW1lLmg+CisraW50IGZkdXRpbWVucyAoaW50LCBj aGFyIGNvbnN0ICosIHN0cnVjdCB0aW1lc3BlYyBjb25zdCBbMl0pOworK2ludCB1dGltZW5zIChj aGFyIGNvbnN0ICosIHN0cnVjdCB0aW1lc3BlYyBjb25zdCBbMl0pOworK2ludCBsdXRpbWVucyAo Y2hhciBjb25zdCAqLCBzdHJ1Y3QgdGltZXNwZWMgY29uc3QgWzJdKTsKKysKKysjaWYgR05VTElC X0ZEVVRJTUVOU0FUCisrIyBpbmNsdWRlIDxmY250bC5oPgorKyMgaW5jbHVkZSA8c3lzL3N0YXQu aD4KKysKKysjaWZuZGVmIF9HTF9JTkxJTkVfSEVBREVSX0JFR0lOCisrICNlcnJvciAiUGxlYXNl IGluY2x1ZGUgY29uZmlnLmggZmlyc3QuIgorKyNlbmRpZgorK19HTF9JTkxJTkVfSEVBREVSX0JF R0lOCisrI2lmbmRlZiBfR0xfVVRJTUVOU19JTkxJTkUKKysjIGRlZmluZSBfR0xfVVRJTUVOU19J TkxJTkUgX0dMX0lOTElORQorKyNlbmRpZgorKworK2ludCBmZHV0aW1lbnNhdCAoaW50IGZkLCBp bnQgZGlyLCBjaGFyIGNvbnN0ICpuYW1lLCBzdHJ1Y3QgdGltZXNwZWMgY29uc3QgWzJdLAorKyAg ICAgICAgICAgICAgICAgaW50IGF0ZmxhZyk7CisrCisrLyogVXNpbmcgdGhpcyBmdW5jdGlvbiBt YWtlcyBhcHBsaWNhdGlvbiBjb2RlIHNsaWdodGx5IG1vcmUgcmVhZGFibGUuICAqLworK19HTF9V VElNRU5TX0lOTElORSBpbnQKKytsdXRpbWVuc2F0IChpbnQgZGlyLCBjaGFyIGNvbnN0ICpmaWxl LCBzdHJ1Y3QgdGltZXNwZWMgY29uc3QgdGltZXNbMl0pCisreworKyAgcmV0dXJuIHV0aW1lbnNh dCAoZGlyLCBmaWxlLCB0aW1lcywgQVRfU1lNTElOS19OT0ZPTExPVyk7CisrfQorKworK19HTF9J TkxJTkVfSEVBREVSX0VORAorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL200L3V0aW1lbnMubTQg Yi9tNC91dGltZW5zLm00CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmVl NGVmOQorLS0tIC9kZXYvbnVsbAorKysrIGIvbTQvdXRpbWVucy5tNAorQEAgLTAsMCArMSw1MiBA QAorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKytkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24KKytkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQv b3IgZGlzdHJpYnV0ZSBpdCwKKytkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFz IGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorKworK2RubCBzZXJpYWwgMTEKKysK KytBQ19ERUZVTihbZ2xfVVRJTUVOU10sCisrWworKyAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgbGli L3V0aW1lbnMuYy4KKysgIEFDX1JFUVVJUkUoW2dsX0ZVTkNfVVRJTUVTXSkKKysgIEFDX1JFUVVJ UkUoW2dsX0NIRUNLX1RZUEVfU1RSVUNUX1RJTUVTUEVDXSkKKysgIEFDX1JFUVVJUkUoW0FDX0NB Tk9OSUNBTF9IT1NUXSkgZG5sIGZvciBjcm9zcy1jb21waWxlcworKyAgQUNfQ0hFQ0tfRlVOQ1Nf T05DRShbZnV0aW1lcyBmdXRpbWVzYXQgZnV0aW1lbnMgdXRpbWVuc2F0IGx1dGltZXNdKQorKwor KyAgaWYgdGVzdCAkYWNfY3ZfZnVuY19mdXRpbWVucyA9IG5vICYmIHRlc3QgJGFjX2N2X2Z1bmNf ZnV0aW1lc2F0ID0geWVzOyB0aGVuCisrICAgIGRubCBGcmVlQlNEIDguMC1yYzIgbWlzaGFuZGxl cyBmdXRpbWVzYXQoZmQsTlVMTCx0aW1lKS4gIEl0IGlzIG5vdAorKyAgICBkbmwgc3RhbmRhcmRp emVkLCBidXQgU29sYXJpcyBpbXBsZW1lbnRlZCBpdCBmaXJzdCBhbmQgdXNlcyBpdCBhcworKyAg ICBkbmwgaXRzIG9ubHkgbWVhbnMgdG8gc2V0IGZkIHRpbWUuCisrICAgIEFDX0NBQ0hFX0NIRUNL KFt3aGV0aGVyIGZ1dGltZXNhdCBoYW5kbGVzIE5VTEwgZmlsZV0sCisrICAgICAgW2dsX2N2X2Z1 bmNfZnV0aW1lc2F0X3dvcmtzXSwKKysgICAgICBbdG91Y2ggY29uZnRlc3QuZmlsZQorKyAgICAg ICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKysjaW5jbHVkZSA8c3RkZGVmLmg+ CisrI2luY2x1ZGUgPHN5cy90aW1lcy5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorK11HTF9NREFf REVGSU5FU10sCisrICAgICAgICBbW2ludCBmZCA9IG9wZW4gKCJjb25mdGVzdC5maWxlIiwgT19S RFdSKTsKKysgICAgICAgICAgaWYgKGZkIDwgMCkgcmV0dXJuIDE7CisrICAgICAgICAgIGlmIChm dXRpbWVzYXQgKGZkLCBOVUxMLCBOVUxMKSkgcmV0dXJuIDI7CisrICAgICAgICBdXSldLAorKyAg ICAgICAgW2dsX2N2X2Z1bmNfZnV0aW1lc2F0X3dvcmtzPXllc10sCisrICAgICAgICBbZ2xfY3Zf ZnVuY19mdXRpbWVzYXRfd29ya3M9bm9dLAorKyAgICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBMaW51eCBzeXN0ZW1z LgorKyAgICAgICAgICAgbGludXgtKiB8IGxpbnV4KSBnbF9jdl9mdW5jX2Z1dGltZXNhdF93b3Jr cz0iZ3Vlc3NpbmcgeWVzIiA7OworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNz IHllcyBvbiBnbGliYyBzeXN0ZW1zLgorKyAgICAgICAgICAgKi1nbnUqKSAgICAgICAgICBnbF9j dl9mdW5jX2Z1dGltZXNhdF93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIElmIHdlIGRvbid0IGtub3csIG9iZXkgLS1lbmFibGUtY3Jvc3MtZ3Vl c3Nlcy4KKysgICAgICAgICAgICopICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19mdXRpbWVzYXRf d29ya3M9IiRnbF9jcm9zc19ndWVzc19ub3JtYWwiIDs7CisrICAgICAgICAgZXNhYworKyAgICAg ICAgXSkKKysgICAgICBybSAtZiBjb25mdGVzdC5maWxlXSkKKysgICAgY2FzZSAiJGdsX2N2X2Z1 bmNfZnV0aW1lc2F0X3dvcmtzIiBpbgorKyAgICAgICp5ZXMpIDs7CisrICAgICAgKikKKysgICAg ICAgIEFDX0RFRklORShbRlVUSU1FU0FUX05VTExfQlVHXSwgWzFdLAorKyAgICAgICAgICBbRGVm aW5lIHRvIDEgaWYgZnV0aW1lc2F0IG1pc2hhbmRsZXMgYSBOVUxMIGZpbGUgbmFtZS5dKQorKyAg ICAgICAgOzsKKysgICAgZXNhYworKyAgZmkKKytdKQorZGlmZiAtLWdpdCBhL200L3V0aW1lcy5t NCBiL200L3V0aW1lcy5tNAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjA0 NDBlNzgKKy0tLSAvZGV2L251bGwKKysrKyBiL200L3V0aW1lcy5tNAorQEAgLTAsMCArMSwxNjEg QEAKKysjIERldGVjdCBzb21lIGJ1Z3MgaW4gZ2xpYmMncyBpbXBsZW1lbnRhdGlvbiBvZiB1dGlt ZXMuCisrIyBzZXJpYWwgOAorKworK2RubCBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNSwgMjAwOS0y MDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK2RubCBUaGlzIGZpbGUgaXMgZnJl ZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorK2RubCBnaXZlcyB1bmxp bWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorK2RubCB3aXRo IG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVz ZXJ2ZWQuCisrCisrIyBTZWUgaWYgd2UgbmVlZCB0byB3b3JrIGFyb3VuZCBidWdzIGluIGdsaWJj J3MgaW1wbGVtZW50YXRpb24gb2YKKysjIHV0aW1lcyBmcm9tIDIwMDMtMDctMTIgdG8gMjAwMy0w OS0xNy4KKysjIEZpcnN0LCB0aGVyZSB3YXMgYSBidWcgdGhhdCB3b3VsZCBtYWtlIHV0aW1lcyBz ZXQgbXRpbWUKKysjIGFuZCBhdGltZSB0byB6ZXJvICgxOTcwLTAxLTAxKSB1bmNvbmRpdGlvbmFs bHkuCisrIyBUaGVuLCB0aGVyZSB3YXMgY29kZSB0byByb3VuZCByYXRoZXIgdGhhbiB0cnVuY2F0 ZS4KKysjIFRoZW4sIHRoZXJlIHdhcyBhbiBpbXBsZW1lbnRhdGlvbiAoc3BhcmM2NCwgTGludXgt Mi40LjI4LCBnbGliYy0yLjMuMykKKysjIHRoYXQgZGlkbid0IGhvbm9yIHRoZSBOVUxMLW1lYW5z LXNldC10by1jdXJyZW50LXRpbWUgc2VtYW50aWNzLgorKyMgRmluYWxseSwgdGhlcmUgd2FzIGFs c28gYSB2ZXJzaW9uIG9mIHV0aW1lcyB0aGF0IGZhaWxlZCBvbiByZWFkLW9ubHkKKysjIGZpbGVz LCB3aGlsZSB1dGltZSB3b3JrZWQgZmluZSAobGludXgtMi4yLjIwLCBnbGliYy0yLjIuNSkuCisr IworKyMgRnJvbSBKaW0gTWV5ZXJpbmcsIHdpdGggc3VnZ2VzdGlvbnMgZnJvbSBQYXVsIEVnZ2Vy dC4KKysKKytBQ19ERUZVTihbZ2xfRlVOQ19VVElNRVNdLAorK1sKKysgIEFDX1JFUVVJUkUoW0FD X0NBTk9OSUNBTF9IT1NUXSkgZG5sIGZvciBjcm9zcy1jb21waWxlcworKyAgQUNfQ0FDSEVfQ0hF Q0soW3doZXRoZXIgdGhlIHV0aW1lcyBmdW5jdGlvbiB3b3Jrc10sCisrICAgICAgICAgICAgICAg ICBbZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1lc10sCisrICAgIFtBQ19SVU5fSUZFTFNFKFtBQ19M QU5HX1NPVVJDRShbWworKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3N0 YXQuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKysjaW5j bHVkZSA8dGltZS5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+ CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHV0aW1lLmg+CisrI2luY2x1ZGUgPGVy cm5vLmg+CisrXUdMX01EQV9ERUZJTkVTWworKworK3N0YXRpYyBpbnQKKytpbm9yZGVyICh0aW1l X3QgYSwgdGltZV90IGIsIHRpbWVfdCBjKQorK3sKKysgIHJldHVybiBhIDw9IGIgJiYgYiA8PSBj OworK30KKysKKytpbnQKKyttYWluICgpCisreworKyAgaW50IHJlc3VsdCA9IDA7CisrICBjaGFy IGNvbnN0ICpmaWxlID0gImNvbmZ0ZXN0LnV0aW1lcyI7CisrICAvKiBPbiBPUy8yLCBmaWxlIHRp bWVzdGFtcHMgbXVzdCBiZSBvbiBvciBhZnRlciAxOTgwIGluIGxvY2FsIHRpbWUsCisrICAgICB3 aXRoIGFuIGV2ZW4gbnVtYmVyIG9mIHNlY29uZHMuICAqLworKyAgc3RhdGljIHN0cnVjdCB0aW1l dmFsIHRpbWV2YWxbMl0gPSB7ezMxNTYyMDAwMCArIDEwLCAxMH0sCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7MzE1NjIwMDAwICsgMTAwMDAwMCwgOTk5OTk4fX07Cisr CisrICAvKiBUZXN0IHdoZXRoZXIgdXRpbWVzKCkgZXNzZW50aWFsbHkgd29ya3MuICAqLworKyAg eworKyAgICBzdHJ1Y3Qgc3RhdCBzYnVmOworKyAgICBGSUxFICpmID0gZm9wZW4gKGZpbGUsICJ3 Iik7CisrICAgIGlmIChmID09IE5VTEwpCisrICAgICAgcmVzdWx0IHw9IDE7CisrICAgIGVsc2Ug aWYgKGZjbG9zZSAoZikgIT0gMCkKKysgICAgICByZXN1bHQgfD0gMTsKKysgICAgZWxzZSBpZiAo dXRpbWVzIChmaWxlLCB0aW1ldmFsKSAhPSAwKQorKyAgICAgIHJlc3VsdCB8PSAyOworKyAgICBl bHNlIGlmIChsc3RhdCAoZmlsZSwgJnNidWYpICE9IDApCisrICAgICAgcmVzdWx0IHw9IDE7Cisr ICAgIGVsc2UgaWYgKCEoc2J1Zi5zdF9hdGltZSA9PSB0aW1ldmFsWzBdLnR2X3NlYworKyAgICAg ICAgICAgICAgICYmIHNidWYuc3RfbXRpbWUgPT0gdGltZXZhbFsxXS50dl9zZWMpKQorKyAgICAg IHJlc3VsdCB8PSA0OworKyAgICBpZiAodW5saW5rIChmaWxlKSAhPSAwKQorKyAgICAgIHJlc3Vs dCB8PSAxOworKyAgfQorKworKyAgLyogVGVzdCB3aGV0aGVyIHV0aW1lcygpIHdpdGggYSBOVUxM IGFyZ3VtZW50IHNldHMgdGhlIGZpbGUncyB0aW1lc3RhbXAKKysgICAgIHRvIHRoZSBjdXJyZW50 IHRpbWUuICBVc2UgJ2ZzdGF0JyBhcyB3ZWxsIGFzICd0aW1lJyB0bworKyAgICAgZGV0ZXJtaW5l IHRoZSAiY3VycmVudCIgdGltZSwgdG8gYWNjb21tb2RhdGUgTkZTIGZpbGUgc3lzdGVtcworKyAg ICAgaWYgdGhlcmUgaXMgYSB0aW1lIHNrZXcgYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIE5GUyBz ZXJ2ZXIuICAqLworKyAgeworKyAgICBpbnQgZmQgPSBvcGVuIChmaWxlLCBPX1dST05MWXxPX0NS RUFULCAwNjQ0KTsKKysgICAgaWYgKGZkIDwgMCkKKysgICAgICByZXN1bHQgfD0gMTsKKysgICAg ZWxzZQorKyAgICAgIHsKKysgICAgICAgIHRpbWVfdCB0MCwgdDI7CisrICAgICAgICBzdHJ1Y3Qg c3RhdCBzdDAsIHN0MSwgc3QyOworKyAgICAgICAgaWYgKHRpbWUgKCZ0MCkgPT0gKHRpbWVfdCkg LTEpCisrICAgICAgICAgIHJlc3VsdCB8PSAxOworKyAgICAgICAgZWxzZSBpZiAoZnN0YXQgKGZk LCAmc3QwKSAhPSAwKQorKyAgICAgICAgICByZXN1bHQgfD0gMTsKKysgICAgICAgIGVsc2UgaWYg KHV0aW1lcyAoZmlsZSwgdGltZXZhbCkgIT0gMAorKyAgICAgICAgICAgICAgICAgJiYgKGVycm5v ICE9IEVBQ0NFUworKyAgICAgICAgICAgICAgICAgICAgIC8qIE9TLzIga0xJQkMgdXRpbWVzIGZh aWxzIG9uIG9wZW5lZCBmaWxlcy4gICovCisrICAgICAgICAgICAgICAgICAgICAgfHwgY2xvc2Ug KGZkKSAhPSAwCisrICAgICAgICAgICAgICAgICAgICAgfHwgdXRpbWVzIChmaWxlLCB0aW1ldmFs KSAhPSAwCisrICAgICAgICAgICAgICAgICAgICAgfHwgKGZkID0gb3BlbiAoZmlsZSwgT19XUk9O TFkpKSA8IDApKQorKyAgICAgICAgICByZXN1bHQgfD0gMjsKKysgICAgICAgIGVsc2UgaWYgKHV0 aW1lcyAoZmlsZSwgTlVMTCkgIT0gMAorKyAgICAgICAgICAgICAgICAgJiYgKGVycm5vICE9IEVB Q0NFUworKyAgICAgICAgICAgICAgICAgICAgIC8qIE9TLzIga0xJQkMgdXRpbWVzIGZhaWxzIG9u IG9wZW5lZCBmaWxlcy4gICovCisrICAgICAgICAgICAgICAgICAgICAgfHwgY2xvc2UgKGZkKSAh PSAwCisrICAgICAgICAgICAgICAgICAgICAgfHwgdXRpbWVzIChmaWxlLCBOVUxMKSAhPSAwCisr ICAgICAgICAgICAgICAgICAgICAgfHwgKGZkID0gb3BlbiAoZmlsZSwgT19XUk9OTFkpKSA8IDAp KQorKyAgICAgICAgICByZXN1bHQgfD0gODsKKysgICAgICAgIGVsc2UgaWYgKGZzdGF0IChmZCwg JnN0MSkgIT0gMCkKKysgICAgICAgICAgcmVzdWx0IHw9IDE7CisrICAgICAgICBlbHNlIGlmICh3 cml0ZSAoZmQsICJcbiIsIDEpICE9IDEpCisrICAgICAgICAgIHJlc3VsdCB8PSAxOworKyAgICAg ICAgZWxzZSBpZiAoZnN0YXQgKGZkLCAmc3QyKSAhPSAwKQorKyAgICAgICAgICByZXN1bHQgfD0g MTsKKysgICAgICAgIGVsc2UgaWYgKHRpbWUgKCZ0MikgPT0gKHRpbWVfdCkgLTEpCisrICAgICAg ICAgIHJlc3VsdCB8PSAxOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICB7CisrICAgICAgICAg ICAgaW50IG1fb2tfUE9TSVggPSBpbm9yZGVyICh0MCwgc3QxLnN0X210aW1lLCB0Mik7CisrICAg ICAgICAgICAgaW50IG1fb2tfTkZTID0gaW5vcmRlciAoc3QwLnN0X210aW1lLCBzdDEuc3RfbXRp bWUsIHN0Mi5zdF9tdGltZSk7CisrICAgICAgICAgICAgaWYgKCEgKHN0MS5zdF9hdGltZSA9PSBz dDEuc3RfbXRpbWUpKQorKyAgICAgICAgICAgICAgcmVzdWx0IHw9IDE2OworKyAgICAgICAgICAg IGlmICghIChtX29rX1BPU0lYIHx8IG1fb2tfTkZTKSkKKysgICAgICAgICAgICAgIHJlc3VsdCB8 PSAzMjsKKysgICAgICAgICAgfQorKyAgICAgICAgaWYgKGNsb3NlIChmZCkgIT0gMCkKKysgICAg ICAgICAgcmVzdWx0IHw9IDE7CisrICAgICAgfQorKyAgICBpZiAodW5saW5rIChmaWxlKSAhPSAw KQorKyAgICAgIHJlc3VsdCB8PSAxOworKyAgfQorKworKyAgLyogVGVzdCB3aGV0aGVyIHV0aW1l cygpIHdpdGggYSBOVUxMIGFyZ3VtZW50IHdvcmtzIG9uIHJlYWQtb25seSBmaWxlcy4gICovCisr ICB7CisrICAgIGludCBmZCA9IG9wZW4gKGZpbGUsIE9fV1JPTkxZfE9fQ1JFQVQsIDA0NDQpOwor KyAgICBpZiAoZmQgPCAwKQorKyAgICAgIHJlc3VsdCB8PSAxOworKyAgICBlbHNlIGlmIChjbG9z ZSAoZmQpICE9IDApCisrICAgICAgcmVzdWx0IHw9IDE7CisrICAgIGVsc2UgaWYgKHV0aW1lcyAo ZmlsZSwgTlVMTCkgIT0gMCkKKysgICAgICByZXN1bHQgfD0gNjQ7CisrICAgIGlmICh1bmxpbmsg KGZpbGUpICE9IDApCisrICAgICAgcmVzdWx0IHw9IDE7CisrICB9CisrCisrICByZXR1cm4gcmVz dWx0OworK30KKysgIF1dKV0sCisrICAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPXll c10sCisrICAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPW5vXSwKKysgICAgICAgW2Nh c2UgIiRob3N0X29zIiBpbgorKyAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBtdXNs IHN5c3RlbXMuCisrICAgICAgICAgICotbXVzbCopIGdsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9 Imd1ZXNzaW5nIHllcyIgOzsKKysgICAgICAgICAgICAgICAgICAgIyBHdWVzcyBubyBvbiBuYXRp dmUgV2luZG93cy4KKysgICAgICAgICAgbWluZ3cqKSAgZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1l cz0iZ3Vlc3Npbmcgbm8iIDs7CisrICAgICAgICAgICopICAgICAgIGdsX2N2X2Z1bmNfd29ya2lu Z191dGltZXM9IiRnbF9jcm9zc19ndWVzc19ub3JtYWwiIDs7CisrICAgICAgICBlc2FjCisrICAg ICAgIF0pCisrICAgIF0pCisrCisrICBjYXNlICIkZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcyIg aW4KKysgICAgKnllcykKKysgICAgICBBQ19ERUZJTkUoW0hBVkVfV09SS0lOR19VVElNRVNdLCBb MV0sIFtEZWZpbmUgaWYgdXRpbWVzIHdvcmtzIHByb3Blcmx5Ll0pCisrICAgICAgOzsKKysgIGVz YWMKKytdKQorZGlmZiAtLWdpdCBhL2xpYi9iaW5hcnktaW8uYyBiL2xpYi9iaW5hcnktaW8uYwor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmYyNjc4OTcKKy0tLSAvZGV2L251 bGwKKysrKyBiL2xpYi9iaW5hcnktaW8uYworQEAgLTAsMCArMSwzOSBAQAorKy8qIEJpbmFyeSBt b2RlIEkvTy4KKysgICBDb3B5cmlnaHQgMjAxNy0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisr CisrI2luY2x1ZGUgPGNvbmZpZy5oPgorKworKyNkZWZpbmUgQklOQVJZX0lPX0lOTElORSBfR0xf RVhURVJOX0lOTElORQorKyNpbmNsdWRlICJiaW5hcnktaW8uaCIKKysKKysjaWYgZGVmaW5lZCBf X0RKR1BQX18gfHwgZGVmaW5lZCBfX0VNWF9fCisrIyBpbmNsdWRlIDx1bmlzdGQuaD4KKysKKytp bnQKKytzZXRfYmluYXJ5X21vZGUgKGludCBmZCwgaW50IG1vZGUpCisreworKyAgaWYgKGlzYXR0 eSAoZmQpKQorKyAgICAvKiBJZiBGRCByZWZlcnMgdG8gYSBjb25zb2xlIChub3QgYSBwaXBlLCBu b3QgYSByZWd1bGFyIGZpbGUpLAorKyAgICAgICBPX1RFWFQgaXMgdGhlIG9ubHkgcmVhc29uYWJs ZSBtb2RlLCBib3RoIG9uIGlucHV0IGFuZCBvbiBvdXRwdXQuCisrICAgICAgIFNpbGVudGx5IGln bm9yZSB0aGUgcmVxdWVzdC4gIElmIHdlIHdlcmUgdG8gcmV0dXJuIC0xIGhlcmUsCisrICAgICAg IGFsbCBwcm9ncmFtcyB0aGF0IHVzZSB4c2V0X2JpbmFyeV9tb2RlIHdvdWxkIGZhaWwgd2hlbiBy dW4KKysgICAgICAgd2l0aCBjb25zb2xlIGlucHV0IG9yIGNvbnNvbGUgb3V0cHV0LiAgKi8KKysg ICAgcmV0dXJuIE9fVEVYVDsKKysgIGVsc2UKKysgICAgcmV0dXJuIF9fZ2xfc2V0bW9kZSAoZmQs IG1vZGUpOworK30KKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9saWIvYmluYXJ5LWlvLmggYi9s aWIvYmluYXJ5LWlvLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44NjU0 ZmQyCistLS0gL2Rldi9udWxsCisrKysgYi9saWIvYmluYXJ5LWlvLmgKK0BAIC0wLDAgKzEsNzcg QEAKKysvKiBCaW5hcnkgbW9kZSBJL08uCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAy MDA1LCAyMDA4LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKwor KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaWZuZGVmIF9CSU5BUllf SAorKyNkZWZpbmUgX0JJTkFSWV9ICisrCisrLyogRm9yIHN5c3RlbXMgdGhhdCBkaXN0aW5ndWlz aCBiZXR3ZWVuIHRleHQgYW5kIGJpbmFyeSBJL08uCisrICAgT19CSU5BUlkgaXMgZ3VhcmFudGVl ZCBieSB0aGUgZ251bGliIDxmY250bC5oPi4gKi8KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysKKysv KiBUaGUgTVNWQzcgPHN0ZGlvLmg+IGRvZXNuJ3QgbGlrZSB0byBiZSBpbmNsdWRlZCBhZnRlciAn I2RlZmluZSBmaWxlbm8gLi4uJywKKysgICBzbyB3ZSBpbmNsdWRlIGl0IGhlcmUgZmlyc3QuICAq LworKyNpbmNsdWRlIDxzdGRpby5oPgorKworKyNpZm5kZWYgX0dMX0lOTElORV9IRUFERVJfQkVH SU4KKysgI2Vycm9yICJQbGVhc2UgaW5jbHVkZSBjb25maWcuaCBmaXJzdC4iCisrI2VuZGlmCisr X0dMX0lOTElORV9IRUFERVJfQkVHSU4KKysjaWZuZGVmIEJJTkFSWV9JT19JTkxJTkUKKysjIGRl ZmluZSBCSU5BUllfSU9fSU5MSU5FIF9HTF9JTkxJTkUKKysjZW5kaWYKKysKKysjaWYgT19CSU5B UlkKKysjIGlmIGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXyB8fCBkZWZpbmVk IF9fQ1lHV0lOX18KKysjICBpbmNsdWRlIDxpby5oPiAvKiBkZWNsYXJlcyBzZXRtb2RlKCkgKi8K KysjICBkZWZpbmUgX19nbF9zZXRtb2RlIHNldG1vZGUKKysjIGVsc2UKKysjICBkZWZpbmUgX19n bF9zZXRtb2RlIF9zZXRtb2RlCisrIyAgdW5kZWYgZmlsZW5vCisrIyAgZGVmaW5lIGZpbGVubyBf ZmlsZW5vCisrIyBlbmRpZgorKyNlbHNlCisrICAvKiBPbiByZWFzb25hYmxlIHN5c3RlbXMsIGJp bmFyeSBJL08gaXMgdGhlIG9ubHkgY2hvaWNlLiAgKi8KKysgIC8qIFVzZSBhIGZ1bmN0aW9uIHJh dGhlciB0aGFuIGEgbWFjcm8sIHRvIGF2b2lkIGdjYyB3YXJuaW5ncworKyAgICAgIndhcm5pbmc6 IHN0YXRlbWVudCB3aXRoIG5vIGVmZmVjdCIuICAqLworK0JJTkFSWV9JT19JTkxJTkUgaW50Cisr X19nbF9zZXRtb2RlIChpbnQgZmQgX0dMX1VOVVNFRCwgaW50IG1vZGUgX0dMX1VOVVNFRCkKKyt7 CisrICByZXR1cm4gT19CSU5BUlk7CisrfQorKyNlbmRpZgorKworKy8qIFNldCBGRCdzIG1vZGUg dG8gTU9ERSwgd2hpY2ggc2hvdWxkIGJlIGVpdGhlciBPX1RFWFQgb3IgT19CSU5BUlkuCisrICAg UmV0dXJuIHRoZSBvbGQgbW9kZSBpZiBzdWNjZXNzZnVsLCAtMSAoc2V0dGluZyBlcnJubykgb24g ZmFpbHVyZS4KKysgICBPcmRpbmFyaWx5IHRoaXMgZnVuY3Rpb24gd291bGQgYmUgY2FsbGVkICdz ZXRtb2RlJywgc2luY2UgdGhhdCBpcworKyAgIGl0cyBvbGQgbmFtZSBvbiBNUy1XaW5kb3dzLCBi dXQgaXQgaXMgY2FsbGVkICdzZXRfYmluYXJ5X21vZGUnIGhlcmUKKysgICB0byBhdm9pZCBjb2xs aWRpbmcgd2l0aCBhIEJTRCBmdW5jdGlvbiBvZiBhbm90aGVyIG5hbWUuICAqLworKworKyNpZiBk ZWZpbmVkIF9fREpHUFBfXyB8fCBkZWZpbmVkIF9fRU1YX18KKytleHRlcm4gaW50IHNldF9iaW5h cnlfbW9kZSAoaW50IGZkLCBpbnQgbW9kZSk7CisrI2Vsc2UKKytCSU5BUllfSU9fSU5MSU5FIGlu dAorK3NldF9iaW5hcnlfbW9kZSAoaW50IGZkLCBpbnQgbW9kZSkKKyt7CisrICByZXR1cm4gX19n bF9zZXRtb2RlIChmZCwgbW9kZSk7CisrfQorKyNlbmRpZgorKworKy8qIFRoaXMgbWFjcm8gaXMg b2Jzb2xlc2NlbnQuICAqLworKyNkZWZpbmUgU0VUX0JJTkFSWShmZCkgKCh2b2lkKSBzZXRfYmlu YXJ5X21vZGUgKGZkLCBPX0JJTkFSWSkpCisrCisrX0dMX0lOTElORV9IRUFERVJfRU5ECisrCisr I2VuZGlmIC8qIF9CSU5BUllfSCAqLworZGlmZiAtLWdpdCBhL2xpYi9zYWZlLXdyaXRlLmMgYi9s aWIvc2FmZS13cml0ZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYTQ2 MGRjOQorLS0tIC9kZXYvbnVsbAorKysrIGIvbGliL3NhZmUtd3JpdGUuYworQEAgLTAsMCArMSwx OCBAQAorKy8qIEFuIGludGVyZmFjZSB0byB3cml0ZSB0aGF0IHJldHJpZXMgYWZ0ZXIgaW50ZXJy dXB0cy4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDktMjAyMSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworKworKyNkZWZpbmUgU0FGRV9XUklURQorKyNpbmNsdWRlICJzYWZlLXJlYWQuYyIKK2Rp ZmYgLS1naXQgYS9saWIvc2FmZS13cml0ZS5oIGIvbGliL3NhZmUtd3JpdGUuaAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQzMDdmZmUKKy0tLSAvZGV2L251bGwKKysrKyBi L2xpYi9zYWZlLXdyaXRlLmgKK0BAIC0wLDAgKzEsMzcgQEAKKysvKiBBbiBpbnRlcmZhY2UgdG8g d3JpdGUoKSB0aGF0IHJldHJpZXMgYWZ0ZXIgaW50ZXJydXB0cy4KKysgICBDb3B5cmlnaHQgKEMp IDIwMDIsIDIwMDktMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKy8qIFNvbWUgc3lzdGVt IGNhbGxzIG1heSBiZSBpbnRlcnJ1cHRlZCBhbmQgZmFpbCB3aXRoIGVycm5vID0gRUlOVFIgaW4g dGhlCisrICAgZm9sbG93aW5nIHNpdHVhdGlvbnM6CisrICAgICAtIFRoZSBwcm9jZXNzIGlzIHN0 b3BwZWQgYW5kIHJlc3RhcnRlZCAoc2lnbmFsIFNJR1NUT1AgYW5kIFNJR0NPTlQsIHVzZXIKKysg ICAgICAgdHlwZXMgQ3RybC1aKSBvbiBzb21lIHBsYXRmb3JtczogTWFjIE9TIFguCisrICAgICAt IFRoZSBwcm9jZXNzIHJlY2VpdmVzIGEgc2lnbmFsIGZvciB3aGljaCBhIHNpZ25hbCBoYW5kbGVy IHdhcyBpbnN0YWxsZWQKKysgICAgICAgd2l0aCBzaWdhY3Rpb24oKSB3aXRoIGFuIHNhX2ZsYWdz IGZpZWxkIHRoYXQgZG9lcyBub3QgY29udGFpbgorKyAgICAgICBTQV9SRVNUQVJULgorKyAgICAg LSBUaGUgcHJvY2VzcyByZWNlaXZlcyBhIHNpZ25hbCBmb3Igd2hpY2ggYSBzaWduYWwgaGFuZGxl ciB3YXMgaW5zdGFsbGVkCisrICAgICAgIHdpdGggc2lnbmFsKCkgYW5kIGZvciB3aGljaCBubyBj YWxsIHRvIHNpZ2ludGVycnVwdChzaWcsMCkgd2FzIGRvbmUsCisrICAgICAgIG9uIHNvbWUgcGxh dGZvcm1zOiBBSVgsIEhQLVVYLCBJUklYLCBPU0YvMSwgU29sYXJpcy4KKysKKysgICBUaGlzIG1v ZHVsZSBwcm92aWRlcyBhIHdyYXBwZXIgYXJvdW5kIHdyaXRlKCkgdGhhdCBoYW5kbGVzIEVJTlRS LiAgKi8KKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrI2RlZmluZSBTQUZFX1dSSVRFX0VS Uk9SICgoc2l6ZV90KSAtMSkKKysKKysvKiBXcml0ZSB1cCB0byBDT1VOVCBieXRlcyBhdCBCVUYg dG8gZGVzY3JpcHRvciBGRCwgcmV0cnlpbmcgaWYgaW50ZXJydXB0ZWQuCisrICAgUmV0dXJuIHRo ZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4sIHplcm8gZm9yIEVPRiwgb3IgU0FGRV9X UklURV9FUlJPUgorKyAgIHVwb24gZXJyb3IuICAqLworK2V4dGVybiBzaXplX3Qgc2FmZV93cml0 ZSAoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCk7CitkaWZmIC0tZ2l0IGEv bTQvc2FmZS13cml0ZS5tNCBiL200L3NhZmUtd3JpdGUubTQKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi5lZjEwZDk2CistLS0gL2Rldi9udWxsCisrKysgYi9tNC9zYWZlLXdy aXRlLm00CitAQCAtMCwwICsxLDExIEBACisrIyBzYWZlLXdyaXRlLm00IHNlcmlhbCA0CisrZG5s IENvcHlyaWdodCAoQykgMjAwMiwgMjAwNS0yMDA2LCAyMDA5LTIwMjEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisrZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRv IGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisrZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj YXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKysKKysjIFByZXJl cXVpc2l0ZXMgb2YgbGliL3NhZmUtd3JpdGUuYy4KKytBQ19ERUZVTihbZ2xfUFJFUkVRX1NBRkVf V1JJVEVdLAorK1sKKysgIGdsX1BSRVJFUV9TQUZFX1JFQUQKKytdKQorCisKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcmVjdXRpbHMvcGF0Y2hlcy9leGRldi5wYXRjaCBiL3NyY3BrZ3MvcmVjdXRpbHMv cGF0Y2hlcy9leGRldi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjZkMWY4YmIyMTNhMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcmVjdXRpbHMvcGF0 Y2hlcy9leGRldi5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDg2ZjY2MmE4MjAyNDA4MTM0 YTIzNTU3MmVjNjAxNDFkMzA4MmY5NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAi Sm9zZSBFLiBNYXJjaGVzaSIgPGpvc2UubWFyY2hlc2lAb3JhY2xlLmNvbT4KK0RhdGU6IFR1ZSwg MjggSmFuIDIwMjAgMTI6MTM6NDIgKzAxMDAKK1N1YmplY3Q6IHV0aWxzOiBtYWtlIHV0aWxpdGlz IHRvIHdvcmsgd2l0aCB0ZW1wb3JhcnkgZmlsZXMgaW4gYSBkaWZmZXJlbnQKKyBmaWxlc3lzdGVt CisKKzIwMjAtMDEtMjggIEpvc2UgRS4gTWFyY2hlc2kgIDxqb3NlLm1hcmNoZXNpQG9yYWNsZS5j b20+CisKKwkqIGJvb3RzdHJhcC5jb25mIChnbnVsaWJfbW9kdWxlcyk6IEltcG9ydCB0aGUgbW9k dWxlcyBjb3B5LWZpbGUKKwlhbmQgcmVtb3ZlLgorCSogdXRpbHMvcmVjdXRsLmMgKHJlY3V0bF93 cml0ZV9kYl90b19maWxlKTogQ29weSBhbmQgcmVtb3ZlCisJaW5zdGVhZCBvZiByZW5hbWUgdGVt cG9yYXJ5IGZpbGVzLgorLS0tCisgdXRpbHMvcmVjdXRsLmMgfCAxNCArKysrKysrKy0tLS0tLQor IDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKKyhsaW1p dGVkIHRvICd1dGlscy9yZWN1dGwuYycpCisKK2RpZmYgLS1naXQgYS91dGlscy9yZWN1dGwuYyBi L3V0aWxzL3JlY3V0bC5jCitpbmRleCA5Y2Y4MjNkLi5hODE0ZmQ4IDEwMDY0NAorLS0tIGEvdXRp bHMvcmVjdXRsLmMKKysrKyBiL3V0aWxzL3JlY3V0bC5jCitAQCAtNTgsNiArNTgsNyBAQAorICNp bmNsdWRlIDxyZWMuaD4KKyAjaW5jbHVkZSA8cmVjdXRsLmg+CisgI2luY2x1ZGUgInJlYWQtZmls ZS5oIgorKyNpbmNsdWRlICJjb3B5LWZpbGUuaCIKKyAKKyAvKgorICAqIEdsb2JhbCB2YXJpYWJs ZXMuCitAQCAtNDMyLDEyICs0MzMsMTMgQEAgcmVjdXRsX3dyaXRlX2RiX3RvX2ZpbGUgKHJlY19k Yl90IGRiLAorIAorICAgaWYgKGZpbGVfbmFtZSkKKyAgICAgeworLSAgICAgIC8qIFJlbmFtZSB0 aGUgdGVtcG9yYXJ5IGZpbGUgdG8gZmlsZV9uYW1lLiAgKi8KKy0gICAgICBpZiAocmVuYW1lICh0 bXBfZmlsZV9uYW1lLCBmaWxlX25hbWUpID09IC0xKQorLSAgICAgICAgeworLSAgICAgICAgICBy ZW1vdmUgKHRtcF9maWxlX25hbWUpOworLSAgICAgICAgICByZWN1dGxfZmF0YWwgKF8oInJlbmFt aW5nIGZpbGUgJXMgdG8gJXNcbiIpLCB0bXBfZmlsZV9uYW1lLCBmaWxlX25hbWUpOworLSAgICAg ICAgfQorKyAgICAgIC8qIFJlbmFtZSB0aGUgdGVtcG9yYXJ5IGZpbGUgdG8gZmlsZV9uYW1lLiAg V2UgY29weSBhbmQgcmVtb3ZlCisrICAgICAgICAgaW5zdGVhZCBvZiByZW5hbWluZyBiZWNhdXNl IHRoZSBsYXRlciBkb2Vzbid0IHdvcmsgYWNyb3NzCisrICAgICAgICAgZGlmZmVyZW50IG1vdW50 IHBvaW50cywgYW5kIGl0IGlzIGdldHRpbmcgY29tbW9uIGZvciAvdG1wIHRvCisrICAgICAgICAg YmUgbW91bnRlZCBpbiBpdHMgb3duIGZpbGVzeXN0ZW0uICAqLworKyAgICAgIGlmIChxY29weV9m aWxlX3ByZXNlcnZpbmcgKHRtcF9maWxlX25hbWUsIGZpbGVfbmFtZSkgIT0gMCkKKysgICAgICAg IHJlY3V0bF9mYXRhbCAoXygicmVuYW1pbmcgZmlsZSAlcyB0byAlc1xuIiksIHRtcF9maWxlX25h bWUsIGZpbGVfbmFtZSk7CisrICAgICAgcmVtb3ZlICh0bXBfZmlsZV9uYW1lKTsKKyAKKyAgICAg ICAvKiBSZXN0b3JlIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBvcmlnaW5hbCBmaWxlLiAqLworICAg ICAgIGlmIChzdGF0X3Jlc3VsdCAhPSAtMSkKKy0tIAorY2dpdCB2MS4yLjEKKwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9yZWN1dGlscy90ZW1wbGF0ZSBiL3NyY3BrZ3MvcmVjdXRpbHMvdGVtcGxhdGUK aW5kZXggM2U3MTMxMmM0ZTI1Li41NjZmMThkZmE1NDIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmVj dXRpbHMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9yZWN1dGlscy90ZW1wbGF0ZQpAQCAtMSwxMCAr MSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncmVjdXRpbHMnCiBwa2duYW1lPXJlY3V0aWxz CiB2ZXJzaW9uPTEuOAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1iYXNoLWhlYWRlcnMgLS1kaXNhYmxlLXJw YXRoIgotaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgorIyBUT0RPIHJlbW92ZSBhdXRvbWFr ZSBpbiAxLjk7IG9ubHkgbmVlZGVkIGZvciBjb3B5LWZpbGUKK2hvc3RtYWtlZGVwZW5kcz0iYXV0 b21ha2UgcGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJhY2wtZGV2ZWwgbGliZ2NyeXB0LWRldmVs IGxpYnV1aWQtZGV2ZWwgbGliY3VybC1kZXZlbCIKIHNob3J0X2Rlc2M9IlV0aWxpdGllcyB0byBk ZWFsIHdpdGggcmVjZmlsZXMiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51 eC5vcmc+IgpAQCAtMTIsNyArMTMsMTkgQEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3JlY3V0aWxzLyIKIGRpc3RmaWxl cz0iJHtHTlVfU0lURX0vcmVjdXRpbHMvcmVjdXRpbHMtJHt2ZXJzaW9ufS50YXIuZ3oiCiBjaGVj a3N1bT1kZjhlYWU2OTU5M2ZkYmE1M2UyNjRjYmY0YjIzMDdkZmI4MjEyMGMwOWI2ZmFiMjNlMmRh ZDUxYTg5YTViMTkzCitwYXRjaF9hcmdzPS1OcDEKIAorcHJlX2NvbmZpZ3VyZSgpIHsKKwlpZiB0 ZXN0IHgiJHZlcnNpb24uJHJldmlzaW9uIiAhPSB4MS44LjIgOyB0aGVuCisJCWVjaG8gaG9wZWZ1 bGx5IHlvdSBjYW4gcmVtb3ZlIHRoZSBhdXRvbWFrZSBkZXBlbmRlbmN5CisJCWVjaG8gYW5kIHRo ZSBwcmVfY29uZmlndXJlIGtsdWRnZQorCQlleGl0IDEKKwlmaQorCSMgWFhYIGhvcnJpYmxlIGts dWRnZSB0byBhdm9pZCBoZWxwMm1hbiAtIHJlbW92ZSBpbiAxLjkKKwl0b3VjaCBtYW4vKi4xCisJ IyBYWFggT05MWSBuZWVkZWQgZm9yIGNvcHktZmlsZSAtIHJlbW92ZSBpbiAxLjkKKwlhY2xvY2Fs ICYmIGF1dG9tYWtlCit9CiBsaWJyZWMxX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIHJl YzEgbGlicmFyeSIKIAlwa2dfaW5zdGFsbCgpIHsK --===============5133507270298335189==--