From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Sergio Durigan Junior To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Reenable libipt. Date: Sat, 27 Jun 2026 23:59:11 GMT Message-ID: <178260475128.1.11630502705098627075.rpms-gdb-f77476195000@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: f774761950008e9d9b0aab80044f135191b1e63c ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogZjc3NDc2MTk1MDAwOGU5ZDliMGFhYjgwMDQ0ZjEzNTE5MWIx ZTYzYwogICAgICAgICAgICBBdXRob3IgOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2Rq QHJlZGhhdC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTgtMDgtMDhUMTg6MDA6MDYtMDQ6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzIwOTEvLTIwNDAgaW4gMTMgZmlsZShzKQogICAgICAg ICAgICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jL2Y3 NzQ3NjE5NTAwMDhlOWQ5YjBhYWI4MDA0NGYxMzUxOTFiMWU2M2M/YnJhbmNoPWdkYi0xNy4yLXJl YmFzZS1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmVlbmFibGUgbGliaXB0LgpS ZWJ1aWxkIGR1ZSB0byBuZXcgbGliaXB0IHJlbGVhc2UuCkFkanVzdCBidW5kbGVkIGxpYmlwdDsg cmVtb3ZlIHVubmVjZXNzYXJ5IHBhdGNoLgpTeW5jIElQdjYgcGF0Y2ggd2l0aCBGLTI4IEdEQi4K Ci0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggMGFiZTU4YS4u OTQ5YzIwNCAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDMg KzEsMyBAQAogL2dkYi1saWJzdGRjKystdjMtcHl0aG9uLTguMS4xLTIwMTgwNjI2LnRhci54egot L3YxLjYuMS50YXIuZ3oKIC9nZGItOC4xLjkwLjIwMTgwNzI3LnRhci54egorL3YyLjAudGFyLmd6 CgpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNwZWMuUGF0Y2gu aW5jbHVkZQppbmRleCA4YmEwZTQ4Li45NDZjNGFmIDEwMDY0NAotLS0gYS9fZ2RiLnNwZWMuUGF0 Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAtNTA1LDggKzUwNSwx MSBAQCBQYXRjaDEyMDogZ2RiLXZsYS1pbnRlbC1maXgtcHJpbnQtY2hhci1hcnJheS5wYXRjaAog UGF0Y2gxMjE6IGdkYi1yaGJ6MTU1MzEwNC1zMzkweC1hcmNoMTItdGVzdC5wYXRjaAogCiAjIElt cGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9nZGJzZXJ2ZXIgKFJIIEJaIDg4MTg0OSwgU2Vy Z2lvIER1cmlnYW4gSnVuaW9yKS4KLVBhdGNoMTIyOiBnZGItcmhiejg4MTg0OS1pcHY2LTFvZjIu cGF0Y2gKK1BhdGNoMTIyOiBnZGItcmhiejg4MTg0OS1pcHY2LTFvZjMucGF0Y2gKIAotIyBJbXBs ZW1lbnQgSVB2NiBzdXBwb3J0IGZvciBHREIvZ2Ric2VydmVyIChSSCBCWiA4ODE4NDksIFNlcmdp byBEdXJpZ2FuIEp1bmlvcikuCi1QYXRjaDEyMzogZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2YyLnBh dGNoCisKK1BhdGNoMTIzOiBnZGItcmhiejg4MTg0OS1pcHY2LTJvZjMucGF0Y2gKKworCitQYXRj aDEyNDogZ2RiLXJoYno4ODE4NDktaXB2Ni0zb2YzLnBhdGNoCiAKCmRpZmYgLS1naXQgYS9fZ2Ri LnNwZWMucGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCmluZGV4IDI3YTM5 YjcuLjk3ZjEyYzQgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCisrKyBiL19n ZGIuc3BlYy5wYXRjaC5pbmNsdWRlCkBAIC0xMjEsMyArMTIxLDQgQEAKICVwYXRjaDEyMSAtcDEK ICVwYXRjaDEyMiAtcDEKICVwYXRjaDEyMyAtcDEKKyVwYXRjaDEyNCAtcDEKCmRpZmYgLS1naXQg YS9fcGF0Y2hfb3JkZXIgYi9fcGF0Y2hfb3JkZXIKaW5kZXggMTFiNDEzMS4uYjEwNTM2YyAxMDA2 NDQKLS0tIGEvX3BhdGNoX29yZGVyCisrKyBiL19wYXRjaF9vcmRlcgpAQCAtMTE5LDUgKzExOSw2 IEBAIGdkYi10ZXN0c3VpdGUtcmVhZGxpbmU2My1zaWdpbnQucGF0Y2gKIGdkYi1hcmNoZXIucGF0 Y2gKIGdkYi12bGEtaW50ZWwtZml4LXByaW50LWNoYXItYXJyYXkucGF0Y2gKIGdkYi1yaGJ6MTU1 MzEwNC1zMzkweC1hcmNoMTItdGVzdC5wYXRjaAotZ2RiLXJoYno4ODE4NDktaXB2Ni0xb2YyLnBh dGNoCi1nZGItcmhiejg4MTg0OS1pcHY2LTJvZjIucGF0Y2gKK2dkYi1yaGJ6ODgxODQ5LWlwdjYt MW9mMy5wYXRjaAorZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2YzLnBhdGNoCitnZGItcmhiejg4MTg0 OS1pcHY2LTNvZjMucGF0Y2gKCmRpZmYgLS1naXQgYS9nZGItcmhiejg4MTg0OS1pcHY2LTFvZjIu cGF0Y2ggYi9nZGItcmhiejg4MTg0OS1pcHY2LTFvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDUwNTEwYzguLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYno4ODE4NDktaXB2Ni0x b2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkzNCArMCwwIEBACi1Gcm9tIEZFRE9SQV9Q QVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2VyZ2lvIER1cmlnYW4gSnVu aW9yIDxzZXJnaW9kakByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAxOCBNYXkgMjAxOCAwMToyOToy NCAtMDQwMAotU3ViamVjdDogZ2RiLXJoYno4ODE4NDktaXB2Ni0xb2YyLnBhdGNoCi0KLTs7IElt cGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9nZGJzZXJ2ZXIgKFJIIEJaIDg4MTg0OSwgU2Vy Z2lvIER1cmlnYW4gSnVuaW9yKS4KLQotSW1wbGVtZW50IElQdjYgc3VwcG9ydCBmb3IgR0RCL2dk YnNlcnZlcgotCi1UaGlzIHBhdGNoIGltcGxlbWVudHMgSVB2NiBzdXBwb3J0IGZvciBib3RoIEdE QiBhbmQgZ2Ric2VydmVyLiAgQmFzZWQKLW9uIG15IHJlc2VhcmNoLCBpdCBpcyB0aGUgZm91cnRo IGF0dGVtcHQgdG8gZG8gdGhhdCBzaW5jZSAyMDA2LiAgU2luY2UKLUkgdXNlZCBpZGVhcyBmcm9t IGFsbCBvZiB0aGUgcHJldmlvdXMgcGF0Y2hlcywgSSBhbHNvIGFkZGVkIHRoZWlyCi1hdXRob3Jz J3MgbmFtZXMgb24gdGhlIENoYW5nZUxvZ3MgYXMgYSB3YXkgdG8gcmVjb2duaXplIHRoZWlyCi1l ZmZvcnRzLiAgRm9yIHJlZmVyZW5jZSBzYWtlLCB5b3UgY2FuIGZpbmQgdGhlIHByZXZpb3VzIGF0 dGVtcHRzIGF0OgotCi0gIGh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAw Ni0wOS9tc2cwMDE5Mi5odG1sCi0KLSAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDE0LTAyL21zZzAwMjQ4Lmh0bWwKLQotICBodHRwczovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTYtMDIvbXNnMDAyMjYuaHRtbAotCi1UaGUgYmFzaWMgaWRlYSBiZWhp bmQgdGhlIHBhdGNoIGlzIHRvIHN0YXJ0IHVzaW5nIHRoZSBuZXcKLSdnZXRhZGRyaW5mbycvJ2dl dG5hbWVpbmZvJyBjYWxscywgd2hpY2ggYXJlIHJlc3BvbnNpYmxlIGZvcgotdHJhbnNsYXRpbmcg bmFtZXMgYW5kIGFkZHJlc3NlcyBpbiBhIHByb3RvY29sLWluZGVwZW5kZW50IHdheS4gIFRoaXMK LW1lYW5zIHRoYXQgaWYgd2UgZXZlciBoYXZlIGEgbmV3IHZlcnNpb24gb2YgdGhlIElQIHByb3Rv Y29sLCB3ZSB3b24ndAotbmVlZCB0byBjaGFuZ2UgdGhlIGNvZGUgYWdhaW4gKG9yLCBhdCBsZWFz dCwgd29uJ3QgaGF2ZSB0byBjaGFuZ2UgdGhlCi1tYWpvcml0eSBvZiB0aGUgY29kZSkuCi0KLVRo ZSBmdW5jdGlvbiAnZ2V0YWRkcmluZm8nIHJldHVybnMgYSBsaW5rZWQgbGlzdCBvZiBwb3NzaWJs ZSBhZGRyZXNzZXMKLXRvIGNvbm5lY3QgdG8uICBEZWFsaW5nIHdpdGggbXVsdGlwbGUgYWRkcmVz c2VzIHByb3ZlZCB0byBiZSBhIGhhcmQKLXRhc2sgd2l0aCB0aGUgY3VycmVudCBUQ1AgYXV0by1y ZXRyeSBtZWNoYW5pc20gaW1wbGVtZW50ZWQgb24KLXNlci10Y3A6bmV0X29wZW4uICBGb3IgZXhh bXBsZSwgd2hlbiBnZGJzZXJ2ZXIgbGlzdGVuZWQgb25seSBvbiBhbgotSVB2NCBzb2NrZXQ6Ci0K LSAgJCAuL2dkYnNlcnZlciAtLW9uY2UgMTI3LjAuMC4xOjEyMzQgLi9hLm91dAotCi1hbmQgR0RC IHdhcyBpbnN0cnVjdGVkIHRvIHRyeSB0byBjb25uZWN0IHRvIGJvdGggSVB2NiBhbmQgSVB2NAot c29ja2V0czoKLQotICAkIC4vZ2RiIC1leCAndGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBsb2NhbGhv c3Q6MTIzNCcgLi9hLm91dAotCi10aGUgdXNlciB3b3VsZCBub3RpY2UgYSBzb21ld2hhdCBiaWcg ZGVsYXkgYmVmb3JlIEdEQiB3YXMgYWJsZSB0bwotY29ubmVjdCB0byB0aGUgSVB2NCBzb2NrZXQu ICBUaGlzIGhhcHBlbmVkIGJlY2F1c2UgR0RCIHdhcyB0cnlpbmcgdG8KLWNvbm5lY3QgdG8gdGhl IElQdjYgc29ja2V0IGZpcnN0LCBhbmQgaGFkIHRvIHdhaXQgdW50aWwgdGhlIGNvbm5lY3Rpb24K LXRpbWVkIG91dCBiZWZvcmUgaXQgdHJpZWQgdG8gY29ubmVjdCB0byB0aGUgSVB2NCBzb2NrZXQu Ci0KLUZvciB0aGF0IHJlYXNvbiwgSSBoYWQgdG8gcmV3cml0ZSB0aGUgbWFpbiBsb29wIGFuZCBp bXBsZW1lbnQgYSBuZXcKLW1ldGhvZCBmb3IgaGFuZGxpbmcgbXVsdGlwbGUgY29ubmVjdGlvbnMu ICBBZnRlciBzb21lIGRpc2N1c3Npb24sCi1QZWRybyBhbmQgSSBhZ3JlZWQgb24gdGhlIGZvbGxv d2luZyBhbGdvcml0aG06Ci0KLSAgMSkgRm9yIGVhY2ggZW50cnkgcmV0dXJuZWQgYnkgJ2dldGFk ZHJpbmZvJywgd2UgdHJ5IHRvIG9wZW4gYSBzb2NrZXQKLSAgYW5kIGNvbm5lY3QgdG8gaXQuCi0K LSAgMi5hKSBJZiB3ZSBoYXZlIGEgc3VjY2Vzc2Z1bCAnY29ubmVjdCcsIHdlIGp1c3QgdXNlIHRo YXQgY29ubmVjdGlvbi4KLQotICAyLmIpIElmIHdlIGRvbid0IGhhdmUgYSBzdWNjZXNzZnVsbCAn Y29ubmVjdCcsIGJ1dCBpZiB3ZSd2ZSBnb3QgYQotICBFQ09OTlJFRlVTRUQgKG1lYW5pbmcgdGhl IHRoZSBjb25uZWN0aW9uIHdhcyByZWZ1c2VkKSwgd2Uga2VlcCB0cmFjawotICBvZiB0aGlzIGZh Y3QgYnkgdXNpbmcgYSBmbGFnLgotCi0gIDIuYykgSWYgd2UgZG9uJ3QgaGF2ZSBhIHN1Y2Nlc3Nm dWxsICdjb25uZWN0JywgYnV0IGlmIHdlJ3ZlIGdvdCBhCi0gIEVJTlBST0dSRVNTIChtZWFuaW5n IHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMgaW4gcHJvZ3Jlc3MpLCB3ZSBwZXJmb3JtCi0gIGEgJ3Nl bGVjdCcgY2FsbCBvbiB0aGUgc29ja2V0IHVudGlsIHdlIGhhdmUgYSByZXN1bHQgKGVpdGhlciBh Ci0gIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbiwgb3IgYW4gZXJyb3Igb24gdGhlIHNvY2tldCkuCi0K LSAgMykgSWYgdGNwX2F1dG9fcmV0cnkgaXMgdHJ1ZSwgYW5kIHdlIGhhdmVuJ3QgZ290dGVuIGEg c3VjY2Vzc2Z1bAotICBjb25uZWN0aW9uLCBhbmQgYXQgbGVhc3Qgb25lIG9mIG91ciBhdHRlbXB0 cyBmYWlsZWQgd2l0aAotICBFQ09OTlJFRlVTRUQsIHRoZW4gd2Ugd2FpdCBhIGxpdHRsZSBiaXQg KGkuZS4sIGNhbGwKLSAgJ3dhaXRfZm9yX2Nvbm5lY3QnKSwgY2hlY2sgdG8gc2VlIGlmIHRoZXJl IHdhcyBhCi0gIHRpbWVvdXQvaW50ZXJydXB0aW9uIChpbiB3aGljaCBjYXNlIHdlIGJhaWwgb3V0 KSwgYW5kIHRoZW4gZ28gYmFjawotICB0byAoMSkuCi0KLUFmdGVyIG11bHRpcGxlIHRlc3RzLCBJ IHdhcyBhYmxlIHRvIGNvbm5lY3Qgd2l0aG91dCBkZWxheSBvbiB0aGUKLXNjZW5hcmlvIGRlc2Ny aWJlZCBhYm92ZSwgYW5kIHdhcyBhbHNvIGFibGUgdG8gY29ubmVjdCBpbiBhbGwgb3RoZXIKLXR5 cGVzIG9mIHNjZW5hcmlvcy4KLQotSSBhbHNvIGltcGxlbWVudGVkIHNvbWUgaG9zdG5hbWUgcGFy c2luZyBmdW5jdGlvbnMgKGFsb25nIHdpdGggdGhlaXIKLWNvcnJlc3BvbmRpbmcgdW5pdCB0ZXN0 cykgd2hpY2ggYXJlIHVzZWQgdG8gaGVscCBHREIgYW5kIGdkYnNlcnZlciB0bwotcGFyc2UgaG9z dG5hbWUgc3RyaW5ncyBwcm92aWRlZCBieSB0aGUgdXNlci4gIFRoZXNlIG5ldyBmdW5jdGlvbnMg YXJlCi1saXZpbmcgaW5zaWRlIGNvbW1vbi9uZXRzdHVmZi5bY2hdLiAgSSd2ZSBoYWQgdG8gZG8g dGhhdCBzaW5jZSBJUHY2Ci1pbnRyb2R1Y2VzIGEgbmV3IFVSTCBzY2hlbWUsIHdoaWNoIGRlZmlu ZXMgdGhhdCBzcXVhcmUgYnJhY2tldHMgY2FuIGJlCi11c2VkIHRvIGVuY2xvc2UgdGhlIGhvc3Qg cGFydCBhbmQgZGlmZmVyZW50aWF0ZSBpdCBmcm9tIHRoZQotcG9ydCAoZS5nLiwgIls6OjFdOjEy MzQiIG1lYW5zICJob3N0IDo6MSwgcG9ydCAxMjM0IikuICBJIHNwZW50IHNvbWUKLXRpbWUgdGhp bmtpbmcgYWJvdXQgYSByZWFzb25hYmxlIHdheSB0byBpbnRlcnByZXQgd2hhdCB0aGUgdXNlciB3 YW50cywKLWFuZCBJIGNhbWUgdXAgd2l0aCB0aGUgZm9sbG93aW5nOgotCi0gIC0gSWYgdGhlIHVz ZXIgaGFzIHByb3ZpZGVkIGEgcHJlZml4IHRoYXQgZG9lc24ndCBzcGVjaWZ5IHRoZSBwcm90b2Nv bAotICAgIHZlcnNpb24gKGkuZS4sICJ0Y3A6IiBvciAidWRwOiIpLCBvciBpZiB0aGUgdXNlciBo YXMgbm90IHByb3ZpZGVkCi0gICAgYW55IHByZWZpeCwgZG9uJ3QgbWFrZSBhbnkgYXNzdW1wdGlv bnMgKGkuZS4sIGFzc3VtZSBBRl9VTlNQRUMgd2hlbgotICAgIGRlYWxpbmcgd2l0aCAnZ2V0YWRk cmluZm8nKSAqdW5sZXNzKiB0aGUgaG9zdCBzdGFydHMgd2l0aCAiWyIgKGluCi0gICAgd2hpY2gg Y2FzZSwgYXNzdW1lIGl0J3MgYW4gSVB2NiBob3N0KS4KLQotICAtIElmIHRoZSB1c2VyIGhhcyBw cm92aWRlZCBhIHByZWZpeCB0aGF0IGRvZXMgc3BlY2lmeSB0aGUgcHJvdG9jb2wKLSAgICB2ZXJz aW9uIChpLmUuLCAidGNwNDoiLCAidGNwNjoiLCAidWRwNDoiIG9yICJ1ZHA2OiIpLCB0aGVuIHJl c3BlY3QKLSAgICB0aGF0LgotCi1UaGlzIG1ldGhvZCBkb2Vzbid0IGZvbGxvdyBzdHJpY3RseSB3 aGF0IFJGQyAyNzMyIHByb3Bvc2VzICh0aGF0Ci1saXRlcmFsIElQdjYgYWRkcmVzc2VzIHNob3Vs ZCBiZSBwcm92aWRlZCBlbmNsb3NlZCBpbiAiWyIgYW5kICJdIikKLWJlY2F1c2UgSVB2NiBhZGRy ZXNzZXMgc3RpbGwgY2FuIGJlIHByb3ZpZGVkIHdpdGhvdXQgc3F1YXJlIGJyYWNrZXRzCi1pbiBv dXIgY2FzZSwgYnV0IHNpbmNlIHdlIGhhdmUgcHJlZml4ZXMgdG8gc3BlY2lmeSBwcm90b2NvbCB2 ZXJzaW9ucyBJCi10aGluayB0aGlzIGlzIG5vdCBhbiBpc3N1ZS4KLQotQW5vdGhlciB0aGluZyB3 b3J0aCBtZW50aW9uaW5nIGlzIHRoZSBuZXcgJ0dEQl9URVNUX1NPQ0tFVEhPU1QnCi10ZXN0Y2Fz ZSBwYXJhbWV0ZXIsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlCi1ob3N0 bmFtZSAod2l0aG91dCB0aGUgcG9ydCkgdG8gYmUgdXNlZCB3aGVuIHRlc3RpbmcgR0RCIGFuZAot Z2Ric2VydmVyLiAgRm9yIGV4YW1wbGUsIHRvIHJ1biBJUHY2IHRlc3RzOgotCi0gICQgbWFrZSBj aGVjay1nZGIgUlVOVEVTVEZMQUdTPSdHREJfVEVTVF9TT0NLRVRIT1NUPXRjcDY6Wzo6MV0nCi0K LU9yLCB0byBydW4gSVB2NCB0ZXN0czoKLQotICAkIG1ha2UgY2hlY2stZ2RiIFJVTlRFU1RGTEFH Uz0nR0RCX1RFU1RfU09DS0VUSE9TVD10Y3A0OjEyNy4wLjAuMScKLQotVGhpcyByZXF1aXJlZCBh IGZldyBjaGFuZ2VzIG9uIHRoZSBnZGJzZXJ2ZXItYmFzZS5leHAsIGFuZCBhbHNvIGEKLW1pbmlt YWwgYWRqdXN0bWVudCBvbiBnZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2FsLWJpbmFyeS5leHAu Ci0KLUZpbmFsbHksIEkndmUgaW1wbGVtZW50ZWQgYSBuZXcgdGVzdGNhc2UsCi1nZGIuc2VydmVy L3NlcnZlci1jb25uZWN0LmV4cCwgd2hpY2ggaXMgc3VwcG9zZWQgdG8gcnVuIG9uIHRoZSBuYXRp dmUKLWhvc3QgYW5kIHBlcmZvcm0gdmFyaW91cyAic21va2UgdGVzdHMiIHVzaW5nIGRpZmZlcmVu dCBjb25uZWN0aW9uCi1tZXRob2RzLgotCi1UaGlzIHBhdGNoIGhhcyBiZWVuIHJlZ3Jlc3Npb24t dGVzdGVkIG9uIEJ1aWxkQm90IGFuZCBsb2NhbGx5LCBhbmQKLWFsc28gYnVpbHQgdXNpbmcgYSB4 ODZfNjQtdzY0LW1pbmd3MzIgR0NDLCBhbmQgbm8gcHJvYmxlbXMgd2VyZSBmb3VuZC4KLQotZ2Ri L0NoYW5nZUxvZzoKLTIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2Rq QHJlZGhhdC5jb20+Ci0JICAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLQkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWlsLmNvbT4KLQkgICAgVHN1 dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29tPgotCSAgICBQZWRybyBBbHZlcyAgPHBhbHZl c0ByZWRoYXQuY29tPgotCi0JKiBNYWtlZmlsZS5pbiAoU1VCRElSX1VOSVRURVNUU19TUkNTKTog QWRkCi0JJ3VuaXR0ZXN0cy9wYXJzZS1jb25uZWN0aW9uLXNwZWMtc2VsZnRlc3RzLmMnLgotCShD T01NT05fU0ZJTEVTKTogQWRkICdjb21tb24vbmV0c3R1ZmYuYycuCi0JKEhGSUxFU19OT19TUkNE SVIpOiBBZGQgJ2NvbW1vbi9uZXRzdHVmZi5oJy4KLQkqIE5FV1MgKENoYW5nZXMgc2luY2UgR0RC IDguMik6IE1lbnRpb24gSVB2NiBzdXBwb3J0LgotCSogY29tbW9uL25ldHN0dWZmLmM6IE5ldyBm aWxlLgotCSogY29tbW9uL25ldHN0dWZmLmg6IE5ldyBmaWxlLgotCSogc2VyLXRjcC5jOiBJbmNs dWRlICduZXRzdHVmZi5oJyBhbmQgJ3dzcGlhcGkuaCcuCi0JKHdhaXRfZm9yX2Nvbm5lY3QpOiBV cGRhdGUgY29tbWVudC4gIE5ldyBwYXJhbWV0ZXIKLQknZ2RiOjpvcHRpb25hbDxpbnQ+IHNvY2sn IGluc3RlYWQgb2YgJ3N0cnVjdCBzZXJpYWwgKnNjYicuCi0JVXNlICdzb2NrJyBkaXJlY3RseSBp bnN0ZWFkIG9mICdzY2ItPmZkJy4KLQkodHJ5X2Nvbm5lY3QpOiBOZXcgZnVuY3Rpb24sIHdpdGgg Y29kZSBmcm9tICduZXRfb3BlbicuCi0JKG5ldF9vcGVuKTogUmV3cml0ZSBtYWluIGxvb3AgdG8g ZGVhbCB3aXRoIG11bHRpcGxlCi0Jc29ja2V0cy9hZGRyZXNzZXMuICBIYW5kbGUgSVB2Ni1zdHls ZSBob3N0bmFtZXM7IGltcGxlbWVudAotCXN1cHBvcnQgZm9yIElQdjYgY29ubmVjdGlvbnMuCi0J KiB1bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jOiBOZXcgZmlsZS4K LQotZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2c6Ci0yMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBK dW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JICAgIFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFp bC5jb20+Ci0JICAgIFRzdXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KLQotCSogTWFr ZWZpbGUuaW4gKFNGSUxFUyk6IEFkZCAnJChzcmNkaXIpL2NvbW1vbi9uZXRzdHVmZi5jJy4KLQko T0JTKTogQWRkICdjb21tb24vbmV0c3R1ZmYubycuCi0JKEdEQlJFUExBWV9PQlMpOiBMaWtld2lz ZS4KLQkqIGdkYnJlcGxheS5jOiBJbmNsdWRlICd3c3BpYXBpLmgnIGFuZCAnbmV0c3R1ZmYuaCcu Ci0JKHJlbW90ZV9vcGVuKTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIElQdjYKLQljb25uZWN0aW9u cy4KLQkqIHJlbW90ZS11dGlscy5jOiBJbmNsdWRlICduZXRzdHVmZi5oJywgJ2ZpbGVzdHVmZi5o JwotCWFuZCAnd3NwaWFwaS5oJy4KLQkoaGFuZGxlX2FjY2VwdF9ldmVudCk6IEFjY2VwdCBjb25u ZWN0aW9ucyBmcm9tIElQdjYgc291cmNlcy4KLQkocmVtb3RlX3ByZXBhcmUpOiBIYW5kbGUgSVB2 Ni1zdHlsZSBob3N0bmFtZXM7IGltcGxlbWVudAotCXN1cHBvcnQgZm9yIElQdjYgY29ubmVjdGlv bnMuCi0JKHJlbW90ZV9vcGVuKTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIHByaW50aW5nIGNvbm5l Y3Rpb25zIGZyb20KLQlJUHY2IHNvdXJjZXMuCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgot MjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4K LQkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCSAgICBQ YXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgotCSAgICBUc3V0b211IFNla2kgIDxz ZWtpcmlraUBnbWFpbC5jb20+Ci0KLQkqIFJFQURNRSAoVGVzdHN1aXRlIFBhcmFtZXRlcnMpOiBN ZW50aW9uIG5ldyAnR0RCX1RFU1RfU09DS0VUSE9TVCcKLQlwYXJhbWV0ZXIuCi0JKiBib2FyZHMv bmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5leHA6IERvIG5vdCBzZXQgJ3NvY2tldGhvc3QnCi0J YnkgZGVmYXVsdC4KLQkqIGJvYXJkcy9uYXRpdmUtZ2Ric2VydmVyLmV4cDogTGlrZXdpc2UuCi0J KiBnZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2FsLWJpbmFyeS5leHA6IEltcHJvdmUgcmVnZXhw IHVzZWQKLQlmb3IgZGV0ZWN0aW5nIHdoZW4gYSByZW1vdGUgZGVidWdnaW5nIGNvbm5lY3Rpb24g c3VjY2VlZHMuCi0JKiBnZGIuc2VydmVyL3NlcnZlci1jb25uZWN0LmV4cDogTmV3IGZpbGUuCi0J KiBsaWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwIChnZGJzZXJ2ZXJfZGVmYXVsdF9nZXRfY29tbV9w b3J0KToKLQlEbyBub3QgcHJlZml4IHRoZSBwb3J0IG51bWJlciB3aXRoICI6Ii4KLQkoZ2Ric2Vy dmVyX3N0YXJ0KTogTmV3IGdsb2JhbCBHREJfVEVTVF9TT0NLRVRIT1NULiAgSW1wbGVtZW50Ci0J c3VwcG9ydCBmb3IgZGV0ZWN0aW5nIGFuZCB1c2luZyBpdC4gIEFkZCAnJGRlYnVnaG9zdF9nZGJz ZXJ2ZXInCi0JdG8gdGhlIGxpc3Qgb2YgYXJndW1lbnRzIHVzZWQgdG8gc3RhcnQgZ2Ric2VydmVy LiAgSGFuZGxlIGNhc2UKLQl3aGVuIGdkYnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBhIG5ldHdvcmsg bmFtZS4KLQotZ2RiL2RvYy9DaGFuZ2VMb2c6Ci0yMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBK dW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JICAgIFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFp bC5jb20+Ci0JICAgIFRzdXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KLQotCSogZ2Ri LnRleGluZm8gKFJlbW90ZSBDb25uZWN0aW9uIENvbW1hbmRzKTogQWRkIGV4cGxhbmF0aW9uCi0J YWJvdXQgbmV3IElQdjYgc3VwcG9ydC4gIEFkZCBuZXcgY29ubmVjdGlvbiBwcmVmaXhlcy4KLQot ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotLS0tIGEvZ2Ri L01ha2VmaWxlLmluCi0rKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC00MzAsNiArNDMwLDcgQEAg U1VCRElSX1VOSVRURVNUU19TUkNTID0gXAotIAl1bml0dGVzdHMvb2Zmc2V0LXR5cGUtc2VsZnRl c3RzLmMgXAotIAl1bml0dGVzdHMvb2JzZXJ2YWJsZS1zZWxmdGVzdHMuYyBcCi0gCXVuaXR0ZXN0 cy9vcHRpb25hbC1zZWxmdGVzdHMuYyBcCi0rCXVuaXR0ZXN0cy9wYXJzZS1jb25uZWN0aW9uLXNw ZWMtc2VsZnRlc3RzLmMgXAotIAl1bml0dGVzdHMvcHRpZC1zZWxmdGVzdHMuYyBcCi0gCXVuaXR0 ZXN0cy9yc3AtbG93LXNlbGZ0ZXN0cy5jIFwKLSAJdW5pdHRlc3RzL3Njb3BlZF9mZC1zZWxmdGVz dHMuYyBcCi1AQCAtOTY3LDYgKzk2OCw3IEBAIENPTU1PTl9TRklMRVMgPSBcCi0gCWNvbW1vbi9q b2ItY29udHJvbC5jIFwKLSAJY29tbW9uL2dkYl90aWxkZV9leHBhbmQuYyBcCi0gCWNvbW1vbi9n ZGJfdmVjcy5jIFwKLSsJY29tbW9uL25ldHN0dWZmLmMgXAotIAljb21tb24vbmV3LW9wLmMgXAot IAljb21tb24vcGF0aHN0dWZmLmMgXAotIAljb21tb24vcHJpbnQtdXRpbHMuYyBcCi1AQCAtMTQ0 OCw2ICsxNDUwLDcgQEAgSEZJTEVTX05PX1NSQ0RJUiA9IFwKLSAJY29tbW9uL2dkYl92ZWNzLmgg XAotIAljb21tb24vZ2RiX3dhaXQuaCBcCi0gCWNvbW1vbi9jb21tb24taW5mZXJpb3IuaCBcCi0r CWNvbW1vbi9uZXRzdHVmZi5oIFwKLSAJY29tbW9uL2hvc3QtZGVmcy5oIFwKLSAJY29tbW9uL3Bh dGhzdHVmZi5oIFwKLSAJY29tbW9uL3ByaW50LXV0aWxzLmggXAotZGlmZiAtLWdpdCBhL2dkYi9O RVdTIGIvZ2RiL05FV1MKLS0tLSBhL2dkYi9ORVdTCi0rKysgYi9nZGIvTkVXUwotQEAgLTEsNiAr MSwxMiBAQAotIAkJV2hhdCBoYXMgY2hhbmdlZCBpbiBHREI/Ci0gCSAgICAgKE9yZ2FuaXplZCBy ZWxlYXNlIGJ5IHJlbGVhc2UpCi0gCi0rKioqIENoYW5nZXMgc2luY2UgR0RCIDguMgotKwotKyog R0RCIGFuZCBHREJzZXJ2ZXIgbm93IHN1cHBvcnQgSVB2NiBjb25uZWN0aW9ucy4gIElQdjYgYWRk cmVzc2VzCi0rICBjYW4gYmUgcGFzc2VkIHVzaW5nIHRoZSAnW0FERFJFU1NdOlBPUlQnIG5vdGF0 aW9uLCBvciB0aGUgcmVndWxhcgotKyAgJ0FERFJFU1M6UE9SVCcgbWV0aG9kLgotKwotICoqKiBD aGFuZ2VzIGluIEdEQiA4LjIKLSAKLSAqIFRoZSAnc2V0IGRpc2Fzc2VtYmxlci1vcHRpb25zJyBj b21tYW5kIG5vdyBzdXBwb3J0cyBzcGVjaWZ5aW5nIG9wdGlvbnMKLWRpZmYgLS1naXQgYS9nZGIv Y29tbW9uL25ldHN0dWZmLmMgYi9nZGIvY29tbW9uL25ldHN0dWZmLmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvY29tbW9uL25ldHN0dWZmLmMKLUBAIC0w LDAgKzEsMTU1IEBACi0rLyogT3BlcmF0aW9ucyBvbiBuZXR3b3JrIHN0dWZmLgotKyAgIENvcHly aWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlz IGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJjb21tb24tZGVmcy5oIgotKyNpbmNsdWRlICJuZXRz dHVmZi5oIgotKyNpbmNsdWRlIDxhbGdvcml0aG0+Ci0rCi0rI2lmZGVmIFVTRV9XSU4zMkFQSQot KyNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNpbmNsdWRlIDx3c3BpYXBpLmg+Ci0rI2Vsc2UKLSsj aW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSsjaW5jbHVk ZSA8bmV0ZGIuaD4KLSsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpbmNsdWRlIDxuZXRpbmV0 L3RjcC5oPgotKyNlbmRpZgotKwotKy8qIFNlZSBjb21tb24vbmV0c3R1ZmYuaC4gICovCi0rCi0r c2NvcGVkX2ZyZWVfYWRkcmluZm86On5zY29wZWRfZnJlZV9hZGRyaW5mbyAoKQotK3sKLSsgIGZy ZWVhZGRyaW5mbyAobV9yZXMpOwotK30KLSsKLSsvKiBTZWUgY29tbW9uL25ldHN0dWZmLmguICAq LwotKwotK3BhcnNlZF9jb25uZWN0aW9uX3NwZWMKLStwYXJzZV9jb25uZWN0aW9uX3NwZWNfd2l0 aG91dF9wcmVmaXggKHN0ZDo6c3RyaW5nIHNwZWMsIHN0cnVjdCBhZGRyaW5mbyAqaGludCkKLSt7 Ci0rICBwYXJzZWRfY29ubmVjdGlvbl9zcGVjIHJldDsKLSsgIHNpemVfdCBsYXN0X2NvbG9uX3Bv cyA9IDA7Ci0rICAvKiBXZSdyZSBkZWFsaW5nIHdpdGggSVB2NiBpZjoKLSsKLSsgICAgIC0gYWlf ZmFtaWx5IGlzIEFGX0lORVQ2LCBvcgotKyAgICAgLSBhaV9mYW1pbHkgaXMgbm90IEFGX0lORVQs IGFuZAotKyAgICAgICAtIHNwZWNbMF0gaXMgJ1snLCBvcgotKyAgICAgICAtIHRoZSBudW1iZXIg b2YgJzonIG9uIHNwZWMgaXMgZ3JlYXRlciB0aGFuIDEuICAqLwotKyAgYm9vbCBpc19pcHY2ID0g KGhpbnQtPmFpX2ZhbWlseSA9PSBBRl9JTkVUNgotKwkJICB8fCAoaGludC0+YWlfZmFtaWx5ICE9 IEFGX0lORVQKLSsJCSAgICAgICYmIChzcGVjWzBdID09ICdbJwotKwkJCSAgfHwgc3RkOjpjb3Vu dCAoc3BlYy5iZWdpbiAoKSwKLSsJCQkJCSBzcGVjLmVuZCAoKSwgJzonKSA+IDEpKSk7Ci0rCi0r ICBpZiAoaXNfaXB2NikKLSsgICAgewotKyAgICAgIGlmIChzcGVjWzBdID09ICdbJykKLSsJewot KwkgIC8qIElQdjYgYWRkcmVzc2VzIGNhbiBiZSB3cml0dGVuIGFzICdbQUREUl06UE9SVCcsIGFu ZCB3ZQotKwkgICAgIHN1cHBvcnQgdGhpcyBub3RhdGlvbi4gICovCi0rCSAgc2l6ZV90IGNsb3Nl X2JyYWNrZXRfcG9zID0gc3BlYy5maW5kX2ZpcnN0X29mICgnXScpOwotKwotKwkgIGlmIChjbG9z ZV9icmFja2V0X3BvcyA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSsJICAgIGVycm9yIChfKCJNaXNz aW5nIGNsb3NlIGJyYWNrZXQgaW4gaG9zdG5hbWUgJyVzJyIpLAotKwkJICAgc3BlYy5jX3N0ciAo KSk7Ci0rCi0rCSAgaGludC0+YWlfZmFtaWx5ID0gQUZfSU5FVDY7Ci0rCi0rCSAgY29uc3QgY2hh ciBjID0gc3BlY1tjbG9zZV9icmFja2V0X3BvcyArIDFdOwotKwotKwkgIGlmIChjID09ICdcMCcp Ci0rCSAgICBsYXN0X2NvbG9uX3BvcyA9IHN0ZDo6c3RyaW5nOjpucG9zOwotKwkgIGVsc2UgaWYg KGMgIT0gJzonKQotKwkgICAgZXJyb3IgKF8oIkludmFsaWQgY3J1ZnQgYWZ0ZXIgY2xvc2UgYnJh Y2tldCBpbiAnJXMnIiksCi0rCQkgICBzcGVjLmNfc3RyICgpKTsKLSsKLSsJICAvKiBFcmFzZSBi b3RoICdbJyBhbmQgJ10nLiAgKi8KLSsJICBzcGVjLmVyYXNlICgwLCAxKTsKLSsJICBzcGVjLmVy YXNlIChjbG9zZV9icmFja2V0X3BvcyAtIDEsIDEpOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoc3Bl Yy5maW5kX2ZpcnN0X29mICgnXScpICE9IHN0ZDo6c3RyaW5nOjpucG9zKQotKwllcnJvciAoXygi TWlzc2luZyBvcGVuIGJyYWNrZXQgaW4gaG9zdG5hbWUgJyVzJyIpLAotKwkgICAgICAgc3BlYy5j X3N0ciAoKSk7Ci0rICAgIH0KLSsKLSsgIGlmIChsYXN0X2NvbG9uX3BvcyA9PSAwKQotKyAgICBs YXN0X2NvbG9uX3BvcyA9IHNwZWMuZmluZF9sYXN0X29mICgnOicpOwotKwotKyAgLyogVGhlIGxl bmd0aCBvZiB0aGUgaG9zdG5hbWUgcGFydC4gICovCi0rICBzaXplX3QgaG9zdF9sZW47Ci0rCi0r ICBpZiAobGFzdF9jb2xvbl9wb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0rICAgIHsKLSsgICAg ICAvKiBUaGUgdXNlciBoYXMgcHJvdmlkZWQgYSBwb3J0LiAgKi8KLSsgICAgICBob3N0X2xlbiA9 IGxhc3RfY29sb25fcG9zOwotKyAgICAgIHJldC5wb3J0X3N0ciA9IHNwZWMuc3Vic3RyIChsYXN0 X2NvbG9uX3BvcyArIDEpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIGhvc3RfbGVuID0gc3BlYy5z aXplICgpOwotKwotKyAgcmV0Lmhvc3Rfc3RyID0gc3BlYy5zdWJzdHIgKDAsIGhvc3RfbGVuKTsK LSsKLSsgIC8qIERlZmF1bHQgaG9zdG5hbWUgaXMgbG9jYWxob3N0LiAgKi8KLSsgIGlmIChyZXQu aG9zdF9zdHIuZW1wdHkgKCkpCi0rICAgIHJldC5ob3N0X3N0ciA9ICJsb2NhbGhvc3QiOwotKwot KyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyogU2VlIGNvbW1vbi9uZXRzdHVmZi5oLiAgKi8KLSsK LStwYXJzZWRfY29ubmVjdGlvbl9zcGVjCi0rcGFyc2VfY29ubmVjdGlvbl9zcGVjIChjb25zdCBj aGFyICpzcGVjLCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQpCi0rewotKyAgLyogU3RydWN0IHRvIGhv bGQgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4gdmFsaWQgcHJlZml4ZXMsIHRoZWlyCi0rICAgICBm YW1pbHkgYW5kIHNvY2t0eXBlLiAgKi8KLSsgIHN0cnVjdCBob3N0X3ByZWZpeAotKyAgICB7Ci0r ICAgICAgLyogVGhlIHByZWZpeC4gICovCi0rICAgICAgY29uc3QgY2hhciAqcHJlZml4OwotKwot KyAgICAgIC8qIFRoZSAnYWlfZmFtaWx5Jy4gICovCi0rICAgICAgaW50IGZhbWlseTsKLSsKLSsg ICAgICAvKiBUaGUgJ2FpX3NvY2t0eXBlJy4gICovCi0rICAgICAgaW50IHNvY2t0eXBlOwotKyAg ICB9OwotKyAgc3RhdGljIGNvbnN0IHN0cnVjdCBob3N0X3ByZWZpeCBwcmVmaXhlc1tdID0KLSsg ICAgewotKyAgICAgIHsgInVkcDoiLCAgQUZfVU5TUEVDLCBTT0NLX0RHUkFNIH0sCi0rICAgICAg eyAidGNwOiIsICBBRl9VTlNQRUMsIFNPQ0tfU1RSRUFNIH0sCi0rICAgICAgeyAidWRwNDoiLCBB Rl9JTkVULCAgIFNPQ0tfREdSQU0gfSwKLSsgICAgICB7ICJ0Y3A0OiIsIEFGX0lORVQsICAgU09D S19TVFJFQU0gfSwKLSsgICAgICB7ICJ1ZHA2OiIsIEFGX0lORVQ2LCAgU09DS19ER1JBTSB9LAot KyAgICAgIHsgInRjcDY6IiwgQUZfSU5FVDYsICBTT0NLX1NUUkVBTSB9LAotKyAgICB9OwotKwot KyAgZm9yIChjb25zdCBob3N0X3ByZWZpeCBwcmVmaXggOiBwcmVmaXhlcykKLSsgICAgaWYgKHN0 YXJ0c3dpdGggKHNwZWMsIHByZWZpeC5wcmVmaXgpKQotKyAgICAgIHsKLSsJc3BlYyArPSBzdHJs ZW4gKHByZWZpeC5wcmVmaXgpOwotKwloaW50LT5haV9mYW1pbHkgPSBwcmVmaXguZmFtaWx5Owot KwloaW50LT5haV9zb2NrdHlwZSA9IHByZWZpeC5zb2NrdHlwZTsKLSsJaGludC0+YWlfcHJvdG9j b2wKLSsJICA9IGhpbnQtPmFpX3NvY2t0eXBlID09IFNPQ0tfREdSQU0gPyBJUFBST1RPX1VEUCA6 IElQUFJPVE9fVENQOwotKwlicmVhazsKLSsgICAgICB9Ci0rCi0rICByZXR1cm4gcGFyc2VfY29u bmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJlZml4IChzcGVjLCBoaW50KTsKLSt9Ci1kaWZmIC0tZ2l0 IGEvZ2RiL2NvbW1vbi9uZXRzdHVmZi5oIGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5oCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2NvbW1vbi9uZXRzdHVmZi5o Ci1AQCAtMCwwICsxLDc2IEBACi0rLyogT3BlcmF0aW9ucyBvbiBuZXR3b3JrIHN0dWZmLgotKyAg IENvcHlyaWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpZm5kZWYgTkVUU1RVRkZfSAotKyNkZWZpbmUgTkVUU1RV RkZfSAotKwotKyNpbmNsdWRlIDxzdHJpbmc+Ci0rCi0rLyogTGlrZSBOSV9NQVhIT1NUL05JX01B WFNFUlYsIGJ1dCBlbm91Z2ggZm9yIG51bWVyaWMgZm9ybXMuICAqLwotKyNkZWZpbmUgR0RCX05J X01BWF9BRERSIDY0Ci0rI2RlZmluZSBHREJfTklfTUFYX1BPUlQgMTYKLSsKLSsvKiBIZWxwZXIg Y2xhc3MgdG8gZ3VhcmFudGVlIHRoYXQgd2UgYWx3YXlzIGNhbGwgJ2ZyZWVhZGRyaW5mbycuICAq LwotKwotK2NsYXNzIHNjb3BlZF9mcmVlX2FkZHJpbmZvCi0rewotK3B1YmxpYzoKLSsgIC8qIERl ZmF1bHQgY29uc3RydWN0b3IuICAqLwotKyAgZXhwbGljaXQgc2NvcGVkX2ZyZWVfYWRkcmluZm8g KHN0cnVjdCBhZGRyaW5mbyAqYWluZm8pCi0rICAgIDogbV9yZXMgKGFpbmZvKQotKyAgewotKyAg fQotKwotKyAgLyogRGVzdHJ1Y3RvciByZXNwb25zaWJsZSBmb3IgZnJlZSdpbmcgTV9SRVMgYnkg Y2FsbGluZwotKyAgICAgJ2ZyZWVhZGRyaW5mbycuICAqLwotKyAgfnNjb3BlZF9mcmVlX2FkZHJp bmZvICgpOwotKwotKyAgRElTQUJMRV9DT1BZX0FORF9BU1NJR04gKHNjb3BlZF9mcmVlX2FkZHJp bmZvKTsKLSsKLStwcml2YXRlOgotKyAgLyogVGhlIGFkZHJpbmZvIHJlc291cmNlLiAgKi8KLSsg IHN0cnVjdCBhZGRyaW5mbyAqbV9yZXM7Ci0rfTsKLSsKLSsvKiBUaGUgc3RydWN0IHdlIHJldHVy biBhZnRlciBwYXJzaW5nIHRoZSBjb25uZWN0aW9uIHNwZWMuICAqLwotKwotK3N0cnVjdCBwYXJz ZWRfY29ubmVjdGlvbl9zcGVjCi0rewotKyAgLyogVGhlIGhvc3RuYW1lLiAgKi8KLSsgIHN0ZDo6 c3RyaW5nIGhvc3Rfc3RyOwotKwotKyAgLyogVGhlIHBvcnQsIGlmIGFueS4gICovCi0rICBzdGQ6 OnN0cmluZyBwb3J0X3N0cjsKLSt9OwotKwotKwotKy8qIFBhcnNlIFNQRUMgKHdoaWNoIGlzIGEg c3RyaW5nIGluIHRoZSBmb3JtIG9mICJBRERSOlBPUlQiKSBhbmQKLSsgICByZXR1cm4gYSAncGFy c2VkX2Nvbm5lY3Rpb25fc3BlYycgc3RydWN0dXJlIHdpdGggdGhlIHByb3BlciBmaWVsZHMKLSsg ICBmaWxsZWQgaW4uICBBbHNvIGFkanVzdCBISU5UIGFjY29yZGluZ2x5LiAgKi8KLStleHRlcm4g cGFyc2VkX2Nvbm5lY3Rpb25fc3BlYwotKyAgcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRf cHJlZml4IChzdGQ6OnN0cmluZyBzcGVjLAotKwkJCQkJc3RydWN0IGFkZHJpbmZvICpoaW50KTsK LSsKLSsvKiBQYXJzZSBTUEVDICh3aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZgotKyAg ICJbdGNwWzZdOnx1ZHBbNl06XUFERFI6UE9SVCIpIGFuZCByZXR1cm4gYSAncGFyc2VkX2Nvbm5l Y3Rpb25fc3BlYycKLSsgICBzdHJ1Y3R1cmUgd2l0aCB0aGUgcHJvcGVyIGZpZWxkcyBmaWxsZWQg aW4uICBBbHNvIGFkanVzdCBISU5UCi0rICAgYWNjb3JkaW5nbHkuICAqLwotK2V4dGVybiBwYXJz ZWRfY29ubmVjdGlvbl9zcGVjIHBhcnNlX2Nvbm5lY3Rpb25fc3BlYyAoY29uc3QgY2hhciAqc3Bl YywKLSsJCQkJCQkgICAgIHN0cnVjdCBhZGRyaW5mbyAqaGludCk7Ci0rCi0rI2VuZGlmIC8qICEg TkVUU1RVRkZfSCAqLwotZGlmZiAtLWdpdCBhL2dkYi9kb2MvQ2hhbmdlTG9nIGIvZ2RiL2RvYy9D aGFuZ2VMb2cKLS0tLSBhL2dkYi9kb2MvQ2hhbmdlTG9nCi0rKysgYi9nZGIvZG9jL0NoYW5nZUxv ZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTgtMDctMTEgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAg PHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0rCSAgICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0rCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29t PgotKwkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29tPgotKwotKwkqIGdkYi50 ZXhpbmZvIChSZW1vdGUgQ29ubmVjdGlvbiBDb21tYW5kcyk6IEFkZCBleHBsYW5hdGlvbgotKwlh Ym91dCBuZXcgSVB2NiBzdXBwb3J0LiAgQWRkIG5ldyBjb25uZWN0aW9uIHByZWZpeGVzLgotKwot IDIwMTgtMDctMDIgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AbWlwcy5jb20+Ci0gCi0gCVBS IHRkZXAvODI4MgotZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCi0tLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50 ZXhpbmZvCi1AQCAtMjA1NDgsMTYgKzIwNTQ4LDI3IEBAIElmIHlvdSdyZSB1c2luZyBhIHNlcmlh bCBsaW5lLCB5b3UgbWF5IHdhbnQgdG8gZ2l2ZSBAdmFsdWV7R0RCTn0gdGhlCi0gQGNvZGV7dGFy Z2V0fSBjb21tYW5kLgotIAotIEBpdGVtIHRhcmdldCByZW1vdGUgQGNvZGV7QHZhcntob3N0fTpA dmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle0B2YXJ7W2hvc3RdfTpAdmFy e3BvcnR9fQotIEBpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3RjcDpAdmFye2hvc3R9OkB2YXJ7 cG9ydH19Ci0rQGl0ZW14IHRhcmdldCByZW1vdGUgQGNvZGV7dGNwOkB2YXJ7W2hvc3RdfTpAdmFy e3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3RjcDQ6QHZhcntob3N0fTpAdmFy e3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3RjcDY6QHZhcntob3N0fTpAdmFy e3BvcnR9fQotK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rle3RjcDY6QHZhcntbaG9zdF19OkB2 YXJ7cG9ydH19Ci0gQGl0ZW14IHRhcmdldCBleHRlbmRlZC1yZW1vdGUgQGNvZGV7QHZhcntob3N0 fTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle0B2YXJ7 W2hvc3RdfTpAdmFye3BvcnR9fQotIEBpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rl e3RjcDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19Ci0rQGl0ZW14IHRhcmdldCBleHRlbmRlZC1yZW1v dGUgQGNvZGV7dGNwOkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgZXh0 ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDQ6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0 YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDY6QHZhcntob3N0fTpAdmFye3BvcnR9fQot K0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDY6QHZhcntbaG9zdF19OkB2 YXJ7cG9ydH19Ci0gQGNpbmRleCBAYWNyb255bXtUQ1B9IHBvcnQsIEBjb2Rle3RhcmdldCByZW1v dGV9Ci0gRGVidWcgdXNpbmcgYSBAYWNyb255bXtUQ1B9IGNvbm5lY3Rpb24gdG8gQHZhcntwb3J0 fSBvbiBAdmFye2hvc3R9LgotLVRoZSBAdmFye2hvc3R9IG1heSBiZSBlaXRoZXIgYSBob3N0IG5h bWUgb3IgYSBudW1lcmljIEBhY3Jvbnlte0lQfQotLWFkZHJlc3M7IEB2YXJ7cG9ydH0gbXVzdCBi ZSBhIGRlY2ltYWwgbnVtYmVyLiAgVGhlIEB2YXJ7aG9zdH0gY291bGQgYmUKLS10aGUgdGFyZ2V0 IG1hY2hpbmUgaXRzZWxmLCBpZiBpdCBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIG5ldCwg b3IKLS1pdCBtaWdodCBiZSBhIHRlcm1pbmFsIHNlcnZlciB3aGljaCBpbiB0dXJuIGhhcyBhIHNl cmlhbCBsaW5lIHRvIHRoZQotLXRhcmdldC4KLStUaGUgQHZhcntob3N0fSBtYXkgYmUgZWl0aGVy IGEgaG9zdCBuYW1lLCBhIG51bWVyaWMgQGFjcm9ueW17SVB2NH0KLSthZGRyZXNzLCBvciBhIG51 bWVyaWMgQGFjcm9ueW17SVB2Nn0gYWRkcmVzcyAod2l0aCBvciB3aXRob3V0IHRoZQotK3NxdWFy ZSBicmFja2V0cyB0byBzZXBhcmF0ZSB0aGUgYWRkcmVzcyBmcm9tIHRoZSBwb3J0KTsgQHZhcntw b3J0fQotK211c3QgYmUgYSBkZWNpbWFsIG51bWJlci4gIFRoZSBAdmFye2hvc3R9IGNvdWxkIGJl IHRoZSB0YXJnZXQgbWFjaGluZQotK2l0c2VsZiwgaWYgaXQgaXMgZGlyZWN0bHkgY29ubmVjdGVk IHRvIHRoZSBuZXQsIG9yIGl0IG1pZ2h0IGJlIGEKLSt0ZXJtaW5hbCBzZXJ2ZXIgd2hpY2ggaW4g dHVybiBoYXMgYSBzZXJpYWwgbGluZSB0byB0aGUgdGFyZ2V0LgotIAotIEZvciBleGFtcGxlLCB0 byBjb25uZWN0IHRvIHBvcnQgMjgyOCBvbiBhIHRlcm1pbmFsIHNlcnZlciBuYW1lZAotIEBjb2Rl e21hbnlmYXJtc306Ci1AQCAtMjA1NjYsNiArMjA1NzcsMjggQEAgRm9yIGV4YW1wbGUsIHRvIGNv bm5lY3QgdG8gcG9ydCAyODI4IG9uIGEgdGVybWluYWwgc2VydmVyIG5hbWVkCi0gdGFyZ2V0IHJl bW90ZSBtYW55ZmFybXM6MjgyOAotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0rVG8gY29ubmVjdCB0 byBwb3J0IDI4Mjggb24gYSB0ZXJtaW5hbCBzZXJ2ZXIgd2hvc2UgYWRkcmVzcyBpcwotK0Bjb2Rl ezIwMDE6MGRiODo4NWEzOjAwMDA6MDAwMDo4YTJlOjAzNzA6NzMzNH0sIHlvdSBjYW4gZWl0aGVy IHVzZSB0aGUKLStzcXVhcmUgYnJhY2tldCBzeW50YXg6Ci0rCi0rQHNtYWxsZXhhbXBsZQotK3Rh cmdldCByZW1vdGUgWzIwMDE6MGRiODo4NWEzOjAwMDA6MDAwMDo4YTJlOjAzNzA6NzMzNF06Mjgy OAotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQG5vaW5kZW50Ci0rb3IgZXhwbGljaXRseSBzcGVj aWZ5IHRoZSBAYWNyb255bXtJUHY2fSBwcm90b2NvbDoKLSsKLStAc21hbGxleGFtcGxlCi0rdGFy Z2V0IHJlbW90ZSB0Y3A2OjIwMDE6MGRiODo4NWEzOjAwMDA6MDAwMDo4YTJlOjAzNzA6NzMzNDoy ODI4Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGlzIGxhc3QgZXhhbXBsZSBtYXkgYmUgY29u ZnVzaW5nIHRvIHRoZSByZWFkZXIsIGJlY2F1c2UgdGhlcmUgaXMgbm8KLSt2aXNpYmxlIHNlcGFy YXRpb24gYmV0d2VlbiB0aGUgaG9zdG5hbWUgYW5kIHRoZSBwb3J0IG51bWJlci4KLStUaGVyZWZv cmUsIHdlIHJlY29tbWVuZCB0aGUgdXNlciB0byBwcm92aWRlIEBhY3Jvbnlte0lQdjZ9IGFkZHJl c3NlcwotK3VzaW5nIHNxdWFyZSBicmFja2V0cyBmb3IgY2xhcml0eS4gIEhvd2V2ZXIsIGl0IGlz IGltcG9ydGFudCB0bwotK21lbnRpb24gdGhhdCBmb3IgQHZhbHVle0dEQk59IHRoZXJlIGlzIG5v IGFtYmlndWl0eTogdGhlIG51bWJlciBhZnRlcgotK3RoZSBsYXN0IGNvbG9uIGlzIGNvbnNpZGVy ZWQgdG8gYmUgdGhlIHBvcnQgbnVtYmVyLgotKwotIElmIHlvdXIgcmVtb3RlIHRhcmdldCBpcyBh Y3R1YWxseSBydW5uaW5nIG9uIHRoZSBzYW1lIG1hY2hpbmUgYXMgeW91cgotIGRlYnVnZ2VyIHNl c3Npb24gKGUuZy5AOiBhIHNpbXVsYXRvciBmb3IgeW91ciB0YXJnZXQgcnVubmluZyBvbiB0aGUK LSBzYW1lIGhvc3QpLCB5b3UgY2FuIG9taXQgdGhlIGhvc3RuYW1lLiAgRm9yIGV4YW1wbGUsIHRv IGNvbm5lY3QgdG8KLUBAIC0yMDU3OSw3ICsyMDYxMiwxNSBAQCB0YXJnZXQgcmVtb3RlIDoxMjM0 Ci0gTm90ZSB0aGF0IHRoZSBjb2xvbiBpcyBzdGlsbCByZXF1aXJlZCBoZXJlLgotIAotIEBpdGVt IHRhcmdldCByZW1vdGUgQGNvZGV7dWRwOkB2YXJ7aG9zdH06QHZhcntwb3J0fX0KLStAaXRlbXgg dGFyZ2V0IHJlbW90ZSBAY29kZXt1ZHA6QHZhcntbaG9zdF19OkB2YXJ7cG9ydH19Ci0rQGl0ZW14 IHRhcmdldCByZW1vdGUgQGNvZGV7dWRwNDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19Ci0rQGl0ZW14 IHRhcmdldCByZW1vdGUgQGNvZGV7dWRwNjpAdmFye1tob3N0XX06QHZhcntwb3J0fX0KLStAaXRl bXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA6QHZhcntob3N0fTpAdmFye3BvcnR9 fQotIEBpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDpAdmFye2hvc3R9OkB2 YXJ7cG9ydH19Ci0rQGl0ZW14IHRhcmdldCBleHRlbmRlZC1yZW1vdGUgQGNvZGV7dWRwOkB2YXJ7 W2hvc3RdfTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rl e3VkcDQ6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVt b3RlIEBjb2Rle3VkcDY6QHZhcntob3N0fTpAdmFye3BvcnR9fQotK0BpdGVteCB0YXJnZXQgZXh0 ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDY6QHZhcntbaG9zdF19OkB2YXJ7cG9ydH19Ci0gQGNpbmRl eCBAYWNyb255bXtVRFB9IHBvcnQsIEBjb2Rle3RhcmdldCByZW1vdGV9Ci0gRGVidWcgdXNpbmcg QGFjcm9ueW17VURQfSBwYWNrZXRzIHRvIEB2YXJ7cG9ydH0gb24gQHZhcntob3N0fS4gIEZvciBl eGFtcGxlLCB0bwotIGNvbm5lY3QgdG8gQGFjcm9ueW17VURQfSBwb3J0IDI4Mjggb24gYSB0ZXJt aW5hbCBzZXJ2ZXIgbmFtZWQgQGNvZGV7bWFueWZhcm1zfToKLWRpZmYgLS1naXQgYS9nZGIvZ2Ri c2VydmVyL0NoYW5nZUxvZyBiL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCi0tLS0gYS9nZGIvZ2Ri c2VydmVyL0NoYW5nZUxvZwotKysrIGIvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cKLUBAIC0xLDMg KzEsMjIgQEAKLSsyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakBy ZWRoYXQuY29tPgotKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotKwkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2QGdtYWlsLmNvbT4KLSsJICAgIFRz dXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoU0ZJ TEVTKTogQWRkICckKHNyY2RpcikvY29tbW9uL25ldHN0dWZmLmMnLgotKwkoT0JTKTogQWRkICdj b21tb24vbmV0c3R1ZmYubycuCi0rCShHREJSRVBMQVlfT0JTKTogTGlrZXdpc2UuCi0rCSogZ2Ri cmVwbGF5LmM6IEluY2x1ZGUgJ3dzcGlhcGkuaCcgYW5kICduZXRzdHVmZi5oJy4KLSsJKHJlbW90 ZV9vcGVuKTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIElQdjYKLSsJY29ubmVjdGlvbnMuCi0rCSog cmVtb3RlLXV0aWxzLmM6IEluY2x1ZGUgJ25ldHN0dWZmLmgnLCAnZmlsZXN0dWZmLmgnCi0rCWFu ZCAnd3NwaWFwaS5oJy4KLSsJKGhhbmRsZV9hY2NlcHRfZXZlbnQpOiBBY2NlcHQgY29ubmVjdGlv bnMgZnJvbSBJUHY2IHNvdXJjZXMuCi0rCShyZW1vdGVfcHJlcGFyZSk6IEhhbmRsZSBJUHY2LXN0 eWxlIGhvc3RuYW1lczsgaW1wbGVtZW50Ci0rCXN1cHBvcnQgZm9yIElQdjYgY29ubmVjdGlvbnMu Ci0rCShyZW1vdGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0IGZvciBwcmludGluZyBjb25uZWN0 aW9ucyBmcm9tCi0rCUlQdjYgc291cmNlcy4KLSsKLSAyMDE4LTA3LTExICBQZWRybyBBbHZlcyAg PHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAlQUiBnZGIvMjMzNzcKLWRpZmYgLS1naXQgYS9nZGIv Z2Ric2VydmVyL01ha2VmaWxlLmluIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotLS0tIGEv Z2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5p bgotQEAgLTIxMSw2ICsyMTEsNyBAQCBTRklMRVMgPSBcCi0gCSQoc3JjZGlyKS9jb21tb24vam9i LWNvbnRyb2wuYyBcCi0gCSQoc3JjZGlyKS9jb21tb24vZ2RiX3RpbGRlX2V4cGFuZC5jIFwKLSAJ JChzcmNkaXIpL2NvbW1vbi9nZGJfdmVjcy5jIFwKLSsJJChzcmNkaXIpL2NvbW1vbi9uZXRzdHVm Zi5jIFwKLSAJJChzcmNkaXIpL2NvbW1vbi9uZXctb3AuYyBcCi0gCSQoc3JjZGlyKS9jb21tb24v cGF0aHN0dWZmLmMgXAotIAkkKHNyY2RpcikvY29tbW9uL3ByaW50LXV0aWxzLmMgXAotQEAgLTI1 NCw2ICsyNTUsNyBAQCBPQlMgPSBcCi0gCWNvbW1vbi9mb3JtYXQubyBcCi0gCWNvbW1vbi9nZGJf dGlsZGVfZXhwYW5kLm8gXAotIAljb21tb24vZ2RiX3ZlY3MubyBcCi0rCWNvbW1vbi9uZXRzdHVm Zi5vIFwKLSAJY29tbW9uL25ldy1vcC5vIFwKLSAJY29tbW9uL3BhdGhzdHVmZi5vIFwKLSAJY29t bW9uL3ByaW50LXV0aWxzLm8gXAotQEAgLTI5MCw2ICsyOTIsNyBAQCBHREJSRVBMQVlfT0JTID0g XAotIAljb21tb24vY29tbW9uLWV4Y2VwdGlvbnMubyBcCi0gCWNvbW1vbi9jb21tb24tdXRpbHMu byBcCi0gCWNvbW1vbi9lcnJvcnMubyBcCi0rCWNvbW1vbi9uZXRzdHVmZi5vIFwKLSAJY29tbW9u L3ByaW50LXV0aWxzLm8gXAotIAlnZGJyZXBsYXkubyBcCi0gCXV0aWxzLm8gXAotZGlmZiAtLWdp dCBhL2dkYi9nZGJzZXJ2ZXIvZ2RicmVwbGF5LmMgYi9nZGIvZ2Ric2VydmVyL2dkYnJlcGxheS5j Ci0tLS0gYS9nZGIvZ2Ric2VydmVyL2dkYnJlcGxheS5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL2dk YnJlcGxheS5jCi1AQCAtNDYsOCArNDYsMTEgQEAKLSAKLSAjaWYgVVNFX1dJTjMyQVBJCi0gI2lu Y2x1ZGUgPHdpbnNvY2syLmg+Ci0rI2luY2x1ZGUgPHdzcGlhcGkuaD4KLSAjZW5kaWYKLSAKLSsj aW5jbHVkZSAibmV0c3R1ZmYuaCIKLSsKLSAjaWZuZGVmIEhBVkVfU09DS0xFTl9UCi0gdHlwZWRl ZiBpbnQgc29ja2xlbl90OwotICNlbmRpZgotQEAgLTE0Miw1NiArMTQ1LDEwOCBAQCByZW1vdGVf Y2xvc2UgKHZvaWQpCi0gc3RhdGljIHZvaWQKLSByZW1vdGVfb3BlbiAoY2hhciAqbmFtZSkKLSB7 Ci0tICBpZiAoIXN0cmNociAobmFtZSwgJzonKSkKLSsgIGNoYXIgKmxhc3RfY29sb24gPSBzdHJy Y2hyIChuYW1lLCAnOicpOwotKwotKyAgaWYgKGxhc3RfY29sb24gPT0gTlVMTCkKLSAgICAgewot ICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiVzOiBNdXN0IHNwZWNpZnkgdGNwIGNvbm5lY3Rpb24g YXMgaG9zdDphZGRyXG4iLCBuYW1lKTsKLSAgICAgICBmZmx1c2ggKHN0ZGVycik7Ci0gICAgICAg ZXhpdCAoMSk7Ci0gICAgIH0KLS0gIGVsc2UKLS0gICAgewotKwotICNpZmRlZiBVU0VfV0lOMzJB UEkKLS0gICAgICBzdGF0aWMgaW50IHdpbnNvY2tfaW5pdGlhbGl6ZWQ7Ci0rICBzdGF0aWMgaW50 IHdpbnNvY2tfaW5pdGlhbGl6ZWQ7Ci0gI2VuZGlmCi0tICAgICAgY2hhciAqcG9ydF9zdHI7Ci0t ICAgICAgaW50IHBvcnQ7Ci0tICAgICAgc3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRyOwotLSAg ICAgIHNvY2tsZW5fdCB0bXA7Ci0tICAgICAgaW50IHRtcF9kZXNjOwotKyAgY2hhciAqcG9ydF9z dHI7Ci0rICBpbnQgdG1wOwotKyAgaW50IHRtcF9kZXNjOwotKyAgc3RydWN0IGFkZHJpbmZvIGhp bnQ7Ci0rICBzdHJ1Y3QgYWRkcmluZm8gKmFpbmZvOwotIAotLSAgICAgIHBvcnRfc3RyID0gc3Ry Y2hyIChuYW1lLCAnOicpOwotKyAgbWVtc2V0ICgmaGludCwgMCwgc2l6ZW9mIChoaW50KSk7Ci0r ICAvKiBBc3N1bWUgbm8gcHJlZml4IHdpbGwgYmUgcGFzc2VkLCB0aGVyZWZvcmUgd2Ugc2hvdWxk IHVzZQotKyAgICAgQUZfVU5TUEVDLiAgKi8KLSsgIGhpbnQuYWlfZmFtaWx5ID0gQUZfVU5TUEVD OwotKyAgaGludC5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOwotKyAgaGludC5haV9wcm90b2Nv bCA9IElQUFJPVE9fVENQOwotIAotLSAgICAgIHBvcnQgPSBhdG9pIChwb3J0X3N0ciArIDEpOwot KyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZWQgPSBwYXJzZV9jb25uZWN0aW9uX3NwZWMg KG5hbWUsICZoaW50KTsKLSsKLSsgIGlmIChwYXJzZWQucG9ydF9zdHIuZW1wdHkgKCkpCi0rICAg IGVycm9yIChfKCJNaXNzaW5nIHBvcnQgb24gaG9zdG5hbWUgJyVzJyIpLCBuYW1lKTsKLSAKLSAj aWZkZWYgVVNFX1dJTjMyQVBJCi0tICAgICAgaWYgKCF3aW5zb2NrX2luaXRpYWxpemVkKQotLQl7 Ci0tCSAgV1NBREFUQSB3c2FkOwotKyAgaWYgKCF3aW5zb2NrX2luaXRpYWxpemVkKQotKyAgICB7 Ci0rICAgICAgV1NBREFUQSB3c2FkOwotIAotLQkgIFdTQVN0YXJ0dXAgKE1BS0VXT1JEICgxLCAw KSwgJndzYWQpOwotLQkgIHdpbnNvY2tfaW5pdGlhbGl6ZWQgPSAxOwotLQl9Ci0rICAgICAgV1NB U3RhcnR1cCAoTUFLRVdPUkQgKDEsIDApLCAmd3NhZCk7Ci0rICAgICAgd2luc29ja19pbml0aWFs aXplZCA9IDE7Ci0rICAgIH0KLSAjZW5kaWYKLSAKLS0gICAgICB0bXBfZGVzYyA9IHNvY2tldCAo UEZfSU5FVCwgU09DS19TVFJFQU0sIDApOwotLSAgICAgIGlmICh0bXBfZGVzYyA9PSAtMSkKLS0J cGVycm9yX3dpdGhfbmFtZSAoIkNhbid0IG9wZW4gc29ja2V0Iik7Ci0rICBpbnQgciA9IGdldGFk ZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksIHBhcnNlZC5wb3J0X3N0ci5jX3N0ciAo KSwKLSsJCSAgICAgICAmaGludCwgJmFpbmZvKTsKLSAKLS0gICAgICAvKiBBbGxvdyByYXBpZCBy ZXVzZSBvZiB0aGlzIHBvcnQuICovCi0tICAgICAgdG1wID0gMTsKLS0gICAgICBzZXRzb2Nrb3B0 ICh0bXBfZGVzYywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERSLCAoY2hhciAqKSAmdG1wLAotLQkJ ICBzaXplb2YgKHRtcCkpOwotKyAgaWYgKHIgIT0gMCkKLSsgICAgewotKyAgICAgIGZwcmludGYg KHN0ZGVyciwgIiVzOiVzOiBjYW5ub3QgcmVzb2x2ZSBuYW1lOiAlc1xuIiwKLSsJICAgICAgIHBh cnNlZC5ob3N0X3N0ci5jX3N0ciAoKSwgcGFyc2VkLnBvcnRfc3RyLmNfc3RyICgpLAotKwkgICAg ICAgZ2FpX3N0cmVycm9yIChyKSk7Ci0rICAgICAgZmZsdXNoIChzdGRlcnIpOwotKyAgICAgIGV4 aXQgKDEpOwotKyAgICB9Ci0rCi0rICBzY29wZWRfZnJlZV9hZGRyaW5mbyBmcmVlX2FpbmZvIChh aW5mbyk7Ci0rCi0rICBzdHJ1Y3QgYWRkcmluZm8gKnA7Ci0rCi0rICBmb3IgKHAgPSBhaW5mbzsg cCAhPSBOVUxMOyBwID0gcC0+YWlfbmV4dCkKLSsgICAgewotKyAgICAgIHRtcF9kZXNjID0gc29j a2V0IChwLT5haV9mYW1pbHksIHAtPmFpX3NvY2t0eXBlLCBwLT5haV9wcm90b2NvbCk7Ci0gCi0t ICAgICAgc29ja2FkZHIuc2luX2ZhbWlseSA9IFBGX0lORVQ7Ci0tICAgICAgc29ja2FkZHIuc2lu X3BvcnQgPSBodG9ucyAocG9ydCk7Ci0tICAgICAgc29ja2FkZHIuc2luX2FkZHIuc19hZGRyID0g SU5BRERSX0FOWTsKLSsgICAgICBpZiAodG1wX2Rlc2MgPj0gMCkKLSsJYnJlYWs7Ci0rICAgIH0K LSsKLSsgIGlmIChwID09IE5VTEwpCi0rICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW5ub3Qgb3Bl biBzb2NrZXQiKTsKLSAKLS0gICAgICBpZiAoYmluZCAodG1wX2Rlc2MsIChzdHJ1Y3Qgc29ja2Fk ZHIgKikgJnNvY2thZGRyLCBzaXplb2YgKHNvY2thZGRyKSkKLS0JICB8fCBsaXN0ZW4gKHRtcF9k ZXNjLCAxKSkKLS0JcGVycm9yX3dpdGhfbmFtZSAoIkNhbid0IGJpbmQgYWRkcmVzcyIpOwotKyAg LyogQWxsb3cgcmFwaWQgcmV1c2Ugb2YgdGhpcyBwb3J0LiAqLwotKyAgdG1wID0gMTsKLSsgIHNl dHNvY2tvcHQgKHRtcF9kZXNjLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIChjaGFyICopICZ0 bXAsCi0rCSAgICAgIHNpemVvZiAodG1wKSk7Ci0rCi0rICBzd2l0Y2ggKHAtPmFpX2ZhbWlseSkK LSsgICAgewotKyAgICBjYXNlIEFGX0lORVQ6Ci0rICAgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW4g KikgcC0+YWlfYWRkciktPnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9BTlk7Ci0rICAgICAgYnJl YWs7Ci0rICAgIGNhc2UgQUZfSU5FVDY6Ci0rICAgICAgKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICop IHAtPmFpX2FkZHIpLT5zaW42X2FkZHIgPSBpbjZhZGRyX2FueTsKLSsgICAgICBicmVhazsKLSsg ICAgZGVmYXVsdDoKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJJbnZhbGlkICdhaV9mYW1pbHkn ICVkXG4iLCBwLT5haV9mYW1pbHkpOwotKyAgICAgIGV4aXQgKDEpOwotKyAgICB9Ci0rCi0rICBp ZiAoYmluZCAodG1wX2Rlc2MsIHAtPmFpX2FkZHIsIHAtPmFpX2FkZHJsZW4pICE9IDApCi0rICAg IHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBiaW5kIGFkZHJlc3MiKTsKLSsKLSsgIGlmIChwLT5h aV9zb2NrdHlwZSA9PSBTT0NLX0RHUkFNKQotKyAgICByZW1vdGVfZGVzYyA9IHRtcF9kZXNjOwot KyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc29ja2FkZHI7 Ci0rICAgICAgc29ja2xlbl90IHNvY2thZGRyc2l6ZSA9IHNpemVvZiAoc29ja2FkZHIpOwotKyAg ICAgIGNoYXIgb3JpZ19ob3N0W0dEQl9OSV9NQVhfQUREUl0sIG9yaWdfcG9ydFtHREJfTklfTUFY X1BPUlRdOwotKwotKyAgICAgIGlmIChsaXN0ZW4gKHRtcF9kZXNjLCAxKSAhPSAwKQotKwlwZXJy b3Jfd2l0aF9uYW1lICgiQ2FuJ3QgbGlzdGVuIG9uIHNvY2tldCIpOwotKwotKyAgICAgIHJlbW90 ZV9kZXNjID0gYWNjZXB0ICh0bXBfZGVzYywgKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIs Ci0rCQkJICAgICZzb2NrYWRkcnNpemUpOwotIAotLSAgICAgIHRtcCA9IHNpemVvZiAoc29ja2Fk ZHIpOwotLSAgICAgIHJlbW90ZV9kZXNjID0gYWNjZXB0ICh0bXBfZGVzYywgKHN0cnVjdCBzb2Nr YWRkciAqKSAmc29ja2FkZHIsICZ0bXApOwotICAgICAgIGlmIChyZW1vdGVfZGVzYyA9PSAtMSkK LSAJcGVycm9yX3dpdGhfbmFtZSAoIkFjY2VwdCBmYWlsZWQiKTsKLSAKLUBAIC0yMDYsNiArMjYx LDE2IEBAIHJlbW90ZV9vcGVuIChjaGFyICpuYW1lKQotICAgICAgIHNldHNvY2tvcHQgKHJlbW90 ZV9kZXNjLCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksCi0gCQkgIChjaGFyICopICZ0bXAsIHNp emVvZiAodG1wKSk7Ci0gCi0rICAgICAgaWYgKGdldG5hbWVpbmZvICgoc3RydWN0IHNvY2thZGRy ICopICZzb2NrYWRkciwgc29ja2FkZHJzaXplLAotKwkJICAgICAgIG9yaWdfaG9zdCwgc2l6ZW9m IChvcmlnX2hvc3QpLAotKwkJICAgICAgIG9yaWdfcG9ydCwgc2l6ZW9mIChvcmlnX3BvcnQpLAot KwkJICAgICAgIE5JX05VTUVSSUNIT1NUIHwgTklfTlVNRVJJQ1NFUlYpID09IDApCi0rCXsKLSsJ ICBmcHJpbnRmIChzdGRlcnIsICJSZW1vdGUgZGVidWdnaW5nIGZyb20gaG9zdCAlcywgcG9ydCAl c1xuIiwKLSsJCSAgIG9yaWdfaG9zdCwgb3JpZ19wb3J0KTsKLSsJICBmZmx1c2ggKHN0ZGVycik7 Ci0rCX0KLSsKLSAjaWZuZGVmIFVTRV9XSU4zMkFQSQotICAgICAgIGNsb3NlICh0bXBfZGVzYyk7 CQkvKiBObyBsb25nZXIgbmVlZCB0aGlzICovCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZl ci9yZW1vdGUtdXRpbHMuYyBiL2dkYi9nZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMKLS0tLSBhL2dk Yi9nZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMKLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvcmVtb3RlLXV0 aWxzLmMKLUBAIC0yNiw2ICsyNiw4IEBACi0gI2luY2x1ZGUgImRsbC5oIgotICNpbmNsdWRlICJy c3AtbG93LmgiCi0gI2luY2x1ZGUgImdkYnRocmVhZC5oIgotKyNpbmNsdWRlICJuZXRzdHVmZi5o IgotKyNpbmNsdWRlICJmaWxlc3R1ZmYuaCIKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaWYgSEFW RV9TWVNfSU9DVExfSAotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLUBAIC02Myw2ICs2NSw3IEBA Ci0gCi0gI2lmIFVTRV9XSU4zMkFQSQotICNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNpbmNsdWRl IDx3c3BpYXBpLmg+Ci0gI2VuZGlmCi0gCi0gI2lmIF9fUU5YX18KLUBAIC0xNTEsMTkgKzE1NCwx OCBAQCBlbmFibGVfYXN5bmNfbm90aWZpY2F0aW9uIChpbnQgZmQpCi0gc3RhdGljIGludAotIGhh bmRsZV9hY2NlcHRfZXZlbnQgKGludCBlcnIsIGdkYl9jbGllbnRfZGF0YSBjbGllbnRfZGF0YSkK LSB7Ci0tICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7Ci0tICBzb2NrbGVuX3QgdG1wOwot KyAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc29ja2FkZHI7Ci0rICBzb2NrbGVuX3QgbGVuID0g c2l6ZW9mIChzb2NrYWRkcik7Ci0gCi0gICBpZiAoZGVidWdfdGhyZWFkcykKLSAgICAgZGVidWdf cHJpbnRmICgiaGFuZGxpbmcgcG9zc2libGUgYWNjZXB0IGV2ZW50XG4iKTsKLSAKLS0gIHRtcCA9 IHNpemVvZiAoc29ja2FkZHIpOwotLSAgcmVtb3RlX2Rlc2MgPSBhY2NlcHQgKGxpc3Rlbl9kZXNj LCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJnRtcCk7Ci0rICByZW1vdGVfZGVzYyA9 IGFjY2VwdCAobGlzdGVuX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCAmbGVu KTsKLSAgIGlmIChyZW1vdGVfZGVzYyA9PSAtMSkKLSAgICAgcGVycm9yX3dpdGhfbmFtZSAoIkFj Y2VwdCBmYWlsZWQiKTsKLSAKLSAgIC8qIEVuYWJsZSBUQ1Aga2VlcCBhbGl2ZSBwcm9jZXNzLiAq LwotLSAgdG1wID0gMTsKLSsgIHNvY2tsZW5fdCB0bXAgPSAxOwotICAgc2V0c29ja29wdCAocmVt b3RlX2Rlc2MsIFNPTF9TT0NLRVQsIFNPX0tFRVBBTElWRSwKLSAJICAgICAgKGNoYXIgKikgJnRt cCwgc2l6ZW9mICh0bXApKTsKLSAKLUBAIC0xOTIsOCArMTk0LDE5IEBAIGhhbmRsZV9hY2NlcHRf ZXZlbnQgKGludCBlcnIsIGdkYl9jbGllbnRfZGF0YSBjbGllbnRfZGF0YSkKLSAgIGRlbGV0ZV9m aWxlX2hhbmRsZXIgKGxpc3Rlbl9kZXNjKTsKLSAKLSAgIC8qIENvbnZlcnQgSVAgYWRkcmVzcyB0 byBzdHJpbmcuICAqLwotLSAgZnByaW50ZiAoc3RkZXJyLCAiUmVtb3RlIGRlYnVnZ2luZyBmcm9t IGhvc3QgJXNcbiIsCi0tCSAgIGluZXRfbnRvYSAoc29ja2FkZHIuc2luX2FkZHIpKTsKLSsgIGNo YXIgb3JpZ19ob3N0W0dEQl9OSV9NQVhfQUREUl0sIG9yaWdfcG9ydFtHREJfTklfTUFYX1BPUlRd OwotKwotKyAgaW50IHIgPSBnZXRuYW1laW5mbyAoKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2Fk ZHIsIGxlbiwKLSsJCSAgICAgICBvcmlnX2hvc3QsIHNpemVvZiAob3JpZ19ob3N0KSwKLSsJCSAg ICAgICBvcmlnX3BvcnQsIHNpemVvZiAob3JpZ19wb3J0KSwKLSsJCSAgICAgICBOSV9OVU1FUklD SE9TVCB8IE5JX05VTUVSSUNTRVJWKTsKLSsKLSsgIGlmIChyICE9IDApCi0rICAgIGZwcmludGYg KHN0ZGVyciwgXygiQ291bGQgbm90IG9idGFpbiByZW1vdGUgYWRkcmVzczogJXNcbiIpLAotKwkg ICAgIGdhaV9zdHJlcnJvciAocikpOwotKyAgZWxzZQotKyAgICBmcHJpbnRmIChzdGRlcnIsIF8o IlJlbW90ZSBkZWJ1Z2dpbmcgZnJvbSBob3N0ICVzLCBwb3J0ICVzXG4iKSwKLSsJICAgICBvcmln X2hvc3QsIG9yaWdfcG9ydCk7Ci0gCi0gICBlbmFibGVfYXN5bmNfbm90aWZpY2F0aW9uIChyZW1v dGVfZGVzYyk7Ci0gCi1AQCAtMjIyLDEwICsyMzUsNyBAQCByZW1vdGVfcHJlcGFyZSAoY29uc3Qg Y2hhciAqbmFtZSkKLSAjaWZkZWYgVVNFX1dJTjMyQVBJCi0gICBzdGF0aWMgaW50IHdpbnNvY2tf aW5pdGlhbGl6ZWQ7Ci0gI2VuZGlmCi0tICBpbnQgcG9ydDsKLS0gIHN0cnVjdCBzb2NrYWRkcl9p biBzb2NrYWRkcjsKLSAgIHNvY2tsZW5fdCB0bXA7Ci0tICBjaGFyICpwb3J0X2VuZDsKLSAKLSAg IHJlbW90ZV9pc19zdGRpbyA9IDA7Ci0gICBpZiAoc3RyY21wIChuYW1lLCBTVERJT19DT05ORUNU SU9OX05BTUUpID09IDApCi1AQCAtMjM4LDE3ICsyNDgsMjUgQEAgcmVtb3RlX3ByZXBhcmUgKGNv bnN0IGNoYXIgKm5hbWUpCi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICBwb3J0X3N0ciA9 IHN0cmNociAobmFtZSwgJzonKTsKLS0gIGlmIChwb3J0X3N0ciA9PSBOVUxMKQotKyAgc3RydWN0 IGFkZHJpbmZvIGhpbnQ7Ci0rICBzdHJ1Y3QgYWRkcmluZm8gKmFpbmZvOwotKwotKyAgbWVtc2V0 ICgmaGludCwgMCwgc2l6ZW9mIChoaW50KSk7Ci0rICAvKiBBc3N1bWUgbm8gcHJlZml4IHdpbGwg YmUgcGFzc2VkLCB0aGVyZWZvcmUgd2Ugc2hvdWxkIHVzZQotKyAgICAgQUZfVU5TUEVDLiAgKi8K LSsgIGhpbnQuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOwotKyAgaGludC5haV9zb2NrdHlwZSA9IFNP Q0tfU1RSRUFNOwotKyAgaGludC5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOwotKwotKyAgcGFy c2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZWQKLSsgICAgPSBwYXJzZV9jb25uZWN0aW9uX3NwZWNf d2l0aG91dF9wcmVmaXggKG5hbWUsICZoaW50KTsKLSsKLSsgIGlmIChwYXJzZWQucG9ydF9zdHIu ZW1wdHkgKCkpCi0gICAgIHsKLSAgICAgICBjcy50cmFuc3BvcnRfaXNfcmVsaWFibGUgPSAwOwot ICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgcG9ydCA9IHN0cnRvdWwgKHBvcnRfc3RyICsg MSwgJnBvcnRfZW5kLCAxMCk7Ci0tICBpZiAocG9ydF9zdHJbMV0gPT0gJ1wwJyB8fCAqcG9ydF9l bmQgIT0gJ1wwJykKLS0gICAgZXJyb3IgKCJCYWQgcG9ydCBhcmd1bWVudDogJXMiLCBuYW1lKTsK LS0KLSAjaWZkZWYgVVNFX1dJTjMyQVBJCi0gICBpZiAoIXdpbnNvY2tfaW5pdGlhbGl6ZWQpCi0g ICAgIHsKLUBAIC0yNTksOCArMjc3LDI2IEBAIHJlbW90ZV9wcmVwYXJlIChjb25zdCBjaGFyICpu YW1lKQotICAgICB9Ci0gI2VuZGlmCi0gCi0tICBsaXN0ZW5fZGVzYyA9IHNvY2tldCAoUEZfSU5F VCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKTsKLS0gIGlmIChsaXN0ZW5fZGVzYyA9PSAtMSkK LSsgIGludCByID0gZ2V0YWRkcmluZm8gKHBhcnNlZC5ob3N0X3N0ci5jX3N0ciAoKSwgcGFyc2Vk LnBvcnRfc3RyLmNfc3RyICgpLAotKwkJICAgICAgICZoaW50LCAmYWluZm8pOwotKwotKyAgaWYg KHIgIT0gMCkKLSsgICAgZXJyb3IgKF8oIiVzOiBjYW5ub3QgcmVzb2x2ZSBuYW1lOiAlcyIpLCBu YW1lLCBnYWlfc3RyZXJyb3IgKHIpKTsKLSsKLSsgIHNjb3BlZF9mcmVlX2FkZHJpbmZvIGZyZWVh ZGRyaW5mbyAoYWluZm8pOwotKwotKyAgc3RydWN0IGFkZHJpbmZvICppdGVyOwotKwotKyAgZm9y IChpdGVyID0gYWluZm87IGl0ZXIgIT0gTlVMTDsgaXRlciA9IGl0ZXItPmFpX25leHQpCi0rICAg IHsKLSsgICAgICBsaXN0ZW5fZGVzYyA9IGdkYl9zb2NrZXRfY2xvZXhlYyAoaXRlci0+YWlfZmFt aWx5LCBpdGVyLT5haV9zb2NrdHlwZSwKLSsJCQkJCWl0ZXItPmFpX3Byb3RvY29sKTsKLSsKLSsg ICAgICBpZiAobGlzdGVuX2Rlc2MgPj0gMCkKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGlmIChp dGVyID09IE5VTEwpCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBvcGVuIHNvY2tldCIp OwotIAotICAgLyogQWxsb3cgcmFwaWQgcmV1c2Ugb2YgdGhpcyBwb3J0LiAqLwotQEAgLTI2OCwx NCArMzA0LDI1IEBAIHJlbW90ZV9wcmVwYXJlIChjb25zdCBjaGFyICpuYW1lKQotICAgc2V0c29j a29wdCAobGlzdGVuX2Rlc2MsIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgKGNoYXIgKikgJnRt cCwKLSAJICAgICAgc2l6ZW9mICh0bXApKTsKLSAKLS0gIHNvY2thZGRyLnNpbl9mYW1pbHkgPSBQ Rl9JTkVUOwotLSAgc29ja2FkZHIuc2luX3BvcnQgPSBodG9ucyAocG9ydCk7Ci0tICBzb2NrYWRk ci5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwotKyAgc3dpdGNoIChpdGVyLT5haV9mYW1p bHkpCi0rICAgIHsKLSsgICAgY2FzZSBBRl9JTkVUOgotKyAgICAgICgoc3RydWN0IHNvY2thZGRy X2luICopIGl0ZXItPmFpX2FkZHIpLT5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwotKyAg ICAgIGJyZWFrOwotKyAgICBjYXNlIEFGX0lORVQ2OgotKyAgICAgICgoc3RydWN0IHNvY2thZGRy X2luNiAqKSBpdGVyLT5haV9hZGRyKS0+c2luNl9hZGRyID0gaW42YWRkcl9hbnk7Ci0rICAgICAg YnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBf X0xJTkVfXywKLSsJCSAgICAgIF8oIkludmFsaWQgJ2FpX2ZhbWlseScgJWRcbiIpLCBpdGVyLT5h aV9mYW1pbHkpOwotKyAgICB9Ci0gCi0tICBpZiAoYmluZCAobGlzdGVuX2Rlc2MsIChzdHJ1Y3Qg c29ja2FkZHIgKikgJnNvY2thZGRyLCBzaXplb2YgKHNvY2thZGRyKSkKLS0gICAgICB8fCBsaXN0 ZW4gKGxpc3Rlbl9kZXNjLCAxKSkKLSsgIGlmIChiaW5kIChsaXN0ZW5fZGVzYywgaXRlci0+YWlf YWRkciwgaXRlci0+YWlfYWRkcmxlbikgIT0gMCkKLSAgICAgcGVycm9yX3dpdGhfbmFtZSAoIkNh bid0IGJpbmQgYWRkcmVzcyIpOwotIAotKyAgaWYgKGxpc3RlbiAobGlzdGVuX2Rlc2MsIDEpICE9 IDApCi0rICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBsaXN0ZW4gb24gc29ja2V0Iik7Ci0r Ci0gICBjcy50cmFuc3BvcnRfaXNfcmVsaWFibGUgPSAxOwotIH0KLSAKLUBAIC0zNTAsMTggKzM5 NywyNCBAQCByZW1vdGVfb3BlbiAoY29uc3QgY2hhciAqbmFtZSkKLSAjZW5kaWYgLyogVVNFX1dJ TjMyQVBJICovCi0gICBlbHNlCi0gICAgIHsKLS0gICAgICBpbnQgcG9ydDsKLS0gICAgICBzb2Nr bGVuX3QgbGVuOwotLSAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzb2NrYWRkcjsKLS0KLS0gICAg ICBsZW4gPSBzaXplb2YgKHNvY2thZGRyKTsKLS0gICAgICBpZiAoZ2V0c29ja25hbWUgKGxpc3Rl bl9kZXNjLAotLQkJICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCAmbGVuKSA8 IDAKLS0JICB8fCBsZW4gPCBzaXplb2YgKHNvY2thZGRyKSkKLSsgICAgICBjaGFyIGxpc3Rlbl9w b3J0W0dEQl9OSV9NQVhfUE9SVF07Ci0rICAgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc29j a2FkZHI7Ci0rICAgICAgc29ja2xlbl90IGxlbiA9IHNpemVvZiAoc29ja2FkZHIpOwotKwotKyAg ICAgIGlmIChnZXRzb2NrbmFtZSAobGlzdGVuX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNv Y2thZGRyLCAmbGVuKSA8IDApCi0gCXBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBkZXRlcm1pbmUg cG9ydCIpOwotLSAgICAgIHBvcnQgPSBudG9ocyAoc29ja2FkZHIuc2luX3BvcnQpOwotIAotLSAg ICAgIGZwcmludGYgKHN0ZGVyciwgIkxpc3RlbmluZyBvbiBwb3J0ICVkXG4iLCBwb3J0KTsKLSsg ICAgICBpbnQgciA9IGdldG5hbWVpbmZvICgoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwg bGVuLAotKwkJCSAgIE5VTEwsIDAsCi0rCQkJICAgbGlzdGVuX3BvcnQsIHNpemVvZiAobGlzdGVu X3BvcnQpLAotKwkJCSAgIE5JX05VTUVSSUNTRVJWKTsKLSsKLSsgICAgICBpZiAociAhPSAwKQot KwlmcHJpbnRmIChzdGRlcnIsIF8oIkNhbid0IG9idGFpbiBwb3J0IHdoZXJlIHdlIGFyZSBsaXN0 ZW5pbmc6ICVzIiksCi0rCQkgZ2FpX3N0cmVycm9yIChyKSk7Ci0rICAgICAgZWxzZQotKwlmcHJp bnRmIChzdGRlcnIsIF8oIkxpc3RlbmluZyBvbiBwb3J0ICVzXG4iKSwgbGlzdGVuX3BvcnQpOwot KwotICAgICAgIGZmbHVzaCAoc3RkZXJyKTsKLSAKLSAgICAgICAvKiBSZWdpc3RlciB0aGUgZXZl bnQgbG9vcCBoYW5kbGVyLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvc2VyLXRjcC5jIGIvZ2RiL3Nl ci10Y3AuYwotLS0tIGEvZ2RiL3Nlci10Y3AuYwotKysrIGIvZ2RiL3Nlci10Y3AuYwotQEAgLTI1 LDYgKzI1LDcgQEAKLSAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKLSAjaW5jbHVkZSAiY2xp L2NsaS1zZXRzaG93LmgiCi0gI2luY2x1ZGUgImZpbGVzdHVmZi5oIgotKyNpbmNsdWRlICJuZXRz dHVmZi5oIgotIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLUBAIC0zOSw2ICs0MCw3IEBA Ci0gCi0gI2lmZGVmIFVTRV9XSU4zMkFQSQotICNpbmNsdWRlIDx3aW5zb2NrMi5oPgotKyNpbmNs dWRlIDx3c3BpYXBpLmg+Ci0gI2lmbmRlZiBFVElNRURPVVQKLSAjZGVmaW5lIEVUSU1FRE9VVCBX U0FFVElNRURPVVQKLSAjZW5kaWYKLUBAIC04MSwxMiArODMsMTMgQEAgc3RhdGljIHVuc2lnbmVk IGludCB0Y3BfcmV0cnlfbGltaXQgPSAxNTsKLSAKLSAjZGVmaW5lIFBPTExfSU5URVJWQUwgNQot IAotLS8qIEhlbHBlciBmdW5jdGlvbiB0byB3YWl0IGEgd2hpbGUuICBJZiBTQ0IgaXMgbm9uLW51 bGwsIHdhaXQgb24gaXRzCi0tICAgZmlsZSBkZXNjcmlwdG9yLiAgT3RoZXJ3aXNlIGp1c3Qgd2Fp dCBvbiBhIHRpbWVvdXQsIHVwZGF0aW5nICpQT0xMUy4KLS0gICBSZXR1cm5zIC0xIG9uIHRpbWVv dXQgb3IgaW50ZXJydXB0LCBvdGhlcndpc2UgdGhlIHZhbHVlIG9mIHNlbGVjdC4gICovCi0rLyog SGVscGVyIGZ1bmN0aW9uIHRvIHdhaXQgYSB3aGlsZS4gIElmIFNPQ0sgaXMgbm90IC0xLCB3YWl0 IG9uIGl0cwotKyAgIGZpbGUgZGVzY3JpcHRvci4gIE90aGVyd2lzZSBqdXN0IHdhaXQgb24gYSB0 aW1lb3V0LCB1cGRhdGluZwotKyAgICpQT0xMUy4gIFJldHVybnMgLTEgb24gdGltZW91dCBvciBp bnRlcnJ1cHQsIG90aGVyd2lzZSB0aGUgdmFsdWUgb2YKLSsgICBzZWxlY3QuICAqLwotIAotIHN0 YXRpYyBpbnQKLS13YWl0X2Zvcl9jb25uZWN0IChzdHJ1Y3Qgc2VyaWFsICpzY2IsIHVuc2lnbmVk IGludCAqcG9sbHMpCi0rd2FpdF9mb3JfY29ubmVjdCAoaW50IHNvY2ssIHVuc2lnbmVkIGludCAq cG9sbHMpCi0gewotICAgc3RydWN0IHRpbWV2YWwgdDsKLSAgIGludCBuOwotQEAgLTEyMCwyNCAr MTIzLDI0IEBAIHdhaXRfZm9yX2Nvbm5lY3QgKHN0cnVjdCBzZXJpYWwgKnNjYiwgdW5zaWduZWQg aW50ICpwb2xscykKLSAgICAgICB0LnR2X3VzZWMgPSAwOwotICAgICB9Ci0gCi0tICBpZiAoc2Ni KQotKyAgaWYgKHNvY2sgPj0gMCkKLSAgICAgewotICAgICAgIGZkX3NldCByc2V0LCB3c2V0LCBl c2V0OwotIAotICAgICAgIEZEX1pFUk8gKCZyc2V0KTsKLS0gICAgICBGRF9TRVQgKHNjYi0+ZmQs ICZyc2V0KTsKLSsgICAgICBGRF9TRVQgKHNvY2ssICZyc2V0KTsKLSAgICAgICB3c2V0ID0gcnNl dDsKLSAgICAgICBlc2V0ID0gcnNldDsKLS0JICAKLSsKLSAgICAgICAvKiBQT1NJWCBzeXN0ZW1z IHJldHVybiBjb25uZWN0aW9uIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBieSBzaWduYWxsaW5nCi0gCSB3 c2V0LiAgV2luZG93cyBzeXN0ZW1zIHJldHVybiBzdWNjZXNzIGluIHdzZXQgYW5kIGZhaWx1cmUg aW4KLSAJIGVzZXQuCi0tICAgICAKLSsKLSAJIFdlIG11c3QgY2FsbCBzZWxlY3QgaGVyZSwgcmF0 aGVyIHRoYW4gZ2RiX3NlbGVjdCwgYmVjYXVzZQotIAkgdGhlIHNlcmlhbCBzdHJ1Y3R1cmUgaGFz IG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZCAtIHRoZQotIAkgTWluR1cgc2VsZWN0IHdyYXBwZXIg d2lsbCBub3Qga25vdyB0aGF0IHRoaXMgRkQgcmVmZXJzCi0gCSB0byBhIHNvY2tldC4gICovCi0t ICAgICAgbiA9IHNlbGVjdCAoc2NiLT5mZCArIDEsICZyc2V0LCAmd3NldCwgJmVzZXQsICZ0KTsK LSsgICAgICBuID0gc2VsZWN0IChzb2NrICsgMSwgJnJzZXQsICZ3c2V0LCAmZXNldCwgJnQpOwot ICAgICB9Ci0gICBlbHNlCi0gICAgIC8qIFVzZSBnZGJfc2VsZWN0IGhlcmUsIHNpbmNlIHdlIGhh dmUgbm8gZmlsZSBkZXNjcmlwdG9ycywgYW5kIG9uCi1AQCAtMTUzLDgwICsxNTYsMjggQEAgd2Fp dF9mb3JfY29ubmVjdCAoc3RydWN0IHNlcmlhbCAqc2NiLCB1bnNpZ25lZCBpbnQgKnBvbGxzKQot ICAgcmV0dXJuIG47Ci0gfQotIAotLS8qIE9wZW4gYSB0Y3Agc29ja2V0LiAgKi8KLSsvKiBUcnkg dG8gY29ubmVjdCB0byB0aGUgaG9zdCByZXByZXNlbnRlZCBieSBBSU5GTy4gIElmIHRoZSBjb25u ZWN0aW9uCi0rICAgc3VjY2VlZHMsIHJldHVybiBpdHMgc29ja2V0LiAgT3RoZXJ3aXNlLCByZXR1 cm4gLTEgYW5kIHNldCBFUlJOTwotKyAgIGFjY29yZGluZ2x5LiAgUE9MTFMgaXMgdXNlZCB3aGVu ICdjb25uZWN0JyByZXR1cm5zIEVJTlBST0dSRVNTLCBhbmQKLSsgICB3ZSBuZWVkIHRvIGludm9r ZSAnd2FpdF9mb3JfY29ubmVjdCcgdG8gb2J0YWluIHRoZSBzdGF0dXMuICAqLwotIAotLWludAot LW5ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFsICpzY2IsIGNvbnN0IGNoYXIgKm5hbWUpCi0rc3RhdGlj IGludAotK3RyeV9jb25uZWN0IChjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKmFpbmZvLCB1bnNpZ25l ZCBpbnQgKnBvbGxzKQotIHsKLS0gIGNoYXIgaG9zdG5hbWVbMTAwXTsKLS0gIGNvbnN0IGNoYXIg KnBvcnRfc3RyOwotLSAgaW50IG4sIHBvcnQsIHRtcDsKLS0gIGludCB1c2VfdWRwOwotLSAgc3Ry dWN0IGhvc3RlbnQgKmhvc3RlbnQ7Ci0tICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7Ci0t I2lmZGVmIFVTRV9XSU4zMkFQSQotLSAgdV9sb25nIGlvYXJnOwotLSNlbHNlCi0tICBpbnQgaW9h cmc7Ci0tI2VuZGlmCi0tICB1bnNpZ25lZCBpbnQgcG9sbHMgPSAwOwotLQotLSAgdXNlX3VkcCA9 IDA7Ci0tICBpZiAoc3RhcnRzd2l0aCAobmFtZSwgInVkcDoiKSkKLS0gICAgewotLSAgICAgIHVz ZV91ZHAgPSAxOwotLSAgICAgIG5hbWUgPSBuYW1lICsgNDsKLS0gICAgfQotLSAgZWxzZSBpZiAo c3RhcnRzd2l0aCAobmFtZSwgInRjcDoiKSkKLS0gICAgbmFtZSA9IG5hbWUgKyA0OwotLQotLSAg cG9ydF9zdHIgPSBzdHJjaHIgKG5hbWUsICc6Jyk7Ci0tCi0tICBpZiAoIXBvcnRfc3RyKQotLSAg ICBlcnJvciAoXygibmV0X29wZW46IE5vIGNvbG9uIGluIGhvc3QgbmFtZSEiKSk7ICAvKiBTaG91 bGRuJ3QgZXZlcgotLQkJCQkJCSAgICAgICBoYXBwZW4uICAqLwotLQotLSAgdG1wID0gc3RkOjpt aW4gKHBvcnRfc3RyIC0gbmFtZSwgKHB0cmRpZmZfdCkgc2l6ZW9mIGhvc3RuYW1lIC0gMSk7Ci0t ICBzdHJuY3B5IChob3N0bmFtZSwgbmFtZSwgdG1wKTsJLyogRG9uJ3Qgd2FudCBjb2xvbi4gICov Ci0tICBob3N0bmFtZVt0bXBdID0gJ1wwMDAnOwkvKiBUaWUgb2ZmIGhvc3QgbmFtZS4gICovCi0t ICBwb3J0ID0gYXRvaSAocG9ydF9zdHIgKyAxKTsKLS0KLS0gIC8qIERlZmF1bHQgaG9zdG5hbWUg aXMgbG9jYWxob3N0LiAgKi8KLS0gIGlmICghaG9zdG5hbWVbMF0pCi0tICAgIHN0cmNweSAoaG9z dG5hbWUsICJsb2NhbGhvc3QiKTsKLS0KLS0gIGhvc3RlbnQgPSBnZXRob3N0YnluYW1lIChob3N0 bmFtZSk7Ci0tICBpZiAoIWhvc3RlbnQpCi0tICAgIHsKLS0gICAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRlcnIsICIlczogdW5rbm93biBob3N0XG4iLCBob3N0bmFtZSk7Ci0tICAgICAg ZXJybm8gPSBFTk9FTlQ7Ci0tICAgICAgcmV0dXJuIC0xOwotLSAgICB9Ci0rICBpbnQgc29jayA9 IGdkYl9zb2NrZXRfY2xvZXhlYyAoYWluZm8tPmFpX2ZhbWlseSwgYWluZm8tPmFpX3NvY2t0eXBl LAotKwkJCQkgYWluZm8tPmFpX3Byb3RvY29sKTsKLSAKLS0gIHNvY2thZGRyLnNpbl9mYW1pbHkg PSBQRl9JTkVUOwotLSAgc29ja2FkZHIuc2luX3BvcnQgPSBodG9ucyAocG9ydCk7Ci0tICBtZW1j cHkgKCZzb2NrYWRkci5zaW5fYWRkci5zX2FkZHIsIGhvc3RlbnQtPmhfYWRkciwKLS0JICBzaXpl b2YgKHN0cnVjdCBpbl9hZGRyKSk7Ci0tCi0tIHJldHJ5OgotLQotLSAgaWYgKHVzZV91ZHApCi0t ICAgIHNjYi0+ZmQgPSBnZGJfc29ja2V0X2Nsb2V4ZWMgKFBGX0lORVQsIFNPQ0tfREdSQU0sIDAp OwotLSAgZWxzZQotLSAgICBzY2ItPmZkID0gZ2RiX3NvY2tldF9jbG9leGVjIChQRl9JTkVULCBT T0NLX1NUUkVBTSwgMCk7Ci0tCi0tICBpZiAoc2NiLT5mZCA9PSAtMSkKLSsgIGlmIChzb2NrIDwg MCkKLSAgICAgcmV0dXJuIC0xOwotLSAgCi0rCi0gICAvKiBTZXQgc29ja2V0IG5vbmJsb2NraW5n LiAgKi8KLS0gIGlvYXJnID0gMTsKLS0gIGlvY3RsIChzY2ItPmZkLCBGSU9OQklPLCAmaW9hcmcp OwotKyAgaW50IGlvYXJnID0gMTsKLSsKLSsgIGlvY3RsIChzb2NrLCBGSU9OQklPLCAmaW9hcmcp OwotIAotICAgLyogVXNlIE5vbi1ibG9ja2luZyBjb25uZWN0LiAgY29ubmVjdCgpIHdpbGwgcmV0 dXJuIDAgaWYgY29ubmVjdGVkCi0gICAgICBhbHJlYWR5LiAgKi8KLS0gIG4gPSBjb25uZWN0IChz Y2ItPmZkLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgc2l6ZW9mIChzb2NrYWRkcikp OwotLQotLSAgaWYgKG4gPCAwKQotKyAgaWYgKGNvbm5lY3QgKHNvY2ssIGFpbmZvLT5haV9hZGRy LCBhaW5mby0+YWlfYWRkcmxlbikgPCAwKQotICAgICB7Ci0gI2lmZGVmIFVTRV9XSU4zMkFQSQot ICAgICAgIGludCBlcnIgPSBXU0FHZXRMYXN0RXJyb3IoKTsKLUBAIC0yMzQsMjEgKzE4NSwyNiBA QCBuZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25zdCBjaGFyICpuYW1lKQotICAgICAg IGludCBlcnIgPSBlcnJubzsKLSAjZW5kaWYKLSAKLS0gICAgICAvKiBNYXliZSB3ZSdyZSB3YWl0 aW5nIGZvciB0aGUgcmVtb3RlIHRhcmdldCB0byBiZWNvbWUgcmVhZHkgdG8KLS0JIGFjY2VwdCBj b25uZWN0aW9ucy4gICovCi0tICAgICAgaWYgKHRjcF9hdXRvX3JldHJ5Ci0rICAgICAgLyogSWYg d2UndmUgZ290IGEgImNvbm5lY3Rpb24gcmVmdXNlZCIgZXJyb3IsIGp1c3QgcmV0dXJuCi0rCSAt MS4gIFRoZSBjYWxsZXIgd2lsbCBrbm93IHdoYXQgdG8gZG8uICAqLwotKyAgICAgIGlmICgKLSAj aWZkZWYgVVNFX1dJTjMyQVBJCi0tCSAgJiYgZXJyID09IFdTQUVDT05OUkVGVVNFRAotKwkgIGVy ciA9PSBXU0FFQ09OTlJFRlVTRUQKLSAjZWxzZQotLQkgICYmIGVyciA9PSBFQ09OTlJFRlVTRUQK LSsJICBlcnIgPT0gRUNPTk5SRUZVU0VECi0gI2VuZGlmCi0tCSAgJiYgd2FpdF9mb3JfY29ubmVj dCAoTlVMTCwgJnBvbGxzKSA+PSAwKQotKwkgICkKLSAJewotLQkgIGNsb3NlIChzY2ItPmZkKTsK LS0JICBnb3RvIHJldHJ5OwotKwkgIGNsb3NlIChzb2NrKTsKLSsJICBlcnJubyA9IGVycjsKLSsJ ICByZXR1cm4gLTE7Ci0gCX0KLSAKLSAgICAgICBpZiAoCi0rCSAgLyogQW55IG90aGVyIGVycm9y IChleGNlcHQgRUlOUFJPR1JFU1MpIHdpbGwgYmUgInN3YWxsb3dlZCIKLSsJICAgICBoZXJlLiAg V2UgcmV0dXJuIHdpdGhvdXQgc3BlY2lmeWluZyBhIHJldHVybiB2YWx1ZSwgYW5kCi0rCSAgICAg c2V0IGVycm5vIGlmIHRoZSBjYWxsZXIgd2FudHMgdG8gaW5zcGVjdCB3aGF0Ci0rCSAgICAgaGFw cGVuZWQuICAqLwotICNpZmRlZiBVU0VfV0lOMzJBUEkKLSAJICAvKiBVbmRlciBXaW5kb3dzLCBj YWxsaW5nICJjb25uZWN0IiB3aXRoIGEgbm9uLWJsb2NraW5nIHNvY2tldAotIAkgICAgIHJlc3Vs dHMgaW4gV1NBRVdPVUxEQkxPQ0ssIG5vdCBXU0FFSU5QUk9HUkVTUy4gICovCi1AQCAtMjU4LDY2 ICsyMTQsMTY2IEBAIG5ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFsICpzY2IsIGNvbnN0IGNoYXIgKm5h bWUpCi0gI2VuZGlmCi0gCSAgKQotIAl7Ci0rCSAgY2xvc2UgKHNvY2spOwotIAkgIGVycm5vID0g ZXJyOwotLQkgIG5ldF9jbG9zZSAoc2NiKTsKLSAJICByZXR1cm4gLTE7Ci0gCX0KLSAKLSAgICAg ICAvKiBMb29rcyBsaWtlIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGNvbm5lY3QuICAqLwotLSAg ICAgIGRvIAotLQl7Ci0tCSAgbiA9IHdhaXRfZm9yX2Nvbm5lY3QgKHNjYiwgJnBvbGxzKTsKLS0J fSAKLSsgICAgICBpbnQgbjsKLSsKLSsgICAgICBkbwotKwluID0gd2FpdF9mb3JfY29ubmVjdCAo c29jaywgcG9sbHMpOwotICAgICAgIHdoaWxlIChuID09IDApOwotKwotICAgICAgIGlmIChuIDwg MCkKLSAJewotLQkgIG5ldF9jbG9zZSAoc2NiKTsKLSsJICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJu bzsKLSsKLSsJICAvKiBBIG5lZ2F0aXZlIHZhbHVlIGhlcmUgbWVhbnMgdGhhdCB3ZSBlaXRoZXIg dGltZWQgb3V0IG9yCi0rCSAgICAgZ290IGludGVycnVwdGVkIGJ5IHRoZSB1c2VyLiAgSnVzdCBy ZXR1cm4uICAqLwotKwkgIGNsb3NlIChzb2NrKTsKLSsJICBlcnJubyA9IHNhdmVkX2Vycm5vOwot IAkgIHJldHVybiAtMTsKLSAJfQotICAgICB9Ci0gCi0gICAvKiBHb3Qgc29tZXRoaW5nLiAgSXMg aXQgYW4gZXJyb3I/ICAqLwotLSAgewotLSAgICBpbnQgcmVzLCBlcnI7Ci0tICAgIHNvY2tsZW5f dCBsZW47Ci0tCi0tICAgIGxlbiA9IHNpemVvZiAoZXJyKTsKLS0gICAgLyogT24gV2luZG93cywg dGhlIGZvdXJ0aCBwYXJhbWV0ZXIgdG8gZ2V0c29ja29wdCBpcyBhICJjaGFyICoiOwotLSAgICAg ICBvbiBVTklYIHN5c3RlbXMgaXQgaXMgZ2VuZXJhbGx5ICJ2b2lkICoiLiAgVGhlIGNhc3QgdG8g ImNoYXIgKiIKLS0gICAgICAgaXMgT0sgZXZlcnl3aGVyZSwgc2luY2UgaW4gQysrIGFueSBkYXRh IHBvaW50ZXIgdHlwZSBjYW4gYmUKLS0gICAgICAgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gInZv aWQgKiIuICAqLwotLSAgICByZXMgPSBnZXRzb2Nrb3B0IChzY2ItPmZkLCBTT0xfU09DS0VULCBT T19FUlJPUiwgKGNoYXIgKikgJmVyciwgJmxlbik7Ci0tICAgIGlmIChyZXMgPCAwIHx8IGVycikK LS0gICAgICB7Ci0tCS8qIE1heWJlIHRoZSB0YXJnZXQgc3RpbGwgaXNuJ3QgcmVhZHkgdG8gYWNj ZXB0IHRoZSBjb25uZWN0aW9uLiAgKi8KLS0JaWYgKHRjcF9hdXRvX3JldHJ5Ci0rICBpbnQgZXJy OwotKyAgc29ja2xlbl90IGxlbiA9IHNpemVvZiAoZXJyKTsKLSsKLSsgIC8qIE9uIFdpbmRvd3Ms IHRoZSBmb3VydGggcGFyYW1ldGVyIHRvIGdldHNvY2tvcHQgaXMgYSAiY2hhciAqIjsKLSsgICAg IG9uIFVOSVggc3lzdGVtcyBpdCBpcyBnZW5lcmFsbHkgInZvaWQgKiIuICBUaGUgY2FzdCB0byAi Y2hhciAqIgotKyAgICAgaXMgT0sgZXZlcnl3aGVyZSwgc2luY2UgaW4gQysrIGFueSBkYXRhIHBv aW50ZXIgdHlwZSBjYW4gYmUKLSsgICAgIGltcGxpY2l0bHkgY29udmVydGVkIHRvICJ2b2lkICoi LiAgKi8KLSsgIGludCByZXQgPSBnZXRzb2Nrb3B0IChzb2NrLCBTT0xfU09DS0VULCBTT19FUlJP UiwgKGNoYXIgKikgJmVyciwgJmxlbik7Ci0rCi0rICBpZiAocmV0IDwgMCkKLSsgICAgewotKyAg ICAgIGludCBzYXZlZF9lcnJubyA9IGVycm5vOwotKwotKyAgICAgIGNsb3NlIChzb2NrKTsKLSsg ICAgICBlcnJubyA9IHNhdmVkX2Vycm5vOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKyAg ZWxzZSBpZiAocmV0ID09IDAgJiYgZXJyICE9IDApCi0rICAgIHsKLSsgICAgICBjbG9zZSAoc29j ayk7Ci0rICAgICAgZXJybm8gPSBlcnI7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0r ICAvKiBUaGUgY29ubmVjdGlvbiBzdWNjZWVkZWQuICBSZXR1cm4gdGhlIHNvY2tldC4gICovCi0r ICByZXR1cm4gc29jazsKLSt9Ci0rCi0rLyogT3BlbiBhIHRjcCBzb2NrZXQuICAqLwotKwotK2lu dAotK25ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFsICpzY2IsIGNvbnN0IGNoYXIgKm5hbWUpCi0rewot KyAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7Ci0rICBzdHJ1Y3QgYWRkcmluZm8gKmFpbmZvOwotKwot KyAgbWVtc2V0ICgmaGludCwgMCwgc2l6ZW9mIChoaW50KSk7Ci0rICAvKiBBc3N1bWUgbm8gcHJl Zml4IHdpbGwgYmUgcGFzc2VkLCB0aGVyZWZvcmUgd2Ugc2hvdWxkIHVzZQotKyAgICAgQUZfVU5T UEVDLiAgKi8KLSsgIGhpbnQuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOwotKyAgaGludC5haV9zb2Nr dHlwZSA9IFNPQ0tfU1RSRUFNOwotKyAgaGludC5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOwot KwotKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZWQgPSBwYXJzZV9jb25uZWN0aW9uX3Nw ZWMgKG5hbWUsICZoaW50KTsKLSsKLSsgIGlmIChwYXJzZWQucG9ydF9zdHIuZW1wdHkgKCkpCi0r ICAgIGVycm9yIChfKCJNaXNzaW5nIHBvcnQgb24gaG9zdG5hbWUgJyVzJyIpLCBuYW1lKTsKLSsK LSsgIGludCByID0gZ2V0YWRkcmluZm8gKHBhcnNlZC5ob3N0X3N0ci5jX3N0ciAoKSwKLSsJCSAg ICAgICBwYXJzZWQucG9ydF9zdHIuY19zdHIgKCksCi0rCQkgICAgICAgJmhpbnQsICZhaW5mbyk7 Ci0rCi0rICBpZiAociAhPSAwKQotKyAgICB7Ci0rICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkZXJyLCBfKCIlczogY2Fubm90IHJlc29sdmUgbmFtZTogJXNcbiIpLAotKwkJCSAgbmFt ZSwgZ2FpX3N0cmVycm9yIChyKSk7Ci0rICAgICAgZXJybm8gPSBFTk9FTlQ7Ci0rICAgICAgcmV0 dXJuIC0xOwotKyAgICB9Ci0rCi0rICBzY29wZWRfZnJlZV9hZGRyaW5mbyBmcmVlX2FpbmZvIChh aW5mbyk7Ci0rCi0rICAvKiBGbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgd2UndmUgZ290IGEgY29u bmVjdGlvbiByZWZ1c2VkLiAgSXQgd2lsbAotKyAgICAgYmUgdHJ1ZSBpZiBhbnkgb2YgdGhlIGNv bm5lY3Rpb25zIHRyaWVkIHdhcyByZWZ1c2VkLiAgKi8KLSsgIGJvb2wgZ290X2Nvbm5yZWZ1c2Vk OwotKyAgLyogSWYgYSBjb25uZWN0aW9uIHN1Y2NlZWVkcywgU1VDQ0VTU19BSU5GTyB3aWxsIHBv aW50IHRvIHRoZQotKyAgICAgJ3N0cnVjdCBhZGRyaW5mbycgdGhhdCBzdWNjZWVkLiAgKi8KLSsg IHN0cnVjdCBhZGRyaW5mbyAqc3VjY2Vzc19haW5mbyA9IE5VTEw7Ci0rICB1bnNpZ25lZCBpbnQg cG9sbHMgPSAwOwotKwotKyAgLyogQXNzdW1lIHRoZSB3b3JzdC4gICovCi0rICBzY2ItPmZkID0g LTE7Ci0rCi0rICBkbwotKyAgICB7Ci0rICAgICAgZ290X2Nvbm5yZWZ1c2VkID0gZmFsc2U7Ci0r Ci0rICAgICAgZm9yIChzdHJ1Y3QgYWRkcmluZm8gKml0ZXIgPSBhaW5mbzsgaXRlciAhPSBOVUxM OyBpdGVyID0gaXRlci0+YWlfbmV4dCkKLSsJewotKwkgIC8qIEl0ZXJhdGUgb3ZlciB0aGUgbGlz dCBvZiBwb3NzaWJsZSBhZGRyZXNzZXMgdG8gY29ubmVjdAotKwkgICAgIHRvLiAgRm9yIGVhY2gs IHdlJ2xsIHRyeSB0byBjb25uZWN0IGFuZCBzZWUgaWYgaXQKLSsJICAgICBzdWNjZWVkcy4gICov Ci0rCSAgaW50IHNvY2sgPSB0cnlfY29ubmVjdCAoaXRlciwgJnBvbGxzKTsKLSsKLSsJICBpZiAo c29jayA+PSAwKQotKwkgICAgewotKwkgICAgICAvKiBXZSd2ZSBnb3R0ZW4gYSBzdWNjZXNzZnVs IGNvbm5lY3Rpb24uICBTYXZlIGl0cwotKwkJICdzdHJ1Y3QgYWRkcmluZm8nLCB0aGUgc29ja2V0 LCBhbmQgYnJlYWsuICAqLwotKwkgICAgICBzdWNjZXNzX2FpbmZvID0gaXRlcjsKLSsJICAgICAg c2NiLT5mZCA9IHNvY2s7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwkgIGVsc2UgaWYgKAot ICNpZmRlZiBVU0VfV0lOMzJBUEkKLS0JICAgICYmIGVyciA9PSBXU0FFQ09OTlJFRlVTRUQKLSsJ ICBlcnJubyA9PSBXU0FFQ09OTlJFRlVTRUQKLSAjZWxzZQotLQkgICAgJiYgZXJyID09IEVDT05O UkVGVVNFRAotKwkgIGVycm5vID09IEVDT05OUkVGVVNFRAotICNlbmRpZgotLQkgICAgJiYgd2Fp dF9mb3JfY29ubmVjdCAoTlVMTCwgJnBvbGxzKSA+PSAwKQotLQkgIHsKLS0JICAgIGNsb3NlIChz Y2ItPmZkKTsKLS0JICAgIGdvdG8gcmV0cnk7Ci0tCSAgfQotLQlpZiAoZXJyKQotLQkgIGVycm5v ID0gZXJyOwotLQluZXRfY2xvc2UgKHNjYik7Ci0tCXJldHVybiAtMTsKLS0gICAgICB9Ci0tICB9 IAotKwkJICAgKQotKwkgICAgZ290X2Nvbm5yZWZ1c2VkID0gdHJ1ZTsKLSsJfQotKyAgICB9Ci0r ICAvKiBKdXN0IHJldHJ5IGlmOgotKwotKyAgICAgLSB0Y3BfYXV0b19yZXRyeSBpcyB0cnVlLCBh bmQKLSsgICAgIC0gV2UgaGF2ZW4ndCBnb3R0ZW4gYSBjb25uZWN0aW9uIHlldCwgYW5kCi0rICAg ICAtIEFueSBvZiBvdXIgY29ubmVjdGlvbiBhdHRlbXB0cyByZXR1cm5lZCB3aXRoIEVDT05OUkVG VVNFRCwgYW5kCi0rICAgICAtIHdhaXRfZm9yX2Nvbm5lY3Qgc2lnbmFscyB0aGF0IHdlIGNhbiBr ZWVwIGdvaW5nLiAgKi8KLSsgIHdoaWxlICh0Y3BfYXV0b19yZXRyeQotKwkgJiYgc3VjY2Vzc19h aW5mbyA9PSBOVUxMCi0rCSAmJiBnb3RfY29ubnJlZnVzZWQKLSsJICYmIHdhaXRfZm9yX2Nvbm5l Y3QgKC0xLCAmcG9sbHMpID49IDApOwotKwotKyAgaWYgKHN1Y2Nlc3NfYWluZm8gPT0gTlVMTCkK LSsgICAgewotKyAgICAgIG5ldF9jbG9zZSAoc2NiKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAg IH0KLSAKLSAgIC8qIFR1cm4gb2ZmIG5vbmJsb2NraW5nLiAgKi8KLS0gIGlvYXJnID0gMDsKLSsj aWZkZWYgVVNFX1dJTjMyQVBJCi0rICB1X2xvbmcgaW9hcmcgPSAwOwotKyNlbHNlCi0rICBpbnQg aW9hcmcgPSAwOwotKyNlbmRpZgotKwotICAgaW9jdGwgKHNjYi0+ZmQsIEZJT05CSU8sICZpb2Fy Zyk7Ci0gCi0tICBpZiAodXNlX3VkcCA9PSAwKQotKyAgaWYgKHN1Y2Nlc3NfYWluZm8tPmFpX3Nv Y2t0eXBlID09IElQUFJPVE9fVENQKQotICAgICB7Ci0gICAgICAgLyogRGlzYWJsZSBOYWdsZSBh bGdvcml0aG0uICBOZWVkZWQgaW4gc29tZSBjYXNlcy4gICovCi0tICAgICAgdG1wID0gMTsKLSsg ICAgICBpbnQgdG1wID0gMTsKLSsKLSAgICAgICBzZXRzb2Nrb3B0IChzY2ItPmZkLCBJUFBST1RP X1RDUCwgVENQX05PREVMQVksCi0tCQkgIChjaGFyICopJnRtcCwgc2l6ZW9mICh0bXApKTsKLSsJ CSAgKGNoYXIgKikgJnRtcCwgc2l6ZW9mICh0bXApKTsKLSAgICAgfQotIAotICNpZmRlZiBTSUdQ SVBFCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIzIEBACi0rMjAxOC0wNy0xMSAgU2VyZ2lvIER1 cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSsJICAgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsJICAgIFBhdWwgRmVydHNlciAgPGZlcmNl cnBhdkBnbWFpbC5jb20+Ci0rCSAgICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+ Ci0rCi0rCSogUkVBRE1FIChUZXN0c3VpdGUgUGFyYW1ldGVycyk6IE1lbnRpb24gbmV3ICdHREJf VEVTVF9TT0NLRVRIT1NUJwotKwlwYXJhbWV0ZXIuCi0rCSogYm9hcmRzL25hdGl2ZS1leHRlbmRl ZC1nZGJzZXJ2ZXIuZXhwOiBEbyBub3Qgc2V0ICdzb2NrZXRob3N0JwotKwlieSBkZWZhdWx0Lgot KwkqIGJvYXJkcy9uYXRpdmUtZ2Ric2VydmVyLmV4cDogTGlrZXdpc2UuCi0rCSogZ2RiLnNlcnZl ci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwOiBJbXByb3ZlIHJlZ2V4cCB1c2VkCi0rCWZv ciBkZXRlY3Rpbmcgd2hlbiBhIHJlbW90ZSBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBzdWNjZWVkcy4K LSsJKiBnZGIuc2VydmVyL3NlcnZlci1jb25uZWN0LmV4cDogTmV3IGZpbGUuCi0rCSogbGliL2dk YnNlcnZlci1zdXBwb3J0LmV4cCAoZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X2NvbW1fcG9ydCk6Ci0r CURvIG5vdCBwcmVmaXggdGhlIHBvcnQgbnVtYmVyIHdpdGggIjoiLgotKwkoZ2Ric2VydmVyX3N0 YXJ0KTogTmV3IGdsb2JhbCBHREJfVEVTVF9TT0NLRVRIT1NULiAgSW1wbGVtZW50Ci0rCXN1cHBv cnQgZm9yIGRldGVjdGluZyBhbmQgdXNpbmcgaXQuICBBZGQgJyRkZWJ1Z2hvc3RfZ2Ric2VydmVy JwotKwl0byB0aGUgbGlzdCBvZiBhcmd1bWVudHMgdXNlZCB0byBzdGFydCBnZGJzZXJ2ZXIuICBI YW5kbGUgY2FzZQotKwl3aGVuIGdkYnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBhIG5ldHdvcmsgbmFt ZS4KLSsKLSAyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRo YXQuY29tPgotIAotIAlQUiBjKysvMjMzNzMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL1JF QURNRSBiL2dkYi90ZXN0c3VpdGUvUkVBRE1FCi0tLS0gYS9nZGIvdGVzdHN1aXRlL1JFQURNRQot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKLUBAIC0yNTksNiArMjU5LDIwIEBAIFRoaXMgbWFr ZSAobm90IHJ1bnRlc3QpIHZhcmlhYmxlIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIHRoZQot IHRlc3RzdWl0ZSBwcmVsb2FkcyB0aGUgcmVhZDEuc28gbGlicmFyeSBpbnRvIGV4cGVjdC4gIEFu eSBub24tZW1wdHkKLSB2YWx1ZSBtZWFucyB0cnVlLiAgU2VlICJSYWNlIGRldGVjdGlvbiIgYmVs b3cuCi0gCi0rR0RCX1RFU1RfU09DS0VUSE9TVAotKwotK1RoaXMgdmFyaWFibGUgY2FuIHByb3Zp ZGUgdGhlIGhvc3RuYW1lL2FkZHJlc3MgdGhhdCBzaG91bGQgYmUgdXNlZAotK3doZW4gcGVyZm9y bWluZyBHREJzZXJ2ZXItcmVsYXRlZCB0ZXN0cy4gIFRoaXMgaXMgdXNlZnVsIGluIHNvbWUKLStz aXR1YXRpb25zLCBlLmcuLCB3aGVuIHlvdSB3YW50IHRvIHRlc3QgdGhlIElQdjYgY29ubmVjdGl2 aXR5IG9mIEdEQgotK2FuZCBHREJzZXJ2ZXIsIG9yIHdoZW4gdXNpbmcgYSBkaWZmZXJlbnQgaG9z dG5hbWUvYWRkcmVzcyBpcyBuZWVkZWQuCi0rRm9yIGV4YW1wbGUsIHRvIG1ha2UgR0RCIGFuZCBH REJzZXJ2ZXIgdXNlIElQdjYtb25seSBjb25uZWN0aW9ucywgeW91Ci0rY2FuIGRvOgotKwotKwlt YWtlIGNoZWNrIFRFU1RTPSJnZGIuc2VydmVyLyouZXhwIiBSVU5URVNURkxBR1M9J0dEQl9URVNU X1NPQ0tFVEhPU1Q9dGNwNjpbOjoxXScKLSsKLStOb3RlIHRoYXQgb25seSBhIGhvc3RuYW1lL2Fk ZHJlc3MgY2FuIGJlIHByb3ZpZGVkLCB3aXRob3V0IGEgcG9ydAotK251bWJlci4KLSsKLSBSYWNl IGRldGVjdGlvbgotICoqKioqKioqKioqKioqCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9ib2FyZHMvbmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5leHAgYi9nZGIvdGVzdHN1aXRlL2Jv YXJkcy9uYXRpdmUtZXh0ZW5kZWQtZ2Ric2VydmVyLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9i b2FyZHMvbmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Ym9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhwCi1AQCAtMjQsOCArMjQsNiBAQCBs b2FkX2dlbmVyaWNfY29uZmlnICJleHRlbmRlZC1nZGJzZXJ2ZXIiCi0gbG9hZF9ib2FyZF9kZXNj cmlwdGlvbiAiZ2Ric2VydmVyLWJhc2UiCi0gbG9hZF9ib2FyZF9kZXNjcmlwdGlvbiAibG9jYWwt Ym9hcmQiCi0gCi0tc2V0X2JvYXJkX2luZm8gc29ja2V0aG9zdCAibG9jYWxob3N0OiIKLS0KLSAj IFdlIHdpbGwgYmUgdXNpbmcgdGhlIGV4dGVuZGVkIEdEQiByZW1vdGUgcHJvdG9jb2wuCi0gc2V0 X2JvYXJkX2luZm8gZ2RiX3Byb3RvY29sICJleHRlbmRlZC1yZW1vdGUiCi0gCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5leHAgYi9nZGIvdGVzdHN1 aXRlL2JvYXJkcy9uYXRpdmUtZ2Ric2VydmVyLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9ib2Fy ZHMvbmF0aXZlLWdkYnNlcnZlci5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2 ZS1nZGJzZXJ2ZXIuZXhwCi1AQCAtMzAsNyArMzAsNiBAQCBzZXRfYm9hcmRfaW5mbyBnZGIsZG9f cmVsb2FkX29uX3J1biAxCi0gIyBUaGVyZSdzIG5vIHN1cHBvcnQgZm9yIGFyZ3VtZW50LXBhc3Np bmcgKHlldCkuCi0gc2V0X2JvYXJkX2luZm8gbm9hcmdzIDEKLSAKLS1zZXRfYm9hcmRfaW5mbyBz b2NrZXRob3N0ICJsb2NhbGhvc3Q6IgotIHNldF9ib2FyZF9pbmZvIHVzZV9nZGJfc3R1YiAxCi0g c2V0X2JvYXJkX2luZm8gZXhpdF9pc19yZWxpYWJsZSAxCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2FsLWJpbmFyeS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5zZXJ2ZXIvcnVuLXdpdGhvdXQtbG9jYWwtYmluYXJ5LmV4cAotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2FsLWJpbmFyeS5leHAKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwCi1A QCAtNTMsNyArNTMsNyBAQCBzYXZlX3ZhcnMgeyBHREJGTEFHUyB9IHsKLSAgICAgc2V0IHVzZV9n ZGJfc3R1YiAwCi0gCi0gICAgIGdkYl90ZXN0ICJ0YXJnZXQgJHtnZGJzZXJ2ZXJfcHJvdG9jb2x9 ICR7Z2Ric2VydmVyX2dkYnBvcnR9IiBcCi0tCSJSZW1vdGUgZGVidWdnaW5nIHVzaW5nICRnZGJz ZXJ2ZXJfZ2RicG9ydCIgXAotKwkiUmVtb3RlIGRlYnVnZ2luZyB1c2luZyBbc3RyaW5nX3RvX3Jl Z2V4cCAkZ2Ric2VydmVyX2dkYnBvcnRdIiBcCi0gCSJjb25uZWN0IHRvIGdkYnNlcnZlciIKLSAK LSAgICAgZ2RiX3Rlc3QgInJ1biIgXAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnNl cnZlci9zZXJ2ZXItY29ubmVjdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5zZXJ2ZXIvc2VydmVy LWNvbm5lY3QuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3NlcnZlci1jb25uZWN0LmV4cAotQEAgLTAsMCArMSwx MTEgQEAKLSsjIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rIwotKyMgQ29weXJpZ2h0IDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3QgbXVsdGlwbGUgdHlw ZXMgb2YgY29ubmVjdGlvbiAoSVB2NCwgSVB2NiwgVENQLCBVRFApIGFuZCBtYWtlCi0rIyBzdXJl IGJvdGggZ2Ric2VydmVyIGFuZCBHREIgd29yay4KLSsKLStsb2FkX2xpYiBnZGJzZXJ2ZXItc3Vw cG9ydC5leHAKLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSBub3JtYWwuYwotKwotK2lmIHtbc2tpcF9n ZGJzZXJ2ZXJfdGVzdHNdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotKyMgV2Ugd2FudCB0byBo YXZlIGNvbnRyb2wgb3ZlciB3aGVyZSB3ZSBzdGFydCBnZGJzZXJ2ZXIuCi0raWYgeyBbaXNfcmVt b3RlIHRhcmdldF0gfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK2lmIHsgW3ByZXBhcmVfZm9y X3Rlc3RpbmcgImZhaWxlZCB0byBwcmVwYXJlIiAkdGVzdGZpbGUgJHNyY2ZpbGUgZGVidWddIH0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBNYWtlIHN1cmUgd2UncmUgZGlzY29ubmVjdGVk LCBpbiBjYXNlIHdlJ3JlIHRlc3Rpbmcgd2l0aCBhbgotKyMgZXh0ZW5kZWQtcmVtb3RlIGJvYXJk LCB0aGVyZWZvcmUgYWxyZWFkeSBjb25uZWN0ZWQuCi0rZ2RiX3Rlc3QgImRpc2Nvbm5lY3QiICIu KiIKLSsKLStzZXQgdGFyZ2V0X2V4ZWMgW2dkYnNlcnZlcl9kb3dubG9hZF9jdXJyZW50X3Byb2dd Ci0rCi0rIyBBbiBhcnJheSBjb250YWluaW5nIHRoZSB0ZXN0IGluc3RydWN0aW9ucyBmb3IgZWFj aCBzY2VuYXJpby4gIFRoZQotKyMgZGVzY3JpcHRpb24gb2YgZWFjaCBmaWVsZCBpcyBhcyBmb2xs b3dzOgotKyMKLSsjIC0gVGhlIGNvbm5lY3Rpb24gc3BlY2lmaWNhdGlvbiB0byBiZSB1c2VkIHdo ZW4gc3RhcnRpbmcKLSsjICAgZ2Ric2VydmVyL0dEQi4gIFRoaXMgc3RyaW5nIHdpbGwgYmUgdXNl ZCB0byBzZXQgdGhlCi0rIyAgIEdEQl9URVNUX1NPQ0tFVEhPU1Qgd2hlbiBjYWxsaW5nIGdkYnNl cnZlcl9zdGFydC4KLSsjCi0rIyAtIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgZ2Ric2VydmVy IHNob3VsZCBmYWlsIHdoZW4gd2UgYXR0ZW1wdCB0bwotKyMgICBzdGFydCBpdC4gIFVzZWZ1bCB3 aGVuIHRlc3RpbmcgZXJyb25lb3VzIGNvbm5lY3Rpb24gc3BlY3Mgc3VjaCBhcwotKyMgICAidGNw ODoiLgotKyMKLSsjIC0gVGhlIHByZWZpeCB0aGF0IHNob3VsZCBiZSBwcmVwZW5kZWQgdG8gdGhl IHRlc3QgbWVzc2FnZXMuCi0rc2V0IHRlc3RfcGFyYW1zIFwKLSsgICAgeyBcCi0rCSAgeyAidGNw NDoxMjcuMC4wLjEiIDAgInRjcDQiIH0gXAotKwkgIHsgInRjcDY6OjoxIiAgICAgICAwICJ0Y3A2 IiB9IFwKLSsJICB7ICJ0Y3A2Ols6OjFdIiAgICAgMCAidGNwNi13aXRoLWJyYWNrZXRzIiB9IFwK LSsJICB7ICJ0Y3A6bG9jYWxob3N0IiAgMCAidGNwIiB9IFwKLSsJICB7ICJ1ZHA0OjEyNy4wLjAu MSIgMCAidWRwNCIgfSBcCi0rCSAgeyAidWRwNjo6OjEiICAgICAgIDAgInVkcDYiIH0gXAotKwkg IHsgInVkcDY6Wzo6MV0iICAgICAwICJ1ZHA2LXdpdGgtYnJhY2tldHMiIH0gXAotKwkgIHsgInRj cDg6MTIzIiAgICAgICAxICJ0Y3A4IiB9IFwKLSsJICB7ICJ1ZHAxMjM6OjoiICAgICAgMSAidWRw MTIzIiB9IFwKLSsJICB7ICJnYXJiYWdlOjEyMzQiICAgMSAiZ2FyYmFnZToxMjM0IiB9IFwKLSsg ICAgfQotKwotKyMgVGhlIGJlc3Qgd2F5IHRvIHRlc3QgZGlmZmVyZW50IHR5cGVzIG9mIGNvbm5l Y3Rpb25zIGlzIHRvIHNldCB0aGUKLSsjIEdEQl9URVNUX1NPQ0tFVEhPU1QgdmFyaWFibGUgYWNj b3JkaW5nbHkuCi0rc2F2ZV92YXJzIHsgR0RCX1RFU1RfU09DS0VUSE9TVCB9IHsKLSsgICAgZm9y ZWFjaCBsaW5lICR0ZXN0X3BhcmFtcyB7Ci0rCXNldCBzb2NraG9zdCBbbGluZGV4ICRsaW5lIDBd Ci0rCXNldCBnZGJzZXJ2ZXJfc2hvdWxkX2ZhaWwgW2xpbmRleCAkbGluZSAxXQotKwlzZXQgcHJl Zml4IFtsaW5kZXggJGxpbmUgMl0KLSsKLSsJd2l0aF90ZXN0X3ByZWZpeCAkcHJlZml4IHsKLSsJ ICAgIHNldCBHREJfVEVTVF9TT0NLRVRIT1NUICRzb2NraG9zdAotKwkgICAgc2V0IHRlc3QgInN0 YXJ0IGdkYnNlcnZlciIKLSsKLSsJICAgICMgVHJ5IHRvIHN0YXJ0IGdkYnNlcnZlci4KLSsJICAg IHNldCBjYXRjaHJlcyBbY2F0Y2gge3NldCByZXMgW2dkYnNlcnZlcl9zdGFydCAiIiAkdGFyZ2V0 X2V4ZWNdfSBlcnJtc2ddCi0rCi0rCSAgICBpZiB7ICRjYXRjaHJlcyAhPSAwIH0gewotKwkJaWYg eyAkZ2Ric2VydmVyX3Nob3VsZF9mYWlsIH0gewotKwkJICAgIHBhc3MgIiR0ZXN0OiBnZGJzZXJ2 ZXIgZmFpbGVkIGFzIGV4cGVjdGVkIgotKwkJfSBlbHNlIHsKLSsJCSAgICBmYWlsICIkdGVzdDog JGVycm1zZyIKLSsJCX0KLSsJCWNvbnRpbnVlCi0rCSAgICB9IGVsc2UgewotKwkJaWYgeyAkZ2Ri c2VydmVyX3Nob3VsZF9mYWlsIH0gewotKwkJICAgIGZhaWwgIiR0ZXN0OiBnZGJzZXJ2ZXIgc2hv dWxkIGZhaWwgYnV0IGRpZCBub3QiCi0rCQl9IGVsc2UgewotKwkJICAgIHBhc3MgIiR0ZXN0Igot KwkJfQotKwkgICAgfQotKwotKwkgICAgc2V0IGdkYnNlcnZlcl9wcm90b2NvbCBbbGluZGV4ICRy ZXMgMF0KLSsJICAgIHNldCBnZGJzZXJ2ZXJfZ2RicG9ydCBbbGluZGV4ICRyZXMgMV0KLSsJICAg IHNldCB0ZXN0ICJjb25uZWN0IHRvIGdkYnNlcnZlciB1c2luZyAkc29ja2hvc3QiCi0rCi0rCSAg ICBpZiB7IFtnZGJfdGFyZ2V0X2NtZCAkZ2Ric2VydmVyX3Byb3RvY29sICRnZGJzZXJ2ZXJfZ2Ri cG9ydF0gPT0gMCB9IHsKLSsJCXBhc3MgJHRlc3QKLSsJICAgIH0gZWxzZSB7Ci0rCQlmYWlsICR0 ZXN0Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXIt c3VwcG9ydC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4 cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwCi1AQCAtMjEx LDcgKzIxMSw3IEBAIHByb2MgZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X3JlbW90ZV9hZGRyZXNzIHsg aG9zdCBwb3J0IH0gewotICMgRGVmYXVsdCByb3V0aW5lIHRvIGNvbXB1dGUgdGhlICJjb21tIiBh cmd1bWVudCBmb3IgZ2Ric2VydmVyLgotIAotIHByb2MgZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X2Nv bW1fcG9ydCB7IHBvcnQgfSB7Ci0tICAgIHJldHVybiAiOiRwb3J0IgotKyAgICByZXR1cm4gIiRw b3J0IgotIH0KLSAKLSAjIFN0YXJ0IGEgZ2Ric2VydmVyIHByb2Nlc3Mgd2l0aCBpbml0aWFsIE9Q VElPTlMgYW5kIHRyYWlsaW5nIEFSR1VNRU5UUy4KLUBAIC0yMjEsNiArMjIxLDcgQEAgcHJvYyBn ZGJzZXJ2ZXJfZGVmYXVsdF9nZXRfY29tbV9wb3J0IHsgcG9ydCB9IHsKLSAKLSBwcm9jIGdkYnNl cnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0gewotICAgICBnbG9iYWwgcG9ydG51bQot KyAgICBnbG9iYWwgR0RCX1RFU1RfU09DS0VUSE9TVAotIAotICAgICAjIFBvcnQgaWQgLS0gZWl0 aGVyIHNwZWNpZmllZCBpbiBiYXNlYm9hcmQgZmlsZSwgb3IgbWFuYWdlZCBoZXJlLgotICAgICBp ZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixzb2NrZXRwb3J0XSB7Ci1AQCAtMjMxLDEwICsyMzIs MjIgQEAgcHJvYyBnZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25zIGFyZ3VtZW50cyB9IHsKLSAgICAg fQotIAotICAgICAjIEV4dHJhY3QgdGhlIGxvY2FsIGFuZCByZW1vdGUgaG9zdCBpZHMgZnJvbSB0 aGUgdGFyZ2V0IGJvYXJkIHN0cnVjdC4KLS0gICAgaWYgW3RhcmdldF9pbmZvIGV4aXN0cyBzb2Nr ZXRob3N0XSB7Ci0rICAgIGlmIHsgW2luZm8gZXhpc3RzIEdEQl9URVNUX1NPQ0tFVEhPU1RdIH0g ewotKwkjIFRoZSB1c2VyIGlzIG5vdCBzdXBwb3NlZCB0byBwcm92aWRlIGEgcG9ydCBudW1iZXIs IGp1c3QgYQotKwkjIGhvc3RuYW1lL2FkZHJlc3MsIHRoZXJlZm9yZSB3ZSBhZGQgdGhlIHRyYWls aW5nICI6IiBoZXJlLgotKwlzZXQgZGVidWdob3N0ICIke0dEQl9URVNUX1NPQ0tFVEhPU1R9OiIK LSsJIyBFc2NhcGUgb3BlbiBhbmQgY2xvc2Ugc3F1YXJlIGJyYWNrZXRzLgotKwlzZXQgZGVidWdo b3N0X3RtcCBbc3RyaW5nIG1hcCB7IFsgXFxbIF0gXFxdIH0gJGRlYnVnaG9zdF0KLSsJIyBXZSBu ZWVkIGEgImdkYnNlcnZlciIgdmVyc2lvbiBvZiB0aGUgZGVidWdob3N0LCB3aGljaCB3aWxsCi0r CSMgaGF2ZSB0aGUgcG9zc2libGUgY29ubmVjdGlvbiBwcmVmaXggc3RyaXBwZWQuICBUaGlzIGlz Ci0rCSMgYmVjYXVzZSBnZGJzZXJ2ZXIgY3VycmVudGx5IGRvZXNuJ3QgcmVjb2duaXplIHRoZSBw cmVmaXhlcy4KLSsJcmVnc3ViIC1hbGwgIl5cKHRjcDp8dWRwOnx0Y3A0Onx1ZHA0Onx0Y3A2Onx1 ZHA2OlwpIiAkZGVidWdob3N0X3RtcCAiIiBkZWJ1Z2hvc3RfZ2Ric2VydmVyCi0rICAgIH0gZWxz ZWlmIFt0YXJnZXRfaW5mbyBleGlzdHMgc29ja2V0aG9zdF0gewotIAlzZXQgZGVidWdob3N0IFt0 YXJnZXRfaW5mbyBzb2NrZXRob3N0XQotKwlzZXQgZGVidWdob3N0X2dkYnNlcnZlciAkZGVidWdo b3N0Ci0gICAgIH0gZWxzZSB7Ci0gCXNldCBkZWJ1Z2hvc3QgImxvY2FsaG9zdDoiCi0rCXNldCBk ZWJ1Z2hvc3RfZ2Ric2VydmVyICRkZWJ1Z2hvc3QKLSAgICAgfQotIAotICAgICAjIFNvbWUgYm9h cmRzIHVzZSBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIHBvcnQgdGhhdCBpcyBwYXNzZWQgdG8K LUBAIC0yNzcsOCArMjkwLDE0IEBAIHByb2MgZ2Ric2VydmVyX3N0YXJ0IHsgb3B0aW9ucyBhcmd1 bWVudHMgfSB7Ci0gCWlmIHsgJG9wdGlvbnMgIT0gIiIgfSB7Ci0gCSAgICBhcHBlbmQgZ2Ric2Vy dmVyX2NvbW1hbmQgIiAkb3B0aW9ucyIKLSAJfQotKwlpZiB7ICRkZWJ1Z2hvc3RfZ2Ric2VydmVy ICE9ICIiIH0gewotKwkgICAgYXBwZW5kIGdkYnNlcnZlcl9jb21tYW5kICIgJGRlYnVnaG9zdF9n ZGJzZXJ2ZXIiCi0rCX0KLSAJaWYgeyAkcG9ydG51bSAhPSAiIiB9IHsKLS0JICAgIGFwcGVuZCBn ZGJzZXJ2ZXJfY29tbWFuZCAiIFskZ2V0X2NvbW1fcG9ydCAkcG9ydG51bV0iCi0rCSAgICBpZiB7 ICRkZWJ1Z2hvc3RfZ2Ric2VydmVyID09ICIiIH0gewotKwkJYXBwZW5kIGdkYnNlcnZlcl9jb21t YW5kICIgIgotKwkgICAgfQotKwkgICAgYXBwZW5kIGdkYnNlcnZlcl9jb21tYW5kICJbJGdldF9j b21tX3BvcnQgJHBvcnRudW1dIgotIAl9Ci0gCWlmIHsgJGFyZ3VtZW50cyAhPSAiIiB9IHsKLSAJ ICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICRhcmd1bWVudHMiCi1AQCAtMzA3LDYgKzMy Niw5IEBAIHByb2MgZ2Ric2VydmVyX3N0YXJ0IHsgb3B0aW9ucyBhcmd1bWVudHMgfSB7Ci0gCQkg ICAgY29udGludWUKLSAJCX0KLSAJICAgIH0KLSsJICAgIC1yZSAiLio6IGNhbm5vdCByZXNvbHZl IG5hbWU6IE5hbWUgb3Igc2VydmljZSBub3Qga25vd25cclxuIiB7Ci0rCQllcnJvciAiZ2Ric2Vy dmVyIGNhbm5vdCByZXNvbHZlIG5hbWUuIgotKwkgICAgfQotIAkgICAgdGltZW91dCB7Ci0gCQll cnJvciAiVGltZW91dCB3YWl0aW5nIGZvciBnZGJzZXJ2ZXIgcmVzcG9uc2UuIgotIAkgICAgfQot ZGlmZiAtLWdpdCBhL2dkYi91bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNlbGZ0ZXN0 cy5jIGIvZ2RiL3VuaXR0ZXN0cy9wYXJzZS1jb25uZWN0aW9uLXNwZWMtc2VsZnRlc3RzLmMKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdW5pdHRlc3RzL3Bh cnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYwotQEAgLTAsMCArMSwyNDkgQEAKLSsvKiBT ZWxmIHRlc3RzIGZvciBwYXJzaW5nIGNvbm5lY3Rpb24gc3BlY3MgZm9yIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgot KyNpbmNsdWRlICJzZWxmdGVzdC5oIgotKyNpbmNsdWRlICJjb21tb24vbmV0c3R1ZmYuaCIKLSsj aW5jbHVkZSAiZGlhZ25vc3RpY3MuaCIKLSsjaWZkZWYgVVNFX1dJTjMyQVBJCi0rI2luY2x1ZGUg PHdpbnNvY2syLmg+Ci0rI2luY2x1ZGUgPHdzcGlhcGkuaD4KLSsjZWxzZQotKyNpbmNsdWRlIDxu ZXRpbmV0L2luLmg+Ci0rI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotKyNpbmNsdWRlIDxuZXRkYi5o PgotKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+Ci0r I2VuZGlmCi0rCi0rbmFtZXNwYWNlIHNlbGZ0ZXN0cyB7Ci0rbmFtZXNwYWNlIHBhcnNlX2Nvbm5l Y3Rpb25fc3BlY190ZXN0cyB7Ci0rCi0rLyogQXV4aWxpYXJ5IHN0cnVjdCB0aGF0IGhvbGRzIGlu Zm8gYWJvdXQgYSBzcGVjaWZpYyB0ZXN0IGZvciBhCi0rICAgY29ubmVjdGlvbiBzcGVjLiAgKi8K LSsKLStzdHJ1Y3QgcGFyc2VfY29ubl90ZXN0Ci0rewotKyAgLyogVGhlIGNvbm5lY3Rpb24gc3Bl Yy4gICovCi0rICBjb25zdCBjaGFyICpjb25uc3BlYzsKLSsKLSsgIC8qIEV4cGVjdGVkIHJlc3Vs dCBmcm9tICdwYXJzZV9jb25uZWN0aW9uX3NwZWMnLiAgKi8KLSsgIHBhcnNlZF9jb25uZWN0aW9u X3NwZWMgZXhwZWN0ZWRfcmVzdWx0OwotKwotKyAgLyogVHJ1ZSBpZiB0aGlzIHRlc3Qgc2hvdWxk IGZhaWwsIGZhbHNlIG90aGVyd2lzZS4gIElmIHRydWUsIG9ubHkKLSsgICAgIHRoZSBDT05OU1BF QyBmaWVsZCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyB2YWxpZC4gICovCi0rICBib29sIHNob3Vs ZF9mYWlsOwotKwotKyAgLyogVGhlIGV4cGVjdGVkIEFJX0ZBTUlMWSB0byBiZSBmb3VuZCBvbiB0 aGUgJ3N0cnVjdCBhZGRyaW5mbycKLSsgICAgIEhJTlQuICAqLwotKyAgaW50IGV4cF9haV9mYW1p bHk7Ci0rCi0rICAvKiBUaGUgZXhwZWN0ZWQgQUlfU09DS1RZUEUgdG8gYmUgZm91bmQgb24gdGhl ICdzdHJ1Y3QgYWRkcmluZm8nCi0rICAgICBISU5ULiAgKi8KLSsgIGludCBleHBfYWlfc29ja3R5 cGU7Ci0rCi0rICAvKiBUaGUgZXhwZWN0ZWQgQUlfUFJPVE9DT0wgdG8gYmUgZm91bmQgb24gdGhl ICdzdHJ1Y3QgYWRkcmluZm8nCi0rICAgICBISU5ULiAgKi8KLSsgIGludCBleHBfYWlfcHJvdG9j b2w7Ci0rfTsKLSsKLSsvKiBTb21lIGRlZmluZXMgdG8gaGVscCB1cyBmaWxsIGEgJ3N0cnVjdCBw YXJzZV9jb25uX3Rlc3QnLiAgKi8KLSsKLSsvKiBJbml0aWFsaXplIGEgZnVsbCBlbnRyeS4gICov Ci0rI2RlZmluZSBJTklUX0VOVFJZKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgU0hPVUxEX0ZB SUwsIEVYUF9BSV9GQU1JTFksIFwKLSsJCSAgIEVYUF9BSV9TT0NLVFlQRSwgRVhQX0FJX1BST1RP Q09MKQkJCVwKLSsgIHsgQUREUiwgeyBFWFBfSE9TVCwgRVhQX1BPUlQgfSwgU0hPVUxEX0ZBSUws IEVYUF9BSV9GQU1JTFksIFwKLSsgICAgRVhQX0FJX1NPQ0tUWVBFLCBFWFBfQUlfUFJPVE9DT0wg fQotKwotKy8qIEluaXRpYWxpemUgYW4gdW5wcmVmaXhlZCBlbnRyeS4gIEluIHRoaXMgY2FzZSwg d2UgZG9uJ3QgZXhwZWN0Ci0rICAgYW55dGhpbmcgb24gdGhlICdzdHJ1Y3QgYWRkcmluZm8nIEhJ TlQuICAqLwotKyNkZWZpbmUgSU5JVF9VTlBSRUZJWEVEX0VOVFJZKEFERFIsIEVYUF9IT1NULCBF WFBfUE9SVCkgXAotKyAgSU5JVF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBmYWxz ZSwgMCwgMCwgMCkKLSsKLSsvKiBJbml0aWFsaXplZCBhbiB1bnByZWZpeGVkIElQdjYgZW50cnku ICBJbiB0aGlzIGNhc2UsIHdlIGRvbid0Ci0rICAgZXhwZWN0IGFueXRoaW5nIG9uIHRoZSAnc3Ry dWN0IGFkZHJpbmZvJyBISU5ULiAgKi8KLSsjZGVmaW5lIElOSVRfVU5QUkVGSVhFRF9JUFY2X0VO VFJZKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAotKyAgSU5JVF9FTlRSWSAoQUREUiwgRVhQ X0hPU1QsIEVYUF9QT1JULCBmYWxzZSwgQUZfSU5FVDYsIDAsIDApCi0rCi0rLyogSW5pdGlhbGl6 ZSBhIHByZWZpeGVkIGVudHJ5LiAgKi8KLSsjZGVmaW5lIElOSVRfUFJFRklYRURfRU5UUlkoQURE UiwgRVhQX0hPU1QsIEVYUF9QT1JULCBFWFBfQUlfRkFNSUxZLCBcCi0rCQkJICAgIEVYUF9BSV9T T0NLVFlQRSwgRVhQX0FJX1BST1RPQ09MKSBcCi0rICBJTklUX0VOVFJZIChBRERSLCBFWFBfSE9T VCwgRVhQX1BPUlQsIGZhbHNlLCBFWFBfQUlfRkFNSUxZLCBcCi0rCSAgICAgIEVYUF9BSV9TT0NL VFlQRSwgRVhQX0FJX1BST1RPQ09MKQotKwotKy8qIEluaXRpYWxpemUgYW4gZW50cnkgcHJlZml4 ZWQgd2l0aCAidGNwNDoiLiAgKi8KLSsjZGVmaW5lIElOSVRfUFJFRklYRURfSVBWNF9UQ1AoQURE UiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCi0rICBJTklUX1BSRUZJWEVEX0VOVFJZIChBRERSLCBF WFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBcCi0rCQkgICAgICAgSVBQ Uk9UT19UQ1ApCi0rCi0rLyogSW5pdGlhbGl6ZSBhbiBlbnRyeSBwcmVmaXhlZCB3aXRoICJ0Y3A2 OiIuICAqLwotKyNkZWZpbmUgSU5JVF9QUkVGSVhFRF9JUFY2X1RDUChBRERSLCBFWFBfSE9TVCwg RVhQX1BPUlQpIFwKLSsgIElOSVRfUFJFRklYRURfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBFWFBf UE9SVCwgQUZfSU5FVDYsIFNPQ0tfU1RSRUFNLCBcCi0rCQkgICAgICAgSVBQUk9UT19UQ1ApCi0r Ci0rLyogSW5pdGlhbGl6ZSBhbiBlbnRyeSBwcmVmaXhlZCB3aXRoICJ1ZHA0OiIuICAqLwotKyNk ZWZpbmUgSU5JVF9QUkVGSVhFRF9JUFY0X1VEUChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQpIFwK LSsgIElOSVRfUFJFRklYRURfRU5UUlkgKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgQUZfSU5F VCwgU09DS19ER1JBTSwgXAotKwkJICAgICAgIElQUFJPVE9fVURQKQotKwotKy8qIEluaXRpYWxp emUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidWRwNjoiLiAgKi8KLSsjZGVmaW5lIElOSVRfUFJF RklYRURfSVBWNl9VRFAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCi0rICBJTklUX1BSRUZJ WEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQ2LCBTT0NLX0RHUkFN LCBcCi0rCQkgICAgICAgSVBQUk9UT19VRFApCi0rCi0rLyogSW5pdGlhbGl6ZSBhIGJvZ3VzIGVu dHJ5LCBpLmUuLCBhIGNvbm5lY3Rpb24gc3BlYyB0aGF0IHNob3VsZAotKyAgIGZhaWwuICAqLwot KyNkZWZpbmUgSU5JVF9CT0dVU19FTlRSWShBRERSKSBcCi0rICBJTklUX0VOVFJZIChBRERSLCAi IiwgIiIsIHRydWUsIDAsIDAsIDApCi0rCi0rLyogVGhlIHZhcmlhYmxlIHdoaWNoIGhvbGRzIGFs bCBvZiBvdXIgdGVzdHMuICAqLwotKwotK3N0YXRpYyBjb25zdCBwYXJzZV9jb25uX3Rlc3QgY29u bl90ZXN0W10gPQotKyAgewotKyAgICAvKiBVbnByZWZpeGVkIGFkZHJlc3Nlcy4gICovCi0rCi0r ICAgIC8qIElQdjQsIGhvc3QgYW5kIHBvcnQgcHJlc2VudC4gICovCi0rICAgIElOSVRfVU5QUkVG SVhFRF9FTlRSWSAoIjEyNy4wLjAuMToxMjM0IiwgIjEyNy4wLjAuMSIsICIxMjM0IiksCi0rICAg IC8qIElQdjQsIG9ubHkgaG9zdC4gICovCi0rICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjEy Ny4wLjAuMSIsICIxMjcuMC4wLjEiLCAiIiksCi0rICAgIC8qIElQdjQsIG1pc3NpbmcgcG9ydC4g ICovCi0rICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjEyNy4wLjAuMToiLCAiMTI3LjAuMC4x IiwgIiIpLAotKwotKyAgICAvKiBJUHY2LCBob3N0IGFuZCBwb3J0IHByZXNlbnQsIG5vIGJyYWNr ZXRzLiAgKi8KLSsgICAgSU5JVF9VTlBSRUZJWEVEX0VOVFJZICgiOjoxOjEyMzQiLCAiOjoxIiwg IjEyMzQiKSwKLSsgICAgLyogSVB2NiwgbWlzc2luZyBwb3J0LCBubyBicmFja2V0cy4gICovCi0r ICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjo6MToiLCAiOjoxIiwgIiIpLAotKyAgICAvKiBJ UHY2LCBob3N0IGFuZCBwb3J0IHByZXNlbnQsIHdpdGggYnJhY2tldHMuICAqLwotKyAgICBJTklU X1VOUFJFRklYRURfSVBWNl9FTlRSWSAoIls6OjFdOjEyMzQiLCAiOjoxIiwgIjEyMzQiKSwKLSsg ICAgLyogSVB2Niwgb25seSBob3N0LCB3aXRoIGJyYWNrZXRzLiAgKi8KLSsgICAgSU5JVF9VTlBS RUZJWEVEX0lQVjZfRU5UUlkgKCJbOjoxXSIsICI6OjEiLCAiIiksCi0rICAgIC8qIElQdjYsIG1p c3NpbmcgcG9ydCwgd2l0aCBicmFja2V0cy4gICovCi0rICAgIElOSVRfVU5QUkVGSVhFRF9JUFY2 X0VOVFJZICgiWzo6MV06IiwgIjo6MSIsICIiKSwKLSsKLSsgICAgLyogVW5zcGVjaWZpZWQsIG9u bHkgcG9ydC4gICovCi0rICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjoxMjM0IiwgImxvY2Fs aG9zdCIsICIxMjM0IiksCi0rCi0rICAgIC8qIFByZWZpeGVkIGFkZHJlc3Nlcy4gICovCi0rCi0r ICAgIC8qIFByZWZpeGVkICJ0Y3A0OiIgSVB2NCwgaG9zdCBhbmQgcG9ydCBwcmVzZW50cy4gICov Ci0rICAgIElOSVRfUFJFRklYRURfSVBWNF9UQ1AgKCJ0Y3A0OjEyNy4wLjAuMToxMjM0IiwgIjEy Ny4wLjAuMSIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ0Y3A0OiIgSVB2NCwgb25seSBw b3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY0X1RDUCAoInRjcDQ6OjEyMzQiLCAibG9j YWxob3N0IiwgIjEyMzQiKSwKLSsgICAgLyogUHJlZml4ZWQgInRjcDQ6IiBJUHY0LCBvbmx5IGhv c3QuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVENQICgidGNwNDoxMjcuMC4wLjEiLCAi MTI3LjAuMC4xIiwgIiIpLAotKyAgICAvKiBQcmVmaXhlZCAidGNwNDoiIElQdjQsIG1pc3Npbmcg cG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNF9UQ1AgKCJ0Y3A0OjEyNy4wLjAuMToi LCAiMTI3LjAuMC4xIiwgIiIpLAotKwotKyAgICAvKiBQcmVmaXhlZCAidWRwNDoiIElQdjQsIGhv c3QgYW5kIHBvcnQgcHJlc2VudC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNF9VRFAgKCJ1 ZHA0OjEyNy4wLjAuMToxMjM0IiwgIjEyNy4wLjAuMSIsICIxMjM0IiksCi0rICAgIC8qIFByZWZp eGVkICJ1ZHA0OiIgSVB2NCwgb25seSBwb3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhFRF9JUFY0 X1VEUCAoInVkcDQ6OjEyMzQiLCAibG9jYWxob3N0IiwgIjEyMzQiKSwKLSsgICAgLyogUHJlZml4 ZWQgInVkcDQ6IiBJUHY0LCBvbmx5IGhvc3QuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjRf VURQICgidWRwNDoxMjcuMC4wLjEiLCAiMTI3LjAuMC4xIiwgIiIpLAotKyAgICAvKiBQcmVmaXhl ZCAidWRwNDoiIElQdjQsIG1pc3NpbmcgcG9ydC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBW NF9VRFAgKCJ1ZHA0OjEyNy4wLjAuMToiLCAiMTI3LjAuMC4xIiwgIiIpLAotKwotKwotKyAgICAv KiBQcmVmaXhlZCAidGNwNjoiIElQdjYsIGhvc3QgYW5kIHBvcnQgcHJlc2VudC4gICovCi0rICAg IElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ojo6MToxMjM0IiwgIjo6MSIsICIxMjM0Iiks Ci0rICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2Niwgb25seSBwb3J0LiAgKi8KLSsgICAgSU5J VF9QUkVGSVhFRF9JUFY2X1RDUCAoInRjcDY6OjEyMzQiLCAibG9jYWxob3N0IiwgIjEyMzQiKSwK LSsgICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2LCBvbmx5IGhvc3QuICAqLwotKyAgICAvL0lO SVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ojo6MSIsICI6OjEiLCAiIiksCi0rICAgIC8qIFBy ZWZpeGVkICJ0Y3A2OiIgSVB2NiwgbWlzc2luZyBwb3J0LiAgKi8KLSsgICAgSU5JVF9QUkVGSVhF RF9JUFY2X1RDUCAoInRjcDY6OjoxOiIsICI6OjEiLCAiIiksCi0rCi0rICAgIC8qIFByZWZpeGVk ICJ1ZHA2OiIgSVB2NiwgaG9zdCBhbmQgcG9ydCBwcmVzZW50LiAgKi8KLSsgICAgSU5JVF9QUkVG SVhFRF9JUFY2X1VEUCAoInVkcDY6OjoxOjEyMzQiLCAiOjoxIiwgIjEyMzQiKSwKLSsgICAgLyog UHJlZml4ZWQgInVkcDY6IiBJUHY2LCBvbmx5IHBvcnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVE X0lQVjZfVURQICgidWRwNjo6MTIzNCIsICJsb2NhbGhvc3QiLCAiMTIzNCIpLAotKyAgICAvKiBQ cmVmaXhlZCAidWRwNjoiIElQdjYsIG9ubHkgaG9zdC4gICovCi0rICAgIC8vSU5JVF9QUkVGSVhF RF9JUFY2X1VEUCAoInVkcDY6OjoxIiwgIjo6MSIsICIiKSwKLSsgICAgLyogUHJlZml4ZWQgInVk cDY6IiBJUHY2LCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVURQ ICgidWRwNjo6OjE6IiwgIjo6MSIsICIiKSwKLSsKLSsgICAgLyogUHJlZml4ZWQgInRjcDY6IiBJ UHY2IHdpdGggYnJhY2tldHMsIGhvc3QgYW5kIHBvcnQgcHJlc2VudC4gICovCi0rICAgIElOSVRf UFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ols6OjFdOjEyMzQiLCAiOjoxIiwgIjEyMzQiKSwKLSsg ICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2IHdpdGggYnJhY2tldHMsIG9ubHkgaG9zdC4gICov Ci0rICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ols6OjFdIiwgIjo6MSIsICIiKSwK LSsgICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2IHdpdGggYnJhY2tldHMsIG1pc3NpbmcgcG9y dC4gICovCi0rICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ols6OjFdOiIsICI6OjEi LCAiIiksCi0rCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBo b3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLwotKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVURQICgi dWRwNjpbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0IiksCi0rICAgIC8qIFByZWZpeGVkICJ1ZHA2 OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBvbmx5IGhvc3QuICAqLwotKyAgICBJTklUX1BSRUZJWEVE X0lQVjZfVURQICgidWRwNjpbOjoxXSIsICI6OjEiLCAiIiksCi0rICAgIC8qIFByZWZpeGVkICJ1 ZHA2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBtaXNzaW5nIHBvcnQuICAqLwotKyAgICBJTklUX1BS RUZJWEVEX0lQVjZfVURQICgidWRwNjpbOjoxXToiLCAiOjoxIiwgIiIpLAotKwotKwotKyAgICAv KiBCb2d1cyBhZGRyZXNzZXMuICAqLwotKyAgICBJTklUX0JPR1VTX0VOVFJZICgidGNwNjpbOjox XTEyMzo0NCIpLAotKyAgICBJTklUX0JPR1VTX0VOVFJZICgiWzo6MSIpLAotKyAgICBJTklUX0JP R1VTX0VOVFJZICgidGNwNjo6OjFdOiIpLAotKyAgfTsKLSsKLSsvKiBUZXN0IGEgY29ubmVjdGlv biBzcGVjIEMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rdGVzdF9jb25uIChjb25zdCBwYXJzZV9j b25uX3Rlc3QgJmMpCi0rewotKyAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7Ci0rICBwYXJzZWRfY29u bmVjdGlvbl9zcGVjIHJldDsKLSsKLSsgIG1lbXNldCAoJmhpbnQsIDAsIHNpemVvZiAoaGludCkp OwotKwotKyAgVFJZCi0rICAgIHsKLSsgICAgICByZXQgPSBwYXJzZV9jb25uZWN0aW9uX3NwZWMg KGMuY29ubnNwZWMsICZoaW50KTsKLSsgICAgfQotKyAgQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19F UlJPUikKLSsgICAgewotKyAgICAgIC8qIElmIHdlIGNhdWdodCBhbiBlcnJvciwgd2Ugc2hvdWxk IGNoZWNrIGlmIHRoaXMgY29ubmVjdGlvbgotKwkgc3BlYyB3YXMgc3VwcG9zZWQgdG8gZmFpbC4g ICovCi0rICAgICAgU0VMRl9DSEVDSyAoYy5zaG91bGRfZmFpbCk7Ci0rICAgICAgcmV0dXJuOwot KyAgICB9Ci0rICBFTkRfQ0FUQ0gKLSsKLSsgIFNFTEZfQ0hFQ0sgKCFjLnNob3VsZF9mYWlsKTsK LSsgIFNFTEZfQ0hFQ0sgKHJldC5ob3N0X3N0ciA9PSBjLmV4cGVjdGVkX3Jlc3VsdC5ob3N0X3N0 cik7Ci0rICBTRUxGX0NIRUNLIChyZXQucG9ydF9zdHIgPT0gYy5leHBlY3RlZF9yZXN1bHQucG9y dF9zdHIpOwotKyAgU0VMRl9DSEVDSyAoaGludC5haV9mYW1pbHkgPT0gYy5leHBfYWlfZmFtaWx5 KTsKLSsgIFNFTEZfQ0hFQ0sgKGhpbnQuYWlfc29ja3R5cGUgPT0gYy5leHBfYWlfc29ja3R5cGUp OwotKyAgU0VMRl9DSEVDSyAoaGludC5haV9wcm90b2NvbCA9PSBjLmV4cF9haV9wcm90b2NvbCk7 Ci0rfQotKwotKy8qIFJ1biB0aGUgdGVzdHMgYXNzb2NpYXRlZCB3aXRoIHBhcnNpbmcgY29ubmVj dGlvbiBzcGVjcy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStydW5fdGVzdHMgKCkKLSt7Ci0rICBm b3IgKGNvbnN0IHBhcnNlX2Nvbm5fdGVzdCAmYyA6IGNvbm5fdGVzdCkKLSsgICAgdGVzdF9jb25u IChjKTsKLSt9Ci0rfSAvKiBuYW1lc3BhY2UgcGFyc2VfY29ubmVjdGlvbl9zcGVjX3Rlc3RzICov Ci0rfSAvKiBuYW1lc3BhY2Ugc2VsZnRlc3RzICovCi0rCi0rdm9pZAotK19pbml0aWFsaXplX3Bh cnNlX2Nvbm5lY3Rpb25fc3BlY19zZWxmdGVzdHMgKCkKLSt7Ci0rICBzZWxmdGVzdHM6OnJlZ2lz dGVyX3Rlc3QgKCJwYXJzZV9jb25uZWN0aW9uX3NwZWMiLAotKwkJCSAgICBzZWxmdGVzdHM6OnBh cnNlX2Nvbm5lY3Rpb25fc3BlY190ZXN0czo6cnVuX3Rlc3RzKTsKLSt9CgpkaWZmIC0tZ2l0IGEv Z2RiLXJoYno4ODE4NDktaXB2Ni0xb2YzLnBhdGNoIGIvZ2RiLXJoYno4ODE4NDktaXB2Ni0xb2Yz LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjM2E2NjQKLS0tIC9k ZXYvbnVsbAorKysgYi9nZGItcmhiejg4MTg0OS1pcHY2LTFvZjMucGF0Y2gKQEAgLTAsMCArMSwx OTM0IEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogU2VyZ2lvIER1cmlnYW4gSnVuaW9yIDxzZXJnaW9kakByZWRoYXQuY29tPgorRGF0ZTogRnJp LCAxOCBNYXkgMjAxOCAwMToyOToyNCAtMDQwMAorU3ViamVjdDogZ2RiLXJoYno4ODE4NDktaXB2 Ni0xb2YzLnBhdGNoCisKKzs7IEltcGxlbWVudCBJUHY2IHN1cHBvcnQgZm9yIEdEQi9nZGJzZXJ2 ZXIgKFJIIEJaIDg4MTg0OSwgU2VyZ2lvIER1cmlnYW4gSnVuaW9yKS4KKworSW1wbGVtZW50IElQ djYgc3VwcG9ydCBmb3IgR0RCL2dkYnNlcnZlcgorCitUaGlzIHBhdGNoIGltcGxlbWVudHMgSVB2 NiBzdXBwb3J0IGZvciBib3RoIEdEQiBhbmQgZ2Ric2VydmVyLiAgQmFzZWQKK29uIG15IHJlc2Vh cmNoLCBpdCBpcyB0aGUgZm91cnRoIGF0dGVtcHQgdG8gZG8gdGhhdCBzaW5jZSAyMDA2LiAgU2lu Y2UKK0kgdXNlZCBpZGVhcyBmcm9tIGFsbCBvZiB0aGUgcHJldmlvdXMgcGF0Y2hlcywgSSBhbHNv IGFkZGVkIHRoZWlyCithdXRob3JzJ3MgbmFtZXMgb24gdGhlIENoYW5nZUxvZ3MgYXMgYSB3YXkg dG8gcmVjb2duaXplIHRoZWlyCitlZmZvcnRzLiAgRm9yIHJlZmVyZW5jZSBzYWtlLCB5b3UgY2Fu IGZpbmQgdGhlIHByZXZpb3VzIGF0dGVtcHRzIGF0OgorCisgIGh0dHBzOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAwNi0wOS9tc2cwMDE5Mi5odG1sCisKKyAgaHR0cHM6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE0LTAyL21zZzAwMjQ4Lmh0bWwKKworICBodHRw czovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTYtMDIvbXNnMDAyMjYuaHRtbAor CitUaGUgYmFzaWMgaWRlYSBiZWhpbmQgdGhlIHBhdGNoIGlzIHRvIHN0YXJ0IHVzaW5nIHRoZSBu ZXcKKydnZXRhZGRyaW5mbycvJ2dldG5hbWVpbmZvJyBjYWxscywgd2hpY2ggYXJlIHJlc3BvbnNp YmxlIGZvcgordHJhbnNsYXRpbmcgbmFtZXMgYW5kIGFkZHJlc3NlcyBpbiBhIHByb3RvY29sLWlu ZGVwZW5kZW50IHdheS4gIFRoaXMKK21lYW5zIHRoYXQgaWYgd2UgZXZlciBoYXZlIGEgbmV3IHZl cnNpb24gb2YgdGhlIElQIHByb3RvY29sLCB3ZSB3b24ndAorbmVlZCB0byBjaGFuZ2UgdGhlIGNv ZGUgYWdhaW4gKG9yLCBhdCBsZWFzdCwgd29uJ3QgaGF2ZSB0byBjaGFuZ2UgdGhlCittYWpvcml0 eSBvZiB0aGUgY29kZSkuCisKK1RoZSBmdW5jdGlvbiAnZ2V0YWRkcmluZm8nIHJldHVybnMgYSBs aW5rZWQgbGlzdCBvZiBwb3NzaWJsZSBhZGRyZXNzZXMKK3RvIGNvbm5lY3QgdG8uICBEZWFsaW5n IHdpdGggbXVsdGlwbGUgYWRkcmVzc2VzIHByb3ZlZCB0byBiZSBhIGhhcmQKK3Rhc2sgd2l0aCB0 aGUgY3VycmVudCBUQ1AgYXV0by1yZXRyeSBtZWNoYW5pc20gaW1wbGVtZW50ZWQgb24KK3Nlci10 Y3A6bmV0X29wZW4uICBGb3IgZXhhbXBsZSwgd2hlbiBnZGJzZXJ2ZXIgbGlzdGVuZWQgb25seSBv biBhbgorSVB2NCBzb2NrZXQ6CisKKyAgJCAuL2dkYnNlcnZlciAtLW9uY2UgMTI3LjAuMC4xOjEy MzQgLi9hLm91dAorCithbmQgR0RCIHdhcyBpbnN0cnVjdGVkIHRvIHRyeSB0byBjb25uZWN0IHRv IGJvdGggSVB2NiBhbmQgSVB2NAorc29ja2V0czoKKworICAkIC4vZ2RiIC1leCAndGFyZ2V0IGV4 dGVuZGVkLXJlbW90ZSBsb2NhbGhvc3Q6MTIzNCcgLi9hLm91dAorCit0aGUgdXNlciB3b3VsZCBu b3RpY2UgYSBzb21ld2hhdCBiaWcgZGVsYXkgYmVmb3JlIEdEQiB3YXMgYWJsZSB0bworY29ubmVj dCB0byB0aGUgSVB2NCBzb2NrZXQuICBUaGlzIGhhcHBlbmVkIGJlY2F1c2UgR0RCIHdhcyB0cnlp bmcgdG8KK2Nvbm5lY3QgdG8gdGhlIElQdjYgc29ja2V0IGZpcnN0LCBhbmQgaGFkIHRvIHdhaXQg dW50aWwgdGhlIGNvbm5lY3Rpb24KK3RpbWVkIG91dCBiZWZvcmUgaXQgdHJpZWQgdG8gY29ubmVj dCB0byB0aGUgSVB2NCBzb2NrZXQuCisKK0ZvciB0aGF0IHJlYXNvbiwgSSBoYWQgdG8gcmV3cml0 ZSB0aGUgbWFpbiBsb29wIGFuZCBpbXBsZW1lbnQgYSBuZXcKK21ldGhvZCBmb3IgaGFuZGxpbmcg bXVsdGlwbGUgY29ubmVjdGlvbnMuICBBZnRlciBzb21lIGRpc2N1c3Npb24sCitQZWRybyBhbmQg SSBhZ3JlZWQgb24gdGhlIGZvbGxvd2luZyBhbGdvcml0aG06CisKKyAgMSkgRm9yIGVhY2ggZW50 cnkgcmV0dXJuZWQgYnkgJ2dldGFkZHJpbmZvJywgd2UgdHJ5IHRvIG9wZW4gYSBzb2NrZXQKKyAg YW5kIGNvbm5lY3QgdG8gaXQuCisKKyAgMi5hKSBJZiB3ZSBoYXZlIGEgc3VjY2Vzc2Z1bCAnY29u bmVjdCcsIHdlIGp1c3QgdXNlIHRoYXQgY29ubmVjdGlvbi4KKworICAyLmIpIElmIHdlIGRvbid0 IGhhdmUgYSBzdWNjZXNzZnVsbCAnY29ubmVjdCcsIGJ1dCBpZiB3ZSd2ZSBnb3QgYQorICBFQ09O TlJFRlVTRUQgKG1lYW5pbmcgdGhlIHRoZSBjb25uZWN0aW9uIHdhcyByZWZ1c2VkKSwgd2Uga2Vl cCB0cmFjaworICBvZiB0aGlzIGZhY3QgYnkgdXNpbmcgYSBmbGFnLgorCisgIDIuYykgSWYgd2Ug ZG9uJ3QgaGF2ZSBhIHN1Y2Nlc3NmdWxsICdjb25uZWN0JywgYnV0IGlmIHdlJ3ZlIGdvdCBhCisg IEVJTlBST0dSRVNTIChtZWFuaW5nIHRoYXQgdGhlIGNvbm5lY3Rpb24gaXMgaW4gcHJvZ3Jlc3Mp LCB3ZSBwZXJmb3JtCisgIGEgJ3NlbGVjdCcgY2FsbCBvbiB0aGUgc29ja2V0IHVudGlsIHdlIGhh dmUgYSByZXN1bHQgKGVpdGhlciBhCisgIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbiwgb3IgYW4gZXJy b3Igb24gdGhlIHNvY2tldCkuCisKKyAgMykgSWYgdGNwX2F1dG9fcmV0cnkgaXMgdHJ1ZSwgYW5k IHdlIGhhdmVuJ3QgZ290dGVuIGEgc3VjY2Vzc2Z1bAorICBjb25uZWN0aW9uLCBhbmQgYXQgbGVh c3Qgb25lIG9mIG91ciBhdHRlbXB0cyBmYWlsZWQgd2l0aAorICBFQ09OTlJFRlVTRUQsIHRoZW4g d2Ugd2FpdCBhIGxpdHRsZSBiaXQgKGkuZS4sIGNhbGwKKyAgJ3dhaXRfZm9yX2Nvbm5lY3QnKSwg Y2hlY2sgdG8gc2VlIGlmIHRoZXJlIHdhcyBhCisgIHRpbWVvdXQvaW50ZXJydXB0aW9uIChpbiB3 aGljaCBjYXNlIHdlIGJhaWwgb3V0KSwgYW5kIHRoZW4gZ28gYmFjaworICB0byAoMSkuCisKK0Fm dGVyIG11bHRpcGxlIHRlc3RzLCBJIHdhcyBhYmxlIHRvIGNvbm5lY3Qgd2l0aG91dCBkZWxheSBv biB0aGUKK3NjZW5hcmlvIGRlc2NyaWJlZCBhYm92ZSwgYW5kIHdhcyBhbHNvIGFibGUgdG8gY29u bmVjdCBpbiBhbGwgb3RoZXIKK3R5cGVzIG9mIHNjZW5hcmlvcy4KKworSSBhbHNvIGltcGxlbWVu dGVkIHNvbWUgaG9zdG5hbWUgcGFyc2luZyBmdW5jdGlvbnMgKGFsb25nIHdpdGggdGhlaXIKK2Nv cnJlc3BvbmRpbmcgdW5pdCB0ZXN0cykgd2hpY2ggYXJlIHVzZWQgdG8gaGVscCBHREIgYW5kIGdk YnNlcnZlciB0bworcGFyc2UgaG9zdG5hbWUgc3RyaW5ncyBwcm92aWRlZCBieSB0aGUgdXNlci4g IFRoZXNlIG5ldyBmdW5jdGlvbnMgYXJlCitsaXZpbmcgaW5zaWRlIGNvbW1vbi9uZXRzdHVmZi5b Y2hdLiAgSSd2ZSBoYWQgdG8gZG8gdGhhdCBzaW5jZSBJUHY2CitpbnRyb2R1Y2VzIGEgbmV3IFVS TCBzY2hlbWUsIHdoaWNoIGRlZmluZXMgdGhhdCBzcXVhcmUgYnJhY2tldHMgY2FuIGJlCit1c2Vk IHRvIGVuY2xvc2UgdGhlIGhvc3QgcGFydCBhbmQgZGlmZmVyZW50aWF0ZSBpdCBmcm9tIHRoZQor cG9ydCAoZS5nLiwgIls6OjFdOjEyMzQiIG1lYW5zICJob3N0IDo6MSwgcG9ydCAxMjM0IikuICBJ IHNwZW50IHNvbWUKK3RpbWUgdGhpbmtpbmcgYWJvdXQgYSByZWFzb25hYmxlIHdheSB0byBpbnRl cnByZXQgd2hhdCB0aGUgdXNlciB3YW50cywKK2FuZCBJIGNhbWUgdXAgd2l0aCB0aGUgZm9sbG93 aW5nOgorCisgIC0gSWYgdGhlIHVzZXIgaGFzIHByb3ZpZGVkIGEgcHJlZml4IHRoYXQgZG9lc24n dCBzcGVjaWZ5IHRoZSBwcm90b2NvbAorICAgIHZlcnNpb24gKGkuZS4sICJ0Y3A6IiBvciAidWRw OiIpLCBvciBpZiB0aGUgdXNlciBoYXMgbm90IHByb3ZpZGVkCisgICAgYW55IHByZWZpeCwgZG9u J3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMgKGkuZS4sIGFzc3VtZSBBRl9VTlNQRUMgd2hlbgorICAg IGRlYWxpbmcgd2l0aCAnZ2V0YWRkcmluZm8nKSAqdW5sZXNzKiB0aGUgaG9zdCBzdGFydHMgd2l0 aCAiWyIgKGluCisgICAgd2hpY2ggY2FzZSwgYXNzdW1lIGl0J3MgYW4gSVB2NiBob3N0KS4KKwor ICAtIElmIHRoZSB1c2VyIGhhcyBwcm92aWRlZCBhIHByZWZpeCB0aGF0IGRvZXMgc3BlY2lmeSB0 aGUgcHJvdG9jb2wKKyAgICB2ZXJzaW9uIChpLmUuLCAidGNwNDoiLCAidGNwNjoiLCAidWRwNDoi IG9yICJ1ZHA2OiIpLCB0aGVuIHJlc3BlY3QKKyAgICB0aGF0LgorCitUaGlzIG1ldGhvZCBkb2Vz bid0IGZvbGxvdyBzdHJpY3RseSB3aGF0IFJGQyAyNzMyIHByb3Bvc2VzICh0aGF0CitsaXRlcmFs IElQdjYgYWRkcmVzc2VzIHNob3VsZCBiZSBwcm92aWRlZCBlbmNsb3NlZCBpbiAiWyIgYW5kICJd IikKK2JlY2F1c2UgSVB2NiBhZGRyZXNzZXMgc3RpbGwgY2FuIGJlIHByb3ZpZGVkIHdpdGhvdXQg c3F1YXJlIGJyYWNrZXRzCitpbiBvdXIgY2FzZSwgYnV0IHNpbmNlIHdlIGhhdmUgcHJlZml4ZXMg dG8gc3BlY2lmeSBwcm90b2NvbCB2ZXJzaW9ucyBJCit0aGluayB0aGlzIGlzIG5vdCBhbiBpc3N1 ZS4KKworQW5vdGhlciB0aGluZyB3b3J0aCBtZW50aW9uaW5nIGlzIHRoZSBuZXcgJ0dEQl9URVNU X1NPQ0tFVEhPU1QnCit0ZXN0Y2FzZSBwYXJhbWV0ZXIsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxl IHRvIHNwZWNpZnkgdGhlCitob3N0bmFtZSAod2l0aG91dCB0aGUgcG9ydCkgdG8gYmUgdXNlZCB3 aGVuIHRlc3RpbmcgR0RCIGFuZAorZ2Ric2VydmVyLiAgRm9yIGV4YW1wbGUsIHRvIHJ1biBJUHY2 IHRlc3RzOgorCisgICQgbWFrZSBjaGVjay1nZGIgUlVOVEVTVEZMQUdTPSdHREJfVEVTVF9TT0NL RVRIT1NUPXRjcDY6Wzo6MV0nCisKK09yLCB0byBydW4gSVB2NCB0ZXN0czoKKworICAkIG1ha2Ug Y2hlY2stZ2RiIFJVTlRFU1RGTEFHUz0nR0RCX1RFU1RfU09DS0VUSE9TVD10Y3A0OjEyNy4wLjAu MScKKworVGhpcyByZXF1aXJlZCBhIGZldyBjaGFuZ2VzIG9uIHRoZSBnZGJzZXJ2ZXItYmFzZS5l eHAsIGFuZCBhbHNvIGEKK21pbmltYWwgYWRqdXN0bWVudCBvbiBnZGIuc2VydmVyL3J1bi13aXRo b3V0LWxvY2FsLWJpbmFyeS5leHAuCisKK0ZpbmFsbHksIEkndmUgaW1wbGVtZW50ZWQgYSBuZXcg dGVzdGNhc2UsCitnZGIuc2VydmVyL3NlcnZlci1jb25uZWN0LmV4cCwgd2hpY2ggaXMgc3VwcG9z ZWQgdG8gcnVuIG9uIHRoZSBuYXRpdmUKK2hvc3QgYW5kIHBlcmZvcm0gdmFyaW91cyAic21va2Ug dGVzdHMiIHVzaW5nIGRpZmZlcmVudCBjb25uZWN0aW9uCittZXRob2RzLgorCitUaGlzIHBhdGNo IGhhcyBiZWVuIHJlZ3Jlc3Npb24tdGVzdGVkIG9uIEJ1aWxkQm90IGFuZCBsb2NhbGx5LCBhbmQK K2Fsc28gYnVpbHQgdXNpbmcgYSB4ODZfNjQtdzY0LW1pbmd3MzIgR0NDLCBhbmQgbm8gcHJvYmxl bXMgd2VyZSBmb3VuZC4KKworZ2RiL0NoYW5nZUxvZzoKKzIwMTgtMDctMTEgIFNlcmdpbyBEdXJp Z2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisJICAgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2 QGdtYWlsLmNvbT4KKwkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21haWwuY29tPgorCSAg ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorCisJKiBNYWtlZmlsZS5pbiAoU1VC RElSX1VOSVRURVNUU19TUkNTKTogQWRkCisJJ3VuaXR0ZXN0cy9wYXJzZS1jb25uZWN0aW9uLXNw ZWMtc2VsZnRlc3RzLmMnLgorCShDT01NT05fU0ZJTEVTKTogQWRkICdjb21tb24vbmV0c3R1ZmYu YycuCisJKEhGSUxFU19OT19TUkNESVIpOiBBZGQgJ2NvbW1vbi9uZXRzdHVmZi5oJy4KKwkqIE5F V1MgKENoYW5nZXMgc2luY2UgR0RCIDguMik6IE1lbnRpb24gSVB2NiBzdXBwb3J0LgorCSogY29t bW9uL25ldHN0dWZmLmM6IE5ldyBmaWxlLgorCSogY29tbW9uL25ldHN0dWZmLmg6IE5ldyBmaWxl LgorCSogc2VyLXRjcC5jOiBJbmNsdWRlICduZXRzdHVmZi5oJyBhbmQgJ3dzcGlhcGkuaCcuCisJ KHdhaXRfZm9yX2Nvbm5lY3QpOiBVcGRhdGUgY29tbWVudC4gIE5ldyBwYXJhbWV0ZXIKKwknZ2Ri OjpvcHRpb25hbDxpbnQ+IHNvY2snIGluc3RlYWQgb2YgJ3N0cnVjdCBzZXJpYWwgKnNjYicuCisJ VXNlICdzb2NrJyBkaXJlY3RseSBpbnN0ZWFkIG9mICdzY2ItPmZkJy4KKwkodHJ5X2Nvbm5lY3Qp OiBOZXcgZnVuY3Rpb24sIHdpdGggY29kZSBmcm9tICduZXRfb3BlbicuCisJKG5ldF9vcGVuKTog UmV3cml0ZSBtYWluIGxvb3AgdG8gZGVhbCB3aXRoIG11bHRpcGxlCisJc29ja2V0cy9hZGRyZXNz ZXMuICBIYW5kbGUgSVB2Ni1zdHlsZSBob3N0bmFtZXM7IGltcGxlbWVudAorCXN1cHBvcnQgZm9y IElQdjYgY29ubmVjdGlvbnMuCisJKiB1bml0dGVzdHMvcGFyc2UtY29ubmVjdGlvbi1zcGVjLXNl bGZ0ZXN0cy5jOiBOZXcgZmlsZS4KKworZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2c6CisyMDE4LTA3 LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorCSAgICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisJICAgIFBhdWwgRmVy dHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+CisJICAgIFRzdXRvbXUgU2VraSAgPHNla2lyaWtp QGdtYWlsLmNvbT4KKworCSogTWFrZWZpbGUuaW4gKFNGSUxFUyk6IEFkZCAnJChzcmNkaXIpL2Nv bW1vbi9uZXRzdHVmZi5jJy4KKwkoT0JTKTogQWRkICdjb21tb24vbmV0c3R1ZmYubycuCisJKEdE QlJFUExBWV9PQlMpOiBMaWtld2lzZS4KKwkqIGdkYnJlcGxheS5jOiBJbmNsdWRlICd3c3BpYXBp LmgnIGFuZCAnbmV0c3R1ZmYuaCcuCisJKHJlbW90ZV9vcGVuKTogSW1wbGVtZW50IHN1cHBvcnQg Zm9yIElQdjYKKwljb25uZWN0aW9ucy4KKwkqIHJlbW90ZS11dGlscy5jOiBJbmNsdWRlICduZXRz dHVmZi5oJywgJ2ZpbGVzdHVmZi5oJworCWFuZCAnd3NwaWFwaS5oJy4KKwkoaGFuZGxlX2FjY2Vw dF9ldmVudCk6IEFjY2VwdCBjb25uZWN0aW9ucyBmcm9tIElQdjYgc291cmNlcy4KKwkocmVtb3Rl X3ByZXBhcmUpOiBIYW5kbGUgSVB2Ni1zdHlsZSBob3N0bmFtZXM7IGltcGxlbWVudAorCXN1cHBv cnQgZm9yIElQdjYgY29ubmVjdGlvbnMuCisJKHJlbW90ZV9vcGVuKTogSW1wbGVtZW50IHN1cHBv cnQgZm9yIHByaW50aW5nIGNvbm5lY3Rpb25zIGZyb20KKwlJUHY2IHNvdXJjZXMuCisKK2dkYi90 ZXN0c3VpdGUvQ2hhbmdlTG9nOgorMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8 c2VyZ2lvZGpAcmVkaGF0LmNvbT4KKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgorCSAgICBQYXVsIEZlcnRzZXIgIDxmZXJjZXJwYXZAZ21haWwuY29tPgor CSAgICBUc3V0b211IFNla2kgIDxzZWtpcmlraUBnbWFpbC5jb20+CisKKwkqIFJFQURNRSAoVGVz dHN1aXRlIFBhcmFtZXRlcnMpOiBNZW50aW9uIG5ldyAnR0RCX1RFU1RfU09DS0VUSE9TVCcKKwlw YXJhbWV0ZXIuCisJKiBib2FyZHMvbmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5leHA6IERvIG5v dCBzZXQgJ3NvY2tldGhvc3QnCisJYnkgZGVmYXVsdC4KKwkqIGJvYXJkcy9uYXRpdmUtZ2Ric2Vy dmVyLmV4cDogTGlrZXdpc2UuCisJKiBnZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2FsLWJpbmFy eS5leHA6IEltcHJvdmUgcmVnZXhwIHVzZWQKKwlmb3IgZGV0ZWN0aW5nIHdoZW4gYSByZW1vdGUg ZGVidWdnaW5nIGNvbm5lY3Rpb24gc3VjY2VlZHMuCisJKiBnZGIuc2VydmVyL3NlcnZlci1jb25u ZWN0LmV4cDogTmV3IGZpbGUuCisJKiBsaWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwIChnZGJzZXJ2 ZXJfZGVmYXVsdF9nZXRfY29tbV9wb3J0KToKKwlEbyBub3QgcHJlZml4IHRoZSBwb3J0IG51bWJl ciB3aXRoICI6Ii4KKwkoZ2Ric2VydmVyX3N0YXJ0KTogTmV3IGdsb2JhbCBHREJfVEVTVF9TT0NL RVRIT1NULiAgSW1wbGVtZW50CisJc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIGFuZCB1c2luZyBpdC4g IEFkZCAnJGRlYnVnaG9zdF9nZGJzZXJ2ZXInCisJdG8gdGhlIGxpc3Qgb2YgYXJndW1lbnRzIHVz ZWQgdG8gc3RhcnQgZ2Ric2VydmVyLiAgSGFuZGxlIGNhc2UKKwl3aGVuIGdkYnNlcnZlciBjYW5u b3QgcmVzb2x2ZSBhIG5ldHdvcmsgbmFtZS4KKworZ2RiL2RvYy9DaGFuZ2VMb2c6CisyMDE4LTA3 LTExICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorCSAgICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisJICAgIFBhdWwgRmVy dHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+CisJICAgIFRzdXRvbXUgU2VraSAgPHNla2lyaWtp QGdtYWlsLmNvbT4KKworCSogZ2RiLnRleGluZm8gKFJlbW90ZSBDb25uZWN0aW9uIENvbW1hbmRz KTogQWRkIGV4cGxhbmF0aW9uCisJYWJvdXQgbmV3IElQdjYgc3VwcG9ydC4gIEFkZCBuZXcgY29u bmVjdGlvbiBwcmVmaXhlcy4KKworZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9N YWtlZmlsZS5pbgorLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKysgYi9nZGIvTWFrZWZpbGUuaW4K K0BAIC00MzAsNiArNDMwLDcgQEAgU1VCRElSX1VOSVRURVNUU19TUkNTID0gXAorIAl1bml0dGVz dHMvb2Zmc2V0LXR5cGUtc2VsZnRlc3RzLmMgXAorIAl1bml0dGVzdHMvb2JzZXJ2YWJsZS1zZWxm dGVzdHMuYyBcCisgCXVuaXR0ZXN0cy9vcHRpb25hbC1zZWxmdGVzdHMuYyBcCisrCXVuaXR0ZXN0 cy9wYXJzZS1jb25uZWN0aW9uLXNwZWMtc2VsZnRlc3RzLmMgXAorIAl1bml0dGVzdHMvcHRpZC1z ZWxmdGVzdHMuYyBcCisgCXVuaXR0ZXN0cy9yc3AtbG93LXNlbGZ0ZXN0cy5jIFwKKyAJdW5pdHRl c3RzL3Njb3BlZF9mZC1zZWxmdGVzdHMuYyBcCitAQCAtOTY3LDYgKzk2OCw3IEBAIENPTU1PTl9T RklMRVMgPSBcCisgCWNvbW1vbi9qb2ItY29udHJvbC5jIFwKKyAJY29tbW9uL2dkYl90aWxkZV9l eHBhbmQuYyBcCisgCWNvbW1vbi9nZGJfdmVjcy5jIFwKKysJY29tbW9uL25ldHN0dWZmLmMgXAor IAljb21tb24vbmV3LW9wLmMgXAorIAljb21tb24vcGF0aHN0dWZmLmMgXAorIAljb21tb24vcHJp bnQtdXRpbHMuYyBcCitAQCAtMTQ0OCw2ICsxNDUwLDcgQEAgSEZJTEVTX05PX1NSQ0RJUiA9IFwK KyAJY29tbW9uL2dkYl92ZWNzLmggXAorIAljb21tb24vZ2RiX3dhaXQuaCBcCisgCWNvbW1vbi9j b21tb24taW5mZXJpb3IuaCBcCisrCWNvbW1vbi9uZXRzdHVmZi5oIFwKKyAJY29tbW9uL2hvc3Qt ZGVmcy5oIFwKKyAJY29tbW9uL3BhdGhzdHVmZi5oIFwKKyAJY29tbW9uL3ByaW50LXV0aWxzLmgg XAorZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKKy0tLSBhL2dkYi9ORVdTCisrKysg Yi9nZGIvTkVXUworQEAgLTEsNiArMSwxMiBAQAorIAkJV2hhdCBoYXMgY2hhbmdlZCBpbiBHREI/ CisgCSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCisgCisrKioqIENoYW5nZXMg c2luY2UgR0RCIDguMgorKworKyogR0RCIGFuZCBHREJzZXJ2ZXIgbm93IHN1cHBvcnQgSVB2NiBj b25uZWN0aW9ucy4gIElQdjYgYWRkcmVzc2VzCisrICBjYW4gYmUgcGFzc2VkIHVzaW5nIHRoZSAn W0FERFJFU1NdOlBPUlQnIG5vdGF0aW9uLCBvciB0aGUgcmVndWxhcgorKyAgJ0FERFJFU1M6UE9S VCcgbWV0aG9kLgorKworICoqKiBDaGFuZ2VzIGluIEdEQiA4LjIKKyAKKyAqIFRoZSAnc2V0IGRp c2Fzc2VtYmxlci1vcHRpb25zJyBjb21tYW5kIG5vdyBzdXBwb3J0cyBzcGVjaWZ5aW5nIG9wdGlv bnMKK2RpZmYgLS1naXQgYS9nZGIvY29tbW9uL25ldHN0dWZmLmMgYi9nZGIvY29tbW9uL25ldHN0 dWZmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvY29t bW9uL25ldHN0dWZmLmMKK0BAIC0wLDAgKzEsMTU1IEBACisrLyogT3BlcmF0aW9ucyBvbiBuZXR3 b3JrIHN0dWZmLgorKyAgIENvcHlyaWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlICJjb21tb24tZGVm cy5oIgorKyNpbmNsdWRlICJuZXRzdHVmZi5oIgorKyNpbmNsdWRlIDxhbGdvcml0aG0+CisrCisr I2lmZGVmIFVTRV9XSU4zMkFQSQorKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorKyNpbmNsdWRlIDx3 c3BpYXBpLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxh cnBhL2luZXQuaD4KKysjaW5jbHVkZSA8bmV0ZGIuaD4KKysjaW5jbHVkZSA8c3lzL3NvY2tldC5o PgorKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorKyNlbmRpZgorKworKy8qIFNlZSBjb21tb24v bmV0c3R1ZmYuaC4gICovCisrCisrc2NvcGVkX2ZyZWVfYWRkcmluZm86On5zY29wZWRfZnJlZV9h ZGRyaW5mbyAoKQorK3sKKysgIGZyZWVhZGRyaW5mbyAobV9yZXMpOworK30KKysKKysvKiBTZWUg Y29tbW9uL25ldHN0dWZmLmguICAqLworKworK3BhcnNlZF9jb25uZWN0aW9uX3NwZWMKKytwYXJz ZV9jb25uZWN0aW9uX3NwZWNfd2l0aG91dF9wcmVmaXggKHN0ZDo6c3RyaW5nIHNwZWMsIHN0cnVj dCBhZGRyaW5mbyAqaGludCkKKyt7CisrICBwYXJzZWRfY29ubmVjdGlvbl9zcGVjIHJldDsKKysg IHNpemVfdCBsYXN0X2NvbG9uX3BvcyA9IDA7CisrICAvKiBXZSdyZSBkZWFsaW5nIHdpdGggSVB2 NiBpZjoKKysKKysgICAgIC0gYWlfZmFtaWx5IGlzIEFGX0lORVQ2LCBvcgorKyAgICAgLSBhaV9m YW1pbHkgaXMgbm90IEFGX0lORVQsIGFuZAorKyAgICAgICAtIHNwZWNbMF0gaXMgJ1snLCBvcgor KyAgICAgICAtIHRoZSBudW1iZXIgb2YgJzonIG9uIHNwZWMgaXMgZ3JlYXRlciB0aGFuIDEuICAq LworKyAgYm9vbCBpc19pcHY2ID0gKGhpbnQtPmFpX2ZhbWlseSA9PSBBRl9JTkVUNgorKwkJICB8 fCAoaGludC0+YWlfZmFtaWx5ICE9IEFGX0lORVQKKysJCSAgICAgICYmIChzcGVjWzBdID09ICdb JworKwkJCSAgfHwgc3RkOjpjb3VudCAoc3BlYy5iZWdpbiAoKSwKKysJCQkJCSBzcGVjLmVuZCAo KSwgJzonKSA+IDEpKSk7CisrCisrICBpZiAoaXNfaXB2NikKKysgICAgeworKyAgICAgIGlmIChz cGVjWzBdID09ICdbJykKKysJeworKwkgIC8qIElQdjYgYWRkcmVzc2VzIGNhbiBiZSB3cml0dGVu IGFzICdbQUREUl06UE9SVCcsIGFuZCB3ZQorKwkgICAgIHN1cHBvcnQgdGhpcyBub3RhdGlvbi4g ICovCisrCSAgc2l6ZV90IGNsb3NlX2JyYWNrZXRfcG9zID0gc3BlYy5maW5kX2ZpcnN0X29mICgn XScpOworKworKwkgIGlmIChjbG9zZV9icmFja2V0X3BvcyA9PSBzdGQ6OnN0cmluZzo6bnBvcykK KysJICAgIGVycm9yIChfKCJNaXNzaW5nIGNsb3NlIGJyYWNrZXQgaW4gaG9zdG5hbWUgJyVzJyIp LAorKwkJICAgc3BlYy5jX3N0ciAoKSk7CisrCisrCSAgaGludC0+YWlfZmFtaWx5ID0gQUZfSU5F VDY7CisrCisrCSAgY29uc3QgY2hhciBjID0gc3BlY1tjbG9zZV9icmFja2V0X3BvcyArIDFdOwor KworKwkgIGlmIChjID09ICdcMCcpCisrCSAgICBsYXN0X2NvbG9uX3BvcyA9IHN0ZDo6c3RyaW5n OjpucG9zOworKwkgIGVsc2UgaWYgKGMgIT0gJzonKQorKwkgICAgZXJyb3IgKF8oIkludmFsaWQg Y3J1ZnQgYWZ0ZXIgY2xvc2UgYnJhY2tldCBpbiAnJXMnIiksCisrCQkgICBzcGVjLmNfc3RyICgp KTsKKysKKysJICAvKiBFcmFzZSBib3RoICdbJyBhbmQgJ10nLiAgKi8KKysJICBzcGVjLmVyYXNl ICgwLCAxKTsKKysJICBzcGVjLmVyYXNlIChjbG9zZV9icmFja2V0X3BvcyAtIDEsIDEpOworKwl9 CisrICAgICAgZWxzZSBpZiAoc3BlYy5maW5kX2ZpcnN0X29mICgnXScpICE9IHN0ZDo6c3RyaW5n OjpucG9zKQorKwllcnJvciAoXygiTWlzc2luZyBvcGVuIGJyYWNrZXQgaW4gaG9zdG5hbWUgJyVz JyIpLAorKwkgICAgICAgc3BlYy5jX3N0ciAoKSk7CisrICAgIH0KKysKKysgIGlmIChsYXN0X2Nv bG9uX3BvcyA9PSAwKQorKyAgICBsYXN0X2NvbG9uX3BvcyA9IHNwZWMuZmluZF9sYXN0X29mICgn OicpOworKworKyAgLyogVGhlIGxlbmd0aCBvZiB0aGUgaG9zdG5hbWUgcGFydC4gICovCisrICBz aXplX3QgaG9zdF9sZW47CisrCisrICBpZiAobGFzdF9jb2xvbl9wb3MgIT0gc3RkOjpzdHJpbmc6 Om5wb3MpCisrICAgIHsKKysgICAgICAvKiBUaGUgdXNlciBoYXMgcHJvdmlkZWQgYSBwb3J0LiAg Ki8KKysgICAgICBob3N0X2xlbiA9IGxhc3RfY29sb25fcG9zOworKyAgICAgIHJldC5wb3J0X3N0 ciA9IHNwZWMuc3Vic3RyIChsYXN0X2NvbG9uX3BvcyArIDEpOworKyAgICB9CisrICBlbHNlCisr ICAgIGhvc3RfbGVuID0gc3BlYy5zaXplICgpOworKworKyAgcmV0Lmhvc3Rfc3RyID0gc3BlYy5z dWJzdHIgKDAsIGhvc3RfbGVuKTsKKysKKysgIC8qIERlZmF1bHQgaG9zdG5hbWUgaXMgbG9jYWxo b3N0LiAgKi8KKysgIGlmIChyZXQuaG9zdF9zdHIuZW1wdHkgKCkpCisrICAgIHJldC5ob3N0X3N0 ciA9ICJsb2NhbGhvc3QiOworKworKyAgcmV0dXJuIHJldDsKKyt9CisrCisrLyogU2VlIGNvbW1v bi9uZXRzdHVmZi5oLiAgKi8KKysKKytwYXJzZWRfY29ubmVjdGlvbl9zcGVjCisrcGFyc2VfY29u bmVjdGlvbl9zcGVjIChjb25zdCBjaGFyICpzcGVjLCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnQpCisr eworKyAgLyogU3RydWN0IHRvIGhvbGQgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4gdmFsaWQgcHJl Zml4ZXMsIHRoZWlyCisrICAgICBmYW1pbHkgYW5kIHNvY2t0eXBlLiAgKi8KKysgIHN0cnVjdCBo b3N0X3ByZWZpeAorKyAgICB7CisrICAgICAgLyogVGhlIHByZWZpeC4gICovCisrICAgICAgY29u c3QgY2hhciAqcHJlZml4OworKworKyAgICAgIC8qIFRoZSAnYWlfZmFtaWx5Jy4gICovCisrICAg ICAgaW50IGZhbWlseTsKKysKKysgICAgICAvKiBUaGUgJ2FpX3NvY2t0eXBlJy4gICovCisrICAg ICAgaW50IHNvY2t0eXBlOworKyAgICB9OworKyAgc3RhdGljIGNvbnN0IHN0cnVjdCBob3N0X3By ZWZpeCBwcmVmaXhlc1tdID0KKysgICAgeworKyAgICAgIHsgInVkcDoiLCAgQUZfVU5TUEVDLCBT T0NLX0RHUkFNIH0sCisrICAgICAgeyAidGNwOiIsICBBRl9VTlNQRUMsIFNPQ0tfU1RSRUFNIH0s CisrICAgICAgeyAidWRwNDoiLCBBRl9JTkVULCAgIFNPQ0tfREdSQU0gfSwKKysgICAgICB7ICJ0 Y3A0OiIsIEFGX0lORVQsICAgU09DS19TVFJFQU0gfSwKKysgICAgICB7ICJ1ZHA2OiIsIEFGX0lO RVQ2LCAgU09DS19ER1JBTSB9LAorKyAgICAgIHsgInRjcDY6IiwgQUZfSU5FVDYsICBTT0NLX1NU UkVBTSB9LAorKyAgICB9OworKworKyAgZm9yIChjb25zdCBob3N0X3ByZWZpeCBwcmVmaXggOiBw cmVmaXhlcykKKysgICAgaWYgKHN0YXJ0c3dpdGggKHNwZWMsIHByZWZpeC5wcmVmaXgpKQorKyAg ICAgIHsKKysJc3BlYyArPSBzdHJsZW4gKHByZWZpeC5wcmVmaXgpOworKwloaW50LT5haV9mYW1p bHkgPSBwcmVmaXguZmFtaWx5OworKwloaW50LT5haV9zb2NrdHlwZSA9IHByZWZpeC5zb2NrdHlw ZTsKKysJaGludC0+YWlfcHJvdG9jb2wKKysJICA9IGhpbnQtPmFpX3NvY2t0eXBlID09IFNPQ0tf REdSQU0gPyBJUFBST1RPX1VEUCA6IElQUFJPVE9fVENQOworKwlicmVhazsKKysgICAgICB9Cisr CisrICByZXR1cm4gcGFyc2VfY29ubmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJlZml4IChzcGVjLCBo aW50KTsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9uZXRzdHVmZi5oIGIvZ2RiL2NvbW1v bi9uZXRzdHVmZi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL2NvbW1vbi9uZXRzdHVmZi5oCitAQCAtMCwwICsxLDc2IEBACisrLyogT3BlcmF0aW9ucyBv biBuZXR3b3JrIHN0dWZmLgorKyAgIENvcHlyaWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpZm5kZWYgTkVUU1RV RkZfSAorKyNkZWZpbmUgTkVUU1RVRkZfSAorKworKyNpbmNsdWRlIDxzdHJpbmc+CisrCisrLyog TGlrZSBOSV9NQVhIT1NUL05JX01BWFNFUlYsIGJ1dCBlbm91Z2ggZm9yIG51bWVyaWMgZm9ybXMu ICAqLworKyNkZWZpbmUgR0RCX05JX01BWF9BRERSIDY0CisrI2RlZmluZSBHREJfTklfTUFYX1BP UlQgMTYKKysKKysvKiBIZWxwZXIgY2xhc3MgdG8gZ3VhcmFudGVlIHRoYXQgd2UgYWx3YXlzIGNh bGwgJ2ZyZWVhZGRyaW5mbycuICAqLworKworK2NsYXNzIHNjb3BlZF9mcmVlX2FkZHJpbmZvCisr eworK3B1YmxpYzoKKysgIC8qIERlZmF1bHQgY29uc3RydWN0b3IuICAqLworKyAgZXhwbGljaXQg c2NvcGVkX2ZyZWVfYWRkcmluZm8gKHN0cnVjdCBhZGRyaW5mbyAqYWluZm8pCisrICAgIDogbV9y ZXMgKGFpbmZvKQorKyAgeworKyAgfQorKworKyAgLyogRGVzdHJ1Y3RvciByZXNwb25zaWJsZSBm b3IgZnJlZSdpbmcgTV9SRVMgYnkgY2FsbGluZworKyAgICAgJ2ZyZWVhZGRyaW5mbycuICAqLwor KyAgfnNjb3BlZF9mcmVlX2FkZHJpbmZvICgpOworKworKyAgRElTQUJMRV9DT1BZX0FORF9BU1NJ R04gKHNjb3BlZF9mcmVlX2FkZHJpbmZvKTsKKysKKytwcml2YXRlOgorKyAgLyogVGhlIGFkZHJp bmZvIHJlc291cmNlLiAgKi8KKysgIHN0cnVjdCBhZGRyaW5mbyAqbV9yZXM7CisrfTsKKysKKysv KiBUaGUgc3RydWN0IHdlIHJldHVybiBhZnRlciBwYXJzaW5nIHRoZSBjb25uZWN0aW9uIHNwZWMu ICAqLworKworK3N0cnVjdCBwYXJzZWRfY29ubmVjdGlvbl9zcGVjCisreworKyAgLyogVGhlIGhv c3RuYW1lLiAgKi8KKysgIHN0ZDo6c3RyaW5nIGhvc3Rfc3RyOworKworKyAgLyogVGhlIHBvcnQs IGlmIGFueS4gICovCisrICBzdGQ6OnN0cmluZyBwb3J0X3N0cjsKKyt9OworKworKworKy8qIFBh cnNlIFNQRUMgKHdoaWNoIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtIG9mICJBRERSOlBPUlQiKSBh bmQKKysgICByZXR1cm4gYSAncGFyc2VkX2Nvbm5lY3Rpb25fc3BlYycgc3RydWN0dXJlIHdpdGgg dGhlIHByb3BlciBmaWVsZHMKKysgICBmaWxsZWQgaW4uICBBbHNvIGFkanVzdCBISU5UIGFjY29y ZGluZ2x5LiAgKi8KKytleHRlcm4gcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYworKyAgcGFyc2VfY29u bmVjdGlvbl9zcGVjX3dpdGhvdXRfcHJlZml4IChzdGQ6OnN0cmluZyBzcGVjLAorKwkJCQkJc3Ry dWN0IGFkZHJpbmZvICpoaW50KTsKKysKKysvKiBQYXJzZSBTUEVDICh3aGljaCBpcyBhIHN0cmlu ZyBpbiB0aGUgZm9ybSBvZgorKyAgICJbdGNwWzZdOnx1ZHBbNl06XUFERFI6UE9SVCIpIGFuZCBy ZXR1cm4gYSAncGFyc2VkX2Nvbm5lY3Rpb25fc3BlYycKKysgICBzdHJ1Y3R1cmUgd2l0aCB0aGUg cHJvcGVyIGZpZWxkcyBmaWxsZWQgaW4uICBBbHNvIGFkanVzdCBISU5UCisrICAgYWNjb3JkaW5n bHkuICAqLworK2V4dGVybiBwYXJzZWRfY29ubmVjdGlvbl9zcGVjIHBhcnNlX2Nvbm5lY3Rpb25f c3BlYyAoY29uc3QgY2hhciAqc3BlYywKKysJCQkJCQkgICAgIHN0cnVjdCBhZGRyaW5mbyAqaGlu dCk7CisrCisrI2VuZGlmIC8qICEgTkVUU1RVRkZfSCAqLworZGlmZiAtLWdpdCBhL2dkYi9kb2Mv Q2hhbmdlTG9nIGIvZ2RiL2RvYy9DaGFuZ2VMb2cKKy0tLSBhL2dkYi9kb2MvQ2hhbmdlTG9nCisr KysgYi9nZGIvZG9jL0NoYW5nZUxvZworQEAgLTEsMyArMSwxMSBAQAorKzIwMTgtMDctMTEgIFNl cmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisrCSAgICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCSAgICBQYXVsIEZlcnRzZXIg IDxmZXJjZXJwYXZAZ21haWwuY29tPgorKwkgICAgVHN1dG9tdSBTZWtpICA8c2VraXJpa2lAZ21h aWwuY29tPgorKworKwkqIGdkYi50ZXhpbmZvIChSZW1vdGUgQ29ubmVjdGlvbiBDb21tYW5kcyk6 IEFkZCBleHBsYW5hdGlvbgorKwlhYm91dCBuZXcgSVB2NiBzdXBwb3J0LiAgQWRkIG5ldyBjb25u ZWN0aW9uIHByZWZpeGVzLgorKworIDIwMTgtMDctMDIgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFj cm9AbWlwcy5jb20+CisgCisgCVBSIHRkZXAvODI4MgorZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2Ri LnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZv CisrKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitAQCAtMjA1NDgsMTYgKzIwNTQ4LDI3IEBAIElm IHlvdSdyZSB1c2luZyBhIHNlcmlhbCBsaW5lLCB5b3UgbWF5IHdhbnQgdG8gZ2l2ZSBAdmFsdWV7 R0RCTn0gdGhlCisgQGNvZGV7dGFyZ2V0fSBjb21tYW5kLgorIAorIEBpdGVtIHRhcmdldCByZW1v dGUgQGNvZGV7QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBj b2Rle0B2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorIEBpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rl e3RjcDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19CisrQGl0ZW14IHRhcmdldCByZW1vdGUgQGNvZGV7 dGNwOkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rl e3RjcDQ6QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rl e3RjcDY6QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgcmVtb3RlIEBjb2Rl e3RjcDY6QHZhcntbaG9zdF19OkB2YXJ7cG9ydH19CisgQGl0ZW14IHRhcmdldCBleHRlbmRlZC1y ZW1vdGUgQGNvZGV7QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5k ZWQtcmVtb3RlIEBjb2Rle0B2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorIEBpdGVteCB0YXJnZXQg ZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19CisrQGl0ZW14 IHRhcmdldCBleHRlbmRlZC1yZW1vdGUgQGNvZGV7dGNwOkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9 fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDQ6QHZhcntob3N0fTpA dmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3RjcDY6QHZh cntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rl e3RjcDY6QHZhcntbaG9zdF19OkB2YXJ7cG9ydH19CisgQGNpbmRleCBAYWNyb255bXtUQ1B9IHBv cnQsIEBjb2Rle3RhcmdldCByZW1vdGV9CisgRGVidWcgdXNpbmcgYSBAYWNyb255bXtUQ1B9IGNv bm5lY3Rpb24gdG8gQHZhcntwb3J0fSBvbiBAdmFye2hvc3R9LgorLVRoZSBAdmFye2hvc3R9IG1h eSBiZSBlaXRoZXIgYSBob3N0IG5hbWUgb3IgYSBudW1lcmljIEBhY3Jvbnlte0lQfQorLWFkZHJl c3M7IEB2YXJ7cG9ydH0gbXVzdCBiZSBhIGRlY2ltYWwgbnVtYmVyLiAgVGhlIEB2YXJ7aG9zdH0g Y291bGQgYmUKKy10aGUgdGFyZ2V0IG1hY2hpbmUgaXRzZWxmLCBpZiBpdCBpcyBkaXJlY3RseSBj b25uZWN0ZWQgdG8gdGhlIG5ldCwgb3IKKy1pdCBtaWdodCBiZSBhIHRlcm1pbmFsIHNlcnZlciB3 aGljaCBpbiB0dXJuIGhhcyBhIHNlcmlhbCBsaW5lIHRvIHRoZQorLXRhcmdldC4KKytUaGUgQHZh cntob3N0fSBtYXkgYmUgZWl0aGVyIGEgaG9zdCBuYW1lLCBhIG51bWVyaWMgQGFjcm9ueW17SVB2 NH0KKythZGRyZXNzLCBvciBhIG51bWVyaWMgQGFjcm9ueW17SVB2Nn0gYWRkcmVzcyAod2l0aCBv ciB3aXRob3V0IHRoZQorK3NxdWFyZSBicmFja2V0cyB0byBzZXBhcmF0ZSB0aGUgYWRkcmVzcyBm cm9tIHRoZSBwb3J0KTsgQHZhcntwb3J0fQorK211c3QgYmUgYSBkZWNpbWFsIG51bWJlci4gIFRo ZSBAdmFye2hvc3R9IGNvdWxkIGJlIHRoZSB0YXJnZXQgbWFjaGluZQorK2l0c2VsZiwgaWYgaXQg aXMgZGlyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBuZXQsIG9yIGl0IG1pZ2h0IGJlIGEKKyt0ZXJt aW5hbCBzZXJ2ZXIgd2hpY2ggaW4gdHVybiBoYXMgYSBzZXJpYWwgbGluZSB0byB0aGUgdGFyZ2V0 LgorIAorIEZvciBleGFtcGxlLCB0byBjb25uZWN0IHRvIHBvcnQgMjgyOCBvbiBhIHRlcm1pbmFs IHNlcnZlciBuYW1lZAorIEBjb2Rle21hbnlmYXJtc306CitAQCAtMjA1NjYsNiArMjA1NzcsMjgg QEAgRm9yIGV4YW1wbGUsIHRvIGNvbm5lY3QgdG8gcG9ydCAyODI4IG9uIGEgdGVybWluYWwgc2Vy dmVyIG5hbWVkCisgdGFyZ2V0IHJlbW90ZSBtYW55ZmFybXM6MjgyOAorIEBlbmQgc21hbGxleGFt cGxlCisgCisrVG8gY29ubmVjdCB0byBwb3J0IDI4Mjggb24gYSB0ZXJtaW5hbCBzZXJ2ZXIgd2hv c2UgYWRkcmVzcyBpcworK0Bjb2RlezIwMDE6MGRiODo4NWEzOjAwMDA6MDAwMDo4YTJlOjAzNzA6 NzMzNH0sIHlvdSBjYW4gZWl0aGVyIHVzZSB0aGUKKytzcXVhcmUgYnJhY2tldCBzeW50YXg6Cisr CisrQHNtYWxsZXhhbXBsZQorK3RhcmdldCByZW1vdGUgWzIwMDE6MGRiODo4NWEzOjAwMDA6MDAw MDo4YTJlOjAzNzA6NzMzNF06MjgyOAorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQG5vaW5kZW50 Cisrb3IgZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBAYWNyb255bXtJUHY2fSBwcm90b2NvbDoKKysK KytAc21hbGxleGFtcGxlCisrdGFyZ2V0IHJlbW90ZSB0Y3A2OjIwMDE6MGRiODo4NWEzOjAwMDA6 MDAwMDo4YTJlOjAzNzA6NzMzNDoyODI4CisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytUaGlzIGxh c3QgZXhhbXBsZSBtYXkgYmUgY29uZnVzaW5nIHRvIHRoZSByZWFkZXIsIGJlY2F1c2UgdGhlcmUg aXMgbm8KKyt2aXNpYmxlIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgaG9zdG5hbWUgYW5kIHRoZSBw b3J0IG51bWJlci4KKytUaGVyZWZvcmUsIHdlIHJlY29tbWVuZCB0aGUgdXNlciB0byBwcm92aWRl IEBhY3Jvbnlte0lQdjZ9IGFkZHJlc3NlcworK3VzaW5nIHNxdWFyZSBicmFja2V0cyBmb3IgY2xh cml0eS4gIEhvd2V2ZXIsIGl0IGlzIGltcG9ydGFudCB0bworK21lbnRpb24gdGhhdCBmb3IgQHZh bHVle0dEQk59IHRoZXJlIGlzIG5vIGFtYmlndWl0eTogdGhlIG51bWJlciBhZnRlcgorK3RoZSBs YXN0IGNvbG9uIGlzIGNvbnNpZGVyZWQgdG8gYmUgdGhlIHBvcnQgbnVtYmVyLgorKworIElmIHlv dXIgcmVtb3RlIHRhcmdldCBpcyBhY3R1YWxseSBydW5uaW5nIG9uIHRoZSBzYW1lIG1hY2hpbmUg YXMgeW91cgorIGRlYnVnZ2VyIHNlc3Npb24gKGUuZy5AOiBhIHNpbXVsYXRvciBmb3IgeW91ciB0 YXJnZXQgcnVubmluZyBvbiB0aGUKKyBzYW1lIGhvc3QpLCB5b3UgY2FuIG9taXQgdGhlIGhvc3Ru YW1lLiAgRm9yIGV4YW1wbGUsIHRvIGNvbm5lY3QgdG8KK0BAIC0yMDU3OSw3ICsyMDYxMiwxNSBA QCB0YXJnZXQgcmVtb3RlIDoxMjM0CisgTm90ZSB0aGF0IHRoZSBjb2xvbiBpcyBzdGlsbCByZXF1 aXJlZCBoZXJlLgorIAorIEBpdGVtIHRhcmdldCByZW1vdGUgQGNvZGV7dWRwOkB2YXJ7aG9zdH06 QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IHJlbW90ZSBAY29kZXt1ZHA6QHZhcntbaG9zdF19 OkB2YXJ7cG9ydH19CisrQGl0ZW14IHRhcmdldCByZW1vdGUgQGNvZGV7dWRwNDpAdmFye2hvc3R9 OkB2YXJ7cG9ydH19CisrQGl0ZW14IHRhcmdldCByZW1vdGUgQGNvZGV7dWRwNjpAdmFye1tob3N0 XX06QHZhcntwb3J0fX0KKytAaXRlbXggdGFyZ2V0IGV4dGVuZGVkLXJlbW90ZSBAY29kZXt1ZHA6 QHZhcntob3N0fTpAdmFye3BvcnR9fQorIEBpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBj b2Rle3VkcDpAdmFye2hvc3R9OkB2YXJ7cG9ydH19CisrQGl0ZW14IHRhcmdldCBleHRlbmRlZC1y ZW1vdGUgQGNvZGV7dWRwOkB2YXJ7W2hvc3RdfTpAdmFye3BvcnR9fQorK0BpdGVteCB0YXJnZXQg ZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDQ6QHZhcntob3N0fTpAdmFye3BvcnR9fQorK0BpdGVt eCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDY6QHZhcntob3N0fTpAdmFye3BvcnR9 fQorK0BpdGVteCB0YXJnZXQgZXh0ZW5kZWQtcmVtb3RlIEBjb2Rle3VkcDY6QHZhcntbaG9zdF19 OkB2YXJ7cG9ydH19CisgQGNpbmRleCBAYWNyb255bXtVRFB9IHBvcnQsIEBjb2Rle3RhcmdldCBy ZW1vdGV9CisgRGVidWcgdXNpbmcgQGFjcm9ueW17VURQfSBwYWNrZXRzIHRvIEB2YXJ7cG9ydH0g b24gQHZhcntob3N0fS4gIEZvciBleGFtcGxlLCB0bworIGNvbm5lY3QgdG8gQGFjcm9ueW17VURQ fSBwb3J0IDI4Mjggb24gYSB0ZXJtaW5hbCBzZXJ2ZXIgbmFtZWQgQGNvZGV7bWFueWZhcm1zfToK K2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZyBiL2dkYi9nZGJzZXJ2ZXIvQ2hh bmdlTG9nCistLS0gYS9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZworKysrIGIvZ2RiL2dkYnNlcnZl ci9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMjIgQEAKKysyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdh biBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKwkgICAgUGF1bCBGZXJ0c2VyICA8ZmVyY2VycGF2 QGdtYWlsLmNvbT4KKysJICAgIFRzdXRvbXUgU2VraSAgPHNla2lyaWtpQGdtYWlsLmNvbT4KKysK KysJKiBNYWtlZmlsZS5pbiAoU0ZJTEVTKTogQWRkICckKHNyY2RpcikvY29tbW9uL25ldHN0dWZm LmMnLgorKwkoT0JTKTogQWRkICdjb21tb24vbmV0c3R1ZmYubycuCisrCShHREJSRVBMQVlfT0JT KTogTGlrZXdpc2UuCisrCSogZ2RicmVwbGF5LmM6IEluY2x1ZGUgJ3dzcGlhcGkuaCcgYW5kICdu ZXRzdHVmZi5oJy4KKysJKHJlbW90ZV9vcGVuKTogSW1wbGVtZW50IHN1cHBvcnQgZm9yIElQdjYK KysJY29ubmVjdGlvbnMuCisrCSogcmVtb3RlLXV0aWxzLmM6IEluY2x1ZGUgJ25ldHN0dWZmLmgn LCAnZmlsZXN0dWZmLmgnCisrCWFuZCAnd3NwaWFwaS5oJy4KKysJKGhhbmRsZV9hY2NlcHRfZXZl bnQpOiBBY2NlcHQgY29ubmVjdGlvbnMgZnJvbSBJUHY2IHNvdXJjZXMuCisrCShyZW1vdGVfcHJl cGFyZSk6IEhhbmRsZSBJUHY2LXN0eWxlIGhvc3RuYW1lczsgaW1wbGVtZW50CisrCXN1cHBvcnQg Zm9yIElQdjYgY29ubmVjdGlvbnMuCisrCShyZW1vdGVfb3Blbik6IEltcGxlbWVudCBzdXBwb3J0 IGZvciBwcmludGluZyBjb25uZWN0aW9ucyBmcm9tCisrCUlQdjYgc291cmNlcy4KKysKKyAyMDE4 LTA3LTExICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgorIAorIAlQUiBnZGIvMjMz NzcKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIGIvZ2RiL2dkYnNlcnZl ci9NYWtlZmlsZS5pbgorLS0tIGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgorKysrIGIvZ2Ri L2dkYnNlcnZlci9NYWtlZmlsZS5pbgorQEAgLTIxMSw2ICsyMTEsNyBAQCBTRklMRVMgPSBcCisg CSQoc3JjZGlyKS9jb21tb24vam9iLWNvbnRyb2wuYyBcCisgCSQoc3JjZGlyKS9jb21tb24vZ2Ri X3RpbGRlX2V4cGFuZC5jIFwKKyAJJChzcmNkaXIpL2NvbW1vbi9nZGJfdmVjcy5jIFwKKysJJChz cmNkaXIpL2NvbW1vbi9uZXRzdHVmZi5jIFwKKyAJJChzcmNkaXIpL2NvbW1vbi9uZXctb3AuYyBc CisgCSQoc3JjZGlyKS9jb21tb24vcGF0aHN0dWZmLmMgXAorIAkkKHNyY2RpcikvY29tbW9uL3By aW50LXV0aWxzLmMgXAorQEAgLTI1NCw2ICsyNTUsNyBAQCBPQlMgPSBcCisgCWNvbW1vbi9mb3Jt YXQubyBcCisgCWNvbW1vbi9nZGJfdGlsZGVfZXhwYW5kLm8gXAorIAljb21tb24vZ2RiX3ZlY3Mu byBcCisrCWNvbW1vbi9uZXRzdHVmZi5vIFwKKyAJY29tbW9uL25ldy1vcC5vIFwKKyAJY29tbW9u L3BhdGhzdHVmZi5vIFwKKyAJY29tbW9uL3ByaW50LXV0aWxzLm8gXAorQEAgLTI5MCw2ICsyOTIs NyBAQCBHREJSRVBMQVlfT0JTID0gXAorIAljb21tb24vY29tbW9uLWV4Y2VwdGlvbnMubyBcCisg CWNvbW1vbi9jb21tb24tdXRpbHMubyBcCisgCWNvbW1vbi9lcnJvcnMubyBcCisrCWNvbW1vbi9u ZXRzdHVmZi5vIFwKKyAJY29tbW9uL3ByaW50LXV0aWxzLm8gXAorIAlnZGJyZXBsYXkubyBcCisg CXV0aWxzLm8gXAorZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvZ2RicmVwbGF5LmMgYi9nZGIv Z2Ric2VydmVyL2dkYnJlcGxheS5jCistLS0gYS9nZGIvZ2Ric2VydmVyL2dkYnJlcGxheS5jCisr KysgYi9nZGIvZ2Ric2VydmVyL2dkYnJlcGxheS5jCitAQCAtNDYsOCArNDYsMTEgQEAKKyAKKyAj aWYgVVNFX1dJTjMyQVBJCisgI2luY2x1ZGUgPHdpbnNvY2syLmg+CisrI2luY2x1ZGUgPHdzcGlh cGkuaD4KKyAjZW5kaWYKKyAKKysjaW5jbHVkZSAibmV0c3R1ZmYuaCIKKysKKyAjaWZuZGVmIEhB VkVfU09DS0xFTl9UCisgdHlwZWRlZiBpbnQgc29ja2xlbl90OworICNlbmRpZgorQEAgLTE0Miw1 NiArMTQ1LDEwOCBAQCByZW1vdGVfY2xvc2UgKHZvaWQpCisgc3RhdGljIHZvaWQKKyByZW1vdGVf b3BlbiAoY2hhciAqbmFtZSkKKyB7CistICBpZiAoIXN0cmNociAobmFtZSwgJzonKSkKKysgIGNo YXIgKmxhc3RfY29sb24gPSBzdHJyY2hyIChuYW1lLCAnOicpOworKworKyAgaWYgKGxhc3RfY29s b24gPT0gTlVMTCkKKyAgICAgeworICAgICAgIGZwcmludGYgKHN0ZGVyciwgIiVzOiBNdXN0IHNw ZWNpZnkgdGNwIGNvbm5lY3Rpb24gYXMgaG9zdDphZGRyXG4iLCBuYW1lKTsKKyAgICAgICBmZmx1 c2ggKHN0ZGVycik7CisgICAgICAgZXhpdCAoMSk7CisgICAgIH0KKy0gIGVsc2UKKy0gICAgewor KworICNpZmRlZiBVU0VfV0lOMzJBUEkKKy0gICAgICBzdGF0aWMgaW50IHdpbnNvY2tfaW5pdGlh bGl6ZWQ7CisrICBzdGF0aWMgaW50IHdpbnNvY2tfaW5pdGlhbGl6ZWQ7CisgI2VuZGlmCistICAg ICAgY2hhciAqcG9ydF9zdHI7CistICAgICAgaW50IHBvcnQ7CistICAgICAgc3RydWN0IHNvY2th ZGRyX2luIHNvY2thZGRyOworLSAgICAgIHNvY2tsZW5fdCB0bXA7CistICAgICAgaW50IHRtcF9k ZXNjOworKyAgY2hhciAqcG9ydF9zdHI7CisrICBpbnQgdG1wOworKyAgaW50IHRtcF9kZXNjOwor KyAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7CisrICBzdHJ1Y3QgYWRkcmluZm8gKmFpbmZvOworIAor LSAgICAgIHBvcnRfc3RyID0gc3RyY2hyIChuYW1lLCAnOicpOworKyAgbWVtc2V0ICgmaGludCwg MCwgc2l6ZW9mIChoaW50KSk7CisrICAvKiBBc3N1bWUgbm8gcHJlZml4IHdpbGwgYmUgcGFzc2Vk LCB0aGVyZWZvcmUgd2Ugc2hvdWxkIHVzZQorKyAgICAgQUZfVU5TUEVDLiAgKi8KKysgIGhpbnQu YWlfZmFtaWx5ID0gQUZfVU5TUEVDOworKyAgaGludC5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFN OworKyAgaGludC5haV9wcm90b2NvbCA9IElQUFJPVE9fVENQOworIAorLSAgICAgIHBvcnQgPSBh dG9pIChwb3J0X3N0ciArIDEpOworKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZWQgPSBw YXJzZV9jb25uZWN0aW9uX3NwZWMgKG5hbWUsICZoaW50KTsKKysKKysgIGlmIChwYXJzZWQucG9y dF9zdHIuZW1wdHkgKCkpCisrICAgIGVycm9yIChfKCJNaXNzaW5nIHBvcnQgb24gaG9zdG5hbWUg JyVzJyIpLCBuYW1lKTsKKyAKKyAjaWZkZWYgVVNFX1dJTjMyQVBJCistICAgICAgaWYgKCF3aW5z b2NrX2luaXRpYWxpemVkKQorLQl7CistCSAgV1NBREFUQSB3c2FkOworKyAgaWYgKCF3aW5zb2Nr X2luaXRpYWxpemVkKQorKyAgICB7CisrICAgICAgV1NBREFUQSB3c2FkOworIAorLQkgIFdTQVN0 YXJ0dXAgKE1BS0VXT1JEICgxLCAwKSwgJndzYWQpOworLQkgIHdpbnNvY2tfaW5pdGlhbGl6ZWQg PSAxOworLQl9CisrICAgICAgV1NBU3RhcnR1cCAoTUFLRVdPUkQgKDEsIDApLCAmd3NhZCk7Cisr ICAgICAgd2luc29ja19pbml0aWFsaXplZCA9IDE7CisrICAgIH0KKyAjZW5kaWYKKyAKKy0gICAg ICB0bXBfZGVzYyA9IHNvY2tldCAoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOworLSAgICAgIGlm ICh0bXBfZGVzYyA9PSAtMSkKKy0JcGVycm9yX3dpdGhfbmFtZSAoIkNhbid0IG9wZW4gc29ja2V0 Iik7CisrICBpbnQgciA9IGdldGFkZHJpbmZvIChwYXJzZWQuaG9zdF9zdHIuY19zdHIgKCksIHBh cnNlZC5wb3J0X3N0ci5jX3N0ciAoKSwKKysJCSAgICAgICAmaGludCwgJmFpbmZvKTsKKyAKKy0g ICAgICAvKiBBbGxvdyByYXBpZCByZXVzZSBvZiB0aGlzIHBvcnQuICovCistICAgICAgdG1wID0g MTsKKy0gICAgICBzZXRzb2Nrb3B0ICh0bXBfZGVzYywgU09MX1NPQ0tFVCwgU09fUkVVU0VBRERS LCAoY2hhciAqKSAmdG1wLAorLQkJICBzaXplb2YgKHRtcCkpOworKyAgaWYgKHIgIT0gMCkKKysg ICAgeworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiBjYW5ub3QgcmVzb2x2ZSBuYW1l OiAlc1xuIiwKKysJICAgICAgIHBhcnNlZC5ob3N0X3N0ci5jX3N0ciAoKSwgcGFyc2VkLnBvcnRf c3RyLmNfc3RyICgpLAorKwkgICAgICAgZ2FpX3N0cmVycm9yIChyKSk7CisrICAgICAgZmZsdXNo IChzdGRlcnIpOworKyAgICAgIGV4aXQgKDEpOworKyAgICB9CisrCisrICBzY29wZWRfZnJlZV9h ZGRyaW5mbyBmcmVlX2FpbmZvIChhaW5mbyk7CisrCisrICBzdHJ1Y3QgYWRkcmluZm8gKnA7Cisr CisrICBmb3IgKHAgPSBhaW5mbzsgcCAhPSBOVUxMOyBwID0gcC0+YWlfbmV4dCkKKysgICAgewor KyAgICAgIHRtcF9kZXNjID0gc29ja2V0IChwLT5haV9mYW1pbHksIHAtPmFpX3NvY2t0eXBlLCBw LT5haV9wcm90b2NvbCk7CisgCistICAgICAgc29ja2FkZHIuc2luX2ZhbWlseSA9IFBGX0lORVQ7 CistICAgICAgc29ja2FkZHIuc2luX3BvcnQgPSBodG9ucyAocG9ydCk7CistICAgICAgc29ja2Fk ZHIuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKKysgICAgICBpZiAodG1wX2Rlc2MgPj0g MCkKKysJYnJlYWs7CisrICAgIH0KKysKKysgIGlmIChwID09IE5VTEwpCisrICAgIHBlcnJvcl93 aXRoX25hbWUgKCJDYW5ub3Qgb3BlbiBzb2NrZXQiKTsKKyAKKy0gICAgICBpZiAoYmluZCAodG1w X2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCBzaXplb2YgKHNvY2thZGRyKSkK Ky0JICB8fCBsaXN0ZW4gKHRtcF9kZXNjLCAxKSkKKy0JcGVycm9yX3dpdGhfbmFtZSAoIkNhbid0 IGJpbmQgYWRkcmVzcyIpOworKyAgLyogQWxsb3cgcmFwaWQgcmV1c2Ugb2YgdGhpcyBwb3J0LiAq LworKyAgdG1wID0gMTsKKysgIHNldHNvY2tvcHQgKHRtcF9kZXNjLCBTT0xfU09DS0VULCBTT19S RVVTRUFERFIsIChjaGFyICopICZ0bXAsCisrCSAgICAgIHNpemVvZiAodG1wKSk7CisrCisrICBz d2l0Y2ggKHAtPmFpX2ZhbWlseSkKKysgICAgeworKyAgICBjYXNlIEFGX0lORVQ6CisrICAgICAg KChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgcC0+YWlfYWRkciktPnNpbl9hZGRyLnNfYWRkciA9IElO QUREUl9BTlk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgQUZfSU5FVDY6CisrICAgICAgKChz dHJ1Y3Qgc29ja2FkZHJfaW42ICopIHAtPmFpX2FkZHIpLT5zaW42X2FkZHIgPSBpbjZhZGRyX2Fu eTsKKysgICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICBmcHJpbnRmIChzdGRlcnIs ICJJbnZhbGlkICdhaV9mYW1pbHknICVkXG4iLCBwLT5haV9mYW1pbHkpOworKyAgICAgIGV4aXQg KDEpOworKyAgICB9CisrCisrICBpZiAoYmluZCAodG1wX2Rlc2MsIHAtPmFpX2FkZHIsIHAtPmFp X2FkZHJsZW4pICE9IDApCisrICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBiaW5kIGFkZHJl c3MiKTsKKysKKysgIGlmIChwLT5haV9zb2NrdHlwZSA9PSBTT0NLX0RHUkFNKQorKyAgICByZW1v dGVfZGVzYyA9IHRtcF9kZXNjOworKyAgZWxzZQorKyAgICB7CisrICAgICAgc3RydWN0IHNvY2th ZGRyX3N0b3JhZ2Ugc29ja2FkZHI7CisrICAgICAgc29ja2xlbl90IHNvY2thZGRyc2l6ZSA9IHNp emVvZiAoc29ja2FkZHIpOworKyAgICAgIGNoYXIgb3JpZ19ob3N0W0dEQl9OSV9NQVhfQUREUl0s IG9yaWdfcG9ydFtHREJfTklfTUFYX1BPUlRdOworKworKyAgICAgIGlmIChsaXN0ZW4gKHRtcF9k ZXNjLCAxKSAhPSAwKQorKwlwZXJyb3Jfd2l0aF9uYW1lICgiQ2FuJ3QgbGlzdGVuIG9uIHNvY2tl dCIpOworKworKyAgICAgIHJlbW90ZV9kZXNjID0gYWNjZXB0ICh0bXBfZGVzYywgKHN0cnVjdCBz b2NrYWRkciAqKSAmc29ja2FkZHIsCisrCQkJICAgICZzb2NrYWRkcnNpemUpOworIAorLSAgICAg IHRtcCA9IHNpemVvZiAoc29ja2FkZHIpOworLSAgICAgIHJlbW90ZV9kZXNjID0gYWNjZXB0ICh0 bXBfZGVzYywgKHN0cnVjdCBzb2NrYWRkciAqKSAmc29ja2FkZHIsICZ0bXApOworICAgICAgIGlm IChyZW1vdGVfZGVzYyA9PSAtMSkKKyAJcGVycm9yX3dpdGhfbmFtZSAoIkFjY2VwdCBmYWlsZWQi KTsKKyAKK0BAIC0yMDYsNiArMjYxLDE2IEBAIHJlbW90ZV9vcGVuIChjaGFyICpuYW1lKQorICAg ICAgIHNldHNvY2tvcHQgKHJlbW90ZV9kZXNjLCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksCisg CQkgIChjaGFyICopICZ0bXAsIHNpemVvZiAodG1wKSk7CisgCisrICAgICAgaWYgKGdldG5hbWVp bmZvICgoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgc29ja2FkZHJzaXplLAorKwkJICAg ICAgIG9yaWdfaG9zdCwgc2l6ZW9mIChvcmlnX2hvc3QpLAorKwkJICAgICAgIG9yaWdfcG9ydCwg c2l6ZW9mIChvcmlnX3BvcnQpLAorKwkJICAgICAgIE5JX05VTUVSSUNIT1NUIHwgTklfTlVNRVJJ Q1NFUlYpID09IDApCisrCXsKKysJICBmcHJpbnRmIChzdGRlcnIsICJSZW1vdGUgZGVidWdnaW5n IGZyb20gaG9zdCAlcywgcG9ydCAlc1xuIiwKKysJCSAgIG9yaWdfaG9zdCwgb3JpZ19wb3J0KTsK KysJICBmZmx1c2ggKHN0ZGVycik7CisrCX0KKysKKyAjaWZuZGVmIFVTRV9XSU4zMkFQSQorICAg ICAgIGNsb3NlICh0bXBfZGVzYyk7CQkvKiBObyBsb25nZXIgbmVlZCB0aGlzICovCisgCitkaWZm IC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9yZW1vdGUtdXRpbHMuYyBiL2dkYi9nZGJzZXJ2ZXIvcmVt b3RlLXV0aWxzLmMKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMKKysrKyBiL2dk Yi9nZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMKK0BAIC0yNiw2ICsyNiw4IEBACisgI2luY2x1ZGUg ImRsbC5oIgorICNpbmNsdWRlICJyc3AtbG93LmgiCisgI2luY2x1ZGUgImdkYnRocmVhZC5oIgor KyNpbmNsdWRlICJuZXRzdHVmZi5oIgorKyNpbmNsdWRlICJmaWxlc3R1ZmYuaCIKKyAjaW5jbHVk ZSA8Y3R5cGUuaD4KKyAjaWYgSEFWRV9TWVNfSU9DVExfSAorICNpbmNsdWRlIDxzeXMvaW9jdGwu aD4KK0BAIC02Myw2ICs2NSw3IEBACisgCisgI2lmIFVTRV9XSU4zMkFQSQorICNpbmNsdWRlIDx3 aW5zb2NrMi5oPgorKyNpbmNsdWRlIDx3c3BpYXBpLmg+CisgI2VuZGlmCisgCisgI2lmIF9fUU5Y X18KK0BAIC0xNTEsMTkgKzE1NCwxOCBAQCBlbmFibGVfYXN5bmNfbm90aWZpY2F0aW9uIChpbnQg ZmQpCisgc3RhdGljIGludAorIGhhbmRsZV9hY2NlcHRfZXZlbnQgKGludCBlcnIsIGdkYl9jbGll bnRfZGF0YSBjbGllbnRfZGF0YSkKKyB7CistICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7 CistICBzb2NrbGVuX3QgdG1wOworKyAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc29ja2FkZHI7 CisrICBzb2NrbGVuX3QgbGVuID0gc2l6ZW9mIChzb2NrYWRkcik7CisgCisgICBpZiAoZGVidWdf dGhyZWFkcykKKyAgICAgZGVidWdfcHJpbnRmICgiaGFuZGxpbmcgcG9zc2libGUgYWNjZXB0IGV2 ZW50XG4iKTsKKyAKKy0gIHRtcCA9IHNpemVvZiAoc29ja2FkZHIpOworLSAgcmVtb3RlX2Rlc2Mg PSBhY2NlcHQgKGxpc3Rlbl9kZXNjLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRkciwgJnRt cCk7CisrICByZW1vdGVfZGVzYyA9IGFjY2VwdCAobGlzdGVuX2Rlc2MsIChzdHJ1Y3Qgc29ja2Fk ZHIgKikgJnNvY2thZGRyLCAmbGVuKTsKKyAgIGlmIChyZW1vdGVfZGVzYyA9PSAtMSkKKyAgICAg cGVycm9yX3dpdGhfbmFtZSAoIkFjY2VwdCBmYWlsZWQiKTsKKyAKKyAgIC8qIEVuYWJsZSBUQ1Ag a2VlcCBhbGl2ZSBwcm9jZXNzLiAqLworLSAgdG1wID0gMTsKKysgIHNvY2tsZW5fdCB0bXAgPSAx OworICAgc2V0c29ja29wdCAocmVtb3RlX2Rlc2MsIFNPTF9TT0NLRVQsIFNPX0tFRVBBTElWRSwK KyAJICAgICAgKGNoYXIgKikgJnRtcCwgc2l6ZW9mICh0bXApKTsKKyAKK0BAIC0xOTIsOCArMTk0 LDE5IEBAIGhhbmRsZV9hY2NlcHRfZXZlbnQgKGludCBlcnIsIGdkYl9jbGllbnRfZGF0YSBjbGll bnRfZGF0YSkKKyAgIGRlbGV0ZV9maWxlX2hhbmRsZXIgKGxpc3Rlbl9kZXNjKTsKKyAKKyAgIC8q IENvbnZlcnQgSVAgYWRkcmVzcyB0byBzdHJpbmcuICAqLworLSAgZnByaW50ZiAoc3RkZXJyLCAi UmVtb3RlIGRlYnVnZ2luZyBmcm9tIGhvc3QgJXNcbiIsCistCSAgIGluZXRfbnRvYSAoc29ja2Fk ZHIuc2luX2FkZHIpKTsKKysgIGNoYXIgb3JpZ19ob3N0W0dEQl9OSV9NQVhfQUREUl0sIG9yaWdf cG9ydFtHREJfTklfTUFYX1BPUlRdOworKworKyAgaW50IHIgPSBnZXRuYW1laW5mbyAoKHN0cnVj dCBzb2NrYWRkciAqKSAmc29ja2FkZHIsIGxlbiwKKysJCSAgICAgICBvcmlnX2hvc3QsIHNpemVv ZiAob3JpZ19ob3N0KSwKKysJCSAgICAgICBvcmlnX3BvcnQsIHNpemVvZiAob3JpZ19wb3J0KSwK KysJCSAgICAgICBOSV9OVU1FUklDSE9TVCB8IE5JX05VTUVSSUNTRVJWKTsKKysKKysgIGlmIChy ICE9IDApCisrICAgIGZwcmludGYgKHN0ZGVyciwgXygiQ291bGQgbm90IG9idGFpbiByZW1vdGUg YWRkcmVzczogJXNcbiIpLAorKwkgICAgIGdhaV9zdHJlcnJvciAocikpOworKyAgZWxzZQorKyAg ICBmcHJpbnRmIChzdGRlcnIsIF8oIlJlbW90ZSBkZWJ1Z2dpbmcgZnJvbSBob3N0ICVzLCBwb3J0 ICVzXG4iKSwKKysJICAgICBvcmlnX2hvc3QsIG9yaWdfcG9ydCk7CisgCisgICBlbmFibGVfYXN5 bmNfbm90aWZpY2F0aW9uIChyZW1vdGVfZGVzYyk7CisgCitAQCAtMjIyLDEwICsyMzUsNyBAQCBy ZW1vdGVfcHJlcGFyZSAoY29uc3QgY2hhciAqbmFtZSkKKyAjaWZkZWYgVVNFX1dJTjMyQVBJCisg ICBzdGF0aWMgaW50IHdpbnNvY2tfaW5pdGlhbGl6ZWQ7CisgI2VuZGlmCistICBpbnQgcG9ydDsK Ky0gIHN0cnVjdCBzb2NrYWRkcl9pbiBzb2NrYWRkcjsKKyAgIHNvY2tsZW5fdCB0bXA7CistICBj aGFyICpwb3J0X2VuZDsKKyAKKyAgIHJlbW90ZV9pc19zdGRpbyA9IDA7CisgICBpZiAoc3RyY21w IChuYW1lLCBTVERJT19DT05ORUNUSU9OX05BTUUpID09IDApCitAQCAtMjM4LDE3ICsyNDgsMjUg QEAgcmVtb3RlX3ByZXBhcmUgKGNvbnN0IGNoYXIgKm5hbWUpCisgICAgICAgcmV0dXJuOworICAg ICB9CisgCistICBwb3J0X3N0ciA9IHN0cmNociAobmFtZSwgJzonKTsKKy0gIGlmIChwb3J0X3N0 ciA9PSBOVUxMKQorKyAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7CisrICBzdHJ1Y3QgYWRkcmluZm8g KmFpbmZvOworKworKyAgbWVtc2V0ICgmaGludCwgMCwgc2l6ZW9mIChoaW50KSk7CisrICAvKiBB c3N1bWUgbm8gcHJlZml4IHdpbGwgYmUgcGFzc2VkLCB0aGVyZWZvcmUgd2Ugc2hvdWxkIHVzZQor KyAgICAgQUZfVU5TUEVDLiAgKi8KKysgIGhpbnQuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOworKyAg aGludC5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworKyAgaGludC5haV9wcm90b2NvbCA9IElQ UFJPVE9fVENQOworKworKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZWQKKysgICAgPSBw YXJzZV9jb25uZWN0aW9uX3NwZWNfd2l0aG91dF9wcmVmaXggKG5hbWUsICZoaW50KTsKKysKKysg IGlmIChwYXJzZWQucG9ydF9zdHIuZW1wdHkgKCkpCisgICAgIHsKKyAgICAgICBjcy50cmFuc3Bv cnRfaXNfcmVsaWFibGUgPSAwOworICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgcG9ydCA9 IHN0cnRvdWwgKHBvcnRfc3RyICsgMSwgJnBvcnRfZW5kLCAxMCk7CistICBpZiAocG9ydF9zdHJb MV0gPT0gJ1wwJyB8fCAqcG9ydF9lbmQgIT0gJ1wwJykKKy0gICAgZXJyb3IgKCJCYWQgcG9ydCBh cmd1bWVudDogJXMiLCBuYW1lKTsKKy0KKyAjaWZkZWYgVVNFX1dJTjMyQVBJCisgICBpZiAoIXdp bnNvY2tfaW5pdGlhbGl6ZWQpCisgICAgIHsKK0BAIC0yNTksOCArMjc3LDI2IEBAIHJlbW90ZV9w cmVwYXJlIChjb25zdCBjaGFyICpuYW1lKQorICAgICB9CisgI2VuZGlmCisgCistICBsaXN0ZW5f ZGVzYyA9IHNvY2tldCAoUEZfSU5FVCwgU09DS19TVFJFQU0sIElQUFJPVE9fVENQKTsKKy0gIGlm IChsaXN0ZW5fZGVzYyA9PSAtMSkKKysgIGludCByID0gZ2V0YWRkcmluZm8gKHBhcnNlZC5ob3N0 X3N0ci5jX3N0ciAoKSwgcGFyc2VkLnBvcnRfc3RyLmNfc3RyICgpLAorKwkJICAgICAgICZoaW50 LCAmYWluZm8pOworKworKyAgaWYgKHIgIT0gMCkKKysgICAgZXJyb3IgKF8oIiVzOiBjYW5ub3Qg cmVzb2x2ZSBuYW1lOiAlcyIpLCBuYW1lLCBnYWlfc3RyZXJyb3IgKHIpKTsKKysKKysgIHNjb3Bl ZF9mcmVlX2FkZHJpbmZvIGZyZWVhZGRyaW5mbyAoYWluZm8pOworKworKyAgc3RydWN0IGFkZHJp bmZvICppdGVyOworKworKyAgZm9yIChpdGVyID0gYWluZm87IGl0ZXIgIT0gTlVMTDsgaXRlciA9 IGl0ZXItPmFpX25leHQpCisrICAgIHsKKysgICAgICBsaXN0ZW5fZGVzYyA9IGdkYl9zb2NrZXRf Y2xvZXhlYyAoaXRlci0+YWlfZmFtaWx5LCBpdGVyLT5haV9zb2NrdHlwZSwKKysJCQkJCWl0ZXIt PmFpX3Byb3RvY29sKTsKKysKKysgICAgICBpZiAobGlzdGVuX2Rlc2MgPj0gMCkKKysJYnJlYWs7 CisrICAgIH0KKysKKysgIGlmIChpdGVyID09IE5VTEwpCisgICAgIHBlcnJvcl93aXRoX25hbWUg KCJDYW4ndCBvcGVuIHNvY2tldCIpOworIAorICAgLyogQWxsb3cgcmFwaWQgcmV1c2Ugb2YgdGhp cyBwb3J0LiAqLworQEAgLTI2OCwxNCArMzA0LDI1IEBAIHJlbW90ZV9wcmVwYXJlIChjb25zdCBj aGFyICpuYW1lKQorICAgc2V0c29ja29wdCAobGlzdGVuX2Rlc2MsIFNPTF9TT0NLRVQsIFNPX1JF VVNFQUREUiwgKGNoYXIgKikgJnRtcCwKKyAJICAgICAgc2l6ZW9mICh0bXApKTsKKyAKKy0gIHNv Y2thZGRyLnNpbl9mYW1pbHkgPSBQRl9JTkVUOworLSAgc29ja2FkZHIuc2luX3BvcnQgPSBodG9u cyAocG9ydCk7CistICBzb2NrYWRkci5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOworKyAg c3dpdGNoIChpdGVyLT5haV9mYW1pbHkpCisrICAgIHsKKysgICAgY2FzZSBBRl9JTkVUOgorKyAg ICAgICgoc3RydWN0IHNvY2thZGRyX2luICopIGl0ZXItPmFpX2FkZHIpLT5zaW5fYWRkci5zX2Fk ZHIgPSBJTkFERFJfQU5ZOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIEFGX0lORVQ2OgorKyAg ICAgICgoc3RydWN0IHNvY2thZGRyX2luNiAqKSBpdGVyLT5haV9hZGRyKS0+c2luNl9hZGRyID0g aW42YWRkcl9hbnk7CisrICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgaW50ZXJu YWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAgIF8oIkludmFsaWQgJ2FpX2Zh bWlseScgJWRcbiIpLCBpdGVyLT5haV9mYW1pbHkpOworKyAgICB9CisgCistICBpZiAoYmluZCAo bGlzdGVuX2Rlc2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCBzaXplb2YgKHNvY2th ZGRyKSkKKy0gICAgICB8fCBsaXN0ZW4gKGxpc3Rlbl9kZXNjLCAxKSkKKysgIGlmIChiaW5kIChs aXN0ZW5fZGVzYywgaXRlci0+YWlfYWRkciwgaXRlci0+YWlfYWRkcmxlbikgIT0gMCkKKyAgICAg cGVycm9yX3dpdGhfbmFtZSAoIkNhbid0IGJpbmQgYWRkcmVzcyIpOworIAorKyAgaWYgKGxpc3Rl biAobGlzdGVuX2Rlc2MsIDEpICE9IDApCisrICAgIHBlcnJvcl93aXRoX25hbWUgKCJDYW4ndCBs aXN0ZW4gb24gc29ja2V0Iik7CisrCisgICBjcy50cmFuc3BvcnRfaXNfcmVsaWFibGUgPSAxOwor IH0KKyAKK0BAIC0zNTAsMTggKzM5NywyNCBAQCByZW1vdGVfb3BlbiAoY29uc3QgY2hhciAqbmFt ZSkKKyAjZW5kaWYgLyogVVNFX1dJTjMyQVBJICovCisgICBlbHNlCisgICAgIHsKKy0gICAgICBp bnQgcG9ydDsKKy0gICAgICBzb2NrbGVuX3QgbGVuOworLSAgICAgIHN0cnVjdCBzb2NrYWRkcl9p biBzb2NrYWRkcjsKKy0KKy0gICAgICBsZW4gPSBzaXplb2YgKHNvY2thZGRyKTsKKy0gICAgICBp ZiAoZ2V0c29ja25hbWUgKGxpc3Rlbl9kZXNjLAorLQkJICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIg KikgJnNvY2thZGRyLCAmbGVuKSA8IDAKKy0JICB8fCBsZW4gPCBzaXplb2YgKHNvY2thZGRyKSkK KysgICAgICBjaGFyIGxpc3Rlbl9wb3J0W0dEQl9OSV9NQVhfUE9SVF07CisrICAgICAgc3RydWN0 IHNvY2thZGRyX3N0b3JhZ2Ugc29ja2FkZHI7CisrICAgICAgc29ja2xlbl90IGxlbiA9IHNpemVv ZiAoc29ja2FkZHIpOworKworKyAgICAgIGlmIChnZXRzb2NrbmFtZSAobGlzdGVuX2Rlc2MsIChz dHJ1Y3Qgc29ja2FkZHIgKikgJnNvY2thZGRyLCAmbGVuKSA8IDApCisgCXBlcnJvcl93aXRoX25h bWUgKCJDYW4ndCBkZXRlcm1pbmUgcG9ydCIpOworLSAgICAgIHBvcnQgPSBudG9ocyAoc29ja2Fk ZHIuc2luX3BvcnQpOworIAorLSAgICAgIGZwcmludGYgKHN0ZGVyciwgIkxpc3RlbmluZyBvbiBw b3J0ICVkXG4iLCBwb3J0KTsKKysgICAgICBpbnQgciA9IGdldG5hbWVpbmZvICgoc3RydWN0IHNv Y2thZGRyICopICZzb2NrYWRkciwgbGVuLAorKwkJCSAgIE5VTEwsIDAsCisrCQkJICAgbGlzdGVu X3BvcnQsIHNpemVvZiAobGlzdGVuX3BvcnQpLAorKwkJCSAgIE5JX05VTUVSSUNTRVJWKTsKKysK KysgICAgICBpZiAociAhPSAwKQorKwlmcHJpbnRmIChzdGRlcnIsIF8oIkNhbid0IG9idGFpbiBw b3J0IHdoZXJlIHdlIGFyZSBsaXN0ZW5pbmc6ICVzIiksCisrCQkgZ2FpX3N0cmVycm9yIChyKSk7 CisrICAgICAgZWxzZQorKwlmcHJpbnRmIChzdGRlcnIsIF8oIkxpc3RlbmluZyBvbiBwb3J0ICVz XG4iKSwgbGlzdGVuX3BvcnQpOworKworICAgICAgIGZmbHVzaCAoc3RkZXJyKTsKKyAKKyAgICAg ICAvKiBSZWdpc3RlciB0aGUgZXZlbnQgbG9vcCBoYW5kbGVyLiAgKi8KK2RpZmYgLS1naXQgYS9n ZGIvc2VyLXRjcC5jIGIvZ2RiL3Nlci10Y3AuYworLS0tIGEvZ2RiL3Nlci10Y3AuYworKysrIGIv Z2RiL3Nlci10Y3AuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAjaW5jbHVkZSAiY2xpL2NsaS1kZWNv ZGUuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCisgI2luY2x1ZGUgImZpbGVzdHVm Zi5oIgorKyNpbmNsdWRlICJuZXRzdHVmZi5oIgorIAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K KyAKK0BAIC0zOSw2ICs0MCw3IEBACisgCisgI2lmZGVmIFVTRV9XSU4zMkFQSQorICNpbmNsdWRl IDx3aW5zb2NrMi5oPgorKyNpbmNsdWRlIDx3c3BpYXBpLmg+CisgI2lmbmRlZiBFVElNRURPVVQK KyAjZGVmaW5lIEVUSU1FRE9VVCBXU0FFVElNRURPVVQKKyAjZW5kaWYKK0BAIC04MSwxMiArODMs MTMgQEAgc3RhdGljIHVuc2lnbmVkIGludCB0Y3BfcmV0cnlfbGltaXQgPSAxNTsKKyAKKyAjZGVm aW5lIFBPTExfSU5URVJWQUwgNQorIAorLS8qIEhlbHBlciBmdW5jdGlvbiB0byB3YWl0IGEgd2hp bGUuICBJZiBTQ0IgaXMgbm9uLW51bGwsIHdhaXQgb24gaXRzCistICAgZmlsZSBkZXNjcmlwdG9y LiAgT3RoZXJ3aXNlIGp1c3Qgd2FpdCBvbiBhIHRpbWVvdXQsIHVwZGF0aW5nICpQT0xMUy4KKy0g ICBSZXR1cm5zIC0xIG9uIHRpbWVvdXQgb3IgaW50ZXJydXB0LCBvdGhlcndpc2UgdGhlIHZhbHVl IG9mIHNlbGVjdC4gICovCisrLyogSGVscGVyIGZ1bmN0aW9uIHRvIHdhaXQgYSB3aGlsZS4gIElm IFNPQ0sgaXMgbm90IC0xLCB3YWl0IG9uIGl0cworKyAgIGZpbGUgZGVzY3JpcHRvci4gIE90aGVy d2lzZSBqdXN0IHdhaXQgb24gYSB0aW1lb3V0LCB1cGRhdGluZworKyAgICpQT0xMUy4gIFJldHVy bnMgLTEgb24gdGltZW91dCBvciBpbnRlcnJ1cHQsIG90aGVyd2lzZSB0aGUgdmFsdWUgb2YKKysg ICBzZWxlY3QuICAqLworIAorIHN0YXRpYyBpbnQKKy13YWl0X2Zvcl9jb25uZWN0IChzdHJ1Y3Qg c2VyaWFsICpzY2IsIHVuc2lnbmVkIGludCAqcG9sbHMpCisrd2FpdF9mb3JfY29ubmVjdCAoaW50 IHNvY2ssIHVuc2lnbmVkIGludCAqcG9sbHMpCisgeworICAgc3RydWN0IHRpbWV2YWwgdDsKKyAg IGludCBuOworQEAgLTEyMCwyNCArMTIzLDI0IEBAIHdhaXRfZm9yX2Nvbm5lY3QgKHN0cnVjdCBz ZXJpYWwgKnNjYiwgdW5zaWduZWQgaW50ICpwb2xscykKKyAgICAgICB0LnR2X3VzZWMgPSAwOwor ICAgICB9CisgCistICBpZiAoc2NiKQorKyAgaWYgKHNvY2sgPj0gMCkKKyAgICAgeworICAgICAg IGZkX3NldCByc2V0LCB3c2V0LCBlc2V0OworIAorICAgICAgIEZEX1pFUk8gKCZyc2V0KTsKKy0g ICAgICBGRF9TRVQgKHNjYi0+ZmQsICZyc2V0KTsKKysgICAgICBGRF9TRVQgKHNvY2ssICZyc2V0 KTsKKyAgICAgICB3c2V0ID0gcnNldDsKKyAgICAgICBlc2V0ID0gcnNldDsKKy0JICAKKysKKyAg ICAgICAvKiBQT1NJWCBzeXN0ZW1zIHJldHVybiBjb25uZWN0aW9uIHN1Y2Nlc3Mgb3IgZmFpbHVy ZSBieSBzaWduYWxsaW5nCisgCSB3c2V0LiAgV2luZG93cyBzeXN0ZW1zIHJldHVybiBzdWNjZXNz IGluIHdzZXQgYW5kIGZhaWx1cmUgaW4KKyAJIGVzZXQuCistICAgICAKKysKKyAJIFdlIG11c3Qg Y2FsbCBzZWxlY3QgaGVyZSwgcmF0aGVyIHRoYW4gZ2RiX3NlbGVjdCwgYmVjYXVzZQorIAkgdGhl IHNlcmlhbCBzdHJ1Y3R1cmUgaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZCAtIHRoZQorIAkg TWluR1cgc2VsZWN0IHdyYXBwZXIgd2lsbCBub3Qga25vdyB0aGF0IHRoaXMgRkQgcmVmZXJzCisg CSB0byBhIHNvY2tldC4gICovCistICAgICAgbiA9IHNlbGVjdCAoc2NiLT5mZCArIDEsICZyc2V0 LCAmd3NldCwgJmVzZXQsICZ0KTsKKysgICAgICBuID0gc2VsZWN0IChzb2NrICsgMSwgJnJzZXQs ICZ3c2V0LCAmZXNldCwgJnQpOworICAgICB9CisgICBlbHNlCisgICAgIC8qIFVzZSBnZGJfc2Vs ZWN0IGhlcmUsIHNpbmNlIHdlIGhhdmUgbm8gZmlsZSBkZXNjcmlwdG9ycywgYW5kIG9uCitAQCAt MTUzLDgwICsxNTYsMjggQEAgd2FpdF9mb3JfY29ubmVjdCAoc3RydWN0IHNlcmlhbCAqc2NiLCB1 bnNpZ25lZCBpbnQgKnBvbGxzKQorICAgcmV0dXJuIG47CisgfQorIAorLS8qIE9wZW4gYSB0Y3Ag c29ja2V0LiAgKi8KKysvKiBUcnkgdG8gY29ubmVjdCB0byB0aGUgaG9zdCByZXByZXNlbnRlZCBi eSBBSU5GTy4gIElmIHRoZSBjb25uZWN0aW9uCisrICAgc3VjY2VlZHMsIHJldHVybiBpdHMgc29j a2V0LiAgT3RoZXJ3aXNlLCByZXR1cm4gLTEgYW5kIHNldCBFUlJOTworKyAgIGFjY29yZGluZ2x5 LiAgUE9MTFMgaXMgdXNlZCB3aGVuICdjb25uZWN0JyByZXR1cm5zIEVJTlBST0dSRVNTLCBhbmQK KysgICB3ZSBuZWVkIHRvIGludm9rZSAnd2FpdF9mb3JfY29ubmVjdCcgdG8gb2J0YWluIHRoZSBz dGF0dXMuICAqLworIAorLWludAorLW5ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFsICpzY2IsIGNvbnN0 IGNoYXIgKm5hbWUpCisrc3RhdGljIGludAorK3RyeV9jb25uZWN0IChjb25zdCBzdHJ1Y3QgYWRk cmluZm8gKmFpbmZvLCB1bnNpZ25lZCBpbnQgKnBvbGxzKQorIHsKKy0gIGNoYXIgaG9zdG5hbWVb MTAwXTsKKy0gIGNvbnN0IGNoYXIgKnBvcnRfc3RyOworLSAgaW50IG4sIHBvcnQsIHRtcDsKKy0g IGludCB1c2VfdWRwOworLSAgc3RydWN0IGhvc3RlbnQgKmhvc3RlbnQ7CistICBzdHJ1Y3Qgc29j a2FkZHJfaW4gc29ja2FkZHI7CistI2lmZGVmIFVTRV9XSU4zMkFQSQorLSAgdV9sb25nIGlvYXJn OworLSNlbHNlCistICBpbnQgaW9hcmc7CistI2VuZGlmCistICB1bnNpZ25lZCBpbnQgcG9sbHMg PSAwOworLQorLSAgdXNlX3VkcCA9IDA7CistICBpZiAoc3RhcnRzd2l0aCAobmFtZSwgInVkcDoi KSkKKy0gICAgeworLSAgICAgIHVzZV91ZHAgPSAxOworLSAgICAgIG5hbWUgPSBuYW1lICsgNDsK Ky0gICAgfQorLSAgZWxzZSBpZiAoc3RhcnRzd2l0aCAobmFtZSwgInRjcDoiKSkKKy0gICAgbmFt ZSA9IG5hbWUgKyA0OworLQorLSAgcG9ydF9zdHIgPSBzdHJjaHIgKG5hbWUsICc6Jyk7CistCist ICBpZiAoIXBvcnRfc3RyKQorLSAgICBlcnJvciAoXygibmV0X29wZW46IE5vIGNvbG9uIGluIGhv c3QgbmFtZSEiKSk7ICAvKiBTaG91bGRuJ3QgZXZlcgorLQkJCQkJCSAgICAgICBoYXBwZW4uICAq LworLQorLSAgdG1wID0gc3RkOjptaW4gKHBvcnRfc3RyIC0gbmFtZSwgKHB0cmRpZmZfdCkgc2l6 ZW9mIGhvc3RuYW1lIC0gMSk7CistICBzdHJuY3B5IChob3N0bmFtZSwgbmFtZSwgdG1wKTsJLyog RG9uJ3Qgd2FudCBjb2xvbi4gICovCistICBob3N0bmFtZVt0bXBdID0gJ1wwMDAnOwkvKiBUaWUg b2ZmIGhvc3QgbmFtZS4gICovCistICBwb3J0ID0gYXRvaSAocG9ydF9zdHIgKyAxKTsKKy0KKy0g IC8qIERlZmF1bHQgaG9zdG5hbWUgaXMgbG9jYWxob3N0LiAgKi8KKy0gIGlmICghaG9zdG5hbWVb MF0pCistICAgIHN0cmNweSAoaG9zdG5hbWUsICJsb2NhbGhvc3QiKTsKKy0KKy0gIGhvc3RlbnQg PSBnZXRob3N0YnluYW1lIChob3N0bmFtZSk7CistICBpZiAoIWhvc3RlbnQpCistICAgIHsKKy0g ICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRlcnIsICIlczogdW5rbm93biBob3N0XG4i LCBob3N0bmFtZSk7CistICAgICAgZXJybm8gPSBFTk9FTlQ7CistICAgICAgcmV0dXJuIC0xOwor LSAgICB9CisrICBpbnQgc29jayA9IGdkYl9zb2NrZXRfY2xvZXhlYyAoYWluZm8tPmFpX2ZhbWls eSwgYWluZm8tPmFpX3NvY2t0eXBlLAorKwkJCQkgYWluZm8tPmFpX3Byb3RvY29sKTsKKyAKKy0g IHNvY2thZGRyLnNpbl9mYW1pbHkgPSBQRl9JTkVUOworLSAgc29ja2FkZHIuc2luX3BvcnQgPSBo dG9ucyAocG9ydCk7CistICBtZW1jcHkgKCZzb2NrYWRkci5zaW5fYWRkci5zX2FkZHIsIGhvc3Rl bnQtPmhfYWRkciwKKy0JICBzaXplb2YgKHN0cnVjdCBpbl9hZGRyKSk7CistCistIHJldHJ5Ogor LQorLSAgaWYgKHVzZV91ZHApCistICAgIHNjYi0+ZmQgPSBnZGJfc29ja2V0X2Nsb2V4ZWMgKFBG X0lORVQsIFNPQ0tfREdSQU0sIDApOworLSAgZWxzZQorLSAgICBzY2ItPmZkID0gZ2RiX3NvY2tl dF9jbG9leGVjIChQRl9JTkVULCBTT0NLX1NUUkVBTSwgMCk7CistCistICBpZiAoc2NiLT5mZCA9 PSAtMSkKKysgIGlmIChzb2NrIDwgMCkKKyAgICAgcmV0dXJuIC0xOworLSAgCisrCisgICAvKiBT ZXQgc29ja2V0IG5vbmJsb2NraW5nLiAgKi8KKy0gIGlvYXJnID0gMTsKKy0gIGlvY3RsIChzY2It PmZkLCBGSU9OQklPLCAmaW9hcmcpOworKyAgaW50IGlvYXJnID0gMTsKKysKKysgIGlvY3RsIChz b2NrLCBGSU9OQklPLCAmaW9hcmcpOworIAorICAgLyogVXNlIE5vbi1ibG9ja2luZyBjb25uZWN0 LiAgY29ubmVjdCgpIHdpbGwgcmV0dXJuIDAgaWYgY29ubmVjdGVkCisgICAgICBhbHJlYWR5LiAg Ki8KKy0gIG4gPSBjb25uZWN0IChzY2ItPmZkLCAoc3RydWN0IHNvY2thZGRyICopICZzb2NrYWRk ciwgc2l6ZW9mIChzb2NrYWRkcikpOworLQorLSAgaWYgKG4gPCAwKQorKyAgaWYgKGNvbm5lY3Qg KHNvY2ssIGFpbmZvLT5haV9hZGRyLCBhaW5mby0+YWlfYWRkcmxlbikgPCAwKQorICAgICB7Cisg I2lmZGVmIFVTRV9XSU4zMkFQSQorICAgICAgIGludCBlcnIgPSBXU0FHZXRMYXN0RXJyb3IoKTsK K0BAIC0yMzQsMjEgKzE4NSwyNiBAQCBuZXRfb3BlbiAoc3RydWN0IHNlcmlhbCAqc2NiLCBjb25z dCBjaGFyICpuYW1lKQorICAgICAgIGludCBlcnIgPSBlcnJubzsKKyAjZW5kaWYKKyAKKy0gICAg ICAvKiBNYXliZSB3ZSdyZSB3YWl0aW5nIGZvciB0aGUgcmVtb3RlIHRhcmdldCB0byBiZWNvbWUg cmVhZHkgdG8KKy0JIGFjY2VwdCBjb25uZWN0aW9ucy4gICovCistICAgICAgaWYgKHRjcF9hdXRv X3JldHJ5CisrICAgICAgLyogSWYgd2UndmUgZ290IGEgImNvbm5lY3Rpb24gcmVmdXNlZCIgZXJy b3IsIGp1c3QgcmV0dXJuCisrCSAtMS4gIFRoZSBjYWxsZXIgd2lsbCBrbm93IHdoYXQgdG8gZG8u ICAqLworKyAgICAgIGlmICgKKyAjaWZkZWYgVVNFX1dJTjMyQVBJCistCSAgJiYgZXJyID09IFdT QUVDT05OUkVGVVNFRAorKwkgIGVyciA9PSBXU0FFQ09OTlJFRlVTRUQKKyAjZWxzZQorLQkgICYm IGVyciA9PSBFQ09OTlJFRlVTRUQKKysJICBlcnIgPT0gRUNPTk5SRUZVU0VECisgI2VuZGlmCist CSAgJiYgd2FpdF9mb3JfY29ubmVjdCAoTlVMTCwgJnBvbGxzKSA+PSAwKQorKwkgICkKKyAJewor LQkgIGNsb3NlIChzY2ItPmZkKTsKKy0JICBnb3RvIHJldHJ5OworKwkgIGNsb3NlIChzb2NrKTsK KysJICBlcnJubyA9IGVycjsKKysJICByZXR1cm4gLTE7CisgCX0KKyAKKyAgICAgICBpZiAoCisr CSAgLyogQW55IG90aGVyIGVycm9yIChleGNlcHQgRUlOUFJPR1JFU1MpIHdpbGwgYmUgInN3YWxs b3dlZCIKKysJICAgICBoZXJlLiAgV2UgcmV0dXJuIHdpdGhvdXQgc3BlY2lmeWluZyBhIHJldHVy biB2YWx1ZSwgYW5kCisrCSAgICAgc2V0IGVycm5vIGlmIHRoZSBjYWxsZXIgd2FudHMgdG8gaW5z cGVjdCB3aGF0CisrCSAgICAgaGFwcGVuZWQuICAqLworICNpZmRlZiBVU0VfV0lOMzJBUEkKKyAJ ICAvKiBVbmRlciBXaW5kb3dzLCBjYWxsaW5nICJjb25uZWN0IiB3aXRoIGEgbm9uLWJsb2NraW5n IHNvY2tldAorIAkgICAgIHJlc3VsdHMgaW4gV1NBRVdPVUxEQkxPQ0ssIG5vdCBXU0FFSU5QUk9H UkVTUy4gICovCitAQCAtMjU4LDY2ICsyMTQsMTY2IEBAIG5ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFs ICpzY2IsIGNvbnN0IGNoYXIgKm5hbWUpCisgI2VuZGlmCisgCSAgKQorIAl7CisrCSAgY2xvc2Ug KHNvY2spOworIAkgIGVycm5vID0gZXJyOworLQkgIG5ldF9jbG9zZSAoc2NiKTsKKyAJICByZXR1 cm4gLTE7CisgCX0KKyAKKyAgICAgICAvKiBMb29rcyBsaWtlIHdlIG5lZWQgdG8gd2FpdCBmb3Ig dGhlIGNvbm5lY3QuICAqLworLSAgICAgIGRvIAorLQl7CistCSAgbiA9IHdhaXRfZm9yX2Nvbm5l Y3QgKHNjYiwgJnBvbGxzKTsKKy0JfSAKKysgICAgICBpbnQgbjsKKysKKysgICAgICBkbworKwlu ID0gd2FpdF9mb3JfY29ubmVjdCAoc29jaywgcG9sbHMpOworICAgICAgIHdoaWxlIChuID09IDAp OworKworICAgICAgIGlmIChuIDwgMCkKKyAJeworLQkgIG5ldF9jbG9zZSAoc2NiKTsKKysJICBp bnQgc2F2ZWRfZXJybm8gPSBlcnJubzsKKysKKysJICAvKiBBIG5lZ2F0aXZlIHZhbHVlIGhlcmUg bWVhbnMgdGhhdCB3ZSBlaXRoZXIgdGltZWQgb3V0IG9yCisrCSAgICAgZ290IGludGVycnVwdGVk IGJ5IHRoZSB1c2VyLiAgSnVzdCByZXR1cm4uICAqLworKwkgIGNsb3NlIChzb2NrKTsKKysJICBl cnJubyA9IHNhdmVkX2Vycm5vOworIAkgIHJldHVybiAtMTsKKyAJfQorICAgICB9CisgCisgICAv KiBHb3Qgc29tZXRoaW5nLiAgSXMgaXQgYW4gZXJyb3I/ICAqLworLSAgeworLSAgICBpbnQgcmVz LCBlcnI7CistICAgIHNvY2tsZW5fdCBsZW47CistCistICAgIGxlbiA9IHNpemVvZiAoZXJyKTsK Ky0gICAgLyogT24gV2luZG93cywgdGhlIGZvdXJ0aCBwYXJhbWV0ZXIgdG8gZ2V0c29ja29wdCBp cyBhICJjaGFyICoiOworLSAgICAgICBvbiBVTklYIHN5c3RlbXMgaXQgaXMgZ2VuZXJhbGx5ICJ2 b2lkICoiLiAgVGhlIGNhc3QgdG8gImNoYXIgKiIKKy0gICAgICAgaXMgT0sgZXZlcnl3aGVyZSwg c2luY2UgaW4gQysrIGFueSBkYXRhIHBvaW50ZXIgdHlwZSBjYW4gYmUKKy0gICAgICAgaW1wbGlj aXRseSBjb252ZXJ0ZWQgdG8gInZvaWQgKiIuICAqLworLSAgICByZXMgPSBnZXRzb2Nrb3B0IChz Y2ItPmZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwgKGNoYXIgKikgJmVyciwgJmxlbik7CistICAg IGlmIChyZXMgPCAwIHx8IGVycikKKy0gICAgICB7CistCS8qIE1heWJlIHRoZSB0YXJnZXQgc3Rp bGwgaXNuJ3QgcmVhZHkgdG8gYWNjZXB0IHRoZSBjb25uZWN0aW9uLiAgKi8KKy0JaWYgKHRjcF9h dXRvX3JldHJ5CisrICBpbnQgZXJyOworKyAgc29ja2xlbl90IGxlbiA9IHNpemVvZiAoZXJyKTsK KysKKysgIC8qIE9uIFdpbmRvd3MsIHRoZSBmb3VydGggcGFyYW1ldGVyIHRvIGdldHNvY2tvcHQg aXMgYSAiY2hhciAqIjsKKysgICAgIG9uIFVOSVggc3lzdGVtcyBpdCBpcyBnZW5lcmFsbHkgInZv aWQgKiIuICBUaGUgY2FzdCB0byAiY2hhciAqIgorKyAgICAgaXMgT0sgZXZlcnl3aGVyZSwgc2lu Y2UgaW4gQysrIGFueSBkYXRhIHBvaW50ZXIgdHlwZSBjYW4gYmUKKysgICAgIGltcGxpY2l0bHkg Y29udmVydGVkIHRvICJ2b2lkICoiLiAgKi8KKysgIGludCByZXQgPSBnZXRzb2Nrb3B0IChzb2Nr LCBTT0xfU09DS0VULCBTT19FUlJPUiwgKGNoYXIgKikgJmVyciwgJmxlbik7CisrCisrICBpZiAo cmV0IDwgMCkKKysgICAgeworKyAgICAgIGludCBzYXZlZF9lcnJubyA9IGVycm5vOworKworKyAg ICAgIGNsb3NlIChzb2NrKTsKKysgICAgICBlcnJubyA9IHNhdmVkX2Vycm5vOworKyAgICAgIHJl dHVybiAtMTsKKysgICAgfQorKyAgZWxzZSBpZiAocmV0ID09IDAgJiYgZXJyICE9IDApCisrICAg IHsKKysgICAgICBjbG9zZSAoc29jayk7CisrICAgICAgZXJybm8gPSBlcnI7CisrICAgICAgcmV0 dXJuIC0xOworKyAgICB9CisrCisrICAvKiBUaGUgY29ubmVjdGlvbiBzdWNjZWVkZWQuICBSZXR1 cm4gdGhlIHNvY2tldC4gICovCisrICByZXR1cm4gc29jazsKKyt9CisrCisrLyogT3BlbiBhIHRj cCBzb2NrZXQuICAqLworKworK2ludAorK25ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFsICpzY2IsIGNv bnN0IGNoYXIgKm5hbWUpCisreworKyAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7CisrICBzdHJ1Y3Qg YWRkcmluZm8gKmFpbmZvOworKworKyAgbWVtc2V0ICgmaGludCwgMCwgc2l6ZW9mIChoaW50KSk7 CisrICAvKiBBc3N1bWUgbm8gcHJlZml4IHdpbGwgYmUgcGFzc2VkLCB0aGVyZWZvcmUgd2Ugc2hv dWxkIHVzZQorKyAgICAgQUZfVU5TUEVDLiAgKi8KKysgIGhpbnQuYWlfZmFtaWx5ID0gQUZfVU5T UEVDOworKyAgaGludC5haV9zb2NrdHlwZSA9IFNPQ0tfU1RSRUFNOworKyAgaGludC5haV9wcm90 b2NvbCA9IElQUFJPVE9fVENQOworKworKyAgcGFyc2VkX2Nvbm5lY3Rpb25fc3BlYyBwYXJzZWQg PSBwYXJzZV9jb25uZWN0aW9uX3NwZWMgKG5hbWUsICZoaW50KTsKKysKKysgIGlmIChwYXJzZWQu cG9ydF9zdHIuZW1wdHkgKCkpCisrICAgIGVycm9yIChfKCJNaXNzaW5nIHBvcnQgb24gaG9zdG5h bWUgJyVzJyIpLCBuYW1lKTsKKysKKysgIGludCByID0gZ2V0YWRkcmluZm8gKHBhcnNlZC5ob3N0 X3N0ci5jX3N0ciAoKSwKKysJCSAgICAgICBwYXJzZWQucG9ydF9zdHIuY19zdHIgKCksCisrCQkg ICAgICAgJmhpbnQsICZhaW5mbyk7CisrCisrICBpZiAociAhPSAwKQorKyAgICB7CisrICAgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLCBfKCIlczogY2Fubm90IHJlc29sdmUgbmFt ZTogJXNcbiIpLAorKwkJCSAgbmFtZSwgZ2FpX3N0cmVycm9yIChyKSk7CisrICAgICAgZXJybm8g PSBFTk9FTlQ7CisrICAgICAgcmV0dXJuIC0xOworKyAgICB9CisrCisrICBzY29wZWRfZnJlZV9h ZGRyaW5mbyBmcmVlX2FpbmZvIChhaW5mbyk7CisrCisrICAvKiBGbGFnIHRvIGluZGljYXRlIHdo ZXRoZXIgd2UndmUgZ290IGEgY29ubmVjdGlvbiByZWZ1c2VkLiAgSXQgd2lsbAorKyAgICAgYmUg dHJ1ZSBpZiBhbnkgb2YgdGhlIGNvbm5lY3Rpb25zIHRyaWVkIHdhcyByZWZ1c2VkLiAgKi8KKysg IGJvb2wgZ290X2Nvbm5yZWZ1c2VkOworKyAgLyogSWYgYSBjb25uZWN0aW9uIHN1Y2NlZWVkcywg U1VDQ0VTU19BSU5GTyB3aWxsIHBvaW50IHRvIHRoZQorKyAgICAgJ3N0cnVjdCBhZGRyaW5mbycg dGhhdCBzdWNjZWVkLiAgKi8KKysgIHN0cnVjdCBhZGRyaW5mbyAqc3VjY2Vzc19haW5mbyA9IE5V TEw7CisrICB1bnNpZ25lZCBpbnQgcG9sbHMgPSAwOworKworKyAgLyogQXNzdW1lIHRoZSB3b3Jz dC4gICovCisrICBzY2ItPmZkID0gLTE7CisrCisrICBkbworKyAgICB7CisrICAgICAgZ290X2Nv bm5yZWZ1c2VkID0gZmFsc2U7CisrCisrICAgICAgZm9yIChzdHJ1Y3QgYWRkcmluZm8gKml0ZXIg PSBhaW5mbzsgaXRlciAhPSBOVUxMOyBpdGVyID0gaXRlci0+YWlfbmV4dCkKKysJeworKwkgIC8q IEl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBwb3NzaWJsZSBhZGRyZXNzZXMgdG8gY29ubmVjdAor KwkgICAgIHRvLiAgRm9yIGVhY2gsIHdlJ2xsIHRyeSB0byBjb25uZWN0IGFuZCBzZWUgaWYgaXQK KysJICAgICBzdWNjZWVkcy4gICovCisrCSAgaW50IHNvY2sgPSB0cnlfY29ubmVjdCAoaXRlciwg JnBvbGxzKTsKKysKKysJICBpZiAoc29jayA+PSAwKQorKwkgICAgeworKwkgICAgICAvKiBXZSd2 ZSBnb3R0ZW4gYSBzdWNjZXNzZnVsIGNvbm5lY3Rpb24uICBTYXZlIGl0cworKwkJICdzdHJ1Y3Qg YWRkcmluZm8nLCB0aGUgc29ja2V0LCBhbmQgYnJlYWsuICAqLworKwkgICAgICBzdWNjZXNzX2Fp bmZvID0gaXRlcjsKKysJICAgICAgc2NiLT5mZCA9IHNvY2s7CisrCSAgICAgIGJyZWFrOworKwkg ICAgfQorKwkgIGVsc2UgaWYgKAorICNpZmRlZiBVU0VfV0lOMzJBUEkKKy0JICAgICYmIGVyciA9 PSBXU0FFQ09OTlJFRlVTRUQKKysJICBlcnJubyA9PSBXU0FFQ09OTlJFRlVTRUQKKyAjZWxzZQor LQkgICAgJiYgZXJyID09IEVDT05OUkVGVVNFRAorKwkgIGVycm5vID09IEVDT05OUkVGVVNFRAor ICNlbmRpZgorLQkgICAgJiYgd2FpdF9mb3JfY29ubmVjdCAoTlVMTCwgJnBvbGxzKSA+PSAwKQor LQkgIHsKKy0JICAgIGNsb3NlIChzY2ItPmZkKTsKKy0JICAgIGdvdG8gcmV0cnk7CistCSAgfQor LQlpZiAoZXJyKQorLQkgIGVycm5vID0gZXJyOworLQluZXRfY2xvc2UgKHNjYik7CistCXJldHVy biAtMTsKKy0gICAgICB9CistICB9IAorKwkJICAgKQorKwkgICAgZ290X2Nvbm5yZWZ1c2VkID0g dHJ1ZTsKKysJfQorKyAgICB9CisrICAvKiBKdXN0IHJldHJ5IGlmOgorKworKyAgICAgLSB0Y3Bf YXV0b19yZXRyeSBpcyB0cnVlLCBhbmQKKysgICAgIC0gV2UgaGF2ZW4ndCBnb3R0ZW4gYSBjb25u ZWN0aW9uIHlldCwgYW5kCisrICAgICAtIEFueSBvZiBvdXIgY29ubmVjdGlvbiBhdHRlbXB0cyBy ZXR1cm5lZCB3aXRoIEVDT05OUkVGVVNFRCwgYW5kCisrICAgICAtIHdhaXRfZm9yX2Nvbm5lY3Qg c2lnbmFscyB0aGF0IHdlIGNhbiBrZWVwIGdvaW5nLiAgKi8KKysgIHdoaWxlICh0Y3BfYXV0b19y ZXRyeQorKwkgJiYgc3VjY2Vzc19haW5mbyA9PSBOVUxMCisrCSAmJiBnb3RfY29ubnJlZnVzZWQK KysJICYmIHdhaXRfZm9yX2Nvbm5lY3QgKC0xLCAmcG9sbHMpID49IDApOworKworKyAgaWYgKHN1 Y2Nlc3NfYWluZm8gPT0gTlVMTCkKKysgICAgeworKyAgICAgIG5ldF9jbG9zZSAoc2NiKTsKKysg ICAgICByZXR1cm4gLTE7CisrICAgIH0KKyAKKyAgIC8qIFR1cm4gb2ZmIG5vbmJsb2NraW5nLiAg Ki8KKy0gIGlvYXJnID0gMDsKKysjaWZkZWYgVVNFX1dJTjMyQVBJCisrICB1X2xvbmcgaW9hcmcg PSAwOworKyNlbHNlCisrICBpbnQgaW9hcmcgPSAwOworKyNlbmRpZgorKworICAgaW9jdGwgKHNj Yi0+ZmQsIEZJT05CSU8sICZpb2FyZyk7CisgCistICBpZiAodXNlX3VkcCA9PSAwKQorKyAgaWYg KHN1Y2Nlc3NfYWluZm8tPmFpX3NvY2t0eXBlID09IElQUFJPVE9fVENQKQorICAgICB7CisgICAg ICAgLyogRGlzYWJsZSBOYWdsZSBhbGdvcml0aG0uICBOZWVkZWQgaW4gc29tZSBjYXNlcy4gICov CistICAgICAgdG1wID0gMTsKKysgICAgICBpbnQgdG1wID0gMTsKKysKKyAgICAgICBzZXRzb2Nr b3B0IChzY2ItPmZkLCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksCistCQkgIChjaGFyICopJnRt cCwgc2l6ZW9mICh0bXApKTsKKysJCSAgKGNoYXIgKikgJnRtcCwgc2l6ZW9mICh0bXApKTsKKyAg ICAgfQorIAorICNpZmRlZiBTSUdQSVBFCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZworLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cKKysrKyBiL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDIzIEBACisr MjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4K KysJICAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysJICAg IFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5jb20+CisrCSAgICBUc3V0b211IFNla2kg IDxzZWtpcmlraUBnbWFpbC5jb20+CisrCisrCSogUkVBRE1FIChUZXN0c3VpdGUgUGFyYW1ldGVy cyk6IE1lbnRpb24gbmV3ICdHREJfVEVTVF9TT0NLRVRIT1NUJworKwlwYXJhbWV0ZXIuCisrCSog Ym9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhwOiBEbyBub3Qgc2V0ICdzb2NrZXRo b3N0JworKwlieSBkZWZhdWx0LgorKwkqIGJvYXJkcy9uYXRpdmUtZ2Ric2VydmVyLmV4cDogTGlr ZXdpc2UuCisrCSogZ2RiLnNlcnZlci9ydW4td2l0aG91dC1sb2NhbC1iaW5hcnkuZXhwOiBJbXBy b3ZlIHJlZ2V4cCB1c2VkCisrCWZvciBkZXRlY3Rpbmcgd2hlbiBhIHJlbW90ZSBkZWJ1Z2dpbmcg Y29ubmVjdGlvbiBzdWNjZWVkcy4KKysJKiBnZGIuc2VydmVyL3NlcnZlci1jb25uZWN0LmV4cDog TmV3IGZpbGUuCisrCSogbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cCAoZ2Ric2VydmVyX2RlZmF1 bHRfZ2V0X2NvbW1fcG9ydCk6CisrCURvIG5vdCBwcmVmaXggdGhlIHBvcnQgbnVtYmVyIHdpdGgg IjoiLgorKwkoZ2Ric2VydmVyX3N0YXJ0KTogTmV3IGdsb2JhbCBHREJfVEVTVF9TT0NLRVRIT1NU LiAgSW1wbGVtZW50CisrCXN1cHBvcnQgZm9yIGRldGVjdGluZyBhbmQgdXNpbmcgaXQuICBBZGQg JyRkZWJ1Z2hvc3RfZ2Ric2VydmVyJworKwl0byB0aGUgbGlzdCBvZiBhcmd1bWVudHMgdXNlZCB0 byBzdGFydCBnZGJzZXJ2ZXIuICBIYW5kbGUgY2FzZQorKwl3aGVuIGdkYnNlcnZlciBjYW5ub3Qg cmVzb2x2ZSBhIG5ldHdvcmsgbmFtZS4KKysKKyAyMDE4LTA3LTExICBTZXJnaW8gRHVyaWdhbiBK dW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorIAorIAlQUiBjKysvMjMzNzMKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL1JFQURNRSBiL2dkYi90ZXN0c3VpdGUvUkVBRE1FCistLS0gYS9n ZGIvdGVzdHN1aXRlL1JFQURNRQorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9SRUFETUUKK0BAIC0yNTks NiArMjU5LDIwIEBAIFRoaXMgbWFrZSAobm90IHJ1bnRlc3QpIHZhcmlhYmxlIGlzIHVzZWQgdG8g c3BlY2lmeSB3aGV0aGVyIHRoZQorIHRlc3RzdWl0ZSBwcmVsb2FkcyB0aGUgcmVhZDEuc28gbGli cmFyeSBpbnRvIGV4cGVjdC4gIEFueSBub24tZW1wdHkKKyB2YWx1ZSBtZWFucyB0cnVlLiAgU2Vl ICJSYWNlIGRldGVjdGlvbiIgYmVsb3cuCisgCisrR0RCX1RFU1RfU09DS0VUSE9TVAorKworK1Ro aXMgdmFyaWFibGUgY2FuIHByb3ZpZGUgdGhlIGhvc3RuYW1lL2FkZHJlc3MgdGhhdCBzaG91bGQg YmUgdXNlZAorK3doZW4gcGVyZm9ybWluZyBHREJzZXJ2ZXItcmVsYXRlZCB0ZXN0cy4gIFRoaXMg aXMgdXNlZnVsIGluIHNvbWUKKytzaXR1YXRpb25zLCBlLmcuLCB3aGVuIHlvdSB3YW50IHRvIHRl c3QgdGhlIElQdjYgY29ubmVjdGl2aXR5IG9mIEdEQgorK2FuZCBHREJzZXJ2ZXIsIG9yIHdoZW4g dXNpbmcgYSBkaWZmZXJlbnQgaG9zdG5hbWUvYWRkcmVzcyBpcyBuZWVkZWQuCisrRm9yIGV4YW1w bGUsIHRvIG1ha2UgR0RCIGFuZCBHREJzZXJ2ZXIgdXNlIElQdjYtb25seSBjb25uZWN0aW9ucywg eW91CisrY2FuIGRvOgorKworKwltYWtlIGNoZWNrIFRFU1RTPSJnZGIuc2VydmVyLyouZXhwIiBS VU5URVNURkxBR1M9J0dEQl9URVNUX1NPQ0tFVEhPU1Q9dGNwNjpbOjoxXScKKysKKytOb3RlIHRo YXQgb25seSBhIGhvc3RuYW1lL2FkZHJlc3MgY2FuIGJlIHByb3ZpZGVkLCB3aXRob3V0IGEgcG9y dAorK251bWJlci4KKysKKyBSYWNlIGRldGVjdGlvbgorICoqKioqKioqKioqKioqCisgCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5l eHAgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9uYXRpdmUtZXh0ZW5kZWQtZ2Ric2VydmVyLmV4cAor LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWV4dGVuZGVkLWdkYnNlcnZlci5leHAK KysrKyBiL2dkYi90ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1leHRlbmRlZC1nZGJzZXJ2ZXIuZXhw CitAQCAtMjQsOCArMjQsNiBAQCBsb2FkX2dlbmVyaWNfY29uZmlnICJleHRlbmRlZC1nZGJzZXJ2 ZXIiCisgbG9hZF9ib2FyZF9kZXNjcmlwdGlvbiAiZ2Ric2VydmVyLWJhc2UiCisgbG9hZF9ib2Fy ZF9kZXNjcmlwdGlvbiAibG9jYWwtYm9hcmQiCisgCistc2V0X2JvYXJkX2luZm8gc29ja2V0aG9z dCAibG9jYWxob3N0OiIKKy0KKyAjIFdlIHdpbGwgYmUgdXNpbmcgdGhlIGV4dGVuZGVkIEdEQiBy ZW1vdGUgcHJvdG9jb2wuCisgc2V0X2JvYXJkX2luZm8gZ2RiX3Byb3RvY29sICJleHRlbmRlZC1y ZW1vdGUiCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWdkYnNl cnZlci5leHAgYi9nZGIvdGVzdHN1aXRlL2JvYXJkcy9uYXRpdmUtZ2Ric2VydmVyLmV4cAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9ib2FyZHMvbmF0aXZlLWdkYnNlcnZlci5leHAKKysrKyBiL2dkYi90 ZXN0c3VpdGUvYm9hcmRzL25hdGl2ZS1nZGJzZXJ2ZXIuZXhwCitAQCAtMzAsNyArMzAsNiBAQCBz ZXRfYm9hcmRfaW5mbyBnZGIsZG9fcmVsb2FkX29uX3J1biAxCisgIyBUaGVyZSdzIG5vIHN1cHBv cnQgZm9yIGFyZ3VtZW50LXBhc3NpbmcgKHlldCkuCisgc2V0X2JvYXJkX2luZm8gbm9hcmdzIDEK KyAKKy1zZXRfYm9hcmRfaW5mbyBzb2NrZXRob3N0ICJsb2NhbGhvc3Q6IgorIHNldF9ib2FyZF9p bmZvIHVzZV9nZGJfc3R1YiAxCisgc2V0X2JvYXJkX2luZm8gZXhpdF9pc19yZWxpYWJsZSAxCisg CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3J1bi13aXRob3V0LWxvY2Fs LWJpbmFyeS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5zZXJ2ZXIvcnVuLXdpdGhvdXQtbG9jYWwt YmluYXJ5LmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3J1bi13aXRob3V0LWxv Y2FsLWJpbmFyeS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9ydW4td2l0aG91 dC1sb2NhbC1iaW5hcnkuZXhwCitAQCAtNTMsNyArNTMsNyBAQCBzYXZlX3ZhcnMgeyBHREJGTEFH UyB9IHsKKyAgICAgc2V0IHVzZV9nZGJfc3R1YiAwCisgCisgICAgIGdkYl90ZXN0ICJ0YXJnZXQg JHtnZGJzZXJ2ZXJfcHJvdG9jb2x9ICR7Z2Ric2VydmVyX2dkYnBvcnR9IiBcCistCSJSZW1vdGUg ZGVidWdnaW5nIHVzaW5nICRnZGJzZXJ2ZXJfZ2RicG9ydCIgXAorKwkiUmVtb3RlIGRlYnVnZ2lu ZyB1c2luZyBbc3RyaW5nX3RvX3JlZ2V4cCAkZ2Ric2VydmVyX2dkYnBvcnRdIiBcCisgCSJjb25u ZWN0IHRvIGdkYnNlcnZlciIKKyAKKyAgICAgZ2RiX3Rlc3QgInJ1biIgXAorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5zZXJ2ZXIvc2VydmVyLWNvbm5lY3QuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuc2VydmVyL3NlcnZlci1jb25u ZWN0LmV4cAorQEAgLTAsMCArMSwxMTEgQEAKKysjIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCisrIworKyMgQ29weXJpZ2h0IDIwMTggRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisr IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysK KysjIFRlc3QgbXVsdGlwbGUgdHlwZXMgb2YgY29ubmVjdGlvbiAoSVB2NCwgSVB2NiwgVENQLCBV RFApIGFuZCBtYWtlCisrIyBzdXJlIGJvdGggZ2Ric2VydmVyIGFuZCBHREIgd29yay4KKysKKyts b2FkX2xpYiBnZGJzZXJ2ZXItc3VwcG9ydC5leHAKKysKKytzdGFuZGFyZF90ZXN0ZmlsZSBub3Jt YWwuYworKworK2lmIHtbc2tpcF9nZGJzZXJ2ZXJfdGVzdHNdfSB7CisrICAgIHJldHVybiAwCisr fQorKworKyMgV2Ugd2FudCB0byBoYXZlIGNvbnRyb2wgb3ZlciB3aGVyZSB3ZSBzdGFydCBnZGJz ZXJ2ZXIuCisraWYgeyBbaXNfcmVtb3RlIHRhcmdldF0gfSB7CisrICAgIHJldHVybiAwCisrfQor KworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgImZhaWxlZCB0byBwcmVwYXJlIiAkdGVzdGZp bGUgJHNyY2ZpbGUgZGVidWddIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBNYWtlIHN1 cmUgd2UncmUgZGlzY29ubmVjdGVkLCBpbiBjYXNlIHdlJ3JlIHRlc3Rpbmcgd2l0aCBhbgorKyMg ZXh0ZW5kZWQtcmVtb3RlIGJvYXJkLCB0aGVyZWZvcmUgYWxyZWFkeSBjb25uZWN0ZWQuCisrZ2Ri X3Rlc3QgImRpc2Nvbm5lY3QiICIuKiIKKysKKytzZXQgdGFyZ2V0X2V4ZWMgW2dkYnNlcnZlcl9k b3dubG9hZF9jdXJyZW50X3Byb2ddCisrCisrIyBBbiBhcnJheSBjb250YWluaW5nIHRoZSB0ZXN0 IGluc3RydWN0aW9ucyBmb3IgZWFjaCBzY2VuYXJpby4gIFRoZQorKyMgZGVzY3JpcHRpb24gb2Yg ZWFjaCBmaWVsZCBpcyBhcyBmb2xsb3dzOgorKyMKKysjIC0gVGhlIGNvbm5lY3Rpb24gc3BlY2lm aWNhdGlvbiB0byBiZSB1c2VkIHdoZW4gc3RhcnRpbmcKKysjICAgZ2Ric2VydmVyL0dEQi4gIFRo aXMgc3RyaW5nIHdpbGwgYmUgdXNlZCB0byBzZXQgdGhlCisrIyAgIEdEQl9URVNUX1NPQ0tFVEhP U1Qgd2hlbiBjYWxsaW5nIGdkYnNlcnZlcl9zdGFydC4KKysjCisrIyAtIEEgZmxhZyBpbmRpY2F0 aW5nIHdoZXRoZXIgZ2Ric2VydmVyIHNob3VsZCBmYWlsIHdoZW4gd2UgYXR0ZW1wdCB0bworKyMg ICBzdGFydCBpdC4gIFVzZWZ1bCB3aGVuIHRlc3RpbmcgZXJyb25lb3VzIGNvbm5lY3Rpb24gc3Bl Y3Mgc3VjaCBhcworKyMgICAidGNwODoiLgorKyMKKysjIC0gVGhlIHByZWZpeCB0aGF0IHNob3Vs ZCBiZSBwcmVwZW5kZWQgdG8gdGhlIHRlc3QgbWVzc2FnZXMuCisrc2V0IHRlc3RfcGFyYW1zIFwK KysgICAgeyBcCisrCSAgeyAidGNwNDoxMjcuMC4wLjEiIDAgInRjcDQiIH0gXAorKwkgIHsgInRj cDY6OjoxIiAgICAgICAwICJ0Y3A2IiB9IFwKKysJICB7ICJ0Y3A2Ols6OjFdIiAgICAgMCAidGNw Ni13aXRoLWJyYWNrZXRzIiB9IFwKKysJICB7ICJ0Y3A6bG9jYWxob3N0IiAgMCAidGNwIiB9IFwK KysJICB7ICJ1ZHA0OjEyNy4wLjAuMSIgMCAidWRwNCIgfSBcCisrCSAgeyAidWRwNjo6OjEiICAg ICAgIDAgInVkcDYiIH0gXAorKwkgIHsgInVkcDY6Wzo6MV0iICAgICAwICJ1ZHA2LXdpdGgtYnJh Y2tldHMiIH0gXAorKwkgIHsgInRjcDg6MTIzIiAgICAgICAxICJ0Y3A4IiB9IFwKKysJICB7ICJ1 ZHAxMjM6OjoiICAgICAgMSAidWRwMTIzIiB9IFwKKysJICB7ICJnYXJiYWdlOjEyMzQiICAgMSAi Z2FyYmFnZToxMjM0IiB9IFwKKysgICAgfQorKworKyMgVGhlIGJlc3Qgd2F5IHRvIHRlc3QgZGlm ZmVyZW50IHR5cGVzIG9mIGNvbm5lY3Rpb25zIGlzIHRvIHNldCB0aGUKKysjIEdEQl9URVNUX1NP Q0tFVEhPU1QgdmFyaWFibGUgYWNjb3JkaW5nbHkuCisrc2F2ZV92YXJzIHsgR0RCX1RFU1RfU09D S0VUSE9TVCB9IHsKKysgICAgZm9yZWFjaCBsaW5lICR0ZXN0X3BhcmFtcyB7CisrCXNldCBzb2Nr aG9zdCBbbGluZGV4ICRsaW5lIDBdCisrCXNldCBnZGJzZXJ2ZXJfc2hvdWxkX2ZhaWwgW2xpbmRl eCAkbGluZSAxXQorKwlzZXQgcHJlZml4IFtsaW5kZXggJGxpbmUgMl0KKysKKysJd2l0aF90ZXN0 X3ByZWZpeCAkcHJlZml4IHsKKysJICAgIHNldCBHREJfVEVTVF9TT0NLRVRIT1NUICRzb2NraG9z dAorKwkgICAgc2V0IHRlc3QgInN0YXJ0IGdkYnNlcnZlciIKKysKKysJICAgICMgVHJ5IHRvIHN0 YXJ0IGdkYnNlcnZlci4KKysJICAgIHNldCBjYXRjaHJlcyBbY2F0Y2gge3NldCByZXMgW2dkYnNl cnZlcl9zdGFydCAiIiAkdGFyZ2V0X2V4ZWNdfSBlcnJtc2ddCisrCisrCSAgICBpZiB7ICRjYXRj aHJlcyAhPSAwIH0geworKwkJaWYgeyAkZ2Ric2VydmVyX3Nob3VsZF9mYWlsIH0geworKwkJICAg IHBhc3MgIiR0ZXN0OiBnZGJzZXJ2ZXIgZmFpbGVkIGFzIGV4cGVjdGVkIgorKwkJfSBlbHNlIHsK KysJCSAgICBmYWlsICIkdGVzdDogJGVycm1zZyIKKysJCX0KKysJCWNvbnRpbnVlCisrCSAgICB9 IGVsc2UgeworKwkJaWYgeyAkZ2Ric2VydmVyX3Nob3VsZF9mYWlsIH0geworKwkJICAgIGZhaWwg IiR0ZXN0OiBnZGJzZXJ2ZXIgc2hvdWxkIGZhaWwgYnV0IGRpZCBub3QiCisrCQl9IGVsc2Ugewor KwkJICAgIHBhc3MgIiR0ZXN0IgorKwkJfQorKwkgICAgfQorKworKwkgICAgc2V0IGdkYnNlcnZl cl9wcm90b2NvbCBbbGluZGV4ICRyZXMgMF0KKysJICAgIHNldCBnZGJzZXJ2ZXJfZ2RicG9ydCBb bGluZGV4ICRyZXMgMV0KKysJICAgIHNldCB0ZXN0ICJjb25uZWN0IHRvIGdkYnNlcnZlciB1c2lu ZyAkc29ja2hvc3QiCisrCisrCSAgICBpZiB7IFtnZGJfdGFyZ2V0X2NtZCAkZ2Ric2VydmVyX3By b3RvY29sICRnZGJzZXJ2ZXJfZ2RicG9ydF0gPT0gMCB9IHsKKysJCXBhc3MgJHRlc3QKKysJICAg IH0gZWxzZSB7CisrCQlmYWlsICR0ZXN0CisrCSAgICB9CisrCX0KKysgICAgfQorK30KK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgYi9nZGIvdGVz dHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvbGli L2dkYnNlcnZlci1zdXBwb3J0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVy LXN1cHBvcnQuZXhwCitAQCAtMjExLDcgKzIxMSw3IEBAIHByb2MgZ2Ric2VydmVyX2RlZmF1bHRf Z2V0X3JlbW90ZV9hZGRyZXNzIHsgaG9zdCBwb3J0IH0geworICMgRGVmYXVsdCByb3V0aW5lIHRv IGNvbXB1dGUgdGhlICJjb21tIiBhcmd1bWVudCBmb3IgZ2Ric2VydmVyLgorIAorIHByb2MgZ2Ri c2VydmVyX2RlZmF1bHRfZ2V0X2NvbW1fcG9ydCB7IHBvcnQgfSB7CistICAgIHJldHVybiAiOiRw b3J0IgorKyAgICByZXR1cm4gIiRwb3J0IgorIH0KKyAKKyAjIFN0YXJ0IGEgZ2Ric2VydmVyIHBy b2Nlc3Mgd2l0aCBpbml0aWFsIE9QVElPTlMgYW5kIHRyYWlsaW5nIEFSR1VNRU5UUy4KK0BAIC0y MjEsNiArMjIxLDcgQEAgcHJvYyBnZGJzZXJ2ZXJfZGVmYXVsdF9nZXRfY29tbV9wb3J0IHsgcG9y dCB9IHsKKyAKKyBwcm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0gewor ICAgICBnbG9iYWwgcG9ydG51bQorKyAgICBnbG9iYWwgR0RCX1RFU1RfU09DS0VUSE9TVAorIAor ICAgICAjIFBvcnQgaWQgLS0gZWl0aGVyIHNwZWNpZmllZCBpbiBiYXNlYm9hcmQgZmlsZSwgb3Ig bWFuYWdlZCBoZXJlLgorICAgICBpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixzb2NrZXRwb3J0 XSB7CitAQCAtMjMxLDEwICsyMzIsMjIgQEAgcHJvYyBnZGJzZXJ2ZXJfc3RhcnQgeyBvcHRpb25z IGFyZ3VtZW50cyB9IHsKKyAgICAgfQorIAorICAgICAjIEV4dHJhY3QgdGhlIGxvY2FsIGFuZCBy ZW1vdGUgaG9zdCBpZHMgZnJvbSB0aGUgdGFyZ2V0IGJvYXJkIHN0cnVjdC4KKy0gICAgaWYgW3Rh cmdldF9pbmZvIGV4aXN0cyBzb2NrZXRob3N0XSB7CisrICAgIGlmIHsgW2luZm8gZXhpc3RzIEdE Ql9URVNUX1NPQ0tFVEhPU1RdIH0geworKwkjIFRoZSB1c2VyIGlzIG5vdCBzdXBwb3NlZCB0byBw cm92aWRlIGEgcG9ydCBudW1iZXIsIGp1c3QgYQorKwkjIGhvc3RuYW1lL2FkZHJlc3MsIHRoZXJl Zm9yZSB3ZSBhZGQgdGhlIHRyYWlsaW5nICI6IiBoZXJlLgorKwlzZXQgZGVidWdob3N0ICIke0dE Ql9URVNUX1NPQ0tFVEhPU1R9OiIKKysJIyBFc2NhcGUgb3BlbiBhbmQgY2xvc2Ugc3F1YXJlIGJy YWNrZXRzLgorKwlzZXQgZGVidWdob3N0X3RtcCBbc3RyaW5nIG1hcCB7IFsgXFxbIF0gXFxdIH0g JGRlYnVnaG9zdF0KKysJIyBXZSBuZWVkIGEgImdkYnNlcnZlciIgdmVyc2lvbiBvZiB0aGUgZGVi dWdob3N0LCB3aGljaCB3aWxsCisrCSMgaGF2ZSB0aGUgcG9zc2libGUgY29ubmVjdGlvbiBwcmVm aXggc3RyaXBwZWQuICBUaGlzIGlzCisrCSMgYmVjYXVzZSBnZGJzZXJ2ZXIgY3VycmVudGx5IGRv ZXNuJ3QgcmVjb2duaXplIHRoZSBwcmVmaXhlcy4KKysJcmVnc3ViIC1hbGwgIl5cKHRjcDp8dWRw Onx0Y3A0Onx1ZHA0Onx0Y3A2Onx1ZHA2OlwpIiAkZGVidWdob3N0X3RtcCAiIiBkZWJ1Z2hvc3Rf Z2Ric2VydmVyCisrICAgIH0gZWxzZWlmIFt0YXJnZXRfaW5mbyBleGlzdHMgc29ja2V0aG9zdF0g eworIAlzZXQgZGVidWdob3N0IFt0YXJnZXRfaW5mbyBzb2NrZXRob3N0XQorKwlzZXQgZGVidWdo b3N0X2dkYnNlcnZlciAkZGVidWdob3N0CisgICAgIH0gZWxzZSB7CisgCXNldCBkZWJ1Z2hvc3Qg ImxvY2FsaG9zdDoiCisrCXNldCBkZWJ1Z2hvc3RfZ2Ric2VydmVyICRkZWJ1Z2hvc3QKKyAgICAg fQorIAorICAgICAjIFNvbWUgYm9hcmRzIHVzZSBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIHBv cnQgdGhhdCBpcyBwYXNzZWQgdG8KK0BAIC0yNzcsOCArMjkwLDE0IEBAIHByb2MgZ2Ric2VydmVy X3N0YXJ0IHsgb3B0aW9ucyBhcmd1bWVudHMgfSB7CisgCWlmIHsgJG9wdGlvbnMgIT0gIiIgfSB7 CisgCSAgICBhcHBlbmQgZ2Ric2VydmVyX2NvbW1hbmQgIiAkb3B0aW9ucyIKKyAJfQorKwlpZiB7 ICRkZWJ1Z2hvc3RfZ2Ric2VydmVyICE9ICIiIH0geworKwkgICAgYXBwZW5kIGdkYnNlcnZlcl9j b21tYW5kICIgJGRlYnVnaG9zdF9nZGJzZXJ2ZXIiCisrCX0KKyAJaWYgeyAkcG9ydG51bSAhPSAi IiB9IHsKKy0JICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiIFskZ2V0X2NvbW1fcG9ydCAk cG9ydG51bV0iCisrCSAgICBpZiB7ICRkZWJ1Z2hvc3RfZ2Ric2VydmVyID09ICIiIH0geworKwkJ YXBwZW5kIGdkYnNlcnZlcl9jb21tYW5kICIgIgorKwkgICAgfQorKwkgICAgYXBwZW5kIGdkYnNl cnZlcl9jb21tYW5kICJbJGdldF9jb21tX3BvcnQgJHBvcnRudW1dIgorIAl9CisgCWlmIHsgJGFy Z3VtZW50cyAhPSAiIiB9IHsKKyAJICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiICRhcmd1 bWVudHMiCitAQCAtMzA3LDYgKzMyNiw5IEBAIHByb2MgZ2Ric2VydmVyX3N0YXJ0IHsgb3B0aW9u cyBhcmd1bWVudHMgfSB7CisgCQkgICAgY29udGludWUKKyAJCX0KKyAJICAgIH0KKysJICAgIC1y ZSAiLio6IGNhbm5vdCByZXNvbHZlIG5hbWU6IE5hbWUgb3Igc2VydmljZSBub3Qga25vd25cclxu IiB7CisrCQllcnJvciAiZ2Ric2VydmVyIGNhbm5vdCByZXNvbHZlIG5hbWUuIgorKwkgICAgfQor IAkgICAgdGltZW91dCB7CisgCQllcnJvciAiVGltZW91dCB3YWl0aW5nIGZvciBnZGJzZXJ2ZXIg cmVzcG9uc2UuIgorIAkgICAgfQorZGlmZiAtLWdpdCBhL2dkYi91bml0dGVzdHMvcGFyc2UtY29u bmVjdGlvbi1zcGVjLXNlbGZ0ZXN0cy5jIGIvZ2RiL3VuaXR0ZXN0cy9wYXJzZS1jb25uZWN0aW9u LXNwZWMtc2VsZnRlc3RzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisr KysgYi9nZGIvdW5pdHRlc3RzL3BhcnNlLWNvbm5lY3Rpb24tc3BlYy1zZWxmdGVzdHMuYworQEAg LTAsMCArMSwyNDkgQEAKKysvKiBTZWxmIHRlc3RzIGZvciBwYXJzaW5nIGNvbm5lY3Rpb24gc3Bl Y3MgZm9yIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTgg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysK KysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJzZWxmdGVzdC5oIgorKyNpbmNsdWRlICJj b21tb24vbmV0c3R1ZmYuaCIKKysjaW5jbHVkZSAiZGlhZ25vc3RpY3MuaCIKKysjaWZkZWYgVVNF X1dJTjMyQVBJCisrI2luY2x1ZGUgPHdpbnNvY2syLmg+CisrI2luY2x1ZGUgPHdzcGlhcGkuaD4K KysjZWxzZQorKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrI2luY2x1ZGUgPGFycGEvaW5ldC5o PgorKyNpbmNsdWRlIDxuZXRkYi5oPgorKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1 ZGUgPG5ldGluZXQvdGNwLmg+CisrI2VuZGlmCisrCisrbmFtZXNwYWNlIHNlbGZ0ZXN0cyB7Cisr bmFtZXNwYWNlIHBhcnNlX2Nvbm5lY3Rpb25fc3BlY190ZXN0cyB7CisrCisrLyogQXV4aWxpYXJ5 IHN0cnVjdCB0aGF0IGhvbGRzIGluZm8gYWJvdXQgYSBzcGVjaWZpYyB0ZXN0IGZvciBhCisrICAg Y29ubmVjdGlvbiBzcGVjLiAgKi8KKysKKytzdHJ1Y3QgcGFyc2VfY29ubl90ZXN0CisreworKyAg LyogVGhlIGNvbm5lY3Rpb24gc3BlYy4gICovCisrICBjb25zdCBjaGFyICpjb25uc3BlYzsKKysK KysgIC8qIEV4cGVjdGVkIHJlc3VsdCBmcm9tICdwYXJzZV9jb25uZWN0aW9uX3NwZWMnLiAgKi8K KysgIHBhcnNlZF9jb25uZWN0aW9uX3NwZWMgZXhwZWN0ZWRfcmVzdWx0OworKworKyAgLyogVHJ1 ZSBpZiB0aGlzIHRlc3Qgc2hvdWxkIGZhaWwsIGZhbHNlIG90aGVyd2lzZS4gIElmIHRydWUsIG9u bHkKKysgICAgIHRoZSBDT05OU1BFQyBmaWVsZCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyB2YWxp ZC4gICovCisrICBib29sIHNob3VsZF9mYWlsOworKworKyAgLyogVGhlIGV4cGVjdGVkIEFJX0ZB TUlMWSB0byBiZSBmb3VuZCBvbiB0aGUgJ3N0cnVjdCBhZGRyaW5mbycKKysgICAgIEhJTlQuICAq LworKyAgaW50IGV4cF9haV9mYW1pbHk7CisrCisrICAvKiBUaGUgZXhwZWN0ZWQgQUlfU09DS1RZ UEUgdG8gYmUgZm91bmQgb24gdGhlICdzdHJ1Y3QgYWRkcmluZm8nCisrICAgICBISU5ULiAgKi8K KysgIGludCBleHBfYWlfc29ja3R5cGU7CisrCisrICAvKiBUaGUgZXhwZWN0ZWQgQUlfUFJPVE9D T0wgdG8gYmUgZm91bmQgb24gdGhlICdzdHJ1Y3QgYWRkcmluZm8nCisrICAgICBISU5ULiAgKi8K KysgIGludCBleHBfYWlfcHJvdG9jb2w7CisrfTsKKysKKysvKiBTb21lIGRlZmluZXMgdG8gaGVs cCB1cyBmaWxsIGEgJ3N0cnVjdCBwYXJzZV9jb25uX3Rlc3QnLiAgKi8KKysKKysvKiBJbml0aWFs aXplIGEgZnVsbCBlbnRyeS4gICovCisrI2RlZmluZSBJTklUX0VOVFJZKEFERFIsIEVYUF9IT1NU LCBFWFBfUE9SVCwgU0hPVUxEX0ZBSUwsIEVYUF9BSV9GQU1JTFksIFwKKysJCSAgIEVYUF9BSV9T T0NLVFlQRSwgRVhQX0FJX1BST1RPQ09MKQkJCVwKKysgIHsgQUREUiwgeyBFWFBfSE9TVCwgRVhQ X1BPUlQgfSwgU0hPVUxEX0ZBSUwsIEVYUF9BSV9GQU1JTFksIFwKKysgICAgRVhQX0FJX1NPQ0tU WVBFLCBFWFBfQUlfUFJPVE9DT0wgfQorKworKy8qIEluaXRpYWxpemUgYW4gdW5wcmVmaXhlZCBl bnRyeS4gIEluIHRoaXMgY2FzZSwgd2UgZG9uJ3QgZXhwZWN0CisrICAgYW55dGhpbmcgb24gdGhl ICdzdHJ1Y3QgYWRkcmluZm8nIEhJTlQuICAqLworKyNkZWZpbmUgSU5JVF9VTlBSRUZJWEVEX0VO VFJZKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAorKyAgSU5JVF9FTlRSWSAoQUREUiwgRVhQ X0hPU1QsIEVYUF9QT1JULCBmYWxzZSwgMCwgMCwgMCkKKysKKysvKiBJbml0aWFsaXplZCBhbiB1 bnByZWZpeGVkIElQdjYgZW50cnkuICBJbiB0aGlzIGNhc2UsIHdlIGRvbid0CisrICAgZXhwZWN0 IGFueXRoaW5nIG9uIHRoZSAnc3RydWN0IGFkZHJpbmZvJyBISU5ULiAgKi8KKysjZGVmaW5lIElO SVRfVU5QUkVGSVhFRF9JUFY2X0VOVFJZKEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCkgXAorKyAg SU5JVF9FTlRSWSAoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBmYWxzZSwgQUZfSU5FVDYsIDAs IDApCisrCisrLyogSW5pdGlhbGl6ZSBhIHByZWZpeGVkIGVudHJ5LiAgKi8KKysjZGVmaW5lIElO SVRfUFJFRklYRURfRU5UUlkoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JULCBFWFBfQUlfRkFNSUxZ LCBcCisrCQkJICAgIEVYUF9BSV9TT0NLVFlQRSwgRVhQX0FJX1BST1RPQ09MKSBcCisrICBJTklU X0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIGZhbHNlLCBFWFBfQUlfRkFNSUxZLCBc CisrCSAgICAgIEVYUF9BSV9TT0NLVFlQRSwgRVhQX0FJX1BST1RPQ09MKQorKworKy8qIEluaXRp YWxpemUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidGNwNDoiLiAgKi8KKysjZGVmaW5lIElOSVRf UFJFRklYRURfSVBWNF9UQ1AoQUREUiwgRVhQX0hPU1QsIEVYUF9QT1JUKSBcCisrICBJTklUX1BS RUZJWEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQsIEFGX0lORVQsIFNPQ0tfU1RS RUFNLCBcCisrCQkgICAgICAgSVBQUk9UT19UQ1ApCisrCisrLyogSW5pdGlhbGl6ZSBhbiBlbnRy eSBwcmVmaXhlZCB3aXRoICJ0Y3A2OiIuICAqLworKyNkZWZpbmUgSU5JVF9QUkVGSVhFRF9JUFY2 X1RDUChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQpIFwKKysgIElOSVRfUFJFRklYRURfRU5UUlkg KEFERFIsIEVYUF9IT1NULCBFWFBfUE9SVCwgQUZfSU5FVDYsIFNPQ0tfU1RSRUFNLCBcCisrCQkg ICAgICAgSVBQUk9UT19UQ1ApCisrCisrLyogSW5pdGlhbGl6ZSBhbiBlbnRyeSBwcmVmaXhlZCB3 aXRoICJ1ZHA0OiIuICAqLworKyNkZWZpbmUgSU5JVF9QUkVGSVhFRF9JUFY0X1VEUChBRERSLCBF WFBfSE9TVCwgRVhQX1BPUlQpIFwKKysgIElOSVRfUFJFRklYRURfRU5UUlkgKEFERFIsIEVYUF9I T1NULCBFWFBfUE9SVCwgQUZfSU5FVCwgU09DS19ER1JBTSwgXAorKwkJICAgICAgIElQUFJPVE9f VURQKQorKworKy8qIEluaXRpYWxpemUgYW4gZW50cnkgcHJlZml4ZWQgd2l0aCAidWRwNjoiLiAg Ki8KKysjZGVmaW5lIElOSVRfUFJFRklYRURfSVBWNl9VRFAoQUREUiwgRVhQX0hPU1QsIEVYUF9Q T1JUKSBcCisrICBJTklUX1BSRUZJWEVEX0VOVFJZIChBRERSLCBFWFBfSE9TVCwgRVhQX1BPUlQs IEFGX0lORVQ2LCBTT0NLX0RHUkFNLCBcCisrCQkgICAgICAgSVBQUk9UT19VRFApCisrCisrLyog SW5pdGlhbGl6ZSBhIGJvZ3VzIGVudHJ5LCBpLmUuLCBhIGNvbm5lY3Rpb24gc3BlYyB0aGF0IHNo b3VsZAorKyAgIGZhaWwuICAqLworKyNkZWZpbmUgSU5JVF9CT0dVU19FTlRSWShBRERSKSBcCisr ICBJTklUX0VOVFJZIChBRERSLCAiIiwgIiIsIHRydWUsIDAsIDAsIDApCisrCisrLyogVGhlIHZh cmlhYmxlIHdoaWNoIGhvbGRzIGFsbCBvZiBvdXIgdGVzdHMuICAqLworKworK3N0YXRpYyBjb25z dCBwYXJzZV9jb25uX3Rlc3QgY29ubl90ZXN0W10gPQorKyAgeworKyAgICAvKiBVbnByZWZpeGVk IGFkZHJlc3Nlcy4gICovCisrCisrICAgIC8qIElQdjQsIGhvc3QgYW5kIHBvcnQgcHJlc2VudC4g ICovCisrICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjEyNy4wLjAuMToxMjM0IiwgIjEyNy4w LjAuMSIsICIxMjM0IiksCisrICAgIC8qIElQdjQsIG9ubHkgaG9zdC4gICovCisrICAgIElOSVRf VU5QUkVGSVhFRF9FTlRSWSAoIjEyNy4wLjAuMSIsICIxMjcuMC4wLjEiLCAiIiksCisrICAgIC8q IElQdjQsIG1pc3NpbmcgcG9ydC4gICovCisrICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjEy Ny4wLjAuMToiLCAiMTI3LjAuMC4xIiwgIiIpLAorKworKyAgICAvKiBJUHY2LCBob3N0IGFuZCBw b3J0IHByZXNlbnQsIG5vIGJyYWNrZXRzLiAgKi8KKysgICAgSU5JVF9VTlBSRUZJWEVEX0VOVFJZ ICgiOjoxOjEyMzQiLCAiOjoxIiwgIjEyMzQiKSwKKysgICAgLyogSVB2NiwgbWlzc2luZyBwb3J0 LCBubyBicmFja2V0cy4gICovCisrICAgIElOSVRfVU5QUkVGSVhFRF9FTlRSWSAoIjo6MToiLCAi OjoxIiwgIiIpLAorKyAgICAvKiBJUHY2LCBob3N0IGFuZCBwb3J0IHByZXNlbnQsIHdpdGggYnJh Y2tldHMuICAqLworKyAgICBJTklUX1VOUFJFRklYRURfSVBWNl9FTlRSWSAoIls6OjFdOjEyMzQi LCAiOjoxIiwgIjEyMzQiKSwKKysgICAgLyogSVB2Niwgb25seSBob3N0LCB3aXRoIGJyYWNrZXRz LiAgKi8KKysgICAgSU5JVF9VTlBSRUZJWEVEX0lQVjZfRU5UUlkgKCJbOjoxXSIsICI6OjEiLCAi IiksCisrICAgIC8qIElQdjYsIG1pc3NpbmcgcG9ydCwgd2l0aCBicmFja2V0cy4gICovCisrICAg IElOSVRfVU5QUkVGSVhFRF9JUFY2X0VOVFJZICgiWzo6MV06IiwgIjo6MSIsICIiKSwKKysKKysg ICAgLyogVW5zcGVjaWZpZWQsIG9ubHkgcG9ydC4gICovCisrICAgIElOSVRfVU5QUkVGSVhFRF9F TlRSWSAoIjoxMjM0IiwgImxvY2FsaG9zdCIsICIxMjM0IiksCisrCisrICAgIC8qIFByZWZpeGVk IGFkZHJlc3Nlcy4gICovCisrCisrICAgIC8qIFByZWZpeGVkICJ0Y3A0OiIgSVB2NCwgaG9zdCBh bmQgcG9ydCBwcmVzZW50cy4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNF9UQ1AgKCJ0Y3A0 OjEyNy4wLjAuMToxMjM0IiwgIjEyNy4wLjAuMSIsICIxMjM0IiksCisrICAgIC8qIFByZWZpeGVk ICJ0Y3A0OiIgSVB2NCwgb25seSBwb3J0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY0X1RD UCAoInRjcDQ6OjEyMzQiLCAibG9jYWxob3N0IiwgIjEyMzQiKSwKKysgICAgLyogUHJlZml4ZWQg InRjcDQ6IiBJUHY0LCBvbmx5IGhvc3QuICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjRfVENQ ICgidGNwNDoxMjcuMC4wLjEiLCAiMTI3LjAuMC4xIiwgIiIpLAorKyAgICAvKiBQcmVmaXhlZCAi dGNwNDoiIElQdjQsIG1pc3NpbmcgcG9ydC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNF9U Q1AgKCJ0Y3A0OjEyNy4wLjAuMToiLCAiMTI3LjAuMC4xIiwgIiIpLAorKworKyAgICAvKiBQcmVm aXhlZCAidWRwNDoiIElQdjQsIGhvc3QgYW5kIHBvcnQgcHJlc2VudC4gICovCisrICAgIElOSVRf UFJFRklYRURfSVBWNF9VRFAgKCJ1ZHA0OjEyNy4wLjAuMToxMjM0IiwgIjEyNy4wLjAuMSIsICIx MjM0IiksCisrICAgIC8qIFByZWZpeGVkICJ1ZHA0OiIgSVB2NCwgb25seSBwb3J0LiAgKi8KKysg ICAgSU5JVF9QUkVGSVhFRF9JUFY0X1VEUCAoInVkcDQ6OjEyMzQiLCAibG9jYWxob3N0IiwgIjEy MzQiKSwKKysgICAgLyogUHJlZml4ZWQgInVkcDQ6IiBJUHY0LCBvbmx5IGhvc3QuICAqLworKyAg ICBJTklUX1BSRUZJWEVEX0lQVjRfVURQICgidWRwNDoxMjcuMC4wLjEiLCAiMTI3LjAuMC4xIiwg IiIpLAorKyAgICAvKiBQcmVmaXhlZCAidWRwNDoiIElQdjQsIG1pc3NpbmcgcG9ydC4gICovCisr ICAgIElOSVRfUFJFRklYRURfSVBWNF9VRFAgKCJ1ZHA0OjEyNy4wLjAuMToiLCAiMTI3LjAuMC4x IiwgIiIpLAorKworKworKyAgICAvKiBQcmVmaXhlZCAidGNwNjoiIElQdjYsIGhvc3QgYW5kIHBv cnQgcHJlc2VudC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ojo6MTox MjM0IiwgIjo6MSIsICIxMjM0IiksCisrICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2Niwgb25s eSBwb3J0LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1RDUCAoInRjcDY6OjEyMzQiLCAi bG9jYWxob3N0IiwgIjEyMzQiKSwKKysgICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2LCBvbmx5 IGhvc3QuICAqLworKyAgICAvL0lOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ojo6MSIsICI6 OjEiLCAiIiksCisrICAgIC8qIFByZWZpeGVkICJ0Y3A2OiIgSVB2NiwgbWlzc2luZyBwb3J0LiAg Ki8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1RDUCAoInRjcDY6OjoxOiIsICI6OjEiLCAiIiks CisrCisrICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2NiwgaG9zdCBhbmQgcG9ydCBwcmVzZW50 LiAgKi8KKysgICAgSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6OjoxOjEyMzQiLCAiOjox IiwgIjEyMzQiKSwKKysgICAgLyogUHJlZml4ZWQgInVkcDY6IiBJUHY2LCBvbmx5IHBvcnQuICAq LworKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVURQICgidWRwNjo6MTIzNCIsICJsb2NhbGhvc3Qi LCAiMTIzNCIpLAorKyAgICAvKiBQcmVmaXhlZCAidWRwNjoiIElQdjYsIG9ubHkgaG9zdC4gICov CisrICAgIC8vSU5JVF9QUkVGSVhFRF9JUFY2X1VEUCAoInVkcDY6OjoxIiwgIjo6MSIsICIiKSwK KysgICAgLyogUHJlZml4ZWQgInVkcDY6IiBJUHY2LCBtaXNzaW5nIHBvcnQuICAqLworKyAgICBJ TklUX1BSRUZJWEVEX0lQVjZfVURQICgidWRwNjo6OjE6IiwgIjo6MSIsICIiKSwKKysKKysgICAg LyogUHJlZml4ZWQgInRjcDY6IiBJUHY2IHdpdGggYnJhY2tldHMsIGhvc3QgYW5kIHBvcnQgcHJl c2VudC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2Ols6OjFdOjEyMzQi LCAiOjoxIiwgIjEyMzQiKSwKKysgICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2IHdpdGggYnJh Y2tldHMsIG9ubHkgaG9zdC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1AgKCJ0Y3A2 Ols6OjFdIiwgIjo6MSIsICIiKSwKKysgICAgLyogUHJlZml4ZWQgInRjcDY6IiBJUHY2IHdpdGgg YnJhY2tldHMsIG1pc3NpbmcgcG9ydC4gICovCisrICAgIElOSVRfUFJFRklYRURfSVBWNl9UQ1Ag KCJ0Y3A2Ols6OjFdOiIsICI6OjEiLCAiIiksCisrCisrICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIg SVB2NiB3aXRoIGJyYWNrZXRzLCBob3N0IGFuZCBwb3J0IHByZXNlbnQuICAqLworKyAgICBJTklU X1BSRUZJWEVEX0lQVjZfVURQICgidWRwNjpbOjoxXToxMjM0IiwgIjo6MSIsICIxMjM0IiksCisr ICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBvbmx5IGhvc3QuICAq LworKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVURQICgidWRwNjpbOjoxXSIsICI6OjEiLCAiIiks CisrICAgIC8qIFByZWZpeGVkICJ1ZHA2OiIgSVB2NiB3aXRoIGJyYWNrZXRzLCBtaXNzaW5nIHBv cnQuICAqLworKyAgICBJTklUX1BSRUZJWEVEX0lQVjZfVURQICgidWRwNjpbOjoxXToiLCAiOjox IiwgIiIpLAorKworKworKyAgICAvKiBCb2d1cyBhZGRyZXNzZXMuICAqLworKyAgICBJTklUX0JP R1VTX0VOVFJZICgidGNwNjpbOjoxXTEyMzo0NCIpLAorKyAgICBJTklUX0JPR1VTX0VOVFJZICgi Wzo6MSIpLAorKyAgICBJTklUX0JPR1VTX0VOVFJZICgidGNwNjo6OjFdOiIpLAorKyAgfTsKKysK KysvKiBUZXN0IGEgY29ubmVjdGlvbiBzcGVjIEMuICAqLworKworK3N0YXRpYyB2b2lkCisrdGVz dF9jb25uIChjb25zdCBwYXJzZV9jb25uX3Rlc3QgJmMpCisreworKyAgc3RydWN0IGFkZHJpbmZv IGhpbnQ7CisrICBwYXJzZWRfY29ubmVjdGlvbl9zcGVjIHJldDsKKysKKysgIG1lbXNldCAoJmhp bnQsIDAsIHNpemVvZiAoaGludCkpOworKworKyAgVFJZCisrICAgIHsKKysgICAgICByZXQgPSBw YXJzZV9jb25uZWN0aW9uX3NwZWMgKGMuY29ubnNwZWMsICZoaW50KTsKKysgICAgfQorKyAgQ0FU Q0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKKysgICAgeworKyAgICAgIC8qIElmIHdlIGNhdWdo dCBhbiBlcnJvciwgd2Ugc2hvdWxkIGNoZWNrIGlmIHRoaXMgY29ubmVjdGlvbgorKwkgc3BlYyB3 YXMgc3VwcG9zZWQgdG8gZmFpbC4gICovCisrICAgICAgU0VMRl9DSEVDSyAoYy5zaG91bGRfZmFp bCk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrICBFTkRfQ0FUQ0gKKysKKysgIFNFTEZfQ0hF Q0sgKCFjLnNob3VsZF9mYWlsKTsKKysgIFNFTEZfQ0hFQ0sgKHJldC5ob3N0X3N0ciA9PSBjLmV4 cGVjdGVkX3Jlc3VsdC5ob3N0X3N0cik7CisrICBTRUxGX0NIRUNLIChyZXQucG9ydF9zdHIgPT0g Yy5leHBlY3RlZF9yZXN1bHQucG9ydF9zdHIpOworKyAgU0VMRl9DSEVDSyAoaGludC5haV9mYW1p bHkgPT0gYy5leHBfYWlfZmFtaWx5KTsKKysgIFNFTEZfQ0hFQ0sgKGhpbnQuYWlfc29ja3R5cGUg PT0gYy5leHBfYWlfc29ja3R5cGUpOworKyAgU0VMRl9DSEVDSyAoaGludC5haV9wcm90b2NvbCA9 PSBjLmV4cF9haV9wcm90b2NvbCk7CisrfQorKworKy8qIFJ1biB0aGUgdGVzdHMgYXNzb2NpYXRl ZCB3aXRoIHBhcnNpbmcgY29ubmVjdGlvbiBzcGVjcy4gICovCisrCisrc3RhdGljIHZvaWQKKyty dW5fdGVzdHMgKCkKKyt7CisrICBmb3IgKGNvbnN0IHBhcnNlX2Nvbm5fdGVzdCAmYyA6IGNvbm5f dGVzdCkKKysgICAgdGVzdF9jb25uIChjKTsKKyt9CisrfSAvKiBuYW1lc3BhY2UgcGFyc2VfY29u bmVjdGlvbl9zcGVjX3Rlc3RzICovCisrfSAvKiBuYW1lc3BhY2Ugc2VsZnRlc3RzICovCisrCisr dm9pZAorK19pbml0aWFsaXplX3BhcnNlX2Nvbm5lY3Rpb25fc3BlY19zZWxmdGVzdHMgKCkKKyt7 CisrICBzZWxmdGVzdHM6OnJlZ2lzdGVyX3Rlc3QgKCJwYXJzZV9jb25uZWN0aW9uX3NwZWMiLAor KwkJCSAgICBzZWxmdGVzdHM6OnBhcnNlX2Nvbm5lY3Rpb25fc3BlY190ZXN0czo6cnVuX3Rlc3Rz KTsKKyt9CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2YyLnBhdGNoIGIvZ2Ri LXJoYno4ODE4NDktaXB2Ni0yb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAzMzljOTY2Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2Rq QHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDEzIEp1bCAyMDE4IDE2OjIwOjM0IC0wNDAwCi1TdWJq ZWN0OiBnZGItcmhiejg4MTg0OS1pcHY2LTJvZjIucGF0Y2gKLQotOzsgSW1wbGVtZW50IElQdjYg c3VwcG9ydCBmb3IgR0RCL2dkYnNlcnZlciAoUkggQlogODgxODQ5LCBTZXJnaW8gRHVyaWdhbiBK dW5pb3IpLgotCi1FeHBlY3QgZm9yIGFub3RoZXIgdmFyaWFudCBvZiBlcnJvciBtZXNzYWdlIHdo ZW4gZ2Ric2VydmVyIGNhbm5vdCByZXNvbHZlIGhvc3RuYW1lCi0KLUkndmUgbm90aWNlZCB0aGF0 IG9uIGEgZmV3IGhvc3RzLCB3aGVuIGdpdmVuIGFuIGludmFsaWQgaG9zdG5hbWUsCi1nZGJzZXJ2 ZXIgZmFpbHMgd2l0aDoKLQotICBzcGF3biAvLi4vLi4vZ2RiL2dkYnNlcnZlci9nZGJzZXJ2ZXIg LS1vbmNlIHRjcDg6MTIzOjIzNTMgL2dkYi9idWlsZC9mZWRvcmEtczM5MHgvYnVpbGQvZ2RiL3Rl c3RzdWl0ZS9vdXRwdXRzL2dkYi5zZXJ2ZXIvc2VydmVyLWNvbm5lY3Qvc2VydmVyLWNvbm5lY3QK LSAgdGNwODoxMjM6MjM1MzogY2Fubm90IHJlc29sdmUgbmFtZTogTm8gYWRkcmVzcyBhc3NvY2lh dGVkIHdpdGggaG9zdG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KLSAgRXhpdGluZwotCi1VbmZvcnR1 bmF0ZWx5LCB0aGlzIGNhdXNlcyBhIGZhaWwgb24gdGhlIG5ldwotZ2RiLnNlcnZlci9zZXJ2ZXIt Y29ubmVjdC5leHAgdGVzdCAoaW50cm9kdWNlZCBieSB0aGUgSVB2NiBwYXRjaCk6Ci0KLSAgRkFJ TDogZ2RiLnNlcnZlci9zZXJ2ZXItY29ubmVjdC5leHA6IHRjcDg6IHN0YXJ0IGdkYnNlcnZlcjog Z2Ric2VydmVyIHNob3VsZCBmYWlsIGJ1dCBkaWQgbm90Ci0KLVRoaXMgaGFwcGVucyBiZWNhdXNl IHdlJ3JlIGV4cGVjdGluZyBmb3IgYW5vdGhlciB2YXJpYW50IG9mIHRoaXMgZXJyb3IKLW1lc3Nh Z2U6Ci0KLSAgY2Fubm90IHJlc29sdmUgbmFtZTogTmFtZSBvciBzZXJ2aWNlIG5vdCBrbm93bgot Ci1UaGVyZWZvcmUsIHRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgaGVscGVyIGZ1bmN0aW9uICdnZGJz ZXJ2ZXJfc3RhcnQnIHRvCi1hbHNvIHJlY29nbml6ZSB0aGUgIk5vIGFkZHJlc3MgYXNzb2NpYXRl ZCB3aXRoIGhvc3RuYW1lIiBtZXNzYWdlLgotVGhpcyAiZml4ZXMiIHRoZSB0ZXN0Y2FzZSBvbiB0 aGUgaG9zdHMgdGhhdCB1c2UgdGhpcyB2YXJpYW50LgotCi1nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZzoKLTIwMTgtMDctMTMgIFNlcmdpbyBEdXJpZ2FuIEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5j b20+Ci0KLQkqIGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgKGdkYnNlcnZlcl9zdGFydCk6IEV4 cGVjdCBmb3IgdGhlCi0JbWVzc2FnZSAiTm8gYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggaG9zdG5h bWUiIHdoZW4gZ2Ric2VydmVyCi0JY2Fubm90IHJlc29sdmUgdGhlIGhvc3RuYW1lLgotCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSsrKyBiL2dkYi90ZXN0c3VpdGUvQ2hh bmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE4LTA3LTEzICBTZXJnaW8gRHVyaWdhbiBKdW5p b3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgotKwotKwkqIGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5l eHAgKGdkYnNlcnZlcl9zdGFydCk6IEV4cGVjdCBmb3IgdGhlCi0rCW1lc3NhZ2UgIk5vIGFkZHJl c3MgYXNzb2NpYXRlZCB3aXRoIGhvc3RuYW1lIiB3aGVuIGdkYnNlcnZlcgotKwljYW5ub3QgcmVz b2x2ZSB0aGUgaG9zdG5hbWUuCi0rCi0gMjAxOC0wNy0xMSAgU2VyZ2lvIER1cmlnYW4gSnVuaW9y ICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KLSAJICAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSAJICAgIFBhdWwgRmVydHNlciAgPGZlcmNlcnBhdkBnbWFpbC5j b20+Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwCi0tLS0gYS9nZGIvdGVz dHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvbGli L2dkYnNlcnZlci1zdXBwb3J0LmV4cAotQEAgLTMyNiw3ICszMjYsNyBAQCBwcm9jIGdkYnNlcnZl cl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRzIH0gewotIAkJICAgIGNvbnRpbnVlCi0gCQl9Ci0g CSAgICB9Ci0tCSAgICAtcmUgIi4qOiBjYW5ub3QgcmVzb2x2ZSBuYW1lOiBOYW1lIG9yIHNlcnZp Y2Ugbm90IGtub3duXHJcbiIgewotKwkgICAgLXJlICIuKjogY2Fubm90IHJlc29sdmUgbmFtZTog XChObyBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCBob3N0bmFtZXxOYW1lIG9yIHNlcnZpY2Ugbm90 IGtub3duXClcclxuIiB7Ci0gCQllcnJvciAiZ2Ric2VydmVyIGNhbm5vdCByZXNvbHZlIG5hbWUu IgotIAkgICAgfQotIAkgICAgdGltZW91dCB7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno4ODE4NDkt aXB2Ni0yb2YzLnBhdGNoIGIvZ2RiLXJoYno4ODE4NDktaXB2Ni0yb2YzLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MGJlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItcmhiejg4MTg0OS1pcHY2LTJvZjMucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBGRURP UkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdpbyBEdXJpZ2Fu IEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMzAgSnVsIDIwMTggMTU6 MjM6MjcgLTA0MDAKK1N1YmplY3Q6IGdkYi1yaGJ6ODgxODQ5LWlwdjYtMm9mMy5wYXRjaAorCitN YXRjaCBhbnkga2luZCBvZiBlcnJvciBhZnRlciAiY2Fubm90IHJlc29sdmUgbmFtZSIgb24gbGli L2dkYnNlcnZlci1zdXBwb3J0LmV4cDpnZGJzZXJ2ZXJfc3RhcnQKKworT24gY29tbWl0OgorCitj b21taXQgN2YxZjdlMjM5MzlhZGM3ZDcxMDM2YTE3ZmM2MDgxZTNhZjdjYTU4NQorQXV0aG9yOiBT ZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+CitEYXRlOiAgIEZyaSBK dWwgMTMgMTY6MjA6MzQgMjAxOCAtMDQwMAorCisgICAgRXhwZWN0IGZvciBhbm90aGVyIHZhcmlh bnQgb2YgZXJyb3IgbWVzc2FnZSB3aGVuIGdkYnNlcnZlciBjYW5ub3QgcmVzb2x2ZSBob3N0bmFt ZQorCitJIGV4dGVuZGVkIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gYmVpbmcgdXNlZCB0byBpZGVu dGlmeSB3aGV0aGVyCitnZGJzZXJ2ZXIgY291bGQgbm90IHJlc29sdmUgYSAoaG9zdCluYW1lLiAg VGhpcyB3YXMgbmVlZGVkIGJlY2F1c2UgdGhlCitlcnJvciBtZXNzYWdlIGJlaW5nIHByaW50ZWQg aGFkIGEgZGlmZmVyZW50IHZhcmlhdGlvbiBhY3Jvc3Mgc29tZQorc3lzdGVtcy4gIEhvd2V2ZXIs IGFzIGl0IHR1cm5zIG91dCwgSSd2ZSBqdXN0IG5vdGljZWQgdGhhdCB0aGUgbWVzc2FnZQoraGFz IHlldCBhbm90aGVyIHZhcmlhdGlvbjoKKworICB0YXJnZXQgcmVtb3RlIHRjcDg6MTIzOjIzNTMK KyAgdGNwODoxMjM6MjM1MzogY2Fubm90IHJlc29sdmUgbmFtZTogU3lzdGVtIGVycm9yCisgICAg ICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorICB0Y3A4OjEy MzoyMzUzOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LgorICAoZ2RiKSBGQUlMOiBnZGIuc2Vy dmVyL3NlcnZlci1jb25uZWN0LmV4cDogdGNwODogY29ubmVjdCB0byBnZGJzZXJ2ZXIgdXNpbmcg dGNwODoxMjMKKword2hpY2ggaXMgY2F1c2luZyBGQUlMcyBvbiBzb21lIHN5c3RlbXMgKG5hbWVs eSwgRmVkb3JhLWk2ODYgb24KK0J1aWxkQm90KS4KKworU28gaW5zdGVhZCBvZiB0cnlpbmcgdG8g cHJlZGljdCBldmVyeXRoaW5nIHRoYXQgY2FuIGJlIHByaW50ZWQsIEkKK2RlY2lkZWQgdG8ganVz dCBtYXRjaCBhbnl0aGluZyBhZnRlciB0aGUgImNhbm5vdCByZXNvbHZlIG5hbWU6ICIgcGFydC4K K1RoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGF0LgorCitSZWdyZXNzaW9uIHRlc3RlZCBvbiB0aGUg QnVpbGRCb3QuCisKK2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgorMjAxOC0wNy0zMCAgU2VyZ2lv IER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KKworCSogbGliL2dkYnNlcnZl ci1zdXBwb3J0LmV4cCAoZ2Ric2VydmVyX3N0YXJ0KTogTWF0Y2ggYW55IGtpbmQgb2YKKwllcnJv ciBhZnRlciAiY2Fubm90IHJlc29sdmUgbmFtZSIgc3RyaW5nLgorCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2Ric2VydmVyLXN1cHBvcnQuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXIt c3VwcG9ydC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4 cAorQEAgLTMyNiw3ICszMjYsNyBAQCBwcm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJn dW1lbnRzIH0geworIAkJICAgIGNvbnRpbnVlCisgCQl9CisgCSAgICB9CistCSAgICAtcmUgIi4q OiBjYW5ub3QgcmVzb2x2ZSBuYW1lOiBOYW1lIG9yIHNlcnZpY2Ugbm90IGtub3duXHJcbiIgewor KwkgICAgLXJlICIuKjogY2Fubm90IHJlc29sdmUgbmFtZTogLipcclxuIiB7CisgCQllcnJvciAi Z2Ric2VydmVyIGNhbm5vdCByZXNvbHZlIG5hbWUuIgorIAkgICAgfQorIAkgICAgdGltZW91dCB7 CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno4ODE4NDktaXB2Ni0zb2YzLnBhdGNoIGIvZ2RiLXJoYno4 ODE4NDktaXB2Ni0zb2YzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu Ljc4OWNiMTgKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmhiejg4MTg0OS1pcHY2LTNvZjMucGF0 Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IFNlcmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVkaGF0LmNv bT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAxODowNDozOCAtMDQwMAorU3ViamVjdDogZ2RiLXJo Yno4ODE4NDktaXB2Ni0zb2YzLnBhdGNoCisKK0ZpeCB0aGlua28gd2hlbiBkZWNpZGluZyB3aGV0 aGVyIHRvIGRpc2FibGUgVENQJ3MgTmFnbGUgYWxnb3JpdGhtCisKK1RoaXMgcGF0Y2ggZml4ZXMg YSB0aGlua28gdGhhdCBoYXBwZW5lZCB3aGVuIEkgd2FzIGltcGxlbWVudGluZyB0aGUKK0lQdjYg c3VwcG9ydCBvbiBHREIvZ2Ric2VydmVyLiAgT24gY2VydGFpbiBzaXR1YXRpb25zLCBpdCBpcyBu ZWNlc3NhcnkKK3RvIGRpc2FibGUgVENQJ3MgTmFnbGUgYWxnb3JpdGhtIChOT0RFTEFZKS4gIEZv ciBvYnZpb3VzIHJlYXNvbnMsIHRoaXMKK29ubHkgYXBwbGllcyB3aGVuIHdlIGFyZSBkZWFsaW5n IHdpdGggYSBUQ1AgY29ubmVjdGlvbi4KKworV2hpbGUgaW1wbGVtZW50aW5nIHRoZSBJUHY2IHBh dGNoLCBJIG5vdGljZWQgdGhhdCB0aGUgbmV0X29wZW4KK2Z1bmN0aW9uIChvbiBnZGIvc2VyLXRj cC5jKSBrZXB0IGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlCitjb25uZWN0aW9uIHR5cGUg d2FzIFVEUCBvciBUQ1AuICBJIGVsaW1pbmF0ZWQgdGhhdCBmbGFnLCBhbmQgc3RhcnRlZAordXNp bmcgdGhlICdzdHJ1Y3QgYWRkcmluZm8gKicgcmVsYXRlZCB0byB0aGUgc3VjY2Vzc2Z1bCBjb25u ZWN0aW9uCitkaXJlY3RseS4gIEhvd2V2ZXIsIEkgbWFkZSBhIG1pc3Rha2U6CisKKyAgaWYgKHN1 Y2Nlc3NfYWluZm8tPmFpX3NvY2t0eXBlID09IElQUFJPVE9fVENQKQorICAgICAgICAgICAgICAg ICAgICAgXl5eXl5eXl5eXl4KKyAgICB7CisgICAgICAvKiBEaXNhYmxlIE5hZ2xlIGFsZ29yaXRo bS4gIE5lZWRlZCBpbiBzb21lIGNhc2VzLiAgKi8KKyAgICAgIGludCB0bXAgPSAxOworCisgICAg ICBzZXRzb2Nrb3B0IChzY2ItPmZkLCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksCisJCSAgKGNo YXIgKikgJnRtcCwgc2l6ZW9mICh0bXApKTsKKyAgICB9CisKK1RoZSAnYWlfc29ja3R5cGUnIGZp ZWxkIHNwZWNpZmllcyB0aGUgc29ja2V0IHR5cGUgKFNPQ0tfU1RSRUFNIG9yCitTT0NLX0RHUkFN KSwgYW5kIG5vdCB0aGUgcHJvdG9jb2wuICBUaGlzIHRlc3Qgd2FzIGFsd2F5cyBmYWlsaW5nLCBh bmQKK3RoZSBOYWdsZSBhbGdvcml0aG0gd2FzIG5ldmVyIGJlaW5nIGRpc2FibGVkLgorCitUaGUg b2J2aW91cyBmaXggaXMgdG8gdXNlIHRoZSAnYWlfcHJvdG9jb2wnIGZpZWxkLiAgVGhpcyBpcyB3 aGF0IHRoaXMKK3BhdGNoIGRvZXMuCisKK0h1Z2UgInRoYW5rIHlvdSIgdG8gSm9lbCBCcm9iZWNr ZXIgd2hvIHJlcG9ydGVkIHRoZSByZWdyZXNzaW9uIChoZSB3YXMKK2V4cGVyaWVuY2luZyBhbiB1 bnVzdWFsIGRlbGF5IHdoaWxlIGRlYnVnZ2luZyBhIGJhcmUtbWV0YWwgcHJvZ3JhbQorcnVubmlu ZyB1bmRlciBRRU1VKSBhbmQgaGVscGVkIG1lIHNldCB1cCBhIHByb3BlciByZXByb2R1Y2VyIGZv ciB0aGUKK2J1Zy4KKworZ2RiL0NoYW5nZUxvZzoKKzIwMTgtMDgtMDMgIFNlcmdpbyBEdXJpZ2Fu IEp1bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+CisKKwkqIHNlci10Y3AuYyAobmV0X29wZW4p OiBGaXggdGhpbmtvIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0bworCWRpc2FibGUgVENQJ3MgTmFn bGUgYWxnb3JpdGhtICh1c2UgImFpX3Byb3RvY29sIiBpbnN0ZWFkIG9mCisJImFpX3NvY2t0eXBl IikuCisKK2RpZmYgLS1naXQgYS9nZGIvQ2hhbmdlTG9nIGIvZ2RiL0NoYW5nZUxvZworLS0tIGEv Z2RiL0NoYW5nZUxvZworKysrIGIvZ2RiL0NoYW5nZUxvZworQEAgLTEsMyArMSw5IEBACisrMjAx OC0wOC0wMyAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNvbT4KKysK KysJKiBzZXItdGNwLmMgKG5ldF9vcGVuKTogRml4IHRoaW5rbyB3aGVuIGRlY2lkaW5nIHdoZXRo ZXIgdG8KKysJZGlzYWJsZSBUQ1AncyBOYWdsZSBhbGdvcml0aG0gKHVzZSAiYWlfcHJvdG9jb2wi IGluc3RlYWQgb2YKKysJImFpX3NvY2t0eXBlIikuCisrCisgMjAxOC0wNy0yNSAgQWxhbiBIYXl3 YXJkICA8YWxhbi5oYXl3YXJkQGFybS5jb20+CisgCisgCSogdGFyZ2V0LWRlc2NyaXB0aW9ucy5j ICh0ZGVzY19yZWdpc3Rlcl9iaXRzaXplKTogUmVuYW1lLgorZGlmZiAtLWdpdCBhL2dkYi9zZXIt dGNwLmMgYi9nZGIvc2VyLXRjcC5jCistLS0gYS9nZGIvc2VyLXRjcC5jCisrKysgYi9nZGIvc2Vy LXRjcC5jCitAQCAtMzY3LDcgKzM2Nyw3IEBAIG5ldF9vcGVuIChzdHJ1Y3Qgc2VyaWFsICpzY2Is IGNvbnN0IGNoYXIgKm5hbWUpCisgCisgICBpb2N0bCAoc2NiLT5mZCwgRklPTkJJTywgJmlvYXJn KTsKKyAKKy0gIGlmIChzdWNjZXNzX2FpbmZvLT5haV9zb2NrdHlwZSA9PSBJUFBST1RPX1RDUCkK KysgIGlmIChzdWNjZXNzX2FpbmZvLT5haV9wcm90b2NvbCA9PSBJUFBST1RPX1RDUCkKKyAgICAg eworICAgICAgIC8qIERpc2FibGUgTmFnbGUgYWxnb3JpdGhtLiAgTmVlZGVkIGluIHNvbWUgY2Fz ZXMuICAqLworICAgICAgIGludCB0bXAgPSAxOwoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2Ri LnNwZWMKaW5kZXggZTAzYjdjZi4uMWM2ZDg2OCAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIv Z2RiLnNwZWMKQEAgLTI2LDcgKzI2LDcgQEAgVmVyc2lvbjogOC4xLjkwLiV7c25hcHNyY30KIAog IyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwg c3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBz dGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1S ZWxlYXNlOiA0MCV7P2Rpc3R9CitSZWxlYXNlOiA0MSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYz KyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBl eGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBMR1BMdjMrIGFuZCBCU0QgYW5kIFB1 YmxpYyBEb21haW4gYW5kIEdGREwKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTE2 OSwxNCArMTY5LDExIEBAIFNvdXJjZTU6ICV7bGlic3RkY3h4cHl0aG9ufS50YXIueHoKIFNvdXJj ZTY6IGdkYnR1aQogCiAjIGxpYmlwdDogSW50ZWwgUHJvY2Vzc29yIFRyYWNlIERlY29kZXIgTGli cmFyeQotJWdsb2JhbCBsaWJpcHRfdmVyc2lvbiAxLjYuMQorJWdsb2JhbCBsaWJpcHRfdmVyc2lv biAyLjAKICM9ZmVkb3JhCiBTb3VyY2U3OiB2JXtsaWJpcHRfdmVyc2lvbn0udGFyLmd6CiAjPWZl ZG9yYQogUGF0Y2gxMTQyOiB2MS41LWxpYmlwdC1zdGF0aWMucGF0Y2gKLSMgW3JoZWwgZHRzIGxp YmlwdF0gRml4IFstV2Vycm9yPWltcGxpY2l0LWZhbGx0aHJvdWdoPV0gd2l0aCBnY2MtNy4xLjEu Ci0jPXB1c2gramFuCi1QYXRjaDExNzE6IHYxLjYuMS1pbXBsaWNpdC1mYWxsdGhyb3VnaC5wYXRj aAogCiAjIyBbdGVzdHN1aXRlXSBGaXggZmFsc2Ugc2VsZnRlc3QuZXhwIEZBSUwgZnJvbSBzeXN0 ZW0gcmVhZGxpbmUtNi4zKyAoUGF0cmljayBQYWxrYSkuCiAjIz1mZWRvcmF0ZXN0CkBAIC0yMzcs NyArMjM0LDcgQEAgQnVpbGRSZXF1aXJlczogZ3VpbGUtZGV2ZWwle2J1aWxkaXNhfQogJWlmIDAl ez9lbDc6MX0gJiYgMCV7P3NjbDoxfQogQnVpbGRSZXF1aXJlczogY21ha2UKICVlbHNlCi0jQnVp bGRSZXF1aXJlczogbGliaXB0LWRldmVsJXtidWlsZGlzYX0KK0J1aWxkUmVxdWlyZXM6IGxpYmlw dC1kZXZlbCV7YnVpbGRpc2F9CiAlZW5kaWYKICVlbmRpZgogJWVuZGlmCkBAIC00MTUsNyArNDEy LDYgQEAgdGFyIHh6ZiAle1NPVVJDRTd9CiAoCiAgY2QgcHJvY2Vzc29yLXRyYWNlLSV7bGliaXB0 X3ZlcnNpb259CiAlcGF0Y2gxMTQyIC1wMQotJXBhdGNoMTE3MSAtcDEKICkKICVlbmRpZgogCkBA IC02MDgsNyArNjA0LDcgQEAgJCg6IHBwYzY0IGhvc3QgYnVpbGQgY3Jhc2hlcyBvbiBwcGMgdmFy aWFudCBvZiBsaWJleHBhdC5zbyApCVwKIAktLWRpc2FibGUtaW5wcm9jZXNzLWFnZW50CQkJCVwK ICVlbmRpZgogCS0td2l0aC1zeXN0ZW0temxpYgkJCQkJXAotJWlmIDAgJiYgJXtoYXZlX2xpYmlw dH0KKyVpZiAle2hhdmVfbGliaXB0fQogCS0td2l0aC1pbnRlbC1wdAkJCQkJCVwKICVlbHNlCiAJ LS13aXRob3V0LWludGVsLXB0CQkJCQlcCkBAIC0xMDI2LDYgKzEwMjIsMTIgQEAgZmkKICVlbmRp ZgogCiAlY2hhbmdlbG9nCisqIFdlZCBBdWcgIDggMjAxOCBTZXJnaW8gRHVyaWdhbiBKdW5pb3Ig PHNlcmdpb2RqQHJlZGhhdC5jb20+IC0gOC4xLjkwLjIwMTgwNzI3LTQxLmZjMjkKKy0gUmVlbmFi bGUgbGliaXB0LgorLSBSZWJ1aWxkIGR1ZSB0byBuZXcgbGliaXB0IHJlbGVhc2UuCistIEFkanVz dCBidW5kbGVkIGxpYmlwdDsgcmVtb3ZlIHVubmVjZXNzYXJ5IHBhdGNoLgorLSBTeW5jIElQdjYg cGF0Y2ggd2l0aCBGLTI4IEdEQi4KKwogKiBXZWQgQXVnICA4IDIwMTggU2VyZ2lvIER1cmlnYW4g SnVuaW9yIDxzZXJnaW9kakByZWRoYXQuY29tPiAtIDguMS45MC4yMDE4MDcyNy00MC5mYzI5CiAt IFRlbXBvcmFyaWx5IGRpc2FibGUgbGliaXB0IChuZWVkZWQgdG8gdXBncmFkZSBsaWJpcHQgdG8g Mi4wKS4KIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDE5M2M1N2QuLjVk OGI4NTMgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwzICsxLDMgQEAK IFNIQTUxMiAoZ2RiLWxpYnN0ZGMrKy12My1weXRob24tOC4xLjEtMjAxODA2MjYudGFyLnh6KSA9 IGE4YjFjNTRkZDM0OGNmZWIzN2RhNzNmOTY4NzQyODk2YmUzZGQxM2E0MjE1ZjhkODUxOTg3MGMy YWJlYTkxNWY1MTc2YzNmYTY5ODlkZGQxMGYyMDAyMGExNmYwZmFiMjBjYmFlNjhlZThkNThhODIy MzRkODc3ODAyMzUyMGY4Ci1TSEE1MTIgKHYxLjYuMS50YXIuZ3opID0gYzdjOWM4YmE3ODAyMWZm ZjNmZGUxMmEyMTZmNTcyOWM2MDMxMTE0ZTVhNzI3ZjQ5YjdmZjFhMzFjNTNiNWRkYmEyNGQxYjNh ZWUyNTJkODI3OGVjZDFmYWZlNzhhNDRlZDA1OWMxMmI5ZWIyOWVjYTMzMDkzZTA3MjA2NzM0NjgK IFNIQTUxMiAoZ2RiLTguMS45MC4yMDE4MDcyNy50YXIueHopID0gMGY4ZTljZmFlYWY5ZjIyMzYx YjNiOGQ1ZDQ5MGQwYThiZWEzZWVhYWEwYzY4MTNkNWRmMGE2ZDUyNjdmZjNmNTk3NzQ3Y2MwZTk3 ZDcwYzQxOTZkNzhlZTMyZTBlODJkNTg5MzI4M2Q3MWI0NDlkODk3MDM4OTNiZjFhZTAwMTQKK1NI QTUxMiAodjIuMC50YXIuZ3opID0gZWM2MzE1MWU4NDJjODFjYzczZWExMWJhNTYwYjYzZTAwNWNl ZmJlMTlkOThkZTI0YWU1YzhjYWE0ZGU3YzljMWQ3MWQxZWM1YjYyMTRhMzQ3NTkyZWFjNjc1Yjc1 YTNkMmIyNmQ0NjkxY2E4NmY5MTAyMGViZmVhOGU5MTI5MzkKCmRpZmYgLS1naXQgYS92MS41LWxp YmlwdC1zdGF0aWMucGF0Y2ggYi92MS41LWxpYmlwdC1zdGF0aWMucGF0Y2gKaW5kZXggNDc3YjZj NC4uNjU5OTQ0NSAxMDA2NDQKLS0tIGEvdjEuNS1saWJpcHQtc3RhdGljLnBhdGNoCisrKyBiL3Yx LjUtbGliaXB0LXN0YXRpYy5wYXRjaApAQCAtMSw2ICsxLDggQEAKLS0tLSBwcm9jZXNzb3ItdHJh Y2UtMS41L2xpYmlwdC9DTWFrZUxpc3RzLnR4dC1vcmlnCTIwMTYtMDQtMDcgMDg6NTI6MTQuMDAw MDAwMDAwICswMjAwCi0rKysgcHJvY2Vzc29yLXRyYWNlLTEuNS9saWJpcHQvQ01ha2VMaXN0cy50 eHQJMjAxNi0wOC0xNyAyMzoxMjoyMy4yNDExMDkyNDQgKzAyMDAKLUBAIC04MSw3ICs4MSw3IEBA IGVuZGlmIChDTUFLRV9IT1NUX1dJTjMyKQorSW5kZXg6IHByb2Nlc3Nvci10cmFjZS0yLjAvbGli aXB0L0NNYWtlTGlzdHMudHh0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHJvY2Vzc29yLXRyYWNlLTIuMC5v cmlnL2xpYmlwdC9DTWFrZUxpc3RzLnR4dAorKysrIHByb2Nlc3Nvci10cmFjZS0yLjAvbGliaXB0 L0NNYWtlTGlzdHMudHh0CitAQCAtODUsNyArODUsNyBAQCBlbmRpZiAoQ01BS0VfSE9TVF9XSU4z MikKICAKICBzZXQoTElCSVBUX0ZJTEVTICR7TElCSVBUX0ZJTEVTfSAke0xJQklQVF9TRUNUSU9O X0ZJTEVTfSkKICAKQEAgLTksOCArMTEsMTAgQEAKICAgICR7TElCSVBUX0ZJTEVTfQogICkKICAK LS0tLSBwcm9jZXNzb3ItdHJhY2UtMS41L2xpYmlwdC9zcmMvcG9zaXgvaW5pdC5jLW9yaWcJMjAx Ni0wNC0wNyAwODo1MjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBwcm9jZXNzb3ItdHJhY2UtMS41 L2xpYmlwdC9zcmMvcG9zaXgvaW5pdC5jCTIwMTYtMDgtMjMgMDk6MDQ6MTEuNTQwMTc2NjY4ICsw MjAwCitJbmRleDogcHJvY2Vzc29yLXRyYWNlLTIuMC9saWJpcHQvc3JjL3Bvc2l4L2luaXQuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIHByb2Nlc3Nvci10cmFjZS0yLjAub3JpZy9saWJpcHQvc3JjL3Bvc2l4 L2luaXQuYworKysrIHByb2Nlc3Nvci10cmFjZS0yLjAvbGliaXB0L3NyYy9wb3NpeC9pbml0LmMK IEBAIC0yOSw3ICsyOSw3IEBACiAgI2luY2x1ZGUgInB0X2lsZC5oIgogIAoKZGlmZiAtLWdpdCBh L3YxLjYuMS1pbXBsaWNpdC1mYWxsdGhyb3VnaC5wYXRjaCBiL3YxLjYuMS1pbXBsaWNpdC1mYWxs dGhyb3VnaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4NDRkMy4uMDAw MDAwMAotLS0gYS92MS42LjEtaW1wbGljaXQtZmFsbHRocm91Z2gucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyMyArMCwwIEBACi1nY2MtNy4xLjEtMS5mYzI3Lng4Nl82NAotL2hvbWUvamtyYXRv Y2gvcmVkaGF0L2ZlZG9yYS9saWJpcHQvbWFzdGVyL3Byb2Nlc3Nvci10cmFjZS0xLjYuMS9saWJp cHQvc3JjL3B0X2Jsb2NrX2RlY29kZXIuYzogSW4gZnVuY3Rpb24g4oCYcHRfYmxrX3Byb2NlZWRf bm9fZXZlbnRfY2FjaGVk4oCZOgotL2hvbWUvamtyYXRvY2gvcmVkaGF0L2ZlZG9yYS9saWJpcHQv bWFzdGVyL3Byb2Nlc3Nvci10cmFjZS0xLjYuMS9saWJpcHQvc3JjL3B0X2Jsb2NrX2RlY29kZXIu YzoyMjgyOjY6IGVycm9yOiB0aGlzIHN0YXRlbWVudCBtYXkgZmFsbCB0aHJvdWdoIFstV2Vycm9y PWltcGxpY2l0LWZhbGx0aHJvdWdoPV0KLSAgIGlmIChiY2UuaXNpemUpIHsKLSAgICAgIF4KLS9o b21lL2prcmF0b2NoL3JlZGhhdC9mZWRvcmEvbGliaXB0L21hc3Rlci9wcm9jZXNzb3ItdHJhY2Ut MS42LjEvbGliaXB0L3NyYy9wdF9ibG9ja19kZWNvZGVyLmM6MjMyODoyOiBub3RlOiBoZXJlCi0g IGNhc2UgcHRicV9kZWNvZGU6IHsKLSAgXn5+fgotCi1kaWZmIC0tZ2l0IGEvbGliaXB0L3NyYy9w dF9ibG9ja19kZWNvZGVyLmMgYi9saWJpcHQvc3JjL3B0X2Jsb2NrX2RlY29kZXIuYwotaW5kZXgg MjE3ODNhNi4uOTFkNWJiMyAxMDA2NDQKLS0tLSBhL2xpYmlwdC9zcmMvcHRfYmxvY2tfZGVjb2Rl ci5jCi0rKysgYi9saWJpcHQvc3JjL3B0X2Jsb2NrX2RlY29kZXIuYwotQEAgLTIwOTUsNiArMjA5 NSw5IEBAIHN0YXRpYyBpbnQgcHRfYmxrX3Byb2NlZWRfbm9fZXZlbnRfY2FjaGVkKHN0cnVjdCBw dF9ibG9ja19kZWNvZGVyICpkZWNvZGVyLAotIAkJfQotIAotIAkJLyogRmFsbCB0aHJvdWdoIHRv IHB0YnFfZGVjb2RlLiAqLwotKyNpZiBfX0dOVUNfXyA+PSA3Ci0rCQlfX2F0dHJpYnV0ZV9fICgo ZmFsbHRocm91Z2gpKTsKLSsjZW5kaWYKLSAKLSAJY2FzZSBwdGJxX2RlY29kZTogewotIAkJc3Ry dWN0IHB0X2luc25fZXh0IGlleHQ7Cg==