From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 21460 invoked from network); 17 Jun 2023 19:28:30 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 17 Jun 2023 19:28:30 -0000 Content-Type: multipart/mixed; boundary="===============5137543193215146374==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sat, 17 Jun 2023 21:28:30 +0200 List-Id: Message-ID: <20230617192830.pFapezel90STXg2JLi1Yo_hzDCYen4cSJlGP9Ccg0Ls@z> GitHub notification mails are now in MIME to allow UTF8. --===============5137543193215146374== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVk aWFzdHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1w ZWd0aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+ fmZmbXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXll cg0KLSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9j bWd1by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBh IHBhdGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkN Ci0gYG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZF IE5PVCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2Rp IChiaWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQot IH5+YmxlbmRlcjogdXBkYXRlIHRvIDMuNS4xfn4gfn53aWxsIGJlIHJldmJ1bXAgd2l0aH5+IGh0 dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzk5Mg0KLSB1 bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuDQotIGd1dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQot IHF0NTogdXBkYXRlIHRvIDUuMTUuOA0KLSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4x Mw0KLSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1w eXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44IChwYXRjaCkNCg0KDQojIyMjIyBSZXF1aXJlbWVudHMN Cg0KLSBbZ3N0cmVhbWVyIDEuMjIuMl0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQyODYxKSAtIGEgZmV3IHBhY2thZ2VzIHVzZSBmZm1wZWctZGV2ZWwg YW5kIHJlcXVpcmUgYSByZXZidW1wDQoNCi0gW0ludGVsIFBhY2thZ2VzXShodHRwczovL2dpdGh1 Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDExMzIpIC0gZmZtcGVnNCB1c2Vz IGRpZmZlcmVudCBsaWJyYXJpZXMgdGhhbiA2IChsaWJtZnggLyBJbnRlbC1NZWRpYVNESyB2cyBv bmx5IG9uZVZQTCB0aGF0IEludGVsIGlzIG1vdmluZyB0byksIGJvdGggYXJlIGluY2x1ZGVkIGhl cmUNCg0KLSBbc2hvdGN1dCAyMy4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgv dm9pZC1wYWNrYWdlcy9wdWxsLzQ0MjYwKQoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRo dWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQzNzYxLnBhdGNoIGlzIGF0dGFj aGVk --===============5137543193215146374== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSBmZDY0YmZlMGY3YzkyNjk2ZjU3ZmM5ZGEzZWIwMGJmYmRjMDJhZDE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE2XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysrKystLS0tLS0t CiA1IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDEzOCBkZWxldGlvbnMoLSkKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1w b2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29y a2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9u L3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggNDk0ZTk5Yjg5NTUwLi44OTJlMTE5ODAyY2Ig MTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMzg3LDE1 ICszODcsMjMgQEAgbGliaWQzdGFnLnNvLjAgbGliaWQzdGFnLTAuMTUuMWJfMQogbGliZ2lmLnNv LjcgZ2lmbGliLTUuMS4wXzEKIGxpYkltbGliMi5zby4xIGltbGliMi0xLjQuMl8xCiBsaWJtcDNs YW1lLnNvLjAgbGFtZS0zLjk4LjJfMQotbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2UtNC4w XzEKLWxpYmF2Zm9ybWF0LnNvLjU4IGxpYmF2Zm9ybWF0LTQuMF8xCi1saWJzd3NjYWxlLnNvLjUg bGlic3dzY2FsZS00LjBfMQotbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGUtNC4wXzEK LWxpYmF2cmVzYW1wbGUuc28uNCBsaWJhdnJlc2FtcGxlLTQuMF8xCi1saWJwb3N0cHJvYy5zby41 NSBsaWJwb3N0cHJvYy00LjBfMQotbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjLTQuMF8xCi1s aWJhdnV0aWwuc28uNTYgbGliYXZ1dGlsLTQuMF8xCi1saWJhdmZpbHRlci5zby43IGxpYmF2Zmls dGVyLTQuMF8xCitsaWJhdmRldmljZS5zby42MCBsaWJhdmRldmljZS02LjBfMQorbGliYXZmb3Jt YXQuc28uNjAgbGliYXZmb3JtYXQtNi4wXzEKK2xpYnN3c2NhbGUuc28uNyBsaWJzd3NjYWxlLTYu MF8xCitsaWJzd3Jlc2FtcGxlLnNvLjQgbGlic3dyZXNhbXBsZS02LjBfMQorbGlicG9zdHByb2Mu c28uNTcgbGlicG9zdHByb2MtNi4wXzEKK2xpYmF2Y29kZWMuc28uNjAgbGliYXZjb2RlYy02LjBf MQorbGliYXZ1dGlsLnNvLjU4IGxpYmF2dXRpbC02LjBfMQorbGliYXZmaWx0ZXIuc28uOSBsaWJh dmZpbHRlci02LjBfMQorbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2U0LTQuMF8xCitsaWJh dmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdDQtNC4wXzEKK2xpYnN3c2NhbGUuc28uNSBsaWJzd3Nj YWxlNC00LjBfMQorbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGU0LTQuMF8xCitsaWJh dnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZTQtNC4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU1IGxp YnBvc3Rwcm9jNC00LjBfMQorbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjNC00LjBfMQorbGli YXZ1dGlsLnNvLjU2IGxpYmF2dXRpbDQtNC4wXzEKK2xpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0 ZXI0LTQuMF8xCiBsaWJTREwtMS4yLnNvLjAgU0RMLTEuMi4xNF8xCiBsaWJTRExfaW1hZ2UtMS4y LnNvLjAgU0RMX2ltYWdlLTEuMi4xMF8xCiBsaWJ4MjY0LnNvLjE1NyB4MjY0LTIwMTkwNTA3LjIy NDVfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaCBiL3Ny Y3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDljNTcyMDA0NjMzMi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL2Zp bGVzL2FsdGl2ZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1yZXZlcnQg c29tZSBhbHRpdmVjIHNwZWNpZmljIGNoYW5nZSBvbiBhbGwgcHBjKiBleGNlcHQgcHBjNjRsZSoK LQotcTY2OiAiV2Ugc2hvdWxkIGFsc28gdGhyb3cgaW4gYSByZXZlcnQgb2YgRkZtcGVnL0ZGbXBl Z0AzYTU1N2M1IGJ1dCBvbmx5Ci1jb25kaXRpb25hbGx5LCBmb3IgcHBjKiBidXQgbm90IHBwYzY0 bGUqICh0aGUgbmV3IGNvZGUgaXMgdmFsaWQgZm9yCi1QT1dFUjggVlNYIHdoaWNoIExFIHRhcmdl dHMgYXMgYSBiYXNlbGluZSBidXQgbm90IEJFKSIKLQotCi1UaGlzIHJldmVydHMgY29tbWl0IDNh NTU3YzVkODhiN2IxNWI1OTU0YmEyNzQzZmViYjA1NTU0OWI1MzYuCi0tLS0KLSBsaWJzd3NjYWxl L3BwYy95dXYycmdiX2FsdGl2ZWMuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQotIDEg ZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgYi9saWJzd3NjYWxlL3BwYy95 dXYycmdiX2FsdGl2ZWMuYwotaW5kZXggNTM2NTQ1MjkzZC4uYzFlMjg1MmFkYiAxMDA2NDQKLS0t LSBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCi0rKysgYi9saWJzd3NjYWxlL3Bw Yy95dXYycmdiX2FsdGl2ZWMuYwotQEAgLTMwNSw2ICszMDUsOSBAQCBzdGF0aWMgaW50IGFsdGl2 ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAg ICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgUjEsIEcxLCBCMTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3IgdW5zaWduZWQgY2hh ciBSLCBHLCBCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy ICp5MWl2UCwgKnkyaXZQLCAqdWl2UCwgKnZpdlA7ICAgICAgICAgICAgICAgICAgXAotKyAgICB2 ZWN0b3IgdW5zaWduZWQgY2hhciBhbGlnbl9wZXJtOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBz aWduZWQgc2hvcnQgbENZICAgICAgID0gYy0+Q1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxPWSAgICAgICA9IGMtPk9ZOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBz aG9ydCBsQ1JWICAgICAgPSBjLT5DUlY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi1AQCAtMzM1LDEzICszMzgsMjYgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3 c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAgICAg ICAgdmVjX2RzdHN0KG91dGUsICgweDAyMDAwMDAyIHwgKCgodyAqIDMgKyAzMikgLyAzMikgPDwg MTYpKSwgMSk7ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBmb3Ig KGogPSAwOyBqIDwgdyAvIDE2OyBqKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotLSAgICAgICAgICAgIHkwID0gdmVjX3hsKDAsIHkxaSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MWl2UCA9 IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5MWk7ICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgeTJpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikg eTJpOyAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHVpdlAgID0gKGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHVpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsg ICAgICAgICAgICB2aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB2aTsgICAg ICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MCA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgdmVjX3Blcm0oeTFpdlBbMF0sIHkxaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB5MSA9IHZlY194 bCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkyaSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkxID0gKHZlY3RvciB1bnNp Z25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICAgICAgICAgICB2ZWNfcGVybSh5Mml2UFswXSwgeTJpdlBbMV0sIGFsaWduX3Blcm0p OyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAg IHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdWkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdWkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdSA9ICh2 ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odWl2UFswXSwgdWl2UFsxXSwgYWxp Z25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0t ICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB2aSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZz bCgwLCB2aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAg ICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh2aXZQWzBdLCB2 aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICB2 ZWNfc3ViKHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLS0gCi0yLjI3LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12 NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0 ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlh NTUxNzhjNzRmMC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJt djV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA Ci0tLS0gYS9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAw MDAwMDAwICswMjAwCi0rKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEg MTE6MDY6NDkuNjAyMjg0NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAj aW5jbHVkZSA8ZmVudi5oPgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4g QVJNIHNvZnQgZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZB TElEICAgIDAKLSsjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cg ICAwCi0rI2RlZmluZSBGRV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAot KyNlbmRpZgotKwotICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29u ZmlnL2ZvbnRjb25maWcuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoIGIvc3JjcGtncy9m Zm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTNmNjhhNDE1Yi4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGkt YnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4MTFkMjkwODQ0 MjA2ZmM3M2RjMzljM2U1YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogUmFpbmVyIEhvY2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgotRGF0ZTogU2F0 LCAyNiBKYW4gMjAxOSAxOTo0ODozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3Zh YXBpX2gyNjQ6IHNraXAgZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCi0KLVRoaXMgZml4ZXMg LyB3b3JrYXJvdW5kcyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9p ZD0xMDUzNjguCi1JdCB3YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5u ZWxzIHJlY2VpdmVkIHZpYSBEVkItWC4KLUNvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8v Z2l0aHViLmNvbS94Ym1jL3hibWMvaXNzdWVzLzE1NzA0Ci0tLS0KLSBsaWJhdmNvZGVjL3ZhYXBp X2gyNjQuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2 NC5jCi1pbmRleCA1ODU0NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0Ci0tLS0gYS9saWJhdmNv ZGVjL3ZhYXBpX2gyNjQuYwotKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKLUBAIC0zMTcs NiArMzE3LDExIEBAIHN0YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4KQotICAgICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07 Ci0gICAgIGludCByZXQ7Ci0gCi0rICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7Ci0rICAg ICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgZ290byBmaW5pc2g7Ci0r ICAgIH0KLSsKLSAgICAgcmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOwot ICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mZm1wZWcvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZQppbmRleCBkZjQx NzlkMTk2M2EuLmY3NDIwODJiYjUyMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1wZWcvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28gbmVlZHMgdG8gYmUgYnVtcGVk IHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZmb3JtYXQncyBzb25hbWUhCiBw a2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAordmVyc2lvbj02LjAKIHJldmlzaW9uPTEKIHNo b3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGluZyBhbmQgc3RyZWFtaW5nIHNvZnR3YXJlIgogbWFp bnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKQEAgLTksNyArOSw3IEBA IGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZGbXBl Zy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZtcGVn Lm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1lODBiMzgw ZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcwMzA5 CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1MDg2NjBlNmI3MThiM2Ri ODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIgog bWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1s aWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjYsMTMgQEAgbWFrZWRlcGVuZHM9 InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGli WGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVsKSAkKHZvcHRfaWYgc29m YSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0tZGV2ZWwpICQodm9wdF9p ZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0IHNydC1kZXZlbCkgJCh2 b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9h ZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2dWxrYW4tbG9hZGVyIFZ1 bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlvbkxheWVycycpCisgJCh2 b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2b3B0X2lmIG52ZW5jIG52 LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1oZWFkZXJzKSIKIGRlcGVu ZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVpbGRfb3B0aW9ucz0ieDI2 NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBzbmRpbyBwdWxzZWF1ZGlv Ci0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMi CisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEgc3J0IHJpc3QgbnZkZWMg b25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIgdnB4IGFvbSBzbmRpbyBw dWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIKIGRlc2Nfb3B0aW9uX3Ny dD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIK IGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRl cm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDEwICs0MCw4IEBAIGRlc2Nfb3B0aW9uX3Nv ZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0aW9uX3dlYnA9IkVuYWJs ZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlp Njg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKLQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIgotCQk7OworCWk2ODYqKSBidWls ZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMiOzsKKwl4ODZfNjQq KSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbnZlbmMgbnZkZWMgb25ldnBs Ijs7CiAJcHBjNjQqKSBidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUiOzsKIAlt aXBzKikgQ0ZMQUdTPSItbW5hbj1sZWdhY3kiOzsKIGVzYWMKQEAgLTExNywxOCArMTE2LDE5IEBA IGRvX2NvbmZpZ3VyZSgpIHsKIAkJJCh2b3B0X2VuYWJsZSB4MjY1IGxpYngyNjUpIFwKIAkJJCh2 b3B0X2VuYWJsZSB2NGwyIGxpYnY0bDIpIFwKIAkJJCh2b3B0X2VuYWJsZSBhb20gbGliYW9tKSAk KHZvcHRfZW5hYmxlIHZhYXBpKSAkKHZvcHRfZW5hYmxlIHZkcGF1KSBcCi0JCS0tZW5hYmxlLWxp YmJzMmIgLS1lbmFibGUtYXZyZXNhbXBsZSAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKKwkJLS1lbmFi bGUtbGliYnMyYiAtLWVuYWJsZS1saWJ2aWRzdGFiIFwKIAkJJCh2b3B0X2VuYWJsZSBkYXYxZCBs aWJkYXYxZCkgXAogCQkkKHZvcHRfZW5hYmxlIHppbWcgbGliemltZykgXAogCQkkKHZvcHRfZW5h YmxlIHdlYnAgbGlid2VicCkgXAogCQkkKHZvcHRfZW5hYmxlIHNvZmEgbGlibXlzb2ZhKSBcCiAJ CSQodm9wdF9lbmFibGUgdnVsa2FuKSBcCisJCSQodm9wdF9lbmFibGUgb25ldnBsIGxpYnZwbCkg XAogCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwKIAkJJCh2b3B0X2VuYWJsZSBzdnRhdjEg bGlic3Z0YXYxKSBcCiAJCSQodm9wdF9lbmFibGUgc3J0IGxpYnNydCkgXAogCQkkKHZvcHRfZW5h YmxlIHJpc3QgbGlicmlzdCkgXAotCQkkKHZvcHRfaWYgbnZlbmMgJy0tZW5hYmxlLW52ZW5jJykg XAotCQkkKHZvcHRfaWYgbnZkZWMgJy0tZW5hYmxlLW52ZGVjJykKKwkJJCh2b3B0X2VuYWJsZSBu dmVuYyBudmVuYykgXAorCQkkKHZvcHRfZW5hYmxlIG52ZGVjIG52ZGVjKQogfQogCiBkb19idWls ZCgpIHsKQEAgLTE1NSwxMCArMTU1LDggQEAgbGliYXZkZXZpY2VfcGFja2FnZSgpIHsKIH0KIAog bGliYXZyZXNhbXBsZV9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNh bXBsaW5nIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmF2 cmVzYW1wbGUuc28uKiIKLQl9CisJc2hvcnRfZGVzYz0iUGFja2FnZSBkZXByZWNhdGVkLCByZW1v dmFsIG5lZWRlZCIKKwlidWlsZF9zdHlsZT1tZXRhCiB9CiAKIGxpYmF2Zm9ybWF0X3BhY2thZ2Uo KSB7CkBAIC0yMTIsMTUgKzIxMCw5IEBAIGZmbXBlZy1kZXZlbF9wYWNrYWdlKCkgewogCQlsaWJh dmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJwb3N0cHJvYz49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0JCWxp YnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkJbGliYXZyZXNhbXBsZT49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3Jldmlz aW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0KLQlpZiBbICIkWEJQ U19UQVJHRVRfTUFDSElORSIgPSAiaTY4NiIgXTsgdGhlbgotCQkjIC91c3IvYmluL3N0cmlwOiBl cnJvcjogdGhlIGlucHV0IGZpbGUgJy9kZXN0ZGlyLy9mZm1wZWctZGV2ZWwtNC40LjQvdXNyL2xp Yi9saWJhdmZpbHRlci5hKHZmX2F0YWRlbm9pc2UubyknIGhhcyBubyBzZWN0aW9ucwotCQlub3N0 cmlwX2ZpbGVzPSIvdXNyL2xpYi9saWJhdmZpbHRlci5hIgotCWZpCi0KKwljb25mbGljdHM9ImZm bXBlZzQtZGV2ZWwiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9pbmNsdWRlCiAJCXZt b3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIDE2ZDQxOTc1OWJiOGQzOTczNTQ0ZDQ2MDM5NGEw YjFmNzI0NmI4MTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTY6MjIgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwMi8xMTZdIE5ldyBwYWNrYWdlOiBmZm1wZWc0LTQuNC40LgoKLS0tCiBzcmNw a2dzL2ZmbXBlZzQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtn cy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggICAgICAgICAgIHwgIDYwICsrKysrCiAuLi4v cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAgMTggKysKIC4uLi93 b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8ICAyOCArKysKIHNyY3Br Z3MvZmZtcGVnNC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDIzOCArKysrKysrKysr KysrKysrKysKIHNyY3BrZ3MvbGliYXZjb2RlYzQgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmNwa2dzL2xpYmF2ZGV2aWNlNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJhdmZpbHRlcjQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyY3BrZ3MvbGliYXZmb3JtYXQ0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjcGtncy9saWJhdnV0aWw0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Y3BrZ3MvbGlicG9zdHByb2M0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNw a2dzL2xpYnN3cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtn cy9saWJzd3NjYWxlNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDE0IGZpbGVz IGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9m Zm1wZWc0LWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2Fs dGl2ZWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3MvbGliYXZjb2RlYzQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xp YmF2ZGV2aWNlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmaWx0ZXI0CiBjcmVh dGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmZvcm1hdDQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBz cmNwa2dzL2xpYmF2cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnV0 aWw0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJwb3N0cHJvYzQKIGNyZWF0ZSBtb2Rl IDEyMDAwMCBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtn cy9saWJzd3NjYWxlNAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbCBiL3NyY3Br Z3MvZmZtcGVnNC1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAu Ljg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApA QCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBl ZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjljNTcyMDA0NjMzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9m aWxlcy9hbHRpdmVjLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK3JldmVydCBzb21lIGFsdGl2ZWMg c3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2NGxlKgorCitxNjY6ICJXZSBz aG91bGQgYWxzbyB0aHJvdyBpbiBhIHJldmVydCBvZiBGRm1wZWcvRkZtcGVnQDNhNTU3YzUgYnV0 IG9ubHkKK2NvbmRpdGlvbmFsbHksIGZvciBwcGMqIGJ1dCBub3QgcHBjNjRsZSogKHRoZSBuZXcg Y29kZSBpcyB2YWxpZCBmb3IKK1BPV0VSOCBWU1ggd2hpY2ggTEUgdGFyZ2V0cyBhcyBhIGJhc2Vs aW5lIGJ1dCBub3QgQkUpIgorCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgM2E1NTdjNWQ4OGI3YjE1 YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUzNi4KKy0tLQorIGxpYnN3c2NhbGUvcHBjL3l1djJyZ2Jf YWx0aXZlYy5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQs IDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZl Yy5jCitpbmRleCA1MzY1NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0NAorLS0tIGEvbGlic3dzY2Fs ZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKKysrKyBiL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0 aXZlYy5jCitAQCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShT d3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAgICAg dmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwgRzEsIEIxOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIFIsIEcsIEI7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKysgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKnkxaXZQLCAqeTJp dlAsICp1aXZQLCAqdml2UDsgICAgICAgICAgICAgICAgICBcCisrICAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIGFsaWduX3Blcm07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBs Q1kgICAgICAgPSBjLT5DWTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+T1k7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxDUlYgICAg ICA9IGMtPkNSVjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMzUs MTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5hbWUoU3dzQ29udGV4dCAqYywg Y29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCisgICAgICAgICB2ZWNfZHN0c3Qo b3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3ICogMyArIDMyKSAvIDMyKSA8PCAxNikpLCAxKTsgICAg ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGZvciAoaiA9IDA7IGogPCB3 IC8gMTY7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCist ICAgICAgICAgICAgeTAgPSB2ZWNfeGwoMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkxaXZQID0gKGNvbnN0IHZlY3Rv ciB1bnNpZ25lZCBjaGFyICopIHkxaTsgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg ICAgICB5Mml2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB5Mmk7ICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdWl2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgKikgdWk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHZp dlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHZpOyAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVy bSA9IHZlY19sdnNsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICAgICAgICAgIHkwID0gKHZlY3RvciB1bnNpZ25lZCBjaGFyKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICB2ZWNfcGVy bSh5MWl2UFswXSwgeTFpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHkxID0gdmVjX3hsKDAsIHkyaSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg ICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgeTEgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAg ICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgdSA9ICh2ZWN0b3Ig c2lnbmVkIGNoYXIpIHZlY194bCgwLCB1aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1aSk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQg Y2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgICAgICAgICB2ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFdLCBhbGlnbl9wZXJtKTsgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB2 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHZpKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHYgPSAodmVj dG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHZpdlBbMF0sIHZpdlBbMV0sIGFsaWdu X3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgIHZlY19zdWIodSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistLSAKKzIuMjcu MAorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGlu Zy1wb2ludC5wYXRjaCBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWE1 NTE3OGM3NGYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJt djV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorLS0tIGEvbGliYXZm aWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAzOjAzLjAwMDAwMDAwMCArMDIwMAor KysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTExLTIxIDExOjA2OjQ5LjYwMjI4 NDQyMiArMDEwMAorQEAgLTM5LDYgKzM5LDE1IEBACisgI2VuZGlmCisgI2luY2x1ZGUgPGZlbnYu aD4KKyAKKysjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKKysvKiBFLmcuIEFSTSBzb2Z0IGZsb2F0 IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLworKyNkZWZpbmUgRkVfSU5WQUxJRCAgICAwCisrI2Rl ZmluZSBGRV9ESVZCWVpFUk8gIDAKKysjZGVmaW5lIEZFX09WRVJGTE9XICAgMAorKyNkZWZpbmUg RkVfVU5ERVJGTE9XICAwCisrI2RlZmluZSBGRV9JTkVYQUNUICAgIDAKKysjZW5kaWYKKysKKyAj aWYgQ09ORklHX0xJQkZPTlRDT05GSUcKKyAjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmln Lmg+CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hl cy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMGUzZjY4YTQxNWIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1i dWcucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA4MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1 YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFpbmVyIEhv Y2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgorRGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAx OTo0ODozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBhdmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAg ZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCisKK1RoaXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBo dHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDUzNjguCitJdCB3 YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBoMjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZp YSBEVkItWC4KK0NvcnJlc3BvbmRpbmcga29kaSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1j L3hibWMvaXNzdWVzLzE1NzA0CistLS0KKyBsaWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysr KysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJh dmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCitpbmRleCA1ODU0 NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0CistLS0gYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQu YworKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKK0BAIC0zMTcsNiArMzE3LDExIEBAIHN0 YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorICAg ICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGljZV9jdHhbMF07CisgICAgIGludCByZXQ7 CisgCisrICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAwKSB7CisrICAgICAgICByZXQgPSBBVkVS Uk9SX0lOVkFMSUREQVRBOworKyAgICAgICAgZ290byBmaW5pc2g7CisrICAgIH0KKysKKyAgICAg cmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4LCBwaWMpOworICAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3Rl bXBsYXRlIGIvc3JjcGtncy9mZm1wZWc0L3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNTIyOGM3ZGYwOGZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9mZm1wZWc0L3RlbXBsYXRlCkBAIC0wLDAgKzEsMjM4IEBACisjIFRlbXBsYXRlIGZpbGUgZm9y ICdmZm1wZWc0JworIyBhdWRhY2l0eSBhbHNvIG5lZWRzIHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3 IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9ybWF0J3Mgc29uYW1lIQorcGtnbmFtZT1mZm1w ZWc0Cit2ZXJzaW9uPTQuNC40CityZXZpc2lvbj0xCitzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5j b2RpbmcgYW5kIHN0cmVhbWluZyBzb2Z0d2FyZSAtIGZmbXBlZzQgbGlicmFyaWVzIG9ubHkiCitt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BM LTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3d3dy5mZm1wZWcub3JnIgorY2hhbmdl bG9nPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRkZtcGVnL0ZGbXBlZy9tYXN0 ZXIvQ2hhbmdlbG9nIgorZGlzdGZpbGVzPSJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2Vz L2ZmbXBlZy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNrc3VtPWU4MGIzODBkNTk1YzgwOTA2MGY2 NmY5NmE1ZDg0OTUxMWVmNGE3NmEyNmI3NmVhY2Y1Nzc4Yjk0YzM1NzAzMDkKKworaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHBlcmwiCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBiemlwMi1k ZXZlbCBmcmVldHlwZS1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJYZml4ZXMtZGV2ZWwKKyBsaWJY ZXh0LWRldmVsIGxpYlh2TUMtZGV2ZWwgbGlieGNiLWRldmVsIGxhbWUtZGV2ZWwgbGlidGhlb3Jh LWRldmVsCisgbGlidm9yYmlzLWRldmVsIHgyNjQtZGV2ZWwgeHZpZGNvcmUtZGV2ZWwgamFjay1k ZXZlbCBTREwyLWRldmVsCisgbGliY2Rpby1wYXJhbm9pYS1kZXZlbCBsaWJydG1wLWRldmVsIGxp Ym1vZHBsdWctZGV2ZWwgZ251dGxzLWRldmVsCisgc3BlZXgtZGV2ZWwgY2VsdC1kZXZlbCBoYXJm YnV6ei1kZXZlbCBsaWJhc3MtZGV2ZWwgb3B1cy1kZXZlbCBvY2wtaWNkLWRldmVsCisgbGliYnMy Yi1kZXZlbCBsaWJ2aWRzdGFiLWRldmVsICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8t ZGV2ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxpYnZhLWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGli dmRwYXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgyNjUgeDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIg djRsLXV0aWxzLWRldmVsKQorICQodm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9w dF9pZiB2cHggbGlidnB4LWRldmVsKQorICQodm9wdF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZv cHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpCisgJCh2b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVs KSAkKHZvcHRfaWYgemltZyB6aW1nLWRldmVsKQorICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2 ZWwpICQodm9wdF9pZiBzb2ZhIGxpYm15c29mYS1kZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRy bS1kZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBsaWJzdnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBz cnQgc3J0LWRldmVsKSAkKHZvcHRfaWYgcmlzdCBsaWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2 dWxrYW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2FuLUhlYWRlcnMnKQorICQodm9wdF9pZiBtZnggJ2xp Ym1meCBsaWJtZngtZGV2ZWwnKQorICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAk KHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVycykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUg djRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbwor IGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIG1m eCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2NGwyIHZweCBhb20gc25kaW8gcHVsc2Vh dWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJpc3QiCisKK2Rlc2Nfb3B0aW9uX3NydD0i RW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIKK2Rl c2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRlcm5l dCBTdHJlYW0gVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZv ciBBRVMgU09GQSIKK2Rlc2Nfb3B0aW9uX3dlYnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgor CitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlpNjg2KikKKwkJCWhvc3RtYWtlZGVw ZW5kcys9IiBuYXNtIgorCQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52 ZW5jIG52ZGVjIgorCQkJOzsKKwl4ODZfNjQqKQorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20i CisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbWZ4IG52ZW5jIG52ZGVj IgorCQkJOzsKKwlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSI7 OworCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OworZXNhYworCitpZiBbICIkWEJQU19U QVJHRVRfV09SRFNJWkUiICE9ICIzMiIgXTsgdGhlbgorCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9 IiBzdnRhdjEiCitmaQorCitpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgor CW1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIKK2ZpCisKK19hcHBseV9wYXRjaCgpIHsK Kwlsb2NhbCBhcmdzPSIkMSIgcG5hbWU9IiQoYmFzZW5hbWUgJDIpIgorCisJaWYgWyAhIC1mICIu JHtwbmFtZX1fZG9uZSIgXTsgdGhlbgorCQlwYXRjaCAtTiAkYXJncyAtaSAkMgorCQl0b3VjaCAu JHtwbmFtZX1fZG9uZQorCWZpCit9CisKK3Bvc3RfcGF0Y2goKSB7CisJY2FzZSAiJFhCUFNfVEFS R0VUX01BQ0hJTkUiIGluCisJCXBwYzY0bGUqKSA7OworCQlwcGMqKSBfYXBwbHlfcGF0Y2ggLXAx ICR7RklMRVNESVJ9L2FsdGl2ZWMucGF0Y2ggOzsKKwllc2FjCit9CisKK2RvX2NvbmZpZ3VyZSgp IHsKKwkjIEZpeCBnY2Mgb24geDg2XzY0LW11c2wgb25seQorCWlmIFsgIiRYQlBTX1RBUkdFVF9N QUNISU5FIiA9ICJ4ODZfNjQtbXVzbCIgXTsgdGhlbgorCQl2c2VkIC1pIGNvbmZpZ3VyZSAtZSAi cztfY2ZsYWdzX3NwZWVkPSctTzMnO19jZmxhZ3Nfc3BlZWQ9Jy1PMic7IgorCWZpCisKKwlpZiBb ICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGlu CisJCQlhcm0qKSBfYXJjaD0iYXJtIjs7CisJCQlhYXJjaDY0KikgX2FyY2g9ImFhcmNoNjQiOzsK KwkJCW1pcHMqKSBfYXJjaD0ibWlwcyI7OworCQkJcHBjNjQqKSBfYXJjaD0icHBjNjQiOzsKKwkJ CXBwYyopIF9hcmNoPSJwcGMiOzsKKwkJCSopIF9hcmNoPSIke1hCUFNfVEFSR0VUX01BQ0hJTkUl JS1tdXNsfSI7OworCQllc2FjCisKKwkJX2FyZ3MrPSIgLS1lbmFibGUtY3Jvc3MtY29tcGlsZQor CQkJLS1zeXNyb290PSRYQlBTX0NST1NTX0JBU0UKKwkJCS0tY3Jvc3MtcHJlZml4PSR7WEJQU19D Uk9TU19UUklQTEVUfS0KKwkJCS0tdGFyZ2V0LW9zPWxpbnV4IC0tYXJjaD0ke19hcmNofSIKKwlm aQorCisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwY3xwcGMtbXVzbCkgX2Fy Z3MrPSIgLS1kaXNhYmxlLWFsdGl2ZWMiOzsKKwllc2FjCisKKwlpZiBbICIkWEJQU19UQVJHRVRf Tk9fQVRPTUlDOCIgXTsgdGhlbgorCQlfYXJncys9IiAtLWV4dHJhLWxpYnM9LWxhdG9taWMiCisJ ZmkKKworCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgLS1kaXNhYmxlLWRlYnVnIC0tZW5hYmxl LWdwbCAtLWVuYWJsZS1nbnV0bHMgXAorCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKKwkJLS1lbmFi bGUtbGliY2RpbyAtLWVuYWJsZS12ZXJzaW9uMyAtLWVuYWJsZS1ydW50aW1lLWNwdWRldGVjdCBc CisJCS0tZW5hYmxlLWxpYm1wM2xhbWUgLS1lbmFibGUtbGlidm9yYmlzIC0tZW5hYmxlLWxpYnh2 aWQgXAorCQktLWVuYWJsZS1saWJ4MjY0ICQodm9wdF9lbmFibGUgdnB4IGxpYnZweCkgLS1lbmFi bGUtbGlidGhlb3JhIFwKKwkJLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyAtLWVuYWJs ZS1saWJ4Y2IgXAorCQkkKHZvcHRfZW5hYmxlIHB1bHNlYXVkaW8gbGlicHVsc2UpIC0tZW5hYmxl LWxpYmZyZWV0eXBlIC0tZW5hYmxlLWxpYm1vZHBsdWcgXAorCQktLWVuYWJsZS1saWJzcGVleCAt LWVuYWJsZS1saWJjZWx0IC0tZW5hYmxlLWxpYmFzcyBcCisJCS0tZW5hYmxlLWxpYm9wdXMgLS1l bmFibGUtbGlicnRtcCAtLWVuYWJsZS1saWJqYWNrIFwKKwkJJCh2b3B0X2lmIGZka19hYWMgJy0t ZW5hYmxlLW5vbmZyZWUgLS1lbmFibGUtbGliZmRrLWFhYycpIFwKKwkJLS1kaXNhYmxlLWxpYm9w ZW5jb3JlX2Ftcm5iIC0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJ3YiBcCisJCS0tZGlzYWJsZS1s aWJvcGVuanBlZyBcCisJCS0tZW5hYmxlLXBvc3Rwcm9jIC0tZW5hYmxlLW9wZW5jbCAke19hcmdz fSBcCisJCSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1KSBcCisJCSQodm9wdF9lbmFibGUgdjRs MiBsaWJ2NGwyKSBcCisJCSQodm9wdF9lbmFibGUgYW9tIGxpYmFvbSkgJCh2b3B0X2VuYWJsZSB2 YWFwaSkgJCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxl LWF2cmVzYW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBcCisJCSQodm9wdF9lbmFibGUgZGF2MWQg bGliZGF2MWQpIFwKKwkJJCh2b3B0X2VuYWJsZSB6aW1nIGxpYnppbWcpIFwKKwkJJCh2b3B0X2Vu YWJsZSB3ZWJwIGxpYndlYnApIFwKKwkJJCh2b3B0X2VuYWJsZSBzb2ZhIGxpYm15c29mYSkgXAor CQkkKHZvcHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwK KwkJJCh2b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBcCisJCSQodm9wdF9lbmFibGUgc3J0 IGxpYnNydCkgXAorCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGlicmlzdCkgXAorCQkkKHZvcHRfZW5h YmxlIG1meCBsaWJtZngpIFwKKwkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJsZS1udmVuYycpIFwK KwkJJCh2b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCit9CisKK2RvX2J1aWxkKCkgewor CW1ha2UgJHttYWtlam9ic30KKwltYWtlIGRvYy9mZnttcGVnLHBsYXl9LjEKK30KKworZG9faW5z dGFsbCgpIHsKKwltYWtlIERFU1RESVI9JHtERVNURElSfSBpbnN0YWxsIGluc3RhbGwtbWFuCisJ cm0gLXJmICR7REVTVERJUn0vdXNyL2JpbgorfQorCitsaWJhdmNvZGVjNF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2M9IkZGbXBlZyBjb2RlYyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJhdmNvZGVjLnNvLioiCisJfQorfQorCitsaWJhdmRldmljZTRfcGFj a2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZGV2aWNlIGhhbmRsaW5nIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZGV2aWNlLnNvLioiCisJfQor fQorCitsaWJhdnJlc2FtcGxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRp byByZXNhbXBsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGli L2xpYmF2cmVzYW1wbGUuc28uKiIKKwl9Cit9CisKK2xpYmF2Zm9ybWF0NF9wYWNrYWdlKCkgewor CXNob3J0X2Rlc2M9IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSAidXNyL2xpYi9saWJhdmZvcm1hdC5zby4qIgorCX0KK30KKworbGliYXZ1dGls NF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB1dGlsaXR5IGxpYnJhcnkiCisJcGtn X2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2dXRpbC5zby4qIgorCX0KK30KKwor bGliYXZmaWx0ZXI0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1ZGlvL3ZpZGVv IGZpbHRlciBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJh dmZpbHRlci5zby4qIgorCX0KK30KKworbGlicG9zdHByb2M0X3BhY2thZ2UoKSB7CisJc2hvcnRf ZGVzYz0iRkZtcGVnIHZpZGVvIHBvc3Rwcm9jZXNzaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnBvc3Rwcm9jLnNvLioiCisJfQorfQorCitsaWJzd3Nj YWxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyBzY2FsaW5nIGxpYnJh cnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3c2NhbGUuc28uKiIK Kwl9Cit9CisKK2xpYnN3cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVn IHZpZGVvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVz ci9saWIvbGlic3dyZXNhbXBsZS5zby4qIgorCX0KK30KKworZmZtcGVnNC1kZXZlbF9wYWNrYWdl KCkgeworCWRlcGVuZHM9IgorCQlsaWJhdmNvZGVjND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQor CQlsaWJhdmRldmljZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZmb3JtYXQ0Pj0k e3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2dXRpbDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KKwkJbGliYXZmaWx0ZXI0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnBvc3Rwcm9j ND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJzd3NjYWxlND49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQorCQlsaWJzd3Jlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJh dnJlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2 ZWxvcG1lbnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWctZGV2ZWwiCisJaWYgWyAiJFhCUFNf VEFSR0VUX01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KKwkJIyAvdXNyL2Jpbi9zdHJpcDogZXJy b3I6IHRoZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIv bGliYXZmaWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKKwkJbm9zdHJp cF9maWxlcz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKKwlmaQorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAi dXNyL2xpYi8qLmEiCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJCXZtb3ZlIHVzci9zaGFyZS9m Zm1wZWcvZXhhbXBsZXMKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4zCisJfQorfQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJhdmNvZGVjNCBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKbmV3IGZpbGUg bW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYmF2Y29kZWM0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2ZGV2aWNlNCBi L3NyY3BrZ3MvbGliYXZkZXZpY2U0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmRldmlj ZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZmaWx0ZXI0IGIvc3JjcGtncy9saWJhdmZpbHRlcjQKbmV3 IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApAQCAtMCwwICsxIEBACitmZm1wZWc0 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZv cm1hdDQgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGli YXZmb3JtYXQ0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0IGIvc3JjcGtncy9saWJhdnJl c2FtcGxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRl N2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQKQEAgLTAsMCAr MSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGliYXZ1dGlsNCBiL3NyY3BrZ3MvbGliYXZ1dGlsNApuZXcgZmlsZSBtb2RlIDEyMDAw MAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvbGliYXZ1dGlsNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJwb3N0cHJvYzQgYi9zcmNwa2dzL2xp YnBvc3Rwcm9jNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2Yz NTRlN2M2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGlicG9zdHByb2M0CkBAIC0wLDAg KzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYnN3cmVzYW1wbGU0IGIvc3JjcGtncy9saWJzd3Jlc2FtcGxlNApuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YgotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dzY2FsZTQg Yi9zcmNwa2dzL2xpYnN3c2NhbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMC4uODg3ZjM1NGU3YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJzd3NjYWxl NApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKRnJv bSBjNmNiMDI4MTBlZjQxZGNhYjI2NDJmNzgwMzIxNDg1Mjg1MzFhZDViIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMvMTE2XSBvcGVuY3Y6 IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgfCAxMDQgKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9vcGVuY3YvdGVt cGxhdGUgfCAgIDggKystLQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwpp bmRleCA4OTJlMTE5ODAyY2IuLmNlMGM1MThmMDBlZiAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGli cworKysgYi9jb21tb24vc2hsaWJzCkBAIC0yMTM0LDU4ICsyMTM0LDU4IEBAIGxpYmNhcHN0b25l LnNvLjQgY2Fwc3RvbmUtNC4wXzEKIGxpYmhhdmVnZS5zby4yIGxpYmhhdmVnZWQtMS45LjExXzEK IGxpYm5paC5zby4xIGxpYm5paC0xLjAuM18xCiBsaWJuaWgtZGJ1cy5zby4xIGxpYm5paC0xLjAu M18xCi1saWJvcGVuY3ZfcXVhbGl0eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9yZWcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGlu Zy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94cGhvdG8uc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZnJlZXR5cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfZnV6enkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaGZz LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ19oYXNoLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2xpbmVfZGVzY3JpcHRvci5zby40MDYgbGlib3BlbmN2 LTQuNi4wXzEKLWxpYm9wZW5jdl9zYWxpZW5jeS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2FydWNvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jnc2VnbS5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iaW9pbnNwaXJlZC5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jY2FsaWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfZmFjZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl90cmFja2lu Zy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94ZmVhdHVyZXMyZC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9vcHRmbG93LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X3Bsb3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdGV4dC5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9tbC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf ZG5uLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NoYXBlLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0aXRjaGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9waG90by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92 aWRlby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jYWxpYjNkLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfZmxhbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfaGlnaGd1aS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRlb2lvLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ2NvZGVjcy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdwcm9jLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2NvcmUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3VwZXJy ZXMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW9zdGFiLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2dhcGkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl9kYXRhc2V0cy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm5fb2JqZGV0 ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubl9zdXBlcnJlcy5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kcG0uc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfcGhhc2VfdW53cmFwcGluZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9zdGVyZW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmFw aWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9y bS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hbHBoYW1hdC5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iYXJjb2RlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X21jYy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKK2xpYm9wZW5jdl9xdWFs aXR5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3JlZy5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdXJmYWNlX21hdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3hwaG90by5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9mcmVldHlwZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mdXp6eS5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oZnMuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfaW1nX2hhc2guc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2 X3NhbGllbmN5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0cnVjdHVyZWRf bGlnaHQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYXJ1Y28uc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmdzZWdtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2Jpb2luc3BpcmVkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2NjYWxpYi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mYWNlLnNvLjQw NyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3RyYWNraW5nLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X3hmZWF0dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X29wdGZsb3cuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGlt Z3Byb2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGxvdC5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl90ZXh0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X21sLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X29iamRldGVj dC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm4uc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3Zfc2hhcGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfc3RpdGNoaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Bob3Rv LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvLnNvLjQwNyBsaWJvcGVu Y3YtNC43LjBfMQorbGlib3BlbmN2X2NhbGliM2Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9m bGFubi5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvaW8uc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3ZfaW1nY29kZWNzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2ltZ3Byb2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY29yZS5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRlb3N0YWIuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfZ2FwaS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl94b2JqZGV0 ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubl9vYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfZG5uX3N1cGVycmVzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2RwbS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waGFz ZV91bndyYXBwaW5nLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0ZXJlby5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9yYXBpZC5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9pbnRlbnNpdHlfdHJhbnNmb3JtLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X2FscGhhbWF0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2JhcmNvZGUuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWNjLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQogbGlidW5pY29uZi5zby40LjYgd3ZzdHJlYW1zLTQuNi4x XzIwCiBsaWJ3dmJhc2Uuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3Z1dGlscy5zby40 LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvb3BlbmN2L3RlbXBsYXRlCmluZGV4IDY5YzYzNWIxYWQyYi4uNDFmMzE4M2Yx NTgyIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29w ZW5jdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5j dicKIHBrZ25hbWU9b3BlbmN2Ci12ZXJzaW9uPTQuNi4wCi1yZXZpc2lvbj00Cit2ZXJzaW9uPTQu Ny4wCityZXZpc2lvbj0xCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPSR7cGtnbmFt ZX0tJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTI0LDggKzI0LDggQEAgaG9tZXBh Z2U9Imh0dHBzOi8vb3BlbmN2Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29w ZW5jdi9vcGVuY3Yvd2lraS9DaGFuZ2VMb2ciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9vcGVuY3Yvb3BlbmN2L2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1 Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3o+Y29u dHJpYi50YXIuZ3oiCi1jaGVja3N1bT0iMWVjMWNiYTY1ZjlmMjBmZTVhNDFmZGExNTg2ZTAxYzcw ZWEwYzlhNmQ3YjY3YzllMTNlZGYwY2ZlMjIzOTI3NwotIDE3NzdkNWZkMmI1OTAyOWNmNTM3ZTVm ZDZmOGFhNjhkNzA3MDc1ODIyZjkwYmRlNjgzZmNkZTA4NmY4NWY3YTciCitjaGVja3N1bT0iOGRm MDA3OWNkYmUxNzk3NDhhMThkNDQ3MzFhZjYyYTI0NWE0NWViZjUwODUyMjNkYzAzMTMzOTU0YzY2 Mjk3MworIDQyZGY4NDBjZjkwNTVlNTlkMGUyMmMyNDljZmIxOWYwNDc0M2UxYmRhZDExM2QzMWIx NTczZDM5MzRkNjI1ODQiCiBwYXRjaF9hcmdzPSItTnAxIC1kICR7YnVpbGRfd3Jrc3JjfSIKICMg dGVzdHMgaGFuZyBpbmRlbmZpbml0ZWx5LCBldmVuIHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBt YWtlX2NoZWNrPW5vCgpGcm9tIGJiMWYyY2ZmOWYyMGEzMTcxZGY5OGFlMTMzYjhmYjZiYzE2NTE1 OTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENI IDAwNC8xMTZdIGFjdGlvbmE6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dz L2FjdGlvbmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9z cmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKaW5kZXggY2Y1ZjBiN2EyYWU2Li4wZDg5OTMxMWU2ZGYg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FjdGlv bmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhY3Rpb25h JwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2aXNpb249MgorcmV2aXNpb249 MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQS0dDT05GSUdfT1BFTkNWPW9w ZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXBsdWdpbi1teXNxbCBxdDUt cW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIDVkYWQ1MTRmODUwZWQ0ZjhkODBmZTM4MmJjODBk NjdjZmRlNjA5YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVj dDogW1BBVENIIDAwNS8xMTZdIGdtaWM6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL2dtaWMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUgYi9z cmNwa2dzL2dtaWMvdGVtcGxhdGUKaW5kZXggMjRhOWM3MjE4ZmRmLi4wYmI0MDM0ZDVjYzggMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dtaWMvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnbWljJwogcGtnbmFtZT1n bWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfemFydF9oYXNoPTM0 ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRhMDJjZDFhYmVjYTAKIGNyZWF0ZV93cmtzcmM9eWVz CiBidWlsZF93cmtzcmM9InNyYyIKCkZyb20gMTM1MzhkMWQwNWE4YzkwMDA0ZDY3YTg2ZDc1ODFi OTIwM2UzMjFjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDA2LzExNl0gcWltZ3Y6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBz cmNwa2dzL3FpbWd2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBi L3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKaW5kZXggN2ViMzBkYjMzOTkyLi5kZDM0MWRmZTFiZmMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xaW1ndi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FpbWd2JwogcGtn bmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgdmlkZW8gLURWSURFT19TVVBQ T1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0X2lmIHNjYWxlIC1ET1BFTkNWX1NV UFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9tIDQ3MjRmMTdhMDhkOTc4YTFlOTRj YjEyNTdiOGIyNGIxODkwZjMwZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAwNy8xMTZdIHJldHJvc2hhcmU6IHJldmJ1bXAgZm9yIG9wZW5j di00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKaW5k ZXggOGEwNzg2YzIxYTA4Li43MjAyM2ZhOThiNzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmV0cm9z aGFyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZXRyb3NoYXJlJwogcGtnbmFtZT1yZXRyb3No YXJlCiB2ZXJzaW9uPTAuNi42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1x bWFrZQogI1hYWCBicm9hZGNhc3QgZmVhdHVyZSByZXF1aXJlcyBhbiBhbmNpZW50IHVkcC1kaXNj b3ZlcnktY3BwIHdoaWNoIGVpdGhlciBuZWVkcwogIyB0byBiZSBmZXRjaGVkK3BhdGNoZWQgKEZU QkZTKSBoZXJlIG9yIHBhY2thZ2VkIDovCgpGcm9tIGQwZjE2MmE1Y2FlYjAwNjMwYzljMDI0MzFj ODY1MWUxOWUyNWNhNzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAwOC8xMTZdIHdhaWZ1MngtY29udmVydGVyLWNwcDogcmV2YnVtcCBmb3Ig b3BlbmN2LTQuNy4wCgotLS0KIHNyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgYi9zcmNw a2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZQppbmRleCA4YzA5NWQwZDdiYWIuLmFh NTJkOGM5ODFhOCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVt cGxhdGUKKysrIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBw a2duYW1lPXdhaWZ1MngtY29udmVydGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249Mgor cmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExf TU9ERUxTPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA4ZWFkYzRjNDhl NjMzYzVlYjM4ODk5ODExMTQ2YWE1NjU2ZDk2MmZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAwOjM4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDkvMTE2XSB2bGM6IHJldmJ1bXAgZm9yIGZm bXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92bGMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy92bGMvdGVtcGxhdGUgYi9zcmNwa2dzL3ZsYy90ZW1wbGF0ZQppbmRleCAyMTA3NjJiMGE3 ZTIuLjg1NWNhNTIzODY2MiAxMDA2NDQKLS0tIGEvc3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lvbj0zLjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9u PTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUt Z21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFibGUtamFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1k aXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUtZHZkcmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIz MmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25m aWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZlbAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1k ZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZvcHRfaWYgY2hyb21lY2FzdCBwcm90b2J1Ziki CiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDIt ZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1n bGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQtZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxz LWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVsIGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2 ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZlbCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2 LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJvc2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwg bGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVsCgpGcm9tIDQxOTRhN2U0MzVkMGYzMTg4Zjc4 MzU4Nzg2YjY4YTFiYjZlOGY3MTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAxMC8xMTZdIG9zZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBs YXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5kZXggYTllYmJkMjg3OTMzLi43NTU3OTNmN2Ux MWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlCkBAIC04LDcgKzgsNyBAQCBidWlsZF9oZWxwZXI9InFlbXUiCiBjb25maWd1cmVfYXJn cz0iLURMSUJfUE9TVEZJWD0iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeHJhbmRyIgog bWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgZ3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBn aWZsaWItZGV2ZWwgbGlicnN2Zy1kZXZlbAotIGphc3Blci1kZXZlbCB0aWZmLWRldmVsIGxpYmdk YWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZy1kZXZlbCB4aW5lLWxpYi1kZXZlbAorIGphc3Bl ci1kZXZlbCB0aWZmLWRldmVsIGxpYmdkYWwtZGV2ZWwgbGliZ3RhLWRldmVsIGZmbXBlZzQtZGV2 ZWwgeGluZS1saWItZGV2ZWwKICBTREwyLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAg JCh2b3B0X2lmIG9wZW5leHIgbGlib3BlbmV4ci1kZXZlbCkKICAkKHZvcHRfaWYgcG9wcGxlciBw b3BwbGVyLWdsaWItZGV2ZWwpCgpGcm9tIDY5ZWJkZWJmMjI2NWE1ZTU3ZmUyNzVkN2VkNGMxODhm M2E5OGE3NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6MTMgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxMS8xMTZdIHhpbmUtbGliOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0K IHNyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3hpbmUt bGliL3RlbXBsYXRlIGIvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQppbmRleCBmNzEzZWZmNDli MDcuLmVkNjE5NGMxN2QxMSAxMDA2NDQKLS0tIGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3hpbmUtbGliL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAneGluZS1saWInCiBwa2duYW1lPXhpbmUtbGliCi12ZXJzaW9uPTEuMi4xMgor dmVyc2lvbj0xLjIuMTMKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNv bmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdmNkIC0tZGlzYWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQt ZXNvdW5kIC0tZGlzYWJsZS1keHIzCkBAIC04LDcgKzgsNyBAQCBjb25maWd1cmVfYXJncz0iLS1k aXNhYmxlLXZjZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUt ZHhyMwogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtn LWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9IgogIHpsaWItZGV2ZWwgYWxzYS1saWItZGV2ZWwg bGlieGNiLWRldmVsIGxpYlNNLWRldmVsIGxpYlhleHQtZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJY dk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVk aW8tZGV2ZWwKKyBsaWJYdk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVn NC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgamFjay1kZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFj LWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsCiAgc3BlZXgtZGV2ZWwgbGli dGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJkY2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBs aWJjZGlvLWRldmVsIGxpYmJsdXJheS1kZXZlbCBhYWxpYi1kZXZlbCBsaWJjYWNhLWRldmVsIGxp YlhpbmVyYW1hLWRldmVsCkBAIC0xOSw3ICsxOSw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0 ZXIsIExHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0 Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMveGluZS9m aWxlcy94aW5lLWxpYi8ke3ZlcnNpb259L1JFQURNRS50eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtT T1VSQ0VGT1JHRV9TSVRFfS94aW5lLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVj a3N1bT1kNjA2MjcwNDY4ZTE1NDBjMmE4OWMwZDdmNWZkZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2 NWZmMjZhYmVlMDk4CitjaGVja3N1bT01ZjEwZDZkNzE4YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4 MGIwNjFlODI3NjUzNWIyYmUzMWU1YWM0Yjc1ZTZmCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiBpbgogCWk2ODYtbXVzbCkKCkZyb20gNDg5NjA4MWU2OTVlODJkZDM4NWM1NTRkYWZjN2Rl NWExYmU3NzYyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDEyLzExNl0gUU1QbGF5MjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxh dGUgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKaW5kZXggMTc4NzlhMjUwOTNkLi43YzM4N2E1 N2I4YmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L1FNUGxheTIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdR TVBsYXkyJwogcGtnbmFtZT1RTVBsYXkyCiB2ZXJzaW9uPTIzLjA2LjA0Ci1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IHF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBm Zm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9t IDUyZTIxNmMzMDNjNzc1ZTVhN2Y4OTcwNDA0YTZlNTdlNjRjZTI0OGYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMy8xMTZdIGFsc2EtcGx1 Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90 ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtn cy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggMGJmYTZkOWZkMjY0Li5hNTcwOGE3ZDgyYTgg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv YWxzYS1wbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYWxzYS1wbHVnaW5zJwogcGtnbmFtZT1hbHNhLXBsdWdpbnMKIHZlcnNpb249MS4yLjcuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIDk1OTVmNmM5N2Y3YWMzMWEyZDdhZTUzZDQwMmJmYjM4ODM5OTM4ZGEgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8x MTZdIGFyY2FuOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXJjYW4vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlIGIvc3JjcGtncy9hcmNhbi90 ZW1wbGF0ZQppbmRleCA3YmU5NjUyZWNjZjMuLmNjYzdkZjExY2VhYyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9hcmNhbi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcg KzIsNyBAQAogIyAhISBrZWVwIHN5bmNlZCB3aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQog cGtnbmFtZT1hcmNhbgogdmVyc2lvbj0wLjYuMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBj cmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21h a2UKCkZyb20gNmEwNDk4MmI5MDljMzY3MzI1OTFlNTliNWVlZTJjNDk4MjczMzNhZCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE1LzExNl0g YXR0cmFjdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3Qv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtn cy9hdHRyYWN0L3RlbXBsYXRlCmluZGV4IDI2MTQ0ZTkzMWEzYy4uZTc2MGJmMGQxOGFlIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3Rl bXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0Jwog cGtnbmFtZT1hdHRyYWN0CiB2ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1nbnUtbWFrZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFr ZV91c2VfZW52PXllcwogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9 IlNGTUwtZGV2ZWwgZmZtcGVnLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFy Y2hpdmUtZGV2ZWwKK21ha2VkZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNv bmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGli anBlZy10dXJiby1kZXZlbCB4aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVw ZW5kcz0iZ2l0Igogc2hvcnRfZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250 ZW5kIGZvciBlbXVsYXRvcnMiCgpGcm9tIDc0NmMxMTYzZGU5M2ExZDMxODRhYTcxZThmYmE0YjVi YTI5ODRkZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDog W1BBVENIIDAxNi8xMTZdIGF1YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysr KysrKwogc3JjcGtncy9hdWJpby90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hl cy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YWFjZTQxYTZlNmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSA4YTA1NDIwZTVkZDhjN2I4YjI0NDdm ODJkYzkxOTc2NTg3NjUxMWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBC cm9zc2llciA8cGllbUBwaWVtLm9yZz4KK0RhdGU6IFR1ZSwgMjUgSmFuIDIwMjIgMTg6MzA6Mjcg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW3NvdXJjZV9hdmNvZGVjXSBkZWZpbmUgRkZfQVBJX0xB VkZfQVZDVFggZm9yIGxpYmF2Y29kZWMgPgorIDU5LCB0aHggQGJlcm9saW51eCAoY2xvc2VzIGdo LTM1MykKKworLS0tCisgc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMgfCA0ICsrKysKKyAxIGZpbGUg Y2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaW8vc291cmNlX2F2 Y29kZWMuYyBiL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCitpbmRleCBlMGFlOTNiNS4uMTQyMWJk OWEgMTAwNjQ0CistLS0gYS9zcmMvaW8vc291cmNlX2F2Y29kZWMuYworKysrIGIvc3JjL2lvL3Nv dXJjZV9hdmNvZGVjLmMKK0BAIC02OCw2ICs2OCwxMCBAQAorICNkZWZpbmUgQVVCSU9fQVZDT0RF Q19NQVhfQlVGRkVSX1NJWkUgQVZfSU5QVVRfQlVGRkVSX01JTl9TSVpFCisgI2VuZGlmCisgCisr I2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA+PSA1OQorKyNkZWZpbmUgRkZfQVBJX0xBVkZf QVZDVFggMQorKyNlbmRpZgorKworIHN0cnVjdCBfYXViaW9fc291cmNlX2F2Y29kZWNfdCB7Cisg ICB1aW50X3QgaG9wX3NpemU7CisgICB1aW50X3Qgc2FtcGxlcmF0ZTsKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYXViaW8vdGVtcGxhdGUgYi9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCmluZGV4IGFkMWM0 YjI1Njk5MS4uN2Q4NzVjYzAyNTQxIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdhdWJpbycKIHBrZ25hbWU9YXViaW8KIHZlcnNpb249MC40LjkKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXdhZjMKICMgWFhYIGxhc2gsIHB1cmUgYW5kIHN3 aWcgc3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSBh YTU2ZTA2OTE0NjRhNTY2NWU0OWVjNjVkMTRjMzQ2NTc4NTI4ODY2IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTcvMTE2XSBhdWRhY2lvdXMt cGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vYXVkYWNpb3VzLXBsdWdp bnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgfCA0MyArKysrKysrKysrKysrKysrKysrCiBzcmNw a2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlICAgICAgICAgICAgfCAgMiArLQogMiBmaWxl cyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRj aCBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGU1ZTM0MDk5ZDcxCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2gKQEAgLTAsMCArMSw0MyBAQAorY29tbWl0IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0 OTE4YjExY2ViZGMKK0F1dGhvcjogdGliZXF1YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8u ZGU+CitEYXRlOiAgIFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNp b3VzLXBsdWdpbnM6IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9z cmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAor KysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gK K0BAIC0wLDAgKzEsMzEgQEAKKytGcm9tIGY2MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNj ZWYzZGU1MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8 am9obkBqbGluZGdyZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUw MAorK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQor KyBzcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2Zm YXVkaW8vZmZhdWRpby1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5k ZXggMTZkYzYzZTNhLi5hMmI5NWZkNmMgMTAwNjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRp by1jb3JlLmNjCisrKysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3 ICsyNzQsNyBAQCBzdGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAo Y29uc3QgY2hhciAqIG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRh IGQgPSB7bmFtZSwgYnVmLCBmaWxsZWR9OworKyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAK KystICAgICAgICBmID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3Jl KTsKKysrICAgICAgICBmID0gKEFWSW5wdXRGb3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0 MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysgICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAg YnJlYWs7CisrIAorK0BAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAo QVZGb3JtYXRDb250ZXh0ICogYywgQ29kZWNJbmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAg ICAgIGlmIChzdHJlYW0gJiYgc3RyZWFtLT5jb2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykKKysgICAgICAgICB7CisrLSAgICAgICAg ICAgIEFWQ29kZWMgKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVj cGFyLT5jb2RlY19pZCk7CisrKyAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVj ICopIGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisr IAorKyAgICAgICAgICAgICBpZiAoY29kZWMpCisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1w bHVnaW5zL3RlbXBsYXRlCmluZGV4IDg4Y2JjMTY3MWZjNi4uYmVlYmZhZTU5ZWQ0IDEwMDY0NAot LS0gYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYXVk YWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiAjS2VlcCBpbiBzeW5jIHdp dGggYXVkYWNpb3VzIQogcGtnbmFtZT1hdWRhY2lvdXMtcGx1Z2lucwogdmVyc2lvbj00LjMuMQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdz PSIkKHZvcHRfYm9vbCBndGszIGd0aykgJCh2b3B0X2Jvb2wgZ3RrMykKICAkKHZvcHRfYm9vbCBx dCkgJCh2b3B0X2Jvb2wgcXQgcXQ2KSIKCkZyb20gZTY1YWQwN2JjMDc1MTc1OTc0Yzc5ZjZlZmI5 MTQwYzQyMDljZDNmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDE4LzExNl0gYXVkYWNpdHk6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMK Ci0tLQogc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZSB8IDUgKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9h dWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggZDUwOWMw YTg5NDA3Li4xMWUyMDI1NTY4NWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2F1ZGFjaXR5JwogcGtnbmFtZT1hdWRhY2l0eQogdmVyc2lvbj0yLjQu MQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29u ZmlndXJlX2FyZ3M9Ii0td2l0aC1mZm1wZWc9c3lzdGVtIC0td2l0aC1saWJzbmRmaWxlPXN5c3Rl bSAtLXdpdGgtZXhwYXQ9c3lzdGVtCiAgLS13aXRoLWxpYnNveHI9c3lzdGVtIC0td2l0aC1sYW1l PXN5c3RlbSAtLXdpdGgtbHYyPXN5c3RlbSBhY19jdl9wYXRoX1dYX0NPTkZJRz13eC1jb25maWct Z3RrMyIKQEAgLTksNyArOSw3IEBAIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBjbWFrZSBn ZXR0ZXh0IGxpYnRvb2wgbTQgd2hpY2giCiBtYWtlZGVwZW5kcz0iamFjay1kZXZlbCB3eFdpZGdl dHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbAogIGxpYm1hZC1kZXZlbCBzb3VuZHRvdWNoLWRldmVs IGxpYnNveHItZGV2ZWwKICB2YW1wLXBsdWdpbi1zZGstZGV2ZWwgbGFtZS1kZXZlbCBsaWJpZDN0 YWctZGV2ZWwgbGliZmxhYy1kZXZlbAotIGZmbXBlZy1kZXZlbCB0d29sYW1lLWRldmVsIHNlcmQt ZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKKyBmZm1wZWc0LWRldmVsIHR3b2xhbWUt ZGV2ZWwgc2VyZC1kZXZlbCBsdjIgbGlsdi1kZXZlbCBzdWlsLWRldmVsIgogZGVwZW5kcz0iZGVz a3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9IkdyYXBoaWNh bCBjcm9zcy1wbGF0Zm9ybSBhdWRpbyBlZGl0b3IiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgpAQCAtMzMsNSArMzMsNCBAQCBwb3N0X2luc3RhbGwoKSB7CiAJ dmNvcHkgcGx1Zy1pbnMgL3Vzci9zaGFyZS9hdWRhY2l0eQogCiAJcm0gJHtERVNURElSfS91c3Iv c2hhcmUvZG9jL2F1ZGFjaXR5L0xJQ0VOU0UudHh0Ci0JdmxpY2Vuc2UgTElDRU5TRS50eHQgTElD RU5TRQogfQoKRnJvbSBiNTBkMmRkMDYzZTczMTQxMzZmYzc3NmY4NWNkNjVhYzExMTcxYzMyIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTkv MTE2XSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2F2aWRl bXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZSBiL3NyY3Br Z3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1Li41NTcyODU5ODJkMmIgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11 eC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4 JwogcGtnbmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249 MwogIyBDYW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9 Ing4Nl82NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhv c3QtdG9vbHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSBjODdmNDZiNGViMjY3MDhmZWU4ZDMw MDBkMzBlZmZmZjFiNzM0ZTViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjAvMTE2XSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGIu LmIyMWUyMjMzNDMxNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2JhcmVzaXAnCiBwa2duYW1lPWJhcmVzaXAKIHZlcnNpb249Mi4xMC4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGliZ3NtLWRldmVsIGxpYnBuZy1kZXZl bCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZyb20gY2Q3M2I3OGFkNzljYzhiYTFl ZmUxMDdmYzAwNTZmZDNmZjNlMWQ0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIxLzExNl0gYmxlbmRlcjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2JsZW5kZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5kZXggZWM3 MjRiYjBhNmRjLi4wZjcyODc2ZDRkNzAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmxlbmRlci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdibGVuZGVyJwogcGtnbmFtZT1ibGVuZGVyCiB2ZXJzaW9uPTMuNS4x Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiBwcGM2NCoiCiBidWlsZF9z dHlsZT0iY21ha2UiCiBweWNvbXBpbGVfZGlycz0iL3Vzci9zaGFyZS9ibGVuZGVyLyR7dmVyc2lv biUuKn0vc2NyaXB0cyIKQEAgLTksOCArOSw4IEBAIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfSU5T VEFMTF9QT1JUQUJMRT1PRkYgLURXSVRIX1BZVEhPTl9JTlNUQUxMPU9GRgogIC1EV0lUSF9KQUNL PU9OIC1EV0lUSF9DT0RFQ19GRk1QRUc9T04gLURXSVRIX0NPREVDX1NOREZJTEU9T04gLURXSVRI X09QRU5NUD1PTgogIC1EV0lUSF9GRlRXMz1PTiAtRFdJVEhfTU9EX09DRUFOU0lNPU9OIC1EV0lU SF9DWUNMRVNfRU1CUkVFPU9GRiAtRFdJVEhfT1BFTkNPTE9SSU89T04KICAtRFdJVEhfSU1BR0Vf T1BFTkVYUj1PTiAtRFdJVEhfSU1BR0VfT1BFTkpQRUc9T04gLURXSVRIX09QRU5TVUJESVY9T04K LSAtRFdJVEhfT1BFTkNPTExBREE9T04gLURXSVRIX1NZU1RFTV9HTEVXPU9OIC1EV0lUSF9PUEVO VkRCPU9OIC1EV0lUSF9BTEVNQklDPU9OCi0gLURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hP U1RfV0FZTEFORD1PTiAtRFdJVEhfR0hPU1RfTElCREVDT1I9T04KKyAtRFdJVEhfT1BFTkNPTExB REE9T04gLURXSVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KKyAtRFdJVEhfR0hPU1Rf WDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EX0xJQkRF Q09SPU9OCiAgLURXSVRIX0JVSUxESU5GTz1PRkYgLURQWVRIT05fVkVSU0lPTj0ke3B5M192ZXJ9 IC1EUFlUSE9OX0xJQlBBVEg9L3Vzci9saWIKICAtRFBZVEhPTl9MSUJSQVJZPXB5dGhvbiR7cHkz X3Zlcn0ke3B5M19hYml2ZXJ9IC1EUFlUSE9OX0lOQ0xVREVfRElSUz0vJHtweTNfaW5jfQogIC1E V0lUSF9TWVNURU1fTFpPPU9OIC1EV0lUSF9TWVNURU1fRUlHRU4zPU9OIC1EV0lUSF9TWVNURU1f RlJFRVRZUEU9T04iCgpGcm9tIDdiZTQ3ZDQ0ZmRjMTEwZmU2OTgxZDk5MDJhYTUxMzQ1M2ZiMDk4 MmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENI IDAyMi8xMTZdIGNhbnRhdGE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9j YW50YXRhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlIGIvc3Jj cGtncy9jYW50YXRhL3RlbXBsYXRlCmluZGV4IDRiNDE3ZDgwZDVjMi4uOGE5MGFhYTRjMDdhIDEw MDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jYW50YXRh L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2FudGF0YScK IHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0yLjUuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2Ug cXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgogbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtdG9v bHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUteG1scGF0dGVybnMtZGV2ZWwKCkZyb20gYWE5NTQw OTJlNTk4NjkyM2EyZmM2MjNmMDA1NjJlYTc4ZDVhMGIyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDIzLzExNl0gY2NleHRyYWN0b3I6IHJl dmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9j Y2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5YWJjZDgyODUyYjIuLjZlY2NhZDU4ODVhZiAxMDA2 NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjZXh0 cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdj Y2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IKIHZlcnNpb249MC45MwotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51eCIKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vY3IgLS1lbmFibGUtaGFyZHN1YngiCiBo b3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0ibGVwdG9u aWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9 ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9y dF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZpZGVvIHN0cmVhbXMiCiBtYWludGFpbmVy PSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAt b3ItbGF0ZXIiCgpGcm9tIDk2MmQ1MmYzYTNmYjQwZjg0YmJkNWQ4N2VhMTJjMDJhYjJiNDRhNmMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAy NC8xMTZdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv Y2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgNTY5ICsrKysrKysrKysrKysrKysr KysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICst CiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBi L3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTlmZDMwN2EyM2M4Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw1 NjkgQEAKK0Zyb20gOGNjYWQ2OTM3MTc3YjFiOTJlNDBhYjhmNDQ0N2VhMjdiYWMwMDlhNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9MdWs9QzM9QTE9QzU9QTE9MjBM YWxpbnNrPUMzPUJEPz0gPGxhbGluc2t5QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBOb3YgMjAy MiAyMTo0NzozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgRkZtcGVnIDUueCAoIzEyMCkK KworKiBVc2UgRkZtcGVnIDUuMS4yIGZvciBDSSBidWlsZHMKKworKiBCdWlsZCBvbiBVYnVudHUg MjAuMDQKKworKiBVcGdyYWRlIGNvZGUgdG8gRkZtcGVnIDUueCBBUElzCisKKyogT25seSBzZXQg RkZtcGVnIGluY2x1ZGUgZGlycyBpZiBidWlsZGluZyB0b29scworCisqIE5vIGxvbmdlciBuZWVk ZWQKKworKiBVc2UgdWJ1bnR1IDIwLjA0CistLS0KKyAuZ2l0aHViL3dvcmtmbG93cy9idWlsZC55 bWwgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTYgLS0KKyBwYWNrYWdlL2J1aWxkLnNoICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvci5oICAgICAgICAgICAgfCAgIDIgLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJv Y2Vzc29yX2F2cmVzYW1wbGUuaCB8ICA3MiAtLS0tLS0tCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRp b19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIHwgIDE4ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRp b19yZWFkZXIuaCAgICAgICAgICAgICAgIHwgMTk3ICsrKysrKysrKy0tLS0tLS0tLQorIHRlc3Rz L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCisgOCBmaWxl cyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQorIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgK KworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGY4 ZDZhMzIuLjRkYTI0MDUgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VM aXN0cy50eHQKK0BAIC04NCw5ICs4NCw2IEBAIGZpbmRfcGFja2FnZShGRm1wZWcpCisgaWYoRkZN UEVHX0xJQlJBUklFUykKKyAJY21ha2VfcHVzaF9jaGVja19zdGF0ZShSRVNFVCkKKyAJc2V0KENN QUtFX1JFUVVJUkVEX0xJQlJBUklFUyAke0ZGTVBFR19MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFE X0xJQlNfSU5JVH0gLWxtKQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfcGFja2V0X3VucmVm IEhBVkVfQVZfUEFDS0VUX1VOUkVGKQorLQljaGVja19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVf YWxsb2MgSEFWRV9BVl9GUkFNRV9BTExPQykKKy0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2Zy YW1lX2ZyZWUgSEFWRV9BVl9GUkFNRV9GUkVFKQorIAljbWFrZV9wb3BfY2hlY2tfc3RhdGUoKQor IGVuZGlmKCkKKworQEAgLTE2MywxNCArMTYwLDExIEBAIG1lc3NhZ2UoU1RBVFVTICJVc2luZyAk e0ZGVF9MSUJ9IGZvciBGRlQgY2FsY3VsYXRpb25zIikKKyBpZihOT1QgQVVESU9fUFJPQ0VTU09S X0xJQikKKyAJaWYoRkZNUEVHX0xJQlNXUkVTQU1QTEVfRk9VTkQpCisgCQlzZXQoQVVESU9fUFJP Q0VTU09SX0xJQiAic3dyZXNhbXBsZSIpCistCWVsc2VpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9G T1VORCkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElCICJhdnJlc2FtcGxlIikKKyAJZW5kaWYo KQorIGVuZGlmKCkKKworIGlmKEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1w bGUiKQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9GT1VORCkKKy0JCXNldChVU0VfQVZSRVNB TVBMRSBPRkYpCisgCQlzZXQoVVNFX1NXUkVTQU1QTEUgT04pCisgCQlzZXQoQVVESU9fUFJPQ0VT U09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0xJQlJBUklFU30pCisgCQlzZXQo QVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBFR19MSUJTV1JFU0FNUExFX0lOQ0xV REVfRElSU30pCitAQCAtMTc4LDE2ICsxNzIsNiBAQCBpZihBVURJT19QUk9DRVNTT1JfTElCIFNU UkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7 QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFy eSBpcyBub3QgZm91bmQiKQorIAllbmRpZigpCisgCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FV RElPX1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252ZXJzaW9uIikKKy1lbHNlaWYoQVVESU9f UFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAiYXZyZXNhbXBsZSIpCistCWlmKEZGTVBFR19MSUJBVlJF U0FNUExFX0ZPVU5EKQorLQkJc2V0KFVTRV9BVlJFU0FNUExFIE9OKQorLQkJc2V0KFVTRV9TV1JF U0FNUExFIE9GRikKKy0JCXNldChBVURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJ QkFWUkVTQU1QTEVfTElCUkFSSUVTfSkKKy0JCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9E SVJTICR7RkZNUEVHX0xJQkFWUkVTQU1QTEVfSU5DTFVERV9ESVJTfSkKKy0JZWxzZSgpCistCQlt ZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZvciBh dWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMgbm90IGZvdW5kIikKKy0JZW5kaWYo KQorLQltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVk aW8gY29udmVyc2lvbiIpCisgZWxzZSgpCisgCW1lc3NhZ2UoU1RBVFVTICJCdWlsZGluZyB3aXRo b3V0IGF1ZGlvIGNvbnZlcnNpb24gc3VwcG9ydCwgcGxlYXNlIGluc3RhbGwgRkZtcGVnIHdpdGgg bGlic3dyZXNhbXBsZSIpCisgZW5kaWYoKQorZGlmZiAtLWdpdCBhL3BhY2thZ2UvYnVpbGQuc2gg Yi9wYWNrYWdlL2J1aWxkLnNoCitpbmRleCBkYTYzMWFlLi5iNDFkMzZlIDEwMDc1NQorLS0tIGEv cGFja2FnZS9idWlsZC5zaAorKysrIGIvcGFja2FnZS9idWlsZC5zaAorQEAgLTcsOCArNyw4IEBA IHNldCAtZXV4CisKKyBCQVNFX0RJUj0kKGNkICQoZGlybmFtZSAkMCkvLi4gJiYgcHdkKQorCist RkZNUEVHX1ZFUlNJT049NC40LjEKKy1GRk1QRUdfQlVJTERfVEFHPXY0LjQuMS0xCisrRkZNUEVH X1ZFUlNJT049NS4xLjIKKytGRk1QRUdfQlVJTERfVEFHPXYke0ZGTVBFR19WRVJTSU9OfS0xCisK KyBUTVBfQlVJTERfRElSPSRCQVNFX0RJUi8kKG1rdGVtcCAtZCBidWlsZC5YWFhYWFhYWCkKKyB0 cmFwICdybSAtcmYgJFRNUF9CVUlMRF9ESVInIEVYSVQKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNz b3IuaAoraW5kZXggNzYyOGZjNy4uMzlmNGY2ZCAxMDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vz c29yLmgKK0BAIC0xMCw4ICsxMCw2IEBACisKKyAjaWYgZGVmaW5lZChVU0VfU1dSRVNBTVBMRSkK KyAjaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgiCist I2VsaWYgZGVmaW5lZChVU0VfQVZSRVNBTVBMRSkKKy0jaW5jbHVkZSAiYXVkaW8vZmZtcGVnX2F1 ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgiCisgI2Vsc2UKKyAjZXJyb3IgIm5vIGF1ZGlvIHBy b2Nlc3NpbmcgbGlicmFyeSIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVn X2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvcl9hdnJlc2FtcGxlLmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYmQ4 NWY5Mi4uMDAwMDAwMAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZy ZXNhbXBsZS5oCisrKysgL2Rldi9udWxsCitAQCAtMSw3MiArMCwwIEBACistLy8gQ29weXJpZ2h0 IChDKSAyMDE2ICBMdWthcyBMYWxpbnNreQorLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQg bGljZW5zZSwgc2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCistCistI2lmbmRlZiBD SFJPTUFQUklOVF9BVURJT19GRk1QRUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0j ZGVmaW5lIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19BVURJT19QUk9DRVNTT1JfQVZSRVNBTVBM RV9IXworLQorLWV4dGVybiAiQyIgeworLSNpbmNsdWRlIDxsaWJhdnJlc2FtcGxlL2F2cmVzYW1w bGUuaD4KKy19CistCistbmFtZXNwYWNlIGNocm9tYXByaW50IHsKKy0KKy1jbGFzcyBGRm1wZWdB dWRpb1Byb2Nlc3NvciB7CistcHVibGljOgorLQlGRm1wZWdBdWRpb1Byb2Nlc3NvcigpIHsKKy0J CW1fcmVzYW1wbGVfY3R4ID0gYXZyZXNhbXBsZV9hbGxvY19jb250ZXh0KCk7CistCX0KKy0KKy0J fkZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJYXZyZXNhbXBsZV9mcmVlKCZtX3Jlc2FtcGxl X2N0eCk7CistCX0KKy0KKy0Jdm9pZCBTZXRDb21wYXRpYmxlTW9kZSgpIHsKKy0JCWF2X29wdF9z ZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiZmlsdGVyX3NpemUiLCAxNiwgMCk7CistCQlhdl9vcHRf c2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgInBoYXNlX3NoaWZ0IiwgOCwgMCk7CistCQlhdl9vcHRf c2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImxpbmVhcl9pbnRlcnAiLCAxLCAwKTsKKy0JCWF2X29w dF9zZXRfZG91YmxlKG1fcmVzYW1wbGVfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsKKy0JfQorLQor LQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7Cist CQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hh bm5lbF9sYXlvdXQsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRTYW1wbGVGb3JtYXQoQVZT YW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBs ZV9jdHgsICJpbl9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0KKy0KKy0Jdm9p ZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2lu dChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworLQl9 CistCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0 KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9jaGFubmVsX2xheW91 dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZUZv cm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludCht X3Jlc2FtcGxlX2N0eCwgIm91dF9zYW1wbGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CistCX0K Ky0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZf b3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNhbXBsZV9yYXRl LCAwKTsKKy0JfQorLQorLQlpbnQgSW5pdCgpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX29wZW4o bV9yZXNhbXBsZV9jdHgpOworLQl9CistCistCWludCBDb252ZXJ0KHVpbnQ4X3QgKipvdXQsIGlu dCBvdXRfY291bnQsIGNvbnN0IHVpbnQ4X3QgKippbiwgaW50IGluX2NvdW50KSB7CistCQlyZXR1 cm4gYXZyZXNhbXBsZV9jb252ZXJ0KG1fcmVzYW1wbGVfY3R4LCBvdXQsIDAsIG91dF9jb3VudCwg KHVpbnQ4X3QgKiopIGluLCAwLCBpbl9jb3VudCk7CistCX0KKy0KKy0JaW50IEZsdXNoKHVpbnQ4 X3QgKipvdXQsIGludCBvdXRfY291bnQpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX3JlYWQobV9y ZXNhbXBsZV9jdHgsIG91dCwgb3V0X2NvdW50KTsKKy0JfQorLQorLXByaXZhdGU6CistCUFWQXVk aW9SZXNhbXBsZUNvbnRleHQgKm1fcmVzYW1wbGVfY3R4ID0gbnVsbHB0cjsKKy19OworLQorLX07 IC8vIG5hbWVzcGFjZSBjaHJvbWFwcmludAorLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9h dWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaCBiL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAoraW5kZXggYjg2MjY2Yi4uYjFkNGJlYSAx MDA2NDQKKy0tLSBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUu aAorKysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitA QCAtMjgsMzAgKzI4LDI4IEBAIHB1YmxpYzoKKyAJCWF2X29wdF9zZXRfZG91YmxlKG1fc3dyX2N0 eCwgImN1dG9mZiIsIDAuOCwgMCk7CisgCX0KKworLQl2b2lkIFNldElucHV0Q2hhbm5lbExheW91 dChpbnQ2NF90IGNoYW5uZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgs ICJpY2wiLCBjaGFubmVsX2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgs ICJpY2giLCBhdl9nZXRfY2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQp LCAwKTsKKysJdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoQVZDaGFubmVsTGF5b3V0ICpjaGFu bmVsX2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaW5fY2hhbm5lbF9s YXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAwKTsKKyAJfQorCisgCXZvaWQgU2V0SW5w dXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0 X3NldF9pbnQobV9zd3JfY3R4LCAiaXNmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRf c2V0X3NhbXBsZV9mbXQobV9zd3JfY3R4LCAiaW5fc2FtcGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQs IDApOworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBsZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpc3IiLCBzYW1wbGVfcmF0ZSwgMCk7Cisr CQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpbl9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRl LCAwKTsKKyAJfQorCistCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChpbnQ2NF90IGNoYW5u ZWxfbGF5b3V0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2wiLCBjaGFubmVs X2xheW91dCwgMCk7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvY2giLCBhdl9nZXRf Y2hhbm5lbF9sYXlvdXRfbmJfY2hhbm5lbHMoY2hhbm5lbF9sYXlvdXQpLCAwKTsKKysJdm9pZCBT ZXRPdXRwdXRDaGFubmVsTGF5b3V0KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsK KysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm91dF9jaGFubmVsX2xheW91dCIsIGNoYW5u ZWxfbGF5b3V0LT51Lm1hc2ssIDApOworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3Jt YXQoQVZTYW1wbGVGb3JtYXQgc2FtcGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9z d3JfY3R4LCAib3NmIiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisrCQlhdl9vcHRfc2V0X3NhbXBsZV9m bXQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQor CisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29w dF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zciIsIHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9z ZXRfaW50KG1fc3dyX2N0eCwgIm91dF9zYW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKyAJ fQorCisgCWludCBJbml0KCkgeworZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9f cmVhZGVyLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oCitpbmRleCA1NTUwMTY0 Li4xYzZiMzQ2IDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAor KysrIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaAorQEAgLTYyLDcgKzYyLDcgQEAg cHVibGljOgorIAlib29sIFJlYWQoY29uc3QgaW50MTZfdCAqKmRhdGEsIHNpemVfdCAqc2l6ZSk7 CisKKyAJYm9vbCBJc09wZW4oKSBjb25zdCB7IHJldHVybiBtX29wZW5lZDsgfQorLQlib29sIElz RmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2ZpbmlzaGVkICYmICFtX2dvdF9mcmFtZTsgfQor Kwlib29sIElzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiAhbV9oYXNfbW9yZV9wYWNrZXRzICYm ICFtX2hhc19tb3JlX2ZyYW1lczsgfQorCisgCXN0ZDo6c3RyaW5nIEdldEVycm9yKCkgY29uc3Qg eyByZXR1cm4gbV9lcnJvcjsgfQorIAlpbnQgR2V0RXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4g bV9lcnJvcl9jb2RlOyB9CitAQCAtNzQsMjAgKzc0LDE5IEBAIHByaXZhdGU6CisgCXVpbnQ4X3Qg Km1fY29udmVydF9idWZmZXJbMV0gPSB7IG51bGxwdHIgfTsKKyAJaW50IG1fY29udmVydF9idWZm ZXJfbmJfc2FtcGxlcyA9IDA7CisKKy0JQVZJbnB1dEZvcm1hdCAqbV9pbnB1dF9mbXQgPSBudWxs cHRyOworKwljb25zdCBBVklucHV0Rm9ybWF0ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisgCUFW RGljdGlvbmFyeSAqbV9pbnB1dF9vcHRzID0gbnVsbHB0cjsKKworIAlBVkZvcm1hdENvbnRleHQg Km1fZm9ybWF0X2N0eCA9IG51bGxwdHI7CisgCUFWQ29kZWNDb250ZXh0ICptX2NvZGVjX2N0eCA9 IG51bGxwdHI7CistCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOworIAlpbnQgbV9zdHJlYW1f aW5kZXggPSAtMTsKKyAJc3RkOjpzdHJpbmcgbV9lcnJvcjsKKyAJaW50IG1fZXJyb3JfY29kZSA9 IDA7CistCWJvb2wgbV9maW5pc2hlZCA9IGZhbHNlOworIAlib29sIG1fb3BlbmVkID0gZmFsc2U7 CistCWludCBtX2dvdF9mcmFtZSA9IDA7CistCUFWUGFja2V0IG1fcGFja2V0OworLQlBVlBhY2tl dCBtX3BhY2tldDA7CisrCWJvb2wgbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsKKysJYm9vbCBt X2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7CisrCUFWUGFja2V0ICptX3BhY2tldCA9IG51bGxwdHI7 CisrCUFWRnJhbWUgKm1fZnJhbWUgPSBudWxscHRyOworCisgCWludCBtX291dHB1dF9zYW1wbGVf cmF0ZSA9IDA7CisgCWludCBtX291dHB1dF9jaGFubmVscyA9IDA7CitAQCAtOTgsMTkgKzk3LDEy IEBAIHByaXZhdGU6CisKKyBpbmxpbmUgRkZtcGVnQXVkaW9SZWFkZXI6OkZGbXBlZ0F1ZGlvUmVh ZGVyKCkgeworIAlhdl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7CistCistCWF2X2luaXRf cGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tl dC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0gbV9wYWNrZXQ7CisgfQorCisgaW5saW5lIEZG bXBlZ0F1ZGlvUmVhZGVyOjp+RkZtcGVnQXVkaW9SZWFkZXIoKSB7CisgCUNsb3NlKCk7CisgCWF2 X2RpY3RfZnJlZSgmbV9pbnB1dF9vcHRzKTsKKyAJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJb MF0pOworLQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7CisgfQorCisgaW5saW5lIGJvb2wg RkZtcGVnQXVkaW9SZWFkZXI6OlNldElucHV0Rm9ybWF0KGNvbnN0IGNoYXIgKm5hbWUpIHsKK0BA IC0xMzUsMTEgKzEyNywxMCBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihj b25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1lKSB7CisKKyAJQ2xvc2UoKTsKKworLSAgICBhdl9p bml0X3BhY2tldCgmbV9wYWNrZXQpOworLQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9w YWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFja2V0MCA9IG1fcGFja2V0OworKwltX3BhY2tldCA9 IGF2X3BhY2tldF9hbGxvYygpOworKwlpZiAoIW1fcGFja2V0KSB7CisrCQlyZXR1cm4gZmFsc2U7 CisrCX0KKworIAlyZXQgPSBhdmZvcm1hdF9vcGVuX2lucHV0KCZtX2Zvcm1hdF9jdHgsIGZpbGVf bmFtZS5jX3N0cigpLCBtX2lucHV0X2ZtdCwgJm1faW5wdXRfb3B0cyk7CisgCWlmIChyZXQgPCAw KSB7CitAQCAtMTUzLDI2ICsxNDQsMzEgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6 Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJcmV0dXJuIGZhbHNlOwor IAl9CisKKy0JQVZDb2RlYyAqY29kZWM7CisrCWNvbnN0IEFWQ29kZWMgKmNvZGVjOworIAlyZXQg PSBhdl9maW5kX2Jlc3Rfc3RyZWFtKG1fZm9ybWF0X2N0eCwgQVZNRURJQV9UWVBFX0FVRElPLCAt MSwgLTEsICZjb2RlYywgMCk7CisgCWlmIChyZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQg bm90IGZpbmQgYW55IGF1ZGlvIHN0cmVhbSBpbiB0aGUgZmlsZSIsIHJldCk7CisgCQlyZXR1cm4g ZmFsc2U7CisgCX0KKyAJbV9zdHJlYW1faW5kZXggPSByZXQ7CisrCWF1dG8gc3RyZWFtID0gbV9m b3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4XTsKKworLQltX2NvZGVjX2N0eCA9IG1f Zm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0cmVhbV9pbmRleF0tPmNvZGVjOworKwltX2NvZGVjX2N0 eCA9IGF2Y29kZWNfYWxsb2NfY29udGV4dDMoY29kZWMpOworIAltX2NvZGVjX2N0eC0+cmVxdWVz dF9zYW1wbGVfZm10ID0gQVZfU0FNUExFX0ZNVF9TMTY7CisKKysJcmV0ID0gYXZjb2RlY19wYXJh bWV0ZXJzX3RvX2NvbnRleHQobV9jb2RlY19jdHgsIHN0cmVhbS0+Y29kZWNwYXIpOworKwlpZiAo cmV0IDwgMCkgeworKwkJU2V0RXJyb3IoIkNvdWxkIG5vdCBjb3B5IHRoZSBzdHJlYW0gcGFyYW1l dGVycyIsIHJldCk7CisrCQlyZXR1cm4gZmFsc2U7CisrCX0KKysKKyAJcmV0ID0gYXZjb2RlY19v cGVuMihtX2NvZGVjX2N0eCwgY29kZWMsIG51bGxwdHIpOworIAlpZiAocmV0IDwgMCkgeworIAkJ U2V0RXJyb3IoIkNvdWxkIG5vdCBvcGVuIHRoZSBjb2RlYyIsIHJldCk7CisgCQlyZXR1cm4gZmFs c2U7CisgCX0KKworLQlpZiAoIW1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCkgeworLQkJbV9j b2RlY19jdHgtPmNoYW5uZWxfbGF5b3V0ID0gYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQo bV9jb2RlY19jdHgtPmNoYW5uZWxzKTsKKy0JfQorKwlhdl9kdW1wX2Zvcm1hdChtX2Zvcm1hdF9j dHgsIDAsICJmb28iLCAwKTsKKworIAltX2ZyYW1lID0gYXZfZnJhbWVfYWxsb2MoKTsKKyAJaWYg KCFtX2ZyYW1lKSB7CitAQCAtMTgzLDE5ICsxNzksMjMgQEAgaW5saW5lIGJvb2wgRkZtcGVnQXVk aW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVfbmFtZSkgeworIAkJbV9vdXRw dXRfc2FtcGxlX3JhdGUgPSBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGU7CisgCX0KKworLQlpZiAo IW1fb3V0cHV0X2NoYW5uZWxzKSB7CistCQltX291dHB1dF9jaGFubmVscyA9IG1fY29kZWNfY3R4 LT5jaGFubmVsczsKKysJQVZDaGFubmVsTGF5b3V0IG91dHB1dF9jaGFubmVsX2xheW91dDsKKysJ aWYgKG1fb3V0cHV0X2NoYW5uZWxzKSB7CisrCQlhdl9jaGFubmVsX2xheW91dF9kZWZhdWx0KCZv dXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5uZWxzKTsKKysJfSBlbHNlIHsKKysJ CW1fb3V0cHV0X2NoYW5uZWxzID0gbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFubmVsczsK KysJCWF2X2NoYW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9v dXRwdXRfY2hhbm5lbHMpOworIAl9CisKKy0JaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9 IEFWX1NBTVBMRV9GTVRfUzE2IHx8IG1fY29kZWNfY3R4LT5jaGFubmVscyAhPSBtX291dHB1dF9j aGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUgIT0gbV9vdXRwdXRfc2FtcGxlX3Jh dGUpIHsKKysJaWYgKG1fY29kZWNfY3R4LT5zYW1wbGVfZm10ICE9IEFWX1NBTVBMRV9GTVRfUzE2 IHx8IG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5l bHMgfHwgbV9jb2RlY19jdHgtPnNhbXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7 CisgCQltX2NvbnZlcnRlci5yZXNldChuZXcgRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSk7CisgCQlt X2NvbnZlcnRlci0+U2V0Q29tcGF0aWJsZU1vZGUoKTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1 dFNhbXBsZUZvcm1hdChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCk7CisgCQltX2NvbnZlcnRlci0+ U2V0SW5wdXRTYW1wbGVSYXRlKG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZl cnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KG1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91dCk7 CisrCQltX2NvbnZlcnRlci0+U2V0SW5wdXRDaGFubmVsTGF5b3V0KCYobV9jb2RlY19jdHgtPmNo X2xheW91dCkpOworIAkJbV9jb252ZXJ0ZXItPlNldE91dHB1dFNhbXBsZUZvcm1hdChBVl9TQU1Q TEVfRk1UX1MxNik7CisgCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0U2FtcGxlUmF0ZShtX291dHB1 dF9zYW1wbGVfcmF0ZSk7CistCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dChh dl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91dChtX291dHB1dF9jaGFubmVscykpOworKwkJbV9j b252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7 CisgCQlhdXRvIHJldCA9IG1fY29udmVydGVyLT5Jbml0KCk7CisgCQlpZiAocmV0ICE9IDApIHsK KyAJCQlTZXRFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhbiBhdWRpbyBjb252ZXJ0ZXIgaW5zdGFu Y2UiLCByZXQpOworQEAgLTIwMywxMCArMjAzLDExIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlv UmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCX0KKyAJfQor CisrCWF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKysK KyAJbV9vcGVuZWQgPSB0cnVlOworLQltX2ZpbmlzaGVkID0gZmFsc2U7CistCW1fZ290X2ZyYW1l ID0gMDsKKy0JbV9uYl9wYWNrZXRzID0gMDsKKysJbV9oYXNfbW9yZV9wYWNrZXRzID0gdHJ1ZTsK KysJbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVlOworIAltX2RlY29kZV9lcnJvciA9IDA7CisKKyAJ cmV0dXJuIHRydWU7CitAQCAtMjE0LDYgKzIxNSw3IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlv UmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKworIGlubGluZSB2 b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpDbG9zZSgpIHsKKyAJYXZfZnJhbWVfZnJlZSgmbV9mcmFt ZSk7CisrCWF2X3BhY2tldF9mcmVlKCZtX3BhY2tldCk7CisKKyAJbV9zdHJlYW1faW5kZXggPSAt MTsKKworQEAgLTI1Miw5MSArMjU0LDk4IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVy OjpSZWFkKGNvbnN0IGludDE2X3QgKipkYXRhLCBzaXplX3QgKnNpemUpIHsKKyAJCXJldHVybiBm YWxzZTsKKyAJfQorCisrCSpkYXRhID0gbnVsbHB0cjsKKysJKnNpemUgPSAwOworKworIAlpbnQg cmV0OworKwlib29sIG5lZWRzX3BhY2tldCA9IGZhbHNlOworIAl3aGlsZSAodHJ1ZSkgeworLQkJ d2hpbGUgKG1fcGFja2V0LnNpemUgPD0gMCkgeworLQkJCWF2X3BhY2tldF91bnJlZigmbV9wYWNr ZXQwKTsKKy0JCQlhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQkJCW1fcGFja2V0LmRhdGEg PSBudWxscHRyOworLQkJCW1fcGFja2V0LnNpemUgPSAwOworLQkJCXJldCA9IGF2X3JlYWRfZnJh bWUobV9mb3JtYXRfY3R4LCAmbV9wYWNrZXQpOworKwkJd2hpbGUgKG5lZWRzX3BhY2tldCAmJiBt X3BhY2tldC0+c2l6ZSA9PSAwKSB7CisrCQkJcmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9j dHgsIG1fcGFja2V0KTsKKyAJCQlpZiAocmV0IDwgMCkgeworIAkJCQlpZiAocmV0ID09IEFWRVJS T1JfRU9GKSB7CistCQkJCQltX2ZpbmlzaGVkID0gdHJ1ZTsKKysJCQkJCW5lZWRzX3BhY2tldCA9 IGZhbHNlOworKwkJCQkJbV9oYXNfbW9yZV9wYWNrZXRzID0gZmFsc2U7CisgCQkJCQlicmVhazsK Ky0JCQkJfSBlbHNlIHsKKysJCQkJfQorKwkJCQlTZXRFcnJvcigiRXJyb3IgcmVhZGluZyBmcm9t IHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworKwkJCQlyZXR1cm4gZmFsc2U7CisrCQkJfQorKwkJ CWlmIChtX3BhY2tldC0+c3RyZWFtX2luZGV4ID09IG1fc3RyZWFtX2luZGV4KSB7CisrCQkJCW5l ZWRzX3BhY2tldCA9IGZhbHNlOworKwkJCX0gZWxzZSB7CisrCQkJCWF2X3BhY2tldF91bnJlZiht X3BhY2tldCk7CisrCQkJfQorKwkJfQorKworKwkJaWYgKG1fcGFja2V0LT5zaXplICE9IDApIHsK KysJCQlyZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1fY29kZWNfY3R4LCBtX3BhY2tldCk7Cisr CQkJaWYgKHJldCA8IDApIHsKKysJCQkJaWYgKHJldCAhPSBBVkVSUk9SKEVBR0FJTikpIHsKKyAJ CQkJCVNldEVycm9yKCJFcnJvciByZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7 CisgCQkJCQlyZXR1cm4gZmFsc2U7CisgCQkJCX0KKy0JCQl9CistCQkJbV9wYWNrZXQwID0gbV9w YWNrZXQ7CistCQkJaWYgKG1fcGFja2V0LnN0cmVhbV9pbmRleCAhPSBtX3N0cmVhbV9pbmRleCkg eworLQkJCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQkJbV9wYWNrZXQuc2l6ZSA9IDA7 CisgCQkJfSBlbHNlIHsKKy0JCQkJbV9uYl9wYWNrZXRzKys7CisrCQkJCWF2X3BhY2tldF91bnJl ZihtX3BhY2tldCk7CisgCQkJfQorIAkJfQorCistCQlyZXQgPSBhdmNvZGVjX2RlY29kZV9hdWRp bzQobV9jb2RlY19jdHgsIG1fZnJhbWUsICZtX2dvdF9mcmFtZSwgJm1fcGFja2V0KTsKKysJCXJl dCA9IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZShtX2NvZGVjX2N0eCwgbV9mcmFtZSk7CisgCQlpZiAo cmV0IDwgMCkgeworLQkJCWlmIChtX2RlY29kZV9lcnJvcikgeworLQkJCQlTZXRFcnJvcigiRXJy b3IgZGVjb2RpbmcgYXVkaW8gZnJhbWUiLCBtX2RlY29kZV9lcnJvcik7CistCQkJCXJldHVybiBm YWxzZTsKKysJCQlpZiAocmV0ID09IEFWRVJST1JfRU9GKSB7CisrCQkJCW1faGFzX21vcmVfZnJh bWVzID0gZmFsc2U7CisrCQkJfSBlbHNlIGlmIChyZXQgPT0gQVZFUlJPUihFQUdBSU4pKSB7Cisr CQkJCWlmIChtX2hhc19tb3JlX3BhY2tldHMpIHsKKysJCQkJCW5lZWRzX3BhY2tldCA9IHRydWU7 CisrCQkJCQljb250aW51ZTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCW1faGFzX21vcmVfZnJhbWVz ID0gZmFsc2U7CisrCQkJCX0KKyAJCQl9CistCQkJbV9kZWNvZGVfZXJyb3IgPSByZXQ7CistCQkJ bV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNrZXQuc2l6ZSA9IDA7CistCQkJY29u dGludWU7CisrCQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5nIHRoZSBhdWRpbyBzb3VyY2UiLCBy ZXQpOworKwkJCXJldHVybiBmYWxzZTsKKyAJCX0KKworLQkJYnJlYWs7CistCX0KKy0KKy0JbV9k ZWNvZGVfZXJyb3IgPSAwOworLQorLQljb25zdCBpbnQgZGVjb2RlZCA9IHN0ZDo6bWluKHJldCwg bV9wYWNrZXQuc2l6ZSk7CistCW1fcGFja2V0LmRhdGEgKz0gZGVjb2RlZDsKKy0JbV9wYWNrZXQu c2l6ZSAtPSBkZWNvZGVkOworLQorLQlpZiAobV9nb3RfZnJhbWUpIHsKKy0JCWlmIChtX2NvbnZl cnRlcikgeworLQkJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9u Yl9zYW1wbGVzKSB7CistCQkJCWludCBsaW5zaXplOworLQkJCQlhdl9mcmVlcCgmbV9jb252ZXJ0 X2J1ZmZlclswXSk7CistCQkJCW1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4 KDEwMjQgKiA4LCBtX2ZyYW1lLT5uYl9zYW1wbGVzKTsKKy0JCQkJcmV0ID0gYXZfc2FtcGxlc19h bGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNoYW5uZWxzLCBt X2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKy0JCQkJ aWYgKHJldCA8IDApIHsKKy0JCQkJCVNldEVycm9yKCJDb3VsZG4ndCBhbGxvY2F0ZSBhdWRpbyBj b252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCWlmIChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gMCkg eworKwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+ IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgeworKwkJCQkJaW50IGxpbnNpemU7CisrCQkJ CQlhdl9mcmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CisrCQkJCQltX2NvbnZlcnRfYnVmZmVy X25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7Cisr CQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBt X2NvZGVjX2N0eC0+Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzLCBtX2NvbnZlcnRfYnVmZmVyX25iX3Nh bXBsZXMsIEFWX1NBTVBMRV9GTVRfUzE2LCAxKTsKKysJCQkJCWlmIChyZXQgPCAwKSB7CisrCQkJ CQkJU2V0RXJyb3IoIkNvdWxkbid0IGFsbG9jYXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCBy ZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCX0KKysJCQkJfQorKwkJCQlhdXRvIG5i X3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZl cnRfYnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBt X2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJaWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQlT ZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CisgCQkJCQlyZXR1cm4gZmFs c2U7CisgCQkJCX0KKy0JCQl9CistCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkNv bnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAoY29u c3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7CistCQkJ aWYgKG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1 ZGlvIiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJCX0KKy0JCQkqZGF0YSA9IChjb25z dCBpbnQxNl90ICopIG1fY29udmVydF9idWZmZXJbMF07CistCQkJKnNpemUgPSBuYl9zYW1wbGVz OworLQkJfSBlbHNlIHsKKy0JCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRh dGFbMF07CistCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVzOworLQkJfQorLQl9IGVsc2Ug eworLQkJaWYgKG1fZmluaXNoZWQgJiYgbV9jb252ZXJ0ZXIpIHsKKy0JCQlhdXRvIG5iX3NhbXBs ZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZl cl9uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJyb3Io IkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7CistCQkJ fSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworLQkJCQltX2dvdF9mcmFtZSA9IDE7CisgCQkJ CSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKyAJCQkJKnNp emUgPSBuYl9zYW1wbGVzOworKwkJCX0gZWxzZSB7CisrCQkJCSpkYXRhID0gKGNvbnN0IGludDE2 X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKysJCQkJKnNpemUgPSBtX2ZyYW1lLT5uYl9zYW1wbGVz OworKwkJCX0KKysJCX0gZWxzZSB7CisrCQkJaWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlmIChJ c0ZpbmlzaGVkKCkpIHsKKysJCQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVz aChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworKwkJCQkJ aWYgKG5iX3NhbXBsZXMgPCAwKSB7CisrCQkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZlcnQg YXVkaW8iLCByZXQpOworKwkJCQkJCXJldHVybiBmYWxzZTsKKysJCQkJCX0gZWxzZSBpZiAobmJf c2FtcGxlcyA+IDApIHsKKysJCQkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fY29udmVy dF9idWZmZXJbMF07CisrCQkJCQkJKnNpemUgPSBuYl9zYW1wbGVzOworKwkJCQkJfQorKwkJCQl9 CisgCQkJfQorIAkJfQorLQl9CisKKy0JcmV0dXJuIHRydWU7CisrCQlyZXR1cm4gdHJ1ZTsKKysJ fQorIH0KKworIGlubGluZSB2b2lkIEZGbXBlZ0F1ZGlvUmVhZGVyOjpTZXRFcnJvcihjb25zdCBj aGFyICptZXNzYWdlLCBpbnQgZXJybnVtKSB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvQ01ha2VMaXN0 cy50eHQgYi90ZXN0cy9DTWFrZUxpc3RzLnR4dAoraW5kZXggYTJiNTE3Yi4uMTIzZTY0MyAxMDA2 NDQKKy0tLSBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0CisrKysgYi90ZXN0cy9DTWFrZUxpc3RzLnR4 dAorQEAgLTM4LDYgKzM4LDEyIEBAIHNldChTUkNTCisKKyBpZihCVUlMRF9UT09MUykKKyAJc2V0 KFNSQ1MgJHtTUkNTfSAuLi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlcl90ZXN0LmNwcCkK KysgICAgaW5jbHVkZV9kaXJlY3RvcmllcygKKysgICAgICAgICR7RkZNUEVHX0xJQkFWRk9STUFU X0lOQ0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVHX0xJQkFWQ09ERUNfSU5DTFVERV9ESVJT fQorKyAgICAgICAgJHtGRk1QRUdfTElCQVZVVElMX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7 QVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSU30KKysgICAgKQorIAlsaW5rX2xpYnJhcmllcyhm cGNhbGNfbGlicykKKyBlbmRpZigpCisKKy0tIAorMi4zOC4xCisKKwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUK aW5kZXggN2VmNzgzODk0OWYzLi4xZjdiYmM3MGEyMmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hy b21hcHJpbnQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Nocm9tYXByaW50JwogcGtnbmFtZT1j aHJvbWFwcmludAogdmVyc2lvbj0xLjUuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RPT0xTPU9OIgogbWFrZV9jaGVj a190YXJnZXQ9ImNoZWNrIgoKRnJvbSA4YzYzOTIzYzgxNTg5NzdiMmU5MDM3ZjM4ZDE1NjdiOTM5 MmEwZjA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMjUvMTE2XSBjaHJvbWl1bTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4v cGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoICAgICAgfCAzNiAtLS0tLS0tLS0t LS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICAgICAgIHwgNDcg KysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMzcg ZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVz L2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hy b21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoIGIvc3JjcGtncy9jaHJv bWl1bS9wYXRjaGVzL2Nocm9taXVtLTkzLWZmbXBlZy00LjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGYwZWM3MzZmOThiYy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv Y2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMzYgKzAsMCBAQAotZGlmZiAtLWdpdCBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2Rl bXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi1pbmRleCBhYzQ3MTNi MDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQKLS0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2Rl bXV4ZXIuY2MKLSsrKyBiL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLUBAIC00Mjcs MTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2Nv cGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICBzY29wZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1 ZmZlcjsKLSAKLSAgIGlmICh0eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VEVYVCkgewotLSAgICBz aXplX3QgaWRfc2l6ZSA9IDA7Ci0rICAgIGludCBpZF9zaXplID0gMDsKLSAgICAgdWludDhfdCog aWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgp LCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklFUiwgJmlkX3NpemUpOwotIAotLSAgICBzaXpl X3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0rICAgIGludCBzZXR0aW5nc19zaXplID0gMDsKLSAgICAg dWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAg ICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19z aXplKTsKLSAKLUBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpF bnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBhY2tldCkgewotICAgICBidWZmZXIgPSBEZWNv ZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRhdGEsIHBhY2tldC0+c2l6ZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRh LnNpemUoKSk7Ci0gICB9IGVsc2UgewotLSAgICBzaXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOwot KyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOwotICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBh dl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RB VEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAmc2lkZV9kYXRhX3NpemUpOwotIAotQEAgLTUw NCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0RlbXV4ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2Nv cGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZzZXQpOwotICAgICB9Ci0gCi0tICAgIHNpemVf dCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0rICAgIGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7 Ci0gICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3NhbXBsZXNfcHRyID0KLSAgICAgICAgIHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAg ICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBf c2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZt cGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjRlMmRhMzhlMzRjCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAs MCArMSw0NyBAQAorLS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTAx LTIzIDE3OjMzOjU3LjM2NjIxMzgwNSArMDIwMAorKysrIGIvbWVkaWEvZmlsdGVycy9mZm1wZWdf ZGVtdXhlci5jYwkyMDIzLTAxLTIzIDE3OjQzOjA5LjI4MzQzNjk4MyArMDIwMAorQEAgLTkyLDI0 ICs5MiwxMiBAQAorIAorIHN0YXRpYyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShB VlN0cmVhbSogc3RyZWFtKSB7CisgICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8u CistICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBzdGFy dF90aW1lID0ga05vVGltZXN0YW1wOworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxz dGFydF90aW1lfCB2YWx1ZSBhcyBpcy4KKy0gIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05v RkZtcGVnVGltZXN0YW1wKQorKyAgaWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdU aW1lc3RhbXApIC8vIEFWX05PUFRTX1ZBTFVFCisgICAgIHN0YXJ0X3RpbWUgPSBDb252ZXJ0RnJv bVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPnN0YXJ0X3RpbWUpOworIAorLSAg Ly8gTmV4dCB0cnkgdG8gdXNlIHRoZSBmaXJzdCBEVFMgdmFsdWUsIGZvciBjb2RlY3Mgd2hlcmUg d2Uga25vdyBQVFMgPT0gRFRTCistICAvLyAoZXhjbHVkZXMgYWxsIEgyNnggY29kZWNzKS4gVGhl IHN0YXJ0IHRpbWUgbXVzdCBiZSByZXR1cm5lZCBpbiBQVFMuCistICBpZiAoYXZfc3RyZWFtX2dl dF9maXJzdF9kdHMoc3RyZWFtKSAhPSBrTm9GRm1wZWdUaW1lc3RhbXAgJiYKKy0gICAgICBzdHJl YW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IRVZDICYmCistICAgICAgc3Ry ZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2NCAmJgorLSAgICAgIHN0 cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0KSB7CistICAgIGNv bnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAgICAgICAgQ29udmVydEZyb21UaW1l QmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtKSk7 CistICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBm aXJzdF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtMTU5 Nyw3ICsxNTg1LDcgQEAKKyAgIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDogc3RyZWFtc18pIHsK KyAgICAgaWYgKCFzdHJlYW0gfHwgc3RyZWFtLT5Jc0VuYWJsZWQoKSAhPSBlbmFibGVkKQorICAg ICAgIGNvbnRpbnVlOworLSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtLT5h dl9zdHJlYW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisrICAgIGlmIChzdHJlYW0tPmF2X3N0 cmVhbSgpLT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgIGNvbnRpbnVlOwor ICAgICBpZiAoIWxvd2VzdF9zdGFydF90aW1lX3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFtLT5z dGFydF90aW1lKCkgPCBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgewor QEAgLTE2MTgsNyArMTYwNiw3IEBACisgICAgIGlmIChzdHJlYW0tPnR5cGUoKSAhPSBEZW11eGVy U3RyZWFtOjpWSURFTykKKyAgICAgICBjb250aW51ZTsKKyAKKy0gICAgaWYgKGF2X3N0cmVhbV9n ZXRfZmlyc3RfZHRzKHN0cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQor KyAgICBpZiAoc3RyZWFtLT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxV RSkKKyAgICAgICBjb250aW51ZTsKKyAKKyAgICAgaWYgKCFzdHJlYW0tPklzRW5hYmxlZCgpKQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2hyb21pdW0v dGVtcGxhdGUKaW5kZXggYjRhMzlkZmQzODE1Li5jMjk0NTNjZDFmNTAgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpA QCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMgU2VlIGh0dHBzOi8vY2hyb21pdW1k YXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxpbnV4IGZvciB0aGUgbGF0ZXN0IHZl cnNpb24KIHZlcnNpb249MTE0LjAuNTczNS4xMDYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGFy Y2hzPSJpNjg2KiB4ODZfNjQqIGFhcmNoNjQqIGFybXY3bCoiCiBob3N0bWFrZWRlcGVuZHM9Igog ICQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0xNSIpCgpGcm9tIGJlOGUzOWFmZGQ1OGJh MGQxMGE5ZGU1OWM5MjkwZGU5YjUwOGRmNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNi8xMTZdIGNtdXM6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8IDEyICsrKysr KysrKysrKwogc3JjcGtncy9jbXVzL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3MvY211cy9wYXRjaGVz L2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5m ZmE5NWFiODExMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1w ZWc2LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBhL2lwL2ZmbXBlZy5jCisrKysgYi9pcC9m Zm1wZWcuYworQEAgLTIwMiw5ICsyMDIsNiBAQCBzdGF0aWMgaW50IGZmbXBlZ19vcGVuKHN0cnVj dCBpbnB1dF9wbHVnaW5fZGF0YSAqaXBfZGF0YSkKKyAJCQlicmVhazsKKyAJCX0KKyAKKy0JCWlm IChjb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKy0JCQljYy0+ ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19UUlVOQ0FURUQ7CistCisgCQlpZiAoYXZjb2RlY19vcGVu MihjYywgY29kZWMsIE5VTEwpIDwgMCkgeworIAkJCWRfcHJpbnQoImNvdWxkIG5vdCBvcGVuIGNv ZGVjOiAlZCwgJXNcbiIsIGNjLT5jb2RlY19pZCwgYXZjb2RlY19nZXRfbmFtZShjYy0+Y29kZWNf aWQpKTsKKyAJCQllcnIgPSAtSVBfRVJST1JfVU5TVVBQT1JURURfRklMRV9UWVBFOwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9jbXVzL3RlbXBsYXRlIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCmluZGV4 IDBmY2I0MjRjZTMzNi4uMDViNzdkMGZlY2FlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NtdXMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnY211cycKIHBrZ25hbWU9Y211cwogdmVyc2lvbj0yLjEwLjAKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9 InByZWZpeD0vdXNyIExEPSRDQyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20g NzJhOTQ4ODg5NGQ0ZjI3NWRhYTM1YjM4MmU5ZTkxNzRkNmU1NDBjMCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI3LzExNl0gY3lhbnJpcDog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxh dGUKaW5kZXggOTc5NmUzNDYxNjAxLi41ZGIzMGUwMjBkMTcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv Y3lhbnJpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjeWFucmlwJwogcGtnbmFtZT1jeWFucmlwCiB2 ZXJzaW9uPTAuOS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBs aWJjZGlvLWRldmVsIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJtdXNp Y2JyYWluejUtZGV2ZWwiCgpGcm9tIDZkYzIyY2ZhNmExZDAwODIzNjZiMjg2YjFhNGFlMGJhZDlk YTIwMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BB VENIIDAyOC8xMTZdIGRlYWRiZWVmOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kZWFkYmVlZi90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKaW5kZXggYjY2NGJiMWI5YmQ5Li4x NjViM2M3YjljYWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9kZWFkYmVlZi90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnZGVhZGJlZWYnCiBwa2duYW1lPWRlYWRiZWVmCiB2ZXJzaW9uPTEuOC44Ci1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWxmbSAtLWRp c2FibGUtbm90aWZ5IC0tZGlzYWJsZS1ndGsyIgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBs aWJ0b29sIGdldHRleHQgZ2V0dGV4dC1kZXZlbCBpbnRsdG9vbCBwa2ctY29uZmlnCiAgeWFzbSBj bGFuZyBnbGliLWRldmVsIgogbWFrZWRlcGVuZHM9IgotIGFsc2EtbGliLWRldmVsIGRidXMtZGV2 ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAorIGFs c2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrMy1k ZXZlbCBpbWxpYjItZGV2ZWwKICBqYW5zc29uLWRldmVsIGxpYmNkZGItZGV2ZWwgbGliY2Rpby1k ZXZlbCBsaWJjdXJsLWRldmVsIGxpYmZsYWMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlicG5nLWRl dmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwK ICBsaWJ6aXAtZGV2ZWwgbXBnMTIzLWRldmVsIG9wdXNmaWxlLWRldmVsIHB1bHNlYXVkaW8tZGV2 ZWwgd2F2cGFjay1kZXZlbCIKCkZyb20gMDA4N2Y1MmMyODVlYjk3YWM5YzJkZjc0Y2RiZGMyZTNl NTA2ZDI0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDI5LzExNl0gZG9scGhpbi1lbXU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZG9scGhpbi1l bXUvdGVtcGxhdGUgYi9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCmluZGV4IDdlYTE5N2Nl YjJhOC4uN2FlYjBhNWI2NDVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdkb2xwaGluLWVtdScKIHBrZ25hbWU9ZG9scGhpbi1lbXUKIHZl cnNpb249NS4wLjE2MTAxCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfZG9scGhpbl9jb21taXQ9 OGVjZmE1MzdhMjQyZGU3NGQyZTM3MmUzMGQ5ZDc5YjE0NTg0YjJmYgogX21nYmFfY29tbWl0PTQw ZDRjNDMwZmMzNmNhZWI3ZWEzMmZkMzk2MjQ5NDdlZDQ4N2QyZjIKICNWZXJzaW9uL2hhc2ggcGFp ciBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9kb2xwaGluLWVtdS5vcmcvZG93bmxvYWQvCgpGcm9t IDA3ZTkwNWI2NTQ2YWExMDVhNTllZWU3MTYzZjJlMzNkNDBmZDc5ZTggTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzMC8xMTZdIGRyb2lkY2Ft LW9icy1wbHVnaW46IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNh bS1vYnMtcGx1Z2luL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1 Z2luL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3RlbXBsYXRlCmluZGV4 IGZjOWM5YmY2YjlkNS4uZmIwNDgwNzU0ZGY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lkY2Ft LW9icy1wbHVnaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZHJvaWRjYW0tb2Jz LXBsdWdpbicKIHBrZ25hbWU9ZHJvaWRjYW0tb2JzLXBsdWdpbgogdmVyc2lvbj0yLjAuMQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX3VzZV9l bnY9eWVzCiBtYWtlX2J1aWxkX2FyZ3M9IkFMTE9XX1NUQVRJQz1ubyIKCkZyb20gMjk3ZmFlNWI1 NDhmN2E1OTA2NDk5MTZiMGFkNDE2NzgxYWVkMmFkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMxLzExNl0gZHJvaWRjYW06IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZSB8IDIgKy0KIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRlCmlu ZGV4IDFjM2YxYjhiMWZjNi4uMzJhOTIyMGI3OWE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lk Y2FtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9ZHJvaWRjYW0KIHZl cnNpb249MS44LjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1tYWtl ZmlsZQogbWFrZV9idWlsZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAgSlBFRz0tbHR1cmJv anBlZyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gYzQ2OWJiMDE1YWYzN2Yw ODE3YjRkMDFhMjkwYmY4ODI1OTk0YjI3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMyLzExNl0gZmZtcGVndGh1bWJuYWlsZXI6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZt cGVnNi5wYXRjaCAgIHwgMjAyICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9mZm1wZWd0aHVt Ym5haWxlci90ZW1wbGF0ZSAgICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDIw NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dz L2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM2M2ZmMzVhMjg0MQotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAg KzEsMjAyIEBACistLS0gYS9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRlY29kZXIuY3BwCTIw MTctMTEtMjEgMTQ6MDY6NTcuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJmZm1wZWd0aHVtYm5h aWxlci9tb3ZpZWRlY29kZXIuY3BwCTIwMjMtMDUtMDUgMTM6MTQ6NDcuOTQ2NTYwNjY4IC0wNDAw CitAQCAtNDEsMTEgKzQxLDYgQEAKKyBuYW1lc3BhY2UgZmZtcGVndGh1bWJuYWlsZXIKKyB7Cisg Cistc3RydWN0IFNpbGVuY2VMb2dMZXZlbAorLXsKKy0gICAgU2lsZW5jZUxvZ0xldmVsKCkgeyBh dl9sb2dfc2V0X2xldmVsKEFWX0xPR19RVUlFVCk7IH0KKy19OworLQorIE1vdmllRGVjb2Rlcjo6 TW92aWVEZWNvZGVyKEFWRm9ybWF0Q29udGV4dCogcGF2Q29udGV4dCkKKyA6IG1fVmlkZW9TdHJl YW0oLTEpCisgLCBtX3BGb3JtYXRDb250ZXh0KHBhdkNvbnRleHQpCitAQCAtNzAsOCArNjUsNiBA QAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplKGNvbnN0IHN0cmluZyYgZmlsZW5h bWUsIGJvb2wgcHJlZmVyRW1iZWRkZWRNZXRhZGF0YSkKKyB7CistICAgIGF2X3JlZ2lzdGVyX2Fs bCgpOworLSAgICBhdmNvZGVjX3JlZ2lzdGVyX2FsbCgpOworICAgICBhdmZvcm1hdF9uZXR3b3Jr X2luaXQoKTsKKyAKKyAgICAgc3RyaW5nIGlucHV0RmlsZSA9IGZpbGVuYW1lID09ICItIiA/ICJw aXBlOiIgOiBmaWxlbmFtZTsKK0BAIC05Nyw4ICs5MCw3IEBACisgeworICAgICBpZiAobV9wVmlk ZW9Db2RlY0NvbnRleHQpCisgICAgIHsKKy0gICAgICAgIGF2Y29kZWNfY2xvc2UobV9wVmlkZW9D b2RlY0NvbnRleHQpOworLSAgICAgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQgPSBudWxscHRyOwor KyAgICAgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoJm1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKyAg ICAgfQorIAorICAgICBpZiAoKCFtX0Zvcm1hdENvbnRleHRXYXNHaXZlbikgJiYgbV9wRm9ybWF0 Q29udGV4dCkKK0BAIC0xNTIsMTAgKzE0NCwxMCBAQAorICAgICBmb3IgKHVuc2lnbmVkIGludCBp ID0gMDsgaSA8IG1fcEZvcm1hdENvbnRleHQtPm5iX3N0cmVhbXM7ICsraSkKKyAgICAgeworICAg ICAgICAgQVZTdHJlYW0gKnN0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV07Cist ICAgICAgICBhdXRvIGN0eCA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjOwor LSAgICAgICAgaWYgKGN0eC0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisrICAg ICAgICBhdXRvIHBhciA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyOwor KyAgICAgICAgaWYgKHBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pCisgICAg ICAgICB7CistICAgICAgICAgICAgaWYgKCFwcmVmZXJFbWJlZGRlZE1ldGFkYXRhIHx8ICFpc1N0 aWxsSW1hZ2VDb2RlYyhjdHgtPmNvZGVjX2lkKSkKKysgICAgICAgICAgICBpZiAoIXByZWZlckVt YmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNvZGVjKHBhci0+Y29kZWNfaWQpKQorICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmlkZW9TdHJlYW1zLnB1c2hfYmFjayhpKTsK KyAgICAgICAgICAgICAgICAgY29udGludWU7CitAQCAtMjAzLDggKzE5NSw3IEBACisgICAgIH0K KyAKKyAgICAgbV9wVmlkZW9TdHJlYW0gPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlk ZW9TdHJlYW1dOworLSAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG1fcFZpZGVvU3RyZWFtLT5j b2RlYzsKKy0gICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKG1fcFZpZGVv Q29kZWNDb250ZXh0LT5jb2RlY19pZCk7CisrICAgIG1fcFZpZGVvQ29kZWMgPSBhdmNvZGVjX2Zp bmRfZGVjb2RlcihtX3BWaWRlb1N0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAKKyAgICAg aWYgKG1fcFZpZGVvQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgeworQEAgLTIxNCw2ICsyMDUsMjAg QEAKKyAgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJWaWRlbyBDb2RlYyBub3QgZm91bmQiKTsK KyAgICAgfQorIAorKyAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IGF2Y29kZWNfYWxsb2NfY29u dGV4dDMobV9wVmlkZW9Db2RlYyk7CisrCisrICAgIGlmIChtX3BWaWRlb0NvZGVjQ29udGV4dCA9 PSBudWxscHRyKQorKyAgICB7CisrICAgICAgICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBs b2dpY19lcnJvcigiQ291bGQgbm90IGFsbG9jYXRlIHZpZGVvIGNvZGVjIGNvbnRleHQiKTsKKysg ICAgfQorKworKyAgICBpZiAoYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQobV9wVmlkZW9D b2RlY0NvbnRleHQsIG1fcFZpZGVvU3RyZWFtLT5jb2RlY3BhcikgPCAwKQorKyAgICB7CisrICAg ICAgICBkZXN0cm95KCk7CisrICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiQ291bGQgbm90IGNv bmZpZ3VyZSB2aWRlbyBjb2RlYyBjb250ZXh0Iik7CisrICAgIH0KKysKKyAgICAgbV9wVmlkZW9D b2RlY0NvbnRleHQtPndvcmthcm91bmRfYnVncyA9IDE7CisgCisgICAgIGlmIChhdmNvZGVjX29w ZW4yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BWaWRlb0NvZGVjLCBudWxscHRyKSA8IDApCitA QCAtMzg2LDEzICszOTEsNiBAQAorIAorIHZvaWQgTW92aWVEZWNvZGVyOjppbml0aWFsaXplRmls dGVyR3JhcGgoY29uc3QgQVZSYXRpb25hbCYgdGltZUJhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBz aXplLCBib29sIG1haW50YWluQXNwZWN0UmF0aW8pCisgeworLSAgICBzdGF0aWMgY29uc3QgQVZQ aXhlbEZvcm1hdCBwaXhlbEZvcm1hdHNbXSA9IHsgQVZfUElYX0ZNVF9SR0IyNCwgQVZfUElYX0ZN VF9OT05FIH07CistCistICAgIGF1dG8gZGVsID0gW10gKEFWQnVmZmVyU2lua1BhcmFtcyogcCkg eyBhdl9mcmVlcChwKTsgfTsKKy0gICAgc3RkOjp1bmlxdWVfcHRyPEFWQnVmZmVyU2lua1BhcmFt cywgZGVjbHR5cGUoZGVsKT4gYnVmZmVyc2lua1BhcmFtcyhhdl9idWZmZXJzaW5rX3BhcmFtc19h bGxvYygpLCBkZWwpOworLQorLSAgICBhdmZpbHRlcl9yZWdpc3Rlcl9hbGwoKTsKKy0KKyAgICAg bV9wRmlsdGVyR3JhcGggPSBhdmZpbHRlcl9ncmFwaF9hbGxvYygpOworICAgICBhc3NlcnQobV9w RmlsdGVyR3JhcGgpOworIAorQEAgLTQwNCwxMCArNDAyLDggQEAKKyAKKyAgICAgY2hlY2tSYyhh dmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTb3VyY2UsIGF2ZmlsdGVyX2dl dF9ieV9uYW1lKCJidWZmZXIiKSwgInRodW1iX2J1ZmZlciIsIHNzLnN0cigpLmNfc3RyKCksIG51 bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBm aWx0ZXIgc291cmNlIik7CistICAgIGJ1ZmZlcnNpbmtQYXJhbXMtPnBpeGVsX2ZtdHMgPSBwaXhl bEZvcm1hdHM7CistICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9w RmlsdGVyU2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1 ZmZlcnNpbmsiLCBudWxscHRyLCBidWZmZXJzaW5rUGFyYW1zLmdldCgpLCBtX3BGaWx0ZXJHcmFw aCksCisrICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVy U2luaywgYXZmaWx0ZXJfZ2V0X2J5X25hbWUoImJ1ZmZlcnNpbmsiKSwgInRodW1iX2J1ZmZlcnNp bmsiLCBudWxscHRyLCBudWxscHRyLCBtX3BGaWx0ZXJHcmFwaCksCisgICAgICAgICAgICAgIkZh aWxlZCB0byBjcmVhdGUgZmlsdGVyIHNpbmsiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy5yZWxl YXNlKCk7CisgCisgICAgIEFWRmlsdGVyQ29udGV4dCogeWFkaWZGaWx0ZXIgPSBudWxscHRyOwor ICAgICBpZiAobV9wRnJhbWUtPmludGVybGFjZWRfZnJhbWUgIT0gMCkKK0BAIC01MDAsMTUgKzQ5 NiwxNSBAQAorICAgICB9CisgCisgICAgIGNoZWNrUmMoYXZfc2Vla19mcmFtZShtX3BGb3JtYXRD b250ZXh0LCAtMSwgdGltZXN0YW1wLCAwKSwgIlNlZWtpbmcgaW4gdmlkZW8gZmFpbGVkIik7Cist ICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1zW21fVmlk ZW9TdHJlYW1dLT5jb2RlYyk7CisrICAgIGF2Y29kZWNfZmx1c2hfYnVmZmVycyhtX3BWaWRlb0Nv ZGVjQ29udGV4dCk7CisgCisgICAgIGludCBrZXlGcmFtZUF0dGVtcHRzID0gMDsKKy0gICAgYm9v bCBnb3RGcmFtZSA9IDA7CisrICAgIGJvb2wgZ290RnJhbWU7CisgCisgICAgIGRvCisgICAgIHsK KyAgICAgICAgIGludCBjb3VudCA9IDA7CistICAgICAgICBnb3RGcmFtZSA9IDA7CisrICAgICAg ICBnb3RGcmFtZSA9IGZhbHNlOworIAorICAgICAgICAgd2hpbGUgKCFnb3RGcmFtZSAmJiBjb3Vu dCA8IDIwKQorICAgICAgICAgeworQEAgLTU1MiwxNyArNTQ4LDMzIEBACisgICAgICAgICByZXR1 cm4gZmFsc2U7CisgICAgIH0KKyAKKy0gICAgYXZfZnJhbWVfdW5yZWYobV9wRnJhbWUpOworLQor LSAgICBpbnQgZnJhbWVGaW5pc2hlZDsKKysgICAgaW50IHJjID0gYXZjb2RlY19zZW5kX3BhY2tl dChtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wUGFja2V0KTsKKysgICAgaWYocmMgPT0gQVZFUlJP UihFQUdBSU4pKQorKyAgICB7CisrICAgICAgICByYyA9IDA7CisrICAgIH0KKyAKKy0gICAgaW50 IGJ5dGVzRGVjb2RlZCA9IGF2Y29kZWNfZGVjb2RlX3ZpZGVvMihtX3BWaWRlb0NvZGVjQ29udGV4 dCwgbV9wRnJhbWUsICZmcmFtZUZpbmlzaGVkLCBtX3BQYWNrZXQpOworLSAgICBpZiAoYnl0ZXNE ZWNvZGVkIDwgMCkKKysgICAgaWYocmMgPT0gQVZFUlJPUl9FT0YpCisrICAgIHsKKysgICAgICAg IHJldHVybiBmYWxzZTsKKysgICAgfQorKyAgICBlbHNlIGlmKHJjIDwgMCkKKyAgICAgeworLSAg ICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGJ5 dGVzRGVjb2RlZCA8IDAiKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8g ZGVjb2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVjX3NlbmRfcGFja2V0KCkgPCAwIik7CisgICAgIH0K KyAKKy0gICAgcmV0dXJuIGZyYW1lRmluaXNoZWQgPiAwOworKyAgICByYyA9IGF2Y29kZWNfcmVj ZWl2ZV9mcmFtZShtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wRnJhbWUpOworKyAgICBzd2l0Y2go cmMpCisrICAgIHsKKysgICAgICAgIGNhc2UgMDoKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KysKKysgICAgICAgIGNhc2UgQVZFUlJPUihFQUdBSU4pOgorKyAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKysKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgdGhyb3cgbG9naWNfZXJy b3IoIkZhaWxlZCB0byBkZWNvZGUgdmlkZW8gZnJhbWU6IGF2Y29kZWNfcmVjZWl2ZV9mcmFtZSgp IDwgMCIpOworKyAgICB9CisgfQorIAorIGJvb2wgTW92aWVEZWNvZGVyOjpnZXRWaWRlb1BhY2tl dCgpCitAQCAtNTcwLDggKzU4Miw2IEBACisgICAgIGJvb2wgZnJhbWVzQXZhaWxhYmxlID0gdHJ1 ZTsKKyAgICAgYm9vbCBmcmFtZURlY29kZWQgPSBmYWxzZTsKKyAKKy0gICAgaW50IGF0dGVtcHRz ID0gMDsKKy0KKyAgICAgaWYgKG1fcFBhY2tldCkKKyAgICAgeworICAgICAgICAgYXZfcGFja2V0 X3VucmVmKG1fcFBhY2tldCk7CitAQCAtNTgwLDYgKzU5MCw3IEBACisgCisgICAgIG1fcFBhY2tl dCA9IG5ldyBBVlBhY2tldCgpOworIAorKworICAgICB3aGlsZSAoZnJhbWVzQXZhaWxhYmxlICYm ICFmcmFtZURlY29kZWQpCisgICAgIHsKKyAgICAgICAgIGZyYW1lc0F2YWlsYWJsZSA9IGF2X3Jl YWRfZnJhbWUobV9wRm9ybWF0Q29udGV4dCwgbV9wUGFja2V0KSA+PSAwOworQEAgLTY0NCw3ICs2 NTUsNyBAQAorIAorIGludDMyX3QgTW92aWVEZWNvZGVyOjpnZXRTdHJlYW1Sb3RhdGlvbigpCisg eworLSAgICBpbnQzMl90KiBtYXRyaXggPSByZWludGVycHJldF9jYXN0PGludDMyX3QqPihhdl9z dHJlYW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRlb1N0cmVhbSwgQVZfUEtUX0RBVEFfRElTUExBWU1B VFJJWCwgbnVsbHB0cikpOworKyAgICBhdXRvIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50 MzJfdCo+KGF2X3N0cmVhbV9nZXRfc2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFU QV9ESVNQTEFZTUFUUklYLCBudWxscHRyKSk7CisgICAgIGlmIChtYXRyaXgpCisgICAgIHsKKyAg ICAgICAgIGF1dG8gYW5nbGUgPSBscm91bmQoYXZfZGlzcGxheV9yb3RhdGlvbl9nZXQobWF0cml4 KSk7CisKKy0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5oCTIwMTctMTEt MTIgMDQ6MjM6MzguMDAwMDAwMDAwIC0wNTAwCisrKysgYi9saWJmZm1wZWd0aHVtYm5haWxlci9t b3ZpZWRlY29kZXIuaAkyMDIzLTA1LTA1IDEzOjI2OjA3LjA5NTUyOTkxMSAtMDQwMAorQEAgLTc4 LDcgKzc4LDcgQEAKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV9WaWRlb1N0cmVhbTsN CisgICAgIEFWRm9ybWF0Q29udGV4dCogICAgICAgIG1fcEZvcm1hdENvbnRleHQ7DQorICAgICBB VkNvZGVjQ29udGV4dCogICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dDsNCistICAgIEFWQ29k ZWMqICAgICAgICAgICAgICAgIG1fcFZpZGVvQ29kZWM7DQorKyAgICBjb25zdCBBVkNvZGVjKiAg ICAgICAgICBtX3BWaWRlb0NvZGVjOw0KKyAgICAgQVZGaWx0ZXJHcmFwaCogICAgICAgICAgbV9w RmlsdGVyR3JhcGg7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJTb3Vy Y2U7DQorICAgICBBVkZpbHRlckNvbnRleHQqICAgICAgICBtX3BGaWx0ZXJTaW5rOw0KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBl Z3RodW1ibmFpbGVyL3RlbXBsYXRlCmluZGV4IDAzOWVlYTc2MjJiMy4uMzVkNTQ2MDE4ZDEyIDEw MDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdmZm1wZWd0aHVtYm5haWxlcicKIHBrZ25hbWU9ZmZtcGVndGh1bWJuYWlsZXIK IHZlcnNpb249Mi4yLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtl CiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVwZW5kcz0ibGlicG5nLWRldmVs IGxpYmpwZWctdHVyYm8tZGV2ZWwgZmZtcGVnLWRldmVsIgpAQCAtOSw4ICs5LDggQEAgZGVwZW5k cz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iTGlnaHR3ZWlnaHQgdmlkZW8gdGh1bWJuYWlsZXIiCiBt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BM LTIuMC1vci1sYXRlciIKLWhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vZGlya3ZkYi8ke3Br Z25hbWV9IgotZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNp b259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgoraG9tZXBhZ2U9Imh0dHBzOi8vZ2l0 aHViLmNvbS9kaXJrdmRiIgorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS8ke3BrZ25hbWV9L3JlbGVh c2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5iejIiCiBj aGVja3N1bT0xY2IyNDA1OWMzODIyM2Y2NTdiMzAwYzg0ZGQ4MDQ5MWI3MDQwZDRiNjk0NzFjNGZl YTY5YmU4NjJiYzk5YjViCiAKIHBvc3RfaW5zdGFsbCgpIHsKCkZyb20gMGYxNmFjNjdjYzIyMDMz OWVkZWFiNzlmOTM5ZDMwYzI2MmE1MWFjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMzLzExNl0gZmZtcGVndGh1bWJzOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZ3RodW1icy90 ZW1wbGF0ZQppbmRleCA1ZjBiOTQxNGRhZGEuLjExYjg4MTkzNTI4ZiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYnMn CiBwa2duYW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1t b2R1bGVzIGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBwa2ctY29uZmlnIHF0NS1ob3N0LXRv b2xzIHF0NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSBmODA3YTIyMjNkYzA0YWY2Njc5MGQ1MmUyNTc5 NDlkOGYwY2M0ZTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMzQvMTE2XSBmZm1zMjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDQyNCArKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiAr LQogMiBmaWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2Zm bXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjE0NzlmYWJjYWZjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtczIv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNDI0IEBACitGcm9tIDQ1NjczMTQ5ZTlh MmY1NTg2ODU1YWQ0NzJlMzA1OTA4NGVhYTM2YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6 IFR1ZSwgNCBNYXkgMjAyMSAxNDo0MToyMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBVc2UgYXV0 byBmb3IgQVZDb2RlYworCitUaGUgZ2VuaXVzZXMgb3ZlciBhdCBGRm1wZWcgZGVjaWRlZCB0byBj b25zdGlmeSB0aGlzIEFQSSwgc28gb2xkCit2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSB3aWxsIHJl dHVybiBBVkNvZGVjICosIHdoaWxlIG5ldyB2ZXJzaW9ucworb2YgdGhlIGxpYmFyeSB3aWxsIHJl dHVybiBjb25zdCBBVkNvZGVjICosIHdoaWNoLCBpbiBDKyssIGFyZSBub3QKK09LIHRvIGNvbnZl cnQgYmV0d2Vlbi4KKworUmF0aGVyIHRoYW4gdXNlIHNvbWUgbWFjcm8gaGVsbCBpbiBmZm1zY29t cGF0LmgsIHdlIGNhbiB3b3JrIGFyb3VuZAordGhpcyBieSB1c2luZyBhdXRvLgorCitHcm9zcy4K KworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFp bC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAyICstCisgc3JjL2NvcmUv aW5kZXhpbmcuY3BwICAgIHwgNiArKystLS0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAy ICstCisgMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMvY29yZS9hdWRpb3Nv dXJjZS5jcHAKK2luZGV4IGU0Y2U5N2MuLmFjMDk2NjYgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9h dWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcAorQEAgLTQ2OSw3 ICs0NjksNyBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6Ok9wZW5GaWxlKCkgeworIAorICAgICBM QVZGT3BlbkZpbGUoU291cmNlRmlsZS5jX3N0cigpLCBGb3JtYXRDb250ZXh0LCBUcmFja051bWJl cik7CisgCistICAgIEFWQ29kZWMgKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAg IGF1dG8gKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFt c1tUcmFja051bWJlcl0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgIGlmIChDb2RlYyA9PSBu dWxscHRyKQorICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElO RywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAgICAgICAgICAiQXVkaW8gY29kZWMgbm90IGZvdW5k Iik7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5kZXhp bmcuY3BwCitpbmRleCBlNTQ3YzVhLi41OWZiNGU4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5k ZXhpbmcuY3BwCisrKysgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zODQsNyArMzg0LDcg QEAgRkZNU19UcmFja1R5cGUgRkZNU19JbmRleGVyOjpHZXRUcmFja1R5cGUoaW50IFRyYWNrKSB7 CisgfQorIAorIGNvbnN0IGNoYXIgKkZGTVNfSW5kZXhlcjo6R2V0VHJhY2tDb2RlYyhpbnQgVHJh Y2spIHsKKy0gICAgQVZDb2RlYyAqY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgYXV0byAq Y29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNr XS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgcmV0dXJuIGNvZGVjID8gY29kZWMtPm5hbWUg OiBudWxscHRyOworIH0KKyAKK0BAIC00MDIsNyArNDAyLDcgQEAgRkZNU19JbmRleCAqRkZNU19J bmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFVzZURUUyk7CisgCisgICAgICAg ICBpZiAoSW5kZXhNYXNrLmNvdW50KGkpICYmIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNv ZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAgICAgICAg IEFWQ29kZWMgKlZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0 LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICAgICAgICAgIGF1dG8gKlZp ZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ld LT5jb2RlY3Bhci0+Y29kZWNfaWQpOworICAgICAgICAgICAgIGlmICghVmlkZW9Db2RlYykgewor ICAgICAgICAgICAgICAgICBGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5kaXNjYXJkID0gQVZE SVNDQVJEX0FMTDsKKyAgICAgICAgICAgICAgICAgSW5kZXhNYXNrLmVyYXNlKGkpOworQEAgLTQz Myw3ICs0MzMsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7Cisg ICAgICAgICAgICAgICAgIEluZGV4TWFzay5pbnNlcnQoaSk7CisgICAgICAgICAgICAgfQorICAg ICAgICAgfSBlbHNlIGlmIChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKSB7Cist ICAgICAgICAgICAgQVZDb2RlYyAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZv cm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAg ICAgYXV0byAqQXVkaW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQt PnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKEF1ZGlv Q29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRpb24o RkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9VTlNVUFBPUlRFRCwKKyAgICAgICAgICAgICAg ICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS92 aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK2luZGV4IGI4ODk5NzAu Ljg5NTZjMjIgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKKysrKyBiL3Ny Yy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTE3MSw3ICsxNzEsNyBAQCBGRk1TX1ZpZGVvU291 cmNlOjpGRk1TX1ZpZGVvU291cmNlKGNvbnN0IGNoYXIgKlNvdXJjZUZpbGUsIEZGTVNfSW5kZXgg JkluZGV4LCBpbgorIAorICAgICAgICAgTEFWRk9wZW5GaWxlKFNvdXJjZUZpbGUsIEZvcm1hdENv bnRleHQsIFZpZGVvVHJhY2spOworIAorLSAgICAgICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVj X2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bh ci0+Y29kZWNfaWQpOworKyAgICAgICAgYXV0byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rl cihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1ZpZGVvVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQp OworICAgICAgICAgaWYgKENvZGVjID09IG51bGxwdHIpCisgICAgICAgICAgICAgdGhyb3cgRkZN U19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9DT0RFQywKKyAgICAg ICAgICAgICAgICAgIlZpZGVvIGNvZGVjIG5vdCBmb3VuZCIpOworLS0gCisyLjQwLjAKKworRnJv bSA5NmNiZjM4ZWE5MzgxODI5YTEzMTRmNDMyYTJjNjA0OTVkY2VmYWFkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVuaHVpc0BnbWFp bC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MTI6NDEgKzAxMDAKK1N1YmplY3Q6IFtQ QVRDSF0gYWxsOiBVcGRhdGUgQVZQYWNrZXQgQVBJIHVzYWdlCisKK0FWUGFja2V0cyBtdXN0IGFs bCBiZSBvbiB0aGUgaGVhcCBub3csIHNpbmNlIGl0IGlzIG5vIGxvbmdlcgorcGFydCBvZiB0aGUg bGliYXYqIEFCSS4KKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVp dGVuaHVpc0BnbWFpbC5jb20+CistLS0KKyBzcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgfCAxNiAr KysrKystLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuY3BwICAgIHwgNjMgKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9jb3JlL2luZGV4aW5nLmggICAgICB8ICA0 ICstLQorIHNyYy9jb3JlL3V0aWxzLmNwcCAgICAgICB8ICA2IC0tLS0KKyBzcmMvY29yZS91dGls cy5oICAgICAgICAgfCAgMSAtCisgc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIHwgMzAgKysrKysr KysrKy0tLS0tLS0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNTYgZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAgYi9zcmMv Y29yZS9hdWRpb3NvdXJjZS5jcHAKK2luZGV4IDM3Y2Y5YWUuLmU0Y2U5N2MgMTAwNjQ0CistLS0g YS9zcmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKKysrKyBiL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNw cAorQEAgLTI4NSwxMCArMjg1LDE1IEBAIEZGTVNfQXVkaW9Tb3VyY2U6OkF1ZGlvQmxvY2sgKkZG TVNfQXVkaW9Tb3VyY2U6OkNhY2hlQmxvY2soQ2FjaGVJdGVyYXRvciAmcG9zKSB7CisgaW50IEZG TVNfQXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsKKyAg ICAgQ3VycmVudEZyYW1lID0gJkZyYW1lc1tQYWNrZXROdW1iZXJdOworIAorLSAgICBBVlBhY2tl dCBQYWNrZXQ7CistICAgIGlmICghUmVhZFBhY2tldCgmUGFja2V0KSkKKysgICAgQVZQYWNrZXQg KlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBpZiAoIVBhY2tldCkKKysgICAgICAg IHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFSU0VSLCBGRk1TX0VSUk9SX0FMTE9D QVRJT05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIp OworKyAgICBpZiAoIVJlYWRQYWNrZXQoUGFja2V0KSkgeworKyAgICAgICAgYXZfcGFja2V0X2Zy ZWUoJlBhY2tldCk7CisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX1BB UlNFUiwgRkZNU19FUlJPUl9VTktOT1dOLAorICAgICAgICAgICAgICJSZWFkUGFja2V0IHVuZXhw ZWN0ZWRseSBmYWlsZWQgdG8gcmVhZCBhIHBhY2tldCIpOworKyAgICB9CisgCisgICAgIC8vIFJl YWRQYWNrZXQgbWF5IGhhdmUgY2hhbmdlZCB0aGUgcGFja2V0IG51bWJlcgorICAgICBDdXJyZW50 RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CitAQCAtMjk3LDggKzMwMiw5IEBAIGludCBG Rk1TX0F1ZGlvU291cmNlOjpEZWNvZGVOZXh0QmxvY2soQ2FjaGVJdGVyYXRvciAqcG9zKSB7Cisg ICAgIGludCBOdW1iZXJPZlNhbXBsZXMgPSAwOworICAgICBBdWRpb0Jsb2NrICpDYWNoZWRCbG9j ayA9IG51bGxwdHI7CisgICAgIAorLSAgICBpbnQgUmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChD b2RlY0NvbnRleHQsICZQYWNrZXQpOworLSAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7Cisr ICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENvZGVjQ29udGV4dCwgUGFja2V0KTsK KysgICAgYXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNr ZXQpOworIAorICAgICBhdl9mcmFtZV91bnJlZihEZWNvZGVGcmFtZSk7CisgICAgIFJldCA9IGF2 Y29kZWNfcmVjZWl2ZV9mcmFtZShDb2RlY0NvbnRleHQsIERlY29kZUZyYW1lKTsKK0BAIC01MTMs OCArNTE5LDYgQEAgdm9pZCBGRk1TX0F1ZGlvU291cmNlOjpTZWVrKCkgeworIH0KKyAKKyBib29s IEZGTVNfQXVkaW9Tb3VyY2U6OlJlYWRQYWNrZXQoQVZQYWNrZXQgKlBhY2tldCkgeworLSAgICBJ bml0TnVsbFBhY2tldCgqUGFja2V0KTsKKy0KKyAgICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUoRm9y bWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAgICBpZiAoUGFja2V0LT5zdHJlYW1f aW5kZXggPT0gVHJhY2tOdW1iZXIpIHsKKyAgICAgICAgICAgICAvLyBSZXF1aXJlZCBiZWNhdXNl IG5vdCBhbGwgYXVkaW8gcGFja2V0cywgZXNwZWNpYWxseSBpbiBvZ2csIGhhdmUgYSBwdHMuIFVz ZSB0aGUgcHJldmlvdXMgdmFsaWQgcGFja2V0J3MgcHRzIGluc3RlYWQuCitkaWZmIC0tZ2l0IGEv c3JjL2NvcmUvaW5kZXhpbmcuY3BwIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitpbmRleCAyM2Zi OTViLi5lNTQ3YzVhIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCisrKysgYi9z cmMvY29yZS9pbmRleGluZy5jcHAKK0BAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBGRk1TX0luZGV4 ZXI6OkNoZWNrQXVkaW9Qcm9wZXJ0aWVzKGludCBUcmFjaywgQVZDb2RlY0NvbnRleHQgKkNvbnRl eHQpIHsKKyAgICAgfQorIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tl dChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpSZXBl YXRQaWN0LAorK3ZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29u dGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpGcmFtZVR5cGUsIGJvb2wgKklu dmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpIHsKKyAgICAg aWYgKFZpZGVvQ29udGV4dC5QYXJzZXIpIHsKKyAgICAgICAgIHVpbnQ4X3QgKk9COworQEAgLTMz MCw4ICszMzAsOCBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRB VkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdAorICAgICAgICAgYXZfcGFyc2Vy X3BhcnNlMihWaWRlb0NvbnRleHQuUGFyc2VyLAorICAgICAgICAgICAgIFZpZGVvQ29udGV4dC5D b2RlY0NvbnRleHQsCisgICAgICAgICAgICAgJk9CLCAmT0JTaXplLAorLSAgICAgICAgICAgIHBr dC5kYXRhLCBwa3Quc2l6ZSwKKy0gICAgICAgICAgICBwa3QucHRzLCBwa3QuZHRzLCBwa3QucG9z KTsKKysgICAgICAgICAgICBwa3QtPmRhdGEsIHBrdC0+c2l6ZSwKKysgICAgICAgICAgICBwa3Qt PnB0cywgcGt0LT5kdHMsIHBrdC0+cG9zKTsKKyAKKyAgICAgICAgIC8vIEguMjY0IChQQUZGKSBh bmQgSEVWQyBtYXkgaGF2ZSBvbmUgZmllbGQgcGVyIHBhY2tldCwgc28gd2UgbmVlZCB0byB0cmFj aworICAgICAgICAgLy8gd2hlbiB3ZSBoYXZlIGEgZnVsbCBvciBoYWxmIGZyYW1lIGF2YWlsYWJs ZSwgYW5kIG1hcmsgb25lIG9mIHRoZW0gYXMKK0BAIC0zNTEsMTUgKzM1MSwxNSBAQCB2b2lkIEZG TVNfSW5kZXhlcjo6UGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4 dCwgQVZQYWNrZXQgJnBrdAorIAorICAgICAgICAgKlJlcGVhdFBpY3QgPSBWaWRlb0NvbnRleHQu UGFyc2VyLT5yZXBlYXRfcGljdDsKKyAgICAgICAgICpGcmFtZVR5cGUgPSBWaWRlb0NvbnRleHQu UGFyc2VyLT5waWN0X3R5cGU7CistICAgICAgICAqSW52aXNpYmxlID0gKEluY29tcGxldGVGcmFt ZSB8fCBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBlYXRfcGljdCA8IDAgfHwgKHBrdC5mbGFncyAm IEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKysgICAgICAgICpJbnZpc2libGUgPSAoSW5jb21wbGV0 ZUZyYW1lIHx8IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0LT5m bGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpKTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICAgICpJ bnZpc2libGUgPSAhIShwa3QuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKysgICAgICAg ICpJbnZpc2libGUgPSAhIShwa3QtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7CisgICAg IH0KKyAKKyAgICAgaWYgKFZpZGVvQ29udGV4dC5Db2RlY0NvbnRleHQtPmNvZGVjX2lkID09IEFW X0NPREVDX0lEX1ZQOCkKKy0gICAgICAgIFBhcnNlVlA4KHBrdC5kYXRhWzBdLCBJbnZpc2libGUs IEZyYW1lVHlwZSk7CisrICAgICAgICBQYXJzZVZQOChwa3QtPmRhdGFbMF0sIEludmlzaWJsZSwg RnJhbWVUeXBlKTsKKyAgICAgZWxzZSBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KQorLSAgICAgICAgUGFyc2VWUDkocGt0LmRhdGFbMF0s IEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA5KHBrdC0+ZGF0YVswXSwg SW52aXNpYmxlLCBGcmFtZVR5cGUpOworIH0KKyAKKyB2b2lkIEZGTVNfSW5kZXhlcjo6RnJlZSgp IHsKK0BAIC00NTgsMzIgKzQ1OCwzNiBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5k ZXhpbmcoKSB7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0Owor LSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworKyAgICBBVlBhY2tldCAqUGFja2V0ID0gYXZf cGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAgdGhyb3cgRkZNU19F eGNlcHRpb24oRkZNU19FUlJPUl9DT0RFQywgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwK KysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKyAgICAgc3RkOjp2 ZWN0b3I8aW50NjRfdD4gTGFzdFZhbGlkVFMoRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtcywgQVZf Tk9QVFNfVkFMVUUpOworIAorICAgICBpbnQ2NF90IGZpbGVzaXplID0gYXZpb19zaXplKEZvcm1h dENvbnRleHQtPnBiKTsKKyAgICAgZW51bSBBVlBpY3R1cmVTdHJ1Y3R1cmUgTGFzdFBpY1N0cnVj dCA9IEFWX1BJQ1RVUkVfU1RSVUNUVVJFX1VOS05PV047CistICAgIHdoaWxlIChhdl9yZWFkX2Zy YW1lKEZvcm1hdENvbnRleHQsICZQYWNrZXQpID49IDApIHsKKysgICAgd2hpbGUgKGF2X3JlYWRf ZnJhbWUoRm9ybWF0Q29udGV4dCwgUGFja2V0KSA+PSAwKSB7CisgICAgICAgICAvLyBVcGRhdGUg cHJvZ3Jlc3MKKyAgICAgICAgIC8vIEZvcm1hdENvbnRleHQtPnBiIGNhbiBhcHBhcmVudGx5IGJl IE5VTEwgd2hlbiBvcGVuaW5nIGltYWdlcy4KKyAgICAgICAgIGlmIChJQyAmJiBGb3JtYXRDb250 ZXh0LT5wYikgeworLSAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250ZXh0LT5wYi0+cG9z LCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkKKysgICAgICAgICAgICBpZiAoKCpJQykoRm9ybWF0Q29u dGV4dC0+cGItPnBvcywgZmlsZXNpemUsIElDUHJpdmF0ZSkpIHsKKysgICAgICAgICAgICAgICAg YXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhj ZXB0aW9uKEZGTVNfRVJST1JfQ0FOQ0VMTEVELCBGRk1TX0VSUk9SX1VTRVIsCisgICAgICAgICAg ICAgICAgICAgICAiQ2FuY2VsbGVkIGJ5IHVzZXIiKTsKKysgICAgICAgICAgICB9CisgICAgICAg ICB9CistICAgICAgICBpZiAoIUluZGV4TWFzay5jb3VudChQYWNrZXQuc3RyZWFtX2luZGV4KSkg eworLSAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAgICAgIGlmICgh SW5kZXhNYXNrLmNvdW50KFBhY2tldC0+c3RyZWFtX2luZGV4KSkgeworKyAgICAgICAgICAgIGF2 X3BhY2tldF91bnJlZihQYWNrZXQpOworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg fQorIAorLSAgICAgICAgaW50IFRyYWNrID0gUGFja2V0LnN0cmVhbV9pbmRleDsKKysgICAgICAg IGludCBUcmFjayA9IFBhY2tldC0+c3RyZWFtX2luZGV4OworICAgICAgICAgRkZNU19UcmFjayAm VHJhY2tJbmZvID0gKCpUcmFja0luZGljZXMpW1RyYWNrXTsKKy0gICAgICAgIGJvb2wgS2V5RnJh bWUgPSAhIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworKyAgICAgICAgYm9vbCBL ZXlGcmFtZSA9ICEhKFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19LRVkpOworICAgICAgICAg UmVhZFRTKFBhY2tldCwgTGFzdFZhbGlkVFNbVHJhY2tdLCAoKlRyYWNrSW5kaWNlcylbVHJhY2td LlVzZURUUyk7CisgCisgICAgICAgICBpZiAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10t PmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykgeworLSAgICAgICAg ICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQu cHRzOworKyAgICAgICAgICAgIGludDY0X3QgUFRTID0gVHJhY2tJbmZvLlVzZURUUyA/IFBhY2tl dC0+ZHRzIDogUGFja2V0LT5wdHM7CisgICAgICAgICAgICAgaWYgKFBUUyA9PSBBVl9OT1BUU19W QUxVRSkgeworICAgICAgICAgICAgICAgICAvLyBWUHggYWx0LXJlZnMgYXJlIG91dHB1dCBhcyBw YWNrZXRzIHdoaWNoIGxhY2sgdGltZXN0bXBzIG9yIGR1cmF0aW9ucywgc2luY2UKKyAgICAgICAg ICAgICAgICAgLy8gdGhleSBhcmUgaW52aXNpYmxlLiBDdXJyZW50bHksIHRoZSB0aW1lc3RhbXAg bWFuZ2xpbmcgY29kZSBpbiBsaWJhdmZvcm1hdAorQEAgLTQ5NSw5ICs0OTksMTEgQEAgRkZNU19J bmRleCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICAvLyBG Rk1TMiBjdXJyZW50bHkgc29ydHMgcGFja2V0cyBieSBQVFMsIHdoaWNoIHdpbGwgYnJlYWsgZGVj b2RpbmcsIG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAgYm9vbCBIYXNBbHRSZWZzID0gKEZv cm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfVlA4IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X1ZQOSk7CistICAgICAgICAgICAgICAgIGlmIChQYWNrZXQuZHVyYXRpb24gPT0gMCAmJiAhSGFz QWx0UmVmcykKKysgICAgICAgICAgICAgICAgaWYgKFBhY2tldC0+ZHVyYXRpb24gPT0gMCAmJiAh SGFzQWx0UmVmcykgeworKyAgICAgICAgICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tl dCk7CisgICAgICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9S X0lOREVYSU5HLCBGRk1TX0VSUk9SX1BBUlNFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAi SW52YWxpZCBwYWNrZXQgcHRzLCBkdHMsIGFuZCBkdXJhdGlvbiIpOworKyAgICAgICAgICAgICAg ICB9CisgCisgICAgICAgICAgICAgICAgIGlmIChUcmFja0luZm8uZW1wdHkoKSkKKyAgICAgICAg ICAgICAgICAgICAgIFBUUyA9IDA7CitAQCAtNTEzLDcgKzUxOSw3IEBAIEZGTVNfSW5kZXggKkZG TVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICBQYXJzZVZpZGVvUGFja2V0 KEFWQ29udGV4dHNbVHJhY2tdLCBQYWNrZXQsICZSZXBlYXRQaWN0LCAmRnJhbWVUeXBlLCAmSW52 aXNpYmxlLCAmTGFzdFBpY1N0cnVjdCk7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZFZp ZGVvRnJhbWUoUFRTLCBSZXBlYXRQaWN0LCBLZXlGcmFtZSwKKy0gICAgICAgICAgICAgICAgRnJh bWVUeXBlLCBQYWNrZXQucG9zLCBJbnZpc2libGUpOworKyAgICAgICAgICAgICAgICBGcmFtZVR5 cGUsIFBhY2tldC0+cG9zLCBJbnZpc2libGUpOworICAgICAgICAgfSBlbHNlIGlmIChGb3JtYXRD b250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9U WVBFX0FVRElPKSB7CisgICAgICAgICAgICAgLy8gRm9yIHZpZGVvIHNlZWtpbmcgdGltZXN0YW1w cyBhcmUgdXNlZCBvbmx5IGlmIGFsbCBwYWNrZXRzIGhhdmUKKyAgICAgICAgICAgICAvLyB0aW1l c3RhbXBzLCB3aGlsZSBmb3IgYXVkaW8gdGhleSdyZSB1c2VkIGlmIGFueSBoYXZlIHRpbWVzdGFt cHMsCitAQCAtNTIyLDI4ICs1MjgsMjkgQEAgRkZNU19JbmRleCAqRkZNU19JbmRleGVyOjpEb0lu ZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICBUcmFja0luZm8uSGFzVFMgPSB0cnVlOworIAor ICAgICAgICAgICAgIGludDY0X3QgU3RhcnRTYW1wbGUgPSBBVkNvbnRleHRzW1RyYWNrXS5DdXJy ZW50U2FtcGxlOworLSAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhBdWRp b1BhY2tldChUcmFjaywgJlBhY2tldCwgQVZDb250ZXh0c1tUcmFja10sICpUcmFja0luZGljZXMp OworKyAgICAgICAgICAgIHVpbnQzMl90IFNhbXBsZUNvdW50ID0gSW5kZXhBdWRpb1BhY2tldChU cmFjaywgUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7CisgICAgICAg ICAgICAgVHJhY2tJbmZvLlNhbXBsZVJhdGUgPSBBVkNvbnRleHRzW1RyYWNrXS5Db2RlY0NvbnRl eHQtPnNhbXBsZV9yYXRlOworIAorICAgICAgICAgICAgIFRyYWNrSW5mby5BZGRBdWRpb0ZyYW1l KExhc3RWYWxpZFRTW1RyYWNrXSwKKy0gICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBs ZUNvdW50LCBLZXlGcmFtZSwgUGFja2V0LnBvcywgUGFja2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdf RElTQ0FSRCk7CisrICAgICAgICAgICAgICAgIFN0YXJ0U2FtcGxlLCBTYW1wbGVDb3VudCwgS2V5 RnJhbWUsIFBhY2tldC0+cG9zLCBQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCk7 CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoIShQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxB R19ESVNDQVJEKSkKKy0gICAgICAgICAgICBUcmFja0luZm8uTGFzdER1cmF0aW9uID0gUGFja2V0 LmR1cmF0aW9uOworKyAgICAgICAgaWYgKCEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0RJ U0NBUkQpKQorKyAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQtPmR1 cmF0aW9uOworIAorLSAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAgICAg YXZfcGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgIH0KKysgICAgYXZfcGFja2V0X2ZyZWUoJlBh Y2tldCk7CisgCisgICAgIFRyYWNrSW5kaWNlcy0+RmluYWxpemUoQVZDb250ZXh0cywgRm9ybWF0 Q29udGV4dC0+aWZvcm1hdC0+bmFtZSk7CisgICAgIHJldHVybiBUcmFja0luZGljZXMucmVsZWFz ZSgpOworIH0KKyAKKy12b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0ICZQ YWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKy0gICAgaWYgKCFVc2VEVFMgJiYg UGFja2V0LnB0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFja2V0LnB0czsK Kyt2b2lkIEZGTVNfSW5kZXhlcjo6UmVhZFRTKGNvbnN0IEFWUGFja2V0ICpQYWNrZXQsIGludDY0 X3QgJlRTLCBib29sICZVc2VEVFMpIHsKKysgICAgaWYgKCFVc2VEVFMgJiYgUGFja2V0LT5wdHMg IT0gQVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+cHRzOworICAgICBpZiAo VFMgPT0gQVZfTk9QVFNfVkFMVUUpCisgICAgICAgICBVc2VEVFMgPSB0cnVlOworLSAgICBpZiAo VXNlRFRTICYmIFBhY2tldC5kdHMgIT0gQVZfTk9QVFNfVkFMVUUpCistICAgICAgICBUUyA9IFBh Y2tldC5kdHM7CisrICAgIGlmIChVc2VEVFMgJiYgUGFja2V0LT5kdHMgIT0gQVZfTk9QVFNfVkFM VUUpCisrICAgICAgICBUUyA9IFBhY2tldC0+ZHRzOworIH0KK2RpZmYgLS1naXQgYS9zcmMvY29y ZS9pbmRleGluZy5oIGIvc3JjL2NvcmUvaW5kZXhpbmcuaAoraW5kZXggM2NmYzNjMy4uNWMwNjg2 OCAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmgKKysrKyBiL3NyYy9jb3JlL2luZGV4 aW5nLmgKK0BAIC04MCwxMCArODAsMTAgQEAgcHJpdmF0ZToKKyAgICAgaW50NjRfdCBGaWxlc2l6 ZTsKKyAgICAgdWludDhfdCBEaWdlc3RbMjBdOworIAorLSAgICB2b2lkIFJlYWRUUyhjb25zdCBB VlBhY2tldCAmUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsKKysgICAgdm9pZCBS ZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUyk7 CisgICAgIHZvaWQgQ2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4 dCAqQ29udGV4dCk7CisgICAgIHVpbnQzMl90IEluZGV4QXVkaW9QYWNrZXQoaW50IFRyYWNrLCBB VlBhY2tldCAqUGFja2V0LCBTaGFyZWRBVkNvbnRleHQgJkNvbnRleHQsIEZGTVNfSW5kZXggJlRy YWNrSW5kaWNlcyk7CistICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQg JlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgJnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZyYW1l VHlwZSwgYm9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0 cnVjdCk7CisrICAgIHZvaWQgUGFyc2VWaWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVv Q29udGV4dCwgQVZQYWNrZXQgKnBrdCwgaW50ICpSZXBlYXRQaWN0LCBpbnQgKkZyYW1lVHlwZSwg Ym9vbCAqSW52aXNpYmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCk7 CisgICAgIHZvaWQgRnJlZSgpOworIHB1YmxpYzoKKyAgICAgRkZNU19JbmRleGVyKGNvbnN0IGNo YXIgKkZpbGVuYW1lKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS91dGlscy5jcHAgYi9zcmMvY29y ZS91dGlscy5jcHAKK2luZGV4IGNlNjc1MzMuLjhhMmU5OTcgMTAwNjQ0CistLS0gYS9zcmMvY29y ZS91dGlscy5jcHAKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmNwcAorQEAgLTYyLDEyICs2Miw2IEBA IHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9ySW5mbykgeworICAgICB9 CisgfQorIAorLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCkgeworLSAgICBhdl9p bml0X3BhY2tldCgmcGt0KTsKKy0gICAgcGt0LmRhdGEgPSBudWxscHRyOworLSAgICBwa3Quc2l6 ZSA9IDA7CistfQorLQorIHZvaWQgRmlsbEFQKEZGTVNfQXVkaW9Qcm9wZXJ0aWVzICZBUCwgQVZD b2RlY0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJhbWVzKSB7CisgICAgIEFQLlNhbXBsZUZv cm1hdCA9IHN0YXRpY19jYXN0PEZGTVNfU2FtcGxlRm9ybWF0Pihhdl9nZXRfcGFja2VkX3NhbXBs ZV9mbXQoQ1RYLT5zYW1wbGVfZm10KSk7CisgICAgIEFQLkJpdHNQZXJTYW1wbGUgPSBhdl9nZXRf Ynl0ZXNfcGVyX3NhbXBsZShDVFgtPnNhbXBsZV9mbXQpICogODsKK2RpZmYgLS1naXQgYS9zcmMv Y29yZS91dGlscy5oIGIvc3JjL2NvcmUvdXRpbHMuaAoraW5kZXggOTgxOWRjNy4uMDAzYWI3OSAx MDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0aWxzLmgKKysrKyBiL3NyYy9jb3JlL3V0aWxzLmgKK0BA IC01OCw3ICs1OCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxUPiBtYWtlX3VuaXF1ZShBcmdzJiYuLi4g YXJncykgeworIH0KKyAKKyB2b2lkIENsZWFyRXJyb3JJbmZvKEZGTVNfRXJyb3JJbmZvICpFcnJv ckluZm8pOworLXZvaWQgSW5pdE51bGxQYWNrZXQoQVZQYWNrZXQgJnBrdCk7Cisgdm9pZCBGaWxs QVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVjQ29udGV4dCAqQ1RYLCBGRk1TX1Ry YWNrICZGcmFtZXMpOworIAorIHZvaWQgTEFWRk9wZW5GaWxlKGNvbnN0IGNoYXIgKlNvdXJjZUZp bGUsIEFWRm9ybWF0Q29udGV4dCAqJkZvcm1hdENvbnRleHQsIGludCBUcmFjayk7CitkaWZmIC0t Z2l0IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3Bw CitpbmRleCAwNmJkMTYxLi5iODg5OTcwIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdmlkZW9zb3Vy Y2UuY3BwCisrKysgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK0BAIC02NzMsMzAgKzY3Mywz NCBAQCB2b2lkIEZGTVNfVmlkZW9Tb3VyY2U6OkRlY29kZU5leHRGcmFtZShpbnQ2NF90ICZBU3Rh cnRUaW1lLCBpbnQ2NF90ICZQb3MpIHsKKyAgICAgaWYgKEhhc1BlbmRpbmdEZWxheWVkRnJhbWVz KCkpCisgICAgICAgICByZXR1cm47CisgCistICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgSW5p dE51bGxQYWNrZXQoUGFja2V0KTsKKy0KKy0gICAgd2hpbGUgKFJlYWRGcmFtZSgmUGFja2V0KSA+ PSAwKSB7CistICAgICAgICBpZiAoUGFja2V0LnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNrKSB7 CistICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICBBVlBhY2tldCAq UGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAg dGhyb3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9ERUNPRElORywgRkZNU19FUlJPUl9BTExP Q0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQgbm90IGFsbG9jYXRlIHBhY2tldC4i KTsKKysKKysgICAgd2hpbGUgKFJlYWRGcmFtZShQYWNrZXQpID49IDApIHsKKysgICAgICAgIGlm IChQYWNrZXQtPnN0cmVhbV9pbmRleCAhPSBWaWRlb1RyYWNrKSB7CisrICAgICAgICAgICAgYXZf cGFja2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9 CisgCisgICAgICAgICBpZiAoQVN0YXJ0VGltZSA8IDApCistICAgICAgICAgICAgQVN0YXJ0VGlt ZSA9IEZyYW1lcy5Vc2VEVFMgPyBQYWNrZXQuZHRzIDogUGFja2V0LnB0czsKKysgICAgICAgICAg ICBBU3RhcnRUaW1lID0gRnJhbWVzLlVzZURUUyA/IFBhY2tldC0+ZHRzIDogUGFja2V0LT5wdHM7 CisgCisgICAgICAgICBpZiAoUG9zIDwgMCkKKy0gICAgICAgICAgICBQb3MgPSBQYWNrZXQucG9z OworKyAgICAgICAgICAgIFBvcyA9IFBhY2tldC0+cG9zOworIAorLSAgICAgICAgYm9vbCBGcmFt ZUZpbmlzaGVkID0gRGVjb2RlUGFja2V0KCZQYWNrZXQpOworLSAgICAgICAgYXZfcGFja2V0X3Vu cmVmKCZQYWNrZXQpOworLSAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQpCisrICAgICAgICBib29s IEZyYW1lRmluaXNoZWQgPSBEZWNvZGVQYWNrZXQoUGFja2V0KTsKKysgICAgICAgIGF2X3BhY2tl dF91bnJlZihQYWNrZXQpOworKyAgICAgICAgaWYgKEZyYW1lRmluaXNoZWQpIHsKKysgICAgICAg ICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICByZXR1cm47CisrICAg ICAgICB9CisgICAgIH0KKyAKKyAgICAgLy8gRmx1c2ggZmluYWwgZnJhbWVzCistICAgIEluaXRO dWxsUGFja2V0KFBhY2tldCk7CistICAgIERlY29kZVBhY2tldCgmUGFja2V0KTsKKysgICAgRGVj b2RlUGFja2V0KFBhY2tldCk7CisrICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIH0KKyAK KyBib29sIEZGTVNfVmlkZW9Tb3VyY2U6OlNlZWtUbyhpbnQgbiwgaW50IFNlZWtPZmZzZXQpIHsK Ky0tIAorMi40MC4wCisKK0Zyb20gYmY5ZTAzZTllMDg1MzRjMDI0ZTVhNzQ0YTY0MzdjNGFhYzE2 MDIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMgPGRl cmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjIwOjQ3 ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb25maWd1cmU6IFJlbW92ZSBkZXByZWNhdGVk IEFQSSB1c2UKKworU2lnbmVkLW9mZi1ieTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVu aHVpc0BnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29u ZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiMzVlZjgwYmMuLmQxOTcxNGQwZiAxMDA2 NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTAyLDEwICsx MDIsMTAgQEAgQ0ZMQUdTPSIkX0NGTEFHUyAkRkZNUEVHX0NGTEFHUyIKKworIEFDX0RFRlVOKFtU RVNUX0ZGTVBFR10sCisgICAgICAgICAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0o W1sKKy0gICAgICAgICAgICAjaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+CisrICAgICAg ICAgICAgI2luY2x1ZGUgPGxpYmF2Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgICAgICAgICAgICAgI2lu Y2x1ZGUgPGxpYnN3c2NhbGUvc3dzY2FsZS5oPgorICAgICAgICAgICAgIF1dLFtbCistICAgICAg ICAgICAgICAgIGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisrICAgICAgICAgICAgICAgIGF2Zm9y bWF0X25ldHdvcmtfaW5pdCgpOworICAgICAgICAgICAgICAgICBzd3NjYWxlX3ZlcnNpb24oKTsK KyAgICAgICAgICAgICBdXSldLCBbZXZhbCAkMT15ZXNdLCBbZXZhbCAkMT1ub10pCisgICAgICAg ICBdKQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1z Mi90ZW1wbGF0ZQppbmRleCA2OGU4YTBjMTRiY2UuLjJhY2ZhZGFjNDRiMyAxMDA2NDQKLS0tIGEv c3JjcGtncy9mZm1zMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXMyL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtczInCiBwa2duYW1lPWZmbXMyCiB2 ZXJzaW9uPTIuNDAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXN0YXRpYyIK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBhdXRvY29uZiBhdXRvbWFrZSBsaWJ0b29sIgoK RnJvbSBjNTgzOGQyNWY5NGMyOWU1ZTZmOGQwMWIyNjQ3OTUwNzEwNDc0MzVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzUvMTE2XSBmcmVl cmRwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIC4uLi9mcmVlcmRwL3BhdGNoZXMvZmZt cGVnNl9hYTJjYjlhYS5wYXRjaCAgICB8IDQyICsrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3Mv ZnJlZXJkcC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNo YW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaCBiL3Ny Y3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNDMyNGRhM2E4ODIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCkBAIC0w LDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1ZmY1NTYyNDMzNTk4YmExNjhhNDY2ZTA3NTJiY2Ew ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFrYWxsYWJldGggPGFrYWxsYWJldGhA cG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMjMgMDc6NDg6NTQgKzAxMDAKK1N1Ympl Y3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVwZGF0ZSBoMjY0IHRvIHVzZSBuZXcgRkZNUEVHIEFQ SQorCistLS0KKyBjaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyB8IDIg KysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMgICAgICAgICAgICB8IDIgKysKKyAy IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMv dHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgYi9jaGFubmVscy90c21mL2NsaWVudC9m Zm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXggMzM5NDYyZDg2NWYuLmJlZWE4MGI3YTFlIDEwMDY0 NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKKysrKyBi L2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitAQCAtMjM5LDggKzIz OSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2ZmbXBlZ19pbml0X3N0cmVhbShJVFNNRkRlY29kZXIq IGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElBX1RZUAorIAkJfQorIAl9CisgCisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJaWYgKG1k ZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJ CW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRF RDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYwor aW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMwMTliIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9j b2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMK K0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0aWMgQk9PTCBsaWJhdmNvZGVjX2luaXQoSDI2NF9D T05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhDRVBUSU9OOworIAkJfQorIAorKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDApCisgCQlpZiAoc3lz LT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCisg CQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJDb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFH X1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYKKyAKKyAjaWZkZWYgV0lUSF9WQUFQSQorIApkaWZm IC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlcmRwL3RlbXBs YXRlCmluZGV4IDI1ZThhYTk2NzdmMC4uNGQ1MWM4MTg5OTAyIDEwMDY0NAotLS0gYS9zcmNwa2dz L2ZyZWVyZHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZXJkcCcKIHBrZ25hbWU9ZnJlZXJkcAog dmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtl CiBjb25maWd1cmVfYXJncz0iLURXSVRIX0FMU0E9T04gLURXSVRIX0NVUFM9T0ZGIC1EV0lUSF9G Rk1QRUc9T04KICAtRFdJVEhfR1NUUkVBTUVSXzBfMTA9T0ZGIC1EV0lUSF9HU1RSRUFNRVJfMV8w PU9GRiAtRFdJVEhfSlBFRz1PTgoKRnJvbSAzMjEyYzI2ZDg0NTdiYWVmNzg4OGI4MmQwMDdkYzcz ZmY0ZWRhM2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMzYvMTE2XSBnZXJiZXJhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQppbmRleCBhZTE0ZjM1Yzc2N2MuLjJkYzBhYzBj ZTAzYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Z2VyYmVyYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dl cmJlcmEnCiBwa2duYW1lPWdlcmJlcmEKIHZlcnNpb249MS4xMi4xCi1yZXZpc2lvbj0xCityZXZp c2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9TWVNURU1E PTAgLURXSVRIX0FWQ09ERUM9MSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20g ZDI3ZTcyYjcwZjA3ZmIxYWY1YTZiYjY2Y2ZlNDMzMDgzOTY2Zjk0MiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM3LzExNl0gZ29sZGVuZGlj dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hl cy9mZm1wZWc0LnBhdGNoIHwgIDIxIC0tCiBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1w ZWc1LnBhdGNoIHwgMjMyICsrKysrKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2dvbGRlbmRp Y3QvdGVtcGxhdGUgICAgICAgICAgICAgIHwgICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDIzMyBp bnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzQucGF0Y2ggYi9zcmNwa2dzL2dvbGRlbmRpY3Qv cGF0Y2hlcy9mZm1wZWc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDQ1 ZmEyN2Y1NGIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9m Zm1wZWc0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLS0tIGEvZmZtcGVn YXVkaW8uY2Mub3JpZyAyMDE4LTA1LTA5IDIyOjE2OjEzLjQ4MDY1OTk1OCArMDIwMAotKysrIGIv ZmZtcGVnYXVkaW8uY2MgICAgICAyMDE4LTA1LTA5IDIyOjE2OjUwLjc0ODMyMjc5MCArMDIwMAot QEAgLTE0Myw3ICsxNDMsNyBAQAotICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0KLS0gIHVuc2ln bmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1 ZmZlclNpemUgKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7Ci0rICB1bnNpZ25lZCBj aGFyICogYXZpb0J1ZmZlciA9ICggdW5zaWduZWQgY2hhciAqIClhdl9tYWxsb2MoIGtCdWZmZXJT aXplICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSApOwotICAgaWYgKCAhYXZpb0J1ZmZl ciApCi0gICB7Ci0gICAgIGVycm9yU3RyaW5nID0gUU9iamVjdDo6dHIoICJhdl9tYWxsb2MoKSBm YWlsZWQuIiApOwotQEAgLTM4MCw3ICszODAsNyBAQAotICAgfQotCi0gICBpZiAoICFRdDR4NTo6 QXRvbWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkgJiYKLS0gICAgICAgY29kZWND b250ZXh0Xy0+Y29kZWMtPmNhcGFiaWxpdGllcyAmIENPREVDX0NBUF9ERUxBWSApCi0rICAgICAg IGNvZGVjQ29udGV4dF8tPmNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfREVMQVkg KQotICAgewotICAgICBhdl9pbml0X3BhY2tldCggJnBhY2tldCApOwotICAgICBpbnQgZ290RnJh bWUgPSAwOwotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoIGIvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdjZmM5OGFkYTM2OAotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAs MCArMSwyMzIgQEAKK0Zyb20gMDNiYmUwMWI3OWExZjA3YTY3ODBjYjYwZjIzYTA4NzEwNGM1ZDc3 YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFiczYyIDxvdHRvbWFubkB5YW5kZXgu cnU+CitEYXRlOiBGcmksIDMwIE1hciAyMDE4IDIyOjUzOjI0ICswMzAwCitTdWJqZWN0OiBbUEFU Q0hdIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxlIHdpdGggRkZNcGVnIDMuNC4yIChpc3N1ZSAj OTc4KQorCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlv bnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2Zm bXBlZ2F1ZGlvLmNjCitpbmRleCBlZDExNzJiZGQuLjU2ZThmNzg4ZSAxMDA2NDQKKy0tLSBhL2Zm bXBlZ2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYworQEAgLTkxLDYgKzkxLDcgQEAgc3Ry dWN0IERlY29kZXJDb250ZXh0CisgICBRQnl0ZUFycmF5IGF1ZGlvRGF0YV87CisgICBRRGF0YVN0 cmVhbSBhdWRpb0RhdGFTdHJlYW1fOworICAgQVZGb3JtYXRDb250ZXh0ICogZm9ybWF0Q29udGV4 dF87CisrICBBVkNvZGVjICogY29kZWNfOworICAgQVZDb2RlY0NvbnRleHQgKiBjb2RlY0NvbnRl eHRfOworICAgQVZJT0NvbnRleHQgKiBhdmlvQ29udGV4dF87CisgICBBVlN0cmVhbSAqIGF1ZGlv U3RyZWFtXzsKK0BAIC0xMTQsNiArMTE1LDcgQEAgRGVjb2RlckNvbnRleHQ6OkRlY29kZXJDb250 ZXh0KCBRQnl0ZUFycmF5IGNvbnN0ICYgYXVkaW9EYXRhLCBRQXRvbWljSW50ICYgaXNDYW4KKyAg IGF1ZGlvRGF0YV8oIGF1ZGlvRGF0YSApLAorICAgYXVkaW9EYXRhU3RyZWFtXyggYXVkaW9EYXRh XyApLAorICAgZm9ybWF0Q29udGV4dF8oIE5VTEwgKSwKKysgIGNvZGVjXyggTlVMTCApLAorICAg Y29kZWNDb250ZXh0XyggTlVMTCApLAorICAgYXZpb0NvbnRleHRfKCBOVUxMICksCisgICBhdWRp b1N0cmVhbV8oIE5VTEwgKSwKK0BAIC0xNDMsNyArMTQ1LDExIEBAIGJvb2wgRGVjb2RlckNvbnRl eHQ6Om9wZW5Db2RlYyggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgcmV0dXJuIGZhbHNl OworICAgfQorCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU2IHx8ICggTElCQVZD T0RFQ19WRVJTSU9OX01BSk9SID09IDU2ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDU2 ICkKKyAgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2 X21hbGxvYygga0J1ZmZlclNpemUgKyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7Cisr I2Vsc2UKKysgIHVuc2lnbmVkIGNoYXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICog KWF2X21hbGxvYygga0J1ZmZlclNpemUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7 CisrI2VuZGlmCisgICBpZiAoICFhdmlvQnVmZmVyICkKKyAgIHsKKyAgICAgZXJyb3JTdHJpbmcg PSBRT2JqZWN0Ojp0ciggImF2X21hbGxvYygpIGZhaWxlZC4iICk7CitAQCAtMTg2LDcgKzE5Miwx MSBAQCBib29sIERlY29kZXJDb250ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcgJiBlcnJvclN0cmlu ZyApCisgICAvLyBGaW5kIGF1ZGlvIHN0cmVhbSwgdXNlIHRoZSBmaXJzdCBhdWRpbyBzdHJlYW0g aWYgYXZhaWxhYmxlCisgICBmb3IgKCB1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1hdENvbnRleHRf LT5uYl9zdHJlYW1zOyBpKysgKQorICAgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1Ig PCA1NyB8fCAoIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZF UlNJT05fTUlOT1IgPCAzMyApCisgICAgIGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV0t PmNvZGVjLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2Vsc2UKKysgICAg ICBpZiAoIGZvcm1hdENvbnRleHRfLT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9 PSBBVk1FRElBX1RZUEVfQVVESU8gKQorKyNlbmRpZgorICAgICB7CisgICAgICAgYXVkaW9TdHJl YW1fID0gZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV07CisgICAgICAgYnJlYWs7CitAQCAtMTk4 LDIyICsyMDgsMzggQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYg ZXJyb3JTdHJpbmcgKQorICAgICByZXR1cm4gZmFsc2U7CisgICB9CisKKysjaWYgTElCQVZDT0RF Q19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcg JiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzMgKQorICAgY29kZWNDb250ZXh0XyA9IGF1 ZGlvU3RyZWFtXy0+Y29kZWM7CistICBBVkNvZGVjICogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVj b2RlciggY29kZWNDb250ZXh0Xy0+Y29kZWNfaWQgKTsKKy0gIGlmICggIWNvZGVjICkKKysgIGNv ZGVjXyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOwor KyAgaWYgKCAhY29kZWNfICkKKyAgIHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0cigg IkNvZGVjIFtpZDogJTFdIG5vdCBmb3VuZC4iICkuYXJnKCBjb2RlY0NvbnRleHRfLT5jb2RlY19p ZCApOworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisrI2Vsc2UKKysgIGNvZGVjXyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyLT5jb2RlY19pZCApOworKyAg aWYgKCAhY29kZWNfICkKKysgIHsKKysgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggIkNv ZGVjIFtpZDogJTFdIG5vdCBmb3VuZC4iICkuYXJnKCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyLT5j b2RlY19pZCApOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBjb2RlY0NvbnRleHRfID0g YXZjb2RlY19hbGxvY19jb250ZXh0MyggY29kZWNfICk7CisrICBpZiAoICFjb2RlY0NvbnRleHRf ICkKKysgIHsKKysgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2Y29kZWNfYWxsb2Nf Y29udGV4dDMoKSBmYWlsZWQuIiApOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBhdmNv ZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dCggY29kZWNDb250ZXh0XywgYXVkaW9TdHJlYW1fLT5j b2RlY3BhciApOworKyNlbmRpZgorCistICByZXQgPSBhdmNvZGVjX29wZW4yKCBjb2RlY0NvbnRl eHRfLCBjb2RlYywgTlVMTCApOworKyAgcmV0ID0gYXZjb2RlY19vcGVuMiggY29kZWNDb250ZXh0 XywgY29kZWNfLCBOVUxMICk7CisgICBpZiAoIHJldCA8IDAgKQorICAgeworICAgICBlcnJvclN0 cmluZyA9IFFPYmplY3Q6OnRyKCAiYXZjb2RlY19vcGVuMigpIGZhaWxlZDogJTEuIiApLmFyZygg YXZFcnJvclN0cmluZyggcmV0ICkgKTsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCistICBh dl9sb2coIE5VTEwsIEFWX0xPR19JTkZPLCAiQ29kZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwg cmF0ZTogJWQsIGZvcm1hdDogJXNcbiIsIGNvZGVjLT5sb25nX25hbWUsCisrICBhdl9sb2coIE5V TEwsIEFWX0xPR19JTkZPLCAiQ29kZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwgcmF0ZTogJWQs IGZvcm1hdDogJXNcbiIsIGNvZGVjXy0+bG9uZ19uYW1lLAorICAgICAgICAgICBjb2RlY0NvbnRl eHRfLT5jaGFubmVscywgY29kZWNDb250ZXh0Xy0+c2FtcGxlX3JhdGUsIGF2X2dldF9zYW1wbGVf Zm10X25hbWUoIGNvZGVjQ29udGV4dF8tPnNhbXBsZV9mbXQgKSApOworICAgcmV0dXJuIHRydWU7 CisgfQorQEAgLTI1MiwxMCArMjc4LDEzIEBAIHZvaWQgRGVjb2RlckNvbnRleHQ6OmNsb3NlQ29k ZWMoKQorCisgICAvLyBDbG9zaW5nIGEgY29kZWMgY29udGV4dCB3aXRob3V0IHByaW9yIGF2Y29k ZWNfb3BlbjIoKSB3aWxsIHJlc3VsdCBpbgorICAgLy8gYSBjcmFzaCBpbiBmZm1wZWcKKy0gIGlm ICggYXVkaW9TdHJlYW1fICYmIGF1ZGlvU3RyZWFtXy0+Y29kZWMgJiYgYXVkaW9TdHJlYW1fLT5j b2RlYy0+Y29kZWMgKQorKyAgaWYgKCBhdWRpb1N0cmVhbV8gJiYgY29kZWNDb250ZXh0XyAmJiBj b2RlY18gKQorICAgeworICAgICBhdWRpb1N0cmVhbV8tPmRpc2NhcmQgPSBBVkRJU0NBUkRfQUxM OworLSAgICBhdmNvZGVjX2Nsb3NlKCBhdWRpb1N0cmVhbV8tPmNvZGVjICk7CisrICAgIGF2Y29k ZWNfY2xvc2UoIGNvZGVjQ29udGV4dF8gKTsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9S ID4gNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19W RVJTSU9OX01JTk9SID49IDMzICkKKysgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoICZjb2RlY0Nv bnRleHRfICk7CisrI2VuZGlmCisgICB9CisKKyAgIGF2Zm9ybWF0X2Nsb3NlX2lucHV0KCAmZm9y bWF0Q29udGV4dF8gKTsKK0BAIC0zNTYsNiArMzg1LDcgQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6 cGxheSggUVN0cmluZyAmIGVycm9yU3RyaW5nICkKKyAgICAgaWYgKCBwYWNrZXQuc3RyZWFtX2lu ZGV4ID09IGF1ZGlvU3RyZWFtXy0+aW5kZXggKQorICAgICB7CisgICAgICAgQVZQYWNrZXQgcGFj ayA9IHBhY2tldDsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJB VkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwg MzcgKQorICAgICAgIGludCBnb3RGcmFtZSA9IDA7CisgICAgICAgZG8KKyAgICAgICB7CitAQCAt MzcwLDYgKzQwMCwxOSBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJy b3JTdHJpbmcgKQorICAgICAgICAgcGFjay5kYXRhICs9IGxlbjsKKyAgICAgICB9CisgICAgICAg d2hpbGUoIHBhY2suc2l6ZSA+IDAgKTsKKysjZWxzZQorKyAgICAgIGludCByZXQgPSBhdmNvZGVj X3NlbmRfcGFja2V0KCBjb2RlY0NvbnRleHRfLCAmcGFjayApOworKyAgICAgIC8qIHJlYWQgYWxs IHRoZSBvdXRwdXQgZnJhbWVzIChpbiBnZW5lcmFsIHRoZXJlIG1heSBiZSBhbnkgbnVtYmVyIG9m IHRoZW0pICovCisrICAgICAgd2hpbGUoIHJldCA+PSAwICkKKysgICAgICB7CisrICAgICAgICBy ZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoIGNvZGVjQ29udGV4dF8sIGZyYW1lKTsKKysKKysg ICAgICAgIGlmICggUXQ0eDU6OkF0b21pY0ludDo6bG9hZEFjcXVpcmUoIGlzQ2FuY2VsbGVkXyAp IHx8IHJldCA8IDAgKQorKyAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIHBsYXlGcmFtZSgg ZnJhbWUgKTsKKysgICAgICB9CisrI2VuZGlmCisgICAgIH0KKyAgICAgLy8gYXZfZnJlZV9wYWNr ZXQoKSBtdXN0IGJlIGNhbGxlZCBhZnRlciBlYWNoIGNhbGwgdG8gYXZfcmVhZF9mcmFtZSgpCisg I2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9O X01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDcgKQorQEAgLTM3OSw2 ICs0MjIsNyBAQCBib29sIERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJp bmcgKQorICNlbmRpZgorICAgfQorCisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3 IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lP Tl9NSU5PUiA8IDM3ICkKKyAgIGlmICggIVF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBp c0NhbmNlbGxlZF8gKSAmJgorICAgICAgICBjb2RlY0NvbnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0 aWVzICYgQ09ERUNfQ0FQX0RFTEFZICkKKyAgIHsKK0BAIC0zOTEsNiArNDM1LDE4IEBAIGJvb2wg RGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgICAgcGxh eUZyYW1lKCBmcmFtZSApOworICAgICB9CisgICB9CisrI2Vsc2UKKysgIC8qIGZsdXNoIHRoZSBk ZWNvZGVyICovCisrICBhdl9pbml0X3BhY2tldCggJnBhY2tldCApOworKyAgaW50IHJldCA9IGF2 Y29kZWNfc2VuZF9wYWNrZXQoY29kZWNDb250ZXh0XywgJnBhY2tldCApOworKyAgd2hpbGUoIHJl dCA+PSAwICkKKysgIHsKKysgICAgcmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKGNvZGVjQ29u dGV4dF8sIGZyYW1lKTsKKysgICAgaWYgKCBRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWlyZSgg aXNDYW5jZWxsZWRfICkgfHwgcmV0IDwgMCApCisrICAgICAgYnJlYWs7CisrICAgIHBsYXlGcmFt ZSggZnJhbWUgKTsKKysgIH0KKysjZW5kaWYKKworICNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFK T1IgPCA1NAorICAgYXZfZnJlZSggZnJhbWUgKTsKKzMyCitzcmNwa2dzL2dvbGRlbmRpY3QvcGF0 Y2hlcy9mZm1wZWc1LTIucGF0Y2gKK0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsxLDMy IEBACitGcm9tIDk2NmY0YThiNzhlNjMyNGI5MzBlNWE1MGYyYmI5MzBiZDg3ZTU2NWUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBYnM2MiA8b3R0b21hbm5AeWFuZGV4LnJ1PgorRGF0 ZTogRnJpLCAyNyBTZXAgMjAxOSAxNzowMDo1MiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGRm1w ZWcgcGxheWVyOiBGaXggc29tZSBjcmFzaGVzIG9uIGJyb2tlbiBmaWxlcworCistLS0KKyBmZm1w ZWdhdWRpby5jYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKwor ZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IDU2ZThm Nzg4ZS4uNDE1ZmM3OWNiIDEwMDY0NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBl Z2F1ZGlvLmNjCitAQCAtNTEsNyArNTEsOSBAQCBBdWRpb1NlcnZpY2UgJiBBdWRpb1NlcnZpY2U6 Omluc3RhbmNlKCkKKworIEF1ZGlvU2VydmljZTo6QXVkaW9TZXJ2aWNlKCkKKyB7CisrI2lmIExJ QkFWRk9STUFUX1ZFUlNJT05fTUFKT1IgPCA1OCB8fCAoIExJQkFWRk9STUFUX1ZFUlNJT05fTUFK T1IgPT0gNTggJiYgTElCQVZGT1JNQVRfVkVSU0lPTl9NSU5PUiA8IDkgKQorICAgYXZfcmVnaXN0 ZXJfYWxsKCk7CisrI2VuZGlmCisgICBhb19pbml0aWFsaXplKCk7CisgfQorCitAQCAtNDM4LDYg KzQ0MCw4IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmlu ZyApCisgI2Vsc2UKKyAgIC8qIGZsdXNoIHRoZSBkZWNvZGVyICovCisgICBhdl9pbml0X3BhY2tl dCggJnBhY2tldCApOworKyAgcGFja2V0LmRhdGEgPSBOVUxMOworKyAgcGFja2V0LnNpemUgPSAw OworICAgaW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoY29kZWNDb250ZXh0XywgJnBhY2tl dCApOworICAgd2hpbGUoIHJldCA+PSAwICkKKyAgIHsKKzI1CitzcmNwa2dzL2dvbGRlbmRpY3Qv cGF0Y2hlcy9mZm1wZWc1LTMucGF0Y2gKK0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsx LDI1IEBACitGcm9tIDhhY2IyODhjOWU5YmRiM2M2YmYyZTgwMzk1NGRkM2I2YWMyNzNjMDUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaWFvIEp1bnh1YW4gPG1pa2VsanhAMTI2LmNv bT4KK0RhdGU6IFN1biwgMjAgRmViIDIwMjIgMTI6Mjg6MDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRD SF0gYWRkIHN1cHBvcnQgZm9yIGZmbXBlZyA1LjAKKworLS0tCisgZmZtcGVnYXVkaW8uY2MgfCA0 ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9m Zm1wZWdhdWRpby5jYyBiL2ZmbXBlZ2F1ZGlvLmNjCitpbmRleCBkNTUwZjRhNzcuLjc5NDhkMjE4 NyAxMDA2NDQKKy0tLSBhL2ZmbXBlZ2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYworQEAg LTk0LDcgKzk0LDExIEBAIHN0cnVjdCBEZWNvZGVyQ29udGV4dAorICAgUUJ5dGVBcnJheSBhdWRp b0RhdGFfOworICAgUURhdGFTdHJlYW0gYXVkaW9EYXRhU3RyZWFtXzsKKyAgIEFWRm9ybWF0Q29u dGV4dCAqIGZvcm1hdENvbnRleHRfOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1 OQorICAgQVZDb2RlYyAqIGNvZGVjXzsKKysjZWxzZQorKyAgY29uc3QgQVZDb2RlYyAqIGNvZGVj XzsKKysjZW5kaWYKKyAgIEFWQ29kZWNDb250ZXh0ICogY29kZWNDb250ZXh0XzsKKyAgIEFWSU9D b250ZXh0ICogYXZpb0NvbnRleHRfOworICAgQVZTdHJlYW0gKiBhdWRpb1N0cmVhbV87CmRpZmYg LS1naXQgYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUgYi9zcmNwa2dzL2dvbGRlbmRpY3Qv dGVtcGxhdGUKaW5kZXggNDU0NGFlNzEwZWU2Li4yY2E0MTg1ZTUzOGEgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxh dGUKQEAgLTksNyArOSw3IEBAIG1ha2VkZXBlbmRzPSJ0aWZmLWRldmVsIHF0NS1kZXZlbCBsaWJ2 b3JiaXMtZGV2ZWwgemxpYi1kZXZlbAogIGxpYlh0c3QtZGV2ZWwgaHVuc3BlbGwtZGV2ZWwgcXQ1 LXRvb2xzLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJraXQtZGV2ZWwgbHpv LWRldmVsIGJ6aXAyLWRldmVsIGxpYmFvLWRldmVsIHF0NS1zdmctZGV2ZWwKICBsaWJlYi1kZXZl bCBxdDUteDExZXh0cmFzLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJsem1hLWRldmVsIgotc2hvcnRf ZGVzYz0iQSBmZWF0dXJlLXJpY2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKK3Nob3J0X2Rl c2M9IkZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgogbWFpbnRhaW5lcj0i Sm9obiA8bWVAam9obm55bmF0b3IuZGV2PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBo b21lcGFnZT0iaHR0cDovL2dvbGRlbmRpY3Qub3JnLyIKCkZyb20gNDEwZmY5NDE3YWJkZmU1NjAx NzQ2ZTFjYzk2NDBmNjE0NDMxOTVjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM4LzExNl0gZ3N0LWxpYmF2OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCBl OWE3OWRjNjUwYTUuLmYwODJiZDIxMWM2NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtbGliYXYv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1saWJhdgogdmVy c2lvbj0xLjIwLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgeWFzbSIKIG1ha2VkZXBlbmRzPSJvcmMtZGV2ZWwg Z3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJvbSAzY2EyMjlmOWNiYjFi ODJkMzU1Y2ZlZGQ0MDAwNDJmMzliYzBjOTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzkvMTE2XSBnc3QtcGx1Z2lucy1iYWQxOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgYi9zcmNw a2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKaW5kZXggZjU1ZjgyZmQ0Yzc3Li5kYzlkMzg5 NzM0ZTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdnc3QtcGx1Z2lucy1iYWQxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1i YWQxCi12ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MwordmVyc2lvbj0xLjIyLjIKK3JldmlzaW9u PTIKIGJ1aWxkX2hlbHBlcj0iZ2lyIgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdz PSItRHBhY2thZ2Utb3JpZ2luPWh0dHBzOi8vdm9pZGxpbnV4Lm9yZyAtRGRvYz1kaXNhYmxlZAoK RnJvbSBkYmE0NWFhMDE2YjQxMDZhOWI0YjUzNzExOWE3MzY2OGE1Yjg0ZjNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDAvMTE2XSBnc3Qt cnRzcC1zZXJ2ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtcnRz cC1zZXJ2ZXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1w bGF0ZSBiL3NyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlCmluZGV4IDMzY2Q2NGNlYjk1 ZS4uOGNlZWE4ZDM0YjRiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcg QEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1ydHNwLXNlcnZlcicKIHBrZ25hbWU9Z3N0LXJ0 c3Atc2VydmVyCiB2ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zIgogbWFrZWRl cGVuZHM9ImdsaWItZGV2ZWwgZ3N0LXBsdWdpbnMtYmFkMS1kZXZlbCBnb2JqZWN0LWludHJvc3Bl Y3Rpb24KCkZyb20gZWQ5ZWU1NzdkMGUxMjNjODQ2ZjEyNzdiMDQ4ZmNjM2FlNTU4OGUzYyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQxLzEx Nl0gZ3V2Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4KCi0tLQogc3JjcGtncy9ndXZjdmlldy9wYXRj aGVzL2ZpeC1pbmNsdWRlLnBhdGNoIHwgMTAgKysrKysrKysrKwogc3JjcGtncy9ndXZjdmlldy90 ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDUgKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTIg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2d1dmN2aWV3L3Bh dGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi41MDNjMmFmM2I3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2d1dmN2aWV3 L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIGEvZ3V2Y3Zp ZXcvZ3V2Y3ZpZXcuYworKysrIGIvZ3V2Y3ZpZXcvZ3V2Y3ZpZXcuYworQEAgLTI4LDYgKzI4LDcg QEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Cisg I2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorICNpbmNsdWRlICJn dmlldy5oIgorICNpbmNsdWRlICJndmlld3Y0bDJjb3JlLmgiCmRpZmYgLS1naXQgYS9zcmNwa2dz L2d1dmN2aWV3L3RlbXBsYXRlIGIvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQppbmRleCAzNDVj ZjYwMDZmMjQuLjg2YTdmZDYxOTYxMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ndXZjdmlldy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCkBAIC0xLDggKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZ3V2Y3ZpZXcnCiBwa2duYW1lPWd1dmN2aWV3Ci12ZXJzaW9uPTIu MC43Cit2ZXJzaW9uPTIuMC44CiByZXZpc2lvbj0xCi1jcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1zdGF0aWMgLS1k aXNhYmxlLWRlYmlhbi1tZW51IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29s IGF1dG9jb25mIGF1dG9tYWtlIGxpYnRvb2wgZ2xpYi1kZXZlbCIKQEAgLTE0LDcgKzEzLDcgQEAg bWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQ TC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cDovL2d1dmN2aWV3LnNvdXJjZWZvcmdlLm5l dC8iCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0vJHtwa2duYW1lfS8ke3BrZ25hbWV9 LXNyYy0ke3ZlcnNpb259LnRhci5iejIiCi1jaGVja3N1bT1mNDdkNTFmYmQwNmU0NGVlYWExYTgy ZjRhMTUzYzkyNzUyN2M5MGQ5NDUxNDE5N2E3MGIyOTU2MDI4Y2M4YWQ0CitjaGVja3N1bT1hMjFm NGU0NDgyODY2NjZjZjI3YmFmZWY1MjkwY2M5NTNhMGExNzk2Yjc1MmU1YmJlNTIxMjY2ZGMxMjMw YzgxCiAKIHBvc3RfcGF0Y2goKSB7CiAJc2VkICczMWEjaW5jbHVkZSA8bG9jYWxlLmg+JyAtaSAg Z3V2Y3ZpZXcvZ3V2Y3ZpZXcuYwoKRnJvbSAzNzYzZWUzNzE2NzBlMWEyYzVjZjExMWNiYWM1OThl Mjc2ZjZiZjQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNDIvMTE2XSBoYW5kYnJha2U6IHVwZGF0ZSB0byAxLjYuMQoKLS0tCiAuLi4vcGF0 Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaCAgICB8IDExICsrKysrKy0tLS0t CiAuLi4vaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWluY2x1ZGUucGF0Y2ggICB8IDE1ICsr KysrKysrKysrKysrKwogc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUgICAgICAgICAgICAgICAg ICAgICAgfCAxNyArKysrKysrKysrLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRp b25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2hhbmRi cmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaCBiL3Ny Y3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gK aW5kZXggMjZkYjAzODY3YTBjLi5kNmJiMmVkYTYyN2EgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGFu ZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gKKysrIGIvc3Jj cGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaApA QCAtMSwxNCArMSwxNSBAQAogLS0tIGEvZ3RrL2NvbmZpZ3VyZS5hYwogKysrIGIvZ3RrL2NvbmZp Z3VyZS5hYwogQEAgLTIwMyw3ICsyMDMsNyBAQAotIAorCiAgQU1fQ09ORElUSU9OQUwoW01JTkdX XSwgW3Rlc3QgIngkbWluZ3dfZmxhZyIgPSAieHllcyJdKQotIAotLUhCX0xJQlM9IiRIQl9MSUJT IC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxk YXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1l IC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9y YWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5 cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6 aW1nIgotK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRl ciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2 ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dz Y2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxh c3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVl eCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sZGwiCisKKy1IQl9MSUJTPSIkSEJfTElCUyAt bGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2 MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAt bHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFk ZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBl IC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semlt ZyAtbFN2dEF2MUVuYyIKKytIQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0 IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9z dHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAt bG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1s Ymx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxv cHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2dEF2MUVuYyAtbGRsIgog IEhCX0NQUEZMQUdTPSIkSEJfQ1BQRkxBR1MgJEhCSU5DIgotIAorCiAgUEtHX0NIRUNLX01PRFVM RVMoW3gyNjRdLCBbeDI2NF0sIHN5c194MjY0PXllcywgc3lzX3gyNjQ9bm8pCisKIC0tLSBhL3Rl c3QvbW9kdWxlLmRlZnMKICsrKyBiL3Rlc3QvbW9kdWxlLmRlZnMKIEBAIC02OSw2ICs2OSw5IEBA CmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRl LnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5OGY5ZjRhYjI4Zgot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvbGliaGItdnBsLWlu Y2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorLS0tIGEvbGliaGIvbW9kdWxlLmRlZnMJMjAy My0wMS0yMiAxMTozNjo0OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmhiL21vZHVsZS5kZWZz CTIwMjMtMDQtMDMgMjI6Mzc6NTIuMzk1NDY3MDEwIC0wNDAwCitAQCAtNDYsMTEgKzQ2LDcgQEAK KyBMSUJIQi5HQ0MuSSArPSAkKExJQkhCLmJ1aWxkLykgJChDT05UUklCLmJ1aWxkLylpbmNsdWRl CisgCisgaWZlcSAoMSwkKEZFQVRVUkUucXN2KSkKKy0gICAgaWZlcSAoJChIT1NULnN5c3RlbSks ZnJlZWJzZCkpCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAkKExPQ0FMQkFTRSkvaW5jbHVkZS92 cGwKKy0gICAgZWxzZQorLSAgICAgICAgTElCSEIuR0NDLkkgKz0gJChDT05UUklCLmJ1aWxkLylp bmNsdWRlL3ZwbAorLSAgICBlbmRpZgorKyAgICBMSUJIQi5HQ0MuSSArPSAvdXNyL2luY2x1ZGUv dnBsCisgZW5kaWYKKyAKKyBpZm5lcSAoLCQoZmlsdGVyICQoSE9TVC5zeXN0ZW0pLGZyZWVic2Qg bmV0YnNkIG9wZW5ic2QpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUg Yi9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZQppbmRleCBjYTVlNDU3MWU0OWMuLmMzMmNiMWJm YTMxZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9oYW5kYnJha2UvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9oYW5kYnJha2UvdGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2hhbmRicmFrZScKIHBrZ25hbWU9aGFuZGJyYWtlCi12ZXJzaW9uPTEuNS4xCit2ZXJzaW9u PTEuNi4xCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVf YXJncz0iLS1mb3JjZSAtLWRpc2FibGUtZ3RrLXVwZGF0ZS1jaGVja3MgLS1kaXNhYmxlLWRmLWZl dGNoIC0taGFyZGVuCi0gJCh2b3B0X2VuYWJsZSBmZGtfYWFjIGZkay1hYWMpICQodm9wdF9lbmFi bGUgbnZlbmMpIgorICQodm9wdF9lbmFibGUgZmRrX2FhYyBmZGstYWFjKSAkKHZvcHRfZW5hYmxl IG52ZW5jKSAkKHZvcHRfZW5hYmxlIHFzdikiCiBtYWtlX2J1aWxkX2FyZ3M9Ii1DICR7WEJQU19U UklQTEVUfSIKIG1ha2VfaW5zdGFsbF9hcmdzPSItQyAke1hCUFNfVFJJUExFVH0iCiBob3N0bWFr ZWRlcGVuZHM9ImF1dG9tYWtlIGNtYWtlIGdldHRleHQtZGV2ZWwgZ2xpYi1kZXZlbCBpbnRsdG9v bCBsaWJ0b29sIG00IG1lc29uIG5hc20gcGtnLWNvbmZpZyBweXRob24zIgpAQCAtMTIsOCArMTIs MTEgQEAgbWFrZWRlcGVuZHM9ImJ6aXAyLWRldmVsIGZmbXBlZy1kZXZlbCBnc3QtcGx1Z2lucy1i YXNlMS1kZXZlbCBndGsrMy1kZXZlbAogIGphbnNzb24tZGV2ZWwgbGFtZS1kZXZlbCBsaWJhc3Mt ZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxpYmRhdjFkLWRldmVsCiAgbGliZHZkbmF2LWRldmVsIGxp YmR2ZHJlYWQtZGV2ZWwgbGliZ3VkZXYtZGV2ZWwgbGlibnVtYS1kZXZlbAogIGxpYnNhbXBsZXJh dGUtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJ2cHgtZGV2ZWwgbGli eG1sMi1kZXZlbAotIG9wdXMtZGV2ZWwgc3BlZXgtZGV2ZWwgeDI2NC1kZXZlbCB4MjY1LWRldmVs IHppbWctZGV2ZWwKKyBvcHVzLWRldmVsIHNwZWV4LWRldmVsIHgyNjQtZGV2ZWwgeDI2NS1kZXZl bCB6aW1nLWRldmVsIGxpYnN2dC1hdjEtZGV2ZWwKICAkKHZvcHRfaWYgZmRrX2FhYyBmZGstYWFj LWRldmVsKQorICQodm9wdF9pZiBxc3YgbGlidmEtZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBsaWJk cm0tZGV2ZWwpCisgJCh2b3B0X2lmIHFzdiBvbmV2cGwtZGV2ZWwpCiAgJCh2b3B0X2lmIG52ZW5j IG52LWNvZGVjLWhlYWRlcnMpIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGdzdC1wbHVn aW5zLWdvb2QxIGhpY29sb3ItaWNvbi10aGVtZSIKIHNob3J0X2Rlc2M9Ik11bHRpdGhyZWFkZWQg dmlkZW8gdHJhbnNjb2RlciIKQEAgLTIxLDE1ICsyNCwxNSBAQCBtYWludGFpbmVyPSJFbm5vIEJv bGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vbmx5IgogaG9t ZXBhZ2U9Imh0dHBzOi8vaGFuZGJyYWtlLmZyLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIu Y29tL0hhbmRCcmFrZS9IYW5kQnJha2UvcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS9IYW5k QnJha2UtJHt2ZXJzaW9ufS1zb3VyY2UudGFyLmJ6MiIKLWNoZWNrc3VtPTM5OTlmZTA2ZDUzMDlj ODE5Nzk5YTczYTk2OGE4ZWMzODQwZTc4NDBjMmI2NGFmOGY1Y2RiN2ZkOGM5NDMwZjAKK2NoZWNr c3VtPTk0Y2NmZTAzZGI5MTdhOTE2NTAwMDBjNTEwZjdmZDUzZjg0NGRhMTlmMTlhZDRiNGJlMWI4 ZjZiYzMxYThkNGMKIG5vY3Jvc3M9eWVzCiAKLWJ1aWxkX29wdGlvbnM9ImZka19hYWMgbnZlbmMi CitidWlsZF9vcHRpb25zPSJmZGtfYWFjIG52ZW5jIHFzdiIKIAogY2FzZSAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiIGluCiAJeDg2XzY0KnxpNjg2KikKIAkJQ0ZMQUdTPSItbXNzZSIKLQkJYnVpbGRf b3B0aW9uc19kZWZhdWx0PSJudmVuYyIKKwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJudmVuYyBx c3YiCiAJCTs7CiBlc2FjCiAKQEAgLTM3LDcgKzQwLDcgQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkj IHVzZSBzeXN0ZW0gbGlicmFyaWVzLCBkb24ndCBkb3dubG9hZCB0aGVtCiAJcm0gLXJmIGNvbnRy aWIvCiAJZm9yIG1vZHVsZSBpbiBmZGstYWFjIGZmbXBlZyBsaWJibHVyYXkgbGliZGF2MWQgbGli ZHZkbmF2IGxpYmR2ZHJlYWQgbnZlbmMgXAotCQl4MjY1IHppbWc7IGRvCisJCXgyNjUgemltZyBz dnQtYXYxIGxpYnZwbDsgZG8KIAkgICAgdnNlZCAtaSAiL01PRFVMRVMgKz0gY29udHJpYlwvJHtt b2R1bGV9L2QiIG1ha2UvaW5jbHVkZS9tYWluLmRlZnMKIAlkb25lCiB9CgpGcm9tIGE3MDM3M2Yz NjZjZmFlZmI0NzNmZjkyYTJlMDIwYjE0ZWRjYjBjNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0My8xMTZdIGhlZGdld2FyczogcmV2YnVt cCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGVkZ2V3YXJz L3RlbXBsYXRlCmluZGV4IDQxOWYyOWI5OGI0NC4uOTI2ZmU0ZmUzZTY4IDEwMDY0NAotLS0gYS9z cmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0 ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaGVkZ2V3YXJzJwogcGtn bmFtZT1oZWRnZXdhcnMKIHZlcnNpb249MS4wLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLUROT1NFUlZFUj0xIC1EREFUQV9JTlNU QUxMX0RJUj0vdXNyL3NoYXJlLyR7cGtnbmFtZX0KICAtRFBIWVNGU19TWVNURU09MSAtRE1JTklN QUxfRkxBR1M9MSIKIG1ha2VfY21kPW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0ibHVhNTEgcGtnLWNv bmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVs IGx1YTUxLWRldmVsIHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgU0RMMl9pbWFnZS1kZXZl bAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0 NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCiAgU0RMMl9taXhlci1kZXZlbCBTREwyX25l dC1kZXZlbCBTREwyX3R0Zi1kZXZlbCIKIGRlcGVuZHM9ImxpYmZyZWVnbHV0Igogc2hvcnRfZGVz Yz0iRnVubnkgdHVybi1iYXNlZCBhcnRpbGxlcnkgZ2FtZSwgZmVhdHVyaW5nIGZpZ2h0aW5nIEhl ZGdlaG9ncyEiCgpGcm9tIDQyMTg5NDQwZWUyYWU5NDY1NzU3NDUwMTNiMDBhNjZkZDIwYzUzZjkg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0 NC8xMTZdIGlkamM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9pZGpj L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv aWRqYy90ZW1wbGF0ZQppbmRleCBkZjYwMzE4YjNkYjkuLjM2YTc1YmFmNTk3YyAxMDA2NDQKLS0t IGEvc3JjcGtncy9pZGpjL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQpAQCAt MSwxMSArMSwxMSBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaWRqYycKIHBrZ25hbWU9aWRqYwog dmVyc2lvbj0wLjkuMQotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdpdCBweXRob24zIGF1dG9tYWtl IGdldHRleHQtZGV2ZWwgbGlidG9vbCIKIG1ha2VkZXBlbmRzPSJsaWJ2b3JiaXMtZGV2ZWwgbGli b2dnLWRldmVsIGphY2stZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbAotIGxpYmZsYWMtZGV2ZWwg bGlic25kZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVnLWRldmVsIHNwZWV4LWRldmVsCisg bGliZmxhYy1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1wZWc0LWRldmVs IHNwZWV4LWRldmVsCiAgZ2xpYi1kZXZlbCBwaXhtYW4tZGV2ZWwgbGFtZS1kZXZlbCBweXRob24z LWdvYmplY3QtZGV2ZWwgbGlic2hvdXQtaWRqYy1kZXZlbAogIG9wdXMtZGV2ZWwgdHdvbGFtZS1k ZXZlbCBweXRob24zLW11dGFnZW4gcHl0aG9uMy1kZXZlbCIKIGRlcGVuZHM9InB5dGhvbjMtZ29i amVjdCBweXRob24zLW11dGFnZW4gZGVza3RvcC1maWxlLXV0aWxzIHNoYXJlZC1taW1lLWluZm8g cHl0aG9uMy1kYnVzIGphY2siCgpGcm9tIDdiMDlkOWUzMDI0MTAwYWZkMGE2MGEzNWI4MTk0ZWRl MjNmYjY1MWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDog W1BBVENIIDA0NS8xMTZdIGtmaWxlbWV0YWRhdGE1OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tm aWxlbWV0YWRhdGE1L3RlbXBsYXRlIGIvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQpp bmRleCA0YjkxY2YxOWYyOTguLmEzNjcxYTM4Y2U1OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9rZmls ZW1ldGFkYXRhNS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2ZpbGVtZXRhZGF0YTUnCiBw a2duYW1lPWtmaWxlbWV0YWRhdGE1CiB2ZXJzaW9uPTUuMTA3LjAKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9Imtjb3JlYWRkb25zIGV4 dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UKICBn ZXR0ZXh0IGtjb3JlYWRkb25zIHB5dGhvbjMiCgpGcm9tIGM2ZTk1MDViZmY5M2FhNWI1NmY0YzI3 YzY2OGFhMTFjNTU4MDMyMGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAK U3ViamVjdDogW1BBVENIIDA0Ni8xMTZdIGtpZDM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDE3ICsrKysrKysrKysrKysr KysrCiBzcmNwa2dzL2tpZDMvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMg Y2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9raWQzL3BhdGNoZXMvZmZt cGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjEzNWZj NTBlMDdjOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorIyBodHRwczovL2F1ci5hcmNobGludXgub3JnL2NnaXQv YXVyLmdpdC9kaWZmL2ZmbXBlZzUucGF0Y2g/aD1raWQzLWNsaSZpZD0xMjQxMGE3NDkwNjYxMmU3 ZWZjMGVjOGZiY2U3MzliNGEwZmVmN2U3CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvYWNvdXN0 aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcCBiL3NyYy9wbHVnaW5zL2Fjb3Vz dGlkaW1wb3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKK2luZGV4IGUxNTZkNDI0Li5l MTJiOWFiZCAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2Zp bmdlcnByaW50ZGVjb2Rlci5jcHAKKysrKyBiL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2Zm bXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKK0BAIC0yMzIsNyArMjMyLDExIEBAIHByaXZhdGU6 CisgICBmcmllbmQgY2xhc3MgRm9ybWF0OworICAgZnJpZW5kIGNsYXNzIENvbnZlcnRlcjsKKyAg IEFWQ29kZWNDb250ZXh0KiBtX3B0cjsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX0lOVCA8IEFW X1ZFUlNJT05fSU5UKDU5LCAwLCAwKQorICAgQVZDb2RlYyogbV9pbXBsOworKyNlbHNlCisrICBj b25zdCBBVkNvZGVjKiBtX2ltcGw7CisrI2VuZGlmCisgICBBVkZyYW1lKiBtX2ZyYW1lOworICAg Ym9vbCBtX29wZW5lZDsKKyB9OwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9raWQzL3RlbXBsYXRlIGIv c3JjcGtncy9raWQzL3RlbXBsYXRlCmluZGV4IDQ1NjIwNmQ5MGUxNi4uZjMyZjlkZWNiMGU3IDEw MDY0NAotLS0gYS9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9raWQzL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2lkMycKIHBrZ25hbWU9 a2lkMwogdmVyc2lvbj0zLjkuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQVBQUz0nQ0xJOyQodm9wdF9pZiBLREUgS0RF IFF0KScKICAtRFdJVEhfRE9DQk9PS0RJUj0vdXNyL3NoYXJlL3hzbC9kb2Nib29rIC1EV0lUSF9G TEFDPSQodm9wdF9pZiBmbGFjIE9OIE9GRikKCkZyb20gNGJhYWJhYjY0MDUyNTVjZGI1MDEzZjM0 ZDBhYTU0YWExOTI5ZTg0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDQ3LzExNl0ga29kaTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL2tvZGkvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rb2RpL3Rl bXBsYXRlIGIvc3JjcGtncy9rb2RpL3RlbXBsYXRlCmluZGV4IDgwNTc5NjRkNzhhMy4uNmNjMTg3 NGJlN2JhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9r b2RpL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna29kaScK IHBrZ25hbWU9a29kaQogdmVyc2lvbj0xOS40Ci1yZXZpc2lvbj02CityZXZpc2lvbj03CiBfY29k ZW5hbWU9Ik1hdHJpeCIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRI X0ZGTVBFRz0vdXNyIC1ERU5BQkxFX0xER09MRD1PRkYKQEAgLTU0LDcgKzU0LDcgQEAgbWFrZWRl cGVuZHM9IgogIGxpYm1hZC1kZXZlbCBmb250Y29uZmlnLWRldmVsIGxpYlhpbmVyYW1hLWRldmVs IGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGlibW1zLWRldmVsCiAgZW5jYS1kZXZlbCBib29zdC1kZXZl bCBsaWJjdXJsLWRldmVsIGxpYnZhLWRldmVsIGxpYnZkcGF1LWRldmVsIGxpYmFzcy1kZXZlbAog IGxpYmJsdWV0b290aC1kZXZlbCB5YWpsLWRldmVsIGxpYnBsaXN0LWRldmVsIGxpYnJ0bXAtZGV2 ZWwgdGlueXhtbC1kZXZlbAotIHRhZ2xpYi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBs aWJibHVyYXktZGV2ZWwgbGlibmZzLWRldmVsIGZmbXBlZy1kZXZlbAorIHRhZ2xpYi1kZXZlbCBs aWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGlibmZzLWRldmVsIGZmbXBl ZzQtZGV2ZWwKICBnaWZsaWItZGV2ZWwgbGlieHNsdC1kZXZlbCBnbnV0bHMtZGV2ZWwgbGlic3No LWRldmVsIGxpYm1pY3JvaHR0cGQtZGV2ZWwKICBsaWJjZWMtZGV2ZWwgZGNhZGVjLWRldmVsIGZs YXRidWZmZXJzLWRldmVsIGZtdC1kZXZlbCBsY21zMi1kZXZlbAogIGxpYmZzdHJjbXAtZGV2ZWwg cmFwaWRqc29uIGxpYmNkaW8tcGFyYW5vaWEgc3BkbG9nIGxpYndheWxhbmRwcC1kZXZlbAoKRnJv bSBhNDkzMmFlNTY0NGYwMmUwZWVjYWJiNTRkYzViMWY3NGU5ZmYxZGIxIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDgvMTE2XSBrcGlwZXdp cmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva3BpcGV3 aXJlL3RlbXBsYXRlCmluZGV4IDA1YWQwMjU5NDRkYS4uN2FhMTIwZTZiYTk0IDEwMDY0NAotLS0g YS9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2twaXBld2lyZS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2twaXBld2lyZScKIHBr Z25hbWU9a3BpcGV3aXJlCiB2ZXJzaW9uPTUuMjcuNQotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21ha2UtbW9kdWxlcyBw bGFzbWEtd2F5bGFuZC1wcm90b2NvbHMgZ2V0dGV4dAogIHF0NS1xbWFrZSBxdDUtaG9zdC10b29s cyBwa2ctY29uZmlnIHdheWxhbmQtZGV2ZWwga2NvcmVhZGRvbnMKCkZyb20gNDQxNjU2NWEyYjQ4 NzYxNjE1MmU5ZTZmYzhiYzc4YzIwY2M2Y2E3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ5LzExNl0gbGliZXh0cmFjdG9yOiByZXZidW1w IGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYmV4dHJh Y3Rvci90ZW1wbGF0ZQppbmRleCBkZGQ0NzkwZjkzZTguLjFmYjljYTU2YTk2YSAxMDA2NDQKLS0t IGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJleHRyYWN0 b3IvdGVtcGxhdGUKQEAgLTcsNyArNyw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtc3Rh dGljIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9InpsaWItZGV2 ZWwgYnppcDItZGV2ZWwgZXhpdjItZGV2ZWwgdGlmZi1kZXZlbCBsaWJwbmctZGV2ZWwKICBsaWJq cGVnLXR1cmJvLWRldmVsIGxpYnZvcmJpcy1kZXZlbCBsaWJmbGFjLWRldmVsIGdpZmxpYi1kZXZl bCBsaWJtcGVnMi1kZXZlbAotIGZmbXBlZy1kZXZlbCBndGsrMy1kZXZlbCBsaWJsdGRsLWRldmVs IGxpYmFyY2hpdmUtZGV2ZWwgZmlsZS1kZXZlbCBsaWJnc2YtZGV2ZWwiCisgZmZtcGVnNC1kZXZl bCBndGsrMy1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwgZmlsZS1kZXZlbCBs aWJnc2YtZGV2ZWwiCiBzaG9ydF9kZXNjPSJMaWJyYXJ5IHVzZWQgdG8gZXh0cmFjdCBtZXRhIGRh dGEgZnJvbSBmaWxlcyIKIG1haW50YWluZXI9Ik1hcnRpbiBSaWVzZSA8Z3JhdWVoYWFyZUBnbXgu ZGU+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gYTZmNTc1NDhkMmY5ODIxODI2 MjBiODMxNzRmMDM3MWE3MzhhZWY1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDUwLzExNl0gbGlib3BlbmFsOiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9saWJvcGVuYWwvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZQppbmRleCA3 NzIxOGY5ZTUzOWQuLjNmNDllZDc1YTFmZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuYWwv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsaWJvcGVuYWwnCiBwa2duYW1lPWxpYm9wZW5hbAogdmVy c2lvbj0xLjIyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURBTFNPRlRfRVhBTVBMRVM9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgoKRnJvbSA2ZDkwOWY0YjcxMGY3ZDNkMThiMmUzNGU3MzMzNTJmMzNiZmUxYmJk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw NTEvMTE2XSBsaWJvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2xpYm9wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1w bGF0ZSBiL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUKaW5kZXggZGI4MzFmNjliNDc0Li44 MWFhMGQ3MTM2ZDkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2xpYm9wZW5zaG90JwogcGtnbmFtZT1saWJvcGVuc2hvdAogdmVyc2lvbj0w LjMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKICMgQnVpbGRz IGZhaWwgd2l0aCBSdWJ5LTIuNC4xCiBjb25maWd1cmVfYXJncz0iLURFTkFCTEVfUlVCWT1PRkYg LURVU0VfU1lTVEVNX0pTT05DUFA9T04iCgpGcm9tIDMxMjgwZTJhOGY5OGFiMDFhNjNlNzJhNGI5 ZjYyYmMwNDAzNzMyNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3Vi amVjdDogW1BBVENIIDA1Mi8xMTZdIGxvdWRnYWluOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwgMTEgKysrKysrKysr KysKIHNyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIgZmls ZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2xvdWRn YWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjE2ZDQ1MTBlZTk4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbG91ZGdh aW4vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL3NyYy9zY2Fu LmMJMjAxOS0wOS0wNiAxMTozMToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9zY2FuLmMJ MjAyMy0wMy0yMyAxMToxNTo0MC44Njc5Njg1MjEgLTA0MDAKK0BAIC02OSw4ICs2OSw2IEBACisg CSAqIEl0IGlzIG5vdyB1c2VsZXNzCisgCSAqIGh0dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcvRkZt cGVnL2Jsb2IvNzBkMjUyNjhjMjFjYmVlNWYwODMwNGRhOTViZTFmNjQ3YzYzMGMxNS9kb2MvQVBJ Y2hhbmdlcyNMODYKKyAJICovCistICBpZiAoYXZmb3JtYXRfdmVyc2lvbigpIDwgQVZfVkVSU0lP Tl9JTlQoNTgsOSwxMDApKQorLSAgICBhdl9yZWdpc3Rlcl9hbGwoKTsKKyAKKyAJYXZfbG9nX3Nl dF9jYWxsYmFjayhzY2FuX2F2X2xvZyk7CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xvdWRnYWlu L3RlbXBsYXRlIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQppbmRleCBkYTRmMmQ1NmU5NGMu LjRkNmJmMjllZmI0ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbG91ZGdhaW4nCiBwa2duYW1lPWxvdWRnYWluCiB2ZXJzaW9uPTAuNi44Ci1yZXZp c2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImxpYmVidXIxMjgtZGV2ZWwgdGFnbGliLWRldmVsIGZm bXBlZy1kZXZlbCIKCkZyb20gNzdiYTgzMmZmYmMyMzcwNTBlYmM2ZTJjZGY1Mjk1NzdlNGU5MDkx ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDUzLzExNl0gbWVkaWFzdHJlYW1lcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBz cmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZWRp YXN0cmVhbWVyL3RlbXBsYXRlIGIvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlCmluZGV4 IGQwZTk3ZTg1OGUyOS4uMWJkZTAzMTQ0M2E1IDEwMDY0NAotLS0gYS9zcmNwa2dzL21lZGlhc3Ry ZWFtZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlCkBAIC0x LDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZWRpYXN0cmVhbWVyJwogcGtnbmFt ZT1tZWRpYXN0cmVhbWVyCiB2ZXJzaW9uPTUuMi42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX1NUUklDVD0wIC1ERU5B QkxFX1VOSVRfVEVTVFM9MCIKIGhvc3RtYWtlZGVwZW5kcz0icHl0aG9uMyIKLW1ha2VkZXBlbmRz PSJienJ0cC1kZXZlbCBmZm1wZWctZGV2ZWwgZ2xldy1kZXZlbCBsaWJYdi1kZXZlbCBsaWJzcnRw LWRldmVsCittYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwgZmZtcGVnNC1kZXZlbCBnbGV3LWRldmVs IGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKICBsaWJ1cG5wLWRldmVsIGxpYnZweC1kZXZlbCBt YmVkdGxzLWRldmVsIG9wdXMtZGV2ZWwgb3J0cC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgbGli dGhlb3JhLWRldmVsIHNwZWV4LWRldmVsIHY0bC11dGlscy1kZXZlbCBiY2c3MjktZGV2ZWwgYmNt YXRyb3NrYTItZGV2ZWwgbGliZ3NtLWRldmVsIgogIyB6eGluZy1jcHAtZGV2ZWwgKDEuMi4wIHBy b2JhYmx5IG5vdCBjb21wYXRpYmxlLCBjaGVjayBhZ2FpbiBhZnRlciB1cGRhaW5nIHh6aW5nKQoK RnJvbSBiYTE2NTY5MDIxZTYzMWMxMjYwOGRlMzg1OTI1MGQ5ZTIxOGFiM2NkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTQvMTE2XSBtZ2Jh OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWdiYS90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQppbmRl eCBhZTA1MDQzMTFlZWUuLmQzMTI5NWEwY2QzZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9tZ2JhL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ21nYmEnCiBwa2duYW1lPW1nYmEKIHZlcnNpb249MC4xMC4yCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0NS1xbWFrZSBkZXNrdG9wLWZpbGUtdXRpbHMiCiBt YWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBmZm1wZWctZGV2ZWwgbGliZWRpdC1kZXZlbCBsaWJlcG94 eS1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKCkZyb20gYjhiYzUwMzQyYzM5YWFkMmVjNjgyYTcyYzMw MzZkNTk4ZGFkMzQ5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDU1LzExNl0gbWluaWRsbmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWluaWRsbmEv dGVtcGxhdGUgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCmluZGV4IGU4MDgxYjFjYmM2Ny4u OWVlOTcxNDg2MWZkIDEwMDY0NAotLS0gYS9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdtaW5pZGxuYScKIHBrZ25hbWU9bWluaWRsbmEKIHZlcnNpb249MS4zLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9h cmdzPSIKICAtLXNiaW5kaXI9L3Vzci9iaW4KCkZyb20gY2E5ZGRhNzE5ZWM0YzcwOWQ5MWIxYzM5 ZmVkMzE3NDdkNmY3YTNkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDU2LzExNl0gbWl4eHg6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9taXh4eC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWl4eHgvdGVtcGxh dGUgYi9zcmNwa2dzL21peHh4L3RlbXBsYXRlCmluZGV4IDYxOWRkY2EwZDMzMi4uNGI5ZWEwMGQz ZmIzIDEwMDY0NAotLS0gYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWl4 eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtaXh4eCcK IHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4zLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVh c2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBwcm90 b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtZGV2ZWwiCgpGcm9tIGQzNjg5NDQ4ZWU3YzdiMmNiOGQz ZTM3YjdhOTQzYThiNTY2NmUxNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA1Ny8xMTZdIG1sdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQu MwoKLS0tCiBzcmNwa2dzL21sdC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCmluZGV4IDg5MzNlYjRlN2JiOS4uNzMzNTNm ZWRhZmI1IDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21s dC90ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWx0Jwog cGtnbmFtZT1tbHQKIHZlcnNpb249Ni4yNi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tbGliZGly PS91c3IvbGliJFhCUFNfVEFSR0VUX1dPUkRTSVpFCiAgLS1lbmFibGUtZ3BsIC0tZW5hYmxlLWdw bDMgLS1kaXNhYmxlLXN3ZmRlYyAtLXdpdGhvdXQta2RlCiAgLS1zd2lnLWxhbmd1YWdlcz1weXRo b24iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcg cHl0aG9uMyB3aGljaCIKICMgWFhYOiBtb3ZpdCB2aWQuc3RhYgotbWFrZWRlcGVuZHM9ImFsc2Et bGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3BhLXNkawor bWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ3RrKy1kZXZlbCBqYWNr LWRldmVsIGxhZHNwYS1zZGsKICBsaWJleGlmLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGli eG1sMi1kZXZlbCBzb3gtZGV2ZWwgU0RMX2ltYWdlLWRldmVsCiAgZmZ0dy1kZXZlbCBmcmVpMHIt cGx1Z2lucyBweXRob24zLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgbW92aXQtZGV2ZWwKICBsaWJ2 aWRzdGFiLWRldmVsIGxpYmF0b21pYy1kZXZlbCIKCkZyb20gMjk4NjFiYzM1NzI1MjY3OTNjNGFm MDYyNjMxMTNkMDhhMzZkZDYyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDU4LzExNl0gbW9jOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3MvbW9jL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbW9jL3Rl bXBsYXRlIGIvc3JjcGtncy9tb2MvdGVtcGxhdGUKaW5kZXggYzQyYmU2NTBhMWQyLi5kNGYwZWVm YmFkNTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW9jL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbW9j L3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtb2MnCiBw a2duYW1lPW1vYwogdmVyc2lvbj0yLjUuMgotcmV2aXNpb249NgorcmV2aXNpb249NwogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRl cGVuZHM9ImRiLWRldmVsIG5jdXJzZXMtZGV2ZWwgbGliY3VybC1kZXZlbCBwb3B0LWRldmVsIGZm bXBlZy1kZXZlbAorbWFrZWRlcGVuZHM9ImRiLWRldmVsIG5jdXJzZXMtZGV2ZWwgbGliY3VybC1k ZXZlbCBwb3B0LWRldmVsIGZmbXBlZzQtZGV2ZWwKICBqYWNrLWRldmVsIGFsc2EtbGliLWRldmVs IGxpYmx0ZGwtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwKICBsaWJtYWQtZGV2 ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGliaWQzdGFnLWRldmVsIGZhYWQy LWRldmVsCiAgdGFnbGliLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgd2F2cGFjay1kZXZlbCBzcGVl eC1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCgpGcm9tIDk1MDIwMGI1YzFmZWIzMWRjNTQ3YzU3 NjVmYzMzYjg1MjA4ODk0ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAK U3ViamVjdDogW1BBVENIIDA1OS8xMTZdIG1vdGlvbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbW90aW9uL3Rl bXBsYXRlIGIvc3JjcGtncy9tb3Rpb24vdGVtcGxhdGUKaW5kZXggM2NmM2MzMDM1YzViLi43ZGNh MTJkODUxZTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvbW90aW9uL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn bW90aW9uJwogcGtnbmFtZT1tb3Rpb24KIHZlcnNpb249NC41LjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21h a2UgcGtnLWNvbmZpZyBnZXR0ZXh0LWRldmVsIHRhciIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2 ZWwgbGlibWljcm9odHRwZC1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwgZ2V0dGV4dC1kZXZlbCIKCkZy b20gNmFkYzA4Y2Y5MjFjZjFlNTU2MmU5MWUxNWUxNjgwYTkwYzMzY2EzYiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYwLzExNl0gbXB2OiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbXB2L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9tcHYvdGVtcGxhdGUgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQppbmRleCBlMTYz YzQ5NmM2ZWIuLmQ0ZmVmYmY1ZTNjNyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tcHYvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9tcHYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdtcHYnCiBwa2duYW1lPW1wdgogdmVyc2lvbj0wLjM1LjEKLXJldmlzaW9uPTIKK3Jl dmlzaW9uPTMKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURjZGRhPWVuYWJs ZWQgLURkdmJpbj1lbmFibGVkIC1EZHZkbmF2PWVuYWJsZWQKICAtRGxpYm1wdj10cnVlIC1EY3Bs dWdpbnM9ZW5hYmxlZAoKRnJvbSAxODMwOTc5MDRlNzM4NDNiNjgxZThjMTMxZTVjN2YzZWZjOTUw MTIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNjEvMTE2XSBtdXNpa2N1YmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy9tdXNpa2N1YmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlCmluZGV4IDdjNTY5MzAzYzA1NC4uYTRkZWE0 NjBjMzcxIDEwMDY0NAotLS0gYS9zcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL211c2lrY3ViZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ211c2lrY3ViZScKIHBrZ25hbWU9bXVzaWtjdWJlCiB2ZXJzaW9uPTMuMC4wCi1yZXZpc2lv bj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQogY29uZmln dXJlX2FyZ3M9Ii1ETk9fTkNVUlNFU1c9MSIKCkZyb20gZDJmMGRjZGM2ZGIxNzJlYjczZGFiM2Uz NDQ5YzAyZTExZDdiMThiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDYyLzExNl0gbm90Y3Vyc2VzOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ub3Rj dXJzZXMvdGVtcGxhdGUgYi9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQppbmRleCA2ZGQ4YTA5 MTMxOWYuLjMxMTBjMzBjOWFmZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdub3RjdXJzZXMnCiBwa2duYW1lPW5vdGN1cnNlcwogdmVyc2lvbj0z LjAuOQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSItRFVTRV9TVEFUSUM9T04gJCh2b3B0X2Jvb2wgbWFuIFVTRV9QQU5ET0MpIgogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnICQodm9wdF9pZiBtYW4gcGFuZG9jKSIKCkZyb20gNWJk NTRjNTI4MzExYzY3Mzk3NTRlOWU5MmViNzk4Yjk4ZGI0MTU2MSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYzLzExNl0gb2JzOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb2JzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9vYnMvdGVtcGxhdGUgYi9zcmNwa2dzL29icy90ZW1wbGF0ZQppbmRleCA3YjY5YzYzMGQz MGQuLjJjOGQ2OGQ3MWYzYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9vYnMvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9vYnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdvYnMnCiBwa2duYW1lPW9icwogdmVyc2lvbj0yOS4xLjIKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGFyY2hzPSJpNjg2KiB4ODZfNjQqIHBwYzY0bGUqIGFhcmNoNjQqIgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE9CU19WRVJTSU9OX09WRVJSSURFPSR7dmVyc2lvbn0g LURFTkFCTEVfSkFDSz1PTgoKRnJvbSA2ZWJhOTZlZTU2YTc3YzNkZjllOTIwMjc1NGM4OTNmNTBi ZDRlYjc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNjQvMTE2XSBvbGl2ZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNw a2dzL29saXZlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUg Yi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCmluZGV4IDEyYTQ2OTM2Yzk5MC4uNWMyOTE3YjljNTEy IDEwMDY0NAotLS0gYS9zcmNwa2dzL29saXZlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2xpdmUv dGVtcGxhdGUKQEAgLTEsMTAgKzEsMTAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29saXZlJwog cGtnbmFtZT1vbGl2ZQogdmVyc2lvbj0wLjEuMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVp bGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xz IHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0icXQ1LWRldmVsIHF0NS1tdWx0aW1lZGlhLWRldmVs IHF0NS1zdmctZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWkwci1wbHVnaW5zIgorbWFrZWRlcGVuZHM9 InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRldmVsIGZmbXBlZzQtZGV2 ZWwgZnJlaTByLXBsdWdpbnMiCiBzaG9ydF9kZXNjPSJOb24tbGluZWFyIHZpZGVvIGVkaXRvciIK IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJH UEwtMy4wLW9yLWxhdGVyIgoKRnJvbSA3MTIyOGJmNmU0MTM0ZTAwMzc0OGIzMWNjMGM0MTQ3MDA2 ZGEwMmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwNjUvMTE2XSBvbXhwbGF5ZXI6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQog c3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxhdGUgfCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29teHBs YXllci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCmluZGV4IGU3MGJmNzg3 M2Q0ZC4uMGU5YmM3MGU3YzhlIDEwMDY0NAotLS0gYS9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnb214cGxheWVyJwogcGtnbmFtZT1vbXhwbGF5ZXIKIHZlcnNpb249 MjAxOTAxMDIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHNob3J0X2Rlc2M9IkNvbW1hbmRsaW5l IE9NWCBwbGF5ZXIgZm9yIHRoZSBSYXNwYmVycnkgUGkiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8 b3JwaGFuQHZvaWRsaW51eC5vcmc+IgotbGljZW5zZT0iR1BMLTIiCitsaWNlbnNlPSJHUEwtMi4w LW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bjb3JubWl4L29teHBs YXllciIKIAogX2NvbW1pdD0iZjA2MjM1Y2M5NjkwYTZkNTgxODc1MTQ0NTJkZjhjZjhmY2RhYWNl YyIKQEAgLTE1LDcgKzE1LDcgQEAgY2hlY2tzdW09YWYyZDk0NTBmODk0Nzg0MmVhOGM0MDFmZTlm NzFlZWM0NDQwMTNlYmJkZWUyOWYyYWM4MjhjOWM0OTNjMTMyOQogYXJjaHM9ImFybXY2bCogYXJt djdsKiIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogaG9zdG1ha2VkZXBlbmRzPSJjdXJsIHBr Zy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVs IHBjcmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnLWRldmVsIGRidXMt ZGV2ZWwiCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBj cmUtZGV2ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnNC1kZXZlbCBkYnVzLWRl dmVsIgogZGVwZW5kcz0iZnJlZWZvbnQtdHRmIgogCiBkb19idWlsZCgpIHsKCkZyb20gMTNjNjYz MWMwZjVlNWY5NzFiYWUyMmIxOWU0MjQwNTU3NjU2NDA5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY2LzExNl0gb3BlbmltYWdlaW86IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICB8 IDIgKysKIHNyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUgfCAyICstCiAyIGZpbGVzIGNoYW5n ZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9z aGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IGNlMGM1MThmMDBlZi4uMjgyMGU4MzRkMTM2IDEw MDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTIyNTksNiAr MjI1OSw4IEBAIGxpYnhtcC5zby40IGxpYnhtcC00LjMuN18xCiBsaWJLRjVUaHJlYWRXZWF2ZXIu c28uNSB0aHJlYWR3ZWF2ZXItNS4yNi4wXzEKIGxpYk9wZW5JbWFnZUlPX1V0aWwuc28uMi40IG9w ZW5pbWFnZWlvLTIuNC45LjBfMQogbGliT3BlbkltYWdlSU8uc28uMi40IG9wZW5pbWFnZWlvLTIu NC45LjBfMQorbGliT3BlbkltYWdlSU9fVXRpbC5zby4yLjQgb3BlbmltYWdlaW8tMi40LjguMV8x CitsaWJPcGVuSW1hZ2VJTy5zby4yLjQgb3BlbmltYWdlaW8tMi40LjguMV8xCiBsaWJPcGVuQ29s b3JJTy5zby4yLjEgb3BlbmNvbG9yaW8tMi4xLjJfMQogbGlicHlzdHJpbmcuc28uMSBweXN0cmlu Zy0xLjEuM18xCiBsaWJ5YW1sLWNwcC5zby4wLjcgeWFtbC1jcHAtMC43LjBfMQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVt cGxhdGUKaW5kZXggYzJkMzZiNGIzNTM5Li4wZTllMjJlOTY4NWQgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2Vpby90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5pbWFnZWlvJwogcGtn bmFtZT1vcGVuaW1hZ2VpbwogdmVyc2lvbj0yLjQuOS4wCi1yZXZpc2lvbj00CityZXZpc2lvbj01 CiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVscGVyPXFlbXUKIGNvbmZpZ3VyZV9hcmdzPSIt RFVTRV9RVD0wIC1EVVNFX1BZVEhPTj0wIC1ET0lJT19CVUlMRF9URVNUUz0wCgpGcm9tIDFlZTBk ODE2MWM0NzFhNTY5MmJlNmJiNmU0NWI2OWU5YTYyYmY5MDIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Ny8xMTZdIG9wZW5zaG90OiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0 ZQppbmRleCAzMjI3MTdkNDBhYmMuLmMwNzRlMDMzODc3MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9v cGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbnNob3QnCiBwa2duYW1lPW9wZW5zaG90 CiB2ZXJzaW9uPTMuMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1weXRo b24zLW1vZHVsZQogaG9zdG1ha2VkZXBlbmRzPSJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scyIK IG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgcHl0aG9uMy1QeVF0NSIKCkZyb20gYzdhNjc1OWUy NWFlZmFmMzg4MjFiZjkyMDgxZGRlNzk0OTVlZjI3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY4LzExNl0gb3BlbnRvb256OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0 ZQppbmRleCBlZTlmNzYwM2Y1NWYuLjNlODE4MzRjYTBlZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9v cGVudG9vbnovdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvcGVudG9vbnonCiBwa2duYW1lPW9wZW50 b29uegogdmVyc2lvbj0xLjYuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfd3Jrc3Jj PSJ0b29uei9zb3VyY2VzIgogYnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKCkZyb20g ZmFkNTA4YzgzYTQ1ZjRiZmFmMzBlN2U1MGNmYTMzNGJjZGEyNjBkZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY5LzExNl0gcGlhbm9iYXI6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUgYi9zcmNwa2dzL3BpYW5vYmFyL3Rl bXBsYXRlCmluZGV4IGE5YjI5ZTkxOTkzZi4uODFlZmNkMTIyYzRkIDEwMDY0NAotLS0gYS9zcmNw a2dzL3BpYW5vYmFyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwaWFub2JhcicKIHBrZ25hbWU9cGlh bm9iYXIKIHZlcnNpb249MjAyMi4wNC4wMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRf c3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlY9MSIKIGhvc3RtYWtlZGVwZW5k cz0icGtnLWNvbmZpZyIKCkZyb20gNjdlNzhkZTg3NTU3MTEwMDg1OTAxYjFhZGFkODczZDdkZDNm NzE1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDcwLzExNl0gcHBzc3BwOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3Br Z3MvcHBzc3BwL3RlbXBsYXRlIHwgNyArKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBs YXRlIGIvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKaW5kZXggNzk4NGE3MzNkNGJlLi4xNWE0MmZk MmM5OTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv cHBzc3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHBz c3BwJwogcGtnbmFtZT1wcHNzcHAKIHZlcnNpb249MS4xNC40Ci1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBfZ2xzbGFuZ19jb21taXQ9ZGMxMWFkZGUyM2M0NTVhMjRlMTNkZDU0ZGU5YjRlZGU4YmRk N2RiOAogX1NQSVJWX0Nyb3NzX2NvbW1pdD05YWNiOWVjMzFmNWE4ZWY4MGVhNmI5OTRiYjc3YmU3 ODdiMDhkM2QxCiBfYXJtaXBzX2NvbW1pdD02NzE5ZWRlYmFhZTAzMzMwZWU1NDQxZDliMjgyODA2 NzJlZGYwMGQ1CkBAIC0xMyw3ICsxMyw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItREhFQURMRVNTPTEg LURVU0VfU1lTVEVNX0ZGTVBFRz0xIC1EVU5JVFRFU1Q9T04KICAtRFVTSU5HX1FUX1VJPSQodm9w dF9pZiBxdCBPTiBPRkYpIC1EVVNFX1NZU1RFTV9aU1REPU9OCiAgLURBUk1JUFNfVVNFX1NURF9G SUxFU1lTVEVNPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMgJCh2b3B0 X2lmIHF0IHF0NS1ob3N0LXRvb2xzKSIKLW1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2 ZWwgZmZtcGVnLWRldmVsIGxpYnppcC1kZXZlbAorbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xl dy1kZXZlbCBmZm1wZWc0LWRldmVsIGxpYnppcC1kZXZlbAogIHNuYXBweS1kZXZlbCByYXBpZGpz b24gbGlicG5nLWRldmVsIGxpYnpzdGQtZGV2ZWwKICAkKHZvcHRfaWYgc2RsMiBTREwyLWRldmVs KSAkKHZvcHRfaWYgd2F5bGFuZCB3YXlsYW5kLWRldmVsKQogICQodm9wdF9pZiBxdCAncXQ1LWRl dmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsJykiCkBAIC02MiwxMyArNjIsMTIgQEAgcG9zdF9leHRy YWN0KCkgewogCW12ICR7d3Jrc3JjfS9taW5pdXBucC0ke19taW5pdXBucF9jb21taXR9ICR7d3Jr c3JjfS9leHQvbWluaXVwbnAKIH0KIAotcG9zdF9wYXRjaCgpeworcG9zdF9wYXRjaCgpIHsKIAkj IGRpc2FibGUgZ2l0IHZlcnNpb25pbmcKIAl2c2VkIC1lICdzfGZpbmRfcGFja2FnZShHaXQpfCMg JnwnIC1pIGdpdC12ZXJzaW9uLmNtYWtlCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JdmxpY2Vuc2Ug TElDRU5TRS5UWFQKIAl2aW5zdGFsbCBpY29ucy9pY29uLnN2ZyA2NDQgdXNyL3NoYXJlL3BpeG1h cHMgcHBzc3BwLnN2ZwogCXZpbnN0YWxsIFF0L1BQU1NQUC5kZXNrdG9wIDY0NCB1c3Ivc2hhcmUv YXBwbGljYXRpb25zCiAJdmJpbiBidWlsZC9QUFNTUFBIZWFkbGVzcyBwcHNzcHAtaGVhZGxlc3MK CkZyb20gMmJkYjEyODgzNWUzNjllMDMwYzUzZGQxZjdhYmJlYzgzNWQ1ODVlZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcxLzExNl0gcHFp djogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BxaXYvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3BxaXYvdGVtcGxhdGUgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKaW5k ZXggNTQyZmMyN2EyZDMyLi45MzA4ZDk0OWI2YTEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHFpdi90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdwcWl2JwogcGtnbmFtZT1wcWl2CiB2ZXJzaW9uPTIuMTIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogaG9zdG1ha2VkZXBl bmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImdsaWItZGV2ZWwgZ3RrKzMtZGV2ZWwgJCh2 b3B0X2lmIGZmbXBlZyBmZm1wZWctZGV2ZWwpCgpGcm9tIDgxNTA2Yzg5MjAzZjkzZTc5NWU1ZmNl Yzg1ODM1ZmQ3MjU4MjBhNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAK U3ViamVjdDogW1BBVENIIDA3Mi8xMTZdIHFtbXA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0t LQogc3JjcGtncy9xbW1wL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xbW1wL3RlbXBsYXRl IGIvc3JjcGtncy9xbW1wL3RlbXBsYXRlCmluZGV4IDI2YzY2MWVkMTZiZS4uYTE1MGQ3NDQxYzdh IDEwMDY0NAotLS0gYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xbW1wL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncW1tcCcKIHBrZ25h bWU9cW1tcAogdmVyc2lvbj0xLjYuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9IQUw6Qk9PTD1GQUxTRSAtRFFNTVBfREVG QVVMVF9VSTpTVFJJTkc9c2ltcGxlIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1o b3N0LXRvb2xzIHF0NS1xbWFrZSIKCkZyb20gN2JlZGRhMjFkY2FlNzIwZGIxYmY5M2JjNjEwYjM1 YTVjNjhhZmU3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDczLzExNl0gcXQ1LXdlYmVuZ2luZTogdXBkYXRlIHRvIDUuMTUuMTMKCi0tLQog Li4uL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2ggICAgICAgIHwgIDExICsrCiBz cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgfCAxNzkgKysrKysr KysrKysrKysrKysrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgICAgICAgICAgICAg ICAgfCAgMTAgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDUgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv Y2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0 LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmls dGVycy1jcHAxNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjA0YWRjNTQwZjJjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKQEAgLTAsMCArMSwxMSBA QAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAy My0wMi0yNyAxMzozMjo1OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL0JVSUxELmduCTIwMjMtMDQtMDIgMTc6MjE6MzkuMjA0MDY2Mzg0 IC0wNDAwCitAQCAtOTYsNiArOTYsOCBAQAorICAgICAiLy91aS9nZngvZ2VvbWV0cnk6Z2VvbWV0 cnkiLAorICAgXQorIAorKyAgY2ZsYWdzX2NjID0gWyAiLXN0ZD1jKysxNCIgXQorKworICAgbGli cyA9IFtdCisgCisgICBpZiAocHJvcHJpZXRhcnlfY29kZWNzKSB7CmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmFjNTVlMTYzNDQyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxNzkgQEAKKy0tLSBh L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIw MjMtMDQtMDIgMTY6NTA6NTcuNzMyNTQ3NDQ2IC0wNDAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hy b21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAyIDE2OjUwOjA5 LjQ4NjQ3ODk5NSAtMDQwMAorQEAgLTU3LDYgKzU3LDggQEAKKyAKKyBuYW1lc3BhY2UgeworIAor K2NvbnN0ZXhwciBpbnQ2NF90IGtSZWxhdGl2ZVRzQmFzZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+ KDB4N2ZmZWZmZmZmZmZmZmZmZik7CisrCisgdm9pZCBTZXRBVlN0cmVhbURpc2NhcmQoQVZTdHJl YW0qIHN0cmVhbSwgQVZEaXNjYXJkIGRpc2NhcmQpIHsKKyAgIERDSEVDSyhzdHJlYW0pOworICAg c3RyZWFtLT5kaXNjYXJkID0gZGlzY2FyZDsKK0BAIC05MCwyNCArOTIsMTIgQEAKKyAKKyBzdGF0 aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFydFRpbWUoQVZTdHJlYW0qIHN0cmVhbSkgewor ICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBpcyB6ZXJvLgorLSAgYmFzZTo6VGltZURlbHRh IHN0YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZSA9IGtOb1RpbWVzdGFt cDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2UgIHRoZSB8c3RhcnRfdGltZXwgdmFsdWUgYXMg aXMuCisgICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkKKyAg ICAgc3RhcnRfdGltZSA9IENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIHN0 cmVhbS0+c3RhcnRfdGltZSk7CisgCistICAvLyBOZXh0IHRyeSB0byB1c2UgdGhlIGZpcnN0IERU UyB2YWx1ZSwgZm9yIGNvZGVjcyB3aGVyZSB3ZSBrbm93IFBUUyA9PSBEVFMKKy0gIC8vIChleGNs dWRlcyBhbGwgSDI2eCBjb2RlY3MpLiBUaGUgc3RhcnQgdGltZSBtdXN0IGJlIHJldHVybmVkIGlu IFBUUy4KKy0gIGlmIChzdHJlYW0tPmZpcnN0X2R0cyAhPSBrTm9GRm1wZWdUaW1lc3RhbXAgJiYK Ky0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IRVZDICYm CistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSDI2NCAm JgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX01QRUc0 KSB7CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAgICAgICAgQ29u dmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5maXJzdF9kdHMpOwor LSAgICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAgICBzdGFydF90aW1lID0gZmly c3RfcHRzOworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7CisgfQorIAorQEAgLTQwOCwx MSArMzk4LDExIEBACisgICBzY29wZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKKyAK KyAgIGlmICh0eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VEVYVCkgeworLSAgICBpbnQgaWRfc2l6 ZSA9IDA7CisrICAgIHNpemVfdCBpZF9zaXplID0gMDsKKyAgICAgdWludDhfdCogaWRfZGF0YSA9 IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1Rf REFUQV9XRUJWVFRfSURFTlRJRklFUiwgJmlkX3NpemUpOworIAorLSAgICBpbnQgc2V0dGluZ3Nf c2l6ZSA9IDA7CisrICAgIHNpemVfdCBzZXR0aW5nc19zaXplID0gMDsKKyAgICAgdWludDhfdCog c2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0 LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19zaXplKTsKKyAK K0BAIC00MjQsNyArNDE0LDcgQEAKKyAgICAgYnVmZmVyID0gRGVjb2RlckJ1ZmZlcjo6Q29weUZy b20ocGFja2V0LT5kYXRhLCBwYWNrZXQtPnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpZGVfZGF0YS5kYXRhKCksIHNpZGVfZGF0YS5zaXplKCkpOworICAgfSBl bHNlIHsKKy0gICAgaW50IHNpZGVfZGF0YV9zaXplID0gMDsKKysgICAgc2l6ZV90IHNpZGVfZGF0 YV9zaXplID0gMDsKKyAgICAgdWludDhfdCogc2lkZV9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRl X2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX01BVFJPU0tBX0JMT0NL QURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsKKyAKK0BAIC00ODUsNyArNDc1LDcgQEAKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQtPnNpemUgLSBkYXRh X29mZnNldCk7CisgICAgIH0KKyAKKy0gICAgaW50IHNraXBfc2FtcGxlc19zaXplID0gMDsKKysg ICAgc2l6ZV90IHNraXBfc2FtcGxlc19zaXplID0gMDsKKyAgICAgY29uc3QgdWludDMyX3QqIHNr aXBfc2FtcGxlc19wdHIgPQorICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf dCo+KGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgICAgIHBhY2tldC5nZXQoKSwg QVZfUEtUX0RBVEFfU0tJUF9TQU1QTEVTLCAmc2tpcF9zYW1wbGVzX3NpemUpKTsKK0BAIC0xNTg3 LDYgKzE1NzcsOCBAQAorICAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBzdHJlYW1zXykgewor ICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0tPklzRW5hYmxlZCgpICE9IGVuYWJsZWQpCisgICAg ICAgY29udGludWU7CisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09 IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgIGNvbnRpbnVlOworICAgICBpZiAoIWxvd2VzdF9zdGFy dF90aW1lX3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFtLT5zdGFydF90aW1lKCkgPCBsb3dlc3Rf c3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgeworICAgICAgIGxvd2VzdF9zdGFydF90 aW1lX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKK0BAIC0xNjA0LDYgKzE1OTYsOCBAQAorICAgICBp ZiAoc3RyZWFtICYmIHN0cmVhbS0+dHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlZJREVPICYmCisg ICAgICAgICBzdHJlYW0tPklzRW5hYmxlZCgpKSB7CisgICAgICAgdmlkZW9fc3RyZWFtID0gc3Ry ZWFtLmdldCgpOworKyAgICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFydF90aW1lID09 IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgICAgY29udGludWU7CisgICAgICAgaWYgKHZpZGVvX3N0 cmVhbS0+c3RhcnRfdGltZSgpIDw9IHNlZWtfdGltZSkgeworICAgICAgICAgcmV0dXJuIHZpZGVv X3N0cmVhbTsKKyAgICAgICB9CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmggcXR3ZWJl bmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19j b21tb24uaAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdf Y29tbW9uLmgJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIwMjItMDctMTEg MjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtMjksNiArMjksNyBAQCBleHRlcm4gIkMiIHsK KyAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAjaW5jbHVkZSA8bGliYXZmb3Jt YXQvYXZpby5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvYXZ1dGlsLmg+CisrI2luY2x1ZGUgPGxp YmF2dXRpbC9jaGFubmVsX2xheW91dC5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvaW1ndXRpbHMu aD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2xvZy5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvbWFz dGVyaW5nX2Rpc3BsYXlfbWV0YWRhdGEuaD4KK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUu MTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3Jl YWRlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9m aWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0v bWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAw MDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv YXVkaW9fZmlsZV9yZWFkZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAK K0BAIC04NSw3ICs4NSw3IEBAIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjpPcGVuRGVtdXhlcigpIHsK KyB9CisgCisgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZWNvZGVyKCkgeworLSAgQVZDb2Rl YyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQp OworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19j b250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKGNvZGVjKSB7CisgICAgIC8vIE1QMyBkZWNvZGVz IHRvIFMxNlAgd2hpY2ggd2UgZG9uJ3Qgc3VwcG9ydCwgdGVsbCBpdCB0byB1c2UgUzE2IGluc3Rl YWQuCisgICAgIGlmIChjb2RlY19jb250ZXh0Xy0+c2FtcGxlX2ZtdCA9PSBBVl9TQU1QTEVfRk1U X1MxNlApCitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MgcXR3ZWJlbmdp bmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVk aW9fZGVjb2Rlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1 MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRp b19kZWNvZGVyLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtMzI5 LDcgKzMyOSw3IEBAIGJvb2wgRkZtcGVnQXVkaW9EZWNvZGVyOjpDb25maWd1cmVEZWNvZGUKKyAg ICAgfQorICAgfQorIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihj b2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNv ZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2Rl YyB8fAorICAgICAgIGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8uZ2V0KCksIGNvZGVjLCAm Y29kZWNfb3B0aW9ucykgPCAwKSB7CisgICAgIERMT0coRVJST1IpIDw8ICJDb3VsZCBub3QgaW5p dGlhbGl6ZSBhdWRpbyBkZWNvZGVyOiAiCitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEw Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2Mg cXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfZ2x1ZS5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX2dsdWUuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBi L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVlLmNjCTIwMjIt MDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtNTksNyArNTksNiBAQCBzdGF0aWMg aW50NjRfdCBBVklPU2Vla09wZXJhdGlvbih2b2lkKiBvCisgfQorIAorIHZvaWQgRkZtcGVnR2x1 ZTo6SW5pdGlhbGl6ZUZGbXBlZygpIHsKKy0gIGF2X3JlZ2lzdGVyX2FsbCgpOworIH0KKyAKKyBz dGF0aWMgdm9pZCBMb2dDb250YWluZXIoYm9vbCBpc19sb2NhbF9maWxlLAorQEAgLTk1LDkgKzk0 LDYgQEAgRkZtcGVnR2x1ZTo6RkZtcGVnR2x1ZShGRm1wZWdVUkxQcm90b2NvbAorICAgLy8gRW5h YmxlIGZhc3QsIGJ1dCBpbmFjY3VyYXRlIHNlZWtzIGZvciBNUDMuCisgICBmb3JtYXRfY29udGV4 dF8tPmZsYWdzIHw9IEFWRk1UX0ZMQUdfRkFTVF9TRUVLOworIAorLSAgLy8gRW5zdXJlcyB3ZSBj YW4gcmVhZCBvdXQgdmFyaW91cyBtZXRhZGF0YSBiaXRzIGxpa2UgdnA4IGFscGhhLgorLSAgZm9y bWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0tFRVBfU0lERV9EQVRBOworLQorICAg Ly8gRW5zdXJlcyBmb3JtYXQgcGFyc2luZyBlcnJvcnMgd2lsbCBiYWlsIG91dC4gRnJvbSBhbiBh dWRpdCBvbiAxMS8yMDE3LCBhbGwKKyAgIC8vIGluc3RhbmNlcyB3ZXJlIHJlYWwgZmFpbHVyZXMu IFNvbHZlcyBidWdzIGxpa2UgaHR0cDovL2NyYnVnLmNvbS83MTA3OTEuCisgICBmb3JtYXRfY29u dGV4dF8tPmVycm9yX3JlY29nbml0aW9uIHw9IEFWX0VGX0VYUExPREU7CitkaWZmIC1OYXVycCBx dHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRl cnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYworLS0tIGEv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIu Y2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCTIwMjItMDct MTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtMzkxLDcgKzM5MSw3IEBAIGJvb2wgRkZt cGVnVmlkZW9EZWNvZGVyOjpDb25maWd1cmVEZWNvZGUKKyAgIGlmIChkZWNvZGVfbmFsdXNfKQor ICAgICBjb2RlY19jb250ZXh0Xy0+ZmxhZ3MyIHw9IEFWX0NPREVDX0ZMQUcyX0NIVU5LUzsKKyAK Ky0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8t PmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwgYXZjb2RlY19v cGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsIE5VTEwpIDwgMCkgeworICAgICBSZWxl YXNlRkZtcGVnUmVzb3VyY2VzKCk7CisgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLU5hdXJwIHF0 d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9tZWRpYV9maWxlX2NoZWNrZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MKKy0tLSBhL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYwkyMDIy LTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDctMTEgMjI6MTI6 NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtNjgsNyArNjgsNyBAQCBib29sIE1lZGlhRmlsZUNoZWNr ZXI6OlN0YXJ0KGJhc2U6OlRpbWVECisgICAgICAgYXV0byBjb250ZXh0ID0gQVZTdHJlYW1Ub0FW Q29kZWNDb250ZXh0KGZvcm1hdF9jb250ZXh0LT5zdHJlYW1zW2ldKTsKKyAgICAgICBpZiAoIWNv bnRleHQpCisgICAgICAgICBjb250aW51ZTsKKy0gICAgICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisrICAgICAgY29uc3QgQVZDb2RlYyogY29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNfaWQpOworICAgICAgIGlmIChjb2Rl YyAmJiBhdmNvZGVjX29wZW4yKGNvbnRleHQuZ2V0KCksIGNvZGVjLCBudWxscHRyKSA+PSAwKSB7 CisgICAgICAgICBhdXRvIGxvb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGbXBlZ0RlY29kaW5nTG9v cD4oY29udGV4dC5nZXQoKSk7CisgICAgICAgICBzdHJlYW1fY29udGV4dHNbaV0gPSB7c3RkOjpt b3ZlKGNvbnRleHQpLCBzdGQ6Om1vdmUobG9vcCl9OworZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUt NS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9k dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MgcXR3ZWJl bmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21v ZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCistLS0g YS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9f Y29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCTIwMjItMDUtMjMgMDY6Mzg6 NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9p bXBsLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtMjAzLDcgKzIw Myw3IEBAIGludDMyX3QgSDI2NERlY29kZXJJbXBsOjpJbml0RGVjb2RlKGNvbnMKKyAgIC8vIGEg cG9pbnRlciB8dGhpc3wuCisgICBhdl9jb250ZXh0Xy0+b3BhcXVlID0gdGhpczsKKyAKKy0gIEFW Q29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoYXZfY29udGV4dF8tPmNvZGVjX2lk KTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoYXZfY29u dGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMpIHsKKyAgICAgLy8gVGhpcyBpcyBhbiBp bmRpY2F0aW9uIHRoYXQgRkZtcGVnIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCBvciBpdCBoYXMg bm90CisgICAgIC8vIGJlZW4gY29tcGlsZWQvaW5pdGlhbGl6ZWQgd2l0aCB0aGUgY29ycmVjdCBz ZXQgb2YgY29kZWNzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRl IGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCmluZGV4IDg1MjY3YzdjZjhhMy4uMDk1 YWI2NzcwMWU0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0xLDkgKzEsOSBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAncXQ1LXdlYmVuZ2luZScKIHBrZ25hbWU9cXQ1LXdlYmVuZ2luZQotdmVy c2lvbj01LjE1LjExCi1yZXZpc2lvbj0zCit2ZXJzaW9uPTUuMTUuMTMKK3JldmlzaW9uPTEKIF92 ZXJzaW9uPSIke3ZlcnNpb259LWx0cyIKLV9jaHJvbWl1bV9jb21taXQ9YmUzNDllYWY2MmU3Nzk1 NTc5MWQ3YmYyOWY4OTNmMWU4YTM3ZGFmNAorX2Nocm9taXVtX2NvbW1pdD1lNDhkZjc4MDNjN2M5 OGIwYjI0NzFjOTQwNTdkMzJlNDRhMzAxYWQ1CiBhcmNocz0ieDg2XzY0KiBpNjg2KiBhcm12WzY3 XSogcHBjNjQqIGFhcmNoNjQqIgogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPXFtYWtl CkBAIC0zMiw4ICszMiw4IEBAIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIsIExHUEwtMy4wLW9y LWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogZGlzdGZpbGVzPSJodHRwczovL2dp dGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUvYXJjaGl2ZS92JHtfdmVyc2lvbn0udGFyLmd6CiAgaHR0 cHM6Ly9naXRodWIuY29tL3F0L3F0d2ViZW5naW5lLWNocm9taXVtL2FyY2hpdmUvJHtfY2hyb21p dW1fY29tbWl0fS50YXIuZ3oiCi1jaGVja3N1bT0iYWE3NDY2MzU2YzQ1MGM1ZjU4NzBmOTc5Yjkz Y2Q3ZTdlNjJkYTExNjVjMzI4ZmZjYWIxYTk5MjhkYjE4YWQ2NwotIDZmNDdlZDhhYjhjYzA2MjQx MWY2ZjIwNmRhNjM1M2JjODI2M2Q2ZWQ2ZDYyOTBjNjg5YTA1YzAxZDkxZjY0NmIiCitjaGVja3N1 bT0iNGI1OTgzOGVkNzVlZjc4OGI1OWUxZTQxMjUzNWEwZTQyZGQ5ZDMxMTY2MWZkZWFkYjE5MWI1 ODFiYTgxNWM2MworIGE5MTY4NjU2MmIxZDRlOGIyMjBlMGJiY2JhYjVmZWI2NDYzMGUyZGU5NzRi MzVhYzAzNGJmMzg4YWY3NzFhNmMiCiAKIG5vX2dlbmVyaWNfcGtnY29uZmlnX2xpbms9eWVzCiBi dWlsZF9vcHRpb25zPSJzbmRpbyBwaXBld2lyZSIKCkZyb20gNjQ1NWUxYTA2OWQ5YzQwMzQ4OTVi NGQ1Mzg3ZWM1ZTRmZTU2YjRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDc0LzExNl0gcXQ1OiB1cGRhdGUgdG8gNS4xNS44CgotLS0KIC4u LmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaCB8IDEyOTEzICsrKysr KysrKysrKysrKysKIHNyY3BrZ3MvcXQ1L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEyOTE5IGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVy eXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaAoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1 LTEucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1z cmMtNS4xNS44LWtmNS0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uOTY2Yzk4YmNkM2JiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hl cy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApAQCAtMCww ICsxLDEyOTEzIEBACitTdWJtaXR0ZWQgQnk6ICAgICAgICAgICAgUGllcnJlIExhYmFzdGllIDxw aWVycmVfZG90X2xhYmFzdGllX2F0X25ldWZfZG90X2ZyPgorRGF0ZTogICAgICAgICAgICAgICAg ICAgIDIwMjMtMDEtMDUKK0luaXRpYWwgUGFja2FnZSBWZXJzaW9uOiA1LjE1LjgKK1Vwc3RyZWFt IFN0YXR1czogICAgICAgICBBcHBsaWVkIChhY2NvcmRpbmcgdG8gS0RFKQorT3JpZ2luOiAgICAg ICAgICAgICAgICAgIEtERSBwYXRjaCBzZXQKK0Rlc2NyaXB0aW9uOiAgICAgICAgICAgICBQYXRj aCBzZXQgbWFpbnRhaW5lZCBieSB0aGUgS0RFIGZvbGtzCitzZWUgaHR0cHM6Ly9kb3Qua2RlLm9y Zy8yMDIxLzA0LzA2L2Fubm91bmNpbmcta2Rlcy1xdC01LXBhdGNoLWNvbGxlY3Rpb24KK1BhdGNo IGdlbmVyYXRlZCB1c2luZyB0aGUgcHJvY2VkdXJlIGluCitodHRwczovL3dpa2kubGludXhmcm9t c2NyYXRjaC5vcmcvYmxmcy90aWNrZXQvMTc0NzYjY29tbWVudDozCisKK1N1Ym1vZHVsZSBxdGJh c2UgNGVlNGZjMTguLjljZjU4NmQ2OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2NvbW1v bi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lk L3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggZjc1YmM0MDkzYi4uMmJkNTk0MTBkNCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAorKysrIGIv cXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitAQCAtMTQ0LDEx ICsxNDQsNyBAQAorICNkZWZpbmUgUVRfU0lHTkFMX0FSR1MgICAgICAgICAgaW50CisgI2RlZmlu ZSBRVF9TSUdOQUxfSUdOT1JFICAgICAgICBTSUdfSUdOCisgCistI2lmIGRlZmluZWQoX19HTElC Q19fKSAmJiAoX19HTElCQ19fID49IDIpCisgI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAg ICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50 CistI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VS Q0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50Zgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsgYi9xdGJhc2Uv bWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCitpbmRleCBmMzBiNTgzMGI0Li5hMzJjZWFjYjZj IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworKysrIGIv cXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworQEAgLTEsNiArMSw2IEBACisgCisg aWZlcSAoJChRVF9NQUNfU0RLX05PX1ZFUlNJT05fQ0hFQ0spLCkKKy0gICAgQ0hFQ0tfU0RLX0NP TU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAtc2hv dy1zZGstdmVyc2lvbiAyPiYxCisrICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNy dW4gLS1zZGsgJChFWFBPUlRfUU1BS0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4vZGV2 L251bGwKKyAgICAgQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04gOj0gJChzaGVsbCBERVZFTE9QRVJf RElSPSQoRVhQT1JUX1FNQUtFX1hDT0RFX0RFVkVMT1BFUl9QQVRIKSAkKENIRUNLX1NES19DT01N QU5EKSkKKyAgICAgaWZuZXEgKCQoQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04pLCQoRVhQT1JUX1FN QUtFX01BQ19TREtfVkVSU0lPTikpCisgICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gY29tcGxh aW4gYWJvdXQgb3V0IG9mIGRhdGUgU0RLIHVubGVzcyB0aGUgdGFyZ2V0IG5lZWRzIHRvIGJlIHJl bWFkZS4KK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1k ZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4 IGE4MThkOTczZjAuLmMxYWI3MmZiYzYgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51 eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNsYW5n L3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0VfWE9Q RU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9ybWRl ZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElCQ19f KSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBz b2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50Cist I2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0Ug Pj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNk ZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9x dGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3Mv bGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggMTM1MjNmMDcwMi4uNGQyNzUwZDllYyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKKysr KyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCAr NzksNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUg Ii4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5f VAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA8IDIpCistI2RlZmlu ZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xF Tl9UICAgICAgICAgICAgc29ja2xlbl90CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVO X1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYg ICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAg Ojp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0 Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCitp bmRleCBkYzc1MGFiMWVmLi5kM2NjMzliNDdmIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3Mv bGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxs dm0vcXBsYXRmb3JtZGVmcy5oCitAQCAtODAsMTQgKzgwLDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9Y T1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3Jt ZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJD X18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAg IHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQK Ky0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJD RSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisg I2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBh L3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21r c3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDRjNGU1M2RhMmEuLjgz YmFmZmIzZTMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0 Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1k ZWZzLmgKK0BAIC04NSwxNiArODUsOSBAQAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBs YXRmb3JtZGVmcy5oIgorIAorICN1bmRlZiBRVF9PUEVOX0xBUkdFRklMRQorLSN1bmRlZiBRVF9T T0NLTEVOX1QKKyAKKyAjZGVmaW5lIFFUX09QRU5fTEFSR0VGSUxFICAgICAgIDAKKyAKKy0jaWYg ZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tM RU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1Qg ICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIFNJT0NHSUZCUkRBRERSCisgIyAg ZGVmaW5lIFNJT0NHSUZCUkRBRERSIDB4ODkxOQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFz ZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbHlu eG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDQzMzllYTJiMjMuLjYwMDdhZjAwNTUgMTAw NjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAorKysr IGIvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03MiwxNCAr NzIsNiBAQAorIAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgor IAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChf X0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5f dAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYK Ky0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1MDAp CisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmluZSBR VF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAgYi9xdGJh c2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwCitp bmRleCBjM2MxODQyNThmLi4zMmFmM2Y4ZjI5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8zcmRw YXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorKysrIGIvcXRiYXNl L3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorQEAg LTEwLDYgKzEwLDcgQEAKKyAjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmgiCisg CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKysjaW5jbHVkZSA8bGltaXRzPgorIAorICNpbmNsdWRl ICJjb21tb24vZGVidWcuaCIKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2Zv cmtmZC9mb3JrZmRfbGludXguYyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9s aW51eC5jCitpbmRleCBmZmUwZTlhNWUyLi5iMWY1NDA4ZDExIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKKysrKyBiL3F0YmFzZS9zcmMvM3Jk cGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCitAQCAtODIsNyArODIsOCBAQCBzdGF0aWMgaW50 IHN5c19jbG9uZSh1bnNpZ25lZCBsb25nIGNsb25lZmxhZ3MsIGludCAqcHRpZCkKKyAgICAgcmV0 dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgY2xvbmVmbGFncywgY2hpbGRfc3RhY2ssIHN0YWNrX3Np emUsIHB0aWQsIG5ld3RscywgY3RpZCk7CisgI2VsaWYgZGVmaW5lZChfX2FyY19fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IFwKKyAgICAgZGVmaW5lZChfX25kczMyX18pIHx8IGRlZmluZWQoX19ocHBhX18pIHx8IGRl ZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBoYV9f KSB8fCBkZWZpbmVkKF9fcmlzY3YpCisrICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX3h0ZW5zYV9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2KSB8 fCBcCisrICAgIGRlZmluZWQoX19sb29uZ2FyY2hfXykKKyAgICAgLyogY3RpZCBhbmQgbmV3dGxz IGFyZSBpbnZlcnRlZCBvbiBDT05GSUdfQ0xPTkVfQkFDS1dBUkRTIGFyY2hpdGVjdHVyZXMsCisg ICAgICAqIGJ1dCBzaW5jZSBib3RoIHZhbHVlcyBhcmUgMCwgdGhlcmUncyBubyBoYXJtLiAqLwor ICAgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFjaywg cHRpZCwgY3RpZCwgbmV3dGxzKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2FuZHJvaWQvamFy L3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEgYi9xdGJhc2Uvc3Jj L2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEK K2luZGV4IDU3OTJiNWIyZjUuLjJmNzQ3NTBmY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Fu ZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKKysr KyBiL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJvaWQv UXROYXRpdmUuamF2YQorQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUK KyAgICAgcHVibGljIHN0YXRpYyBRdFRocmVhZCBtX3F0VGhyZWFkID0gbmV3IFF0VGhyZWFkKCk7 CisgICAgIHByaXZhdGUgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBVcmk+IG1fY2FjaGVkVXJpcyA9 IG5ldyBIYXNoTWFwPFN0cmluZywgVXJpPigpOworICAgICBwcml2YXRlIHN0YXRpYyBBcnJheUxp c3Q8U3RyaW5nPiBtX2tub3duRGlycyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworKyAgICBw cml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlID0gIk5v IHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIjsKKyAKKyAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwg UnVubmFibGUgcnVuUGVuZGluZ0NwcFJ1bm5hYmxlc1J1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkg eworICAgICAgICAgQE92ZXJyaWRlCitAQCAtMTkzLDExICsxOTQsMTAgQEAgcHVibGljIGNsYXNz IFF0TmF0aXZlCisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlclVyaTsKKyAgICAgICAg ICAgICB9CisgCistICAgICAgICAgICAgLy8gQW5kcm9pZCA2IGFuZCBlYXJsaWVyIGNvdWxkIHN0 aWxsIG1hbmFnZSB0byBvcGVuIHRoZSBmaWxlIHNvIHdlIGNhbiByZXR1cm4gdGhlCistICAgICAg ICAgICAgLy8gcGFyc2VkIHVyaSBoZXJlCistICAgICAgICAgICAgaWYgKEJ1aWxkLlZFUlNJT04u U0RLX0lOVCA8IDI0KQorLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOworLSAgICAg ICAgICAgIHJldHVybiBudWxsOworKyAgICAgICAgICAgIC8vIGlmIHdlIG9ubHkgaGF2ZSB0cmFu c2llbnQgcGVybWlzc2lvbnMgb24gdXJpIGFsbCB0aGUgYWJvdmUgd2lsbCBmYWlsLAorKyAgICAg ICAgICAgIC8vIGJ1dCB3ZSB3aWxsIGJlIGFibGUgdG8gcmVhZCB0aGUgZmlsZSBhbnl3YXksIHNv IGNvbnRpbnVlIHdpdGggdXJpIGhlcmUgYW55d2F5CisrICAgICAgICAgICAgLy8gYW5kIGNoZWNr IGZvciBTZWN1cml0eUV4Y2VwdGlvbnMgbGF0ZXIKKysgICAgICAgICAgICByZXR1cm4gcGFyc2Vk VXJpOworICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworICAgICAgICAg ICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgcmV0dXJuIG51bGw7CitAQCAt MjQ0LDcgKzI0NCw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaW50IGVycm9y ID0gLTE7CisgCisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cu ZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBV cmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTog IiArIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGVycm9y OworICAgICAgICAgfQorIAorQEAgLTI1NCwxMiArMjU0LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5h dGl2ZQorICAgICAgICAgICAgIHJldHVybiBmZERlc2MuZGV0YWNoRmQoKTsKKyAgICAgICAgIH0g Y2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmludFN0 YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9IGNhdGNo IChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0VEFH LCAib3BlbkZkRm9yQ29udGVudFVybCgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUu cHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVycm9yOworKyAgICAgICAg fSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFH LCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJu IGVycm9yOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBnZXRTaXplKENvbnRl eHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMjcwLDcgKzI3MSw3IEBAIHB1Ymxp YyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1p c3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAKKyAgICAgICAgIGlmICh1cmkgPT0g bnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBObyBwZXJtaXNz aW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Np b25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgfSBl bHNlIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKSB7CisgICAgICAg ICAgICAgbV9jYWNoZWRVcmlzLnB1dChjb250ZW50VXJsLCB1cmkpOworQEAgLTI4OCwxMiArMjg5 LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFy Z3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUo KTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAg ICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgfSAgY2F0Y2ggKFVuc3VwcG9ydGVkT3Bl cmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUo KTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBl LnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBzaXplOworKyAgICAgICAg fSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFH LCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJu IHNpemU7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRmlsZUV4 aXN0cyhDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTMwMyw3ICszMDUs NyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkKKyAg ICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRl bnRVcmwsICJyIik7CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBM b2cuZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVy aSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2Up OworICAgICAgICAgICAgIHJldHVybiBleGlzdHM7CisgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAgLTMy MSwxMiArMzIzLDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAo SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywg ImNoZWNrRmlsZUV4aXN0cygpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRT dGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0gY2F0 Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cu ZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9yIGdp dmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkg eworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOwor ICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgfQorIAorICAgICBwdWJs aWMgc3RhdGljIGJvb2xlYW4gY2hlY2tJZldyaXRhYmxlKENvbnRleHQgY29udGV4dCwgU3RyaW5n IGNvbnRlbnRVcmwpCitAQCAtMzQ0LDcgKzM0Nyw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQor ICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwgY29u dGVudFVybCwgInIiKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgewor LSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiaXNEaXIoKTogTm8gcGVybWlzc2lvbnMgdG8gb3Bl biBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNz YWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gaXNEaXI7CisgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAg LTM3NCwxMiArMzc3LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRj aCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRB RywgImNoZWNrSWZEaXIoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3Rh Y2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0gY2F0Y2gg KFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShR dFRBRywgImNoZWNrSWZEaXIoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmki KTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAg ICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAg IH0KKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAgICBwdWJsaWMgc3RhdGljIFN0 cmluZ1tdIGxpc3RDb250ZW50c0Zyb21UcmVlVXJpKENvbnRleHQgY29udGV4dCwgU3RyaW5nIGNv bnRlbnRVcmwpCisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50cmVkdWNla2VybmVsLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJy ZW50cmVkdWNla2VybmVsLmgKK2luZGV4IDhmOWE5Mzg5NTIuLmE5OGRlZGVmMmUgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgKKysr KyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAorQEAg LTIxMiwxMSArMjEyLDEzIEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxkVGhy b3R0bGUoKQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2NrZXIo bXV0ZXgpOworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA+IChSZWR1Y2VRdWV1ZVRo cm90dGxlTGltaXQgKiB0aHJlYWRDb3VudCkpOworICAgICB9CisgCisgICAgIGlubGluZSBib29s IHNob3VsZFN0YXJ0VGhyZWFkKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFFN dXRleD4gbG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNpemUgPD0g KFJlZHVjZVF1ZXVlU3RhcnRMaW1pdCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyB9OworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUu Y3BwIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAK K2luZGV4IGVhNmNlM2FjNDIuLjdmOTFhMmJhNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BAIC0xNzYsNiArMTc2LDM5 IEBAIHZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRTaW5nbGVUaHJlYWRlZCgpCisgICAgIGZp bmlzaCgpOworIH0KKyAKKyt2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmcoKQor K3sKKysgICAgc3RhcnQoKTsKKysgICAgYmFycmllci5hY3F1aXJlKCk7CisrICAgIHN0YXJ0VGhy ZWFkcygpOworKworKyAgICBib29sIHRocm90dGxlZCA9IGZhbHNlOworKyNpZm5kZWYgUVRfTk9f RVhDRVBUSU9OUworKyAgICB0cnkgeworKyNlbmRpZgorKyAgICAgICAgd2hpbGUgKHRocmVhZEZ1 bmN0aW9uKCkgPT0gVGhyb3R0bGVUaHJlYWQpIHsKKysgICAgICAgICAgICBpZiAodGhyZWFkVGhy b3R0bGVFeGl0KCkpIHsKKysgICAgICAgICAgICAgICAgdGhyb3R0bGVkID0gdHJ1ZTsKKysgICAg ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyNpZm5kZWYg UVRfTk9fRVhDRVBUSU9OUworKyAgICB9IGNhdGNoIChRRXhjZXB0aW9uICZlKSB7CisrICAgICAg ICBoYW5kbGVFeGNlcHRpb24oZSk7CisrICAgIH0gY2F0Y2ggKC4uLikgeworKyAgICAgICAgaGFu ZGxlRXhjZXB0aW9uKFFVbmhhbmRsZWRFeGNlcHRpb24oKSk7CisrICAgIH0KKysjZW5kaWYKKysK KysgICAgaWYgKHRocm90dGxlZCA9PSBmYWxzZSkgeworKyAgICAgICAgYmFycmllci5yZWxlYXNl KCk7CisrICAgIH0KKysKKysgICAgYmFycmllci53YWl0KCk7CisrICAgIGZpbmlzaCgpOworKyAg ICBleGNlcHRpb25TdG9yZS50aHJvd1Bvc3NpYmxlRXhjZXB0aW9uKCk7CisrfQorKworIHZvaWQg VGhyZWFkRW5naW5lQmFzZTo6c3RhcnRUaHJlYWQoKQorIHsKKyAgICAgc3RhcnRUaHJlYWRJbnRl cm5hbCgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0 aHJlYWRlbmdpbmUuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRl bmdpbmUuaAoraW5kZXggN2MzMGNlYmRiYy4uYTRjODU0OGNjNCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAorKysrIGIvcXRiYXNl L3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitAQCAtOTEsNiArOTEs NyBAQCBwdWJsaWM6CisgICAgIFRocmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdmlydHVhbCB+VGhy ZWFkRW5naW5lQmFzZSgpOworICAgICB2b2lkIHN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysgICAg dm9pZCBzdGFydEJsb2NraW5nKCk7CisgICAgIHZvaWQgc3RhcnRUaHJlYWQoKTsKKyAgICAgYm9v bCBpc0NhbmNlbGVkKCk7CisgICAgIHZvaWQgd2FpdEZvclJlc3VtZSgpOworQEAgLTE0Myw2ICsx NDQsMTUgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIHJlc3VsdCgpOworICAgICB9CisgCisr ICAgIC8vIFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMuCisr ICAgIC8vIFRoaXMgZnVuY3Rpb24gYmxvY2tzIHVudGlsIHRoZSBhbGdvcml0aG0gaXMgZmluaXNo ZWQsCisrICAgIC8vIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlc3VsdC4KKysgICAgVCAqc3RhcnRC bG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tp bmcoKTsKKysgICAgICAgIHJldHVybiByZXN1bHQoKTsKKysgICAgfQorKworICAgICAvLyBSdW5z IHRoZSB1c2VyIGFsZ29yaXRobSB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAvLyBEb2Vz IG5vdCBibG9jaywgcmV0dXJucyBhIGZ1dHVyZS4KKyAgICAgUUZ1dHVyZTxUPiBzdGFydEFzeW5j aHJvbm91c2x5KCkKK0BAIC0yMjMsNiArMjMzLDEzIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0YXJ0 ZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8VD4KKyBwdWJsaWM6CisgICAgIFRo cmVhZEVuZ2luZVN0YXJ0ZXIoVHlwZWRUaHJlYWRFbmdpbmUgKmVuZykKKyAgICAgICAgIDogQmFz ZShlbmcpIHsgfQorKworKyAgICBUIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBU IHQgPSAqdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBkZWxl dGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICAgICAgcmV0dXJuIHQ7CisrICAgIH0KKyB9Owor IAorIC8vIEZ1bGwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2hlcmUgVCBpcyB2b2lkLgorQEAg LTIzMiw2ICsyNDksMTIgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlcjx2b2lkPiA6IHB1Ymxp YyBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPgorIHB1YmxpYzoKKyAgICAgVGhyZWFkRW5n aW5lU3RhcnRlcihUaHJlYWRFbmdpbmU8dm9pZD4gKl90aHJlYWRFbmdpbmUpCisgICAgICAgICA6 IFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPHZvaWQ+KF90aHJlYWRFbmdpbmUpIHt9CisrCisrICAg IHZvaWQgc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIHRoaXMtPnRocmVhZEVuZ2lu ZS0+c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsK KysgICAgfQorIH07CisgCisgLy8hIFtxdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUtMV0KK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitp bmRleCA5OGIwMmYwMjAyLi5lYWMxNTI0MTA3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29y ZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitAQCAtMjc2LDcgKzI3Niw5IEBA IHZvaWQgUVZhcmlhbnRBbmltYXRpb25Qcml2YXRlOjpzZXRDdXJyZW50VmFsdWVGb3JQcm9ncmVz cyhjb25zdCBxcmVhbCBwcm9ncmVzcykKKyAKKyAgICAgY29uc3QgcXJlYWwgc3RhcnRQcm9ncmVz cyA9IGN1cnJlbnRJbnRlcnZhbC5zdGFydC5maXJzdDsKKyAgICAgY29uc3QgcXJlYWwgZW5kUHJv Z3Jlc3MgPSBjdXJyZW50SW50ZXJ2YWwuZW5kLmZpcnN0OworLSAgICBjb25zdCBxcmVhbCBsb2Nh bFByb2dyZXNzID0gKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3MgLSBz dGFydFByb2dyZXNzKTsKKysgICAgY29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9CisrICAgICAg ICAgICAgcUlzTnVsbChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpID8gMC4wIC8vIGF2b2lkIDAv MCBiZWxvdworKyAgICAgICAgICAgIC8qIGVsc2UgKi8gICAgICAgICAgICAgICAgICAgICAgICA6 IChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVz cyk7CisgCisgICAgIFFWYXJpYW50IHJldCA9IHEtPmludGVycG9sYXRlZChjdXJyZW50SW50ZXJ2 YWwuc3RhcnQuc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vy cmVudEludGVydmFsLmVuZC5zZWNvbmQsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGli L2dsb2JhbC9xbmFtZXNwYWNlLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3Bh Y2UuaAoraW5kZXggYWQ0MTUwYjMxNy4uYmYxOWIxNjI3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv Z2xvYmFsL3FuYW1lc3BhY2UuaAorQEAgLTE4NjQsNyArMTg2NCw3IEBAIHB1YmxpYzoKKyAgICAg UVRfUV9FTlVNKFRpbWVyVHlwZSkKKyAgICAgUVRfUV9FTlVNKFNjcm9sbFBoYXNlKQorICAgICBR VF9RX0VOVU0oTW91c2VFdmVudFNvdXJjZSkKKy0gICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFn KQorKyAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWdzKQorICAgICBRVF9RX0VOVU0oQ2hlY2tz dW1UeXBlKQorICAgICBRVF9RX0VOVU0oSGlnaERwaVNjYWxlRmFjdG9yUm91bmRpbmdQb2xpY3kp CisgICAgIFFUX1FfRU5VTShUYWJGb2N1c0JlaGF2aW9yKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFs L3FyYW5kb20uY3BwCitpbmRleCAxMDY3MmMxZjkyLi4yNWY4N2M3ZTZhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAorQEAgLTM4Myw3ICszODMsNiBAQCBzdHJ1Y3QgUVJh bmRvbUdlbmVyYXRvcjo6U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycworIAorICAgICAgICAgY29u c3RleHByIFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnMgZyA9IHt9OworICAgICAgICAgUV9VTlVT RUQoZyk7CistICAgICAgICBRX1NUQVRJQ19BU1NFUlQoc3RkOjppc19saXRlcmFsX3R5cGU8U3lz dGVtQW5kR2xvYmFsR2VuZXJhdG9ycz46OnZhbHVlKTsKKyAjZW5kaWYKKyAgICAgfQorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcCBiL3F0YmFzZS9zcmMv Y29yZWxpYi9pby9xYnVmZmVyLmNwcAoraW5kZXggNTk1ZmNkMjcyNC4uMDMyYzBkZGQ0YiAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCitAQCAtNDEsNiArNDEsOCBAQAorICNpbmNsdWRl IDxRdENvcmUvcW1ldGFvYmplY3QuaD4KKyAjaW5jbHVkZSAicHJpdmF0ZS9xaW9kZXZpY2VfcC5o IgorIAorKyNpbmNsdWRlIDxsaW1pdHM+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgLyoq IFFCdWZmZXJQcml2YXRlICoqLworQEAgLTM2Niw3ICszNjgsOSBAQCBxaW50NjQgUUJ1ZmZlcjo6 c2l6ZSgpIGNvbnN0CisgYm9vbCBRQnVmZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisgeworICAgICBR X0QoUUJ1ZmZlcik7CistICAgIGlmIChwb3MgPiBkLT5idWYtPnNpemUoKSAmJiBpc1dyaXRhYmxl KCkpIHsKKysgICAgY29uc3QgYXV0byBvbGRCdWZTaXplID0gZC0+YnVmLT5zaXplKCk7CisrICAg IGNvbnN0ZXhwciBxaW50NjQgTWF4U2Vla1BvcyA9IChzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0 eXBlKG9sZEJ1ZlNpemUpPjo6bWF4KSgpOworKyAgICBpZiAocG9zIDw9IE1heFNlZWtQb3MgJiYg cG9zID4gb2xkQnVmU2l6ZSAmJiBpc1dyaXRhYmxlKCkpIHsKKyAgICAgICAgIGlmIChzZWVrKGQt PmJ1Zi0+c2l6ZSgpKSkgeworICAgICAgICAgICAgIGNvbnN0IHFpbnQ2NCBnYXBTaXplID0gcG9z IC0gZC0+YnVmLT5zaXplKCk7CisgICAgICAgICAgICAgaWYgKHdyaXRlKFFCeXRlQXJyYXkoZ2Fw U2l6ZSwgMCkpICE9IGdhcFNpemUpIHsKK0BAIC0zNzcsNyArMzgxLDcgQEAgYm9vbCBRQnVmZmVy OjpzZWVrKHFpbnQ2NCBwb3MpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg fQorICAgICB9IGVsc2UgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpIHx8IHBvcyA8IDApIHsKKy0g ICAgICAgIHFXYXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWQiLCBpbnQocG9z KSk7CisrICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6ICVsbGQi LCBwb3MpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIHJldHVybiBRSU9E ZXZpY2U6OnNlZWsocG9zKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZp bGVzeXN0ZW1lbmdpbmVfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3Rl bWVuZ2luZV93aW4uY3BwCitpbmRleCA4MWQzYTcxOTg2Li5jODZlZDFmOWIwIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCitAQCAtNjY0 LDE0ICs2NjQsMTQgQEAgUUZpbGVTeXN0ZW1FbnRyeSBRRmlsZVN5c3RlbUVuZ2luZTo6YWJzb2x1 dGVOYW1lKGNvbnN0IFFGaWxlU3lzdGVtRW50cnkgJmVudHJ5KQorICAgICByZXR1cm4gUUZpbGVT eXN0ZW1FbnRyeShyZXQsIFFGaWxlU3lzdGVtRW50cnk6OkZyb21JbnRlcm5hbFBhdGgoKSk7Cisg fQorIAorLSNpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAvLyAgV2lu ZG93cyA4IG9ud2FyZHMKKysjaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2 MDIgJiYgX1dJTjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjggLy8gIFdpbmRvd3MgOCBvbndh cmRzCisgCisgdHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfSURfSU5GTyB7CisgICAgIFVMT05HTE9ORyBW b2x1bWVTZXJpYWxOdW1iZXI7CisgICAgIEZJTEVfSURfMTI4IEZpbGVJZDsKKyB9IEZJTEVfSURf SU5GTywgKlBGSUxFX0lEX0lORk87CisgCistI2VuZGlmIC8vIGlmIGRlZmluZWQgKFFfQ0NfTUlO R1cpICYmIFdJTlZFUiA8IDB4MDYwMgorKyNlbmRpZiAvLyBpZiBkZWZpbmVkKFFfQ0NfTUlOR1cp ICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lOOAor IAorIC8vIEZpbGUgSUQgZm9yIFdpbmRvd3MgdXAgdG8gdmVyc2lvbiA3IGFuZCBGQVQzMiBkcml2 ZXMKKyBzdGF0aWMgaW5saW5lIFFCeXRlQXJyYXkgZmlsZUlkKEhBTkRMRSBoYW5kbGUpCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5 LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlmeS5j cHAKK2luZGV4IDk0ZDlkMDZiY2IuLjI3ZTBiMTNiMGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCitAQCAtMzY2LDcg KzM2Niw5IEBAIHZvaWQgUUlub3RpZnlGaWxlU3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZyb21J bm90aWZ5KCkKKyAgICAgLy8gcURlYnVnKCJRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5naW5l OjpyZWFkRnJvbUlub3RpZnkiKTsKKyAKKyAgICAgaW50IGJ1ZmZTaXplID0gMDsKKy0gICAgaW9j dGwoaW5vdGlmeUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKTsKKysgICAgaWYgKGlv Y3RsKGlub3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZmU2l6ZSkgPT0gLTEgfHwgYnVm ZlNpemUgPT0gMCkKKysgICAgICAgIHJldHVybjsKKysKKyAgICAgUVZhckxlbmd0aEFycmF5PGNo YXIsIDQwOTY+IGJ1ZmZlcihidWZmU2l6ZSk7CisgICAgIGJ1ZmZTaXplID0gcmVhZChpbm90aWZ5 RmQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZTaXplKTsKKyAgICAgY2hhciAqYXQgPSBidWZmZXIuZGF0 YSgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNw cCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAoraW5kZXggMjc3Zjhk NDIzMC4uMzhlY2VmNTU1MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9j a2ZpbGVfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93aW4u Y3BwCitAQCAtNDgsNiArNDgsOCBAQAorICNpbmNsdWRlICJRdENvcmUvcWRlYnVnLmgiCisgI2lu Y2x1ZGUgIlF0Q29yZS9xdGhyZWFkLmgiCisgCisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3RlbWxp YnJhcnlfcC5oIgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIHN0YXRpYyBpbmxpbmUgYm9v bCBmaWxlRXhpc3RzKGNvbnN0IHdjaGFyX3QgKmZpbGVOYW1lKQorQEAgLTE1MCw3ICsxNTIsNyBA QCBRU3RyaW5nIFFMb2NrRmlsZVByaXZhdGU6OnByb2Nlc3NOYW1lQnlQaWQocWludDY0IHBpZCkK KyAjaWYgIWRlZmluZWQoUV9PU19XSU5SVCkKKyAgICAgdHlwZWRlZiBEV09SRCAoV0lOQVBJICpH ZXRNb2R1bGVGaWxlTmFtZUV4RnVuYykoSEFORExFLCBITU9EVUxFLCBMUFRTVFIsIERXT1JEKTsK KyAKKy0gICAgSE1PRFVMRSBoUHNhcGkgPSBMb2FkTGlicmFyeUEoInBzYXBpIik7CisrICAgIEhN T0RVTEUgaFBzYXBpID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJwc2FwaSIpOworICAgICBpZiAo IWhQc2FwaSkKKyAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgIEdldE1vZHVsZUZpbGVO YW1lRXhGdW5jIHFHZXRNb2R1bGVGaWxlTmFtZUV4ID0gcmVpbnRlcnByZXRfY2FzdDxHZXRNb2R1 bGVGaWxlTmFtZUV4RnVuYz4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fw cm9jZXNzX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3Bw CitpbmRleCA1MDM5MGU1N2Y1Li4xNWM4ZjMwNzQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8v cXByb2Nlc3NfdW5peC5jcHAKK0BAIC0xLDcgKzEsNyBAQAorIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKioKKyAqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENv cHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIw MjIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGlj ZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUg b2YgdGhlIFF0IFRvb2xraXQuCitAQCAtNDIyLDE0ICs0MjIsMTUgQEAgdm9pZCBRUHJvY2Vzc1By aXZhdGU6OnN0YXJ0UHJvY2VzcygpCisgICAgIC8vIEFkZCB0aGUgcHJvZ3JhbSBuYW1lIHRvIHRo ZSBhcmd1bWVudCBsaXN0LgorICAgICBhcmd2WzBdID0gbnVsbHB0cjsKKyAgICAgaWYgKCFwcm9n cmFtLmNvbnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAvLyBmaW5kRXhlY3V0 YWJsZSgpIHJldHVybnMgaXRzIGFyZ3VtZW50IGlmIGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwKKysg ICAgICAgIC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBpZiBu b3QgZm91bmQgKHdlIGhhbmRsZQorKyAgICAgICAgLy8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIpCisg ICAgICAgICBjb25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5k RXhlY3V0YWJsZShwcm9ncmFtKTsKKy0gICAgICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0eSgp KSB7CistICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5h bWUoZXhlRmlsZVBhdGgpOworLSAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29u c3REYXRhKCkpOworLSAgICAgICAgfQorLSAgICB9CistICAgIGlmICghYXJndlswXSkKKysgICAg ICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRo KTsKKysgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAgICB9 IGVsc2UgeworICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKGVuY29kZWRQcm9ncmFtTmFtZS5j b25zdERhdGEoKSk7CisrICAgIH0KKyAKKyAgICAgLy8gQWRkIGV2ZXJ5IGFyZ3VtZW50IHRvIHRo ZSBsaXN0CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLmNvdW50KCk7ICsraSkK K0BAIC05ODMsMTUgKzk4NCwxNiBAQCBib29sIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnREZXRhY2hl ZChxaW50NjQgKnBpZCkKKyAgICAgICAgICAgICAgICAgZW52cCA9IF9xX2R1cEVudmlyb25tZW50 KGVudmlyb25tZW50LmQuY29uc3REYXRhKCktPnZhcnMsICZlbnZjKTsKKyAgICAgICAgICAgICB9 CisgCistICAgICAgICAgICAgUUJ5dGVBcnJheSB0bXA7CisgICAgICAgICAgICAgaWYgKCFwcm9n cmFtLmNvbnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAgICAgICAgIC8vIGZp bmRFeGVjdXRhYmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0ZSBw YXRoLAorKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7IHJl dHVybnMgZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgICAgICAgICAgLy8g dGhhdCBjYXNlIG11Y2ggbGF0ZXIpCisgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmV4 ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOworLSAg ICAgICAgICAgICAgICBpZiAoIWV4ZUZpbGVQYXRoLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAg ICAgICAgIHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAg ICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmlsZVBh dGgpOworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0YSgp KTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpz dHJkdXAoUUZpbGU6OmVuY29kZU5hbWUocHJvZ3JhbSkpOworICAgICAgICAgICAgIH0KKy0gICAg ICAgICAgICBpZiAodG1wLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAgICAgdG1wID0gUUZpbGU6 OmVuY29kZU5hbWUocHJvZ3JhbSk7CistICAgICAgICAgICAgYXJndlswXSA9IHRtcC5kYXRhKCk7 CisgCisgICAgICAgICAgICAgaWYgKGVudnApCisgICAgICAgICAgICAgICAgIHF0X3NhZmVfZXhl Y3ZlKGFyZ3ZbMF0sIGFyZ3YsIGVudnApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv aXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitpbmRleCAzYTc5YzUwMmFmLi45OTdh NjM0ZTc2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3Ry YWN0aXRlbW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFi c3RyYWN0aXRlbW1vZGVsLmNwcAorQEAgLTMxOTYsOSArMzE5Niw4IEBAIGJvb2wgUUFic3RyYWN0 SXRlbU1vZGVsOjpiZWdpbk1vdmVDb2x1bW5zKGNvbnN0IFFNb2RlbEluZGV4ICZzb3VyY2VQYXJl bnQsIGludCBzCisgICAgIGRlc3RpbmF0aW9uQ2hhbmdlLm5lZWRzQWRqdXN0ID0gZGVzdGluYXRp b25QYXJlbnQuaXNWYWxpZCgpICYmIGRlc3RpbmF0aW9uUGFyZW50LnJvdygpID49IHNvdXJjZUxh c3QgJiYgZGVzdGluYXRpb25QYXJlbnQucGFyZW50KCkgPT0gc291cmNlUGFyZW50OworICAgICBk LT5jaGFuZ2VzLnB1c2goZGVzdGluYXRpb25DaGFuZ2UpOworIAorLSAgICBkLT5pdGVtc0Fib3V0 VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3RpbmF0 aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAgIGVt aXQgY29sdW1uc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJj ZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRUHJpdmF0ZVNpZ25h bCgpKTsKKysgICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZp cnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6 Okhvcml6b250YWwpOworICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtMzIzMSw3ICszMjMw LDYgQEAgdm9pZCBRQWJzdHJhY3RJdGVtTW9kZWw6OmVuZE1vdmVDb2x1bW5zKCkKKyAgICAgICBh ZGp1c3RlZFNvdXJjZSA9IGNyZWF0ZUluZGV4KGFkanVzdGVkU291cmNlLnJvdygpLCBhZGp1c3Rl ZFNvdXJjZS5jb2x1bW4oKSArIG51bU1vdmVkLCBhZGp1c3RlZFNvdXJjZS5pbnRlcm5hbFBvaW50 ZXIoKSk7CisgCisgICAgIGQtPml0ZW1zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5n ZS5maXJzdCwgcmVtb3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2VydENo YW5nZS5maXJzdCwgUXQ6Okhvcml6b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNNb3ZlZChh ZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwgYWRq dXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRUHJpdmF0ZVNpZ25hbCgpKTsK KyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRm aWx0ZXJwcm94eW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fzb3J0 ZmlsdGVycHJveHltb2RlbC5jcHAKK2luZGV4IGRjNjM3OWQ5ZmIuLmM1ZTI4N2VlODQgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9k ZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnBy b3h5bW9kZWwuY3BwCitAQCAtOTM5LDggKzkzOSw5IEBAIHZvaWQgUVNvcnRGaWx0ZXJQcm94eU1v ZGVsUHJpdmF0ZTo6aW5zZXJ0X3NvdXJjZV9pdGVtcygKKyAgICAgICAgICAgICAgICAgcS0+YmVn aW5JbnNlcnRDb2x1bW5zKHByb3h5X3BhcmVudCwgcHJveHlfc3RhcnQsIHByb3h5X2VuZCk7Cisg ICAgICAgICB9CisgCistICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZV9pdGVtcy5z aXplKCk7ICsraSkKKy0gICAgICAgICAgICBwcm94eV90b19zb3VyY2UuaW5zZXJ0KHByb3h5X3N0 YXJ0ICsgaSwgc291cmNlX2l0ZW1zLmF0KGkpKTsKKysgICAgICAgIC8vIFRPRE86IHVzZSB0aGUg cmFuZ2UgUUxpc3Q6Omluc2VydCgpIG92ZXJsb2FkIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQgKFFU QlVHLTU4NjMzKS4KKysgICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3RhcnQs IHNvdXJjZV9pdGVtcy5zaXplKCksIDApOworKyAgICAgICAgc3RkOjpjb3B5KHNvdXJjZV9pdGVt cy5jYmVnaW4oKSwgc291cmNlX2l0ZW1zLmNlbmQoKSwgcHJveHlfdG9fc291cmNlLmJlZ2luKCkg KyBwcm94eV9zdGFydCk7CisgCisgICAgICAgICBidWlsZF9zb3VyY2VfdG9fcHJveHlfbWFwcGlu Zyhwcm94eV90b19zb3VyY2UsIHNvdXJjZV90b19wcm94eSk7CisgCitAQCAtMzEyMyw4ICszMTI0 LDkgQEAgYm9vbCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50IHNv dXJjZV9yb3csIGNvbnN0IFFNb2RlbEluZGV4ICYKKyAKKyAgICAgaWYgKGQtPmZpbHRlcl9kYXRh LmlzRW1wdHkoKSkKKyAgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICBpbnQgY29sdW1uX2Nv dW50ID0gZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICBpZiAoZC0+ ZmlsdGVyX2NvbHVtbiA9PSAtMSkgeworLSAgICAgICAgaW50IGNvbHVtbl9jb3VudCA9IGQtPm1v ZGVsLT5jb2x1bW5Db3VudChzb3VyY2VfcGFyZW50KTsKKyAgICAgICAgIGZvciAoaW50IGNvbHVt biA9IDA7IGNvbHVtbiA8IGNvbHVtbl9jb3VudDsgKytjb2x1bW4pIHsKKyAgICAgICAgICAgICBR TW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3JvdywgY29s dW1uLCBzb3VyY2VfcGFyZW50KTsKKyAgICAgICAgICAgICBRU3RyaW5nIGtleSA9IGQtPm1vZGVs LT5kYXRhKHNvdXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CitAQCAtMzEz Myw5ICszMTM1LDEwIEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2NlcHRz Um93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgICAgICAgICB9CisgICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKy0gICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4 ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJjZV9w YXJlbnQpOworLSAgICBpZiAoIXNvdXJjZV9pbmRleC5pc1ZhbGlkKCkpIC8vIHRoZSBjb2x1bW4g bWF5IG5vdCBleGlzdAorKworKyAgICBpZiAoZC0+ZmlsdGVyX2NvbHVtbiA+PSBjb2x1bW5fY291 bnQpIC8vIHRoZSBjb2x1bW4gbWF5IG5vdCBleGlzdAorICAgICAgICAgcmV0dXJuIHRydWU7Cisr ICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93 LCBkLT5maWx0ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKyAgICAgUVN0cmluZyBrZXkgPSBk LT5tb2RlbC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50b1N0cmluZygpOwor ICAgICByZXR1cm4gZC0+ZmlsdGVyX2RhdGEuaGFzTWF0Y2goa2V5KTsKKyB9CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGNhMjg2NGRm ODMuLjEzMmIyZWFlNTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fj b3JlYXBwbGljYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3Jl YXBwbGljYXRpb24uY3BwCitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgc3RhdGljIGJvb2wgZG9Ob3Rp ZnkoUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgYm9vbCBRQ29yZUFwcGxpY2F0 aW9uUHJpdmF0ZTo6c2VuZFRocm91Z2hBcHBsaWNhdGlvbkV2ZW50RmlsdGVycyhRT2JqZWN0ICpy ZWNlaXZlciwgUUV2ZW50ICpldmVudCkKKyB7CisgICAgIC8vIFdlIGNhbid0IGFjY2VzcyB0aGUg YXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBvdXRzaWRlIG9mIHRoZSBtYWluIHRocmVhZCAocmFj ZSBjb25kaXRpb25zKQorLSAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVhZERh dGEubG9hZFJlbGF4ZWQoKS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgPT0gbWFpblRocmVhZCgpKTsK KysgICAgUV9BU1NFUlQocmVjZWl2ZXItPmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRBY3F1aXJl KCktPnRocmVhZC5sb2FkUmVsYXhlZCgpID09IG1haW5UaHJlYWQoKSk7CisgCisgICAgIGlmIChl eHRyYURhdGEpIHsKKyAgICAgICAgIC8vIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgYXJlIG9u bHkgY2FsbGVkIGZvciBvYmplY3RzIGluIHRoZSBHVUkgdGhyZWFkCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9r ZXJuZWwvcW9iamVjdC5jcHAKK2luZGV4IDFlYjc5MTM4ZDkuLjM2Y2Q3ODBlZTEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitAQCAtMTAxMCw3ICsxMDEwLDcgQEAgUU9i amVjdDo6flFPYmplY3QoKQorICAgICAgICAgZW1pdCBkZXN0cm95ZWQodGhpcyk7CisgICAgIH0K KyAKKy0gICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0YSkgeworKyAgICBpZiAoIWQtPmlzRGVsZXRp bmdDaGlsZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKyAgICAgICAgIGlmIChzdGF0aWNf Y2FzdDxRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGFJbXBsKj4oZC0+ZGVjbGFyYXRpdmVEYXRhKS0+ b3duZWRCeVFtbDEpIHsKKyAgICAgICAgICAgICBpZiAoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRh OjpkZXN0cm95ZWRfcW1sMSkKKyAgICAgICAgICAgICAgICAgUUFic3RyYWN0RGVjbGFyYXRpdmVE YXRhOjpkZXN0cm95ZWRfcW1sMShkLT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMpOworQEAgLTE1ODAs NyArMTU4MCw3IEBAIHZvaWQgUU9iamVjdDo6bW92ZVRvVGhyZWFkKFFUaHJlYWQgKnRhcmdldFRo cmVhZCkKKyAKKyAgICAgUVRocmVhZERhdGEgKmN1cnJlbnREYXRhID0gUVRocmVhZERhdGE6OmN1 cnJlbnQoKTsKKyAgICAgUVRocmVhZERhdGEgKnRhcmdldERhdGEgPSB0YXJnZXRUaHJlYWQgPyBR VGhyZWFkRGF0YTo6Z2V0Mih0YXJnZXRUaHJlYWQpIDogbnVsbHB0cjsKKy0gICAgUVRocmVhZERh dGEgKnRoaXNUaHJlYWREYXRhID0gZC0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpOworKyAgICBR VGhyZWFkRGF0YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRBY3F1aXJlKCk7 CisgICAgIGlmICghdGhpc1RocmVhZERhdGEtPnRocmVhZC5sb2FkQWNxdWlyZSgpICYmIGN1cnJl bnREYXRhID09IHRhcmdldERhdGEpIHsKKyAgICAgICAgIC8vIG9uZSBleGNlcHRpb24gdG8gdGhl IHJ1bGU6IHdlIGFsbG93IG1vdmluZyBvYmplY3RzIHdpdGggbm8gdGhyZWFkIGFmZmluaXR5IHRv IHRoZSBjdXJyZW50IHRocmVhZAorICAgICAgICAgY3VycmVudERhdGEgPSBkLT50aHJlYWREYXRh OworQEAgLTI2MjAsNyArMjYyMCw3IEBAIGludCBRT2JqZWN0OjpyZWNlaXZlcnMoY29uc3QgY2hh ciAqc2lnbmFsKSBjb25zdAorICAgICAgICAgaWYgKCFkLT5pc1NpZ25hbENvbm5lY3RlZChzaWdu YWxfaW5kZXgpKQorICAgICAgICAgICAgIHJldHVybiByZWNlaXZlcnM7CisgCistICAgICAgICBp ZiAoZC0+ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2 ZXJzKSB7CisrICAgICAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNsYXJh dGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKyAgICAg ICAgICAgICByZWNlaXZlcnMgKz0gUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMo ZC0+ZGVjbGFyYXRpdmVEYXRhLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfaW5kZXgpOworICAgICAgICAg fQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmggYi9x dGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitpbmRleCAwYjgyN2E1MmNhLi4x M2ZmYjg4OTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0 X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAorQEAgLTQ0 NCw3ICs0NDQsNyBAQCBpbmxpbmUgdm9pZCBRT2JqZWN0UHJpdmF0ZTo6Y2hlY2tGb3JJbmNvbXBh dGlibGVMaWJyYXJ5VmVyc2lvbihpbnQgdmVyc2lvbikgY29ucworIAorIGlubGluZSBib29sIFFP YmplY3RQcml2YXRlOjppc0RlY2xhcmF0aXZlU2lnbmFsQ29ubmVjdGVkKHVpbnQgc2lnbmFsX2lu ZGV4KSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3RE ZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkCisrICAgIHJldHVybiAhaXNEZWxldGlu Z0NoaWxkcmVuICYmIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6 OmlzU2lnbmFsQ29ubmVjdGVkCisgICAgICAgICAgICAgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVE YXRhOjppc1NpZ25hbENvbm5lY3RlZChkZWNsYXJhdGl2ZURhdGEsIHFfZnVuYygpLCBzaWduYWxf aW5kZXgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0 cmFuc2xhdG9yLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3Bw CitpbmRleCAyODEyZmZiN2VhLi5iYzAxNzdjNWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9r ZXJuZWwvcXRyYW5zbGF0b3IuY3BwCitAQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBRU3RyaW5n IGdldE1lc3NhZ2UoY29uc3QgdWNoYXIgKm0sIGNvbnN0IHVjaGFyICplbmQsIGNvbnN0IGNoYXIg KmNvbnRleHQsCisgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICBjYXNlIFRhZ19UcmFu c2xhdGlvbjogeworICAgICAgICAgICAgIGludCBsZW4gPSByZWFkMzIobSk7CistICAgICAgICAg ICAgaWYgKGxlbiAlIDEpCisrICAgICAgICAgICAgaWYgKGxlbiAmIDEpCisgICAgICAgICAgICAg ICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgICAgICAgICAgbSArPSA0OworICAgICAgICAgICAg IGlmICghbnVtZXJ1cy0tKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0 eXBlcy9xbWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1p bWVkYXRhYmFzZS5jcHAKK2luZGV4IDlkZTIyY2VmMzMuLmZmODY4YTMyNjggMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtMzg5LDIw ICszODksMjMgQEAgUU1pbWVUeXBlIFFNaW1lRGF0YWJhc2VQcml2YXRlOjptaW1lVHlwZUZvckZp bGVOYW1lQW5kRGF0YShjb25zdCBRU3RyaW5nICZmaWxlTmEKKyAgICAgICAgIC8vIERpc2FtYmln dWF0ZSBjb25mbGljdGluZyBleHRlbnNpb25zIChpZiBtYWdpYyBtYXRjaGluZyBmb3VuZCBzb21l dGhpbmcpCisgICAgICAgICBpZiAoY2FuZGlkYXRlQnlEYXRhLmlzVmFsaWQoKSAmJiBtYWdpY0Fj Y3VyYWN5ID4gMCkgeworICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgc25pZmZlZE1pbWUgPSBj YW5kaWRhdGVCeURhdGEubmFtZSgpOworLSAgICAgICAgICAgIC8vIElmIHRoZSBzbmlmZmVkTWlt ZSBtYXRjaGVzIGEgZ2xvYiBtYXRjaCwgdXNlIGl0CisrICAgICAgICAgICAgLy8gSWYgdGhlIHNu aWZmZWRNaW1lIG1hdGNoZXMgYSBoaWdoZXN0LXdlaWdodCBnbG9iIG1hdGNoLCB1c2UgaXQKKyAg ICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzLmNvbnRh aW5zKHNuaWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAxMDA7 CisgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisgICAgICAgICAgICAg fQorLSAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRpZGF0 ZXNCeU5hbWUubV9tYXRjaGluZ01pbWVUeXBlcykpIHsKKysgICAgICAgICAgICBmb3IgKGNvbnN0 IFFTdHJpbmcgJm0gOiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1l VHlwZXMpKSB7CisgICAgICAgICAgICAgICAgIGlmIChpbmhlcml0cyhtLCBzbmlmZmVkTWltZSkp IHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbWFnaWMgKyBwYXR0ZXJuIHBvaW50 aW5nIHRvIHRoaXMsIHNvIGl0J3MgYSBwcmV0dHkgZ29vZCBtYXRjaAorICAgICAgICAgICAgICAg ICAgICAgKmFjY3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1p bWVUeXBlRm9yTmFtZShtKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5OworLSAgICAgICAgICAgIHJl dHVybiBjYW5kaWRhdGVCeURhdGE7CisrICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUu bV9hbGxNYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsKKysgICAgICAgICAgICAgICAgLy8g Tm8gZ2xvYiwgdXNlIG1hZ2ljCisrICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1hZ2lj QWNjdXJhY3k7CisrICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisrICAg ICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcCBiL3F0YmFzZS9zcmMvY29y ZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK2luZGV4IGE4MTExMmQyMjcuLmZh OGY0YzU0NWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1l Z2xvYnBhdHRlcm4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1l Z2xvYnBhdHRlcm4uY3BwCitAQCAtODMsNyArODMsMTAgQEAgdm9pZCBRTWltZUdsb2JNYXRjaFJl c3VsdDo6YWRkTWF0Y2goY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGludCB3ZWlnaHQsIGNvbnN0 IFEKKyAgICAgfQorICAgICBpZiAoIW1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMobWltZVR5 cGUpKSB7CisgICAgICAgICBtX21hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7Cist ICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisrICAgICAg ICBpZiAocmVwbGFjZSkKKysgICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLnByZXBl bmQobWltZVR5cGUpOyAvLyBoaWdoZXN0LXdlaWdodCBmaXJzdAorKyAgICAgICAgZWxzZQorKyAg ICAgICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKyAgICAg ICAgIG1fa25vd25TdWZmaXhMZW5ndGggPSBrbm93blN1ZmZpeExlbmd0aDsKKyAgICAgfQorIH0K K0BAIC05NCw3ICs5Nyw3IEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xv YlBhdHRlcm46OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgaWYgKCFwYXR0 ZXJuTGVuZ3RoKQorICAgICAgICAgcmV0dXJuIE90aGVyUGF0dGVybjsKKyAKKy0gICAgY29uc3Qg Ym9vbCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpID09IDE7Cisr ICAgIGNvbnN0IGludCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykp OworICAgICBjb25zdCBib29sIGhhc1NxdWFyZUJyYWNrZXQgPSBwYXR0ZXJuLmluZGV4T2YoUUxh dGluMUNoYXIoJ1snKSkgIT0gLTE7CisgICAgIGNvbnN0IGJvb2wgaGFzUXVlc3Rpb25NYXJrID0g cGF0dGVybi5pbmRleE9mKFFMYXRpbjFDaGFyKCc/JykpICE9IC0xOworIAorQEAgLTEwNiwxMCAr MTA5LDEwIEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRlcm46 OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgICAgICAgICAvLyBQYXR0ZXJu cyBsaWtlICJSRUFETUUqIiAod2VsbCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBvbmUgbGlr ZSB0aGF0Li4uKQorICAgICAgICAgICAgIGlmIChwYXR0ZXJuLmF0KHBhdHRlcm5MZW5ndGggLSAx KSA9PSBRTGF0aW4xQ2hhcignKicpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUHJlZml4UGF0 dGVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJk cyBsaWtlICJSRUFETUUiCistICAgICAgICBpZiAoc3RhckNvdW50ID09IDApCisrICAgICAgICB9 IGVsc2UgaWYgKHN0YXJDb3VudCA9PSAwKSB7CisrICAgICAgICAgICAgLy8gTmFtZXMgd2l0aG91 dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKyAgICAgICAgICAgICByZXR1cm4gTGl0ZXJh bFBhdHRlcm47CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYgKHBhdHRlcm4gPT0gUUxh dGluMVN0cmluZygiWzAtOV1bMC05XVswLTldLnZkciIpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitpbmRleCAyNThkZGRmOGNiLi40NjQyZDBm MmQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3Zp ZGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVy LmNwcAorQEAgLTI0NCwxNSArMjQ0LDE4IEBAIHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6YWRk RmlsZU5hbWVNYXRjaGVzKGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lLCBRTWltZUdsb2JNCisgICAg IGNvbnN0IFFTdHJpbmcgbG93ZXJGaWxlTmFtZSA9IGZpbGVOYW1lLnRvTG93ZXIoKTsKKyAgICAg Ly8gQ2hlY2sgbGl0ZXJhbHMgKGUuZy4gIk1ha2VmaWxlIikKKyAgICAgbWF0Y2hHbG9iTGlzdChy ZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0xpdGVyYWxMaXN0 T2Zmc2V0KSwgZmlsZU5hbWUpOworLSAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJj YWxsZ3JpbmQub3V0WzAtOV0qIikKKy0gICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2FjaGVG aWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5hbWUp OworICAgICAvLyBDaGVjayB0aGUgdmVyeSBjb21tb24gKi50eHQgY2FzZXMgd2l0aCB0aGUgc3Vm Zml4IHRyZWUKKy0gICAgY29uc3QgaW50IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNo ZUZpbGUtPmdldFVpbnQzMihQb3NSZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNvbnN0 IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVP ZmZzZXQpOworLSAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdl dFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOworLSAgICBtYXRjaFN1ZmZpeFRy ZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJG aWxlTmFtZSwgbG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgaWYgKHJl c3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3QgaW50 IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NSZXZl cnNlU3VmZml4VHJlZU9mZnNldCk7CisrICAgICAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2Nh Y2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAgIGNv bnN0IGludCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VT dWZmaXhUcmVlT2Zmc2V0ICsgNCk7CisrICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBt X2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwgbG93 ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgICAgIGlmIChyZXN1bHQubV9t YXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpCisrICAgICAgICAgICAgbWF0Y2hTdWZmaXhUcmVl KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVOYW1l LCBmaWxlTmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICB9CisrICAgIC8vIENoZWNrIGNv bXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoiIG9yICJSRUFETUUqIikKKyAg ICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKy0gICAgICAgIG1h dGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zm c2V0LCBmaWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAgICAgIG1h dGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQ b3NHbG9iTGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKyB9CisgCisgdm9pZCBRTWltZUJpbmFyeVBy b3ZpZGVyOjptYXRjaEdsb2JMaXN0KFFNaW1lR2xvYk1hdGNoUmVzdWx0ICZyZXN1bHQsIENhY2hl RmlsZSAqY2FjaGVGaWxlLCBpbnQgb2ZmLCBjb25zdCBRU3RyaW5nICZmaWxlTmFtZSkKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK2luZGV4 IDE3ZTZmMTExYWIuLjJlNDBiNmM4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv c2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9z ZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAorQEAgLTM3OSwxMCArMzc5LDMwIEBAIGVycm9y OgorICAgICByZXR1cm4gUUNib3JWYWx1ZSgpOworIH0KKyAKKysvLyBXZSBuZWVkIHRvIHJldGFp biB0aGUgX2xhc3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMgYW5kIHdlIG5lZWQgdG8g ZGVyZWYgY29udGFpbmVycy4KKysvLyBUaGVyZWZvcmUgdGhlIG1hbnVhbCBpbXBsZW1lbnRhdGlv biBvZiBzdGQ6OnVuaXF1ZSgpLgorK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFt ZSBDb21wYXJlLCB0eXBlbmFtZSBBc3NpZ24+Cisrc3RhdGljIEl0ZXJhdG9yIGN1c3RvbUFzc2ln bmluZ1VuaXF1ZUxhc3QoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSBjb21wYXJlLCBBc3NpZ24g YXNzaWduKQorK3sKKysgICAgZmlyc3QgPSBzdGQ6OmFkamFjZW50X2ZpbmQoZmlyc3QsIGxhc3Qs IGNvbXBhcmUpOworKyAgICBpZiAoZmlyc3QgPT0gbGFzdCkKKysgICAgICAgIHJldHVybiBsYXN0 OworKworKyAgICBJdGVyYXRvciByZXN1bHQgPSBmaXJzdDsKKysgICAgd2hpbGUgKCsrZmlyc3Qg IT0gbGFzdCkgeworKyAgICAgICAgaWYgKCFjb21wYXJlKCpyZXN1bHQsICpmaXJzdCkpCisrICAg ICAgICAgICAgKytyZXN1bHQ7CisrICAgICAgICBpZiAocmVzdWx0ICE9IGZpcnN0KQorKyAgICAg ICAgICAgIGFzc2lnbigqcmVzdWx0LCAqZmlyc3QpOworKyAgICB9CisrCisrICAgIHJldHVybiAr K3Jlc3VsdDsKKyt9CisrCisgc3RhdGljIHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5l clByaXZhdGUgKmNvbnRhaW5lcikKKyB7CisgICAgIHVzaW5nIEZvcndhcmQgPSBRSnNvblByaXZh dGU6OktleUl0ZXJhdG9yOworLSAgICB1c2luZyBSZXZlcnNlID0gc3RkOjpyZXZlcnNlX2l0ZXJh dG9yPEZvcndhcmQ+OworICAgICB1c2luZyBWYWx1ZSA9IEZvcndhcmQ6OnZhbHVlX3R5cGU7Cisg CisgICAgIGF1dG8gY29tcGFyZSA9IFtjb250YWluZXJdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBW YWx1ZSAmYikKK0BAIC00MjAsMTcgKzQ0MCwzMSBAQCBzdGF0aWMgdm9pZCBzb3J0Q29udGFpbmVy KFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQorICAgICAgICAgfQorICAgICB9Owor IAorLSAgICBzdGQ6OnNvcnQoRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLCBG b3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorLSAgICAgICAgICAgICAgWyZjb21w YXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwg YikgPCAwOyB9KTsKKysgICAgLy8gVGhlIGVsZW1lbnRzJyBjb250YWluZXJzIGFyZSBvd25lZCBi eSB0aGUgb3V0ZXIgY29udGFpbmVyLCBub3QgYnkgdGhlIGVsZW1lbnRzIHRoZW1zZWx2ZXMuCisr ICAgIGF1dG8gbW92ZSA9IFtdKEZvcndhcmQ6OnJlZmVyZW5jZSB0YXJnZXQsIEZvcndhcmQ6OnJl ZmVyZW5jZSBzb3VyY2UpCisrICAgIHsKKysgICAgICAgIFF0Q2Jvcjo6RWxlbWVudCAmdGFyZ2V0 VmFsdWUgPSB0YXJnZXQudmFsdWUoKTsKKysKKysgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgaGFz IGEgY29udGFpbmVyLCBkZXJlZiBpdCBiZWZvcmUgb3ZlcndyaXRpbmcsIHNvIHRoYXQgd2UgZG9u J3QgbGVhay4KKysgICAgICAgIGlmICh0YXJnZXRWYWx1ZS5mbGFncyAmIFF0Q2Jvcjo6RWxlbWVu dDo6SXNDb250YWluZXIpCisrICAgICAgICAgICAgdGFyZ2V0VmFsdWUuY29udGFpbmVyLT5kZXJl ZigpOworKworKyAgICAgICAgLy8gRG8gbm90IG1vdmUsIHNvIHRoYXQgd2UgY2FuIGNsZWFyIHRo ZSB2YWx1ZSBhZnRlcndhcmRzLgorKyAgICAgICAgdGFyZ2V0ID0gc291cmNlOworKworKyAgICAg ICAgLy8gQ2xlYXIgdGhlIHNvdXJjZSB2YWx1ZSwgc28gdGhhdCB3ZSBkb24ndCBzdG9yZSB0aGUg c2FtZSBjb250YWluZXIgdHdpY2UuCisrICAgICAgICBzb3VyY2UudmFsdWUoKSA9IFF0Q2Jvcjo6 RWxlbWVudCgpOworKyAgICB9OworKworKyAgICBzdGQ6OnN0YWJsZV9zb3J0KAorKyAgICAgICAg ICAgICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQoY29u dGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0oY29u c3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpIDwgMDsg fSk7CisgCistICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9yIGFu eSBkdXBsaWNhdGUga2V5cy4gVGhlcmVmb3JlIHRoZSByZXZlcnNlIGRhbmNlIGhlcmUuCistICAg IGF1dG8gaXQgPSBzdGQ6OnVuaXF1ZShSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkp LCBSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksCistICAgICAgICAgICAgICAg ICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgewor LSAgICAgICAgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsKKy0gICAgfSkuYmFzZSgpLmVsZW1l bnRzSXRlcmF0b3IoKTsKKysgICAgRm9yd2FyZCByZXN1bHQgPSBjdXN0b21Bc3NpZ25pbmdVbmlx dWVMYXN0KAorKyAgICAgICAgICAgICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVn aW4oKSksICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAgICAg ICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4g Y29tcGFyZShhLCBiKSA9PSAwOyB9LCBtb3ZlKTsKKyAKKy0gICAgLy8gVGhlIGVyYXNlIGZyb20g YmVnaW5uaW5nIGlzIGV4cGVuc2l2ZSBidXQgaG9wZWZ1bGx5IHJhcmUuCistICAgIGNvbnRhaW5l ci0+ZWxlbWVudHMuZXJhc2UoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpLCBpdCk7CisrICAg IGNvbnRhaW5lci0+ZWxlbWVudHMuZXJhc2UocmVzdWx0LmVsZW1lbnRzSXRlcmF0b3IoKSwgY29u dGFpbmVyLT5lbGVtZW50cy5lbmQoKSk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKK2luZGV4IGIyZjg0NjU0NGQuLjdjZDQ1 N2JhM2EgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1s c3RyZWFtLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0 cmVhbS5jcHAKK0BAIC05ODAsNyArOTgwLDcgQEAgaW5saW5lIHVpbnQgUVhtbFN0cmVhbVJlYWRl clByaXZhdGU6OnBlZWtDaGFyKCkKKyBib29sIFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpzY2Fu VW50aWwoY29uc3QgY2hhciAqc3RyLCBzaG9ydCB0b2tlblRvSW5qZWN0KQorIHsKKyAgICAgaW50 IHBvcyA9IHRleHRCdWZmZXIuc2l6ZSgpOworLSAgICBpbnQgb2xkTGluZU51bWJlciA9IGxpbmVO dW1iZXI7CisrICAgIGNvbnN0IGF1dG8gb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgCisg ICAgIHVpbnQgYzsKKyAgICAgd2hpbGUgKChjID0gZ2V0Q2hhcigpKSAhPSBTdHJlYW1FT0YpIHsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitpbmRleCAzZTg4YWI0ODU5Li44ZGVlYWU0 N2JiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitAQCAtMTIzMTIsNyArMTIz MTIsNyBAQCBzdGF0aWMgcXNpemV0eXBlIHFMYXN0SW5kZXhPZihIYXlzdGFjayBoYXlzdGFjazAs IHFzaXpldHlwZSBmcm9tLAorICAgICBjb25zdCBhdXRvIG5lZWRsZSA9IG5lZWRsZTAuZGF0YSgp OworICAgICBjb25zdCBhdXRvICplbmQgPSBoYXlzdGFjazsKKyAgICAgaGF5c3RhY2sgKz0gZnJv bTsKKy0gICAgY29uc3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9IHNsIC0gMTsKKysgICAgY29u c3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9IHNsID8gc2wgLSAxIDogMDsKKyAgICAgY29uc3Qg YXV0byAqbiA9IG5lZWRsZSArIHNsX21pbnVzXzE7CisgICAgIGNvbnN0IGF1dG8gKmggPSBoYXlz dGFjayArIHNsX21pbnVzXzE7CisgICAgIHN0ZDo6c2l6ZV90IGhhc2hOZWVkbGUgPSAwLCBoYXNo SGF5c3RhY2sgPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJp bmdpdGVyYXRvcl9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0b3Jf cC5oCitpbmRleCAyMTk1ODliNmU0Li4xZDBjNjZjYzc4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorQEAgLTYxLDYgKzYxLDggQEAgY2xhc3MgUVN0 cmluZ0l0ZXJhdG9yCisgeworICAgICBRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBpLCBwb3MsIGU7 CisgICAgIFFfU1RBVElDX0FTU0VSVCgoc3RkOjppc19zYW1lPFFTdHJpbmc6OmNvbnN0X2l0ZXJh dG9yLCBjb25zdCBRQ2hhciAqPjo6dmFsdWUpKTsKKysgICAgc3RhdGljIGJvb2wgbGVzcyhjb25z dCBRQ2hhciAqbGhzLCBjb25zdCBRQ2hhciAqcmhzKSBub2V4Y2VwdAorKyAgICB7IHJldHVybiBz dGQ6Omxlc3M8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3I+e30obGhzLCByaHMpOyB9CisgcHVibGlj OgorICAgICBleHBsaWNpdCBRU3RyaW5nSXRlcmF0b3IoUVN0cmluZ1ZpZXcgc3RyaW5nLCBxc2l6 ZXR5cGUgaWR4ID0gMCkKKyAgICAgICAgIDogaShzdHJpbmcuYmVnaW4oKSksCitAQCAtOTUsNyAr OTcsOCBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSB2b2lkIHNldFBvc2l0aW9uKFFTdHJpbmc6 OmNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKQorICAgICB7CistICAgICAgICBRX0FTU0VSVF9YKGkg PD0gcG9zaXRpb24gJiYgcG9zaXRpb24gPD0gZSwgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBvdXQg b2YgYm91bmRzIik7CisrICAgICAgICBRX0FTU0VSVF9YKCFsZXNzKHBvc2l0aW9uLCBpKSAmJiAh bGVzcyhlLCBwb3NpdGlvbiksCisrICAgICAgICAgICAgICAgICAgIFFfRlVOQ19JTkZPLCAicG9z aXRpb24gb3V0IG9mIGJvdW5kcyIpOworICAgICAgICAgcG9zID0gcG9zaXRpb247CisgICAgIH0K KyAKK0BAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBoYXNO ZXh0KCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA8IGU7CisrICAgICAgICBy ZXR1cm4gbGVzcyhwb3MsIGUpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIGFkdmFuY2Uo KQorQEAgLTEyMCwxNiArMTIzLDIwIEBAIHB1YmxpYzoKKyAgICAgeworICAgICAgICAgUV9BU1NF UlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBpdGVt Iik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUo KSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUoKSkp IHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0 ZSgpKTsKKyAgICAgICAgICAgICArK3BvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBp bmxpbmUgdWludCBwZWVrTmV4dFVuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFf QVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5leHQg aXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJyb2dhdGUo KSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkgewor KyAgICAgICAgICAgIFFfQVNTRVJUKGxlc3MocG9zICsgMSwgZSkgJiYgcG9zWzFdLmlzTG93U3Vy cm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHBv c1swXSwgcG9zWzFdKTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiBwb3MtPnVuaWNv ZGUoKTsKKyAgICAgfQorQEAgLTE1NSw4ICsxNjIsMTAgQEAgcHVibGljOgorICAgICAgICAgUV9B U1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBp dGVtIik7CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqcG9zKys7CistICAgICAgICBp ZiAoUV9VTkxJS0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5M SUtFTFkoY3VyLmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJUKGhh c05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBR Q2hhcjo6c3Vycm9nYXRlVG9VY3M0KGN1ciwgKnBvcysrKTsKKysgICAgICAgIH0KKyAgICAgICAg IHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAtMTY2LDcgKzE3NSw3IEBAIHB1 YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKnBvcysrOworICAgICAgICAgaWYg KFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAgICAgICAgICBpZiAoUV9MSUtF TFkodWMuaXNIaWdoU3Vycm9nYXRlKCkgJiYgcG9zIDwgZSAmJiBwb3MtPmlzTG93U3Vycm9nYXRl KCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAmJiBo YXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAgcmV0 dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQodWMsICpwb3MrKyk7CisgICAgICAgICAgICAgcmV0 dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK0BAIC0xNzgsNyArMTg3LDcgQEAgcHVibGljOgor IAorICAgICBpbmxpbmUgYm9vbCBoYXNQcmV2aW91cygpIGNvbnN0CisgICAgIHsKKy0gICAgICAg IHJldHVybiBwb3MgPiBpOworKyAgICAgICAgcmV0dXJuIGxlc3MoaSwgcG9zKTsKKyAgICAgfQor IAorICAgICBpbmxpbmUgdm9pZCByZWNlZGUoKQorQEAgLTE5NiwxNiArMjA1LDIwIEBAIHB1Ymxp YzoKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNfSU5G TywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChR X1VOTElLRUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5M SUtFTFkoKC0tcG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VS VChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAg ICAgIC0tcG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBlZWtQ cmV2aW91c1VuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFz UHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVt Iik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRlKCkp KQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zWy0xXS5pc0xvd1N1cnJvZ2F0ZSgpKSkgewor KyAgICAgICAgICAgIFFfQVNTRVJUKGxlc3MoaSArIDEsIHBvcykgJiYgcG9zWy0yXS5pc0hpZ2hT dXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQo cG9zWy0yXSwgcG9zWy0xXSk7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gcG9zWy0xXS51 bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yMzAsOCArMjQzLDEwIEBAIHB1YmxpYzoKKyAgICAg ICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNu J3QgYSBwcmV2aW91cyBpdGVtIik7CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqLS1w b3M7CistICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpCisrICAg ICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAg ICBRX0FTU0VSVChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOwor ICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywgY3VyKTsK KysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9CisgCitA QCAtMjQxLDcgKzI1Niw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0g Ki0tcG9zOworICAgICAgICAgaWYgKFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0g ICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBwb3MgPiBpICYm IHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1 Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hTdXJy b2dhdGUoKSkpCisgICAgICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0 KCotLXBvcywgdWMpOworICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCitpbmRleCBmMjg3Yjc1MmQ3Li5lMjk0 NTM3Nzg3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5o CisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK0BAIC01Miw2ICs1 Miw3IEBACisgLy8KKyAKKyAjaW5jbHVkZSA8cWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUv cXRzYW5faW1wbC5oPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTEwNiwxNiArMTA3 LDEzIEBAIG5hbWVzcGFjZSBRdExpbnV4RnV0ZXggeworICAgICBpbmxpbmUgaW50IF9xX2Z1dGV4 KGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsLCBxdWludHB0ciB2YWwyID0gMCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKmFkZHIyID0gbnVsbHB0ciwgaW50IHZhbDMgPSAwKSBub2V4 Y2VwdAorICAgICB7CistICAgICAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBvcmRl cmluZyBvbiB0aGUgZnV0ZXggd29yZHMKKy0gICAgICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBv ciBmYWlsdXJlIG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKy0gICAg ICAgIC8vIGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lzY2FsbC4K Ky0gICAgICAgIF9xX3RzYW5fcmVsZWFzZShhZGRyLCBhZGRyMik7CisrICAgICAgICBRdFRzYW46 OmZ1dGV4UmVsZWFzZShhZGRyLCBhZGRyMik7CisgCisgICAgICAgICAvLyB3ZSB1c2UgX19OUl9m dXRleCBiZWNhdXNlIHNvbWUgbGliY3MgKGxpa2UgQW5kcm9pZCdzIGJpb25pYykgZG9uJ3QKKyAg ICAgICAgIC8vIHByb3ZpZGUgU1lTX2Z1dGV4IGV0Yy4KKyAgICAgICAgIGludCByZXN1bHQgPSBz eXNjYWxsKF9fTlJfZnV0ZXgsIGFkZHIsIG9wIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2YWwsIHZh bDIsIGFkZHIyLCB2YWwzKTsKKyAKKy0gICAgICAgIF9xX3RzYW5fYWNxdWlyZShhZGRyLCBhZGRy Mik7CisrICAgICAgICBRdFRzYW46OmZ1dGV4QWNxdWlyZShhZGRyLCBhZGRyMik7CisgCisgICAg ICAgICByZXR1cm4gcmVzdWx0OworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xbXV0ZXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXgu Y3BwCitpbmRleCAzMTBkMWNiMTRmLi43MDk3MTIyZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3FtdXRleC5jcHAKK0BAIC0xNTIsNiArMTUyLDcgQEAgcHVibGljOgorIAorIC8qIQorICAg ICBcZW51bSBRTXV0ZXg6OlJlY3Vyc2lvbk1vZGUKKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJz aXZlTXV0ZXggdG8gY3JlYXRlIGEgcmVjdXJzaXZlIG11dGV4LgorIAorICAgICBcdmFsdWUgUmVj dXJzaXZlICBJbiB0aGlzIG1vZGUsIGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4Cisg ICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29uJ3Qg YmUgdW5sb2NrZWQKK0BAIC0xNzMsNiArMTc0LDcgQEAgcHVibGljOgorIAorIC8qIQorICAgICBD b25zdHJ1Y3RzIGEgbmV3IG11dGV4LiBUaGUgbXV0ZXggaXMgY3JlYXRlZCBpbiBhbiB1bmxvY2tl ZCBzdGF0ZS4KKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXggdG8gY3JlYXRlIGEg cmVjdXJzaXZlIG11dGV4LgorIAorICAgICBJZiBcYSBtb2RlIGlzIFFNdXRleDo6UmVjdXJzaXZl LCBhIHRocmVhZCBjYW4gbG9jayB0aGUgc2FtZSBtdXRleAorICAgICBtdWx0aXBsZSB0aW1lcyBh bmQgdGhlIG11dGV4IHdvbid0IGJlIHVubG9ja2VkIHVudGlsIGEKK0BAIC0xOTcsNyArMTk5LDcg QEAgUU11dGV4OjpRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKQorIFFNdXRleDo6flFNdXRleCgp CisgeworICAgICBRTXV0ZXhEYXRhICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKy0gICAgaWYg KGlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYgKFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpKSB7 CisgICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8UVJlY3Vyc2l2ZU11dGV4UHJpdmF0ZSAqPihk KTsKKyAgICAgfSBlbHNlIGlmIChkKSB7CisgI2lmbmRlZiBRVF9MSU5VWF9GVVRFWAorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmggYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdGhyZWFkL3FtdXRleC5oCitpbmRleCA3M2M5ZTAwNjYzLi4xYmFlNTczYTAzIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAorQEAgLTQyLDYgKzQyLDcgQEAKKyAKKyAjaW5j bHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FhdG9taWMuaD4KKysj aW5jbHVkZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAjaW5jbHVkZSA8bmV3PgorIAorICNpZiBf X2hhc19pbmNsdWRlKDxjaHJvbm8+KQorQEAgLTc3LDE5ICs3OCwzNyBAQCBwdWJsaWM6CisgCisg ICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxpbmUgdm9pZCBsb2NrKCkgUVRf TVVURVhfTE9DS19OT0VYQ0VQVCB7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0aGlz LCAwdSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlMb2NrKCkpCisgICAgICAgICAgICAgbG9j a0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywgMHUs IDApOworICAgICB9CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxp bmUgdm9pZCB1bmxvY2soKSBub2V4Y2VwdCB7CisgICAgICAgICBRX0FTU0VSVChkX3B0ci5sb2Fk UmVsYXhlZCgpKTsgLy9tdXRleCBtdXN0IGJlIGxvY2tlZAorKworKyAgICAgICAgUXRUc2FuOjpt dXRleFByZVVubG9jayh0aGlzLCAwdSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlVbmxvY2so KSkKKyAgICAgICAgICAgICB1bmxvY2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjpt dXRleFBvc3RVbmxvY2sodGhpcywgMHUpOworICAgICB9CisgCisgICAgIGJvb2wgdHJ5TG9jaygp IG5vZXhjZXB0IHsKKy0gICAgICAgIHJldHVybiBmYXN0VHJ5TG9jaygpOworKyAgICAgICAgdW5z aWduZWQgdHNhbkZsYWdzID0gUXRUc2FuOjpUcnlMb2NrOworKyAgICAgICAgUXRUc2FuOjptdXRl eFByZUxvY2sodGhpcywgdHNhbkZsYWdzKTsKKysKKysgICAgICAgIGNvbnN0IGJvb2wgc3VjY2Vz cyA9IGZhc3RUcnlMb2NrKCk7CisrCisrICAgICAgICBpZiAoIXN1Y2Nlc3MpCisrICAgICAgICAg ICAgdHNhbkZsYWdzIHw9IFF0VHNhbjo6VHJ5TG9ja0ZhaWxlZDsKKysgICAgICAgIFF0VHNhbjo6 bXV0ZXhQb3N0TG9jayh0aGlzLCB0c2FuRmxhZ3MsIDApOworKworKyAgICAgICAgcmV0dXJuIHN1 Y2Nlc3M7CisgICAgIH0KKyAKKyAgICAgLy8gTG9ja2FibGUgY29uY2VwdAorQEAgLTEzNCw4ICsx NTMsMTYgQEAgcHVibGljOgorICNlbHNlCisgICAgIFFNdXRleCgpIHsgZF9wdHIuc3RvcmVSZWxh eGVkKG51bGxwdHIpOyB9CisgI2VuZGlmCisrI2lmIFFUX0RFUFJFQ0FURURfU0lOQ0UoNSwxNSkK KyAgICAgZW51bSBSZWN1cnNpb25Nb2RlIHsgTm9uUmVjdXJzaXZlLCBSZWN1cnNpdmUgfTsKKysg ICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4IGlu c3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKyAgICAgZXhwbGljaXQgUU11dGV4KFJlY3Vy c2lvbk1vZGUgbW9kZSk7CisrCisrICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAi VXNlIFFSZWN1cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisrICAg IGJvb2wgaXNSZWN1cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorKyAgICB7IHJldHVybiBRQmFzaWNN dXRleDo6aXNSZWN1cnNpdmUoKTsgfQorKyNlbmRpZgorKworICAgICB+UU11dGV4KCk7CisgCisg ICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorQEAgLTE2Niw5ICsxOTMsNiBAQCBwdWJsaWM6 CisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5vZXhj ZXB0CistICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CistCisgcHJp dmF0ZToKKyAgICAgUV9ESVNBQkxFX0NPUFkoUU11dGV4KQorICAgICBmcmllbmQgY2xhc3MgUU11 dGV4TG9ja2VyOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3 cml0ZWxvY2suY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5j cHAKK2luZGV4IDhjMjg1MDdkNWEuLjlkZDg1MDMxMTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKK0BAIC0xNTUsNyArMTU1LDcgQEAgUVJlYWRX cml0ZUxvY2s6OlFSZWFkV3JpdGVMb2NrKFJlY3Vyc2lvbk1vZGUgcmVjdXJzaW9uTW9kZSkKKyAq LworIFFSZWFkV3JpdGVMb2NrOjp+UVJlYWRXcml0ZUxvY2soKQorIHsKKy0gICAgYXV0byBkID0g ZF9wdHIubG9hZFJlbGF4ZWQoKTsKKysgICAgYXV0byBkID0gZF9wdHIubG9hZEFjcXVpcmUoKTsK KyAgICAgaWYgKGlzVW5jb250ZW5kZWRMb2NrZWQoZCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJR UmVhZFdyaXRlTG9jazogZGVzdHJveWluZyBsb2NrZWQgUVJlYWRXcml0ZUxvY2siKTsKKyAgICAg ICAgIHJldHVybjsKK0BAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBRUmVhZFdyaXRlTG9jazo6dW5s b2NrKCkKKyAvKiEgXGludGVybmFsICBIZWxwZXIgZm9yIFFXYWl0Q29uZGl0aW9uOjp3YWl0ICov CisgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlvbiBRUmVhZFdyaXRlTG9jazo6 c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY29uc3QKKyB7CistICAgIFFSZWFkV3JpdGVMb2NrUHJp dmF0ZSAqZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIFFSZWFkV3JpdGVMb2NrUHJpdmF0 ZSAqZCA9IGRfcHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIHN3aXRjaCAocXVpbnRwdHIoZCkgJiBT dGF0ZU1hc2spIHsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvclJlYWQ6IHJldHVybiBMb2NrZWRG b3JSZWFkOworICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yV3JpdGU6IHJldHVybiBMb2NrZWRGb3JX cml0ZTsKK0BAIC00NTMsNiArNDUzLDcgQEAgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENv bmRpdGlvbiBRUmVhZFdyaXRlTG9jazo6c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY28KKyAKKyAg ICAgaWYgKCFkKQorICAgICAgICAgcmV0dXJuIFVubG9ja2VkOworKyAgICBjb25zdCBhdXRvIGxv Y2sgPSBxdF9zY29wZWRfbG9jayhkLT5tdXRleCk7CisgICAgIGlmIChkLT53cml0ZXJDb3VudCA+ IDEpCisgICAgICAgICByZXR1cm4gUmVjdXJzaXZlbHlMb2NrZWQ7CisgICAgIGVsc2UgaWYgKGQt PndyaXRlckNvdW50ID09IDEpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVh ZC9xc2VtYXBob3JlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5j cHAKK2luZGV4IDFkMDFmYzFiMjguLjNlY2RlZTM3NDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FzZW1hcGhvcmUuY3BwCitAQCAtMzU0LDcgKzM1NCwxMiBAQCB2b2lkIFFTZW1hcGhv cmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICBxdWludHB0ciBubiA9IHVuc2lnbmVkKG4pOwor ICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpCisgICAgICAgICAgICAgbm4gfD0gcXVp bnQ2NChubikgPDwgMzI7ICAgIC8vIHRva2VuIGNvdW50IHJlcGxpY2F0ZWQgaW4gaGlnaCB3b3Jk CistICAgICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmZldGNoQW5kQWRkUmVsZWFzZShubik7 CisrICAgICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmxvYWRSZWxheGVkKCk7CisrICAgICAg ICBxdWludHB0ciBuZXdWYWx1ZTsKKysgICAgICAgIGRvIHsgLy8gbG9vcCBqdXN0IHRvIGVuc3Vy ZSB0aGUgb3BlcmF0aW9ucyBhcmUgZG9uZSBhdG9taWNhbGx5CisrICAgICAgICAgICAgbmV3VmFs dWUgPSBwcmV2VmFsdWUgKyBubjsKKysgICAgICAgICAgICBuZXdWYWx1ZSAmPSAoZnV0ZXhOZWVk c1dha2VBbGxCaXQgLSAxKTsKKysgICAgICAgIH0gd2hpbGUgKCF1LnRlc3RBbmRTZXRSZWxlYXNl KHByZXZWYWx1ZSwgbmV3VmFsdWUsIHByZXZWYWx1ZSkpOworICAgICAgICAgaWYgKGZ1dGV4TmVl ZHNXYWtlKHByZXZWYWx1ZSkpIHsKKyAjaWZkZWYgRlVURVhfT1AKKyAgICAgICAgICAgICBpZiAo ZnV0ZXhIYXNXYWl0ZXJDb3VudCkgeworQEAgLTM3Niw3ICszODEsNiBAQCB2b2lkIFFTZW1hcGhv cmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICAgICAgICAgIHF1aW50MzIgb3BhcmcgPSAwOwor ICAgICAgICAgICAgICAgICBxdWludDMyIGNtcCA9IEZVVEVYX09QX0NNUF9ORTsKKyAgICAgICAg ICAgICAgICAgcXVpbnQzMiBjbXBhcmcgPSAwOworLSAgICAgICAgICAgICAgICB1LmZldGNoQW5k QW5kUmVsZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAgICAgICAgICAgICAgICBm dXRleFdha2VPcCgqZnV0ZXhMb3czMigmdSksIG4sIElOVF9NQVgsICpmdXRleEhpZ2gzMigmdSks IEZVVEVYX09QKG9wLCBvcGFyZywgY21wLCBjbXBhcmcpKTsKKyAgICAgICAgICAgICAgICAgcmV0 dXJuOworICAgICAgICAgICAgIH0KK0BAIC0zODgsNyArMzkyLDYgQEAgdm9pZCBRU2VtYXBob3Jl OjpyZWxlYXNlKGludCBuKQorICAgICAgICAgICAgIC8vICAgIGl0cyBhY3F1aXNpdGlvbiBhbnl3 YXksIHNvIGl0IGhhcyB0byB3YWl0OworICAgICAgICAgICAgIC8vIDIpIGl0IGRpZCBub3Qgc2Vl IHRoZSBuZXcgY291bnRlciB2YWx1ZSwgaW4gd2hpY2ggY2FzZSBpdHMKKyAgICAgICAgICAgICAv LyAgICBmdXRleFdhaXQgd2lsbCBmYWlsLgorLSAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRSZWxl YXNlKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgaWYgKGZ1dGV4SGFz V2FpdGVyQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleExvdzMy KCZ1KSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZUFsbCgqZnV0ZXhIaWdoMzIoJnUpKTsK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAoraW5kZXggYjJkMTYyOGU2ZS4uZjMy ZjZmMDQ2MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9w LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK0BAIC0xNzQs NyArMTc0LDcgQEAgcHVibGljOgorICAgICBpbnQgcmV0dXJuQ29kZTsKKyAKKyAgICAgdWludCBz dGFja1NpemU7CistICAgIFFUaHJlYWQ6OlByaW9yaXR5IHByaW9yaXR5OworKyAgICBzdGQ6OnVu ZGVybHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGUgcHJpb3JpdHk7CisgCisgICAg IHN0YXRpYyBRVGhyZWFkICp0aHJlYWRGb3JJZChpbnQgaWQpOworIAorQEAgLTIxMyw2ICsyMTMs MTMgQEAgcHVibGljOgorICAgICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCkt PnBvc3RFdmVudChxX3B0ciwgbmV3IFFFdmVudChRRXZlbnQ6OlF1aXQpKTsKKyAgICAgICAgIH0K KyAgICAgfQorKworKyNpZm5kZWYgUV9PU19JTlRFR1JJVFkKKytwcml2YXRlOgorKyAgICAvLyBV c2VkIGluIFFUaHJlYWQoUHJpdmF0ZSk6OnN0YXJ0IHRvIGF2b2lkIHJhY3kgYWNjZXNzIHRvIFFP YmplY3Q6Om9iamVjdE5hbWUsCisrICAgIC8vIHVuc2V0IGFmdGVyd2FyZHMuIE9uIElOVEVHUklU WSB3ZSBzZXQgdGhlIHRocmVhZCBuYW1lIGJlZm9yZSBzdGFydGluZyBpdC4KKysgICAgUVN0cmlu ZyBvYmplY3ROYW1lOworKyNlbmRpZgorIH07CisgCisgI2Vsc2UgLy8gUVRfQ09ORklHKHRocmVh ZCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK2luZGV4IDU2 YThlMGEwMzguLjYxMDExN2E2NDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3F0aHJlYWRfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRo cmVhZF91bml4LmNwcAorQEAgLTE2OSw4ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBzZXRfdGhyZWFk X2RhdGEoUVRocmVhZERhdGEgKmRhdGEpCisgCisgc3RhdGljIHZvaWQgY2xlYXJfdGhyZWFkX2Rh dGEoKQorIHsKKy0gICAgY3VycmVudFRocmVhZERhdGEgPSBudWxscHRyOworLSAgICBwdGhyZWFk X3NldHNwZWNpZmljKGN1cnJlbnRfdGhyZWFkX2RhdGFfa2V5LCBudWxscHRyKTsKKysgICAgc2V0 X3RocmVhZF9kYXRhKG51bGxwdHIpOworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0BA IC0yOTYsNyArMjk1LDcgQEAgdm9pZCAqUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFyZykK KyAgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZ0aHItPmRfZnVuYygpLT5tdXRleCk7 CisgCisgICAgICAgICAgICAgLy8gZG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGhyZWFkIHByaW9y aXR5PworLSAgICAgICAgICAgIGlmIChpbnQodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkpICYgVGhy ZWFkUHJpb3JpdHlSZXNldEZsYWcpIHsKKysgICAgICAgICAgICBpZiAodGhyLT5kX2Z1bmMoKS0+ cHJpb3JpdHkgJiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykgeworICAgICAgICAgICAgICAgICB0 aHItPmRfZnVuYygpLT5zZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0eSh0aHItPmRfZnVuYygp LT5wcmlvcml0eSAmIH5UaHJlYWRQcmlvcml0eVJlc2V0RmxhZykpOworICAgICAgICAgICAgIH0K KyAKK0BAIC0zMTYsMTAgKzMxNSwxMCBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9p ZCAqYXJnKQorICAgICAgICAgICAgIC8vIFNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGhy ZWFkLiBXZSBjYW4gb25seSBkbyB0aGlzCisgICAgICAgICAgICAgLy8gd2hlbiB0aGUgdGhyZWFk IGlzIHN0YXJ0aW5nLCBhcyB3ZSBkb24ndCBoYXZlIGEgY3Jvc3MKKyAgICAgICAgICAgICAvLyBw bGF0Zm9ybSB3YXkgb2Ygc2V0dGluZyB0aGUgbmFtZSBvZiBhbiBhcmJpdHJhcnkgdGhyZWFkLgor LSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh0aHItPm9iamVjdE5hbWUoKS5pc0VtcHR5KCkpKQor KyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1w dHkoKSkpCisgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+bWV0YU9i amVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAg ICBzZXRDdXJyZW50VGhyZWFkTmFtZSh0aHItPm9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsK KysgICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUoc3RkOjpleGNoYW5nZSh0aHIt PmRfZnVuYygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQoKSk7CisgICAgICAgICB9Cisg I2VuZGlmCisgCitAQCAtNjcxLDcgKzY3MCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3Jp dHkgcHJpb3JpdHkpCisgICAgICAgICAgICAgICAgIC8vIGNvdWxkIG5vdCBzZXQgc2NoZWR1bGlu ZyBoaW50cywgZmFsbGJhY2sgdG8gaW5oZXJpdGluZyB0aGVtCisgICAgICAgICAgICAgICAgIC8v IHdlJ2xsIHRyeSBhZ2FpbiBmcm9tIGluc2lkZSB0aGUgdGhyZWFkCisgICAgICAgICAgICAgICAg IHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQoJmF0dHIsIFBUSFJFQURfSU5IRVJJVF9TQ0hF RCk7CistICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gUHJpb3JpdHkocHJpb3JpdHkgfCBU aHJlYWRQcmlvcml0eVJlc2V0RmxhZyk7CisrICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0g c3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0eXBl Pihwcmlvcml0eSkgfCBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZzsKKyAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNzAyLDcgKzcwMSwxMCBAQCB2b2lk IFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAgICAgcHRocmVhZF9hdHRy X3NldHRocmVhZG5hbWUoJmF0dHIsIG1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICBl bHNlCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgb2JqZWN0TmFt ZSgpLnRvTG9jYWw4Qml0KCkpOworKyNlbHNlCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmplY3RO YW1lKCk7CisgI2VuZGlmCisrCisgICAgIHB0aHJlYWRfdCB0aHJlYWRJZDsKKyAgICAgaW50IGNv ZGUgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSWQsICZhdHRyLCBRVGhyZWFkUHJpdmF0ZTo6c3Rh cnQsIHRoaXMpOworICAgICBpZiAoY29kZSA9PSBFUEVSTSkgeworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGli L3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK2luZGV4IGJjNzBlMzE3OGEuLjRlNzY5NzI0OTggMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAorKysr IGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK0BAIC0zOTQsMTAg KzM5NCw5IEBAIHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgUVRfRU5TVVJFX1NUQUNLX0FMSUdORURf Rk9SX1NTRSBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pCisgCisgI2lmICFkZWZpbmVkKFFUX05P X0RFQlVHKSAmJiBkZWZpbmVkKFFfQ0NfTVNWQykgJiYgIWRlZmluZWQoUV9PU19XSU5SVCkKKyAg ICAgLy8gc2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCistICAgIFFCeXRlQXJy YXkgb2JqZWN0TmFtZSA9IHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCk7CistICAgIHF0 X3NldF90aHJlYWRfbmFtZShIQU5ETEUoLTEpLAorLSAgICAgICAgICAgICAgICAgICAgICAgb2Jq ZWN0TmFtZS5pc0VtcHR5KCkgPworLSAgICAgICAgICAgICAgICAgICAgICAgdGhyLT5tZXRhT2Jq ZWN0KCktPmNsYXNzTmFtZSgpIDogb2JqZWN0TmFtZS5jb25zdERhdGEoKSk7CisrICAgIHF0X3Nl dF90aHJlYWRfbmFtZShIQU5ETEUoLTEpLCB0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlzRW1w dHkoKQorKyAgICAgICAgICAgICAgICAgICAgICAgID8gdGhyLT5tZXRhT2JqZWN0KCktPmNsYXNz TmFtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGQ6OmV4Y2hhbmdlKHRoci0+ZF9m dW5jKCktPm9iamVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpKTsKKyAjZW5k aWYKKyAKKyAgICAgZW1pdCB0aHItPnN0YXJ0ZWQoUVRocmVhZDo6UVByaXZhdGVTaWduYWwoKSk7 CitAQCAtNTAzLDYgKzUwMiw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3Jp dHkpCisgICAgIGlmIChkLT5ydW5uaW5nKQorICAgICAgICAgcmV0dXJuOworIAorKyAgICBkLT5v YmplY3ROYW1lID0gb2JqZWN0TmFtZSgpOworICAgICBkLT5ydW5uaW5nID0gdHJ1ZTsKKyAgICAg ZC0+ZmluaXNoZWQgPSBmYWxzZTsKKyAgICAgZC0+ZXhpdGVkID0gZmFsc2U7CitAQCAtNTQ4LDcg KzU0OCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgCisgICAg IGludCBwcmlvOworICAgICBkLT5wcmlvcml0eSA9IHByaW9yaXR5OworLSAgICBzd2l0Y2ggKGQt PnByaW9yaXR5KSB7CisrICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKyAgICAgY2FzZSBJZGxlUHJp b3JpdHk6CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAgICBi cmVhazsKK0BAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBRVGhyZWFkUHJpdmF0ZTo6c2V0UHJpb3Jp dHkoUVRocmVhZDo6UHJpb3JpdHkgdGhyZWFkUHJpb3JpdHkpCisgCisgICAgIGludCBwcmlvOwor ICAgICBwcmlvcml0eSA9IHRocmVhZFByaW9yaXR5OworLSAgICBzd2l0Y2ggKHByaW9yaXR5KSB7 CisrICAgIHN3aXRjaCAodGhyZWFkUHJpb3JpdHkpIHsKKyAgICAgY2FzZSBRVGhyZWFkOjpJZGxl UHJpb3JpdHk6CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAg ICBicmVhazsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2lt cGwuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNTgwYTczOGI5MQorLS0tIC9kZXYvbnVsbAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK0BAIC0wLDAgKzEs MTE1IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAx NyBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgS2xhcsOkbHZkYWxl bnMgRGF0YWtvbnN1bHQgQUIsIGEgS0RBQiBHcm91cCBjb21wYW55LCBpbmZvQGtkYWIuY29tLCBh dXRob3IgR2l1c2VwcGUgRCdBbmdlbG8gPGdpdXNlcHBlLmRhbmdlbG9Aa2RhYi5jb20+CisrKiog Q29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysq KiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQor KyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVz ZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5z ZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRp dmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdy aXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vu c2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJt cy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFj dCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlz IGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiog R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VO U0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxl YXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cwor KyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0 bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVy bmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0 aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55 IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlv bi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysq KiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBM SUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4g UGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1l dDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5E X0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUVRTQU5f SU1QTF9ICisrI2RlZmluZSBRVFNBTl9JTVBMX0gKKysKKysjaW5jbHVkZSA8UXRDb3JlL3FnbG9i YWwuaD4KKysKKysjaWYgKF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikgfHwgZGVmaW5l ZChfX1NBTklUSVpFX1RIUkVBRF9fKSkgJiYgX19oYXNfaW5jbHVkZSg8c2FuaXRpemVyL3RzYW5f aW50ZXJmYWNlLmg+KQorKyMgIGRlZmluZSBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrIyAgaW5j bHVkZSA8c2FuaXRpemVyL3RzYW5faW50ZXJmYWNlLmg+CisrI2VuZGlmCisrCisrUVRfQkVHSU5f TkFNRVNQQUNFCisrCisrbmFtZXNwYWNlIFF0VHNhbiB7CisrI2lmZGVmIFFUX0JVSUxESU5HX1VO REVSX1RTQU4KKytpbmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9pZCAqYWRkciwgdm9pZCAqYWRk cjIgPSBudWxscHRyKQorK3sKKysgICAgLy8gQSBmdXRleCBjYWxsIGVuc3VyZXMgdG90YWwgb3Jk ZXJpbmcgb24gdGhlIGZ1dGV4IHdvcmRzCisrICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBvciBm YWlsdXJlIG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKysgICAgLy8g YXMgVFNBTiBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsIChvciBlcXVp dmFsZW50KS4KKysgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyKTsKKysgICAgaWYgKGFkZHIyKQor KyAgICAgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyMik7CisrfQorKworK2lubGluZSB2b2lkIGZ1 dGV4UmVsZWFzZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAgICBp ZiAoYWRkcjIpCisrICAgICAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIyKTsKKysgICAgOjpfX3Rz YW5fcmVsZWFzZShhZGRyKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQg KmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX2xvY2so YWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQgKmFk ZHIsIHVuc2lnbmVkIGZsYWdzLCBpbnQgcmVjdXJzaW9uKQorK3sKKysgICAgOjpfX3RzYW5fbXV0 ZXhfcG9zdF9sb2NrKGFkZHIsIGZsYWdzLCByZWN1cnNpb24pOworK30KKysKKytpbmxpbmUgdm9p ZCBtdXRleFByZVVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6 X190c2FuX211dGV4X3ByZV91bmxvY2soYWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9p ZCBtdXRleFBvc3RVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAgICA6 Ol9fdHNhbl9tdXRleF9wb3N0X3VubG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2VudW0gOiB1 bnNpZ25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQgPSA6Ol9fdHNhbl9tdXRleF93cml0 ZV9yZWVudHJhbnQsCisrICAgIFRyeUxvY2sgPSA6Ol9fdHNhbl9tdXRleF90cnlfbG9jaywKKysg ICAgVHJ5TG9ja0ZhaWxlZCA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrX2ZhaWxlZCwKKyt9Owor KyNlbHNlCisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZvaWQgKiwgdm9pZCAqID0gbnVsbHB0 cikge30KKytpbmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqLCB2b2lkICogPSBudWxscHRy KSB7fQorKworK2VudW0gOiB1bnNpZ25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQsCisr ICAgIFRyeUxvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQsCisrfTsKKytpbmxpbmUgdm9pZCBtdXRl eFByZUxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2Nr KHZvaWQgKiwgdW5zaWduZWQsIGludCkge30KKytpbmxpbmUgdm9pZCBtdXRleFByZVVubG9jayh2 b2lkICosIHVuc2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lkICos IHVuc2lnbmVkKSB7fQorKyNlbmRpZiAvLyBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrfSAvLyBu YW1lc3BhY2UgUXRUc2FuCisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZiAvLyBRVFNB Tl9JTVBMX0gKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29u ZGl0aW9uX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRpdGlv bl91bml4LmNwcAoraW5kZXggODhiMDU4ZjQxMC4uMGYxZGE0ZGM5YiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK0BAIC0yMTMs NyArMjEzLDcgQEAgYm9vbCBRV2FpdENvbmRpdGlvbjo6d2FpdChRTXV0ZXggKm11dGV4LCBRRGVh ZGxpbmVUaW1lciBkZWFkbGluZSkKKyB7CisgICAgIGlmICghIG11dGV4KQorICAgICAgICAgcmV0 dXJuIGZhbHNlOworLSAgICBpZiAobXV0ZXgtPmlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYgKHN0 YXRpY19jYXN0PFFCYXNpY011dGV4ICo+KG11dGV4KS0+aXNSZWN1cnNpdmUoKSkgeworICAgICAg ICAgcVdhcm5pbmcoIlFXYWl0Q29uZGl0aW9uOiBjYW5ub3Qgd2FpdCBvbiByZWN1cnNpdmUgbXV0 ZXhlcyIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aW1lL3FkYXRldGltZS5jcHAKK2luZGV4IGVjMTI1NjllM2YuLjJjMGIwOTgwNzkgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNpZiBR VF9DT05GSUcoZGF0ZXRpbWVwYXJzZXIpCisgI2luY2x1ZGUgInByaXZhdGUvcWRhdGV0aW1lcGFy c2VyX3AuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cHJpdmF0ZS9xbnVtZXJpY19wLmg+CisgCisg I2luY2x1ZGUgInFkYXRhc3RyZWFtLmgiCisgI2luY2x1ZGUgInFzZXQuaCIKK0BAIC0xNDI5LDkg KzE0MzAsMTEgQEAgUURhdGUgUURhdGU6OmFkZERheXMocWludDY0IG5kYXlzKSBjb25zdAorICAg ICBpZiAoaXNOdWxsKCkpCisgICAgICAgICByZXR1cm4gUURhdGUoKTsKKyAKKy0gICAgLy8gRHVl IHRvIGxpbWl0cyBvbiBtaW5KZCgpIGFuZCBtYXhKZCgpIHdlIGtub3cgdGhhdCBhbnkgb3ZlcmZs b3cKKy0gICAgLy8gd2lsbCBiZSBpbnZhbGlkIGFuZCBjYXVnaHQgYnkgZnJvbUp1bGlhbkRheSgp LgorLSAgICByZXR1cm4gZnJvbUp1bGlhbkRheShqZCArIG5kYXlzKTsKKysgICAgcWludDY0IHI7 CisrICAgIGlmIChRX1VOTElLRUxZKGFkZF9vdmVyZmxvdyhqZCwgbmRheXMsICZyKSkpCisrICAg ICAgICByZXR1cm4gUURhdGUoKTsKKysgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIGZyb21KdWxp YW5EYXkocik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90 aW1lL3F0aW1lem9uZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3Bw CitpbmRleCAwMzA5ZTQzZTUyLi4zZDQ1MTY5NmExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUv cXRpbWV6b25lLmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq KgorLSoqIENvcHlyaWdodCAoQykgMjAxMyBKb2huIExheXQgPGpsYXl0QGtkZS5vcmc+CisrKiog Q29weXJpZ2h0IChDKSAyMDIwIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKyAqKiBDb250YWN0 OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC05NzUsOSArOTc1 LDE1IEBAIFFMaXN0PFFCeXRlQXJyYXk+IFFUaW1lWm9uZTo6d2luZG93c0lkVG9JYW5hSWRzKGNv bnN0IFFCeXRlQXJyYXkgJndpbmRvd3NJZCwKKyB9CisgCisgI2lmbmRlZiBRVF9OT19EQVRBU1RS RUFNCisrLy8gSW52YWxpZCwgYXMgYW4gSUFOQSBJRDogdG9vIGxvbmcsIHN0YXJ0cyB3aXRoIC0g YW5kIGhhcyBvdGhlciBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gaXQKKytzdGF0aWMgaW5saW5lIFFT dHJpbmcgaW52YWxpZElkKCkgeyByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIi1ObyBUaW1lIFpvbmUg U3BlY2lmaWVkISIpOyB9CisrCisgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0g JmRzLCBjb25zdCBRVGltZVpvbmUgJnR6KQorIHsKKy0gICAgdHouZC0+c2VyaWFsaXplKGRzKTsK KysgICAgaWYgKHR6LmlzVmFsaWQoKSkKKysgICAgICAgIHR6LmQtPnNlcmlhbGl6ZShkcyk7Cisr ICAgIGVsc2UKKysgICAgICAgIGRzIDw8IGludmFsaWRJZCgpOworICAgICByZXR1cm4gZHM7Cisg fQorIAorQEAgLTk4NSw3ICs5OTEsOSBAQCBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0YVN0 cmVhbSAmZHMsIFFUaW1lWm9uZSAmdHopCisgeworICAgICBRU3RyaW5nIGlhbmFJZDsKKyAgICAg ZHMgPj4gaWFuYUlkOworLSAgICBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNldEZy b21VdGMiKSkgeworKyAgICBpZiAoaWFuYUlkID09IGludmFsaWRJZCgpKSB7CisrICAgICAgICB0 eiA9IFFUaW1lWm9uZSgpOworKyAgICB9IGVsc2UgaWYgKGlhbmFJZCA9PSBRTGF0aW4xU3RyaW5n KCJPZmZzZXRGcm9tVXRjIikpIHsKKyAgICAgICAgIGludCB1dGNPZmZzZXQ7CisgICAgICAgICBR U3RyaW5nIG5hbWU7CisgICAgICAgICBRU3RyaW5nIGFiYnJldmlhdGlvbjsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCitpbmRleCBiMTYxMWQ3 ZGRiLi5hN2E2YTcyY2NmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRp bWV6b25lcHJpdmF0ZV90ei5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1l em9uZXByaXZhdGVfdHouY3BwCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlICJxdGltZXpv bmUuaCIKKyAjaW5jbHVkZSAicXRpbWV6b25lcHJpdmF0ZV9wLmgiCisgI2luY2x1ZGUgInByaXZh dGUvcWxvY2FsZV90b29sc19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWxvY2tpbmdfcC5oIgor IAorICNpbmNsdWRlIDxRdENvcmUvUURhdGFTdHJlYW0+CisgI2luY2x1ZGUgPFF0Q29yZS9RRGF0 ZVRpbWU+CitAQCAtNjIsNiArNjMsMTAgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKysj aWYgUVRfQ09ORklHKGljdSkKKytzdGF0aWMgUUJhc2ljTXV0ZXggc19pY3VfbXV0ZXg7CisrI2Vu ZGlmCisrCisgLyoKKyAgICAgUHJpdmF0ZQorIAorQEAgLTY3MCw2ICs2NzUsOSBAQCBRVHpUaW1l Wm9uZVByaXZhdGU6On5RVHpUaW1lWm9uZVByaXZhdGUoKQorIAorIFFUelRpbWVab25lUHJpdmF0 ZSAqUVR6VGltZVpvbmVQcml2YXRlOjpjbG9uZSgpIGNvbnN0CisgeworKyNpZiBRVF9DT05GSUco aWN1KQorKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhzX2ljdV9tdXRleCk7 CisrI2VuZGlmCisgICAgIHJldHVybiBuZXcgUVR6VGltZVpvbmVQcml2YXRlKCp0aGlzKTsKKyB9 CisgCitAQCAtOTEzLDEyICs5MjEsMTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZhdGU6OmRp c3BsYXlOYW1lKHFpbnQ2NCBhdE1TZWNzU2luY2VFcG9jaCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsKKyAj aWYgUVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19pY3Vf bXV0ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRpbWVa b25lUHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0Y2gg aWYgdHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRPRE8g U29tZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5zbGF0 aW9uIHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVybiBt X2ljdS0+ZGlzcGxheU5hbWUoYXRNU2Vjc1NpbmNlRXBvY2gsIG5hbWVUeXBlLCBsb2NhbGUpOwor KyAgICBsb2NrLnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorICAg ICBRX1VOVVNFRChsb2NhbGUpCitAQCAtOTMyLDEyICs5NDIsMTQgQEAgUVN0cmluZyBRVHpUaW1l Wm9uZVByaXZhdGU6OmRpc3BsYXlOYW1lKFFUaW1lWm9uZTo6VGltZVR5cGUgdGltZVR5cGUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUgJmxv Y2FsZSkgY29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9IHF0 X3VuaXF1ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAgIG1f aWN1ID0gbmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21hbGwg cmlzayBtYXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRlZCBm aWxlcworICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJQ1Ug bmFtZXMsIHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlkKCkp CisgICAgICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKHRpbWVUeXBlLCBuYW1lVHlwZSwg bG9jYWxlKTsKKysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VOVVNFRCh0aW1l VHlwZSkKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJy YXlkYXRhLmgKK2luZGV4IGRjZDk1OTI0YzEuLmQwMTczOWU3ZTYgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdG9vbHMvcWFycmF5ZGF0YS5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRlIDxR dENvcmUvcXJlZmNvdW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxjc3Rk aW50PgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTU4LDE0ICs1OSwxNCBAQCBzdHJ1 Y3QgUV9DT1JFX0VYUE9SVCBRQXJyYXlEYXRhCisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNp emUgPT0gMAorICAgICAgICAgICAgICAgICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQp ID49IHNpemVvZihRQXJyYXlEYXRhKSk7CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz dDxjaGFyICo+KHRoaXMpICsgb2Zmc2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh c3Q8dm9pZCAqPiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsK KyAgICAgfQorIAorICAgICBjb25zdCB2b2lkICpkYXRhKCkgY29uc3QKKyAgICAgeworICAgICAg ICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAgfHwg c2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVybiBy ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAgICAgICBy ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVpbnRwdHJf dD4odGhpcykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIC8vIFRoaXMgcmVmZXJzIHRvIGFy cmF5IGRhdGEgbXV0YWJpbGl0eSwgbm90ICJoZWFkZXIgZGF0YSIgcmVwcmVzZW50ZWQgYnkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaCBiL3F0YmFz ZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitpbmRleCA1YmEyM2IzNDRiLi45OTc0 MTAyMTM2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlzdF9w LmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitAQCAtMTYx LDcgKzE2MSw3IEBAIGNsYXNzIFFGcmVlTGlzdAorICAgICAgICAgICAgICAgICByZXR1cm4gaTsK KyAgICAgICAgICAgICB4IC09IHNpemU7CisgICAgICAgICB9CistICAgICAgICBRX0FTU0VSVChm YWxzZSk7CisrICAgICAgICBRX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICByZXR1cm4gLTE7Cisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25u dW1iZXIuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCitpbmRl eCBkNDNiODZiYTUxLi4yODQzZjJiMDQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGli L3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9x dmVyc2lvbm51bWJlci5oCitAQCAtMjczLDEwICsyNzMsMTAgQEAgcHVibGljOgorIAorICAgICBR X1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIFFTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK KyAjaWYgUVRfU1RSSU5HVklFV19MRVZFTCA8IDIKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9D T1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJv bVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRy KTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25O dW1iZXIgZnJvbVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXgg PSBudWxscHRyKTsKKyAjZW5kaWYKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9S VCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhR TGF0aW4xU3RyaW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworLSAgICBR X1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5DVElP TiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZm aXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JU IHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5nLCBp bnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09S RV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcgc3Ry aW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgCisgcHJpdmF0ZToKKyAjaWZuZGVm IFFUX05PX0RBVEFTVFJFQU0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRl Z3JhdG9yLmNwcCBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitpbmRleCA1 YjY2Y2U5NzFiLi4yOGEzYjBmZmVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVz aW50ZWdyYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3Bw CitAQCAtMTEzNSw3ICsxMTM1LDEzIEBAIHZvaWQgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6Y2xv c2VDb25uZWN0aW9uKCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBxRGVsZXRlQWxsKHBl bmRpbmdDYWxscyk7CisrICAgIGZvciAoYXV0byBpdCA9IHBlbmRpbmdDYWxscy5iZWdpbigpOyBp dCAhPSBwZW5kaW5nQ2FsbHMuZW5kKCk7ICsraXQpIHsKKysgICAgICAgIGF1dG8gY2FsbCA9ICpp dDsKKysgICAgICAgIGlmICghY2FsbC0+cmVmLmRlcmVmKCkpIHsKKysgICAgICAgICAgICBkZWxl dGUgY2FsbDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBwZW5kaW5nQ2FsbHMuY2xlYXIoKTsK KyAKKyAgICAgLy8gRGlzY29ubmVjdCBhbGwgc2lnbmFscyBmcm9tIHNpZ25hbCBob29rcyBhbmQg ZnJvbSB0aGUgb2JqZWN0IHRyZWUgdG8KKyAgICAgLy8gYXZvaWQgUU9iamVjdDo6ZGVzdHJveWVk IGJlaW5nIHNlbnQgdG8gZGJ1cyBkYWVtb24gdGhyZWFkIHdoaWNoIGhhcworQEAgLTI1ODQsNiAr MjU5MCwxMSBAQCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpmaW5kTWV0YU9iamVjdChjb25zdCBR U3RyaW5nICZzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZwYQorICAgICAgICAgaWYgKG1vKQorICAg ICAgICAgICAgIHJldHVybiBtbzsKKyAgICAgfQorKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpIHsK KysgICAgICAgIGVycm9yID0gUURCdXNFcnJvcihRREJ1c0Vycm9yOjpJbnZhbGlkT2JqZWN0UGF0 aCwgUUxhdGluMVN0cmluZygiT2JqZWN0IHBhdGggY2Fubm90IGJlIGVtcHR5IikpOworKyAgICAg ICAgbGFzdEVycm9yID0gZXJyb3I7CisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKysgICAgfQor IAorICAgICAvLyBpbnRyb3NwZWN0IHRoZSB0YXJnZXQgb2JqZWN0CisgICAgIFFEQnVzTWVzc2Fn ZSBtc2cgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoc2VydmljZSwgcGF0aCwKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcCBiL3F0YmFzZS9z cmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitpbmRleCA1MjY1NTY4ZjQyLi43ZTlmMGYxYWNj IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKKysrKyBi L3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitAQCAtMjEwLDYgKzIxMCw5IEBA IFFEQnVzTWV0YU9iamVjdEdlbmVyYXRvcjo6ZmluZFR5cGUoY29uc3QgUUJ5dGVBcnJheSAmc2ln bmF0dXJlLAorICAgICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImF7c3N9IikgeworICAg ICAgICAgICAgIHJlc3VsdC5uYW1lID0gIlFNYXA8UVN0cmluZyxRU3RyaW5nPiI7CisgICAgICAg ICAgICAgdHlwZSA9IHFNZXRhVHlwZUlkPFFNYXA8UVN0cmluZywgUVN0cmluZz4gPigpOworKyAg ICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImFheSIpIHsKKysgICAgICAgICAgICByZXN1 bHQubmFtZSA9ICJRQnl0ZUFycmF5TGlzdCI7CisrICAgICAgICAgICAgdHlwZSA9IHFNZXRhVHlw ZUlkPFFCeXRlQXJyYXlMaXN0PigpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBy ZXN1bHQubmFtZSA9ICJ7RC1CdXMgdHlwZSBcIiIgKyBzaWduYXR1cmUgKyAiXCJ9IjsKKyAgICAg ICAgICAgICB0eXBlID0gcmVnaXN0ZXJDb21wbGV4REJ1c1R5cGUocmVzdWx0Lm5hbWUpOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwIGIvcXRi YXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKK2luZGV4IGQ3MDViZmNjYjUu LjBjYWYzYzgwOGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nl c3NpYmxlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5j cHAKK0BAIC01NCw2ICs1NCw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xZGVidWcuaD4KKyAjaW5j bHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRh b2JqZWN0Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FtZXRhb2JqZWN0X3AuaD4KKyAj aW5jbHVkZSA8UXRDb3JlL3FoYXNoLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcWZhY3Rvcnlsb2Fk ZXJfcC5oPgorIAorQEAgLTY4MSw2ICs2ODIsMjUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFB Y2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQorICAg ICAvLyBDcmVhdGUgYSBRQWNjZXNzaWJsZUludGVyZmFjZSBmb3IgdGhlIG9iamVjdCBjbGFzcy4g U3RhcnQgYnkgdGhlIG1vc3QKKyAgICAgLy8gZGVyaXZlZCBjbGFzcyBhbmQgd2FsayB1cCB0aGUg Y2xhc3MgaGllcmFyY2h5LgorICAgICBjb25zdCBRTWV0YU9iamVjdCAqbW8gPSBvYmplY3QtPm1l dGFPYmplY3QoKTsKKysgICAgY29uc3QgYXV0byAqb2JqZWN0UHJpdiA9IFFPYmplY3RQcml2YXRl OjpnZXQob2JqZWN0KTsKKysgICAgLyoKKysgICAgIFdlIGRvIG5vdCB3YW50IHRvIGNhY2hlIGVh Y2ggYW5kIGV2ZXJ5IFFNTCBtZXRhb2JqZWN0IChCdXR0b25fUU1MVFlQRV8xMjQsCisrICAgICBC dXR0b25fUU1MVFlQRV8xMjUsIGV0Yy4pLiBUaG9zZSBkeW5hbWljIG1ldGFvYmplY3RzIHNob3Vs ZG4ndCBoYXZlIGFuCisrICAgICBhY2Nlc3NpYmxlIGludGVyZmFjZSBpbiBhbnkgY2FzZS4gSW5z dGVhZCwgd2Ugc3RhcnQgdGhlIHdob2xlIGNoZWNraW5nCisrICAgICB3aXRoIHRoZSBmaXJzdCBu b24tZHluYW1pYyBtZXRhLW9iamVjdC4gVG8gYXZvaWQgcG90ZW50aWFsIHJlZ3Jlc3Npb25zCisr ICAgICBpbiBvdGhlciBhcmVhcyBvZiBRdCB0aGF0IGFsc28gdXNlIGR5bmFtaWMgbWV0YW9iamVj dHMsIHdlIG9ubHkgZG8gdGhpcworKyAgICAgZm9yIG9iamVjdHMgdGhhdCBhcmUgUU1MLXJlbGF0 ZWQgKGFwcHJveGltYXRlZCBieSBjaGVja2luZyB3aGV0aGVyIHRoZXkKKysgICAgIGhhdmUgZGRh dGEgc2V0KS4KKysgICAgKi8KKysgICAgY29uc3QgYm9vbCBxbWxSZWxhdGVkID0gIW9iamVjdFBy aXYtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBv YmplY3RQcml2LT5kZWNsYXJhdGl2ZURhdGE7CisrICAgIHdoaWxlIChxbWxSZWxhdGVkICYmIG1v KSB7CisrICAgICAgICBhdXRvIG1vcCA9IFFNZXRhT2JqZWN0UHJpdmF0ZTo6Z2V0KG1vKTsKKysg ICAgICAgIGlmICghbW9wIHx8ICEobW9wLT5mbGFncyAmIER5bmFtaWNNZXRhT2JqZWN0KSkKKysg ICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIG1vID0gbW8tPnN1cGVyQ2xhc3MoKTsKKysg ICAgfTsKKyAgICAgd2hpbGUgKG1vKSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIGNuID0gUUxh dGluMVN0cmluZyhtby0+Y2xhc3NOYW1lKCkpOworIAorQEAgLTY5NiwxNCArNzE2LDE1IEBAIFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNl KFFPYmplY3QgKm9iamVjdCkKKyAgICAgICAgIC8vIEZpbmQgYSBRQWNjZXNzaWJsZVBsdWdpbiAo ZmFjdG9yeSkgZm9yIHRoZSBjbGFzcyBuYW1lLiBJZiB0aGVyZSdzCisgICAgICAgICAvLyBubyBl bnRyeSBpbiB0aGUgY2FjaGUgdHJ5IHRvIGNyZWF0ZSBpdCB1c2luZyB0aGUgcGx1Z2luIGxvYWRl ci4KKyAgICAgICAgIGlmICghcUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSkgewor KyAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gbnVsbHB0cjsgLy8gMCBt ZWFucyAibm8gcGx1Z2luIGZvdW5kIi4gVGhpcyBpcyBjYWNoZWQgYXMgd2VsbC4KKyAgICAgICAg ICAgICBjb25zdCBpbnQgaW5kZXggPSBsb2FkZXIoKS0+aW5kZXhPZihjbik7CistICAgICAgICAg ICAgaWYgKGluZGV4ICE9IC0xKSB7CistICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2lu ICpmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRlcigpLT5p bnN0YW5jZShpbmRleCkpOworLSAgICAgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+ aW5zZXJ0KGNuLCBmYWN0b3J5KTsKKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKGlu ZGV4ICE9IC0xKQorKyAgICAgICAgICAgICAgICBmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nl c3NpYmxlUGx1Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShpbmRleCkpOworKyAgICAgICAgICAg IHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3RvcnkpOworICAgICAgICAgfQor IAorICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgY2FjaGUgc2hvdWxkIGNvbnRhaW4gYSB2 YWxpZCBmYWN0b3J5IHBvaW50ZXIgb3IgMDoKKysgICAgICAgIFFfQVNTRVJUKHFBY2Nlc3NpYmxl UGx1Z2lucygpLT5jb250YWlucyhjbikpOworICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4gKmZh Y3RvcnkgPSBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+dmFsdWUoY24pOworICAgICAgICAgaWYgKGZh Y3RvcnkpIHsKKyAgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqcmVzdWx0ID0gZmFj dG9yeS0+Y3JlYXRlKGNuLCBvYmplY3QpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2Nv bmZpZ3VyZS5qc29uIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK2luZGV4IDFmMDg3 OTVjNTcuLjEyYzk1NzQyZDIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1cmUu anNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK0BAIC04MzQsNyArODM0 LDggQEAKKyAgICAgICAgICAgICAgICAgICAgICIvLyBlbWJlZGRlZCBkZXZpY2VzLCBhcmUgbm90 IGludGVuZGVkIHRvIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBYLiBFR0wgc3VwcG9ydCIsCisgICAg ICAgICAgICAgICAgICAgICAiLy8gaGFzIHRvIGJlIGRpc2FibGVkIGluIHBsdWdpbnMgbGlrZSB4 Y2IgaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSBuYXRpdmUgZGlzcGxheSwiLAorICAgICAgICAgICAg ICAgICAgICAgIi8vIHdpbmRvdyBhbmQgcGl4bWFwIHR5cGVzIHdpbGwgYmUgZGlmZmVyZW50IHRo YW4gd2hhdCBhbiBYLWJhc2VkIHBsYXRmb3JtIiwKKy0gICAgICAgICAgICAgICAgICAgICIvLyBw bHVnaW4gd291bGQgZXhwZWN0LiIKKysgICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4gd291 bGQgZXhwZWN0LiIsCisrICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBVU0VfWDExIgorICAg ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAiaW5jbHVkZSI6IFsgIkVHTC9lZ2wu aCIsICJYMTEvWGxpYi5oIiBdLAorICAgICAgICAgICAgICAgICAibWFpbiI6IFsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKK2luZGV4IDk2ZjFlOGNiMWQuLjBlNzNiYmJkYjAgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorQEAgLTE1MCwxNiArMTUwLDQyIEBA IHN0YXRpYyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1Q X0lORk9IRFIgJmJpKQorICAgICByZXR1cm4gczsKKyB9CisgCistc3RhdGljIGludCBjYWxjX3No aWZ0KHVpbnQgbWFzaykKKytzdGF0aWMgdWludCBjYWxjX3NoaWZ0KHVpbnQgbWFzaykKKyB7Cist ICAgIGludCByZXN1bHQgPSAwOworLSAgICB3aGlsZSAobWFzayAmJiAhKG1hc2sgJiAxKSkgewor KyAgICB1aW50IHJlc3VsdCA9IDA7CisrICAgIHdoaWxlICgobWFzayA+PSAweDEwMCkgfHwgKCEo bWFzayAmIDEpICYmIG1hc2spKSB7CisgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgIG1hc2sg Pj49IDE7CisgICAgIH0KKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisrc3RhdGljIHVpbnQg Y2FsY19zY2FsZSh1aW50IGxvd19tYXNrKQorK3sKKysgICAgdWludCByZXN1bHQgPSA4OworKyAg ICB3aGlsZSAobG93X21hc2sgJiYgcmVzdWx0KSB7CisrICAgICAgICByZXN1bHQtLTsKKysgICAg ICAgIGxvd19tYXNrID4+PSAxOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQorKwor K3N0YXRpYyBpbmxpbmUgdWludCBhcHBseV9zY2FsZSh1aW50IHZhbHVlLCB1aW50IHNjYWxlKQor K3sKKysgICAgaWYgKCEoc2NhbGUgJiAweDA3KSkgLy8gcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHNj YWxlID09IDggb3IgMAorKyAgICAgICAgcmV0dXJuIHZhbHVlOworKworKyAgICB1aW50IGZpbGxl ZCA9IDggLSBzY2FsZTsKKysgICAgdWludCByZXN1bHQgPSB2YWx1ZSA8PCBzY2FsZTsKKysKKysg ICAgZG8geworKyAgICAgICAgcmVzdWx0IHw9IHJlc3VsdCA+PiBmaWxsZWQ7CisrICAgICAgICBm aWxsZWQgPDw9IDE7CisrICAgIH0gd2hpbGUgKGZpbGxlZCA8IDgpOworKworKyAgICByZXR1cm4g cmVzdWx0OworK30KKysKKyBzdGF0aWMgYm9vbCByZWFkX2RpYl9maWxlaGVhZGVyKFFEYXRhU3Ry ZWFtICZzLCBCTVBfRklMRUhEUiAmYmYpCisgeworICAgICAvLyByZWFkIEJNUCBmaWxlIGhlYWRl cgorQEAgLTIyMiwxNCArMjQ4LDE0IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURhdGFT dHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAgdWlu dCBncmVlbl9tYXNrID0gMDsKKyAgICAgdWludCBibHVlX21hc2sgPSAwOworICAgICB1aW50IGFs cGhhX21hc2sgPSAwOworLSAgICBpbnQgcmVkX3NoaWZ0ID0gMDsKKy0gICAgaW50IGdyZWVuX3No aWZ0ID0gMDsKKy0gICAgaW50IGJsdWVfc2hpZnQgPSAwOworLSAgICBpbnQgYWxwaGFfc2hpZnQg PSAwOworLSAgICBpbnQgcmVkX3NjYWxlID0gMDsKKy0gICAgaW50IGdyZWVuX3NjYWxlID0gMDsK Ky0gICAgaW50IGJsdWVfc2NhbGUgPSAwOworLSAgICBpbnQgYWxwaGFfc2NhbGUgPSAwOworKyAg ICB1aW50IHJlZF9zaGlmdCA9IDA7CisrICAgIHVpbnQgZ3JlZW5fc2hpZnQgPSAwOworKyAgICB1 aW50IGJsdWVfc2hpZnQgPSAwOworKyAgICB1aW50IGFscGhhX3NoaWZ0ID0gMDsKKysgICAgdWlu dCByZWRfc2NhbGUgPSAwOworKyAgICB1aW50IGdyZWVuX3NjYWxlID0gMDsKKysgICAgdWludCBi bHVlX3NjYWxlID0gMDsKKysgICAgdWludCBhbHBoYV9zY2FsZSA9IDA7CisgCisgICAgIGlmICgh ZC0+aXNTZXF1ZW50aWFsKCkpCisgICAgICAgICBkLT5zZWVrKHN0YXJ0cG9zICsgQk1QX0ZJTEVI RFJfU0laRSArIGJpLmJpU2l6ZSk7IC8vIGdvdG8gc3RhcnQgb2YgY29sb3JtYXAgb3IgbWFza3MK K0BAIC0zMDgsMTkgKzMzNCwxOSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3Ry ZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICBy ZWRfc2hpZnQgPSBjYWxjX3NoaWZ0KHJlZF9tYXNrKTsKKyAgICAgICAgIGlmICgoKHJlZF9tYXNr ID4+IHJlZF9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0g ICAgICAgIHJlZF9zY2FsZSA9IDI1NiAvICgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEpOwor KyAgICAgICAgcmVkX3NjYWxlID0gY2FsY19zY2FsZShyZWRfbWFzayA+PiByZWRfc2hpZnQpOwor ICAgICAgICAgZ3JlZW5fc2hpZnQgPSBjYWxjX3NoaWZ0KGdyZWVuX21hc2spOworICAgICAgICAg aWYgKCgoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMjU2IC8gKChncmVlbl9tYXNr ID4+IGdyZWVuX3NoaWZ0KSArIDEpOworKyAgICAgICAgZ3JlZW5fc2NhbGUgPSBjYWxjX3NjYWxl KGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpOworICAgICAgICAgYmx1ZV9zaGlmdCA9IGNhbGNf c2hpZnQoYmx1ZV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0 KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgYmx1ZV9z Y2FsZSA9IDI1NiAvICgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSk7CisrICAgICAgICBi bHVlX3NjYWxlID0gY2FsY19zY2FsZShibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCk7CisgICAgICAg ICBhbHBoYV9zaGlmdCA9IGNhbGNfc2hpZnQoYWxwaGFfbWFzayk7CisgICAgICAgICBpZiAoKChh bHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworLSAgICAgICAgYWxwaGFfc2NhbGUgPSAyNTYgLyAoKGFscGhhX21hc2sgPj4gYWxw aGFfc2hpZnQpICsgMSk7CisrICAgICAgICBhbHBoYV9zY2FsZSA9IGNhbGNfc2NhbGUoYWxwaGFf bWFzayA+PiBhbHBoYV9zaGlmdCk7CisgICAgIH0gZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdCICYm IChuYml0cyA9PSAyNCB8fCBuYml0cyA9PSAzMikpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9IDB4 MDAwMDAwZmY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwMDAwZmYwMDsKK0BAIC0zMjgsMTcg KzM1NCwxNSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25z dCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICBibHVlX3NoaWZ0ID0g MDsKKyAgICAgICAgIGdyZWVuX3NoaWZ0ID0gODsKKyAgICAgICAgIHJlZF9zaGlmdCA9IDE2Owor LSAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMTsKKysgICAg ICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDA7CisgICAgIH0gZWxz ZSBpZiAoY29tcCA9PSBCTVBfUkdCICYmIG5iaXRzID09IDE2KSB7CisgICAgICAgICBibHVlX21h c2sgPSAweDAwMWY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwM2UwOworICAgICAgICAgcmVk X21hc2sgPSAweDdjMDA7CisgICAgICAgICBibHVlX3NoaWZ0ID0gMDsKKy0gICAgICAgIGdyZWVu X3NoaWZ0ID0gMjsKKy0gICAgICAgIHJlZF9zaGlmdCA9IDc7CistICAgICAgICByZWRfc2NhbGUg PSAxOworLSAgICAgICAgZ3JlZW5fc2NhbGUgPSAxOworLSAgICAgICAgYmx1ZV9zY2FsZSA9IDg7 CisrICAgICAgICBncmVlbl9zaGlmdCA9IDU7CisrICAgICAgICByZWRfc2hpZnQgPSAxMDsKKysg ICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDM7CisgICAgIH0K KyAKKyAjaWYgMAorQEAgLTU0NCwxMCArNTY4LDEwIEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2Jv ZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwK KyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIrMik8PDE2OworICAgICAgICAg ICAgICAgICBpZiAobmJpdHMgPiAyNCkKKyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hh ciopKGIrMyk8PDI0OworLSAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoKChjICYgcmVkX21h c2spID4+IHJlZF9zaGlmdCkgKiByZWRfc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0KSAqIGdyZWVu X3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiBi bHVlX21hc2spID4+IGJsdWVfc2hpZnQpICogYmx1ZV9zY2FsZSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwID8gKChjICYgYWxwaGFfbWFzaykgPj4gYWxw aGFfc2hpZnQpICogYWxwaGFfc2NhbGUgOiAweGZmKTsKKysgICAgICAgICAgICAgICAgKnArKyA9 IHFSZ2JhKGFwcGx5X3NjYWxlKChjICYgcmVkX21hc2spID4+IHJlZF9zaGlmdCwgcmVkX3NjYWxl KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgZ3JlZW5f bWFzaykgPj4gZ3JlZW5fc2hpZnQsIGdyZWVuX3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0LCBibHVl X3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/IGFwcGx5X3Nj YWxlKChjICYgYWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQsIGFscGhhX3NjYWxlKSA6IDB4ZmYp OworICAgICAgICAgICAgICAgICBiICs9IG5iaXRzLzg7CisgICAgICAgICAgICAgfQorICAgICAg ICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAgYi9xdGJh c2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCitpbmRleCA3MTUyYWMxNjA3Li4wZGY3NzI1NjRj IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorKysrIGIvcXRi YXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorQEAgLTQ2OTQsNiArNDY5NCw4IEBAIFFJbWFn ZSBRSW1hZ2U6OnNtb290aFNjYWxlZChpbnQgdywgaW50IGgpIGNvbnN0IHsKKyBzdGF0aWMgUUlt YWdlIHJvdGF0ZWQ5MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHsKKyAgICAgUUltYWdlIG91dChp bWFnZS5oZWlnaHQoKSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBpZiAo b3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRhKCZv dXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAgICBv dXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworQEAgLTQ3MjIsNiArNDcyNCw4 IEBAIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBRSW1hZ2UgJmltYWdlKQorICAgICAg ICAgcmV0dXJuIGltYWdlLm1pcnJvcmVkKHRydWUsIHRydWUpOworIAorICAgICBRSW1hZ2Ugb3V0 KGltYWdlLndpZHRoKCksIGltYWdlLmhlaWdodCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAgIGlm IChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRhdGEo Jm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAgICAg IG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDczNCw2ICs0NzM4 LDggQEAgc3RhdGljIFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgc3Rh dGljIFFJbWFnZSByb3RhdGVkMjcwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBRSW1h Z2Ugb3V0KGltYWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7Cisr ICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0 YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAg ICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FjdXJzb3IuY3BwCitpbmRleCBkNmNjYWZmOGVkLi40NTUwODgyNDFjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9rZXJuZWwvcWN1cnNvci5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgdm9pZCBRQ3Vyc29yOjpz ZXRQb3MoUVNjcmVlbiAqc2NyZWVuLCBpbnQgeCwgaW50IHkpCisgeworICAgICBpZiAoc2NyZWVu KSB7CisgICAgICAgICBpZiAoUVBsYXRmb3JtQ3Vyc29yICpjdXJzb3IgPSBzY3JlZW4tPmhhbmRs ZSgpLT5jdXJzb3IoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3MgPSBR SGlnaERwaTo6dG9OYXRpdmVQaXhlbHMoUVBvaW50KHgsIHkpLCBzY3JlZW4pOworKyAgICAgICAg ICAgIGNvbnN0IFFQb2ludCBwb3MoeCwgeSk7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50IGRl dmljZVBvcyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhwb3MsIHNjcmVlbi0+dmlydHVhbFNp YmxpbmdBdChwb3MpKTsKKyAgICAgICAgICAgICAvLyBOZWVkIHRvIGNoZWNrLCBzaW5jZSBzb21l IFggc2VydmVycyBnZW5lcmF0ZSBudWxsIG1vdXNlIG1vdmUKKyAgICAgICAgICAgICAvLyBldmVu dHMsIGNhdXNpbmcgbG9vcGluZyBpbiBhcHBsaWNhdGlvbnMgd2hpY2ggY2FsbCBzZXRQb3MoKSBv bgorICAgICAgICAgICAgIC8vIGV2ZXJ5IG1vdXNlIG1vdmUgZXZlbnQuCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAoraW5kZXggOWJiZjI3NzNhOS4uM2FjNGE0ZDhi NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAorQEAgLTU4 MCw5ICs1ODAsOCBAQCB2b2lkIFFIaWdoRHBpU2NhbGluZzo6c2V0U2NyZWVuRmFjdG9yKFFTY3Jl ZW4gKnNjcmVlbiwgcXJlYWwgZmFjdG9yKQorICAgICBlbHNlCisgICAgICAgICBxTmFtZWRTY3Jl ZW5TY2FsZUZhY3RvcnMoKS0+aW5zZXJ0KG5hbWUsIGZhY3Rvcik7CisgCistICAgIC8vIGhhY2sg dG8gZm9yY2UgcmUtZXZhbHVhdGlvbiBvZiBzY3JlZW4gZ2VvbWV0cnkKKyAgICAgaWYgKHNjcmVl bi0+aGFuZGxlKCkpCistICAgICAgICBzY3JlZW4tPmRfZnVuYygpLT5zZXRQbGF0Zm9ybVNjcmVl bihzY3JlZW4tPmhhbmRsZSgpKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNjYWxl IGZhY3RvcgorKyAgICAgICAgc2NyZWVuLT5kX2Z1bmMoKS0+dXBkYXRlTG9naWNhbERwaSgpOwor IH0KKyAKKyBRUG9pbnQgUUhpZ2hEcGlTY2FsaW5nOjptYXBQb3NpdGlvblRvTmF0aXZlKGNvbnN0 IFFQb2ludCAmcG9zLCBjb25zdCBRUGxhdGZvcm1TY3JlZW4gKnBsYXRmb3JtU2NyZWVuKQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwIGIvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4IGE3NWI4ZWY5MjAuLjRmMmQy OTQ3MzkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNlLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC03MDEs NiArNzAxLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgICB7IFF0OjpLZXlfVG91Y2hw YWRUb2dnbGUsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIFRvZ2ds ZSIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9uLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFT aG9ydGN1dCIsICJUb3VjaHBhZCBPbiIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9mZiwg IFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgT2ZmIikgfSwKKysgICAg eyBRdDo6S2V5X1NoaWZ0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJTaGlmdCIp IH0sCisrICAgIHsgUXQ6OktleV9Db250cm9sLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1 dCIsICJDb250cm9sIikgfSwKKysgICAgeyBRdDo6S2V5X0FsdCwgIFFUX1RSQU5TTEFURV9OT09Q KCJRU2hvcnRjdXQiLCAiQWx0IikgfSwKKysgICAgeyBRdDo6S2V5X01ldGEsICBRVF9UUkFOU0xB VEVfTk9PUCgiUVNob3J0Y3V0IiwgIk1ldGEiKSB9LAorIAorIH07Cisgc3RhdGljIFFfQ09OU1RF WFBSIGludCBudW1LZXlOYW1lcyA9IHNpemVvZiBrZXluYW1lIC8gc2l6ZW9mICprZXluYW1lOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAg Yi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitpbmRleCBmZGM2 YTZjNGFhLi5hYzQ3Zjk4YzVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fw bGF0Zm9ybXNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9y bXNlcnZpY2VzLmNwcAorQEAgLTU1LDYgKzU1LDE5IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorICAg ICBcYnJpZWYgVGhlIFFQbGF0Zm9ybVNlcnZpY2VzIHByb3ZpZGVzIHRoZSBiYWNrZW5kIGZvciBk ZXNrdG9wLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KKyAqLworIAorKy8qIQorKyAgICBcZW51bSBR UGxhdGZvcm1TZXJ2aWNlczo6Q2FwYWJpbGl0eQorKworKyAgICBDYXBhYmlsaXRpZXMgYXJlIHVz ZWQgdG8gZGV0ZXJtaW5lIGEgc3BlY2lmaWMgcGxhdGZvcm0gc2VydmljZSdzIGF2YWlsYWJpbGl0 eS4KKysKKysgICAgXHZhbHVlIENvbG9yUGlja2luZ0Zyb21TY3JlZW4gVGhlIHBsYXRmb3JtIG5h dGl2ZWx5IHN1cHBvcnRzIGNvbG9yIHBpY2tpbmcgZnJvbSBzY3JlZW4uCisrICAgIFRoaXMgY2Fw YWJpbGl0eSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgIm9wYXF1ZSIgY29s b3IgcGlja2luZywgd2hlcmUgdGhlCisrICAgIHBsYXRmb3JtIGltcGxlbWVudHMgYSBjb21wbGV0 ZSB1c2VyIGV4cGVyaWVuY2UgZm9yIGNvbG9yIHBpY2tpbmcgYW5kIG91dHB1dHMgYSBjb2xvci4K KysgICAgVGhpcyBpcyBpbiBjb250cmFzdCB0byB0aGUgYXBwbGljYXRpb24gaW1wbGVtZW50aW5n IHRoZSBjb2xvciBwaWNraW5nIHVzZXIgZXhwZXJpZW5jZQorKyAgICAodGFraW5nIGNhcmUgb2Yg c2hvd2luZyBhIGNyb3NzIGhhaXIsIGluc3RydWN0aW5nIHRoZSBwbGF0Zm9ybSBpbnRlZ3JhdGlv biB0byBvYnRhaW4KKysgICAgdGhlIGNvbG9yIGF0IGEgZ2l2ZW4gcGl4ZWwsIGV0Yy4pLiBUaGUg cmVsYXRlZCBzZXJ2aWNlIGZ1bmN0aW9uIGlzIHBpY2tDb2xvcigpLgorKyAqLworKworIFFQbGF0 Zm9ybVNlcnZpY2VzOjpRUGxhdGZvcm1TZXJ2aWNlcygpCisgeyB9CisgCitAQCAtODUsNSArOTgs MTYgQEAgUUJ5dGVBcnJheSBRUGxhdGZvcm1TZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkg Y29uc3QKKyAgICAgcmV0dXJuIFFCeXRlQXJyYXkoIlVOS05PV04iKTsKKyB9CisgCisrUVBsYXRm b3JtU2VydmljZUNvbG9yUGlja2VyICpRUGxhdGZvcm1TZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdp bmRvdyAqcGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51 bGxwdHI7CisrfQorKworK2Jvb2wgUVBsYXRmb3JtU2VydmljZXM6Omhhc0NhcGFiaWxpdHkoQ2Fw YWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoY2FwYWJpbGl0eSkK KysgICAgcmV0dXJuIGZhbHNlOworK30KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmggYi9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAoraW5kZXggNWRlOTZjZmE3ZC4uYThiMmE0 Y2U3MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNl cy5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAorQEAg LTUwLDE2ICs1MCwzMiBAQAorIC8vCisgCisgI2luY2x1ZGUgPFF0R3VpL3F0Z3VpZ2xvYmFsLmg+ CisrI2luY2x1ZGUgPFF0Q29yZS9xb2JqZWN0Lmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisg CisgY2xhc3MgUVVybDsKKytjbGFzcyBRV2luZG93OworKworK2NsYXNzIFFfR1VJX0VYUE9SVCBR UGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9P QkpFQ1QKKytwdWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIHZpcnR1 YWwgdm9pZCBwaWNrQ29sb3IoKSA9IDA7CisrUV9TSUdOQUxTOgorKyAgICB2b2lkIGNvbG9yUGlj a2VkKGNvbnN0IFFDb2xvciAmY29sb3IpOworK307CisgCisgY2xhc3MgUV9HVUlfRVhQT1JUIFFQ bGF0Zm9ybVNlcnZpY2VzCisgeworIHB1YmxpYzoKKyAgICAgUV9ESVNBQkxFX0NPUFlfTU9WRShR UGxhdGZvcm1TZXJ2aWNlcykKKyAKKysgICAgZW51bSBDYXBhYmlsaXR5IHsKKysgICAgICAgIENv bG9yUGlja2luZywKKysgICAgfTsKKysKKyAgICAgUVBsYXRmb3JtU2VydmljZXMoKTsKKyAgICAg dmlydHVhbCB+UVBsYXRmb3JtU2VydmljZXMoKSB7IH0KKyAKK0BAIC02Nyw2ICs4MywxMCBAQCBw dWJsaWM6CisgICAgIHZpcnR1YWwgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJsKTsK KyAKKyAgICAgdmlydHVhbCBRQnl0ZUFycmF5IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0Owor KworKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxpdHkp IGNvbnN0OworKworKyAgICB2aXJ0dWFsIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqY29s b3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cik7CisgfTsKKyAKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1l LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK2luZGV4IDcx NTIxYzAzMzkuLjIzMjU4NzMyNDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwv cXBsYXRmb3JtdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jt dGhlbWUuY3BwCitAQCAtMTYzLDYgKzE2Myw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICAg ICBcdmFsdWUgU2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzIChib29sKSBXaGV0aGVyIHRvIGRp c3BsYXkgc2hvcnRjdXQga2V5IHNlcXVlbmNlcyBpbiBjb250ZXh0IG1lbnVzLgorIAorKyAgICBc dmFsdWUgQnV0dG9uUHJlc3NLZXlzIChRTGlzdDxRdDo6S2V5PikgQSBsaXN0IG9mIGtleXMgdGhh dCBjYW4gYmUgdXNlZCB0byBwcmVzcyBidXR0b25zIHZpYSBrZXlib2FyZCBpbnB1dC4KKysKKyAg ICAgXHNhIHRoZW1lSGludCgpLCBRU3R5bGU6OnBpeGVsTWV0cmljKCkKKyAqLworIAorQEAgLTU2 Myw2ICs1NjUsOCBAQCBRVmFyaWFudCBRUGxhdGZvcm1UaGVtZTo6ZGVmYXVsdFRoZW1lSGludChU aGVtZUhpbnQgaGludCkKKyAgICAgICAgIH0KKyAgICAgY2FzZSBNb3VzZVF1aWNrU2VsZWN0aW9u VGhyZXNob2xkOgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KDEwKTsKKysgICAgY2FzZSBCdXR0 b25QcmVzc0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZShRTGlzdDxR dDo6S2V5Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgfQorICAg ICByZXR1cm4gUVZhcmlhbnQoKTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXRoZW1lLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhl bWUuaAoraW5kZXggMzE4NWZjNDU0MS4uN2U2YzlkNTc0MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXBsYXRmb3JtdGhlbWUuaAorQEAgLTEyMCw3ICsxMjAsOCBAQCBwdWJsaWM6CisgICAgICAg ICBUb3VjaERvdWJsZVRhcERpc3RhbmNlLAorICAgICAgICAgU2hvd1Nob3J0Y3V0c0luQ29udGV4 dE1lbnVzLAorICAgICAgICAgSWNvbkZhbGxiYWNrU2VhcmNoUGF0aHMsCistICAgICAgICBNb3Vz ZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkCisrICAgICAgICBNb3VzZVF1aWNrU2VsZWN0aW9uVGhy ZXNob2xkLAorKyAgICAgICAgQnV0dG9uUHJlc3NLZXlzCisgICAgIH07CisgCisgICAgIGVudW0g RGlhbG9nVHlwZSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4u Y3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCitpbmRleCA4ZTBlYjM1MTE2 Li41ZDE3MmE1OGRkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4u Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK0BAIC03Nyw2ICs3 NywxMiBAQCBRU2NyZWVuOjpRU2NyZWVuKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuKQorICAgICBk LT5zZXRQbGF0Zm9ybVNjcmVlbihzY3JlZW4pOworIH0KKyAKKyt2b2lkIFFTY3JlZW5Qcml2YXRl Ojp1cGRhdGVMb2dpY2FsRHBpKCkKKyt7CisrICAgIGxvZ2ljYWxEcGkgPSBRUGxhdGZvcm1TY3Jl ZW46Om92ZXJyaWRlRHBpKHBsYXRmb3JtU2NyZWVuLT5sb2dpY2FsRHBpKCkpOworKyAgICB1cGRh dGVHZW9tZXRyaWVzV2l0aFNpZ25hbHMoKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9u IHNjYWxlIGZhY3RvcgorK30KKysKKyB2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVHZW9tZXRy aWVzV2l0aFNpZ25hbHMoKQorIHsKKyAgICAgY29uc3QgUVJlY3Qgb2xkR2VvbWV0cnkgPSBnZW9t ZXRyeTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmggYi9x dGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKK2luZGV4IDdkYTU0MmMyNWUuLmU1MGZj MzE5MGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKKysr KyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorQEAgLTcwLDYgKzcwLDcgQEAg cHVibGljOgorICAgICAgICAgZ2VvbWV0cnkgPSBwbGF0Zm9ybVNjcmVlbi0+ZGV2aWNlSW5kZXBl bmRlbnRHZW9tZXRyeSgpOworICAgICAgICAgYXZhaWxhYmxlR2VvbWV0cnkgPSBRSGlnaERwaTo6 ZnJvbU5hdGl2ZShwbGF0Zm9ybVNjcmVlbi0+YXZhaWxhYmxlR2VvbWV0cnkoKSwgUUhpZ2hEcGlT Y2FsaW5nOjpmYWN0b3IocGxhdGZvcm1TY3JlZW4pLCBnZW9tZXRyeS50b3BMZWZ0KCkpOworICAg ICB9CisrICAgIHZvaWQgdXBkYXRlTG9naWNhbERwaSgpOworIAorICAgICB2b2lkIHVwZGF0ZVBy aW1hcnlPcmllbnRhdGlvbigpOworICAgICB2b2lkIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2lnbmFs cygpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9u c19wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitpbmRl eCAwODBkYTk4ZWM0Li42OTk3ZDYyYjNjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFp bnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cWJsZW5kZnVuY3Rpb25zX3AuaAorQEAgLTI0NiwyNSArMjQ2LDMyIEBAIHZvaWQgcXRfdHJhbnNm b3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkdWR4LCBpbnQgZHZkeCwgaW50IGR1ZHks IGludCBkdmR5LCBpbnQgdTAsIGludCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQmxlbmRlciBibGVuZGVyKQorIHsKKy0gICAgaW50IGZyb21ZID0gcU1heChxUm91bmQo dG9wWSksIGNsaXAudG9wKCkpOworLSAgICBpbnQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9tWSks IGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKysgICAgcWludDY0IGZyb21ZID0gcU1heChx Um91bmQodG9wWSksIGNsaXAudG9wKCkpOworKyAgICBxaW50NjQgdG9ZID0gcU1pbihxUm91bmQo Ym90dG9tWSksIGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKyAgICAgaWYgKGZyb21ZID49 IHRvWSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgcXJlYWwgbGVmdFNsb3BlID0gKGJvdHRv bUxlZnQueCAtIHRvcExlZnQueCkgLyAoYm90dG9tTGVmdC55IC0gdG9wTGVmdC55KTsKKyAgICAg cXJlYWwgcmlnaHRTbG9wZSA9IChib3R0b21SaWdodC54IC0gdG9wUmlnaHQueCkgLyAoYm90dG9t UmlnaHQueSAtIHRvcFJpZ2h0LnkpOworLSAgICBpbnQgZHhfbCA9IGludChsZWZ0U2xvcGUgKiAw eDEwMDAwKTsKKy0gICAgaW50IGR4X3IgPSBpbnQocmlnaHRTbG9wZSAqIDB4MTAwMDApOworLSAg ICBpbnQgeF9sID0gaW50KCh0b3BMZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVm dC55KSAqIGxlZnRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CistICAgIGludCB4X3Ig PSBpbnQoKHRvcFJpZ2h0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiBy aWdodFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0KKy0gICAgaW50IGZyb21YLCB0 b1gsIHgxLCB4MiwgdSwgdiwgaSwgaWk7CisrICAgIHFpbnQ2NCBkeF9sID0gcWludDY0KGxlZnRT bG9wZSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgZHhfciA9IHFpbnQ2NChyaWdodFNsb3BlICog MHgxMDAwMCk7CisrICAgIHFpbnQ2NCB4X2wgPSBxaW50NjQoKHRvcExlZnQueCArIChxcmVhbCgw LjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEw MDAwKTsKKysgICAgcWludDY0IHhfciA9IHFpbnQ2NCgodG9wUmlnaHQueCArIChxcmVhbCgwLjUp ICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAw MDApOworKworKyAgICBxaW50NjQgc291cmNlUmVjdFRvcCA9IHFpbnQ2NChzb3VyY2VSZWN0LnRv cCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RMZWZ0ID0gcWludDY0KHNvdXJjZVJlY3QubGVm dCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RXaWR0aCA9IHFpbnQ2NChzb3VyY2VSZWN0Lndp ZHRoKCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdEhlaWdodCA9IHFpbnQ2NChzb3VyY2VSZWN0 LmhlaWdodCgpKTsKKysgICAgcWludDY0IGNsaXBMZWZ0ID0gcWludDY0KGNsaXAubGVmdCgpKTsK KysgICAgcWludDY0IGNsaXBXaWR0aCA9IHFpbnQ2NChjbGlwLndpZHRoKCkpOworKworKyAgICBx aW50NjQgZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKyAgICAgRGVzdFQgKmxpbmU7 CistICAgIGZvciAoaW50IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisrICAgIGZvciAocWlu dDY0IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisgICAgICAgICBsaW5lID0gcmVpbnRlcnBy ZXRfY2FzdDxEZXN0VCAqPihyZWludGVycHJldF9jYXN0PHVjaGFyICo+KGRlc3RQaXhlbHMpICsg eSAqIGRicGwpOworIAorLSAgICAgICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcC5sZWZ0 KCkpOworLSAgICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNsaXAubGVmdCgpICsgY2xpcC53 aWR0aCgpKTsKKysgICAgICAgIGZyb21YID0gcU1heCh4X2wgPj4gMTYsIGNsaXBMZWZ0KTsKKysg ICAgICAgIHRvWCA9IHFNaW4oeF9yID4+IDE2LCBjbGlwTGVmdCArIGNsaXBXaWR0aCk7CisgICAg ICAgICBpZiAoZnJvbVggPCB0b1gpIHsKKyAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJvdW5k aW5nLCB3ZSBjYW4gZ2V0IHNvdXJjZSBjb29yZGluYXRlcyBvdXRzaWRlIHRoZSBzb3VyY2UgaW1h Z2UuCisgICAgICAgICAgICAgLy8gQ2xhbXAgdGhlc2UgY29vcmRpbmF0ZXMgdG8gdGhlIHNvdXJj ZSByZWN0IHRvIGF2b2lkIHNlZ21lbnRhdGlvbiBmYXVsdCBhbmQKK0BAIC0yNzUsMTAgKzI4Miwx MCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMs IGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSB4MSAqIGR1ZHggKyB5ICogZHVkeSArIHUwOwor ICAgICAgICAgICAgIHYgPSB4MSAqIGR2ZHggKyB5ICogZHZkeSArIHYwOworICAgICAgICAgICAg IGZvciAoOyB4MSA8IHRvWDsgKyt4MSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+ IDE2OworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAg ICBpZiAodXUgPj0gc291cmNlUmVjdC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSAr IHNvdXJjZVJlY3Qud2lkdGgoKQorLSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNl UmVjdC50b3AoKSAmJiB2diA8IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgp KSB7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAg ICAgIHFpbnQ2NCB2diA9IHYgPj4gMTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3Vy Y2VSZWN0TGVmdCAmJiB1dSA8IHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAg ICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVj dFRvcCArIHNvdXJjZVJlY3RIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKK0BAIC0yOTAs MTAgKzI5NywxMCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRl c3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSAoeDIgLSAxKSAqIGR1ZHggKyB5 ICogZHVkeSArIHUwOworICAgICAgICAgICAgIHYgPSAoeDIgLSAxKSAqIGR2ZHggKyB5ICogZHZk eSArIHYwOworICAgICAgICAgICAgIGZvciAoOyB4MiA+IHgxOyAtLXgyKSB7CistICAgICAgICAg ICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAgICAgIGludCB2diA9IHYgPj4g MTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1dSA8 IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAgICAgICAg ICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50b3AoKSAr IHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0gdSA+ PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAgICAgICAg ICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExlZnQgKyBz b3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJlY3RU b3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg dSAtPSBkdWR4OworQEAgLTMwOCw4ICszMTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9y YXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8vIEJl Z2lubmluZyBvZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAgICAg ICAgICAgaSA9IHgxIC0gZnJvbVg7CisgICAgICAgICAgICAgd2hpbGUgKGkpIHsKKy0gICAgICAg ICAgICAgICAgaW50IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVmdCgpLCB1ID4+IDE2LCBzb3Vy Y2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEpOworLSAgICAgICAgICAgICAg ICBpbnQgdnYgPSBxQm91bmQoc291cmNlUmVjdC50b3AoKSwgdiA+PiAxNiwgc291cmNlUmVjdC50 b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0 IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBzb3VyY2VSZWN0TGVmdCArIHNv dXJjZVJlY3RXaWR0aCAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSBxQm91bmQo c291cmNlUmVjdFRvcCwgdiA+PiAxNiwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQg LSAxKTsKKyAgICAgICAgICAgICAgICAgYmxlbmRlci53cml0ZShsaW5lLCByZWludGVycHJldF9j YXN0PGNvbnN0IFNyY1QgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihzcmNQaXhl bHMpICsgdnYgKiBzYnBsKVt1dV0pOworICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7CisgICAg ICAgICAgICAgICAgIHYgKz0gZHZkeDsKK0BAIC0zNDgsOCArMzU1LDggQEAgdm9pZCBxdF90cmFu c2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAg ICAgICAgICAvLyBFbmQgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXItcGl4ZWwgY2hlY2tzLgor ICAgICAgICAgICAgIGkgPSB0b1ggLSB4MjsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgeworLSAg ICAgICAgICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4gMTYs IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAgICAg ICAgICAgIGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3VyY2VS ZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAgICBx aW50NjQgdXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RMZWZ0 ICsgc291cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHFC b3VuZChzb3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhl aWdodCAtIDEpOworICAgICAgICAgICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50ZXJw cmV0X2Nhc3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+KHNy Y1BpeGVscykgKyB2diAqIHNicGwpW3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsK KyAgICAgICAgICAgICAgICAgdiArPSBkdmR4OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29s b3J0cmNsdXRfcC5oCitpbmRleCA3NmE2YTYwODAzLi4yNGZkNTIyZTZjIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorKysrIGIvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJs aWM6CisgICAgICAgICByZXR1cm4gUVJnYmE2NDo6ZnJvbVJnYmE2NChyLCBnLCBiLCBxQWxwaGEo cmdiMzIpICogMjU3KTsKKyAjZW5kaWYKKyAgICAgfQorKyAgICBRUmdiYTY0IHRvTGluZWFyNjQo UVJnYmE2NCkgY29uc3QgPSBkZWxldGU7CisgCisgICAgIFFSZ2IgdG9MaW5lYXIoUVJnYiByZ2Iz MikgY29uc3QKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fk cmF3aGVscGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAor aW5kZXggYTYxNzkzNTA4YS4uNWJhMmQyNzdiNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cWRyYXdoZWxwZXIuY3BwCitAQCAtNjA5MSw3ICs2MDkxLDcgQEAgc3RhdGljIGlubGluZSB2b2lk IGFscGhhcmdiYmxlbmRfYXJnYjMyKHF1aW50MzIgKmRzdCwgdWludCBjb3ZlcmFnZSwgY29uc3Qg UVJnYmEKKyBzdGF0aWMgaW5saW5lIHZvaWQgcmdiQmxlbmRQaXhlbChRUmdiYTY0ICZkc3QsIGlu dCBjb3ZlcmFnZSwgUVJnYmE2NCBzbGluZWFyLCBjb25zdCBRQ29sb3JUcmNMdXQgKmNvbG9yUHJv ZmlsZSkKKyB7CisgICAgIC8vIERvIGEgZ2FtbWFjb3JyZWN0ZWQgUkdCIGFscGhhYmxlbmQuLi4K Ky0gICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9maWxl LT50b0xpbmVhcjY0KGRzdCkgOiBkc3Q7CisrICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNv bG9yUHJvZmlsZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXIoZHN0KSA6IGRzdDsKKyAKKyAgICAg UVJnYmE2NCBibGVuZCA9IHJnYkJsZW5kKGRsaW5lYXIsIHNsaW5lYXIsIGNvdmVyYWdlKTsKKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVy LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitp bmRleCAyODM5MjNkZTUyLi5mMDhlYjljYmVlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3Bh aW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitAQCAtNTYwLDMxICs1NjAsNiBAQCB2b2lk IFFSYXN0ZXJQYWludEVuZ2luZTo6dXBkYXRlTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJm1hdHJp eCkKKyAgICAgUVJhc3RlclBhaW50RW5naW5lU3RhdGUgKnMgPSBzdGF0ZSgpOworICAgICAvLyBG QUxDT046IGdldCByaWQgb2YgdGhpcyBsaW5lLCBzZWUgZHJhd0ltYWdlIGNhbGwgYmVsb3cuCisg ICAgIHMtPm1hdHJpeCA9IG1hdHJpeDsKKy0gICAgUVRyYW5zZm9ybTo6VHJhbnNmb3JtYXRpb25U eXBlIHR4b3AgPSBzLT5tYXRyaXgudHlwZSgpOworLQorLSAgICBzd2l0Y2ggKHR4b3ApIHsKKy0K Ky0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeE5vbmU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZv cm0gPSB0cnVlOworLSAgICAgICAgYnJlYWs7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhU cmFuc2xhdGU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0 cml4LmR4KCkpKSA9PSBzLT5tYXRyaXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmJiBxcmVhbChpbnQocy0+bWF0cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKTsKKy0gICAg ICAgIGJyZWFrOworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4U2NhbGU6CistICAgICAgICBz LT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4LmR4KCkpKSA9PSBzLT5tYXRy aXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0 cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmJiBxcmVhbChpbnQocy0+bWF0cml4Lm0xMSgpKSkgPT0gcy0+bWF0cml4Lm0xMSgpCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTIyKCkpKSA9 PSBzLT5tYXRyaXgubTIyKCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAgZGVmYXVsdDogLy8g c2hlYXIgLyBwZXJzcGVjdGl2ZS4uLgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gZmFs c2U7CistICAgICAgICBicmVhazsKKy0gICAgfQorLQorICAgICBzLT5mbGFncy50eF9ub3NoZWFy ID0gcXRfc2NhbGVGb3JUcmFuc2Zvcm0ocy0+bWF0cml4LCAmcy0+dHhzY2FsZSk7CisgCisgICAg IGVuc3VyZU91dGxpbmVNYXBwZXIoKTsKK0BAIC02MTcsNyArNTkyLDYgQEAgUVJhc3RlclBhaW50 RW5naW5lU3RhdGU6OlFSYXN0ZXJQYWludEVuZ2luZVN0YXRlKCkKKyAgICAgZmxhZ3MuYmlsaW5l YXIgPSBmYWxzZTsKKyAgICAgZmxhZ3MubGVnYWN5X3JvdW5kaW5nID0gZmFsc2U7CisgICAgIGZs YWdzLmZhc3RfdGV4dCA9IHRydWU7CistICAgIGZsYWdzLmludF94Zm9ybSA9IHRydWU7CisgICAg IGZsYWdzLnR4X25vc2hlYXIgPSB0cnVlOworICAgICBmbGFncy5mYXN0X2ltYWdlcyA9IHRydWU7 CisgCitAQCAtMTc5Myw3ICsxNzY3LDcgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OmZpbGwo Y29uc3QgUVZlY3RvclBhdGggJnBhdGgsIGNvbnN0IFFCcnVzaCAmYnJ1c2gpCisgICAgIFFSZWN0 RiBjcFJlY3QgPSBwYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKKyAgICAgY29uc3QgUVJlY3RGIHBh dGhEZXZpY2VSZWN0ID0gcy0+bWF0cml4Lm1hcFJlY3QoY3BSZWN0KTsKKyAgICAgLy8gU2tpcCBw YXRocyB0aGF0IGJ5IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZXMgYXJlIGNvbXBsZXRlbHkgb3V0c2lk ZSB0aGUgcGFpbnQgZGV2aWNlLgorLSAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2VjdHMo UVJlY3RGKGQtPmRldmljZVJlY3QpKSkKKysgICAgaWYgKCFwYXRoRGV2aWNlUmVjdC5pbnRlcnNl Y3RzKFFSZWN0RihkLT5kZXZpY2VSZWN0KSkgfHwgIXBhdGhEZXZpY2VSZWN0LmlzVmFsaWQoKSkK KyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUHJvY2Vzc1NwYW5zIGJsZW5kID0gZC0+Z2V0QnJ1 c2hGdW5jKHBhdGhEZXZpY2VSZWN0LCAmcy0+YnJ1c2hEYXRhKTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaCBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCitpbmRleCAwODlhYWRjM2Y3Li5i ZjczNjNkNWFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5n aW5lX3Jhc3Rlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2lu ZV9yYXN0ZXJfcC5oCitAQCAtMTExLDcgKzExMSw2IEBAIHB1YmxpYzoKKyAgICAgICAgIHVpbnQg YmlsaW5lYXIgOiAxOworICAgICAgICAgdWludCBsZWdhY3lfcm91bmRpbmcgOiAxOworICAgICAg ICAgdWludCBmYXN0X3RleHQgOiAxOworLSAgICAgICAgdWludCBpbnRfeGZvcm0gOiAxOworICAg ICAgICAgdWludCB0eF9ub3NoZWFyIDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF9pbWFnZXMgOiAx OworICAgICB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVy cGF0aC5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitpbmRl eCBmOTU0NGEzMjQxLi5kODBmYWZlYWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFp bnRpbmcvcXBhaW50ZXJwYXRoLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBh aW50ZXJwYXRoLmNwcAorQEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUVBhaW50ZXJQYXRoOjph ZGRUZXh0KGNvbnN0IFFQb2ludEYgJnBvaW50LCBjb25zdCBRRm9udCAmZiwgY29uc3QgUVN0cmlu ZyAmCisgCisgICAgICAgICBpZiAoc2kuYW5hbHlzaXMuZmxhZ3MgPCBRU2NyaXB0QW5hbHlzaXM6 OlRhYk9yT2JqZWN0KSB7CisgICAgICAgICAgICAgUUdseXBoTGF5b3V0IGdseXBocyA9IGVuZy0+ c2hhcGVkR2x5cGhzKCZzaSk7CistICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZi5kLT5l bmdpbmVGb3JTY3JpcHQoc2kuYW5hbHlzaXMuc2NyaXB0KTsKKysgICAgICAgICAgICBRRm9udEVu Z2luZSAqZmUgPSBlbmctPmZvbnRFbmdpbmUoc2kpOworICAgICAgICAgICAgIFFfQVNTRVJUKGZl KTsKKyAgICAgICAgICAgICBmZS0+YWRkT3V0bGluZVRvUGF0aCh4LCB5LCBnbHlwaHMsIHRoaXMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2kuYW5hbHlzaXMuYmlkaUxldmVs ICUgMgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9w LmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitpbmRleCA5NDQ0 YTg3YjcxLi4xOGY2NGM1ZThjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhdGhjbGlwcGVyX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlw cGVyX3AuaAorQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CisgICAgIGludCB2ZXJ0ZXgoRGly ZWN0aW9uIGRpcmVjdGlvbikgY29uc3Q7CisgCisgcHJpdmF0ZToKKy0gICAgaW50IG1fbmV4dFsy XVsyXTsKKysgICAgaW50IG1fbmV4dFsyXVsyXSA9IHsgeyAtMSwgLTEgfSwgeyAtMSwgLTEgfSB9 OworIH07CisgCisgY2xhc3MgUVBhdGhTZWdtZW50cworQEAgLTI5NiwxMCArMjk2LDYgQEAgaW5s aW5lIFFQYXRoRWRnZTo6UVBhdGhFZGdlKGludCBhLCBpbnQgYikKKyAgICAgLCBhbmdsZSgwKQor ICAgICAsIGludkFuZ2xlKDApCisgeworLSAgICBtX25leHRbMF1bMF0gPSAtMTsKKy0gICAgbV9u ZXh0WzFdWzBdID0gLTE7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRbMV1b MF0gPSAtMTsKKyB9CisgCisgaW5saW5lIGludCBRUGF0aEVkZ2U6Om5leHQoVHJhdmVyc2FsIHRy YXZlcnNhbCwgRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2d1aS9wYWludGluZy9xcGRmLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYu Y3BwCitpbmRleCAzMDY2NzQ0ZjFiLi4yYzhkM2MzYjUzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fw ZGYuY3BwCitAQCAtMjc2MCw2ICsyNzYwLDggQEAgaW50IFFQZGZFbmdpbmVQcml2YXRlOjphZGRC cnVzaFBhdHRlcm4oY29uc3QgUVRyYW5zZm9ybSAmbSwgYm9vbCAqc3BlY2lmeUNvbG9yLAorICAg ICAgICAgcmV0dXJuIGdyYWRpZW50QnJ1c2goYnJ1c2gsIG1hdHJpeCwgZ1N0YXRlT2JqZWN0KTsK KyAgICAgfQorIAorKyAgICBtYXRyaXggPSBicnVzaC50cmFuc2Zvcm0oKSAqIG1hdHJpeDsKKysK KyAgICAgaWYgKCghYnJ1c2guaXNPcGFxdWUoKSAmJiBicnVzaC5zdHlsZSgpIDwgUXQ6OkxpbmVh ckdyYWRpZW50UGF0dGVybikgfHwgb3BhY2l0eSAhPSAxLjApCisgICAgICAgICAqZ1N0YXRlT2Jq ZWN0ID0gYWRkQ29uc3RhbnRBbHBoYU9iamVjdChxUm91bmQoYnJ1c2guY29sb3IoKS5hbHBoYSgp ICogb3BhY2l0eSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBxUm91bmQocGVuLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpKTsKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xc3Ryb2tlci5jcHAKK2luZGV4IGNiNWQzOTVlODAuLjNiNjM1N2E4OTMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorQEAgLTExODIsNiArMTE4Miw3IEBAIHZv aWQgUURhc2hTdHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgLy8gQ2hl Y2sgaWYgdGhlIGVudGlyZSBsaW5lIHNob3VsZCBiZSBjbGlwcGVkIGF3YXkgb3Igc2ltcGxpZmll ZAorICAgICAgICAgYm9vbCBjbGlwSXQgPSBjbGlwcGluZyAmJiAhbGluZUludGVyc2VjdHNSZWN0 KHByZXYsIGUsIGNsaXBfdGwsIGNsaXBfYnIpOworICAgICAgICAgYm9vbCBza2lwRGFzaGluZyA9 IGVsZW4gKiBpbnZTdW1MZW5ndGggPiByZXBldGl0aW9uTGltaXQoKTsKKysgICAgICAgIGludCBt YXhEYXNoZXMgPSBkYXNoQ291bnQ7CisgICAgICAgICBpZiAoc2tpcERhc2hpbmcgfHwgY2xpcEl0 KSB7CisgICAgICAgICAgICAgLy8gQ3V0IGF3YXkgZnVsbCBkYXNoIHNlcXVlbmNlcy4KKyAgICAg ICAgICAgICBlbGVuIC09IHN0ZDo6Zmxvb3IoZWxlbiAqIGludlN1bUxlbmd0aCkgKiBzdW1MZW5n dGg7CitAQCAtMTE5Niw3ICsxMTk3LDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3NDdXJy ZW50U3VicGF0aCgpCisgICAgICAgICAgICAgICAgICAgICBwb3MgPSBlc3RvcDsgLy8gbW92ZSBw b3MgdG8gbmV4dCBwYXRoIGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVl OworICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBEYXNoIGlzIG9uIHRoaXMgbGluZQorLSAg ICAgICAgICAgICAgICAgICAgcG9zID0gZHBvcyArIGVzdGFydDsKKysgICAgICAgICAgICAgICAg ICAgIHBvcyA9IC0tbWF4RGFzaGVzID4gMCA/IGRwb3MgKyBlc3RhcnQgOiBlc3RvcDsKKyAgICAg ICAgICAgICAgICAgICAgIGRvbmUgPSBwb3MgPj0gZXN0b3A7CisgICAgICAgICAgICAgICAgICAg ICBpZiAoKytpZGFzaCA+PSBkYXNoQ291bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgaWRh c2ggPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0 aW9uLmpzb24gYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29uCitp bmRleCA3YjE2ZThjMjExLi4wZTg3ZDMwYWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcXRfYXR0cmlidXRpb24uanNvbgorQEAgLTEwLDcgKzEwLDcgQEAKKyAgICAgICAgICJIb21l cGFnZSI6ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZyIsCisgICAgICAgICAiTGljZW5zZSI6ICJG cmVldHlwZSBQcm9qZWN0IExpY2Vuc2Ugb3IgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdjIu MCBvbmx5IiwKKyAgICAgICAgICJMaWNlbnNlSWQiOiAiRlRMIG9yIEdQTC0yLjAiLAorLSAgICAg ICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL2RvY3MvTElDRU5TRS5U WFQiLAorKyAgICAgICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL0xJ Q0VOU0UuVFhUIiwKKyAgICAgICAgICJDb3B5cmlnaHQiOiAiQ29weXJpZ2h0IDIwMDAtMjAxNiBi eSBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuIgorICAg ICB9LAorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9w LmggYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAoraW5kZXggZWM5ZDI1OTcxZi4u NGE1YTdhNmQ1MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3BfcC5o CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAorQEAgLTY4LDEzICs2OCwx MyBAQCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJQcml2YXRlCisgICAgIHsKKyAgICAgfQor IAorLSAgICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAqb3RoZXIpCisrICAg IFFTaGFkZXJQcml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICZvdGhlcikKKyAgICAgICAgIDog cmVmKDEpLAorLSAgICAgICAgICBxc2JWZXJzaW9uKG90aGVyLT5xc2JWZXJzaW9uKSwKKy0gICAg ICAgICAgc3RhZ2Uob3RoZXItPnN0YWdlKSwKKy0gICAgICAgICAgZGVzYyhvdGhlci0+ZGVzYyks CistICAgICAgICAgIHNoYWRlcnMob3RoZXItPnNoYWRlcnMpLAorLSAgICAgICAgICBiaW5kaW5n cyhvdGhlci0+YmluZGluZ3MpCisrICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXIucXNiVmVyc2lv biksCisrICAgICAgICAgIHN0YWdlKG90aGVyLnN0YWdlKSwKKysgICAgICAgICAgZGVzYyhvdGhl ci5kZXNjKSwKKysgICAgICAgICAgc2hhZGVycyhvdGhlci5zaGFkZXJzKSwKKysgICAgICAgICAg YmluZGluZ3Mob3RoZXIuYmluZGluZ3MpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmggYi9xdGJhc2Uvc3Jj L2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitpbmRleCBlYzJiMGI2YjRjLi4zZGEz M2E4YTJiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlv bl9wX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3Au aAorQEAgLTYzLDE2ICs2MywxNiBAQCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJEZXNjcmlw dGlvblByaXZhdGUKKyAgICAgICAgIGxvY2FsU2l6ZVswXSA9IGxvY2FsU2l6ZVsxXSA9IGxvY2Fs U2l6ZVsyXSA9IDA7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZShj b25zdCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlckRlc2Ny aXB0aW9uUHJpdmF0ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICZvdGhlcikKKyAg ICAgICAgIDogcmVmKDEpLAorLSAgICAgICAgICBpblZhcnMob3RoZXItPmluVmFycyksCistICAg ICAgICAgIG91dFZhcnMob3RoZXItPm91dFZhcnMpLAorLSAgICAgICAgICB1bmlmb3JtQmxvY2tz KG90aGVyLT51bmlmb3JtQmxvY2tzKSwKKy0gICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tzKG90 aGVyLT5wdXNoQ29uc3RhbnRCbG9ja3MpLAorLSAgICAgICAgICBzdG9yYWdlQmxvY2tzKG90aGVy LT5zdG9yYWdlQmxvY2tzKSwKKy0gICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVy LT5jb21iaW5lZEltYWdlU2FtcGxlcnMpLAorLSAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVy LT5zdG9yYWdlSW1hZ2VzKSwKKy0gICAgICAgICAgbG9jYWxTaXplKG90aGVyLT5sb2NhbFNpemUp CisrICAgICAgICAgIGluVmFycyhvdGhlci5pblZhcnMpLAorKyAgICAgICAgICBvdXRWYXJzKG90 aGVyLm91dFZhcnMpLAorKyAgICAgICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLnVuaWZvcm1CbG9j a3MpLAorKyAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXIucHVzaENvbnN0YW50Qmxv Y2tzKSwKKysgICAgICAgICAgc3RvcmFnZUJsb2NrcyhvdGhlci5zdG9yYWdlQmxvY2tzKSwKKysg ICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLmNvbWJpbmVkSW1hZ2VTYW1wbGVy cyksCisrICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXIuc3RvcmFnZUltYWdlcyksCisrICAg ICAgICAgIGxvY2FsU2l6ZShvdGhlci5sb2NhbFNpemUpCisgICAgIHsKKyAgICAgfQorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJhc2Uv c3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCBhNjU3YThjNTE2Li40ZmMwMTAw OTU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAor KysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAorQEAgLTk4Myw3ICs5 ODMsNyBAQCBRRm9udEVuZ2luZSAqbG9hZFNpbmdsZUVuZ2luZShpbnQgc2NyaXB0LAorICAgICAg ICAgaWYgKHN0eWxlLT5rZXkuc3RyZXRjaCAhPSAwICYmIHJlcXVlc3Quc3RyZXRjaCAhPSAwCisg ICAgICAgICAgICAgJiYgKHJlcXVlc3Quc3R5bGVOYW1lLmlzRW1wdHkoKSB8fCByZXF1ZXN0LnN0 eWxlTmFtZSAhPSBzdHlsZS0+c3R5bGVOYW1lKSkgeworICAgICAgICAgICAgIGRlZi5zdHJldGNo ID0gKHJlcXVlc3Quc3RyZXRjaCAqIDEwMCArIHN0eWxlLT5rZXkuc3RyZXRjaCAvIDIpIC8gc3R5 bGUtPmtleS5zdHJldGNoOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBpZiAo cmVxdWVzdC5zdHJldGNoID09IFFGb250OjpBbnlTdHJldGNoKSB7CisgICAgICAgICAgICAgZGVm LnN0cmV0Y2ggPSAxMDA7CisgICAgICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9n dWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRl eHRkb2N1bWVudGxheW91dC5jcHAKK2luZGV4IGYzZTZlYTIxMDAuLjcyMjY3ZTkzODAgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitAQCAtMjEyMyw3 ICsyMTIzLDcgQEAgdm9pZCBRVGV4dERvY3VtZW50TGF5b3V0UHJpdmF0ZTo6ZHJhd0xpc3RJdGVt KGNvbnN0IFFQb2ludEYgJm9mZnNldCwgUVBhaW50ZXIgKnAKKyB7CisgICAgIFFfUShjb25zdCBR VGV4dERvY3VtZW50TGF5b3V0KTsKKyAgICAgY29uc3QgUVRleHRCbG9ja0Zvcm1hdCBibG9ja0Zv cm1hdCA9IGJsLmJsb2NrRm9ybWF0KCk7CistICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFy Rm9ybWF0ID0gUVRleHRDdXJzb3IoYmwpLmNoYXJGb3JtYXQoKTsKKysgICAgY29uc3QgUVRleHRD aGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBibC5jaGFyRm9ybWF0KCk7CisgICAgIFFGb250IGZvbnQo Y2hhckZvcm1hdC5mb250KCkpOworICAgICBpZiAocS0+cGFpbnREZXZpY2UoKSkKKyAgICAgICAg IGZvbnQgPSBRRm9udChmb250LCBxLT5wYWludERldmljZSgpKTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRl eHRlbmdpbmUuY3BwCitpbmRleCBjZTRhYmFjNDcyLi5hNmM2NmU1ZDJkIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3RleHQvcXRleHRlbmdpbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysq KiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0 dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBRdEd1aSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMTU2NSw2ICsxNTY1LDEy IEBAIHZvaWQgUVRleHRFbmdpbmU6OnNoYXBlVGV4dChpbnQgaXRlbSkgY29uc3QKKyAgICAgICAg IC8vIE92ZXJ3cml0ZSB3aXRoIDAgdG9rZW4gdG8gaW5kaWNhdGUgZmFpbHVyZQorICAgICAgICAg UUdseXBoTGF5b3V0IGcgPSBhdmFpbGFibGVHbHlwaHMoJnNpKTsKKyAgICAgICAgIGcuZ2x5cGhz WzBdID0gMDsKKysgICAgICAgIGcuYXR0cmlidXRlc1swXS5jbHVzdGVyU3RhcnQgPSB0cnVlOwor KworKyAgICAgICAgdXNob3J0ICpsb2dfY2x1c3RlcnMgPSBsb2dDbHVzdGVycygmc2kpOworKyAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtTGVuZ3RoOyArK2kpCisrICAgICAgICAgICAg bG9nX2NsdXN0ZXJzW2ldID0gMDsKKysKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAgYi9xdGJh c2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitpbmRleCBmYmI2M2E5NDA4Li40 ZDVmYWZhYWE3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZp Y2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAor QEAgLTU0LDYgKzU0LDggQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9uLmg+ CisgI2luY2x1ZGUgPHFkaXIuaD4KKyAKKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWxvY2tp bmdfcC5oPgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFPcGVuVXJsSGFuZGxl clJlZ2lzdHJ5IDogcHVibGljIFFPYmplY3QKK0BAIC04MSw2ICs4Myw3IEBAIFFfR0xPQkFMX1NU QVRJQyhRT3BlblVybEhhbmRsZXJSZWdpc3RyeSwgaGFuZGxlclJlZ2lzdHJ5KQorIAorIHZvaWQg UU9wZW5VcmxIYW5kbGVyUmVnaXN0cnk6OmhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCAqaGFuZGxl cikKKyB7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKG11dGV4KTsKKyAg ICAgSGFuZGxlckhhc2g6Okl0ZXJhdG9yIGl0ID0gaGFuZGxlcnMuYmVnaW4oKTsKKyAgICAgd2hp bGUgKGl0ICE9IGhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgICBpZiAoaXQtPnJlY2VpdmVyID09 IGhhbmRsZXIpIHsKK0BAIC0yOTQsNyArMjk3LDggQEAgdm9pZCBRRGVza3RvcFNlcnZpY2VzOjpz ZXRVcmxIYW5kbGVyKGNvbnN0IFFTdHJpbmcgJnNjaGVtZSwgUU9iamVjdCAqcmVjZWl2ZXIsIGMK KyAgICAgaC5uYW1lID0gbWV0aG9kOworICAgICByZWdpc3RyeS0+aGFuZGxlcnMuaW5zZXJ0KHNj aGVtZS50b0xvd2VyKCksIGgpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlY2VpdmVyLCBTSUdO QUwoZGVzdHJveWVkKFFPYmplY3QqKSksCistICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnks IFNMT1QoaGFuZGxlckRlc3Ryb3llZChRT2JqZWN0KikpKTsKKysgICAgICAgICAgICAgICAgICAg ICByZWdpc3RyeSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QqKSksCisrICAgICAgICAg ICAgICAgICAgICAgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworIH0KKyAKKyAvKiEKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3Vp L3V0aWwvcXBrbWhhbmRsZXIuY3BwCitpbmRleCBlMGMzYjc1ZWZlLi4zNDE0ZjlkOGJhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKKysrKyBiL3F0YmFz ZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCitAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3Qg UGttVHlwZQorICAgICBxdWludDMyIGJ5dGVzUGVyQmxvY2s7CisgfTsKKyAKKy1zdGF0aWMgUGtt VHlwZSB0eXBlTWFwWzVdID0geworK3N0YXRpYyBjb25zdGV4cHIgUGttVHlwZSB0eXBlTWFwWzVd ID0geworICAgICB7IDB4OEQ2NCwgIDggfSwgICAvLyBHTF9FVEMxX1JHQjhfT0VTCisgICAgIHsg MHg5Mjc0LCAgOCB9LCAgIC8vIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyCisgICAgIHsgMCwgMCB9 LCAgICAgICAgIC8vIHVudXNlZCAob2Jzb2xldGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9u ZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwIGIvcXRiYXNlL3NyYy9uZXR3 b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitpbmRleCBiNmJlOTMxNDdhLi42 ZTY5YjRjNGQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29y a3JlcGx5ZmlsZWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3 b3JrcmVwbHlmaWxlaW1wbC5jcHAKK0BAIC04OSw5ICs4OSwxMCBAQCBRTmV0d29ya1JlcGx5Rmls ZUltcGw6OlFOZXR3b3JrUmVwbHlGaWxlSW1wbChRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1hbmFn ZXIsIGNvbgorICAgICAgICAgLy8gd2UgaGFuZGxlIG9ubHkgbG9jYWwgZmlsZXMKKyAgICAgICAg IFFTdHJpbmcgbXNnID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRTmV0d29ya0FjY2Vz c0ZpbGVCYWNrZW5kIiwgIlJlcXVlc3QgZm9yIG9wZW5pbmcgbm9uLWxvY2FsIGZpbGUgJTEiKS5h cmcodXJsLnRvU3RyaW5nKCkpOworICAgICAgICAgc2V0RXJyb3IoUU5ldHdvcmtSZXBseTo6UHJv dG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJyb3IsIG1zZyk7CisrICAgICAgICBzZXRGaW5pc2hlZCh0 cnVlKTsgLy8gV2UncmUgZmluaXNoZWQsIHdpbGwgZW1pdCBmaW5pc2hlZCgpIGFmdGVyIGN0b3Ig aXMgZG9uZS4KKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImVycm9y T2NjdXJyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKyAgICAgICAgICAgICBRX0FSRyhRTmV0 d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IsIFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9w ZXJhdGlvbkVycm9yKSk7CistICAgICAgICBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsKKysgICAg ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdKCl7IGZpbGVPcGVuRmlu aXNoZWQoZmFsc2UpOyB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgICAgICByZXR1cm47 CisgICAgIH0KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNz L3FuZXR3b3JrcmVwbHlpbXBsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdv cmtyZXBseWltcGwuY3BwCitpbmRleCBiY2RmNmVlMmYxLi4zYjZkZWI4MmJkIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKKysrKyBi L3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCitAQCAtNjgw LDcgKzY4MCw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUltcGxQcml2YXRlOjphcHBlbmREb3duc3Ry ZWFtRGF0YShRSU9EZXZpY2UgKmRhdGEpCisgICAgIC8vIHJlYWQgdW50aWwgRU9GIGZyb20gZGF0 YQorICAgICBpZiAoUV9VTkxJS0VMWShjb3B5RGV2aWNlKSkgeworICAgICAgICAgcUNyaXRpY2Fs KCJRTmV0d29ya1JlcGx5SW1wbDogY29weSBmcm9tIFFJT0RldmljZSBhbHJlYWR5IGluIHByb2dy ZXNzIC0tICIKKy0gICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9ibHkgbmVlZHMgdG8gYmUg Zml4ZWQiKTsKKysgICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9iYWJseSBuZWVkcyB0byBi ZSBmaXhlZCIpOworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAgYi9xdGJhc2Uvc3JjL25l dHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAoraW5kZXggZDlmZTdiYzQ3Yi4uY2NkMDRi Mjk0YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0 b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNw cAorQEAgLTUwLDYgKzUwLDcgQEAKKyAjaW5jbHVkZSA8cXN0cmluZy5oPgorICNpbmNsdWRlIDxx ZGF0ZXRpbWUuaD4KKyAjaW5jbHVkZSA8cXJhbmRvbS5oPgorKyNpbmNsdWRlICJwcml2YXRlL3Fz eXN0ZW1saWJyYXJ5X3AuaCIKKyAKKyAjaWZkZWYgUV9PU19XSU4KKyAjaW5jbHVkZSA8cW11dGV4 Lmg+CitAQCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGJvb2wgcV9TU1BJX2xpYnJhcnlfbG9h ZCgpCisgCisgICAgIC8vIEluaXRpYWxpemUgc2VjdXJpdHkgaW50ZXJmYWNlCisgICAgIGlmIChw U2VjdXJpdHlGdW5jdGlvblRhYmxlID09IG51bGxwdHIpIHsKKy0gICAgICAgIHNlY3VyaXR5RExM SGFuZGxlID0gTG9hZExpYnJhcnkoTCJzZWN1cjMyLmRsbCIpOworKyAgICAgICAgc2VjdXJpdHlE TExIYW5kbGUgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInNlY3VyMzIiKTsKKyAgICAgICAgIGlm IChzZWN1cml0eURMTEhhbmRsZSAhPSBudWxscHRyKSB7CisgICAgICAgICAgICAgSU5JVF9TRUNV UklUWV9JTlRFUkZBQ0UgcEluaXRTZWN1cml0eUludGVyZmFjZSA9CisgICAgICAgICAgICAgICAg IHJlaW50ZXJwcmV0X2Nhc3Q8SU5JVF9TRUNVUklUWV9JTlRFUkZBQ0U+KAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwIGIvcXRiYXNlL3Ny Yy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK2luZGV4IDliMGEyZWU2NjkuLjcz Njc5YzllZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5m b191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5p eC5jcHAKK0BAIC0xMjIsNyArMTIyLDYgQEAgc3RhdGljIFFGdW5jdGlvblBvaW50ZXIgcmVzb2x2 ZVN5bWJvbChRTGlicmFyeSAmbGliLCBjb25zdCBjaGFyICpzeW0pCisgCisgTGliUmVzb2x2OjpM aWJSZXNvbHYoKQorIHsKKy0gICAgUUxpYnJhcnkgbGliOworICNpZmRlZiBMSUJSRVNPTFZfU08K KyAgICAgbGliLnNldEZpbGVOYW1lKFFTdHJpbmdMaXRlcmFsKExJQlJFU09MVl9TTykpOworICAg ICBpZiAoIWxpYi5sb2FkKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tl dC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQvcXNv Y2tzNXNvY2tldGVuZ2luZS5jcHAKK2luZGV4IDNhMDQ2ZmQxMTYuLjk3ZmFkY2EwYjMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3Bw CitAQCAtMTI5Niw3ICsxMjk2LDcgQEAgdm9pZCBRU29ja3M1U29ja2V0RW5naW5lUHJpdmF0ZTo6 X3FfdWRwU29ja2V0UmVhZE5vdGlmaWNhdGlvbigpCisgICAgICAgICBpbnQgcG9zID0gMDsKKyAg ICAgICAgIGNvbnN0IGNoYXIgKmJ1ZiA9IGluQnVmLmNvbnN0RGF0YSgpOworICAgICAgICAgaWYg KGluQnVmLnNpemUoKSA8IDQpIHsKKy0gICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwgImJ1 Z3VzIHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKysgICAgICAgICAgICBRU09DS1M1X0RfREVCVUcg PDwgImJvZ3VzIHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKyAgICAgICAgICAgICByZXR1cm47Cisg ICAgICAgICB9CisgICAgICAgICBRU29ja3M1UmV2aXZlZERhdGFncmFtIGRhdGFncmFtOworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitpbmRleCBj OWYyMDJmNTczLi5jOTkyZGE5ZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3Nz bC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9x c3NsY29udGV4dF9vcGVuc3NsLmNwcAorQEAgLTQwOSw3ICs0MDksNyBAQCBpbml0X2NvbnRleHQ6 CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfME9yTGF0ZXI6CisgICAg ICAgICBtaW5WZXJzaW9uID0gRFRMUzFfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24gPSBE VExTX01BWF9WRVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBicmVh azsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfMjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBEVExT MV8yX1ZFUlNJT047CitAQCAtNDE3LDcgKzQxNyw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgICAg IGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yT3JMYXRlcjoKKyAgICAgICAgIG1pblZl cnNpb24gPSBEVExTMV8yX1ZFUlNJT047CistICAgICAgICBtYXhWZXJzaW9uID0gRFRMU19NQVhf VkVSU0lPTjsKKysgICAgICAgIG1heFZlcnNpb24gPSAwOworICAgICAgICAgYnJlYWs7CisgICAg IGNhc2UgUVNzbDo6VGxzVjFfM09yTGF0ZXI6CisgI2lmZGVmIFRMUzFfM19WRVJTSU9OCitAQCAt NDU1LDcgKzQ1NSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgfQorIAorICAgICAvLyBFbmFibGUg YnVnIHdvcmthcm91bmRzLgorLSAgICBsb25nIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2VuZFBy aXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBjb25m aWd1cmF0aW9uLmQtPnNzbE9wdGlvbnMpOworKyAgICBxc3Nsb3B0aW9ucyBvcHRpb25zID0gUVNz bFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRpb24u cHJvdG9jb2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKyAgICAgcV9TU0xfQ1RY X3NldF9vcHRpb25zKHNzbENvbnRleHQtPmN0eCwgb3B0aW9ucyk7CisgCisgICAgIC8vIFRlbGwg T3BlblNTTCB0byByZWxlYXNlIG1lbW9yeSBlYXJseQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwIGIvcXRi YXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNzbC5j cHAKK2luZGV4IGFhZjg3NDExMzAuLmI1ODkzNTM3MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAorKysr IGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3Bl bnNzbC5jcHAKK0BAIC01OSw1NyArNTksNiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAor LSNpZmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCistc3RhdGljIGludCBxX0RIX2No ZWNrKERIICpkaCwgaW50ICpzdGF0dXMpCisteworLSAgICAvLyBESF9jaGVjayB3YXMgZmlyc3Qg ZGVwcmVjYXRlZCBpbiBPcGVuU1NMIDMuMC4wLCBhcyBsb3ctbGV2ZWwKKy0gICAgLy8gQVBJOyB0 aGUgRVZQX1BLRVkgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3YXMgYWR2aXNlZCBhcyBhbiBhbHRlcm5h dGl2ZS4KKy0gICAgLy8gQXMgb2Ygbm93IEVWUF9QS0VZX3BhcmFtc19jaGVjayBlbmRzIHVwIGNh bGxpbmcgLi4uIERIX2NoZWNrLAorLSAgICAvLyB3aGljaCBpcyBnb29kIGVub3VnaC4KKy0KKy0g ICAgUV9BU1NFUlQoZGgpOworLSAgICBRX0FTU0VSVChzdGF0dXMpOworLQorLSAgICBFVlBfUEtF WSAqa2V5ID0gcV9FVlBfUEtFWV9uZXcoKTsKKy0gICAgaWYgKCFrZXkpIHsKKy0gICAgICAgIHFD V2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2Nr ZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1 cm4gMDsKKy0gICAgfQorLSAgICBjb25zdCBhdXRvIGtleURlbGV0ZXIgPSBxU2NvcGVHdWFyZChb a2V5XSgpeworLSAgICAgICAgcV9FVlBfUEtFWV9mcmVlKGtleSk7CistICAgIH0pOworLSAgICBp ZiAoIXFfRVZQX1BLRVlfc2V0MV9ESChrZXksIGRoKSkgeworLSAgICAgICAgcUNXYXJuaW5nKGxj U3NsLCAiRVZQX1BLRVlfc2V0MV9ESCBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRCYWNr ZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4gMDsK Ky0gICAgfQorLQorLSAgICBFVlBfUEtFWV9DVFggKmtleUN0eCA9IHFfRVZQX1BLRVlfQ1RYX25l dyhrZXksIG51bGxwdHIpOworLSAgICBpZiAoIWtleUN0eCkgeworLSAgICAgICAgcUNXYXJuaW5n KGxjU3NsLCAiRVZQX1BLRVlfQ1RYX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRC YWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4g MDsKKy0gICAgfQorLSAgICBjb25zdCBhdXRvIGN0eERlbGV0ZXIgPSBxU2NvcGVHdWFyZChba2V5 Q3R4XXsKKy0gICAgICAgIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoa2V5Q3R4KTsKKy0gICAgfSk7Cist CistICAgIGNvbnN0IGludCByZXN1bHQgPSBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKGtleUN0eCk7 CistICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7 CistICAgIC8vIE5vdGU6IHVubGlrZSBESF9jaGVjaywgd2UgY2Fubm90IG9idGFpbiB0aGUgJ3N0 YXR1cycsCistICAgIC8vIGlmIHRoZSAncmVzdWx0JyBpcyAwIChhY3R1YWxseSB0aGUgcmVzdWx0 IGlzIDEgb25seQorLSAgICAvLyBpZiB0aGlzICdzdGF0dXMnIHdhcyAwKS4gV2UgY291bGQgcHJv YmFibHkgY2hlY2sgdGhlCistICAgIC8vIGVycm9ycyBmcm9tIHRoZSBlcnJvciBxdWV1ZSwgYnV0 IGl0J3Mgbm90IG5lZWRlZCBhbnl3YXkKKy0gICAgLy8gLSBzZWUgdGhlICdpc1NhZmVESCcgYmVs b3csIGhvdyBpdCByZXR1cm5zIGltbWVkaWF0ZWx5CistICAgIC8vIG9uIDAuCistICAgIFFfVU5V U0VEKHN0YXR1cykKKy0KKy0gICAgcmV0dXJuIHJlc3VsdDsKKy19CistI2VuZGlmIC8vIE9QRU5T U0xfTk9fREVQUkVDQVRFRF8zXzAKKy0KKyBzdGF0aWMgYm9vbCBpc1NhZmVESChESCAqZGgpCisg eworICAgICBpbnQgc3RhdHVzID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbC5jcHAKK2luZGV4IDM3ZmFkMmE2OGYuLjhmNjg1OGM4NjcgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKKysrKyBi L3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorQEAgLTU1MCw5 ICs1NTAsOSBAQCBzdGF0aWMgdm9pZCBxX2xvYWRDaXBoZXJzRm9yQ29ubmVjdGlvbihTU0wgKmNv bm5lY3Rpb24sIFFMaXN0PFFTc2xDaXBoZXI+ICZjaXBoZQorIC8vIERlZmluZWQgaW4gcXNzbHNv Y2tldC5jcHAKKyB2b2lkIHFfc2V0RGVmYXVsdER0bHNDaXBoZXJzKGNvbnN0IFFMaXN0PFFTc2xD aXBoZXI+ICZjaXBoZXJzKTsKKyAKKy1sb25nIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0 dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0 aW9ucyBzc2xPcHRpb25zKQorK3Fzc2xvcHRpb25zIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6 c2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3Ns T3B0aW9ucyBzc2xPcHRpb25zKQorIHsKKy0gICAgbG9uZyBvcHRpb25zOworKyAgICBxc3Nsb3B0 aW9ucyBvcHRpb25zOworICAgICBpZiAocHJvdG9jb2wgPT0gUVNzbDo6VGxzVjFTc2xWMykKKyAg ICAgICAgIG9wdGlvbnMgPSBTU0xfT1BfQUxMfFNTTF9PUF9OT19TU0x2MnxTU0xfT1BfTk9fU1NM djM7CisgICAgIGVsc2UgaWYgKHByb3RvY29sID09IFFTc2w6OlNlY3VyZVByb3RvY29scykKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgg Yi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK2luZGV4IDQx MDNkZTIzZTguLjU1NDc1ODkyNTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3Ns L3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bHNvY2tldF9vcGVuc3NsX3AuaAorQEAgLTEwNyw2ICsxMDcsMTIgQEAKKyAKKyBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5T U0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrdHlwZWRlZiB1aW50NjRfdCBxc3Nsb3B0aW9uczsKKysj ZWxzZQorK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBxc3Nsb3B0aW9uczsKKysjZW5kaWYKKysKKyBz dHJ1Y3QgUVNzbEVycm9yRW50cnkgeworICAgICBpbnQgY29kZTsKKyAgICAgaW50IGRlcHRoOwor QEAgLTE3MSw3ICsxNzcsNyBAQCBwdWJsaWM6CisgICAgIFFWZWN0b3I8UVNzbEVycm9yPiBvY3Nw RXJyb3JzOworICAgICBRQnl0ZUFycmF5IG9jc3BSZXNwb25zZURlcjsKKyAKKy0gICAgUV9BVVRP VEVTVF9FWFBPUlQgc3RhdGljIGxvbmcgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90 b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKysgICAgUV9BVVRP VEVTVF9FWFBPUlQgc3RhdGljIHFzc2xvcHRpb25zIHNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6 U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7CisgICAg IHN0YXRpYyBRU3NsQ2lwaGVyIFFTc2xDaXBoZXJfZnJvbV9TU0xfQ0lQSEVSKGNvbnN0IFNTTF9D SVBIRVIgKmNpcGhlcik7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+IFNUQUNL T0ZYNTA5X3RvX1FTc2xDZXJ0aWZpY2F0ZXMoU1RBQ0tfT0YoWDUwOSkgKng1MDkpOworICAgICBz dGF0aWMgUUxpc3Q8UVNzbEVycm9yPiB2ZXJpZnkoY29uc3QgUUxpc3Q8UVNzbENlcnRpZmljYXRl PiAmY2VydGlmaWNhdGVDaGFpbiwgY29uc3QgUVN0cmluZyAmaG9zdE5hbWUpOworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3Bw IGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAK K2luZGV4IGU1M2ZiMjc5ZjAuLjQ1OWNjZDBiMTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25l dHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK0BAIC0xNDgsNyAr MTQ4LDYgQEAgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3VwX3JlZiwgRVZQX1BLRVkgKmEsIGEs IHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQzIoRVZQX1BLRVlfQ1RYICosIEVWUF9QS0VZ X0NUWF9uZXcsIEVWUF9QS0VZICpwa2V5LCBwa2V5LCBFTkdJTkUgKmUsIGUsIHJldHVybiBudWxs cHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3BhcmFtX2NoZWNrLCBFVlBf UEtFWV9DVFggKmN0eCwgY3R4LCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwg RVZQX1BLRVlfQ1RYX2ZyZWUsIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiwgcmV0dXJu KQorLURFRklORUZVTkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0 dXJuIE5JRF91bmRlZiwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBSU0FfYml0cywgUlNBICph LCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBEU0FfYml0cywgRFNBICph LCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBPUEVOU1NMX3NrX251bSwg T1BFTlNTTF9TVEFDSyAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCitAQCAtMTU4LDcgKzE1Nyw3 IEBAIERFRklORUZVTkMyKHZvaWQsIE9QRU5TU0xfc2tfcHVzaCwgT1BFTlNTTF9TVEFDSyAqYSwg YSwgdm9pZCAqYiwgYiwgcmV0dXJuLCBEVU1NCisgREVGSU5FRlVOQyh2b2lkLCBPUEVOU1NMX3Nr X2ZyZWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVO QzIodm9pZCAqLCBPUEVOU1NMX3NrX3ZhbHVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCBpbnQgYiwg YiwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgU1NMX3Nlc3Npb25f cmV1c2VkLCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCistREVGSU5FRlVOQzIodW5zaWdu ZWQgbG9uZywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4LCBjdHgsIHVuc2lnbmVk IGxvbmcgb3AsIG9wLCByZXR1cm4gMCwgcmV0dXJuKQorK0RFRklORUZVTkMyKHFzc2xvcHRpb25z LCBTU0xfQ1RYX3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgcXNzbG9wdGlvbnMgb3As IG9wLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfQ1RYX2dldF9zZWN1 cml0eV9sZXZlbCwgY29uc3QgU1NMX0NUWCAqY3R4LCBjdHgsIHJldHVybiAtMSwgcmV0dXJuKQor IERFRklORUZVTkMyKHZvaWQsIFNTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsLCBTU0xfQ1RYICpj dHgsIGN0eCwgaW50IGxldmVsLCBsZXZlbCwgcmV0dXJuLCByZXR1cm4pCisgI2lmZGVmIFRMUzFf M19WRVJTSU9OCitAQCAtMzcxLDcgKzM3MCwxNSBAQCBERUZJTkVGVU5DKGNvbnN0IFNTTF9DSVBI RVIgKiwgU1NMX2dldF9jdXJyZW50X2NpcGhlciwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0cgor IERFRklORUZVTkMoaW50LCBTU0xfdmVyc2lvbiwgY29uc3QgU1NMICphLCBhLCByZXR1cm4gMCwg cmV0dXJuKQorIERFRklORUZVTkMyKGludCwgU1NMX2dldF9lcnJvciwgU1NMICphLCBhLCBpbnQg YiwgYiwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhTVEFDS19PRihYNTA5KSAqLCBT U0xfZ2V0X3BlZXJfY2VydF9jaGFpbiwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJu KQorKworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9WRVJT SU9OX01BSk9SID49IDMKKytERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldDFfcGVlcl9jZXJ0aWZp Y2F0ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMoaW50 LCBFVlBfUEtFWV9nZXRfYmFzZV9pZCwgY29uc3QgRVZQX1BLRVkgKnBrZXksIHBrZXksIHJldHVy biAtMSwgcmV0dXJuKQorKyNlbHNlCisgREVGSU5FRlVOQyhYNTA5ICosIFNTTF9nZXRfcGVlcl9j ZXJ0aWZpY2F0ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZV TkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91bmRl ZiwgcmV0dXJuKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKworIERF RklORUZVTkMobG9uZywgU1NMX2dldF92ZXJpZnlfcmVzdWx0LCBjb25zdCBTU0wgKmEsIGEsIHJl dHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMoU1NMICosIFNTTF9uZXcsIFNTTF9DVFggKmEs IGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhTU0xfQ1RYICosIFNTTF9n ZXRfU1NMX0NUWCwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorQEAgLTQ5Miw5 ICs0OTksNyBAQCBERUZJTkVGVU5DKERIICosIERIX25ldywgRFVNTVlBUkcsIERVTU1ZQVJHLCBy ZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwgREhfZnJlZSwgREggKmRo LCBkaCwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMyhESCAqLCBkMmlfREhwYXJhbXMs IERIKiphLCBhLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIHBwLCBsb25nIGxlbmd0aCwgbGVu Z3RoLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMyKGludCwgaTJkX0RIcGFy YW1zLCBESCAqYSwgYSwgdW5zaWduZWQgY2hhciAqKnAsIHAsIHJldHVybiAtMSwgcmV0dXJuKQor LSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIERFRklORUZVTkMyKGludCwgREhf Y2hlY2ssIERIICpkaCwgZGgsIGludCAqY29kZXMsIGNvZGVzLCByZXR1cm4gMCwgcmV0dXJuKQor LSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzMoQklHTlVN ICosIEJOX2JpbjJibiwgY29uc3QgdW5zaWduZWQgY2hhciAqcywgcywgaW50IGxlbiwgbGVuLCBC SUdOVU0gKnJldCwgcmV0LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIAorICNpZm5kZWYgT1BF TlNTTF9OT19FQworQEAgLTg2OCw3ICs4NzMsNiBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1i b2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX25ldykKKyAgICAgUkVTT0xWRUZV TkMoRVZQX1BLRVlfcGFyYW1fY2hlY2spCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NUWF9m cmVlKQorLSAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorICAgICBSRVNPTFZFRlVO QyhSU0FfYml0cykKKyAgICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9za19uZXdfbnVsbCkKKyAgICAg UkVTT0xWRUZVTkMoT1BFTlNTTF9za19wdXNoKQorQEAgLTExMDcsNyArMTExMSwxNSBAQCBib29s IHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX3ZlcnNpb24p CisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfZXJyb3IpCisgICAgIFJFU09MVkVGVU5DKFNTTF9n ZXRfcGVlcl9jZXJ0X2NoYWluKQorKworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpP UikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysgICAgUkVTT0xWRUZVTkMoU1NMX2dl dDFfcGVlcl9jZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfZ2V0X2Jhc2Vf aWQpCisrI2Vsc2UKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRpZmljYXRlKQor KyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZF UlNJT05fTUFKT1IgPj0gMworKworICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3ZlcmlmeV9yZXN1 bHQpCisgICAgIFJFU09MVkVGVU5DKFNTTF9uZXcpCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRf U1NMX0NUWCkKK0BAIC0xMjA2LDkgKzEyMTgsNyBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1i b2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoREhfZnJlZSkKKyAgICAgUkVTT0xWRUZVTkMoZDJpX0RI cGFyYW1zKQorICAgICBSRVNPTFZFRlVOQyhpMmRfREhwYXJhbXMpCistI2lmbmRlZiBPUEVOU1NM X05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKERIX2NoZWNrKQorLSNlbmRpZiAv LyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKEJOX2JpbjJibikK KyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaCBiL3F0YmFzZS9zcmMvbmV0d29y ay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitpbmRleCA5NWU4ODk3YTNiLi4y N2FlZmZhMThhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 X29wZW5zc2xfc3ltYm9sc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNv Y2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitAQCAtMjM3LDcgKzIzNyw2IEBAIFFfQVVUT1RFU1Rf RVhQT1JUIGludCBxX0VWUF9QS0VZX3VwX3JlZihFVlBfUEtFWSAqYSk7CisgRVZQX1BLRVlfQ1RY ICpxX0VWUF9QS0VZX0NUWF9uZXcoRVZQX1BLRVkgKnBrZXksIEVOR0lORSAqZSk7Cisgdm9pZCBx X0VWUF9QS0VZX0NUWF9mcmVlKEVWUF9QS0VZX0NUWCAqY3R4KTsKKyBpbnQgcV9FVlBfUEtFWV9w YXJhbV9jaGVjayhFVlBfUEtFWV9DVFggKmN0eCk7CistaW50IHFfRVZQX1BLRVlfYmFzZV9pZChF VlBfUEtFWSAqYSk7CisgaW50IHFfUlNBX2JpdHMoUlNBICphKTsKKyBRX0FVVE9URVNUX0VYUE9S VCBpbnQgcV9PUEVOU1NMX3NrX251bShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNUX0VY UE9SVCB2b2lkIHFfT1BFTlNTTF9za19wb3BfZnJlZShPUEVOU1NMX1NUQUNLICphLCB2b2lkICgq Yikodm9pZCAqKSk7CitAQCAtMjQ2LDcgKzI0NSw3IEBAIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQg cV9PUEVOU1NMX3NrX3B1c2goT1BFTlNTTF9TVEFDSyAqc3QsIHZvaWQgKmRhdGEpOworIFFfQVVU T1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX2ZyZWUoT1BFTlNTTF9TVEFDSyAqYSk7Cisg UV9BVVRPVEVTVF9FWFBPUlQgdm9pZCAqIHFfT1BFTlNTTF9za192YWx1ZShPUEVOU1NMX1NUQUNL ICphLCBpbnQgYik7CisgaW50IHFfU1NMX3Nlc3Npb25fcmV1c2VkKFNTTCAqYSk7CistdW5zaWdu ZWQgbG9uZyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCB1bnNpZ25lZCBsb25n IG9wKTsKKytxc3Nsb3B0aW9ucyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCBx c3Nsb3B0aW9ucyBvcCk7CisgaW50IHFfT1BFTlNTTF9pbml0X3NzbCh1aW50NjRfdCBvcHRzLCBj b25zdCBPUEVOU1NMX0lOSVRfU0VUVElOR1MgKnNldHRpbmdzKTsKKyBzaXplX3QgcV9TU0xfZ2V0 X2NsaWVudF9yYW5kb20oU1NMICphLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4p OworIHNpemVfdCBxX1NTTF9TRVNTSU9OX2dldF9tYXN0ZXJfa2V5KGNvbnN0IFNTTF9TRVNTSU9O ICpzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworQEAgLTUxMCw3 ICs1MDksNiBAQCBjb25zdCBTU0xfQ0lQSEVSICpxX1NTTF9nZXRfY3VycmVudF9jaXBoZXIoU1NM ICphKTsKKyBpbnQgcV9TU0xfdmVyc2lvbihjb25zdCBTU0wgKmEpOworIGludCBxX1NTTF9nZXRf ZXJyb3IoU1NMICphLCBpbnQgYik7CisgU1RBQ0tfT0YoWDUwOSkgKnFfU1NMX2dldF9wZWVyX2Nl cnRfY2hhaW4oU1NMICphKTsKKy1YNTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShTU0wg KmEpOworIGxvbmcgcV9TU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoY29uc3QgU1NMICphKTsKKyBTU0wg KnFfU1NMX25ldyhTU0xfQ1RYICphKTsKKyBTU0xfQ1RYICpxX1NTTF9nZXRfU1NMX0NUWChTU0wg KmEpOworQEAgLTU4MiwxMCArNTgwLDcgQEAgREggKnFfREhfbmV3KCk7Cisgdm9pZCBxX0RIX2Zy ZWUoREggKmRoKTsKKyBESCAqcV9kMmlfREhwYXJhbXMoREggKiphLCBjb25zdCB1bnNpZ25lZCBj aGFyICoqcHAsIGxvbmcgbGVuZ3RoKTsKKyBpbnQgcV9pMmRfREhwYXJhbXMoREggKmEsIHVuc2ln bmVkIGNoYXIgKipwKTsKKy0KKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBp bnQgcV9ESF9jaGVjayhESCAqZGgsIGludCAqY29kZXMpOworLSNlbmRpZiAvLyBPUEVOU1NMX05P X0RFUFJFQ0FURURfM18wCisgCisgQklHTlVNICpxX0JOX2JpbjJibihjb25zdCB1bnNpZ25lZCBj aGFyICpzLCBpbnQgbGVuLCBCSUdOVU0gKnJldCk7CisgI2RlZmluZSBxX1NTTF9DVFhfc2V0X3Rt cF9kaChjdHgsIGRoKSBxX1NTTF9DVFhfY3RybCgoY3R4KSwgU1NMX0NUUkxfU0VUX1RNUF9ESCwg MCwgKGNoYXIgKilkaCkKK0BAIC03NTQsNiArNzQ5LDE3IEBAIHZvaWQgcV9DUllQVE9fZnJlZSh2 b2lkICpzdHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsKKyBpbnQgcV9TU0xfQ1RYX2dl dF9zZWN1cml0eV9sZXZlbChjb25zdCBTU0xfQ1RYICpjdHgpOworIHZvaWQgcV9TU0xfQ1RYX3Nl dF9zZWN1cml0eV9sZXZlbChTU0xfQ1RYICpjdHgsIGludCBsZXZlbCk7CisgCisrLy8gSGVyZSB3 ZSBoYXZlIHRoZSBvbmVzIHRoYXQgbWFrZSBkaWZmZXJlbmNlIGJldHdlZW4gT3BlblNTTCBwcmUv cG9zdCB2MzoKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xf VkVSU0lPTl9NQUpPUiA+PSAzCisrWDUwOSAqcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlKFNT TCAqYSk7CisrI2RlZmluZSBxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSBxX1NTTF9nZXQxX3Bl ZXJfY2VydGlmaWNhdGUKKytpbnQgcV9FVlBfUEtFWV9nZXRfYmFzZV9pZChjb25zdCBFVlBfUEtF WSAqcGtleSk7CisrI2RlZmluZSBxX0VWUF9QS0VZX2Jhc2VfaWQgcV9FVlBfUEtFWV9nZXRfYmFz ZV9pZAorKyNlbHNlCisrWDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUoU1NMICphKTsK KytpbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKysjZW5kaWYgLy8gT1BFTlNT TF9WRVJTSU9OX01BSk9SID49IDMKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRf ZWdsX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0X2Vn bF9wLmgKK2luZGV4IGJmMzdkMDdmZDguLmRiZDQyZmI3OTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCisrKysgYi9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitAQCAtNjEs NyArNjEsMTEgQEAKKyAjIGlmICFkZWZpbmVkKFFfT1NfSU5URUdSSVRZKQorICMgIGRlZmluZSBX SU5fSU5URVJGQUNFX0NVU1RPTSAgIC8vIE5WCisgIyBlbmRpZiAvLyBRX09TX0lOVEVHUklUWQor LSNlbmRpZiAgLy8gUVRfRUdMX05PX1gxMQorKyNlbHNlIC8vIFFUX0VHTF9OT19YMTEKKysvLyBJ ZiBvbmUgaGFzIGFuIGVnbHBsYXRmb3JtLmggd2l0aCBodHRwczovL2dpdGh1Yi5jb20vS2hyb25v c0dyb3VwL0VHTC1SZWdpc3RyeS9wdWxsLzEzMAorKy8vIHRoYXQgbmVlZHMgVVNFX1gxMSB0byBi ZSBkZWZpbmVkLgorKyMgZGVmaW5lIFVTRV9YMTEKKysjZW5kaWYKKyAKKyAjaWZkZWYgUVRfRUdM X1dBWUxBTkQKKyAjIGRlZmluZSBXQVlMQU5EIC8vIE5WCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0 YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250 Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCitpbmRleCAxNTliNDkwY2UwLi4wMGFhODBj ZDU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNl cy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRhYmFz ZS5jcHAKK0BAIC01NjcsNiArNTY3LDggQEAgdm9pZCBRRm9udGNvbmZpZ0RhdGFiYXNlOjpwb3B1 bGF0ZUZvbnREYXRhYmFzZSgpCisgICAgICAgICBmb250cyA9IEZjRm9udExpc3QobnVsbHB0ciwg cGF0dGVybiwgb3MpOworICAgICAgICAgRmNPYmplY3RTZXREZXN0cm95KG9zKTsKKyAgICAgICAg IEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisrICAgICAgICBpZiAoIWZvbnRzKQorKyAgICAg ICAgICAgIHJldHVybjsKKyAgICAgfQorIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbnRz LT5uZm9udDsgaSsrKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lu cHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAoraW5kZXggYjcxM2MxOTQ0Ny4uN2NiOWE4 Yzc5YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNv bW1vbi9xeGtiY29tbW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5w dXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCitAQCAtOTUsNiArOTUsNyBAQCBzdGF0aWMgY29u c3RleHByIGNvbnN0IGF1dG8gS2V5VGJsID0gcU1ha2VBcnJheSgKKyAgICAgICAgIFhrYjJRdDxY S0JfS0VZX0NsZWFyLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X0RlbGV0ZT4sCisgICAgICAg ICBYa2IyUXQ8WEtCX0tFWV9QYXVzZSwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9QYXVzZT4s CisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9QcmludCwgICAgICAgICAgICAgICAgICAgUXQ6Oktl eV9QcmludD4sCisrICAgICAgICBYa2IyUXQ8WEtCX0tFWV9TeXNfUmVxLCAgICAgICAgICAgICAg ICAgUXQ6OktleV9TeXNSZXE+LAorICAgICAgICAgWGtiMlF0PDB4MTAwNUZGNjAsICAgICAgICAg ICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgU3VuIFN5 c1JlcQorICAgICAgICAgWGtiMlF0PDB4MTAwN2ZmMDAsICAgICAgICAgICAgICAgICAgICAgIFF0 OjpLZXlfU3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgWDM4NiBTeXNSZXEKKyAKK0BAIC00 NzEsNyArNDcyLDcgQEAgUVZlY3Rvcjx4a2Jfa2V5c3ltX3Q+IFFYa2JDb21tb246OnRvS2V5c3lt KFFLZXlFdmVudCAqZXZlbnQpCisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPm1vZGlmaWVycygpICYg UXQ6OktleXBhZE1vZGlmaWVyKSB7CisgICAgICAgICBpZiAocXRLZXkgPj0gUXQ6OktleV8wICYm IHF0S2V5IDw9IFF0OjpLZXlfOSkKKyAgICAgICAgICAgICBrZXlzeW1zLmFwcGVuZChYS0JfS0VZ X0tQXzAgKyAocXRLZXkgLSBRdDo6S2V5XzApKTsKKy0gICAgfSBlbHNlIGlmIChpc0xhdGluKHF0 S2V5KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworKyAgICB9IGVsc2UgaWYgKGlzTGF0 aW4xKHF0S2V5KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworICAgICAgICAga2V5c3lt cy5hcHBlbmQocXRLZXkpOworICAgICB9CisgCitAQCAtNTIzLDcgKzUyNCw3IEBAIGludCBRWGti Q29tbW9uOjprZXlzeW1Ub1F0S2V5KHhrYl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2FyZE1v ZGlmaWVycyBtb2RpZmllCisgICAgICAgICAvLyBXaXRoIHN0YW5kYXJkIHNob3J0Y3V0cyB3ZSBz aG91bGQgcHJlZmVyIGEgbGF0aW4gY2hhcmFjdGVyLCB0aGlzIGlzCisgICAgICAgICAvLyBmb3Ig Y2hlY2tzIGxpa2UgInNvbWUgcWtleWV2ZW50ID09IFFLZXlTZXF1ZW5jZTo6Q29weSIgdG8gd29y ayBldmVuCisgICAgICAgICAvLyB3aGVuIHVzaW5nIGZvciBleGFtcGxlICdydXNzaWFuJyBrZXli b2FyZCBsYXlvdXQuCistICAgICAgICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkg eworKyAgICAgICAgaWYgKCFRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAgICAg ICAgICAgeGtiX2tleXN5bV90IGxhdGluS2V5c3ltID0gUVhrYkNvbW1vbjo6bG9va3VwTGF0aW5L ZXlzeW0oc3RhdGUsIGNvZGUpOworICAgICAgICAgICAgIGlmIChsYXRpbktleXN5bSAhPSBYS0Jf S0VZX05vU3ltYm9sKQorICAgICAgICAgICAgICAgICBrZXlzeW0gPSBsYXRpbktleXN5bTsKK0BA IC01NDYsNyArNTQ3LDcgQEAgc3RhdGljIGludCBrZXlzeW1Ub1F0S2V5X2ludGVybmFsKHhrYl9r ZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2QKKyAgICAgfSBlbHNlIGlm IChrZXlzeW0gPj0gWEtCX0tFWV9LUF8wICYmIGtleXN5bSA8PSBYS0JfS0VZX0tQXzkpIHsKKyAg ICAgICAgIC8vIG51bWVyaWMga2V5cGFkIGtleXMKKyAgICAgICAgIHF0S2V5ID0gUXQ6OktleV8w ICsgKGtleXN5bSAtIFhLQl9LRVlfS1BfMCk7CistICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6 aXNMYXRpbihrZXlzeW0pKSB7CisrICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRpbjEo a2V5c3ltKSkgeworICAgICAgICAgcXRLZXkgPSBRWGtiQ29tbW9uOjpxeGtiY29tbW9uX3hrYl9r ZXlzeW1fdG9fdXBwZXIoa2V5c3ltKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIGNoZWNr IGlmIHdlIGhhdmUgYSBkaXJlY3QgbWFwcGluZworQEAgLTY3OCw3ICs2NzksNyBAQCBRTGlzdDxp bnQ+IFFYa2JDb21tb246OnBvc3NpYmxlS2V5cyh4a2Jfc3RhdGUgKnN0YXRlLCBjb25zdCBRS2V5 RXZlbnQgKmV2ZW50LAorICAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG5lZWRlZE1vZHMg PSBNb2RzVGJsW2ldOworICAgICAgICAgaWYgKChtb2RpZmllcnMgJiBuZWVkZWRNb2RzKSA9PSBu ZWVkZWRNb2RzKSB7CisgICAgICAgICAgICAgaWYgKGkgPT0gOCkgeworLSAgICAgICAgICAgICAg ICBpZiAoaXNMYXRpbihiYXNlUXRLZXkpKQorKyAgICAgICAgICAgICAgICBpZiAoaXNMYXRpbjEo YmFzZVF0S2V5KSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg ICAgICAvLyBhZGQgYSBsYXRpbiBrZXkgYXMgYSBmYWxsIGJhY2sga2V5CisgICAgICAgICAgICAg ICAgIHN5bSA9IGxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBrZXljb2RlKTsKK0BAIC03MzMsNyAr NzM0LDcgQEAgdm9pZCBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFw ICprZXltYXApCisgICAgIGZvciAoeGtiX2xheW91dF9pbmRleF90IGxheW91dCA9IDA7IGxheW91 dCA8IGxheW91dENvdW50OyArK2xheW91dCkgeworICAgICAgICAgZm9yICh4a2Jfa2V5Y29kZV90 IGNvZGUgPSBtaW5LZXljb2RlOyBjb2RlIDwgbWF4S2V5Y29kZTsgKytjb2RlKSB7CisgICAgICAg ICAgICAgeGtiX2tleW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBjb2RlLCBsYXlv dXQsIDAsICZrZXlzeW1zKTsKKy0gICAgICAgICAgICBpZiAoa2V5c3ltcyAmJiBpc0xhdGluKGtl eXN5bXNbMF0pKQorKyAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4xKGtleXN5bXNb MF0pKQorICAgICAgICAgICAgICAgICBuckxhdGluS2V5cysrOworICAgICAgICAgICAgIGlmIChu ckxhdGluS2V5cyA+IDEwKSAvLyBhcmJpdHJhcmlseSBjaG9zZW4gdGhyZXNob2xkCisgICAgICAg ICAgICAgICAgIHJldHVybjsKK0BAIC03NjYsNyArNzY3LDcgQEAgeGtiX2tleXN5bV90IFFYa2JD b21tb246Omxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAqc3RhdGUsIHhrYl9rZXljb2RlX3Qg a2V5Y28KKyAgICAgICAgIHhrYl9sZXZlbF9pbmRleF90IGxldmVsID0geGtiX3N0YXRlX2tleV9n ZXRfbGV2ZWwoc3RhdGUsIGtleWNvZGUsIGxheW91dCk7CisgICAgICAgICBpZiAoeGtiX2tleW1h cF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBrZXljb2RlLCBsYXlvdXQsIGxldmVsLCAm c3ltcykgIT0gMSkKKyAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChpc0xhdGlu KHN5bXNbMF0pKSB7CisrICAgICAgICBpZiAoaXNMYXRpbjEoc3ltc1swXSkpIHsKKyAgICAgICAg ICAgICBzeW0gPSBzeW1zWzBdOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGti Y29tbW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9x eGtiY29tbW9uX3AuaAoraW5kZXggNTYxZWFlMDNkYi4uODM4OWJkOGY1YSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uX3Au aAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4a2Jj b21tb25fcC5oCitAQCAtOTQsOCArOTQsOCBAQCBwdWJsaWM6CisgICAgIHN0YXRpYyB2b2lkIHZl cmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCk7CisgICAgIHN0YXRpYyB4a2Jf a2V5c3ltX3QgbG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNvZGVf dCBrZXljb2RlKTsKKyAKKy0gICAgc3RhdGljIGJvb2wgaXNMYXRpbih4a2Jfa2V5c3ltX3Qgc3lt KSB7CistICAgICAgICByZXR1cm4gKChzeW0gPj0gJ2EnICYmIHN5bSA8PSAneicpIHx8IChzeW0g Pj0gJ0EnICYmIHN5bSA8PSAnWicpKTsKKysgICAgc3RhdGljIGJvb2wgaXNMYXRpbjEoeGtiX2tl eXN5bV90IHN5bSkgeworKyAgICAgICAgcmV0dXJuIHN5bSA8PSAweGZmOworICAgICB9CisgICAg IHN0YXRpYyBib29sIGlzS2V5cGFkKHhrYl9rZXlzeW1fdCBzeW0pIHsKKyAgICAgICAgIHJldHVy biBzeW0gPj0gWEtCX0tFWV9LUF9TcGFjZSAmJiBzeW0gPD0gWEtCX0tFWV9LUF85OworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNkZXZp Y2UuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2Rl dmljZS5jcHAKK2luZGV4IDhjZDdmOWIzNjguLjQwNmY4NDY2M2YgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2RldmljZS5j cHAKK0BAIC0zMTgsNyArMzE4LDcgQEAgUVBsYXRmb3JtU2NyZWVuICpRS21zRGV2aWNlOjpjcmVh dGVTY3JlZW5Gb3JDb25uZWN0b3IoZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMsCisgCisgICAgIGlm IChjdXJyZW50IDwgMCAmJiBjcnRjX21vZGUuY2xvY2sgIT0gMCkgeworICAgICAgICAgbW9kZXMg PDwgY3J0Y19tb2RlOworLSAgICAgICAgY3VycmVudCA9IG1vZGUuc2l6ZSgpIC0gMTsKKysgICAg ICAgIGN1cnJlbnQgPSBtb2Rlcy5zaXplKCkgLSAxOworICAgICB9CisgCisgICAgIGlmIChjb25m aWd1cmF0aW9uID09IE91dHB1dENvbmZpZ0N1cnJlbnQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFwdG9y LmNwcAoraW5kZXggOTE1M2ZkMjBiYi4uMjU1ZWE1ZTMzZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlh ZGFwdG9yLmNwcAorQEAgLTE5NCw2ICsxOTQsOSBAQCBRU3RyaW5nIEF0U3BpQWRhcHRvcjo6aW50 cm9zcGVjdChjb25zdCBRU3RyaW5nICZwYXRoKSBjb25zdAorICAgICAgICAgICAgICAgICAiICAg ICAgPGFyZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwiKHNvKVwiLz5cbiIKKyAgICAgICAgICAg ICAgICAgIiAgICAgIDxhbm5vdGF0aW9uIHZhbHVlPVwiUVNwaU9iamVjdFJlZmVyZW5jZVwiIG5h bWU9XCJvcmcucXRwcm9qZWN0LlF0REJ1cy5RdFR5cGVOYW1lLk91dDBcIi8+XG4iCisgICAgICAg ICAgICAgICAgICIgICAgPC9tZXRob2Q+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPG1ldGhv ZCBuYW1lPVwiR2V0QWNjZXNzaWJsZUlkXCI+XG4iCisrICAgICAgICAgICAgICAgICIgICAgICA8 YXJnIGRpcmVjdGlvbj1cIm91dFwiIHR5cGU9XCJzXCIvPlxuIgorKyAgICAgICAgICAgICAgICAi ICAgIDwvbWV0aG9kPlxuIgorICAgICAgICAgICAgICAgICAiICA8L2ludGVyZmFjZT5cbiIKKyAg ICAgICAgICAgICAgICAgKTsKKyAKK0BAIC05MTMsOCArOTE2LDE3IEBAIHZvaWQgQXRTcGlBZGFw dG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2FzZSBR QWNjZXNzaWJsZTo6TmFtZUNoYW5nZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0IHx8IHNl bmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlX2Fj Y2Vzc2libGVfbmFtZSkgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRl cmZhY2UoZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAgUVZhcmlh bnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nl c3NpYmxlLW5hbWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAg IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNl KCk7CisrICAgICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVn KGxjQWNjZXNzaWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJOYW1lQ2hh bmdlZCBldmVudCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGggPSBw YXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9 IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5n KCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgUVZhcmlhbnQ6OmZy b21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkpOwor ICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElfREJV U19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBR TGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0KK0BAIC05 MjIsOCArOTM0LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVu dCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb25DaGFu Z2VkOiB7CisgICAgICAgICBpZiAoc2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2No YW5nZSB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX2Rlc2NyaXB0aW9u KSB7CistICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVudC0+ YWNjZXNzaWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJncyA9 IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3Jp cHRpb24iKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFBY2Nl c3NpYmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7Cisr ICAgICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxjQWNj ZXNzaWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbkNo YW5nZWQgZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7CisrICAgICAgICAgICAgICAg IHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgUVN0cmluZyBwYXRoID0g cGF0aEZvckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3Mg PSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAgICAgUUxhdGluMVN0cmlu ZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBRVmFy aWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6RGVz Y3JpcHRpb24pKSkpOworICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFT dHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAg ICAgICAgIH0KK0BAIC0xMDM4LDcgKzEwNTksOSBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5 KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICAgICAgICAgICAgICAvLyBDb21ibyBCb3gg d2l0aCBBVC1TUEkgbGlrZXMgdG8gYmUgc3BlY2lhbAorICAgICAgICAgICAgICAgICAvLyBJdCBy ZXF1aXJlcyBhIG5hbWUtY2hhbmdlIHRvIHVwZGF0ZSBjYWNoZXMgYW5kIHRoZW4gc2VsZWN0aW9u LWNoYW5nZWQKKyAgICAgICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFj ZShpZmFjZSk7CistICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tEQnVz U2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLCB2 YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdz MSA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICAgICAgUUxhdGlu MVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAgICAgICAgICAgICAgICBR VmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6 TmFtZSkpKSk7CisgICAgICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFT dHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJnczEp OworICAgICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJnczIgPSBwYWNrREJ1c1NpZ25hbEFy Z3VtZW50cyhRU3RyaW5nKCksIDAsIDAsIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50 KFFWYXJpYW50KDApKSkpOworQEAgLTEzNTgsNiArMTM4MSwyNiBAQCB2b2lkIEF0U3BpQWRhcHRv cjo6cmVnaXN0ZXJBcHBsaWNhdGlvbigpCisgICAgIGRlbGV0ZSByZWdpc3RyeTsKKyB9CisgCisr bmFtZXNwYWNlIHsKKytRU3RyaW5nIGFjY2Vzc2libGVJZEZvckFjY2Vzc2libGUoUUFjY2Vzc2li bGVJbnRlcmZhY2UgKmFjY2Vzc2libGUpCisreworKyAgICBRU3RyaW5nIHJlc3VsdDsKKysgICAg d2hpbGUgKGFjY2Vzc2libGUpIHsKKysgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKKysg ICAgICAgICAgICByZXN1bHQucHJlcGVuZChRTGF0aW4xQ2hhcignLicpKTsKKysgICAgICAgIGlm IChhdXRvIG9iaiA9IGFjY2Vzc2libGUtPm9iamVjdCgpKSB7CisrICAgICAgICAgICAgY29uc3Qg UVN0cmluZyBuYW1lID0gb2JqLT5vYmplY3ROYW1lKCk7CisrICAgICAgICAgICAgaWYgKCFuYW1l LmlzRW1wdHkoKSkKKysgICAgICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQobmFtZSk7CisrICAg ICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICByZXN1bHQucHJlcGVuZChRU3RyaW5nOjpm cm9tVXRmOChvYmotPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpKTsKKysgICAgICAgIH0KKysg ICAgICAgIGFjY2Vzc2libGUgPSBhY2Nlc3NpYmxlLT5wYXJlbnQoKTsKKysgICAgfQorKyAgICBy ZXR1cm4gcmVzdWx0OworK30KKyt9IC8vIG5hbWVzcGFjZQorKworIC8vIEFjY2Vzc2libGUKKyBi b29sIEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFj ZSAqaW50ZXJmYWNlLCBjb25zdCBRU3RyaW5nICZmdW5jdGlvbiwgY29uc3QgUURCdXNNZXNzYWdl ICZtZXNzYWdlLCBjb25zdCBRREJ1c0Nvbm5lY3Rpb24gJmNvbm5lY3Rpb24pCisgeworQEAgLTE0 NDEsNiArMTQ4NCw5IEBAIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNlKFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFTCisgICAgICAgICAgICAgY2hp bGRyZW4gPDwgcmVmOworICAgICAgICAgfQorICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1lc3Nh Z2UuY3JlYXRlUmVwbHkoUVZhcmlhbnQ6OmZyb21WYWx1ZShjaGlsZHJlbikpKTsKKysgICAgfSBl bHNlIGlmIChmdW5jdGlvbiA9PSBRTGF0aW4xU3RyaW5nKCJHZXRBY2Nlc3NpYmxlSWQiKSkgewor KyAgICAgICAgc2VuZFJlcGx5KGNvbm5lY3Rpb24sIG1lc3NhZ2UsCisrICAgICAgICAgICAgICAg ICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoYWNjZXNzaWJsZUlkRm9yQWNjZXNz aWJsZShpbnRlcmZhY2UpKSkpOworICAgICB9IGVsc2UgeworICAgICAgICAgcUNEZWJ1ZyhsY0Fj Y2Vzc2liaWxpdHlBdHNwaSkgPDwgIldBUk5JTkc6IEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUlu dGVyZmFjZSBkb2VzIG5vdCBpbXBsZW1lbnQgIiA8PCBmdW5jdGlvbiA8PCBtZXNzYWdlLnBhdGgo KTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9uLmNw cAoraW5kZXggNDVkZGM4ZTQ5Ni4uY2M3MzRhYmM2MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29u bmVjdGlvbi5jcHAKK0BAIC02OSw2ICs2OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBEQnVz Q29ubmVjdGlvbjo6REJ1c0Nvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50KQorICAgICA6IFFPYmpl Y3QocGFyZW50KSwgbV9hMTF5Q29ubmVjdGlvbihRU3RyaW5nKCkpLCBtX2VuYWJsZWQoZmFsc2Up CisgeworKyAgICAvLyBJZiB0aGUgYnVzIGlzIGV4cGxpY2l0bHkgc2V0IHZpYSBlbnYgdmFyIGl0 IG92ZXJyaWRlcyBldmVyeXRoaW5nIGVsc2UuCisrICAgIFFCeXRlQXJyYXkgYWRkcmVzc0VudiA9 IHFnZXRlbnYoIkFUX1NQSV9CVVNfQUREUkVTUyIpOworKyAgICBpZiAoIWFkZHJlc3NFbnYuaXNF bXB0eSgpKSB7CisrICAgICAgICAvLyBPbmx5IGNvbm5lY3Qgb24gbmV4dCBsb29wIHJ1biwgY29u bmVjdGlvbnMgdG8gb3VyIGVuYWJsZWQgc2lnbmFsIGFyZQorKyAgICAgICAgLy8gb25seSBlc3Rh Ymxpc2hlZCBhZnRlciB0aGUgY3RvciByZXR1cm5zLgorKyAgICAgICAgUU1ldGFPYmplY3Q6Omlu dm9rZU1ldGhvZCgKKysgICAgICAgICAgICAgICAgdGhpcywKKysgICAgICAgICAgICAgICAgW3Ro aXMsIGFkZHJlc3NFbnZdIHsKKysgICAgICAgICAgICAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7 CisrICAgICAgICAgICAgICAgICAgICBjb25uZWN0QTExeUJ1cyhRU3RyaW5nOjpmcm9tTG9jYWw4 Qml0KGFkZHJlc3NFbnYpKTsKKysgICAgICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAgICAg UXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAg IC8vIFN0YXJ0IG1vbml0b3JpbmcgaWYgIm9yZy5hMTF5LkJ1cyIgaXMgcmVnaXN0ZXJlZCBhcyBE QnVzIHNlcnZpY2UuCisgICAgIFFEQnVzQ29ubmVjdGlvbiBjID0gUURCdXNDb25uZWN0aW9uOjpz ZXNzaW9uQnVzKCk7CisgICAgIGlmICghYy5pc0Nvbm5lY3RlZCgpKSB7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1 bml4c2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2Vu ZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCitpbmRleCAxYTNjYWIyNzVkLi4yYWJl MDM5MTI2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMv Z2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlcy5j cHAKK0BAIC01MSw2ICs1MSw5IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RU3RhbmRhcmRQYXRocz4K KyAjaW5jbHVkZSA8UXRDb3JlL1FVcmw+CisgCisrI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNh dGlvbj4KKysjaW5jbHVkZSA8UXRHdWkvUVdpbmRvdz4KKysKKyAjaWYgUVRfQ09ORklHKGRidXMp CisgLy8gVGhlc2UgUXRDb3JlIGluY2x1ZGVzIGFyZSBuZWVkZWQgZm9yIHhkZy1kZXNrdG9wLXBv cnRhbCBzdXBwb3J0CisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3Fjb3JlX3VuaXhfcC5oPgor QEAgLTU4LDYgKzYxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FGaWxlSW5mbz4KKyAjaW5jbHVk ZSA8UXRDb3JlL1FVcmxRdWVyeT4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUNvbG9yPgorKworICNp bmNsdWRlIDxRdERCdXMvUURCdXNDb25uZWN0aW9uPgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNN ZXNzYWdlPgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNQZW5kaW5nQ2FsbD4KK0BAIC0xNDIsNiAr MTQ3LDggQEAgc3RhdGljIGlubGluZSBib29sIGRldGVjdFdlYkJyb3dzZXIoY29uc3QgUUJ5dGVB cnJheSAmZGVza3RvcCwKKyAgICAgfQorIAorICAgICBpZiAoZGVza3RvcCA9PSBRQnl0ZUFycmF5 KCJLREUiKSkgeworKyAgICAgICAgaWYgKGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgi a2RlLW9wZW41IiksIGJyb3dzZXIpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICAgLy8gS29ucXVlcm9yIGxhdW5jaGVyCisgICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxlKFFT dHJpbmdMaXRlcmFsKCJrZm1jbGllbnQiKSwgYnJvd3NlcikpIHsKKyAgICAgICAgICAgICBicm93 c2VyLT5hcHBlbmQoUUxhdGluMVN0cmluZygiIGV4ZWMiKSk7CitAQCAtMjk2LDggKzMwMywxMzUg QEAgc3RhdGljIGlubGluZSBRREJ1c01lc3NhZ2UgeGRnRGVza3RvcFBvcnRhbFNlbmRFbWFpbChj b25zdCBRVXJsICZ1cmwpCisgCisgICAgIHJldHVybiBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25C dXMoKS5jYWxsKG1lc3NhZ2UpOworIH0KKysKKytuYW1lc3BhY2UgeworK3N0cnVjdCBYREdEZXNr dG9wQ29sb3IKKyt7CisrICAgIGRvdWJsZSByID0gMDsKKysgICAgZG91YmxlIGcgPSAwOworKyAg ICBkb3VibGUgYiA9IDA7CisrCisrICAgIFFDb2xvciB0b1FDb2xvcigpIGNvbnN0CisrICAgIHsK KysgICAgICAgIGNvbnN0ZXhwciBhdXRvIHJnYk1heCA9IDI1NTsKKysgICAgICAgIHJldHVybiB7 IHN0YXRpY19jYXN0PGludD4ociAqIHJnYk1heCksIHN0YXRpY19jYXN0PGludD4oZyAqIHJnYk1h eCksCisrICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGIgKiByZ2JNYXgpIH07Cisr ICAgIH0KKyt9OworKworK2NvbnN0IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yPj4oY29uc3QgUURC dXNBcmd1bWVudCAmYXJndW1lbnQsIFhER0Rlc2t0b3BDb2xvciAmbXlTdHJ1Y3QpCisreworKyAg ICBhcmd1bWVudC5iZWdpblN0cnVjdHVyZSgpOworKyAgICBhcmd1bWVudCA+PiBteVN0cnVjdC5y ID4+IG15U3RydWN0LmcgPj4gbXlTdHJ1Y3QuYjsKKysgICAgYXJndW1lbnQuZW5kU3RydWN0dXJl KCk7CisrICAgIHJldHVybiBhcmd1bWVudDsKKyt9CisrCisrY2xhc3MgWGRnRGVza3RvcFBvcnRh bENvbG9yUGlja2VyIDogcHVibGljIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcgorK3sKKysg ICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlcihj b25zdCBRU3RyaW5nICZwYXJlbnRXaW5kb3dJZCwgUVdpbmRvdyAqcGFyZW50KQorKyAgICAgICAg OiBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIocGFyZW50KSwgbV9wYXJlbnRXaW5kb3dJZChw YXJlbnRXaW5kb3dJZCkKKysgICAgeworKyAgICB9CisrCisrICAgIHZvaWQgcGlja0NvbG9yKCkg b3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgLy8gREJ1cyBzaWduYXR1cmU6CisrICAgICAgICAv LyBQaWNrQ29sb3IgKElOICAgcyAgICAgIHBhcmVudF93aW5kb3csCisrICAgICAgICAvLyAgICAg ICAgICAgIElOICAgYXtzdn0gIG9wdGlvbnMKKysgICAgICAgIC8vICAgICAgICAgICAgT1VUICBv ICAgICAgaGFuZGxlKQorKyAgICAgICAgLy8gT3B0aW9uczoKKysgICAgICAgIC8vIGhhbmRsZV90 b2tlbiAocykgLSAgQSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxhc3QgZWxlbWVu dCBvZiB0aGUgQGhhbmRsZS4KKysKKysgICAgICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0gUURC dXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAgICAgICBRU3RyaW5nTGl0 ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFsKCIv b3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisrICAgICAgICAgICAgICAgIFFTdHJp bmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKSwgUVN0cmluZ0xp dGVyYWwoIlBpY2tDb2xvciIpKTsKKysgICAgICAgIG1lc3NhZ2UgPDwgbV9wYXJlbnRXaW5kb3dJ ZCA8PCBRVmFyaWFudE1hcCgpOworKworKyAgICAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5n Q2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsK KysgICAgICAgIGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihwZW5k aW5nQ2FsbCwgdGhpcyk7CisrICAgICAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRpbmdD YWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsCisrICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1 c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAgd2F0 Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgIFFEQnVzUGVuZGluZ1Jl cGx5PFFEQnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAg ICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBxV2Fy bmluZygiREJ1cyBjYWxsIHRvIHBpY2sgY29sb3IgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShyZXBseS5lcnJvcigpLm1lc3NhZ2UoKSkp OworKyAgICAgICAgICAgICAgICAgICAgICAgIFFfRU1JVCBjb2xvclBpY2tlZCh7fSk7CisrICAg ICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgIFFEQnVz Q29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9w IiksIHJlcGx5LnZhbHVlKCkucGF0aCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIpLCBRU3Ry aW5nTGl0ZXJhbCgiUmVzcG9uc2UiKSwgdGhpcywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNMT1QoZ290Q29sb3JSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorKyAgICAgICAgICAgICAg ICAgICAgICAgICk7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0p OworKyAgICB9CisrCisrcHJpdmF0ZSBRX1NMT1RTOgorKyAgICB2b2lkIGdvdENvbG9yUmVzcG9u c2UodWludCByZXN1bHQsIGNvbnN0IFFWYXJpYW50TWFwICZtYXApCisrICAgIHsKKysgICAgICAg IGlmIChyZXN1bHQgIT0gMCkKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICBYREdEZXNr dG9wQ29sb3IgY29sb3J7fTsKKysgICAgICAgIG1hcC52YWx1ZShRU3RyaW5nTGl0ZXJhbCgiY29s b3IiKSkudmFsdWU8UURCdXNBcmd1bWVudD4oKSA+PiBjb2xvcjsKKysgICAgICAgIFFfRU1JVCBj b2xvclBpY2tlZChjb2xvci50b1FDb2xvcigpKTsKKysgICAgICAgIGRlbGV0ZUxhdGVyKCk7Cisr ICAgIH0KKysKKytwcml2YXRlOgorKyAgICBjb25zdCBRU3RyaW5nIG1fcGFyZW50V2luZG93SWQ7 CisrfTsKKyt9IC8vIG5hbWVzcGFjZQorKworICNlbmRpZiAvLyBRVF9DT05GSUcoZGJ1cykKKyAK KytRR2VuZXJpY1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKQorK3sKKysjaWYg UVRfQ09ORklHKGRidXMpCisrICAgIGlmIChxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVlKCJR VF9OT19YREdfREVTS1RPUF9QT1JUQUwiKSA+IDApIHsKKysgICAgICAgIHJldHVybjsKKysgICAg fQorKyAgICBRREJ1c01lc3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9k Q2FsbCgKKysgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRh bC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNr dG9wIiksCisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5EQnVz LlByb3BlcnRpZXMiKSwgUVN0cmluZ0xpdGVyYWwoIkdldCIpKTsKKysgICAgbWVzc2FnZSA8PCBR U3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90IikKKysgICAg ICAgICAgICA8PCBRU3RyaW5nTGl0ZXJhbCgidmVyc2lvbiIpOworKworKyAgICBRREJ1c1BlbmRp bmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5bmND YWxsKG1lc3NhZ2UpOworKyAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2FsbFdh dGNoZXIocGVuZGluZ0NhbGwpOworKyAgICBRT2JqZWN0Ojpjb25uZWN0KHdhdGNoZXIsICZRREJ1 c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHdhdGNoZXIsCisrICAgICAgICAgICAgICAg ICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgICAg ICAgICAgICAgICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAg ICAgICAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFWYXJpYW50PiByZXBseSA9ICp3YXRjaGVy OworKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcGx5LmlzRXJyb3IoKSAmJiByZXBs eS52YWx1ZSgpLnRvVUludCgpID49IDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt X2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0gdHJ1ZTsKKysgICAgICAgICAg ICAgICAgICAgICB9KTsKKysKKysjZW5kaWYKKyt9CisrCisrUVBsYXRmb3JtU2VydmljZUNvbG9y UGlja2VyICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50 KQorK3sKKysjaWYgUVRfQ09ORklHKGRidXMpCisrICAgIC8vIE1ha2UgZG91YmxlIHN1cmUgdGhh dCB3ZSBhcmUgaW4gYSB3YXlsYW5kIGVudmlyb25tZW50LiBJbiBwYXJ0aWN1bGFyIGNoZWNrCisr ICAgIC8vIFdBWUxBTkRfRElTUExBWSBzbyBhbHNvIFhXYXlsYW5kIGFwcHMgYmVuZWZpdCBmcm9t IHBvcnRhbC1iYXNlZCBjb2xvciBwaWNraW5nLgorKyAgICAvLyBPdXRzaWRlIHdheWxhbmQgd2Un bGwgcmF0aGVyIHJlbHkgb24gb3RoZXIgbWVhbnMgdGhhbiB0aGUgWERHIGRlc2t0b3AgcG9ydGFs LgorKyAgICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNFbXB0eSgiV0FZTEFORF9ESVNQTEFZ IikKKysgICAgICAgIHx8IFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkuc3RhcnRzV2l0 aChRTGF0aW4xU3RyaW5nKCJ3YXlsYW5kIikpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFhkZ0Rl c2t0b3BQb3J0YWxDb2xvclBpY2tlcihwb3J0YWxXaW5kb3dJZGVudGlmaWVyKHBhcmVudCksIHBh cmVudCk7CisrICAgIH0KKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2Vsc2UKKysgICAgUV9VTlVT RUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2VuZGlmCisrfQorKworIFFCeXRl QXJyYXkgUUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0Cisg eworICAgICBzdGF0aWMgY29uc3QgUUJ5dGVBcnJheSByZXN1bHQgPSBkZXRlY3REZXNrdG9wRW52 aXJvbm1lbnQoKTsKK0BAIC0zNTIsNiArNDg2LDggQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNl czo6b3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkKKyB9CisgCisgI2Vsc2UKKytRR2VuZXJp Y1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKSA9IGRlZmF1bHQ7CisrCisgUUJ5 dGVBcnJheSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29uc3QK KyB7CisgICAgIHJldHVybiBRQnl0ZUFycmF5TGl0ZXJhbCgiVU5LTk9XTiIpOworQEAgLTM3MSw2 ICs1MDcsMzAgQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRvY3VtZW50KGNvbnN0 IFFVcmwgJnVybCkKKyAgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2aWNl Q29sb3JQaWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93ICpw YXJlbnQpCisreworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0cjsK Kyt9CisrCisgI2VuZGlmIC8vIFFUX05PX01VTFRJUFJPQ0VTUworIAorK1FTdHJpbmcgUUdlbmVy aWNVbml4U2VydmljZXM6OnBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93KQor K3sKKysgICAgaWYgKFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkgPT0gUUxhdGluMVN0 cmluZygieGNiIikpCisrICAgICAgICByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIngxMToiKSArIFFT dHJpbmc6Om51bWJlcih3aW5kb3ctPndpbklkKCksIDE2KTsKKysgICAgcmV0dXJuIFFTdHJpbmco KTsKKyt9CisrCisrYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShDYXBh YmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0CisreworKyAgICBzd2l0Y2ggKGNhcGFiaWxpdHkpIHsK KysgICAgY2FzZSBDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmc6CisrICAgICAgICByZXR1cm4gbV9o YXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZzsKKysgICAgfQorKyAgICByZXR1cm4g ZmFsc2U7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKKysKKysjaW5jbHVkZSAicWdlbmVyaWN1 bml4c2VydmljZXMubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaCBiL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZp Y2VzX3AuaAoraW5kZXggOGFjM2RlNmYwMy4uMzA5MjRlNjRiZCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNl cnZpY2VzX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2Vu ZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitAQCAtNTksMTYgKzU5LDIxIEBAIFFU X0JFR0lOX05BTUVTUEFDRQorIGNsYXNzIFFHZW5lcmljVW5peFNlcnZpY2VzIDogcHVibGljIFFQ bGF0Zm9ybVNlcnZpY2VzCisgeworIHB1YmxpYzoKKy0gICAgUUdlbmVyaWNVbml4U2VydmljZXMo KSB7fQorKyAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpOworIAorICAgICBRQnl0ZUFycmF5IGRl c2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0IG92ZXJyaWRlOworIAorKyAgICBib29sIGhhc0NhcGFi aWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAgICAgYm9vbCBv cGVuVXJsKGNvbnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisgICAgIGJvb2wgb3BlbkRvY3VtZW50 KGNvbnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisrICAgIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBp Y2tlciAqY29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cikgb3ZlcnJpZGU7Cisr CisrICAgIHZpcnR1YWwgUVN0cmluZyBwb3J0YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5kb3cgKndp bmRvdyk7CisgCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyBtX3dlYkJyb3dzZXI7CisgICAgIFFT dHJpbmcgbV9kb2N1bWVudExhdW5jaGVyOworKyAgICBib29sIG1faGFzU2NyZWVuc2hvdFBvcnRh bFdpdGhDb2xvclBpY2tpbmcgPSBmYWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgv ZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3Vw cG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAK K2luZGV4IDA5NDcwYmNjYzYuLmNjN2M3ZDRkOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVj dGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmlj dW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDcgQEAg Y29uc3QgUVN0cmluZyBNZW51QmFyUGF0aCA9IFFMYXRpbjFTdHJpbmcoIi9NZW51QmFyIik7Cisg Ki8KKyBRREJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBh cmVudCwgY29uc3QgUVN0cmluZyAmc2VydmljZU5hbWUpCisgICAgIDogUU9iamVjdChwYXJlbnQp CisrICAgICwgbV9zZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZSkKKyAgICAgLCBtX2Nvbm5lY3Rpb24o c2VydmljZU5hbWUuaXNOdWxsKCkgPyBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFFEQnVzQ29ubmVjdGlvbjo6 Y29ubmVjdFRvQnVzKFFEQnVzQ29ubmVjdGlvbjo6U2Vzc2lvbkJ1cywgc2VydmljZU5hbWUpKQor ICAgICAsIG1fZGJ1c1dhdGNoZXIobmV3IFFEQnVzU2VydmljZVdhdGNoZXIoU3RhdHVzTm90aWZp ZXJXYXRjaGVyU2VydmljZSwgbV9jb25uZWN0aW9uLCBRREJ1c1NlcnZpY2VXYXRjaGVyOjpXYXRj aEZvclJlZ2lzdHJhdGlvbiwgdGhpcykpCitAQCAtODMsNiArODQsMTIgQEAgUURCdXNNZW51Q29u bmVjdGlvbjo6UURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJp bmcgJnNlcnZpY2UKKyAjZW5kaWYKKyB9CisgCisrUURCdXNNZW51Q29ubmVjdGlvbjo6flFEQnVz TWVudUNvbm5lY3Rpb24oKQorK3sKKysgIGlmICghbV9zZXJ2aWNlTmFtZS5pc0VtcHR5KCkgJiYg bV9jb25uZWN0aW9uLmlzQ29ubmVjdGVkKCkpCisrICAgICAgUURCdXNDb25uZWN0aW9uOjpkaXNj b25uZWN0RnJvbUJ1cyhtX3NlcnZpY2VOYW1lKTsKKyt9CisrCisgdm9pZCBRREJ1c01lbnVDb25u ZWN0aW9uOjpkYnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpCisgeworICAgICBxV2Fy bmluZygpIDw8ICJRREJ1c1RyYXlJY29uIGVuY291bnRlcmVkIGEgRC1CdXMgZXJyb3I6IiA8PCBl cnJvcjsKK0BAIC0xMDUsMTMgKzExMiw3IEBAIHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6dW5y ZWdpc3RlclRyYXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wgUURCdXNN ZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIHsK Ky0gICAgYm9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyU2VydmljZShpdGVtLT5p bnN0YW5jZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkg PDwgImZhaWxlZCB0byByZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7Cist ICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIH0KKy0KKy0gICAgc3VjY2VzcyA9IGNvbm5lY3Rp b24oKS5yZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKysgICAg Ym9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlmaWVy SXRlbVBhdGgsIGl0ZW0pOworICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgIHVucmVnaXN0 ZXJUcmF5SWNvbihpdGVtKTsKKyAgICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byByZWdp c3RlciIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpIDw8IFN0YXR1c05vdGlmaWVySXRlbVBhdGg7CitA QCAtMTI2LDIxICsxMjcsMTggQEAgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3RlclRy YXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9u OjpyZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7Cisr ICAgIFFfVU5VU0VEKGl0ZW0pOworICAgICBRREJ1c01lc3NhZ2UgcmVnaXN0ZXJNZXRob2QgPSBR REJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisgICAgICAgICAgICAgICAgIFN0YXR1c05v dGlmaWVyV2F0Y2hlclNlcnZpY2UsIFN0YXR1c05vdGlmaWVyV2F0Y2hlclBhdGgsIFN0YXR1c05v dGlmaWVyV2F0Y2hlclNlcnZpY2UsCisgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlJl Z2lzdGVyU3RhdHVzTm90aWZpZXJJdGVtIikpOworLSAgICByZWdpc3Rlck1ldGhvZC5zZXRBcmd1 bWVudHMoUVZhcmlhbnRMaXN0KCkgPDwgaXRlbS0+aW5zdGFuY2VJZCgpKTsKKysgICAgcmVnaXN0 ZXJNZXRob2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IG1fY29ubmVjdGlvbi5iYXNl U2VydmljZSgpKTsKKyAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jYWxsV2l0aENhbGxiYWNrKHJl Z2lzdGVyTWV0aG9kLCB0aGlzLCBTSUdOQUwodHJheUljb25SZWdpc3RlcmVkKCkpLCBTTE9UKGRi dXNFcnJvcihRREJ1c0Vycm9yKSkpOworIH0KKyAKKy1ib29sIFFEQnVzTWVudUNvbm5lY3Rpb246 OnVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorK3ZvaWQgUURCdXNNZW51 Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgewor ICAgICB1bnJlZ2lzdGVyVHJheUljb25NZW51KGl0ZW0pOworICAgICBjb25uZWN0aW9uKCkudW5y ZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoKTsKKy0gICAgYm9vbCBzdWNjZXNz ID0gY29ubmVjdGlvbigpLnVucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7Cist ICAgIGlmICghc3VjY2VzcykKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byB1bnJl Z2lzdGVyIHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgcmV0dXJuIHN1Y2Nl c3M7CisgfQorICNlbmRpZiAvLyBRVF9OT19TWVNURU1UUkFZSUNPTgorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9x ZGJ1c21lbnVjb25uZWN0aW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1l cy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAoraW5kZXggZjQ4 NDc5NWZiYi4uOTdiZGZhYmI4NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNt ZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBRREJ1 c01lbnVDb25uZWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAKKyBwdWJsaWM6CisgICAgIFFEQnVz TWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50ID0gbnVsbHB0ciwgY29uc3QgUVN0cmluZyAm c2VydmljZU5hbWUgPSBRU3RyaW5nKCkpOworKyAgICB+UURCdXNNZW51Q29ubmVjdGlvbigpOwor ICAgICBRREJ1c0Nvbm5lY3Rpb24gY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVj dGlvbjsgfQorICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICpkYnVzV2F0Y2hlcigpIGNvbnN0IHsg cmV0dXJuIG1fZGJ1c1dhdGNoZXI7IH0KKyAgICAgYm9vbCBpc1N0YXR1c05vdGlmaWVySG9zdFJl Z2lzdGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7 IH0KK0BAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKKyAgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUlj b25NZW51KFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJlZ2lzdGVyVHJheUljb24o UURCdXNUcmF5SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRj aGVyKFFEQnVzVHJheUljb24gKml0ZW0pOworLSAgICBib29sIHVucmVnaXN0ZXJUcmF5SWNvbihR REJ1c1RyYXlJY29uICppdGVtKTsKKysgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb24oUURCdXNU cmF5SWNvbiAqaXRlbSk7CisgI2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCisgUV9T SUdOQUxTOgorQEAgLTkwLDYgKzkxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIGRi dXNFcnJvcihjb25zdCBRREJ1c0Vycm9yICZlcnJvcik7CisgCisgcHJpdmF0ZToKKysgICAgUVN0 cmluZyBtX3NlcnZpY2VOYW1lOworICAgICBRREJ1c0Nvbm5lY3Rpb24gbV9jb25uZWN0aW9uOwor ICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICptX2RidXNXYXRjaGVyOworICAgICBib29sIG1fc3Rh dHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAg Yi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkv cWRidXN0cmF5aWNvbi5jcHAKK2luZGV4IGJlZGU3MDk3NWEuLjc2YmZlYzVlNWEgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3Ry YXkvcWRidXN0cmF5aWNvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAorQEAgLTcxLDggKzcx LDEyIEBAIFFfTE9HR0lOR19DQVRFR09SWShxTGNUcmF5LCAicXQucXBhLnRyYXkiKQorIHN0YXRp YyBRU3RyaW5nIGljb25UZW1wUGF0aCgpCisgeworICAgICBRU3RyaW5nIHRlbXBQYXRoID0gUVN0 YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OlJ1bnRpbWVMb2Nh dGlvbik7CistICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKQorKyAgICBpZiAoIXRlbXBQYXRo LmlzRW1wdHkoKSkgeworKyAgICAgICAgUVN0cmluZyBmbGF0cGFrSWQgPSBxRW52aXJvbm1lbnRW YXJpYWJsZSgiRkxBVFBBS19JRCIpOworKyAgICAgICAgaWYgKCFmbGF0cGFrSWQuaXNFbXB0eSgp ICYmIFFGaWxlSW5mbzo6ZXhpc3RzKFFMYXRpbjFTdHJpbmcoIi8uZmxhdHBhay1pbmZvIikpKQor KyAgICAgICAgICAgIHRlbXBQYXRoICs9IFFMYXRpbjFTdHJpbmcoIi9hcHAvIikgKyBmbGF0cGFr SWQ7CisgICAgICAgICByZXR1cm4gdGVtcFBhdGg7CisrICAgIH0KKyAKKyAgICAgdGVtcFBhdGgg PSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6R2VuZXJp Y0NhY2hlTG9jYXRpb24pOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwIGIvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1lcy5j cHAKK2luZGV4IGNiMWIzOWRiNjQuLjZlMDFhZjA1MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3Fn ZW5lcmljdW5peHRoZW1lcy5jcHAKK0BAIC03NTUsNiArNzU1LDkgQEAgUVZhcmlhbnQgUUdub21l VGhlbWU6OnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6VGhlbWVIaW50IGhpbnQpIGNvbnN0Cisg ICAgICAgICByZXR1cm4gUVZhcmlhbnQoUUNoYXIoMHgyMDIyKSk7CisgICAgIGNhc2UgUVBsYXRm b3JtVGhlbWU6OlVpRWZmZWN0czoKKyAgICAgICAgIHJldHVybiBRVmFyaWFudChpbnQoSG92ZXJF ZmZlY3QpKTsKKysgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzOgorKyAg ICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWUoCisrICAgICAgICAgICAgICAgIFFMaXN0 PFF0OjpLZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6OktleV9SZXR1cm4sIFF0OjpLZXlfRW50ZXIs IFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAg ICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkv cWVnbGZzY3Vyc29yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvYXBp L3FlZ2xmc2N1cnNvci5jcHAKK2luZGV4IDk4ZTA1MTk1ZWUuLjFlOTJmNDNkZWMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3Iu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNj dXJzb3IuY3BwCitAQCAtMzQzLDggKzM0Myw3IEBAIHZvaWQgUUVnbEZTQ3Vyc29yOjpwYWludE9u U2NyZWVuKCkKKyAgICAgLy8gc2NyZWVucyBhcmUgc2libGluZ3Mgb2YgZWFjaCBvdGhlci4gV2hl biBub3QgZW5hYmxlZCwgdGhlIHNpYmxpbmcgbGlzdAorICAgICAvLyBvbmx5IGNvbnRhaW5zIG1f c2NyZWVuIGl0c2VsZi4KKyAgICAgZm9yIChRUGxhdGZvcm1TY3JlZW4gKnNjcmVlbiA6IG1fc2Ny ZWVuLT52aXJ0dWFsU2libGluZ3MoKSkgeworLSAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0cnko KS5jb250YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkKKy0g ICAgICAgICAgICAmJiBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+c2NyZWVuKCkg PT0gc2NyZWVuLT5zY3JlZW4oKSkKKysgICAgICAgIGlmIChzY3JlZW4tPmdlb21ldHJ5KCkuY29u dGFpbnMoY3IudG9wTGVmdCgpLnRvUG9pbnQoKSArIG1fY3Vyc29yLmhvdFNwb3QpKQorICAgICAg ICAgeworICAgICAgICAgICAgIGNyLnRyYW5zbGF0ZSgtc2NyZWVuLT5nZW9tZXRyeSgpLnRvcExl ZnQoKSk7CisgICAgICAgICAgICAgY29uc3QgUVNpemUgc2NyZWVuU2l6ZSA9IHNjcmVlbi0+Z2Vv bWV0cnkoKS5zaXplKCk7CitAQCAtNDY4LDExICs0NjcsMTIgQEAgdm9pZCBRRWdsRlNDdXJzb3I6 OmRyYXcoY29uc3QgUVJlY3RGICZyKQorIHsKKyAgICAgU3RhdGVTYXZlciBzdGF0ZVNhdmVyOwor IAorLSAgICBRRWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250ZXh0 Kj4oUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29yRGF0 YTsKKy0gICAgaWYgKCFnZngucHJvZ3JhbSkgeworLSAgICAgICAgLy8gb25lIHRpbWUgaW5pdGlh bGl6YXRpb24KKysgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRpb24KKysgICAgaWYgKCFRT3Bl bkdMRnVuY3Rpb25zOjpkX3B0cikKKyAgICAgICAgIGluaXRpYWxpemVPcGVuR0xGdW5jdGlvbnMo KTsKKyAKKysgICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8UUVnbEZTQ29u dGV4dCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5oYW5kbGUoKSktPmN1cnNv ckRhdGE7CisrICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKyAgICAgICAgIGNyZWF0ZVNoYWRlclBy b2dyYW1zKCk7CisgCisgICAgICAgICBpZiAoIWdmeC5hdGxhc1RleHR1cmUpIHsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9u L2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBv cnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCitpbmRleCA2NDVhMGFlMmU5Li4zZTBlNDA2ZjFh IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZpY2Vp bnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAKKysr KyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24v ZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCitAQCAtMTc5LDcgKzE3 OSw3IEBAIHZvaWQgUUVnbEZTS21zRXZlbnRSZWFkZXI6OmNyZWF0ZShRRWdsRlNLbXNEZXZpY2Ug KmRldmljZSkKKyAKKyAgICAgbV9kZXZpY2UgPSBkZXZpY2U7CisgCistICAgIHFDRGVidWcocUxj RWdsZnNLbXNEZWJ1ZywgIkluaXRhbGl6aW5nIGV2ZW50IHJlYWRlciBmb3IgZGV2aWNlICVwIGZk ICVkIiwKKysgICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGlhbGl6aW5nIGV2ZW50 IHJlYWRlciBmb3IgZGV2aWNlICVwIGZkICVkIiwKKyAgICAgICAgICAgICBtX2RldmljZSwgbV9k ZXZpY2UtPmZkKCkpOworIAorICAgICBtX3RocmVhZCA9IG5ldyBRRWdsRlNLbXNFdmVudFJlYWRl clRocmVhZChtX2RldmljZS0+ZmQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5jcHAK K2luZGV4IDE0MWZiNjhhMjMuLmQ0Mjk0ZDQyNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdy YXRpb24uY3BwCitAQCAtMTIyLDExICsxMjIsMTMgQEAgUU9mZnNjcmVlbkludGVncmF0aW9uOjpR T2Zmc2NyZWVuSW50ZWdyYXRpb24oKQorICNlbmRpZgorICAgICBtX3NlcnZpY2VzLnJlc2V0KG5l dyBRUGxhdGZvcm1TZXJ2aWNlcyk7CisgCistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6Omhh bmRsZVNjcmVlbkFkZGVkKG5ldyBRT2Zmc2NyZWVuU2NyZWVuKTsKKysgICAgbV9zY3JlZW4gPSBu ZXcgUU9mZnNjcmVlblNjcmVlbjsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxl U2NyZWVuQWRkZWQobV9zY3JlZW4pOworIH0KKyAKKyBRT2Zmc2NyZWVuSW50ZWdyYXRpb246On5R T2Zmc2NyZWVuSW50ZWdyYXRpb24oKQorIHsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlU2NyZWVuUmVtb3ZlZChtX3NjcmVlbik7CisgfQorIAorIHZvaWQgUU9mZnNjcmVlbklu dGVncmF0aW9uOjppbml0aWFsaXplKCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitpbmRl eCAwZWE5MGY2YzJmLi5mZTAwZmRlMDdjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKKysrKyBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5o CitAQCAtODQsNiArODQsNyBAQCBwcm90ZWN0ZWQ6CisgI2VuZGlmCisgICAgIFFTY29wZWRQb2lu dGVyPFFQbGF0Zm9ybUlucHV0Q29udGV4dD4gbV9pbnB1dENvbnRleHQ7CisgICAgIFFTY29wZWRQ b2ludGVyPFFQbGF0Zm9ybVNlcnZpY2VzPiBtX3NlcnZpY2VzOworKyAgICBRUGxhdGZvcm1TY3Jl ZW4gKm1fc2NyZWVuOworICAgICBtdXRhYmxlIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybU5hdGl2 ZUludGVyZmFjZT4gbV9uYXRpdmVJbnRlcmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3BwIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0LmNw cAoraW5kZXggNmZhNWE4YTJiMy4uMWY0OWYwYWVmZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAK K0BAIC00OCw2ICs0OCw3IEBACisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRlcmZh Y2UuaD4KKyAjaW5jbHVkZSA8UXRQbGF0Zm9ybUhlYWRlcnMvcXdnbG5hdGl2ZWNvbnRleHQuaD4K KyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgI2luY2x1ZGUgPGFs Z29yaXRobT4KKyAKKyAjaW5jbHVkZSA8d2luZ2RpLmg+CitAQCAtMTYyLDE5ICsxNjMsMjUgQEAg UUZ1bmN0aW9uUG9pbnRlciBRV2luZG93c09wZW5nbDMyRExMOjpyZXNvbHZlKGNvbnN0IGNoYXIg Km5hbWUpCisgCisgYm9vbCBRV2luZG93c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVS ZW5kZXJpbmcpCisgeworLSAgICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJh eUxpdGVyYWwoIm9wZW5nbDMyLmRsbCIpOworLSAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3Blbmds ID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3cuZGxsIik7CisrICAgIGNvbnN0IFFCeXRl QXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIiKTsKKysgICAgY29u c3QgUUJ5dGVBcnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3Iik7 CisrICAgIGJvb2wgdXNlU3lzdGVtTGliID0gZmFsc2U7CisgCisgICAgIFFCeXRlQXJyYXkgb3Bl bmdsRGxsID0gcWdldGVudigiUVRfT1BFTkdMX0RMTCIpOworLSAgICBpZiAob3BlbmdsRGxsLmlz RW1wdHkoKSkKKysgICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIG9wZW5n bERsbCA9IHNvZnR3YXJlUmVuZGVyaW5nID8gc3dvcGVuZ2wgOiBvcGVuZ2wzMjsKKysgICAgICAg IHVzZVN5c3RlbUxpYiA9ICFzb2Z0d2FyZVJlbmRlcmluZzsKKysgICAgfQorIAorICAgICBvcGVu Z2xEbGwgPSBvcGVuZ2xEbGwudG9Mb3dlcigpOworICAgICBtX25vbk9wZW5nbDMyID0gb3Blbmds RGxsICE9IG9wZW5nbDMyOworIAorICAgICBxQ0RlYnVnKGxjUXBhR2wpIDw8ICJRdDogVXNpbmcg V0dMIGFuZCBPcGVuR0wgZnJvbSIgPDwgb3BlbmdsRGxsOworIAorLSAgICBtX2xpYiA9IDo6TG9h ZExpYnJhcnlBKG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisrICAgIGlmICh1c2VTeXN0ZW1MaWIp CisrICAgICAgICBtX2xpYiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKCh3Y2hhcl90KikoUVN0cmlu Zzo6ZnJvbUxhdGluMShvcGVuZ2xEbGwpLnV0ZjE2KCkpKTsKKysgICAgZWxzZQorKyAgICAgICAg bV9saWIgPSBMb2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKyAgICAgaWYgKCFt X2xpYikgeworICAgICAgICAgcUVycm5vV2FybmluZyg6OkdldExhc3RFcnJvcigpLCAiRmFpbGVk IHRvIGxvYWQgJXMiLCBvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICAgICAgcmV0dXJuIGZh bHNlOworQEAgLTE4NCw3ICsxOTEsNyBAQCBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6OmluaXQo Ym9vbCBzb2Z0d2FyZVJlbmRlcmluZykKKyAgICAgICAgIC8vIExvYWQgb3BlbmdsMzIuZGxsIGFs d2F5cy4gR0RJIGZ1bmN0aW9ucyBsaWtlIENob29zZVBpeGVsRm9ybWF0IGRvCisgICAgICAgICAv LyBHZXRNb2R1bGVIYW5kbGUgZm9yIG9wZW5nbDMyLmRsbCBhbmQgYmVoYXZlIGRpZmZlcmVudGx5 IChhbmQgY2FsbCBiYWNrIGludG8KKyAgICAgICAgIC8vIG9wZW5nbDMyKSB3aGVuIHRoZSBtb2R1 bGUgaXMgcHJlc2VudC4gVGhpcyBpcyBmaW5lIGZvciBkdW1teSBjb250ZXh0cyBhbmQgd2luZG93 cy4KKy0gICAgICAgIDo6TG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgICAgIFFT eXN0ZW1MaWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgfQorIAorICAgICB3Z2xDcmVh dGVDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxIR0xSQyAoV0lOQVBJICopKEhEQyk+KHJlc29s dmUoIndnbENyZWF0ZUNvbnRleHQiKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcCBiL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK2luZGV4 IGQ3ZDE4NmU4MDQuLjllYjQwMTFiZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCisrKysgYi9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCitA QCAtNDksNiArNDksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcXN0YW5kYXJkcGF0aHMuaD4KKyAj aW5jbHVkZSA8UXRDb3JlL3FsaWJyYXJ5aW5mby5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhhc2gu aD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgCisgI2lmbmRlZiBR VF9OT19PUEVOR0wKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xb3BlbmdsX3AuaD4KK0BAIC0zOTYsNyAr Mzk3LDcgQEAgYm9vbCBRV2luZG93c09wZW5HTFRlc3Rlcjo6dGVzdERlc2t0b3BHTCgpCisgCisg ICAgIC8vIFRlc3QgIzE6IExvYWQgb3BlbmdsMzIuZGxsIGFuZCB0cnkgdG8gcmVzb2x2ZSBhbiBP cGVuR0wgMiBmdW5jdGlvbi4KKyAgICAgLy8gVGhpcyB3aWxsIHR5cGljYWxseSBmYWlsIG9uIHN5 c3RlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIHJlYWwgT3BlbkdMIGRyaXZlci4KKy0gICAgbGliID0g TG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgbGliID0gUVN5c3RlbUxpYnJhcnk6 OmxvYWQoTCJvcGVuZ2wzMiIpOworICAgICBpZiAobGliKSB7CisgICAgICAgICBDcmVhdGVDb250 ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxDcmVhdGVDb250ZXh0VHlwZT4oCisgICAgICAgICAgICAg cmVpbnRlcnByZXRfY2FzdDxRRnVuY3Rpb25Qb2ludGVyPig6OkdldFByb2NBZGRyZXNzKGxpYiwg IndnbENyZWF0ZUNvbnRleHQiKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3BwCitp bmRleCAxYWZhMDBjZmM5Li4xMThhZjZjZTczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxh dG9yLmNwcAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVkZSA8UVJlY3Q+CisgI2luY2x1 ZGUgPFFMaXN0PgorKyNpbmNsdWRlIDxRTWFwPgorICNpbmNsdWRlIDxRRGVidWc+CisgCisgI2lu Y2x1ZGUgPHFtYXRoLmg+CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCitpbmRleCA5ZTJhMzdhNmExLi5lNmUxNzVhMTE4IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24u Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVjdGlv bi5jcHAKK0BAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpwcmludFhj YkVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHhjYl9nZW5lcmljX2Vycm9yX3QgKmVycgorICAg ICB1aW50IGNsYW1wZWRfZXJyb3JfY29kZSA9IHFNaW48dWludD4oZXJyb3ItPmVycm9yX2NvZGUs IChzaXplb2YoeGNiX2Vycm9ycykgLyBzaXplb2YoeGNiX2Vycm9yc1swXSkpIC0gMSk7CisgICAg IHVpbnQgY2xhbXBlZF9tYWpvcl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+bWFqb3JfY29kZSwg KHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2RlcykgLyBzaXplb2YoeGNiX3Byb3RvY29s X3JlcXVlc3RfY29kZXNbMF0pKSAtIDEpOworIAorLSAgICBxQ1dhcm5pbmcobGNRcGFYY2IsICIl czogJWQgKCVzKSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6ICVk ICglcyksIG1pbm9yIGNvZGU6ICVkIiwKKy0gICAgICAgICAgICAgbWVzc2FnZSwKKy0gICAgICAg ICAgICAgaW50KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9yX2Nv ZGVdLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5yZXNv dXJjZV9pZCksCistICAgICAgICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90 b2NvbF9yZXF1ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0sCistICAgICAgICAgICAgIGlu dChlcnJvci0+bWlub3JfY29kZSkpOworKyAgICBxQ0RlYnVnKGxjUXBhWGNiLCAiJXM6ICVkICgl cyksIHNlcXVlbmNlOiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMpLCBt aW5vciBjb2RlOiAlZCIsCisrICAgICAgICAgICAgbWVzc2FnZSwKKysgICAgICAgICAgICBpbnQo ZXJyb3ItPmVycm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCisrICAg ICAgICAgICAgaW50KGVycm9yLT5zZXF1ZW5jZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQpLAor KyAgICAgICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1ZXN0 X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0sCisrICAgICAgICAgICAgaW50KGVycm9yLT5taW5v cl9jb2RlKSk7CisgfQorIAorIHN0YXRpYyBRdDo6TW91c2VCdXR0b25zIHRyYW5zbGF0ZU1vdXNl QnV0dG9ucyhpbnQgcykKK0BAIC03MDIsNiArNzAyLDggQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6 aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpCisgICAgICAgICAgICAg UVhjYlZpcnR1YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCA9IHZpcnR1YWxEZXNrdG9wRm9yUm9v dFdpbmRvdyhwcm9wZXJ0eU5vdGlmeS0+d2luZG93KTsKKyAgICAgICAgICAgICBpZiAodmlydHVh bERlc2t0b3ApCisgICAgICAgICAgICAgICAgIHZpcnR1YWxEZXNrdG9wLT51cGRhdGVXb3JrQXJl YSgpOworKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5vdGlmeS0+YXRvbSA9PSBhdG9tKFFY Y2JBdG9tOjpfTkVUX1NVUFBPUlRFRCkpIHsKKysgICAgICAgICAgICBtX3dtU3VwcG9ydC0+dXBk YXRlTmV0V01BdG9tcygpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBIQU5ETEVf UExBVEZPUk1fV0lORE9XX0VWRU5UKHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCwgd2luZG93 LCBoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KTsKKyAgICAgICAgIH0KK0BAIC03NTAsNyArNzUy LDcgQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZl bnRfdCAqZXZlbnQpCisgICAgICAgICAgICAgICAgIGNhc2UgWENCX1hLQl9ORVdfS0VZQk9BUkRf Tk9USUZZOiB7CisgICAgICAgICAgICAgICAgICAgICB4Y2JfeGtiX25ld19rZXlib2FyZF9ub3Rp ZnlfZXZlbnRfdCAqZXYgPSAmeGtiX2V2ZW50LT5uZXdfa2V5Ym9hcmRfbm90aWZ5OworICAgICAg ICAgICAgICAgICAgICAgaWYgKGV2LT5jaGFuZ2VkICYgWENCX1hLQl9OS05fREVUQUlMX0tFWUNP REVTKQorLSAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9hcmQtPnVwZGF0ZUtleW1hcChl dik7CisrICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFwKCk7 CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICBkZWZhdWx0OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCitpbmRleCA3Njg2OWNlZDYwLi4wMmQyZWViYjU2 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVn cmF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmlu dGVncmF0aW9uLmNwcAorQEAgLTI3NCw4ICsyNzQsNyBAQCBRUGxhdGZvcm1XaW5kb3cgKlFYY2JJ bnRlZ3JhdGlvbjo6Y3JlYXRlRm9yZWlnbldpbmRvdyhRV2luZG93ICp3aW5kb3csIFdJZCBuYXRp dgorICNpZm5kZWYgUVRfTk9fT1BFTkdMCisgUVBsYXRmb3JtT3BlbkdMQ29udGV4dCAqUVhjYklu dGVncmF0aW9uOjpjcmVhdGVQbGF0Zm9ybU9wZW5HTENvbnRleHQoUU9wZW5HTENvbnRleHQgKmNv bnRleHQpIGNvbnN0CisgeworLSAgICBRWGNiU2NyZWVuICpzY3JlZW4gPSBzdGF0aWNfY2FzdDxR WGNiU2NyZWVuICo+KGNvbnRleHQtPnNjcmVlbigpLT5oYW5kbGUoKSk7CistICAgIFFYY2JHbElu dGVncmF0aW9uICpnbEludGVncmF0aW9uID0gc2NyZWVuLT5jb25uZWN0aW9uKCktPmdsSW50ZWdy YXRpb24oKTsKKysgICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBkZWZhdWx0 Q29ubmVjdGlvbigpLT5nbEludGVncmF0aW9uKCk7CisgICAgIGlmICghZ2xJbnRlZ3JhdGlvbikg eworICAgICAgICAgcVdhcm5pbmcoIlFYY2JJbnRlZ3JhdGlvbjogQ2Fubm90IGNyZWF0ZSBwbGF0 Zm9ybSBPcGVuR0wgY29udGV4dCwgbmVpdGhlciBHTFggbm9yIEVHTCBhcmUgZW5hYmxlZCIpOwor ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK2luZGV4IGVmZWNkN2UyZDEuLmU4Mjg2MzgxYTIg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9h cmQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9h cmQuY3BwCitAQCAtMzY1LDE3ICszNjUsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5 bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgdXBkYXRlS2V5bWFw KCk7CisgfQorIAorLXZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdf a2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorLXsKKy0gICAgaWYgKCFldmVudCkKKy0g ICAgICAgIHJldHVybjsKKy0KKy0gICAgaWYgKGV2ZW50LT5kZXZpY2VJRCAhPSBldmVudC0+b2xk RGV2aWNlSUQpCistICAgICAgICBtX2NvbmZpZyA9IGZhbHNlOworLQorLSAgICB1cGRhdGVLZXlt YXAoKTsKKy19CistCisgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgeworICAg ICBLZXlzeW1Nb2RpZmllck1hcCBrZXlzeW1Nb2RzOworQEAgLTM4Myw2ICszNzIsOCBAQCB2b2lk IFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgICAgIGtleXN5bU1vZHMgPSBrZXlz eW1zVG9Nb2RpZmllcnMoKTsKKyAgICAgdXBkYXRlTW9kaWZpZXJzKGtleXN5bU1vZHMpOworIAor KyAgICBtX2NvbmZpZyA9IHRydWU7CisrCisgICAgIGlmICghbV94a2JDb250ZXh0KSB7CisgICAg ICAgICBtX3hrYkNvbnRleHQucmVzZXQoeGtiX2NvbnRleHRfbmV3KFhLQl9DT05URVhUX05PX0RF RkFVTFRfSU5DTFVERVMpKTsKKyAgICAgICAgIGlmICghbV94a2JDb250ZXh0KSB7CitAQCAtMzk4 LDEzICszODksOCBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgaWYg KGNvbm5lY3Rpb24oKS0+aGFzWEtCKCkpIHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJlc2V0KHhr Yl94MTFfa2V5bWFwX25ld19mcm9tX2RldmljZShtX3hrYkNvbnRleHQuZ2V0KCksIHhjYl9jb25u ZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29yZV9kZXZpY2VfaWQsIFhLQl9LRVlNQVBfQ09NUElMRV9OT19GTEFHUykp OworLSAgICAgICAgaWYgKG1feGtiS2V5bWFwKSB7CistICAgICAgICAgICAgaWYgKG1fY29uZmln KQorLSAgICAgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl9zdGF0ZV9uZXcobV94a2JL ZXltYXAuZ2V0KCkpKTsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIG1feGti U3RhdGUucmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXltYXAuZ2V0 KCksIHhjYl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CistCistICAgICAgICB9Cisr ICAgICAgICBpZiAobV94a2JLZXltYXApCisrICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4 a2JfeDExX3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nvbm5l Y3Rpb24oKSwgY29yZV9kZXZpY2VfaWQpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIG1feGti S2V5bWFwLnJlc2V0KGtleW1hcEZyb21Db3JlKGtleXN5bU1vZHMpKTsKKyAgICAgICAgIGlmICht X3hrYktleW1hcCkKK0BAIC00MjUsOCArNDExLDYgQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0 ZUtleW1hcCgpCisgICAgIHVwZGF0ZVhLQk1vZHMoKTsKKyAKKyAgICAgUVhrYkNvbW1vbjo6dmVy aWZ5SGFzTGF0aW5MYXlvdXQobV94a2JLZXltYXAuZ2V0KCkpOworLQorLSAgICBtX2NvbmZpZyA9 IHRydWU7CisgfQorIAorIFFMaXN0PGludD4gUVhjYktleWJvYXJkOjpwb3NzaWJsZUtleXMoY29u c3QgUUtleUV2ZW50ICpldmVudCkgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCitpbmRleCBiNjUyYzg1ZmUzLi4wZWUwOGFlZmYyIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJk LmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5o CitAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CisgCisgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVy cyB0cmFuc2xhdGVNb2RpZmllcnMoaW50IHMpIGNvbnN0OworICAgICB2b2lkIHVwZGF0ZUtleW1h cCh4Y2JfbWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworLSAgICB2b2lkIHVwZGF0ZUtl eW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworICAgICB2 b2lkIHVwZGF0ZUtleW1hcCgpOworICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxlS2V5cyhjb25zdCBR S2V5RXZlbnQgKmV2ZW50KSBjb25zdDsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCitpbmRleCBmZmRhN2I2YTU3Li44NjNlOTYxZjRjIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5j cHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3Bw CitAQCAtNTY0LDExICs1NjQsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldEdlb21ldHJ5KGNvbnN0 IFFSZWN0ICZyZWN0KQorIHsKKyAgICAgUVBsYXRmb3JtV2luZG93OjpzZXRHZW9tZXRyeShyZWN0 KTsKKyAKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRHZW9tZXRyeSkpIHsKKy0g ICAgICAgIG1fZGVmZXJyZWRHZW9tZXRyeSA9IHJlY3Q7CistICAgICAgICByZXR1cm47CistICAg IH0KKy0KKyAgICAgcHJvcGFnYXRlU2l6ZUhpbnRzKCk7CisgCisgICAgIFFYY2JTY3JlZW4gKmN1 cnJlbnRTY3JlZW4gPSB4Y2JTY3JlZW4oKTsKK0BAIC02OTMsOSArNjg4LDYgQEAgdm9pZCBRWGNi V2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6OnNo b3coKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpNYXApKQorLSAgICAgICAg cmV0dXJuOworLQorICAgICBpZiAod2luZG93KCktPmlzVG9wTGV2ZWwoKSkgeworIAorICAgICAg ICAgLy8gdXBkYXRlIFdNX05PUk1BTF9ISU5UUworQEAgLTcwNiw3ICs2OTgsNyBAQCB2b2lkIFFY Y2JXaW5kb3c6OnNob3coKQorICAgICAgICAgaWYgKGlzVHJhbnNpZW50KHdpbmRvdygpKSkgewor ICAgICAgICAgICAgIGNvbnN0IFFXaW5kb3cgKnRwID0gd2luZG93KCktPnRyYW5zaWVudFBhcmVu dCgpOworICAgICAgICAgICAgIGlmICh0cCAmJiB0cC0+aGFuZGxlKCkpCistICAgICAgICAgICAg ICAgIHRyYW5zaWVudFhjYlBhcmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFFYY2JXaW5kb3cgKj4o dHAtPmhhbmRsZSgpKS0+d2luSWQoKTsKKysgICAgICAgICAgICAgICAgdHJhbnNpZW50WGNiUGFy ZW50ID0gdHAtPmhhbmRsZSgpLT53aW5JZCgpOworICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8g Y2xpZW50IGxlYWRlciBpZiB0aGVyZSBpcyBubyB0cmFuc2llbnQgcGFyZW50LCBlbHNlIG1vZGFs IGRpYWxvZ3MgY2FuCisgICAgICAgICAgICAgLy8gYmUgaGlkZGVuIGJ5IHRoZWlyIHBhcmVudHMu CisgICAgICAgICAgICAgaWYgKCF0cmFuc2llbnRYY2JQYXJlbnQpCitAQCAtNzQ2LDEwICs3Mzgs NiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQorIAorIHZvaWQgUVhjYldpbmRvdzo6aGlkZSgp CisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlVubWFwKSkKKy0gICAgICAgIHJl dHVybjsKKy0KKy0gICAgbV93bVN0YXRlVmFsaWQgPSBmYWxzZTsKKyAgICAgeGNiX3VubWFwX3dp bmRvdyh4Y2JfY29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CisgCisgICAgIC8vIHNlbmQgc3ludGhl dGljIFVubWFwTm90aWZ5IGV2ZW50IGFjY29yZGluZyB0byBpY2NjbSA0LjEuNAorQEAgLTkwOSw5 ICs4OTcsNiBAQCBRWGNiV2luZG93OjpOZXRXbVN0YXRlcyBRWGNiV2luZG93OjpuZXRXbVN0YXRl cygpCisgCisgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3Mg ZmxhZ3MpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldFdpbmRvd0ZsYWdz KSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgUXQ6OldpbmRvd1R5cGUgdHlwZSA9IHN0YXRp Y19jYXN0PFF0OjpXaW5kb3dUeXBlPihpbnQoZmxhZ3MgJiBRdDo6V2luZG93VHlwZV9NYXNrKSk7 CisgCisgICAgIGlmICh0eXBlID09IFF0OjpUb29sVGlwKQorQEAgLTk0MSw4ICs5MjYsNiBAQCB2 b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykKKyAK KyAgICAgc2V0VHJhbnNwYXJlbnRGb3JNb3VzZUV2ZW50cyhmbGFncyAmIFF0OjpXaW5kb3dUcmFu c3BhcmVudEZvcklucHV0KTsKKyAgICAgdXBkYXRlRG9lc05vdEFjY2VwdEZvY3VzKGZsYWdzICYg UXQ6OldpbmRvd0RvZXNOb3RBY2NlcHRGb2N1cyk7CistCistICAgIG1faXNXbU1hbmFnZWRXaW5k b3cgPSAhKGZsYWdzICYgUXQ6OlgxMUJ5cGFzc1dpbmRvd01hbmFnZXJIaW50KTsKKyB9CisgCisg dm9pZCBRWGNiV2luZG93OjpzZXRNb3RpZldtSGludHMoUXQ6OldpbmRvd0ZsYWdzIGZsYWdzKQor QEAgLTExNDIsOSArMTEyNSw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93U3RhdGUoUXQ6 OldpbmRvd1N0YXRlcyBzdGF0ZSkKKyAgICAgaWYgKHN0YXRlID09IG1fd2luZG93U3RhdGUpCisg ICAgICAgICByZXR1cm47CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0V2lu ZG93U3RhdGUpKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICAvLyB1bnNldCBvbGQgc3RhdGUK KyAgICAgaWYgKG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1pemVkKQorICAgICAgICAg eGNiX21hcF93aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOworQEAgLTEzNTAsNiAr MTMzMCwxMiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ljb24oY29uc3QgUUljb24gJmlj b24pCisgICAgIH0KKyAKKyAgICAgaWYgKCFpY29uX2RhdGEuaXNFbXB0eSgpKSB7CisrICAgICAg ICAvLyBJZ25vcmUgaWNvbiBleGNlZWRpbmcgbWF4aW11bSB4Y2IgcmVxdWVzdCBsZW5ndGgKKysg ICAgICAgIGlmIChpY29uX2RhdGEuc2l6ZSgpID4geGNiX2dldF9tYXhpbXVtX3JlcXVlc3RfbGVu Z3RoKHhjYl9jb25uZWN0aW9uKCkpKSB7CisrICAgICAgICAgICAgcVdhcm5pbmcoIklnbm9yaW5n IHdpbmRvdyBpY29uOiBTaXplICVsbHUgZXhjZWVkcyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxlbmd0 aCAldS4iLAorKyAgICAgICAgICAgICAgICAgICAgIGljb25fZGF0YS5zaXplKCksIHhjYl9nZXRf bWF4aW11bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigpKSk7CisrICAgICAgICAgICAg cmV0dXJuOworKyAgICAgICAgfQorICAgICAgICAgeGNiX2NoYW5nZV9wcm9wZXJ0eSh4Y2JfY29u bmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfUFJPUF9NT0RFX1JF UExBQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2luZG93LAorQEAgLTE2Mzks NyArMTYyNSw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V21XaW5kb3dUeXBlKFFYY2JXaW5kb3dG dW5jdGlvbnM6OldtV2luZG93VHlwZXMgdHlwZXMsIFF0OjpXCisgICAgICAgICBicmVhazsKKyAg ICAgfQorIAorLSAgICBpZiAoKGZsYWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEo dHlwZSAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRlKSkgeworKyAgICBpZiAoKGZs YWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlwZXMgJiBRWGNiV2luZG93RnVu Y3Rpb25zOjpLZGVPdmVycmlkZSkpIHsKKyAgICAgICAgIC8vIG92ZXJyaWRlIG5ldHdtIHR5cGUg LSBxdWljayBhbmQgZWFzeSBmb3IgS0RFIG5vYm9yZGVyCisgICAgICAgICBhdG9tcy5hcHBlbmQo YXRvbShRWGNiQXRvbTo6X0tERV9ORVRfV01fV0lORE9XX1RZUEVfT1ZFUlJJREUpKTsKKyAgICAg fQorQEAgLTE4OTQsMTAgKzE4ODAsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVVubWFwTm90 aWZ5RXZlbnQoY29uc3QgeGNiX3VubWFwX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaWYg KGV2ZW50LT53aW5kb3cgPT0gbV93aW5kb3cpIHsKKyAgICAgICAgIG1fbWFwcGVkID0gZmFsc2U7 CisgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFeHBvc2VFdmVudCh3aW5k b3coKSwgUVJlZ2lvbigpKTsKKy0gICAgICAgIGlmICghbV9pc1dtTWFuYWdlZFdpbmRvdyB8fCBw YXJlbnQoKSkgeworLSAgICAgICAgICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAg ICAgICBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistICAgICAgICB9CisgICAgIH0KKyB9CisgCitA QCAtMjIxMiw5OCArMjE5NCwzMCBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZUxlYXZlTm90aWZ5 RXZlbnQoY29uc3QgeGNiX2xlYXZlX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaGFuZGxl TGVhdmVOb3RpZnlFdmVudChldmVudC0+cm9vdF94LCBldmVudC0+cm9vdF95LCBldmVudC0+bW9k ZSwgZXZlbnQtPmRldGFpbCwgZXZlbnQtPnRpbWUpOworIH0KKyAKKy1ib29sIFFYY2JXaW5kb3c6 OnNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spCisteworLSAgICBpZiAobV93bVN0YXRlVmFsaWQp CistICAgICAgICByZXR1cm4gZmFsc2U7CistCistICAgIG1fZGVmZXJyZWRUYXNrcy5hcHBlbmQo dGFzayk7CistICAgIHJldHVybiB0cnVlOworLX0KKy0KKy12b2lkIFFYY2JXaW5kb3c6OmhhbmRs ZURlZmVycmVkVGFza3MoKQorLXsKKy0gICAgUV9BU1NFUlQobV93bVN0YXRlVmFsaWQgPT0gdHJ1 ZSk7CistICAgIGlmIChtX2RlZmVycmVkVGFza3MuaXNFbXB0eSgpKQorLSAgICAgICAgcmV0dXJu OworLQorLSAgICBib29sIG1hcCA9IGZhbHNlOworLSAgICBib29sIHVubWFwID0gZmFsc2U7Cist CistICAgIFFWZWN0b3I8VGFzaz4gdGFza3M7CistICAgIGZvciAoYXV0byB0YXNrSXQgPSBtX2Rl ZmVycmVkVGFza3MucmJlZ2luKCk7IHRhc2tJdCAhPSBtX2RlZmVycmVkVGFza3MucmVuZCgpOyAr K3Rhc2tJdCkgeworLSAgICAgICAgaWYgKCF0YXNrcy5jb250YWlucygqdGFza0l0KSkKKy0gICAg ICAgICAgICB0YXNrcy5wcmVwZW5kKCp0YXNrSXQpOworLSAgICB9CistCistICAgIGZvciAoVGFz ayB0YXNrIDogdGFza3MpIHsKKy0gICAgICAgIHN3aXRjaCAodGFzaykgeworLSAgICAgICAgY2Fz ZSBUYXNrOjpNYXA6CistICAgICAgICAgICAgbWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICB1bm1h cCA9IGZhbHNlOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpVbm1h cDoKKy0gICAgICAgICAgICB1bm1hcCA9IHRydWU7CistICAgICAgICAgICAgbWFwID0gZmFsc2U7 CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldEdlb21ldHJ5Ogor LSAgICAgICAgICAgIHNldEdlb21ldHJ5KG1fZGVmZXJyZWRHZW9tZXRyeSk7CistICAgICAgICAg ICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd0ZsYWdzOgorLSAgICAgICAg ICAgIHNldFdpbmRvd0ZsYWdzKHdpbmRvdygpLT5mbGFncygpKTsKKy0gICAgICAgICAgICBicmVh azsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0V2luZG93U3RhdGU6CistICAgICAgICAgICAgc2V0 V2luZG93U3RhdGUod2luZG93KCktPndpbmRvd1N0YXRlKCkpOworLSAgICAgICAgICAgIGJyZWFr OworLSAgICAgICAgfQorLSAgICB9CistICAgIG1fZGVmZXJyZWRUYXNrcy5jbGVhcigpOworLQor LSAgICBpZiAobWFwKSB7CistICAgICAgICBRX0FTU0VSVCh1bm1hcCA9PSBmYWxzZSk7CistICAg ICAgICBzaG93KCk7CistICAgIH0KKy0gICAgaWYgKHVubWFwKSB7CistICAgICAgICBRX0FTU0VS VChtYXAgPT0gZmFsc2UpOworLSAgICAgICAgaGlkZSgpOworLSAgICB9CistfQorLQorIHZvaWQg UVhjYldpbmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJvcGVydHlf bm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorIHsKKyAgICAgY29ubmVjdGlvbigpLT5zZXRUaW1lKGV2 ZW50LT50aW1lKTsKKyAKKy0gICAgY29uc3QgYm9vbCB3bVN0YXRlQ2hhbmdlZCA9IGV2ZW50LT5h dG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKTsKKy0gICAgY29uc3QgYm9vbCBuZXRXbVN0 YXRlQ2hhbmdlZCA9IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RBVEUp OworLSAgICBpZiAobmV0V21TdGF0ZUNoYW5nZWQgfHwgd21TdGF0ZUNoYW5nZWQpIHsKKy0gICAg ICAgIGlmICh3bVN0YXRlQ2hhbmdlZCAmJiAhbV93bVN0YXRlVmFsaWQgJiYgbV9pc1dtTWFuYWdl ZFdpbmRvdykgeworLSAgICAgICAgICAgIC8vIElDQ0NNIDQuMS40CistICAgICAgICAgICAgLy8g Q2xpZW50cyB0aGF0IHdhbnQgdG8gcmUtdXNlIGEgY2xpZW50IHdpbmRvdyAoZS5nLiBieSBtYXBw aW5nIGl0IGFnYWluKQorLSAgICAgICAgICAgIC8vIGFmdGVyIHdpdGhkcmF3aW5nIGl0IG11c3Qg d2FpdCBmb3IgdGhlIHdpdGhkcmF3YWwgdG8gYmUgY29tcGxldGUgYmVmb3JlCistICAgICAgICAg ICAgLy8gcHJvY2VlZGluZy4gVGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIGRvaW5nIHRoaXMgaXMg Zm9yIGNsaWVudHMgdG8gd2FpdCBmb3IKKy0gICAgICAgICAgICAvLyBhIHdpbmRvdyBtYW5hZ2Vy IHRvIHVwZGF0ZSBvciByZW1vdmUgdGhlIFdNX1NUQVRFIHByb3BlcnR5LgorLSAgICAgICAgICAg IG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBoYW5kbGVEZWZlcnJlZFRhc2tz KCk7CistICAgICAgICB9CistICAgICAgICBpZiAoZXZlbnQtPnN0YXRlID09IFhDQl9QUk9QRVJU WV9ERUxFVEUpCisrICAgIGNvbnN0IGJvb2wgcHJvcGVydHlEZWxldGVkID0gZXZlbnQtPnN0YXRl ID09IFhDQl9QUk9QRVJUWV9ERUxFVEU7CisrCisrICAgIGlmIChldmVudC0+YXRvbSA9PSBhdG9t KFFYY2JBdG9tOjpfTkVUX1dNX1NUQVRFKSB8fCBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9t OjpXTV9TVEFURSkpIHsKKysgICAgICAgIGlmIChwcm9wZXJ0eURlbGV0ZWQpCisgICAgICAgICAg ICAgcmV0dXJuOworIAorLSAgICAgICAgaWYgKHdtU3RhdGVDaGFuZ2VkKSB7CisrICAgICAgICBR dDo6V2luZG93U3RhdGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisrCisrICAgICAg ICBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7IC8vIFdNX1NU QVRFOiBRdWljayBjaGVjayBmb3IgJ01pbmltaXplJy4KKyAgICAgICAgICAgICBhdXRvIHJlcGx5 ID0gUV9YQ0JfUkVQTFkoeGNiX2dldF9wcm9wZXJ0eSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbV93aW5kb3csIGF0b20oUVhjYkF0 b206OldNX1NUQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWENC X0FUT01fQU5ZLCAwLCAxMDI0KTsKKyAgICAgICAgICAgICBpZiAocmVwbHkgJiYgcmVwbHktPmZv cm1hdCA9PSAzMiAmJiByZXBseS0+dHlwZSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkpIHsK Ky0gICAgICAgICAgICAgICAgYXV0byBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgcXVpbnQzMiAq Pih4Y2JfZ2V0X3Byb3BlcnR5X3ZhbHVlKHJlcGx5LmdldCgpKSk7CistICAgICAgICAgICAgICAg IGlmIChyZXBseS0+bGVuZ3RoICE9IDApIHsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJv b2wgY2hhbmdlZFRvV2l0aGRyYXduID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfV0lU SERSQVdOOworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9JY29uaWMg PSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUM7CistICAgICAgICAgICAgICAg ICAgICBtX21pbmltaXplZCA9IGNoYW5nZWRUb0ljb25pYyB8fCAoY2hhbmdlZFRvV2l0aGRyYXdu ICYmIG1fbWluaW1pemVkKTsKKy0gICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBj b25zdCBxdWludDMyICpkYXRhID0gKGNvbnN0IHF1aW50MzIgKil4Y2JfZ2V0X3Byb3BlcnR5X3Zh bHVlKHJlcGx5LmdldCgpKTsKKysgICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGggIT0g MCkKKysgICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0gKGRhdGFbMF0gPT0gWENCX0lD Q0NNX1dNX1NUQVRFX0lDT05JQworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fHwgKGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX1dJVEhEUkFXTiAmJiBtX21pbmltaXpl ZCkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0gICAgICAgIC8vIF9ORVRfV01f U1RBVEUgaGFuZGxpbmcKKy0gICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBRdDo6 V2luZG93Tm9TdGF0ZTsKKyAgICAgICAgIGNvbnN0IE5ldFdtU3RhdGVzIHN0YXRlcyA9IG5ldFdt U3RhdGVzKCk7CisgICAgICAgICAvLyBfTkVUX1dNX1NUQVRFX0hJRERFTiBzaG91bGQgYmUgc2V0 IGJ5IHRoZSBXaW5kb3cgTWFuYWdlciB0byBpbmRpY2F0ZSB0aGF0IGEgd2luZG93IHdvdWxkCisg ICAgICAgICAvLyBub3QgYmUgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIGlmIGl0cyBkZXNrdG9wL3Zp ZXdwb3J0IHdlcmUgYWN0aXZlIGFuZCBpdHMgY29vcmRpbmF0ZXMgd2VyZQorQEAgLTIzMjUsNiAr MjIzOSw3IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25z dCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2CisgICAgICAgICAgICAgaWYgKChtX3dp bmRvd1N0YXRlICYgUXQ6OldpbmRvd01pbmltaXplZCkgJiYgY29ubmVjdGlvbigpLT5tb3VzZUdy YWJiZXIoKSA9PSB0aGlzKQorICAgICAgICAgICAgICAgICBjb25uZWN0aW9uKCktPnNldE1vdXNl R3JhYmJlcihudWxscHRyKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybjsKKyAgICAgfSBl bHNlIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX0ZSQU1FX0VYVEVOVFMp KSB7CisgICAgICAgICBtX2RpcnR5RnJhbWVNYXJnaW5zID0gdHJ1ZTsKKyAgICAgfQorZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaCBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAoraW5kZXggNTVhZjky NzliMS4uNmY1YzFmNWVkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2J3aW5kb3cuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvcXhjYndpbmRvdy5oCitAQCAtNzQsMTQgKzc0LDYgQEAgcHVibGljOgorIAorICAgICBRX0RF Q0xBUkVfRkxBR1MoTmV0V21TdGF0ZXMsIE5ldFdtU3RhdGUpCisgCistICAgIGVudW0gVGFzayB7 CistICAgICAgICBNYXAsCistICAgICAgICBVbm1hcCwKKy0gICAgICAgIFNldEdlb21ldHJ5LAor LSAgICAgICAgU2V0V2luZG93RmxhZ3MsCistICAgICAgICBTZXRXaW5kb3dTdGF0ZQorLSAgICB9 OworLQorICAgICBRWGNiV2luZG93KFFXaW5kb3cgKndpbmRvdyk7CisgICAgIH5RWGNiV2luZG93 KCk7CisgCitAQCAtMTUxLDkgKzE0Myw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUVhjYldpbmRvdyAq dG9XaW5kb3coKSBvdmVycmlkZTsKKyAKKy0gICAgYm9vbCBzaG91bGREZWZlclRhc2soVGFzayB0 YXNrKTsKKy0gICAgdm9pZCBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistCisgICAgIHZvaWQgaGFu ZGxlTW91c2VFdmVudCh4Y2JfdGltZXN0YW1wX3QgdGltZSwgY29uc3QgUVBvaW50ICZsb2NhbCwg Y29uc3QgUVBvaW50ICZnbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5 Ym9hcmRNb2RpZmllcnMgbW9kaWZpZXJzLCBRRXZlbnQ6OlR5cGUgdHlwZSwgUXQ6Ok1vdXNlRXZl bnRTb3VyY2Ugc291cmNlKTsKKyAKK0BAIC0yOTIsMTEgKzI4MSw2IEBAIHByb3RlY3RlZDoKKyAg ICAgaW50IG1fc3dhcEludGVydmFsID0gLTE7CisgCisgICAgIHFyZWFsIG1fc2l6ZUhpbnRzU2Nh bGVGYWN0b3IgPSAxLjA7CistCistICAgIGJvb2wgbV93bVN0YXRlVmFsaWQgPSB0cnVlOworLSAg ICBRVmVjdG9yPFRhc2s+IG1fZGVmZXJyZWRUYXNrczsKKy0gICAgYm9vbCBtX2lzV21NYW5hZ2Vk V2luZG93ID0gdHJ1ZTsKKy0gICAgUVJlY3QgbV9kZWZlcnJlZEdlb21ldHJ5OworIH07CisgCisg Y2xhc3MgUVhjYkZvcmVpZ25XaW5kb3cgOiBwdWJsaWMgUVhjYldpbmRvdworZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitpbmRl eCBkOWQxMTdmYWViLi42NDBiNDlkYWEwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5z L3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorQEAgLTg1LDYgKzg1LDcgQEAg UUd0azNNZW51SXRlbTo6UUd0azNNZW51SXRlbSgpCisgICAgICAgbV9jaGVja2FibGUoZmFsc2Up LAorICAgICAgIG1fY2hlY2tlZChmYWxzZSksCisgICAgICAgbV9lbmFibGVkKHRydWUpLAorKyAg ICAgIG1fZXhjbHVzaXZlKGZhbHNlKSwKKyAgICAgICBtX3VuZGVybGluZShmYWxzZSksCisgICAg ICAgbV9pbnZhbGlkKHRydWUpLAorICAgICAgIG1fbWVudShudWxscHRyKSwKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRn ZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt dGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcAor aW5kZXggMDA0OGJiYzFlNi4uMzk2ZTdmNmQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmls ZWRpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdk ZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKK0BAIC0xMDIsMTUg KzEwMiwxMiBAQCBjb25zdCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRvciA+Pihjb25zdCBRREJ1c0Fy Z3VtZW50ICZhcmcsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZQorIGNsYXNzIFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZ1ByaXZhdGUKKyB7CisgcHVibGljOgorLSAgICBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVE aWFsb2cpCisrICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRmb3Jt RmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBvcnRh bFZlcnNpb24pCisgICAgICAgICA6IG5hdGl2ZUZpbGVEaWFsb2cobmF0aXZlRmlsZURpYWxvZykK KysgICAgICAgICwgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKGZpbGVDaG9vc2VyUG9ydGFsVmVy c2lvbikKKyAgICAgeyB9CisgCistICAgIFdJZCB3aW5JZCA9IDA7CistICAgIGJvb2wgZGlyZWN0 b3J5TW9kZSA9IGZhbHNlOworLSAgICBib29sIG1vZGFsID0gZmFsc2U7CistICAgIGJvb2wgbXVs dGlwbGVGaWxlcyA9IGZhbHNlOworLSAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7CisrICAgIFFF dmVudExvb3AgbG9vcDsKKyAgICAgUVN0cmluZyBhY2NlcHRMYWJlbDsKKyAgICAgUVN0cmluZyBk aXJlY3Rvcnk7CisgICAgIFFTdHJpbmcgdGl0bGU7CitAQCAtMTIxLDE5ICsxMTgsMjcgQEAgcHVi bGljOgorICAgICBRU3RyaW5nIHNlbGVjdGVkTWltZVR5cGVGaWx0ZXI7CisgICAgIFFTdHJpbmcg c2VsZWN0ZWROYW1lRmlsdGVyOworICAgICBRU3RyaW5nTGlzdCBzZWxlY3RlZEZpbGVzOworLSAg ICBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cjsK KysgICAgc3RkOjp1bmlxdWVfcHRyPFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXI+IG5hdGl2ZUZp bGVEaWFsb2c7CisrICAgIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gMDsKKysgICAg Ym9vbCBmYWlsZWRUb09wZW4gPSBmYWxzZTsKKysgICAgYm9vbCBkaXJlY3RvcnlNb2RlID0gZmFs c2U7CisrICAgIGJvb2wgbXVsdGlwbGVGaWxlcyA9IGZhbHNlOworKyAgICBib29sIHNhdmVGaWxl ID0gZmFsc2U7CisgfTsKKyAKKy1RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxl RGlhbG9nKQorK1FYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2csIHVp bnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICA6IFFQbGF0Zm9ybUZpbGVEaWFsb2dI ZWxwZXIoKQorLSAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2 YXRlKG5hdGl2ZUZpbGVEaWFsb2cpKQorKyAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2dQcml2YXRlKG5hdGl2ZUZpbGVEaWFsb2csIGZpbGVDaG9vc2VyUG9ydGFsVmVy c2lvbikpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKyAg ICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cpIHsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0aXZl RmlsZURpYWxvZywgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lHTkFMKGFjY2VwdCgpKSk7Cist ICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChyZWplY3QoKSksIHRo aXMsIFNJR05BTChyZWplY3QoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlh bG9nLmdldCgpLCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsKKysg ICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKHJlamVjdCgp KSwgdGhpcywgU0lHTkFMKHJlamVjdCgpKSk7CisgICAgIH0KKysKKysgICAgZC0+bG9vcC5jb25u ZWN0KHRoaXMsIFNJR05BTChhY2NlcHQoKSksIFNMT1QocXVpdCgpKSk7CisrICAgIGQtPmxvb3Au Y29ubmVjdCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9UKHF1aXQoKSkpOworIH0KKyAKKyBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6On5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2co KQorQEAgLTE3Nyw3ICsxODIsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 aW5pdGlhbGl6ZURpYWxvZygpCisgICAgIHNldERpcmVjdG9yeShvcHRpb25zKCktPmluaXRpYWxE aXJlY3RvcnkoKSk7CisgfQorIAorLXZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpv cGVuUG9ydGFsKCkKKyt2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRh bChRdDo6V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dN b2RhbGl0eSwgUVdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyk7CisgCitAQCAtMTg1LDEzICsxOTAsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCIvb3JnL2ZyZWVk ZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3Rv cC5wb3J0YWwuRmlsZUNob29zZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+c2F2ZUZpbGUgPyBRTGF0aW4xU3RyaW5nKCJT YXZlRmlsZSIpIDogUUxhdGluMVN0cmluZygiT3BlbkZpbGUiKSk7CistICAgIFFTdHJpbmcgcGFy ZW50V2luZG93SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIoZC0+ d2luSWQsIDE2KTsKKysgICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJpbmco IngxMToiKSArIFFTdHJpbmc6Om51bWJlcihwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAwLCAx Nik7CisgCisgICAgIFFWYXJpYW50TWFwIG9wdGlvbnM7CisgICAgIGlmICghZC0+YWNjZXB0TGFi ZWwuaXNFbXB0eSgpKQorICAgICAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiYWNj ZXB0X2xhYmVsIiksIGQtPmFjY2VwdExhYmVsKTsKKyAKKy0gICAgb3B0aW9ucy5pbnNlcnQoUUxh dGluMVN0cmluZygibW9kYWwiKSwgZC0+bW9kYWwpOworKyAgICBvcHRpb25zLmluc2VydChRTGF0 aW4xU3RyaW5nKCJtb2RhbCIpLCB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWwpOworICAg ICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtdWx0aXBsZSIpLCBkLT5tdWx0aXBsZUZp bGVzKTsKKyAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiZGlyZWN0b3J5IiksIGQt PmRpcmVjdG9yeU1vZGUpOworIAorQEAgLTI5MCwxMCArMjk1LDE4IEBAIHZvaWQgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAKKyAgICAgUURCdXNQZW5kaW5nQ2Fs bCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbCht ZXNzYWdlKTsKKyAgICAgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIgPSBuZXcgUURC dXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwpOworLSAgICBjb25uZWN0KHdhdGNoZXIs ICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFt0aGlzXSAoUURCdXNQ ZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgY29ubmVjdCh3YXRjaGVyLCAmUURC dXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBbPV0gKFFEQnVzUGVuZGluZ0Nh bGxXYXRjaGVyICp3YXRjaGVyKSB7CisgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1c09i amVjdFBhdGg+IHJlcGx5ID0gKndhdGNoZXI7CistICAgICAgICBpZiAocmVwbHkuaXNFcnJvcigp KSB7CistICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAgLy8gQW55IGVycm9y IG1lYW5zIHRoZSBkaWFsb2cgaXMgbm90IHNob3duIGFuZCB3ZSBuZWVkIHRvIGZhbGxiYWNrCisr ICAgICAgICBkLT5mYWlsZWRUb09wZW4gPSByZXBseS5pc0Vycm9yKCk7CisrICAgICAgICBpZiAo ZC0+ZmFpbGVkVG9PcGVuKSB7CisrICAgICAgICAgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cp IHsKKysgICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dGbGFn cywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisrICAgICAgICAgICAgICAgIGlmIChkLT5sb29w LmlzUnVubmluZygpKQorKyAgICAgICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+ ZXhlYygpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFfRU1JVCBy ZWplY3QoKTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QobnVsbHB0ciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5LnZhbHVlKCku cGF0aCgpLAorQEAgLTMwMiw2ICszMTUsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZzo6b3BlblBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU0xPVChnb3RSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkpOworICAg ICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7CisgfQor IAorQEAgLTMyNiw3ICszNDAsNyBAQCBRVXJsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6 ZGlyZWN0b3J5KCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZp bGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygp LT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMo KS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQorKyAg ICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisgICAg ICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+ZGlyZWN0b3J5KCk7CisgCisgICAgIHJl dHVybiBkLT5kaXJlY3Rvcnk7CitAQCAtMzQ4LDcgKzM2Miw3IEBAIFFMaXN0PFFVcmw+IFFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6c2VsZWN0ZWRGaWxlcygpIGNvbnN0CisgeworICAgICBR X0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5h dGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09w dGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dP cHRpb25zOjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYg dXNlTmF0aXZlRmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFs b2ctPnNlbGVjdGVkRmlsZXMoKTsKKyAKKyAgICAgUUxpc3Q8UVVybD4gZmlsZXM7CitAQCAtNDAz LDE2ICs0MTcsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmV4ZWMoKQor IHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlmIChk LT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFs b2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlh bG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpIHsKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFs b2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZygpKSB7CisgICAgICAgICBkLT5uYXRpdmVGaWxlRGlh bG9nLT5leGVjKCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgLy8gSEFDSyB3 ZSBoYXZlIHRvIGF2b2lkIHJldHVybmluZyB1bnRpbCB3ZSBlbWl0IHRoYXQgdGhlIGRpYWxvZyB3 YXMgYWNjZXB0ZWQgb3IgcmVqZWN0ZWQKKy0gICAgUUV2ZW50TG9vcCBsb29wOworLSAgICBsb29w LmNvbm5lY3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAgbG9v cC5jb25uZWN0KHRoaXMsIFNJR05BTChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CistICAgIGxv b3AuZXhlYygpOworKyAgICBkLT5sb29wLmV4ZWMoKTsKKyB9CisgCisgdm9pZCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6OmhpZGUoKQorQEAgLTQyOSwxMyArNDQwLDEwIEBAIGJvb2wgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpzaG93KFF0OjpXaW5kb3dGbGFncyB3aW5kb3dGbGFn cywgUXQ6OldpbmRvd01vCisgCisgICAgIGluaXRpYWxpemVEaWFsb2coKTsKKyAKKy0gICAgZC0+ bW9kYWwgPSB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWw7CistICAgIGQtPndpbklkID0g cGFyZW50ID8gcGFyZW50LT53aW5JZCgpIDogMDsKKy0KKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVE aWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRp cmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpE aXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZl RmlsZURpYWxvZyhPcGVuRmFsbGJhY2spKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVE aWFsb2ctPnNob3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworIAorLSAg ICBvcGVuUG9ydGFsKCk7CisrICAgIG9wZW5Qb3J0YWwod2luZG93RmxhZ3MsIHdpbmRvd01vZGFs aXR5LCBwYXJlbnQpOworIAorICAgICByZXR1cm4gdHJ1ZTsKKyB9CitAQCAtNDY1LDQgKzQ3Mywy MSBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6Z290UmVzcG9uc2UodWludCBy ZXNwb25zZSwgY29uc3QgUVZhcmlhbnRNYXAgJgorICAgICB9CisgfQorIAorK2Jvb2wgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nOjp1c2VOYXRpdmVGaWxlRGlhbG9nKFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZzo6RmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSkgY29uc3QKKyt7CisrICAg IFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworKworKyAgICBpZiAoZC0+ ZmFpbGVkVG9PcGVuICYmIGZhbGxiYWNrVHlwZSAhPSBPcGVuRmFsbGJhY2spCisrICAgICAgICBy ZXR1cm4gdHJ1ZTsKKysKKysgICAgaWYgKGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA8IDMp IHsKKysgICAgICAgIGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRp b25zOjpEaXJlY3RvcnkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICBlbHNl IGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3Rv cnlPbmx5KQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrCisrICAgIHJldHVy biBmYWxzZTsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9y dGFsZmlsZWRpYWxvZ19wLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRn ZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitpbmRleCA0ZjRk ZTk2ZWNmLi42NWUyMmE1Y2YyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3Au aAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0 YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorQEAgLTUxLDYgKzUxLDExIEBAIGNs YXNzIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyA6IHB1YmxpYyBRUGxhdGZvcm1GaWxlRGlh bG9nSGVscGVyCisgICAgIFFfT0JKRUNUCisgICAgIFFfREVDTEFSRV9QUklWQVRFKFFYZGdEZXNr dG9wUG9ydGFsRmlsZURpYWxvZykKKyBwdWJsaWM6CisrICAgIGVudW0gRmFsbGJhY2tUeXBlIHsK KysgICAgICAgIEdlbmVyaWNGYWxsYmFjaywKKysgICAgICAgIE9wZW5GYWxsYmFjaworKyAgICB9 OworKworICAgICBlbnVtIENvbmRpdGlvblR5cGUgOiB1aW50IHsKKyAgICAgICAgIEdsb2JhbFBh dHRlcm4gPSAwLAorICAgICAgICAgTWltZVR5cGUgPSAxCitAQCAtNjksNyArNzQsNyBAQCBwdWJs aWM6CisgICAgIH07CisgICAgIHR5cGVkZWYgUVZlY3RvcjxGaWx0ZXI+IEZpbHRlckxpc3Q7Cisg CistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVs cGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cik7CisrICAgIFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0g bnVsbHB0ciwgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwKTsKKyAgICAgflFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpOworIAorICAgICBib29sIGRlZmF1bHROYW1lRmlsdGVy RGlzYWJsZXMoKSBjb25zdCBvdmVycmlkZTsKK0BAIC05Miw3ICs5Nyw4IEBAIHByaXZhdGUgUV9T TE9UUzoKKyAKKyBwcml2YXRlOgorICAgICB2b2lkIGluaXRpYWxpemVEaWFsb2coKTsKKy0gICAg dm9pZCBvcGVuUG9ydGFsKCk7CisrICAgIHZvaWQgb3BlblBvcnRhbChRdDo6V2luZG93RmxhZ3Mg d2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwgUVdpbmRvdyAq cGFyZW50KTsKKysgICAgYm9vbCB1c2VOYXRpdmVGaWxlRGlhbG9nKEZhbGxiYWNrVHlwZSBmYWxs YmFja1R5cGUgPSBHZW5lcmljRmFsbGJhY2spIGNvbnN0OworIAorICAgICBRU2NvcGVkUG9pbnRl cjxRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlPiBkX3B0cjsKKyB9OworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFs L3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt dGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK2luZGV4 IGZiMzI0YWZiZDguLmI4MDk1MDMxMjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMv cGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNw cAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0 YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK0BAIC0xMTEsNiArMTExLDcgQEAgUVhkZ0Rl c2t0b3BQb3J0YWxUaGVtZTo6UVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSgpCisgICAgICAgICBpZiAo cmVwbHkuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJz aW9uID0gcmVwbHkudmFsdWUoKS50b1VJbnQoKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdhdGNo ZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgIH0pOworIH0KKyAKK0BAIC0xNTIsMTEgKzE1MywxMiBA QCBRUGxhdGZvcm1EaWFsb2dIZWxwZXIqIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OmNyZWF0ZVBs YXRmb3JtRGlhbG9nSGVscGVyKERpYWxvZworIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9w UG9ydGFsVGhlbWUpOworIAorLSAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nKSB7CisrICAgIGlm ICh0eXBlID09IEZpbGVEaWFsb2cgJiYgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSB7Cisg ICAgICAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBGaWxlQ2hvb3NlciBwb3J0YWwgZG9uJ3Qgc3Vw cG9ydCBvcGVuaW5nIGRpcmVjdG9yaWVzLCB0aGVyZWZvcmUgd2UgZmFsbGJhY2sKKyAgICAgICAg IC8vIHRvIG5hdGl2ZSBmaWxlIGRpYWxvZyBvcGVuZWQgaW5zaWRlIHRoZSBzYW5kYm94IHRvIG9w ZW4gYSBkaXJlY3RvcnkuCistICAgICAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9u IDwgMyAmJiBkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQorLSAg ICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRpY19j YXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBsYXRm b3JtRGlhbG9nSGVscGVyKHR5cGUpKSk7CisrICAgICAgICBpZiAoZC0+YmFzZVRoZW1lLT51c2VQ bGF0Zm9ybU5hdGl2ZURpYWxvZyh0eXBlKSkKKysgICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVs cGVyKj4oZC0+YmFzZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+Zmls ZUNob29zZXJQb3J0YWxWZXJzaW9uKTsKKyAKKyAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0 b3BQb3J0YWxGaWxlRGlhbG9nOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCitpbmRleCA0M2Q1 ZTExOWFkLi4xZjljYmM0NTY1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50 c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdp bnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK0BAIC04OSw4ICs4OSwx MCBAQCB2b2lkIFFDdXBzUHJpbnRFbmdpbmU6OnNldFByb3BlcnR5KFByaW50RW5naW5lUHJvcGVy dHlLZXkga2V5LCBjb25zdCBRVmFyaWFudCAmdgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2Ug UFBLX0R1cGxleDogeworICAgICAgICAgUVByaW50OjpEdXBsZXhNb2RlIG1vZGUgPSBRUHJpbnQ6 OkR1cGxleE1vZGUodmFsdWUudG9JbnQoKSk7CistICAgICAgICBpZiAobW9kZSAhPSBkLT5kdXBs ZXggJiYgZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKG1v ZGUpKQorKyAgICAgICAgaWYgKGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMo KS5jb250YWlucyhtb2RlKSkgeworICAgICAgICAgICAgIGQtPmR1cGxleCA9IG1vZGU7CisrICAg ICAgICAgICAgZC0+ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IHRydWU7CisrICAgICAgICB9 CisgICAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIFBQS19QcmludGVyTmFtZToKK0BA IC0yNzcsOSArMjc5LDEyIEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZVByaXZhdGU6OmNoYW5nZVBy aW50ZXIoY29uc3QgUVN0cmluZyAmbmV3UHJpbnRlcikKKyAgICAgbV9wcmludERldmljZS5zd2Fw KHByaW50RGV2aWNlKTsKKyAgICAgcHJpbnRlck5hbWUgPSBtX3ByaW50RGV2aWNlLmlkKCk7Cisg CistICAgIC8vIENoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgc2V0dGluZ3Ms IG90aGVyd2lzZSB1cyBkZWZhdWx0cworLSAgICBpZiAoZHVwbGV4ICE9IFFQcmludDo6RHVwbGV4 QXV0byAmJiAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5zKGR1 cGxleCkpCisrICAgIC8vIGluIGNhc2UgYSBkdXBsZXggdmFsdWUgd2FzIGV4cGxpY2l0bHkgc2V0 LCBjaGVjayBpZiBuZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJyZW50IHZhbHVlLAorKyAgICAvLyBv dGhlcndpc2UgdXNlIGRldmljZSBkZWZhdWx0CisrICAgIGlmICghZHVwbGV4UmVxdWVzdGVkRXhw bGljaXRseSB8fCAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5z KGR1cGxleCkpIHsKKyAgICAgICAgIGR1cGxleCA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdER1cGxl eE1vZGUoKTsKKysgICAgICAgIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsKKysg ICAgfQorICAgICBRUHJpbnQ6OkNvbG9yTW9kZSBjb2xvck1vZGUgPSBncmF5c2NhbGUgPyBRUHJp bnQ6OkdyYXlTY2FsZSA6IFFQcmludDo6Q29sb3I7CisgICAgIGlmICghbV9wcmludERldmljZS5z dXBwb3J0ZWRDb2xvck1vZGVzKCkuY29udGFpbnMoY29sb3JNb2RlKSkKKyAgICAgICAgIGdyYXlz Y2FsZSA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdENvbG9yTW9kZSgpID09IFFQcmludDo6R3JheVNj YWxlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9x Y3Vwc3ByaW50ZW5naW5lX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vw cy9xY3Vwc3ByaW50ZW5naW5lX3AuaAoraW5kZXggYzAyMWIwYzY0My4uOGY4MWZlNDc4ZCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50 ZW5naW5lX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3Fj dXBzcHJpbnRlbmdpbmVfcC5oCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CisgICAgIFFT dHJpbmdMaXN0IGN1cHNPcHRpb25zOworICAgICBRU3RyaW5nIGN1cHNUZW1wRmlsZTsKKyAgICAg UVByaW50OjpEdXBsZXhNb2RlIGR1cGxleDsKKysgICAgYm9vbCBkdXBsZXhSZXF1ZXN0ZWRFeHBs aWNpdGx5ID0gZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAoraW5kZXggNjdl NzE1NGZhNi4uNDA4NzYxNTJlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxk cml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvc3Fs ZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAorQEAgLTgxNyw3ICs4MTcsNyBAQCBib29sIFFJ QmFzZVJlc3VsdFByaXZhdGU6OndyaXRlQXJyYXkoaW50IGNvbHVtbiwgY29uc3QgUUxpc3Q8UVZh cmlhbnQ+ICZsaXN0KQorICAgICBiYS5yZXNpemUoaW50KGJ1ZkxlbikpOworIAorICAgICBpZiAo bGlzdC5zaXplKCkgPiBhcnJheVNpemUpIHsKKy0gICAgICAgIGVycm9yID0gUUxhdGluMVN0cmlu ZygiQXJyYXkgc2l6ZSBtaXNzbWF0Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJvdmlk ZWQgbGlzdCBpcyAlMyIpOworKyAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJheSBz aXplIG1pc21hdGNoOiBzaXplIG9mICUxIGlzICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3QgaXMg JTMiKTsKKyAgICAgICAgIGVycm9yID0gZXJyb3IuYXJnKFFMYXRpbjFTdHJpbmcoc3FsbmFtZSkp LmFyZyhhcnJheVNpemUpLmFyZyhsaXN0LnNpemUoKSk7CisgICAgICAgICBxLT5zZXRMYXN0RXJy b3IoUVNxbEVycm9yKGVycm9yLCBRTGF0aW4xU3RyaW5nKCIiKSwgUVNxbEVycm9yOjpTdGF0ZW1l bnRFcnJvcikpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKK2luZGV4IDdjYTA1NWVlYTIu LjZiYzlkNDY3NTUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9t eXNxbC9xc3FsX215c3FsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMv bXlzcWwvcXNxbF9teXNxbC5jcHAKK0BAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgorICAgICBz dHJ1Y3QgUU15RmllbGQKKyAgICAgeworICAgICAgICAgY2hhciAqb3V0RmllbGQgPSBudWxscHRy OworLSAgICAgICAgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworKyAgICAgICAgY29u c3QgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworICAgICAgICAgUU1ldGFUeXBlOjpU eXBlIHR5cGUgPSBRTWV0YVR5cGU6OlVua25vd25UeXBlOworICAgICAgICAgbXlfYm9vbCBudWxs SW5kaWNhdG9yID0gZmFsc2U7CisgICAgICAgICB1bG9uZyBidWZMZW5ndGggPSAwdWw7CitAQCAt MzYxLDcgKzM2MSw3IEBAIHN0YXRpYyBib29sIHFJc0ludGVnZXIoaW50IHQpCisgdm9pZCBRTVlT UUxSZXN1bHRQcml2YXRlOjpiaW5kQmxvYnMoKQorIHsKKyAgICAgaW50IGk7CistICAgIE1ZU1FM X0ZJRUxEICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87Cisg ICAgIE1ZU1FMX0JJTkQgKmJpbmQ7CisgCisgICAgIGZvcihpID0gMDsgaSA8IGZpZWxkcy5jb3Vu dCgpOyArK2kpIHsKK0BAIC0zNzksNyArMzc5LDYgQEAgdm9pZCBRTVlTUUxSZXN1bHRQcml2YXRl OjpiaW5kQmxvYnMoKQorIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVzKCkK KyB7CisgICAgIE1ZU1FMX0JJTkQgKmJpbmQ7CistICAgIGNoYXIgKmZpZWxkOworICAgICBpbnQg aSA9IDA7CisgCisgICAgIGlmICghbWV0YSkKK0BAIC0zOTIsMzUgKzM5MSwzNCBAQCBib29sIFFN WVNRTFJlc3VsdFByaXZhdGU6OmJpbmRJblZhbHVlcygpCisgICAgIGluQmluZHMgPSBuZXcgTVlT UUxfQklORFtmaWVsZHMuc2l6ZSgpXTsKKyAgICAgbWVtc2V0KGluQmluZHMsIDAsIGZpZWxkcy5z aXplKCkgKiBzaXplb2YoTVlTUUxfQklORCkpOworIAorLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJ bmZvOworKyAgICBjb25zdCBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworIAorICAgICB3aGlsZSgo ZmllbGRJbmZvID0gbXlzcWxfZmV0Y2hfZmllbGQobWV0YSkpKSB7CisrICAgICAgICBiaW5kID0g JmluQmluZHNbaV07CisrCisgICAgICAgICBRTXlGaWVsZCAmZiA9IGZpZWxkc1tpXTsKKyAgICAg ICAgIGYubXlGaWVsZCA9IGZpZWxkSW5mbzsKKy0KKysgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5n dGggPSBmLmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsgMTsKKysgICAgICAgIGJpbmQt PmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50eXBlOworICAgICAgICAgZi50eXBlID0gcURlY29k ZU1ZU1FMVHlwZShmaWVsZEluZm8tPnR5cGUsIGZpZWxkSW5mby0+ZmxhZ3MpOworICAgICAgICAg aWYgKHFJc0Jsb2IoZmllbGRJbmZvLT50eXBlKSkgeworICAgICAgICAgICAgIC8vIHRoZSBzaXpl IG9mIGEgYmxvYi1maWVsZCBpcyBhdmFpbGFibGUgYXMgc29vbiBhcyB3ZSBjYWxsCisgICAgICAg ICAgICAgLy8gbXlzcWxfc3RtdF9zdG9yZV9yZXN1bHQoKQorICAgICAgICAgICAgIC8vIGFmdGVy IG15c3FsX3N0bXRfZXhlYygpIGluIFFNWVNRTFJlc3VsdDo6ZXhlYygpCistICAgICAgICAgICAg ZmllbGRJbmZvLT5sZW5ndGggPSAwOworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5ndGgg PSBmLmJ1Zkxlbmd0aCA9IDA7CisgICAgICAgICAgICAgaGFzQmxvYnMgPSB0cnVlOworICAgICAg ICAgfSBlbHNlIGlmIChxSXNJbnRlZ2VyKGYudHlwZSkpIHsKKy0gICAgICAgICAgICBmaWVsZElu Zm8tPmxlbmd0aCA9IDg7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYuYnVm TGVuZ3RoID0gODsKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgZmllbGRJbmZvLT50 eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX3R5cGUg PSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICAgICAgIH0KKy0gICAgICAgIGJpbmQgPSAmaW5CaW5k c1tpXTsKKy0gICAgICAgIGZpZWxkID0gbmV3IGNoYXJbZmllbGRJbmZvLT5sZW5ndGggKyAxXTsK Ky0gICAgICAgIG1lbXNldChmaWVsZCwgMCwgZmllbGRJbmZvLT5sZW5ndGggKyAxKTsKKyAKKy0g ICAgICAgIGJpbmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50eXBlOworLSAgICAgICAgYmlu ZC0+YnVmZmVyID0gZmllbGQ7CistICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5idWZM ZW5ndGggPSBmaWVsZEluZm8tPmxlbmd0aCArIDE7CisgICAgICAgICBiaW5kLT5pc19udWxsID0g JmYubnVsbEluZGljYXRvcjsKKyAgICAgICAgIGJpbmQtPmxlbmd0aCA9ICZmLmJ1Zkxlbmd0aDsK KyAgICAgICAgIGJpbmQtPmlzX3Vuc2lnbmVkID0gZmllbGRJbmZvLT5mbGFncyAmIFVOU0lHTkVE X0ZMQUcgPyAxIDogMDsKKy0gICAgICAgIGYub3V0RmllbGQ9ZmllbGQ7CisrCisrICAgICAgICBj aGFyICpmaWVsZCA9IG5ldyBjaGFyW2JpbmQtPmJ1ZmZlcl9sZW5ndGggKyAxXXt9OworKyAgICAg ICAgYmluZC0+YnVmZmVyID0gZi5vdXRGaWVsZCA9IGZpZWxkOworIAorICAgICAgICAgKytpOwor ICAgICB9CitAQCAtMTM2OSwyMCArMTM2NywyMCBAQCBib29sIFFNWVNRTERyaXZlcjo6b3Blbihj b25zdCBRU3RyaW5nJiBkYiwKKyAgICAgfQorIAorICNpZiBNWVNRTF9WRVJTSU9OX0lEID49IDUw MDA3CistICAgIGlmIChteXNxbF9nZXRfY2xpZW50X3ZlcnNpb24oKSA+PSA1MDUwMyAmJiBteXNx bF9nZXRfc2VydmVyX3ZlcnNpb24oZC0+bXlzcWwpID49IDUwNTAzKSB7CistICAgICAgICAvLyBm b3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3VwcG9y dHMgNC1ieXRlIGNoYXJhY3RlcnMpCistICAgICAgICBteXNxbF9zZXRfY2hhcmFjdGVyX3NldChk LT5teXNxbCwgInV0ZjhtYjQiKTsKKysgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8g YmUgdXRmOG1iNCAob25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorKyAg ICBpZiAobXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0IikpIHsKKysg ICAgICAgIC8vIHRoaXMgZmFpbGVkLCB0cnkgZm9yY2luZyBpdCB0byB1dGYgKEJNUCBvbmx5KQor KyAgICAgICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIpKQor KyAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwgIk15U1FMOiBVbmFibGUgdG8gc2V0IHRoZSBjbGll bnQgY2hhcmFjdGVyIHNldCB0byB1dGY4LiI7CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCist ICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKysgICAg ICAgIGVsc2UKKysgICAgICAgICAgICBkLT50YyA9IGNvZGVjKGQtPm15c3FsKTsKKyAjZW5kaWYK Ky0gICAgfSBlbHNlCistICAgIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0aW9u IHRvIGJlIHV0ZjgKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAi dXRmOCIpOworKyAgICB9CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBkLT50 YyA9IGNvZGVjKGQtPm15c3FsKTsKKysgICAgZWxzZQorKyAgICAgICAgZC0+dGMgPSBRVGV4dENv ZGVjOjpjb2RlY0Zvck5hbWUoIlVURi04Iik7CisgI2VuZGlmCistICAgIH0KKyAjZW5kaWYgIC8v IE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKyAKKyAgICAgZC0+cHJlcGFyZWRRdWVyeXNFbmFi bGVkID0gY2hlY2tQcmVwYXJlZFF1ZXJpZXMoZC0+bXlzcWwpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZyBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitzaW1pbGFyaXR5 IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv cHJpbnQtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9w cmludGVyLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ByaW50LTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ByaW50ZXItMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9t IHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nCityZW5hbWUgdG8g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1zaWRl ZC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBh Z2VzLWZhY2luZy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nCityZW5h bWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0y NC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUK K3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNp ZGVkLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlcy1mYWNpbmctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nCitzaW1p bGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIu cG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1v dmVydmlldy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nCityZW5hbWUg dG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMy LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ZpZXctcGFnZS1vbmUtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3Jl bmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9uZS0y NC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFn ZXMtc2luZ2xlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nCitzaW1pbGFyaXR5IGlu ZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmll dy1wYWdlLW9uZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitzaW1pbGFyaXR5 IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv Zml0LXBhZ2UtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy96b29tLWZpdC1wYWdlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4 IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXBh Z2UtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29t LWZpdC1wYWdlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAw JQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgt MjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZp dC13aWR0aC0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUK K3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTMy LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQt d2lkdGgtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitpbmRleCA3OGU1YjhkMWVmLi4yYTI4NTE2 NzE5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFnZXNl dHVwZGlhbG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dz L3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKK0BAIC01MzIsNiArNTMyLDcgQEAgdm9pZCBRUGFn ZVNldHVwV2lkZ2V0Ojp1cGRhdGVXaWRnZXQoKQorIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6c2V0 dXBQcmludGVyKCkgY29uc3QKKyB7CisgICAgIG1fcHJpbnRlci0+c2V0UGFnZUxheW91dChtX3Bh Z2VMYXlvdXQpOworKyAgICBtX3ByaW50ZXItPnNldFBhZ2VPcmllbnRhdGlvbihtX3BhZ2VMYXlv dXQub3JpZW50YXRpb24oKSk7CisgI2lmIFFUX0NPTkZJRyhjdXBzKQorICAgICBRQ1VQU1N1cHBv cnQ6OlBhZ2VzUGVyU2hlZXQgcGFnZXNQZXJTaGVldCA9IHF2YXJpYW50X2Nhc3Q8UUNVUFNTdXBw b3J0OjpQYWdlc1BlclNoZWV0PihtX3VpLnBhZ2VzUGVyU2hlZXRDb21iby0+Y3VycmVudERhdGEo KQorICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJp bnRkaWFsb2cucXJjIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFs b2cucXJjCitpbmRleCA1YTU3OWJhYTU1Li4xMGI4ZTFkMzQxIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCisrKysgYi9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK0BAIC0xLDkgKzEsOSBA QAorIDwhRE9DVFlQRSBSQ0M+PFJDQyB2ZXJzaW9uPSIxLjAiPgorIDxxcmVzb3VyY2UgcHJlZml4 PSIvcXQtcHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nIj4KKy08ZmlsZT5p bWFnZXMvZml0LXBhZ2UtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0zMi5w bmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+ aW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXBh Z2UtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZzwvZmls ZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nPC9maWxlPgorKzxmaWxlPmlt YWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZpcnN0 LTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMzIucG5nPC9maWxlPgorIDxm aWxlPmltYWdlcy9nby1sYXN0LTI0LnBuZzwvZmlsZT4KK0BAIC0xOCwxNCArMTgsMTQgQEAKKyA8 ZmlsZT5pbWFnZXMvbGF5b3V0LXBvcnRyYWl0LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMv cGFnZS1zZXR1cC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMzIucG5n PC9maWxlPgorLTxmaWxlPmltYWdlcy9wcmludC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2Vz L3ByaW50LTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBu ZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZzwvZmlsZT4KKy08 ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3Zp ZXctcGFnZS1vbmUtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQt MjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nPC9maWxl PgorKzxmaWxlPmltYWdlcy9wcmludGVyLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJp bnRlci0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQu cG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZzwvZmls ZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nPC9maWxlPgorKzxmaWxl PmltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3Zp ZXctcGFnZXMtZmFjaW5nLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1m YWNpbmctMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLWluLTI0LnBuZzwvZmlsZT4K KyA8ZmlsZT5pbWFnZXMvem9vbS1pbi0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20t b3V0LTI0LnBuZzwvZmlsZT4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCitpbmRleCBjNWI4NDVmNGVjLi41YTViYTFkMGE4 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFs b2dfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50 ZGlhbG9nX3VuaXguY3BwCitAQCAtNzAyLDEzICs3MDIsMTQgQEAgdm9pZCBRUHJpbnREaWFsb2dQ cml2YXRlOjpzZWxlY3RQcmludGVyKGNvbnN0IFFQcmludGVyOjpPdXRwdXRGb3JtYXQgb3V0cHV0 Rm9ybWEKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBvcHRpb25zLmdyYXlzY2FsZS0+c2V0 Q2hlY2tlZCh0cnVlKTsKKyAKKy0gICAgICAgIC8vIGtlZXAgZHVwbGV4IHZhbHVlIGV4cGxpY2l0 bHkgc2V0IGJ5IHVzZXIsIGlmIGFueSwgYW5kIHNlbGVjdGVkIHByaW50ZXIgc3VwcG9ydHMgaXQ7 CistICAgICAgICAvLyB1c2UgZGV2aWNlIGRlZmF1bHQgb3RoZXJ3aXNlCisrICAgICAgICAvLyBk dXBsZXggcHJpb3JpdGllcyB0byBiZSBhcyBmb2xsb3dzOgorKyAgICAgICAgLy8gMSkgYSB1c2Vy LXNlbGVjdGVkIGR1cGxleCB2YWx1ZSBpbiB0aGUgZGlhbG9nIGhhcyBoaWdoZXN0IHByb3JpdHkK KysgICAgICAgIC8vIDIpIGR1cGxleCB2YWx1ZSBzZXQgaW4gdGhlIFFQcmludGVyCisgICAgICAg ICBRUHJpbnQ6OkR1cGxleE1vZGUgZHVwbGV4OworICAgICAgICAgaWYgKGV4cGxpY2l0RHVwbGV4 TW9kZSAhPSBRUHJpbnQ6OkR1cGxleEF1dG8gJiYgc3VwcG9ydGVkRHVwbGV4TW9kZS5jb250YWlu cyhleHBsaWNpdER1cGxleE1vZGUpKQorICAgICAgICAgICAgIGR1cGxleCA9IGV4cGxpY2l0RHVw bGV4TW9kZTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBkdXBsZXggPSB0b3AtPmQtPm1f Y3VycmVudFByaW50RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICAgICAgZHVw bGV4ID0gc3RhdGljX2Nhc3Q8UVByaW50OjpEdXBsZXhNb2RlPihwLT5kdXBsZXgoKSk7CisgICAg ICAgICBzd2l0Y2ggKGR1cGxleCkgeworICAgICAgICAgY2FzZSBRUHJpbnQ6OkR1cGxleE5vbmU6 CisgICAgICAgICAgICAgb3B0aW9ucy5ub0R1cGxleC0+c2V0Q2hlY2tlZCh0cnVlKTsgYnJlYWs7 CitAQCAtMTI0MiwxMCArMTI0MywxMCBAQCB2b2lkIFFVbml4UHJpbnRXaWRnZXRQcml2YXRlOjpf cV9wcmludGVyQ2hhbmdlZChpbnQgaW5kZXgpCisgICAgICAgICAgICAgUVN0cmluZyBmaWxlbmFt ZSA9IHdpZGdldC5maWxlbmFtZS0+dGV4dCgpOworICAgICAgICAgICAgIHdpZGdldC5maWxlbmFt ZS0+c2V0VGV4dChmaWxlbmFtZSk7CisgICAgICAgICAgICAgd2lkZ2V0LmxPdXRwdXQtPnNldEVu YWJsZWQodHJ1ZSk7CistICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorLSAgICAgICAgICAg ICAgICBvcHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAg ICAgICAgICAgICBwcmludGVyLT5zZXRPdXRwdXRGb3JtYXQoUVByaW50ZXI6OlBkZkZvcm1hdCk7 CisgICAgICAgICAgICAgbV9jdXJyZW50UHJpbnREZXZpY2UgPSBRUHJpbnREZXZpY2UoKTsKKysg ICAgICAgICAgICBpZiAob3B0aW9uc1BhbmUpCisrICAgICAgICAgICAgICAgIG9wdGlvbnNQYW5l LT5zZWxlY3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitpbmRleCAzOTU3NWQ1ZjU3Li4y M2I3ZTg5NTM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9x cHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAorQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFFQ cmludFByZXZpZXdEaWFsb2dQcml2YXRlOjppbml0KFFQcmludGVyICpfcHJpbnRlcikKKyBzdGF0 aWMgaW5saW5lIHZvaWQgcXRfc2V0dXBBY3Rpb25JY29uKFFBY3Rpb24gKmFjdGlvbiwgUUxhdGlu MVN0cmluZyBuYW1lKQorIHsKKyAgICAgUUxhdGluMVN0cmluZyBpbWFnZVByZWZpeCgiOi9xdC1w cm9qZWN0Lm9yZy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cvaW1hZ2VzLyIpOworLSAgICBR SWNvbiBpY29uOworKyAgICBRSWNvbiBpY29uID0gUUljb246OmZyb21UaGVtZShuYW1lKTsKKyAg ICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0yNC5w bmciKSwgUVNpemUoMjQsIDI0KSk7CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5h bWUgKyBRTGF0aW4xU3RyaW5nKCItMzIucG5nIiksIFFTaXplKDMyLCAzMikpOworICAgICBhY3Rp b24tPnNldEljb24oaWNvbik7CitAQCAtMzgzLDggKzM4Myw4IEBAIHZvaWQgUVByaW50UHJldmll d0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIGZpdFBhZ2VBY3Rpb24tPnNldE9i amVjdE5hbWUoUUxhdGluMVN0cmluZygiZml0UGFnZUFjdGlvbiIpKTsKKyAgICAgZml0V2lkdGhB Y3Rpb24tPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0Q2hlY2th YmxlKHRydWUpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0V2lkdGhBY3Rpb24sIFFMYXRp bjFTdHJpbmcoImZpdC13aWR0aCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VB Y3Rpb24sIFFMYXRpbjFTdHJpbmcoImZpdC1wYWdlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbklj b24oZml0V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInpvb20tZml0LXdpZHRoIikpOworKyAg ICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygiem9vbS1m aXQtcGFnZSIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChmaXRHcm91cCwgU0lHTkFMKHRyaWdn ZXJlZChRQWN0aW9uKikpLCBxLCBTTE9UKF9xX2ZpdChRQWN0aW9uKikpKTsKKyAKKyAgICAgLy8g Wm9vbQorQEAgLTQxMCw5ICs0MTAsOSBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRl OjpzZXR1cEFjdGlvbnMoKQorICAgICBzaW5nbGVNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5hZGRB Y3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwg IlNob3cgc2luZ2xlIHBhZ2UiKSk7CisgICAgIGZhY2luZ01vZGVBY3Rpb24gPSBtb2RlR3JvdXAt PmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFs b2ciLCAiU2hvdyBmYWNpbmcgcGFnZXMiKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbiA9IG1v ZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJl dmlld0RpYWxvZyIsICJTaG93IG92ZXJ2aWV3IG9mIGFsbCBwYWdlcyIpKTsKKy0gICAgcXRfc2V0 dXBBY3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1v bmUiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0aW4x U3RyaW5nKCJ2aWV3LXBhZ2Utc2lkZWQiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihvdmVy dmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1tdWx0aSIpKTsKKysgICAg cXRfc2V0dXBBY3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXct cGFnZXMtc2luZ2xlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5nTW9kZUFjdGlv biwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1mYWNpbmciKSk7CisrICAgIHF0X3NldHVwQWN0 aW9uSWNvbihvdmVydmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtb3Zl cnZpZXciKSk7CisgICAgIHNpbmdsZU1vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0 cmluZygic2luZ2xlTW9kZUFjdGlvbiIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbi0+c2V0T2Jq ZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJmYWNpbmdNb2RlQWN0aW9uIikpOworICAgICBvdmVydmll d01vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygib3ZlcnZpZXdNb2RlQWN0 aW9uIikpOworQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2 YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBwcmludGVyR3JvdXAgPSBuZXcgUUFjdGlvbkdyb3Vw KHEpOworICAgICBwcmludEFjdGlvbiA9IHByaW50ZXJHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBw bGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJQcmludCIpKTsKKyAg ICAgcGFnZVNldHVwQWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNh dGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlBhZ2Ugc2V0dXAiKSk7Cist ICAgIHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJpbnQi KSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygi cHJpbnRlciIpKTsKKyAgICAgcXRfc2V0dXBBY3Rpb25JY29uKHBhZ2VTZXR1cEFjdGlvbiwgUUxh dGluMVN0cmluZygicGFnZS1zZXR1cCIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwcmludEFj dGlvbiwgU0lHTkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNMT1QoX3FfcHJpbnQoKSkpOworICAg ICBRT2JqZWN0Ojpjb25uZWN0KHBhZ2VTZXR1cEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZChib29s KSksIHEsIFNMT1QoX3FfcGFnZVNldHVwKCkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Nx bC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnku Y3BwCitpbmRleCAzMmM2MTY2Yzc5Li42MGFmZWYxMGMzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9x c3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoq CistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmln aHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3 LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFNx bCBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMzc3LDYgKzM3NywxMCBAQCBib29sIFFT cWxRdWVyeTo6ZXhlYyhjb25zdCBRU3RyaW5nJiBxdWVyeSkKKyAgICAgUUVsYXBzZWRUaW1lciB0 OworICAgICB0LnN0YXJ0KCk7CisgI2VuZGlmCisrICAgIGlmICghZHJpdmVyKCkpIHsKKysgICAg ICAgIHFXYXJuaW5nKCJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBi ZWVuIHNldCB1cCIpOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisgICAgIGlmIChk LT5yZWYubG9hZFJlbGF4ZWQoKSAhPSAxKSB7CisgICAgICAgICBib29sIGZvID0gaXNGb3J3YXJk T25seSgpOworICAgICAgICAgKnRoaXMgPSBRU3FsUXVlcnkoZHJpdmVyKCktPmNyZWF0ZVJlc3Vs dCgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVs dGVzdGVyLmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIu Y3BwCitpbmRleCA4ZWZiOWM1M2Q0Li5jZTA2MmY2NmQ3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMv dGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitAQCAtNDU0LDcgKzQ1NCw3IEBA IHZvaWQgUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyUHJpdmF0ZTo6cGFyZW50KCkKKyAKKyAgICAg Ly8gQ29tbW9uIGVycm9yIHRlc3QgIzIsIG1ha2Ugc3VyZSB0aGF0IGEgc2Vjb25kIGxldmVsIGlu ZGV4IGhhcyBhIHBhcmVudAorICAgICAvLyB0aGF0IGlzIHRoZSBmaXJzdCBsZXZlbCBpbmRleC4K Ky0gICAgaWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAwKSB7CisrICAgIGlmIChtb2Rl bC0+cm93Q291bnQodG9wSW5kZXgpID4gMCAmJiBtb2RlbC0+Y29sdW1uQ291bnQodG9wSW5kZXgp ID4gMCkgeworICAgICAgICAgUU1vZGVsSW5kZXggY2hpbGRJbmRleCA9IG1vZGVsLT5pbmRleCgw LCAwLCB0b3BJbmRleCk7CisgICAgICAgICBNT0RFTFRFU1RFUl9WRVJJRlkoY2hpbGRJbmRleC5p c1ZhbGlkKCkpOworICAgICAgICAgTU9ERUxURVNURVJfQ09NUEFSRShtb2RlbC0+cGFyZW50KGNo aWxkSW5kZXgpLCB0b3BJbmRleCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3Fh c2NpaWtleS5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAoraW5kZXggOWEz MDhkYTJiYy4uOTM0OThiMjU2ZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYXNj aWlrZXkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorQEAgLTQ5 OCw2ICs0OTgsMTEgQEAgY2hhciBRVGVzdDo6a2V5VG9Bc2NpaShRdDo6S2V5IGtleSkKKyAgICAg Y2FzZSBRdDo6S2V5X0xhdW5jaEUgOiByZXR1cm4gMDsgLy8gPSAweDEwYjAsCisgICAgIGNhc2Ug UXQ6OktleV9MYXVuY2hGIDogcmV0dXJuIDA7IC8vID0gMHgxMGIxLAorIAorKyAgICAvLyBLZXlw YWQgbmF2aWdhdGlvbiBrZXlzCisrICAgIGNhc2UgUXQ6OktleV9TZWxlY3QgOiByZXR1cm4gMDsg Ly8gPSAweDAxMDEwMDAwCisrICAgIGNhc2UgUXQ6OktleV9ZZXMgOiByZXR1cm4gMDsgLy8gPSAw eDAxMDEwMDAxCisrICAgIGNhc2UgUXQ6OktleV9ObyA6IHJldHVybiAwOyAvLyA9IDB4MDEwMTAw MDIKKysKKyAgICAgZGVmYXVsdDogUVRFU1RfQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7CisgICAg IH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcCBi L3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK2luZGV4IDg4MDI4YWFjNmUuLjJl ODk5MzA3NzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCitAQCAtMjUxLDcgKzI1 MSw4IEBAIGJvb2wgUVRlc3RSZXN1bHQ6OnZlcmlmeShib29sIHN0YXRlbWVudCwgY29uc3QgY2hh ciAqc3RhdGVtZW50U3RyLAorIHsKKyAgICAgUVRFU1RfQVNTRVJUKHN0YXRlbWVudFN0cik7Cisg CistICAgIGNoYXIgbXNnWzEwMjRdID0geydcMCd9OworKyAgICBjaGFyIG1zZ1sxMDI0XTsKKysg ICAgbXNnWzBdID0gJ1wwJzsKKyAKKyAgICAgaWYgKFFUZXN0TG9nOjp2ZXJib3NlTGV2ZWwoKSA+ PSAyKSB7CisgICAgICAgICBxc25wcmludGYobXNnLCAxMDI0LCAiUVZFUklGWSglcykiLCBzdGF0 ZW1lbnRTdHIpOworQEAgLTMwOSw3ICszMTAsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlSGVscGVy KGJvb2wgc3VjY2VzcywgY29uc3QgY2hhciAqZmFpbHVyZU1zZywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgaGFzVmFsdWVzID0gdHJ1ZSkKKyB7CisgICAgIGNvbnN0IHNpemVfdCBt YXhNc2dMZW4gPSAxMDI0OworLSAgICBjaGFyIG1zZ1ttYXhNc2dMZW5dID0geydcMCd9OworKyAg ICBjaGFyIG1zZ1ttYXhNc2dMZW5dOworKyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBRVEVT VF9BU1NFUlQoZXhwZWN0ZWQpOworICAgICBRVEVTVF9BU1NFUlQoYWN0dWFsKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwIGIvcXRiYXNl L3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAoraW5kZXggNDI0NzczMTI3NS4u Y2IzMjViZTg1YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xv cmRpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxv Zy5jcHAKK0BAIC03OCw3ICs3OCwxMCBAQAorICNpbmNsdWRlICJxd2luZG93LmgiCisgCisgI2lu Y2x1ZGUgInByaXZhdGUvcWRpYWxvZ19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWd1aWFwcGxp Y2F0aW9uX3AuaCIKKyAKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXNlcnZpY2VzLmg+CisrI2lu Y2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxhbGdvcml0aG0+ CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtMTYxMSw2ICsxNjE0LDIwIEBAIHZvaWQgUUNv bG9yRGlhbG9nUHJpdmF0ZTo6X3FfbmV3U3RhbmRhcmQoaW50IHIsIGludCBjKQorIHZvaWQgUUNv bG9yRGlhbG9nUHJpdmF0ZTo6X3FfcGlja1NjcmVlbkNvbG9yKCkKKyB7CisgICAgIFFfUShRQ29s b3JEaWFsb2cpOworKworKyAgICBhdXRvICpwbGF0Zm9ybVNlcnZpY2VzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5zZXJ2aWNlcygpOworKyAgICBpZiAo cGxhdGZvcm1TZXJ2aWNlcy0+aGFzQ2FwYWJpbGl0eShRUGxhdGZvcm1TZXJ2aWNlczo6Q2FwYWJp bGl0eTo6Q29sb3JQaWNraW5nKSkgeworKyAgICAgICAgaWYgKGF1dG8gKmNvbG9yUGlja2VyID0g cGxhdGZvcm1TZXJ2aWNlcy0+Y29sb3JQaWNrZXIocS0+d2luZG93SGFuZGxlKCkpKSB7CisrICAg ICAgICAgICAgcS0+Y29ubmVjdChjb2xvclBpY2tlciwgJlFQbGF0Zm9ybVNlcnZpY2VDb2xvclBp Y2tlcjo6Y29sb3JQaWNrZWQsIHEsCisrICAgICAgICAgICAgICAgICAgICAgICBbcSwgY29sb3JQ aWNrZXJdKGNvbnN0IFFDb2xvciAmY29sb3IpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb2xvclBpY2tlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICBxLT5zZXRDdXJyZW50Q29sb3IoY29sb3IpOworKyAgICAgICAgICAgICAgICAgICAgICAgfSk7 CisrICAgICAgICAgICAgY29sb3JQaWNrZXItPnBpY2tDb2xvcigpOworKyAgICAgICAgICAgIHJl dHVybjsKKysgICAgICAgIH0KKysgICAgfQorKworICAgICBpZiAoIWNvbG9yUGlja2luZ0V2ZW50 RmlsdGVyKQorICAgICAgICAgY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIgPSBuZXcgUUNvbG9yUGlj a2luZ0V2ZW50RmlsdGVyKHRoaXMsIHEpOworICAgICBxLT5pbnN0YWxsRXZlbnRGaWx0ZXIoY29s b3JQaWNraW5nRXZlbnRGaWx0ZXIpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9p dGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9p dGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAoraW5kZXggZTEyMDgxN2VkYy4uOGVh MzZiNTQyNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFic3Ry YWN0aXRlbWRlbGVnYXRlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9x YWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCitAQCAtNDAwLDEyICs0MDAsNyBAQCBib29sIFFBYnN0 cmFjdEl0ZW1EZWxlZ2F0ZTo6aGVscEV2ZW50KFFIZWxwRXZlbnQgKmV2ZW50LAorICAgICAgICAg Y29uc3QgUVN0cmluZyB0b29sdGlwID0gaW5kZXguaXNWYWxpZCgpID8KKyAgICAgICAgICAgICAg IGQtPnRleHRGb3JSb2xlKFF0OjpUb29sVGlwUm9sZSwgaW5kZXguZGF0YShRdDo6VG9vbFRpcFJv bGUpLCBvcHRpb24ubG9jYWxlLCBwcmVjaXNpb24pIDoKKyAgICAgICAgICAgICAgIFFTdHJpbmco KTsKKy0gICAgICAgIFFSZWN0IHJlY3Q7CistICAgICAgICBpZiAoaW5kZXguaXNWYWxpZCgpKSB7 CistICAgICAgICAgICAgY29uc3QgUVJlY3QgciA9IHZpZXctPnZpc3VhbFJlY3QoaW5kZXgpOwor LSAgICAgICAgICAgIHJlY3QgPSBRUmVjdCh2aWV3LT5tYXBUb0dsb2JhbChyLnRvcExlZnQoKSks IHIuc2l6ZSgpKTsKKy0gICAgICAgIH0KKy0gICAgICAgIFFUb29sVGlwOjpzaG93VGV4dChoZS0+ Z2xvYmFsUG9zKCksIHRvb2x0aXAsIHZpZXcsIHJlY3QpOworKyAgICAgICAgUVRvb2xUaXA6OnNo b3dUZXh0KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldy0+dmlld3BvcnQoKSwgb3B0aW9u LnJlY3QpOworICAgICAgICAgZXZlbnQtPnNldEFjY2VwdGVkKCF0b29sdGlwLmlzRW1wdHkoKSk7 CisgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dp ZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZp ZXdzL3FsaXN0dmlldy5jcHAKK2luZGV4IDJiMzQ0NzY2NDIuLmVlYmZhYTAzMGUgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorQEAgLTMzODYsNiArMzM4 Niw3IEBAIHZvaWQgUUljb25Nb2RlVmlld0Jhc2U6OnVwZGF0ZUNvbnRlbnRzU2l6ZSgpCisgKi8K KyB2b2lkIFFMaXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1cnJl bnQsIGNvbnN0IFFNb2RlbEluZGV4ICZwcmV2aW91cykKKyB7CisrICAgIFFBYnN0cmFjdEl0ZW1W aWV3OjpjdXJyZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgI2lmbmRlZiBRVF9OT19B Q0NFU1NJQklMSVRZCisgICAgIGlmIChRQWNjZXNzaWJsZTo6aXNBY3RpdmUoKSkgeworICAgICAg ICAgaWYgKGN1cnJlbnQuaXNWYWxpZCgpKSB7CitAQCAtMzM5Niw3ICszMzk3LDYgQEAgdm9pZCBR TGlzdFZpZXc6OmN1cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZjdXJyZW50LCBjb25z dCBRTW9kZWxJbmRleCAmcHIKKyAgICAgICAgIH0KKyAgICAgfQorICNlbmRpZgorLSAgICBRQWJz dHJhY3RJdGVtVmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpOworIH0KKyAK KyAvKiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZp ZXcuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAoraW5k ZXggOTM0YWM1ODFiMi4uZjc5YmIyNDI0OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVt dmlld3MvcXRhYmxldmlldy5jcHAKK0BAIC0xMDEzLDYgKzEwMTMsNyBAQCB2b2lkIFFUYWJsZVZp ZXdQcml2YXRlOjpkcmF3Q2VsbChRUGFpbnRlciAqcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9u Vmlld0l0ZW0gJgorIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29u c3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uc3QgUVN0eWxlT3B0aW9uVmlld0l0 ZW0gJm9wdGlvbikgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRVGFibGVWaWV3KTsKKysgICAg Y29uc3QgaW50IG9sZEhpbnQgPSBoaW50OworICAgICBRV2lkZ2V0ICplZGl0b3IgPSBlZGl0b3JG b3JJbmRleChpbmRleCkud2lkZ2V0LmRhdGEoKTsKKyAgICAgaWYgKGVkaXRvciAmJiBwZXJzaXN0 ZW50LmNvbnRhaW5zKGVkaXRvcikpIHsKKyAgICAgICAgIGhpbnQgPSBxTWF4KGhpbnQsIGVkaXRv ci0+c2l6ZUhpbnQoKS53aWR0aCgpKTsKK0BAIC0xMDIxLDYgKzEwMjIsMTcgQEAgaW50IFFUYWJs ZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5kZXgs IGludCBoaW50LCBjb24KKyAgICAgICAgIGhpbnQgPSBxQm91bmQobWluLCBoaW50LCBtYXgpOwor ICAgICB9CisgICAgIGhpbnQgPSBxTWF4KGhpbnQsIHEtPml0ZW1EZWxlZ2F0ZShpbmRleCktPnNp emVIaW50KG9wdGlvbiwgaW5kZXgpLndpZHRoKCkpOworKworKyAgICBpZiAoaGFzU3BhbnMoKSkg eworKyAgICAgICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRl eC5yb3coKSk7CisrICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXguY29s dW1uKCkgJiYgc3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpIHsKKysgICAgICAgICAgICAvLyBz cGFucyBhcmUgc2NyZXdlZCB1cCB3aGVuIHNlY3Rpb25zIGFyZSBtb3ZlZAorKyAgICAgICAgICAg IGNvbnN0IGF1dG8gbGVmdCA9IGxvZ2ljYWxDb2x1bW4oc3Bhbi0+bV9sZWZ0KTsKKysgICAgICAg ICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBzcGFuLT53aWR0aCgpOyArK2kpCisrICAgICAgICAg ICAgICAgaGludCAtPSBxLT5jb2x1bW5XaWR0aCh2aXN1YWxDb2x1bW4obGVmdCArIGkpKTsKKysg ICAgICAgIH0KKysgICAgICAgIGhpbnQgPSBzdGQ6Om1heChoaW50LCBvbGRIaW50KTsKKysgICAg fQorICAgICByZXR1cm4gaGludDsKKyB9CisgCitAQCAtMTA1Myw2ICsxMDY1LDExIEBAIGludCBR VGFibGVWaWV3UHJpdmF0ZTo6aGVpZ2h0SGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZp bmRleCwgaW50IGhpbnQsIFFTCisgICAgICAgICBvcHRpb24ucmVjdC5zZXRIZWlnaHQoaGVpZ2h0 KTsKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldFgocS0+Y29sdW1uVmlld3BvcnRQb3NpdGlvbihp bmRleC5jb2x1bW4oKSkpOworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgocS0+Y29sdW1u V2lkdGgoaW5kZXguY29sdW1uKCkpKTsKKysgICAgICAgIGlmIChoYXNTcGFucygpKSB7CisrICAg ICAgICAgICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRleC5y b3coKSk7CisrICAgICAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0ID09IGluZGV4LmNv bHVtbigpICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKQorKyAgICAgICAgICAgICAgICBv cHRpb24ucmVjdC5zZXRXaWR0aChzdGQ6Om1heChvcHRpb24ucmVjdC53aWR0aCgpLCB2aXN1YWxT cGFuUmVjdCgqc3Bhbikud2lkdGgoKSkpOworKyAgICAgICAgfQorICAgICAgICAgLy8gMXB4IGxl c3Mgc3BhY2Ugd2hlbiBncmlkIGlzIHNob3duIChzZWUgZHJhd0NlbGwpCisgICAgICAgICBpZiAo c2hvd0dyaWQpCisgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgob3B0aW9uLnJlY3Qu d2lkdGgoKSAtIDEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFj dGlvbi5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK2luZGV4IDI1OGEx ZWEwYTAuLjczN2MxZTgyODUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVs L3FhY3Rpb24uaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK0BA IC04MSw3ICs4MSw3IEBAIGNsYXNzIFFfV0lER0VUU19FWFBPUlQgUUFjdGlvbiA6IHB1YmxpYyBR T2JqZWN0CisgICAgIFFfUFJPUEVSVFkoTWVudVJvbGUgbWVudVJvbGUgUkVBRCBtZW51Um9sZSBX UklURSBzZXRNZW51Um9sZSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIGlj b25WaXNpYmxlSW5NZW51IFJFQUQgaXNJY29uVmlzaWJsZUluTWVudSBXUklURSBzZXRJY29uVmlz aWJsZUluTWVudSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIHNob3J0Y3V0 VmlzaWJsZUluQ29udGV4dE1lbnUgUkVBRCBpc1Nob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUg V1JJVEUgc2V0U2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBOT1RJRlkgY2hhbmdlZCkKKy0g ICAgUV9QUk9QRVJUWShQcmlvcml0eSBwcmlvcml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNldFBy aW9yaXR5KQorKyAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3JpdHkg V1JJVEUgc2V0UHJpb3JpdHkgTk9USUZZIGNoYW5nZWQpCisgCisgcHVibGljOgorICAgICAvLyBu b3RlIHRoaXMgaXMgY29waWVkIGludG8gcXBsYXRmb3JtbWVudS5oLCB3aGljaCBtdXN0IHN0YXkg aW4gc3luYworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldC5j cHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitpbmRleCA5ZWJhMWUw MDFlLi4yNmY2ZDI3ZTE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9x d2lkZ2V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAor QEAgLTUyOTYsNyArNTI5Niw3IEBAIHZvaWQgUVdpZGdldFByaXZhdGU6OmRyYXdXaWRnZXQoUVBh aW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNvbnN0IFFQCisgICAgICAgICBR V2lkZ2V0RWZmZWN0U291cmNlUHJpdmF0ZSAqc291cmNlZCA9IHN0YXRpY19jYXN0PFFXaWRnZXRF ZmZlY3RTb3VyY2VQcml2YXRlICo+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZS0+ZF9mdW5jKCkpOworICAgICAgICAgaWYg KCFzb3VyY2VkLT5jb250ZXh0KSB7CistICAgICAgICAgICAgY29uc3QgUVJlZ2lvbiBlZmZlY3RS Z24ocmduLmJvdW5kaW5nUmVjdCgpKTsKKysgICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVmZmVj dFJnbigoZmxhZ3MgJiBVc2VFZmZlY3RSZWdpb25Cb3VuZHMpID8gcmduLmJvdW5kaW5nUmVjdCgp IDogcmduKTsKKyAgICAgICAgICAgICBRV2lkZ2V0UGFpbnRDb250ZXh0IGNvbnRleHQocGRldiwg ZWZmZWN0UmduLCBvZmZzZXQsIGZsYWdzLCBzaGFyZWRQYWludGVyLCByZXBhaW50TWFuYWdlcik7 CisgICAgICAgICAgICAgc291cmNlZC0+Y29udGV4dCA9ICZjb250ZXh0OworICAgICAgICAgICAg IGlmICghc2hhcmVkUGFpbnRlcikgeworQEAgLTUzMjgsNiArNTMyOCw3IEBAIHZvaWQgUVdpZGdl dFByaXZhdGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZy Z24sIGNvbnN0IFFQCisgICAgICAgICB9CisgICAgIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGdy YXBoaWNzZWZmZWN0KQorKyAgICBmbGFncyA9IGZsYWdzICYgflVzZUVmZmVjdFJlZ2lvbkJvdW5k czsKKyAKKyAgICAgY29uc3QgYm9vbCBhbHNvT25TY3JlZW4gPSBmbGFncyAmIERyYXdQYWludE9u U2NyZWVuOworICAgICBjb25zdCBib29sIHJlY3Vyc2l2ZSA9IGZsYWdzICYgRHJhd1JlY3Vyc2l2 ZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5oIGIv cXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAoraW5kZXggZWVmNmI4ZmEyYy4u YzQzMmY0YjVkNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdl dF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKK0BAIC0y MjksNyArMjI5LDggQEAgcHVibGljOgorICAgICAgICAgRG9udFN1YnRyYWN0T3BhcXVlQ2hpbGRy ZW4gPSAweDEwLAorICAgICAgICAgRG9udERyYXdPcGFxdWVDaGlsZHJlbiA9IDB4MjAsCisgICAg ICAgICBEb250RHJhd05hdGl2ZUNoaWxkcmVuID0gMHg0MCwKKy0gICAgICAgIERvbnRTZXRDb21w b3NpdGlvbk1vZGUgPSAweDgwCisrICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4 MCwKKysgICAgICAgIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcyA9IDB4MTAwCisgICAgIH07CisgICAg IFFfREVDTEFSRV9GTEFHUyhEcmF3V2lkZ2V0RmxhZ3MsIERyYXdXaWRnZXRGbGFnKQorICAgICBR X0ZMQUcoRHJhd1dpZGdldEZsYWdzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9r ZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJu ZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAoraW5kZXggMDI4ODBiMzRkYS4uMGQ0NGUxMzI2 ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRt YW5hZ2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVwYWlu dG1hbmFnZXIuY3BwCitAQCAtMTAxOCw3ICsxMDE4LDggQEAgdm9pZCBRV2lkZ2V0UmVwYWludE1h bmFnZXI6OnBhaW50QW5kRmx1c2goKQorIAorICAgICAvLyBQYWludCB0aGUgcmVzdCB3aXRoIGNv bXBvc2l0aW9uLgorICAgICBpZiAocmVwYWludEFsbFdpZGdldHMgfHwgIWRpcnR5Q29weS5pc0Vt cHR5KCkpIHsKKy0gICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3V2lkZ2V0RmxhZ3MgZmxhZ3Mg PSBRV2lkZ2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQcml2YXRlOjpEcmF3UmVjdXJz aXZlOworKyAgICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9IFFX aWRnZXRQcml2YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNpdmUK KysgICAgICAgICAgICAgICAgfCBRV2lkZ2V0UHJpdmF0ZTo6VXNlRWZmZWN0UmVnaW9uQm91bmRz OworICAgICAgICAgdGx3LT5kX2Z1bmMoKS0+ZHJhd1dpZGdldChzdG9yZS0+cGFpbnREZXZpY2Uo KSwgZGlydHlDb3B5LCBRUG9pbnQoKSwgZmxhZ3MsIG51bGxwdHIsIHRoaXMpOworICAgICB9Cisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3Bw IGIvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitpbmRleCBmNDM0 NWQ5N2M0Li45NjI5MTJjODM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxl cy9xZnVzaW9uc3R5bGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3FmdXNp b25zdHlsZS5jcHAKK0BAIC0xNzcyLDE0ICsxNzcyLDYgQEAgdm9pZCBRRnVzaW9uU3R5bGU6OmRy YXdDb250cm9sKENvbnRyb2xFbGVtZW50IGVsZW1lbnQsIGNvbnN0IFFTdHlsZU9wdGlvbiAqb3B0 aW8KKyAgICAgICAgICAgICBwcm94eSgpLT5kcmF3Q29udHJvbChDRV9QdXNoQnV0dG9uTGFiZWws ICZzdWJvcHQsIHBhaW50ZXIsIHdpZGdldCk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsK Ky0gICAgY2FzZSBDRV9QdXNoQnV0dG9uTGFiZWw6CistICAgICAgICBpZiAoY29uc3QgUVN0eWxl T3B0aW9uQnV0dG9uICpidXR0b24gPSBxc3R5bGVvcHRpb25fY2FzdDxjb25zdCBRU3R5bGVPcHRp b25CdXR0b24gKj4ob3B0aW9uKSkgeworLSAgICAgICAgICAgIFFTdHlsZU9wdGlvbkJ1dHRvbiBi KCpidXR0b24pOworLSAgICAgICAgICAgIC8vIG5vIFBNX0J1dHRvblNoaWZ0SG9yaXpvbnRhbCBh bmQgUE1fQnV0dG9uU2hpZnRWZXJ0aWNhbCBmb3IgZnVzaW9uIHN0eWxlCistICAgICAgICAgICAg Yi5zdGF0ZSAmPSB+KFN0YXRlX09uIHwgU3RhdGVfU3Vua2VuKTsKKy0gICAgICAgICAgICBRQ29t bW9uU3R5bGU6OmRyYXdDb250cm9sKGVsZW1lbnQsICZiLCBwYWludGVyLCB3aWRnZXQpOworLSAg ICAgICAgfQorLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQ0VfTWVudUJhckVtcHR5QXJlYToK KyAgICAgICAgIHBhaW50ZXItPnNhdmUoKTsKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwv cWNvbXBsZXRlci5jcHAKK2luZGV4IDE4YjI0MDYzZDguLmVmNzIwN2E4YTMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKK0BAIC0xMTIwLDYgKzExMjAsOCBAQCB2b2lk IFFDb21wbGV0ZXI6OnNldE1vZGVsKFFBYnN0cmFjdEl0ZW1Nb2RlbCAqbW9kZWwpCisgeworICAg ICBRX0QoUUNvbXBsZXRlcik7CisgICAgIFFBYnN0cmFjdEl0ZW1Nb2RlbCAqb2xkTW9kZWwgPSBk LT5wcm94eS0+c291cmNlTW9kZWwoKTsKKysgICAgaWYgKG9sZE1vZGVsID09IG1vZGVsKQorKyAg ICAgICAgcmV0dXJuOworICNpZiBRVF9DT05GSUcoZmlsZXN5c3RlbW1vZGVsKQorICAgICBpZiAo cW9iamVjdF9jYXN0PGNvbnN0IFFGaWxlU3lzdGVtTW9kZWwgKj4ob2xkTW9kZWwpKQorICAgICAg ICAgc2V0Q29tcGxldGlvblJvbGUoUXQ6OkVkaXRSb2xlKTsgLy8gUVRCVUctNTQ2NDIsIGNsZWFy IEZpbGVOYW1lUm9sZSBzZXQgYnkgUUZpbGVTeXN0ZW1Nb2RlbAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCBhMTI4YjIzOTUwLi5kYzQw YmY2MmZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0 YnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0 dG9uLmNwcAorQEAgLTU2LDYgKzU2LDcgQEAKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJVFkK KyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cXBhL3FwbGF0 Zm9ybXRoZW1lLmg+CisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKK0BAIC0xMDc2LDE5ICsx MDc3LDE5IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAq ZSkKKyB7CisgICAgIFFfRChRQWJzdHJhY3RCdXR0b24pOworICAgICBib29sIG5leHQgPSB0cnVl OworLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoKKy0g ICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworLSAgICAgICAg YnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFj ZToKKy0gICAgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkpIHsKKy0gICAgICAgICAgICBzZXRE b3duKHRydWUpOworLSAgICAgICAgICAgIHJlcGFpbnQoKTsKKy0gICAgICAgICAgICBkLT5lbWl0 UHJlc3NlZCgpOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CisrCisrICAgIGNvbnN0IGF1 dG8ga2V5ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBjb25zdCBhdXRv IGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUo KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQo UVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1 dHRvblByZXNzS2V5cy5jb250YWlucyhrZXkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSkgeworKyAg ICAgICAgc2V0RG93bih0cnVlKTsKKysgICAgICAgIHJlcGFpbnQoKTsKKysgICAgICAgIGQtPmVt aXRQcmVzc2VkKCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgc3dpdGNoIChr ZXkpIHsKKyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICAgbmV4dCA9IGZhbHNlOworICAg ICAgICAgUV9GQUxMVEhST1VHSCgpOworQEAgLTExNTMsMTUgKzExNTQsMTUgQEAgdm9pZCBRQWJz dHJhY3RCdXR0b246OmtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQgKmUpCisgICAgIGlmICghZS0+ aXNBdXRvUmVwZWF0KCkpCisgICAgICAgICBkLT5yZXBlYXRUaW1lci5zdG9wKCk7CisgCistICAg IHN3aXRjaCAoZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAgY2Fz ZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSAmJiBkLT5k b3duKQorLSAgICAgICAgICAgIGQtPmNsaWNrKCk7CistICAgICAgICBicmVhazsKKy0gICAgZGVm YXVsdDoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNz S2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhl bWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5 cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSkpICYmICFlLT5pc0F1dG9S ZXBlYXQoKSAmJiBkLT5kb3duKSB7CisrICAgICAgICBkLT5jbGljaygpOworKyAgICAgICAgcmV0 dXJuOworICAgICB9CisrCisrICAgIGUtPmlnbm9yZSgpOworIH0KKyAKKyAvKiFccmVpbXAKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwIGIvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAoraW5kZXggN2E0OTZjMjdlMC4u MGEzZDk2NjQ3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21i b2JveC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAK K0BAIC0zMzUyLDcgKzMzNTIsMjMgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQoUUtl eUV2ZW50ICplKQorIAorICAgICBNb3ZlIG1vdmUgPSBOb01vdmU7CisgICAgIGludCBuZXdJbmRl eCA9IGN1cnJlbnRJbmRleCgpOworLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CisrCisrICAgIGJv b2wgcHJlc3NMaWtlQnV0dG9uID0gIWQtPmxpbmVFZGl0OworKyNpZmRlZiBRVF9LRVlQQURfTkFW SUdBVElPTgorKyAgICBwcmVzc0xpa2VCdXR0b24gfD0gUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5 cGFkTmF2aWdhdGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCk7CisrI2VuZGlmCisrICAg IGF1dG8ga2V5ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBpZiAocHJl c3NMaWtlQnV0dG9uKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpC dXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblByZXNz S2V5cy5jb250YWlucyhrZXkpKSB7CisrICAgICAgICAgICAgc2hvd1BvcHVwKCk7CisrICAgICAg ICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHN3aXRjaCAoa2V5KSB7 CisgICAgIGNhc2UgUXQ6OktleV9VcDoKKyAgICAgICAgIGlmIChlLT5tb2RpZmllcnMoKSAmIFF0 OjpDb250cm9sTW9kaWZpZXIpCisgICAgICAgICAgICAgYnJlYWs7IC8vIHBhc3MgdG8gbGluZSBl ZGl0IGZvciBhdXRvIGNvbXBsZXRpb24KK0BAIC0zMzk0LDI2ICszNDEwLDExIEBAIHZvaWQgUUNv bWJvQm94OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgICAgICAgICByZXR1cm47 CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNlOgor LSAgICAgICAgaWYgKCFkLT5saW5lRWRpdCkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgpOwor LSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworLSAgICBj YXNlIFF0OjpLZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CisgICAgIGNhc2Ug UXQ6OktleV9Fc2NhcGU6CisgICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KQorICAgICAgICAgICAg IGUtPmlnbm9yZSgpOworICAgICAgICAgYnJlYWs7CisgI2lmZGVmIFFUX0tFWVBBRF9OQVZJR0FU SU9OCistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgICAgICBpZiAoUUFwcGxpY2F0aW9u UHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKQorLSAgICAgICAgICAgICAgICAmJiAo IWhhc0VkaXRGb2N1cygpIHx8ICFkLT5saW5lRWRpdCkpIHsKKy0gICAgICAgICAgICBzaG93UG9w dXAoKTsKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgICBicmVhazsK KyAgICAgY2FzZSBRdDo6S2V5X0xlZnQ6CisgICAgIGNhc2UgUXQ6OktleV9SaWdodDoKKyAgICAg ICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgpICYm ICFoYXNFZGl0Rm9jdXMoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xZGF0ZXRpbWVlZGl0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGlt ZWVkaXRfcC5oCitpbmRleCBkMzZiNmY4ZjlhLi5lMGRmNWI1MTU4IDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKKysrKyBiL3F0YmFzZS9z cmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCitAQCAtMSw2ICsxLDYgQEAKKyAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE4IFRoZSBRdCBD b21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgor ICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFdpZGdldHMgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0Lgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAgYi9x dGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitpbmRleCAwMmEwYmVkMzI1 Li4zZjNlY2NjMzcwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdy b3VwYm94LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNw cAorQEAgLTU0LDYgKzU0LDggQEAKKyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYK KyAjaW5jbHVkZSA8cHJpdmF0ZS9xd2lkZ2V0X3AuaD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3Vp YXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyAj aW5jbHVkZSAicWRlYnVnLmgiCisgCitAQCAtMzYwLDcgKzM2MiwxMCBAQCBib29sIFFHcm91cEJv eDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgUUV2 ZW50OjpLZXlQcmVzczogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nhc3Q8UUtl eUV2ZW50Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChrLT5rZXko KSA9PSBRdDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkgeworKyAg ICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0dG9uUHJl c3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsKKyAgICAg ICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveDsK KyAgICAgICAgICAgICB1cGRhdGUoc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19H cm91cEJveCwgJmJveCwgUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94LCB0aGlzKSk7CisgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CitAQCAtMzY5LDcgKzM3NCwxMCBAQCBib29sIFFHcm91cEJv eDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpLZXlSZWxlYXNl OiB7CisgICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihlKTsK Ky0gICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpLZXlf U2VsZWN0IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25zdCBh dXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhl bWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhl bWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOwor KyAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29udGFp bnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGJvb2wg dG9nZ2xlID0gKGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6U0NfR3JvdXBCb3hMYWJlbAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGQtPnByZXNzZWRDb250cm9sID09IFFTdHls ZTo6U0NfR3JvdXBCb3hDaGVja0JveCk7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wg PSBRU3R5bGU6OlNDX05vbmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdl dHMvcWxhYmVsLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAKK2lu ZGV4IDMwZmY4MGNiYjAuLmNmMjYwNWMxN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdl dHMvd2lkZ2V0cy9xbGFiZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x bGFiZWwuY3BwCitAQCAtNDIxLDkgKzQyMSw2IEBAIHZvaWQgUUxhYmVsOjpzZXRQaXhtYXAoY29u c3QgUVBpeG1hcCAmcGl4bWFwKQorICAgICAgICAgZC0+cGl4bWFwID0gbmV3IFFQaXhtYXAocGl4 bWFwKTsKKyAgICAgfQorIAorLSAgICBpZiAoZC0+cGl4bWFwLT5kZXB0aCgpID09IDEgJiYgIWQt PnBpeG1hcC0+bWFzaygpKQorLSAgICAgICAgZC0+cGl4bWFwLT5zZXRNYXNrKCooKFFCaXRtYXAg KilkLT5waXhtYXApKTsKKy0KKyAgICAgZC0+dXBkYXRlTGFiZWwoKTsKKyB9CisgCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcCBi L3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKK2luZGV4 IDQ5M2MwOTRjYzEuLmQ1ZjRiNTkwMTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMv d2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMv d2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCitAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgYm9v bCBRVG9vbEJhckFyZWFMYXlvdXQ6OnJlc3RvcmVTdGF0ZShRRGF0YVN0cmVhbSAmc3RyZWFtLCBj b25zdCBRTGlzdDxRVG9vbEJhcioKKyAgICAgICAgICAgICAgICAgaXRlbS53aWRnZXRJdGVtID0g bmV3IFFXaWRnZXRJdGVtVjIodG9vbEJhcik7CisgICAgICAgICAgICAgICAgIHRvb2xCYXItPnNl dE9yaWVudGF0aW9uKGZsb2F0aW5nID8gKChzaG93biAmIDIpID8gUXQ6OlZlcnRpY2FsIDogUXQ6 Okhvcml6b250YWwpIDogZG9jay5vKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0Vmlz aWJsZShzaG93biAmIDEpOworLSAgICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1bmMoKS0+c2V0 V2luZG93U3RhdGUoZmxvYXRpbmcsIHRydWUsIHJlY3QpOworKyAgICAgICAgICAgICAgICB0b29s QmFyLT5kX2Z1bmMoKS0+c2V0V2luZG93U3RhdGUoZmxvYXRpbmcsIGZhbHNlLCByZWN0KTsKKyAK KyAgICAgICAgICAgICAgICAgaXRlbS5wcmVmZXJyZWRTaXplID0gaXRlbS5zaXplOworICAgICAg ICAgICAgICAgICBsaW5lLnRvb2xCYXJJdGVtcy5hcHBlbmQoaXRlbSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3Rz dF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1 cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtl cm5lbC5jcHAKK2luZGV4IDIxMmMwYTJlMTMuLjNjNzdiMWJhMGIgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0 Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25j dXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJhdGVr ZXJuZWwuY3BwCitAQCAtMTI2LDggKzEyNiw3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENv bmN1cnJlbnRJdGVyYXRlS2VybmVsOjppbnN0YW50aWF0ZSgpCisgeworLSAgICBhdXRvIGZ1dHVy ZSA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QXN5bmNocm9u b3VzbHkoKTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBzdGFydFRocmVh ZEVuZ2luZShuZXcgUHJpbnRGb3IoMCwgNDApKS5zdGFydEJsb2NraW5nKCk7CisgICAgIFFDT01Q QVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgNDApOworIH0KKyAKK0BAIC0xNjYsMTAgKzE2 NSw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQor ICAgICBjb25zdCBpbnQgdGltZXMgPSA1MDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1l czsgKytpKSB7CisgICAgICAgICBjb3VudGVyLnN0b3JlUmVsYXhlZCgwKTsKKy0gICAgICAgIC8v IFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgICAgIGF1 dG8gZiA9IG5ldyBDb3VudEZvcigwLCBpdGVyYXRpb25zKTsKKy0gICAgICAgIGF1dG8gZnV0dXJl ID0gZi0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JGaW5p c2hlZCgpOworKyAgICAgICAgQ291bnRGb3IgZigwLCBpdGVyYXRpb25zKTsKKysgICAgICAgIGYu c3RhcnRCbG9ja2luZygpOworICAgICAgICAgUUNPTVBBUkUoY291bnRlci5sb2FkUmVsYXhlZCgp LCBpdGVyYXRpb25zKTsKKyAgICAgfQorIH0KK0BAIC0xNzcsMTEgKzE3NCw4IEBAIHZvaWQgdHN0 X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQorIHZvaWQgdHN0X1F0Q29u Y3VycmVudEl0ZXJhdGVLZXJuZWw6Om5vSXRlcmF0aW9ucygpCisgeworICAgICBjb25zdCBpbnQg dGltZXMgPSAyMDAwMDsKKy0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7Cist ICAgICAgICBhdXRvIGZ1dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2VybmVs PFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkpCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNo ZWQoKTsKKy0gICAgfQorKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpCisrICAg ICAgICBzdGFydFRocmVhZEVuZ2luZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZv aWQ+KDAsIDApKS5zdGFydEJsb2NraW5nKCk7CisgfQorIAorIFFNdXRleCB0aHJlYWRzTXV0ZXg7 CitAQCAtMjM2LDEwICsyMzAsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVs Ojp0aHJvdHRsaW5nKCkKKyAKKyAgICAgdGhyZWFkcy5jbGVhcigpOworIAorLSAgICAvLyBUaHJl YWRFbmdpbmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZiA9IG5l dyBUaHJvdHRsZUZvcigwLCB0b3RhbEl0ZXJhdGlvbnMpOworLSAgICBhdXRvIGZ1dHVyZSA9IGYt PnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOwor KyAgICBUaHJvdHRsZUZvciBmKDAsIHRvdGFsSXRlcmF0aW9ucyk7CisrICAgIGYuc3RhcnRCbG9j a2luZygpOworIAorICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIHRvdGFs SXRlcmF0aW9ucyk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVu dC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2lu ZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggYWM3YmU3YWNkZC4uODFi YzY0YzhkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25j dXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90 c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTY1LDkgKzY1LDE2IEBAIHB1Ymxp YzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1bkRpcmVjdGx5KCkK KyB7CistICAgIFByaW50VXNlciAqZW5naW5lID0gbmV3IFByaW50VXNlcigpOworLSAgICBRRnV0 dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZi53YWl0 Rm9yRmluaXNoZWQoKTsKKysgICAgeworKyAgICAgICAgUHJpbnRVc2VyIGVuZ2luZTsKKysgICAg ICAgIGVuZ2luZS5zdGFydFNpbmdsZVRocmVhZGVkKCk7CisrICAgICAgICBlbmdpbmUuc3RhcnRC bG9ja2luZygpOworKyAgICB9CisrICAgIHsKKysgICAgICAgIFByaW50VXNlciAqZW5naW5lID0g bmV3IFByaW50VXNlcigpOworKyAgICAgICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFy dEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICB9 CisgfQorIAorIGNsYXNzIFN0cmluZ1Jlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPFFT dHJpbmc+CitAQCAtOTksMTAgKzEwNiw4IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1 cnJlbnRUaHJlYWRFbmdpbmU6OnJlc3VsdCgpCisgeworLSAgICAvLyBUaHJlYWRFbmdpbmUgd2ls bCBkZWxldGUgJ2VuZ2luZScgd2hlbiBpdCBmaW5pc2hlcworLSAgICBhdXRvIGVuZ2luZSA9IG5l dyBTdHJpbmdSZXN1bHRVc2VyKCk7CistICAgIGF1dG8gZnV0dXJlID0gZW5naW5lLT5zdGFydEFz eW5jaHJvbm91c2x5KCk7CistICAgIFFDT01QQVJFKGZ1dHVyZS5yZXN1bHQoKSwgUVN0cmluZygi Rm9vIikpOworKyAgICBTdHJpbmdSZXN1bHRVc2VyIGVuZ2luZTsKKysgICAgUUNPTVBBUkUoKmVu Z2luZS5zdGFydEJsb2NraW5nKCksIFFTdHJpbmcoIkZvbyIpKTsKKyB9CisgCisgY2xhc3MgVm9p ZFJlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMTI4LDkgKzEzMywx NyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpydW5U aHJvdWdoU3RhcnRlcigpCisgeworLSAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+IHN0 YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKy0gICAg UUZ1dHVyZTxRU3RyaW5nPiBmID0gc3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAg IFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgeworKyAgICAgICAg VGhyZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUo bmV3IFN0cmluZ1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRRnV0dXJlPFFTdHJpbmc+ICBmID0g c3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAgICBRQ09NUEFSRShmLnJlc3Vs dCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIH0KKysKKysgICAgeworKyAgICAgICAgVGhyZWFk RW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0 cmluZ1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRU3RyaW5nIHN0ciA9IHN0YXJ0ZXIuc3RhcnRC bG9ja2luZygpOworKyAgICAgICAgUUNPTVBBUkUoc3RyLCBRU3RyaW5nKCJGb28iKSk7CisrICAg IH0KKyB9CisgCisgY2xhc3MgQ2FuY2VsVXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9pZD4K K0BAIC0yMTMsNiArMjI2LDEyIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6 dGhyb3R0bGUoKQorICAgICAgICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKyAgICAgICAgIFFDT01Q QVJFKGNvdW50LmxvYWRSZWxheGVkKCksIDApOworICAgICB9CisrCisrICAgIGZvciAoaW50IGkg PSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJvdHRsZUFsd2F5c1VzZXIgdDsK KysgICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQubG9h ZFJlbGF4ZWQoKSwgMCk7CisrICAgIH0KKyB9CisgCisgUVNldDxRVGhyZWFkICo+IHRocmVhZHM7 CitAQCAtMjQ5LDE3ICsyNjgsMzUgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5l Ojp0aHJlYWRDb3VudCgpCisgeworICAgICBjb25zdCBpbnQgcmVwZWF0cyA9IDEwOworICAgICBm b3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRV c2VyIHQ7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9 IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGludCBjb3VudF9leHBlY3RlZCA9IFFUaHJlYWRQ b29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpICsgMTsgLy8gKzEgZm9yIHRo ZSBtYWluIHRocmVhZC4KKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysg ICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAg ICAgIFFDT01QQVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisrCisgICAgICAgICAobmV3IFRo cmVhZENvdW50VXNlcigpKS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgp OworLSAgICAgICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKy0gICAgICAg IGNvbnN0IGF1dG8gbWF4VGhyZWFkQ291bnQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2Uo KS0+bWF4VGhyZWFkQ291bnQoKTsKKy0gICAgICAgIFFWRVJJRlkoY291bnQgPD0gbWF4VGhyZWFk Q291bnQpOworLSAgICAgICAgUVZFUklGWSghdGhyZWFkcy5jb250YWlucyhRVGhyZWFkOjpjdXJy ZW50VGhyZWFkKCkpKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAg ICAgY291bnRfZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhy ZWFkQ291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysgICAg ICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAg IFFDT01QQVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisgICAgIH0KKyAKKyAgICAgLy8gU2V0 IHRoZSBmaW5pc2ggZmxhZyBpbW1lZGlhdGVseSwgdGhpcyBzaG91bGQgZ2l2ZSB1cyBvbmUgdGhy ZWFkIG9ubHkuCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAg ICAgICBUaHJlYWRDb3VudFVzZXIgdCh0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLyk7CisrICAg ICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVhZHMuY291 bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1RfRkFJ TCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQsIDEp OworKworICAgICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIodHJ1ZSAvKmZpbmlzaEltbWVkaWF0 ZWx5Ki8pKS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAgICAg ICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50ID0g dGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAgICAg UUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisgICAgICAgICBRQ09NUEFS RShjb3VudCwgMSk7CisgICAgICAgICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJlYWQ6 OmN1cnJlbnRUaHJlYWQoKSkpOworICAgICB9CitAQCAtNDAwLDYgKzQzNyw3IEBAIHB1YmxpYzoK KyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorIHsK KysgICAgLy8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1Z2h0 ID0gZmFsc2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MTIsNiArNDUwLDMyIEBAIHZvaWQgdHN0 X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICBRVkVSSUZZ MihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAgfQorIAorKyAgICAvLyBC bG9ja2luZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSBh IHdvcmtlciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7Cisr ICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2Vy IGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0QmxvY2tp bmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAgICAg ICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVnaHQs ICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyB0ZXN0IHRocm93 aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZlcmVudCBjb2RlIHBh dGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkg IHsKKysgICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoMCk7CisrICAg ICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhj ZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAg ICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0K KysKKysgICAgLy8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1 Z2h0ID0gZmFsc2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MjMsNiArNDg3LDMxIEBAIHZvaWQg dHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICB9Cisg ICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAg fQorKworKyAgICAvLyBCbG9ja2luZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBl eGNlcHRpb24gZnJvbSBhIHdvcmtlciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1 Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNl cHRpb25UaHJvd2VyIGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBl LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRFeGNl cHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAg ICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQor KworKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJl YWQgKGRpZmZlcmVudCBjb2RlIHBhdGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0g ZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRpb25U aHJvd2VyIGUoMCk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9 IGNhdGNoIChjb25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVn aHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5v dCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKyB9CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcCBiL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK2luZGV4 IDQ5Njg3NDIxMTAuLmY0YzNmYjcxMWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCitAQCAtNDIsNiArNDIsNyBAQCBw cml2YXRlIHNsb3RzOgorICAgICB2b2lkIHdyaXRlQmxvY2tfZGF0YSgpOworICAgICB2b2lkIHdy aXRlQmxvY2soKTsKKyAgICAgdm9pZCBzZWVrKCk7CisrICAgIHZvaWQgaW52YWxpZFNlZWtzKCk7 CisgICAgIHZvaWQgc2Vla1Rlc3RfZGF0YSgpOworICAgICB2b2lkIHNlZWtUZXN0KCk7CisgICAg IHZvaWQgcmVhZF9yYXdkYXRhKCk7CitAQCAtMjg2LDYgKzI4NywyOSBAQCB2b2lkIHRzdF9RQnVm ZmVyOjpzZWVrKCkKKyAgICAgUUNPTVBBUkUoYnVmZmVyLnNpemUoKSwgcG9zKTsKKyB9CisgCisr dm9pZCB0c3RfUUJ1ZmZlcjo6aW52YWxpZFNlZWtzKCkKKyt7CisrICAgIGlmIGNvbnN0ZXhwciAo c2l6ZW9mKHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCkpIHsKKysgICAgICAgIC8vIHNpemVv Zihxc2l6ZXR5cGUpID09IHNpemVvZihxaW50NjQpLCBzbyArMSB3b3VsZCBvdmVyZmxvdworKyAg ICAgICAgUVNLSVAoIlRoaXMgaXMgYSAzMi1iaXQtb25seSB0ZXN0LiIpOworKyAgICB9IGVsc2Ug eworKyAgICAgICAgUUJ1ZmZlciBidWZmZXI7CisrICAgICAgICBidWZmZXIub3BlbihRSU9EZXZp Y2U6OldyaXRlT25seSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgp LCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQo MCkpOworKyAgICAgICAgY29uc3RleHByIHFpbnQ2NCBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkgPSAo c3RkOjpudW1lcmljX2xpbWl0czxxc2l6ZXR5cGU+OjptYXgpKCk7CisrICAgICAgICAvLyB0aGlz IHNob3VsZCBmYWlsIGZhc3QsIG5vdCBhZnRlciB0cnlpbmcgdG8gYWxsb2NhdGUgbmVhcmx5IDIg R2lCIG9mIGRhdGEsCisrICAgICAgICAvLyBwb3RlbnRpYWxseSBjcmFzaGluZyBpbiB0aGUgcHJv Y2VzczoKKysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKDIgKiBNYXhRQnl0ZUFycmF5Q2Fw YWNpdHkgLSAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgpLCBx c2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQoMCkp OworKyAgICAgICAgLy8gZGl0dG86CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2VlayhNYXhR Qnl0ZUFycmF5Q2FwYWNpdHkgKyAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVy KCkuc2l6ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygp LCBxaW50NjQoMCkpOworKyAgICB9CisrfQorKworIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWtUZXN0 X2RhdGEoKQorIHsKKyAgICAgd3JpdGVCbG9ja19kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAoraW5k ZXggZGE1MzI3NTk0Yy4uNGEwNGUwZjdjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAorQEAgLTU2MSw3 ICs1NjEsOCBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBx aW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4o bWF4U2l6ZSwgcWludDY0KGJ1Zi0+c2l6ZSgpIC0gb2Zmc2V0KSk7CistICAgICAgICBtZW1jcHko ZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7CisrICAgICAgICBpZiAo bWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkg KyBvZmZzZXQsIG1heFNpemUpOworICAgICAgICAgb2Zmc2V0ICs9IG1heFNpemU7CisgICAgICAg ICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorQEAgLTYwNCwxMyArNjA1LDE1IEBAIHByb3RlY3Rl ZDoKKyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVy cmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVm LnNpemUoKSAtIHBvcygpKSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgp ICsgcG9zKCksIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAg ICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7CisgICAg ICAgICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorICAgICBxaW50NjQgd3JpdGVEYXRhKGNvbnN0 IGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAgICBt YXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUoKSAtIHBvcygpKSk7CistICAg ICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBtYXhTaXplKTsKKysgICAgICAg IGlmIChtYXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBvcygp LCBkYXRhLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9CisgCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXBy b2Nlc3MuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXBy b2Nlc3MuY3BwCitpbmRleCBkYjYwYmVhZDY0Li5mMzQ1YTQ0NDE0IDEwMDY0NAorLS0tIGEvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5jcHAK K0BAIC0xLDcgKzEsOCBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBDb3B5cmln aHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAoQykgMjAyMCBJ bnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAgVGhlIFF0IENvbXBhbnkg THRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTAsNiArMTUx LDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBzdGFydFN0b3BTdGFydFN0b3BCdWZmZXJz KCk7CisgICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVhZFNsb3RfZGF0YSgpOworICAg ICB2b2lkIHByb2Nlc3NFdmVudHNJbkFSZWFkeVJlYWRTbG90KCk7CisrICAgIHZvaWQgc3RhcnRG cm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpOworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRX b3JraW5nRGlyKCk7CisgCisgICAgIC8vIGtlZXAgdGhlc2UgYXQgdGhlIGVuZCwgc2luY2UgdGhl eSB1c2UgbG90cyBvZiBwcm9jZXNzZXMgYW5kIHNvbWV0aW1lcworICAgICAvLyBjYXVzZWQgb2Jz Y3VyZSBmYWlsdXJlcyB0byBvY2N1ciBpbiB0ZXN0cyB0aGF0IGZvbGxvd2VkIHRoZW0gKGVzcC4g b24gdGhlIE1hYykKK0BAIC0yNzMxLDUgKzI3MzQsOTQgQEAgdm9pZCB0c3RfUVByb2Nlc3M6OmZp bmlzaFByb2Nlc3NCZWZvcmVSZWFkaW5nRG9uZV9kZXByZWNhdGVkKCkKKyAKKyAjZW5kaWYKKyAK KytlbnVtIGNsYXNzIENoZGlyTW9kZSB7CisrICAgIE5vbmUgPSAwLAorKyAgICBJblBhcmVudCwK KysgICAgSW5DaGlsZAorK307CisrUV9ERUNMQVJFX01FVEFUWVBFKENoZGlyTW9kZSkKKysKKyt2 b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpCisrewor KyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxDaGRpck1vZGU+KCk7CisrICAgIFFUZXN0OjphZGRDb2x1 bW48UVN0cmluZz4oInByb2dyYW1QcmVmaXgiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxDaGRp ck1vZGU+KCJjaGRpck1vZGUiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigic3VjY2Vz cyIpOworKworKyAgICBjb25zdGV4cHIgYm9vbCBJc1dpbmRvd3MgPSB0cnVlCisrI2lmZGVmIFFf T1NfVU5JWAorKyAgICAgICAgICAgICYmIGZhbHNlCisrI2VuZGlmCisrICAgICAgICAgICAgOwor KworKyAgICAvLyBiYXNlbGluZTogdHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIGRpcmVjdG9yeSwgdGhp cyBjYW4ndCBwb3NzaWJseSBzdWNjZWVkIQorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1zYW1l LWN3ZCIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6Ok5vbmUgPDwgZmFsc2U7CisrCisrICAg IC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBuZWl0aGVyIE9TIHNlYXJjaGVzIHRoZSBzZXRX b3JraW5nRGlyZWN0b3J5KCkKKysgICAgLy8gZGlyIHdpdGhvdXQgIi4vIgorKyAgICBRVGVzdDo6 bmV3Um93KCJwbGFpbi1jaGlsZC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6Oklu Q2hpbGQgPDwgZmFsc2U7CisrCisrICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBib3Ro IE9TZXMgc2VhcmNoIHRoZSBwYXJlbnQncyBDV0Qgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdS b3coInByZWZpeGVkLXBhcmVudC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJblBhcmVu dCA8PCB0cnVlOworKworKyAgICAvLyBvcHBvc2l0ZSBiZWhhdmlvcnM6IFdpbmRvd3Mgc2VhcmNo ZXMgdGhlIHBhcmVudCdzIENXRCBhbmQgVW5peCBzZWFyY2hlcworKyAgICAvLyB0aGUgY2hpbGQn cyB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtY2hpbGQtY2hkaXIiKSA8 PCAiLi8iIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCAhSXNXaW5kb3dzOworKworKyAgICAvLyBX aW5kb3dzIHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0Qgd2l0aG91dCAiLi8iCisrICAgIFFUZXN0 OjpuZXdSb3coInBsYWluLXBhcmVudC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6 OkluUGFyZW50IDw8IElzV2luZG93czsKKyt9CisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0 RnJvbUN1cnJlbnRXb3JraW5nRGlyKCkKKyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBwcm9ncmFt UHJlZml4KTsKKysgICAgUUZFVENIKENoZGlyTW9kZSwgY2hkaXJNb2RlKTsKKysgICAgUUZFVENI KGJvb2wsIHN1Y2Nlc3MpOworKworKyAgICBRUHJvY2VzcyBwcm9jZXNzOworKyAgICBxUmVnaXN0 ZXJNZXRhVHlwZTxRUHJvY2Vzczo6UHJvY2Vzc0Vycm9yPigpOworKyAgICBRU2lnbmFsU3B5IGVy cm9yU3B5KCZwcm9jZXNzLCAmUVByb2Nlc3M6OmVycm9yT2NjdXJyZWQpOworKyAgICBRVkVSSUZZ KGVycm9yU3B5LmlzVmFsaWQoKSk7CisrCisrICAgIC8vIGJvdGggdGhlIGRpciBuYW1lIGFuZCB0 aGUgZXhlY3V0YWJsZSBuYW1lCisrICAgIGNvbnN0IFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmluZ0xp dGVyYWwoInRlc3RQcm9jZXNzTm9ybWFsIik7CisrICAgIHByb2Nlc3Muc2V0UHJvZ3JhbShwcm9n cmFtUHJlZml4ICsgdGFyZ2V0KTsKKysKKysjaWZkZWYgUV9PU19VTklYCisrICAgIC8vIFJlc2V0 IFBBVEgsIHRvIGJlIHN1cmUgaXQgZG9lc24ndCBjb250YWluIC4gb3IgdGhlIGVtcHR5IHBhdGgu CisrICAgIC8vIFdlIGNhbid0IGRvIHRoaXMgb24gV2luZG93cyBiZWNhdXNlIERMTHMgYXJlIHNl YXJjaGVkIGluIFBBVEgKKysgICAgLy8gYW5kIFdpbmRvd3MgYWx3YXlzIHNlYXJjaGVzICIuIiBh bnl3YXkuCisrICAgIGF1dG8gcmVzdG9yZUVudiA9IHFTY29wZUd1YXJkKFtvbGQgPSBxZ2V0ZW52 KCJQQVRIIildIHsKKysgICAgICAgIHFwdXRlbnYoIlBBVEgiLCBvbGQpOworKyAgICB9KTsKKysg ICAgcXB1dGVudigiUEFUSCIsICIvIik7CisrI2VuZGlmCisrCisrICAgIHN3aXRjaCAoY2hkaXJN b2RlKSB7CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJblBhcmVudDogeworKyAgICAgICAgYXV0byBy ZXN0b3JlQ3dkID0gcVNjb3BlR3VhcmQoW29sZCA9IFFEaXI6OmN1cnJlbnRQYXRoKCldIHsKKysg ICAgICAgICAgICBRRGlyOjpzZXRDdXJyZW50KG9sZCk7CisrICAgICAgICB9KTsKKysgICAgICAg IFFWRVJJRlkoUURpcjo6c2V0Q3VycmVudCh0YXJnZXQpKTsKKysgICAgICAgIHByb2Nlc3Muc3Rh cnQoKTsKKysgICAgICAgIGJyZWFrOworKyAgICB9CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJbkNo aWxkOgorKyAgICAgICAgcHJvY2Vzcy5zZXRXb3JraW5nRGlyZWN0b3J5KHRhcmdldCk7CisrICAg ICAgICBRX0ZBTExUSFJPVUdIKCk7CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpOb25lOgorKyAgICAg ICAgcHJvY2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAgUUNP TVBBUkUocHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLCBzdWNjZXNzKTsKKysgICAgUUNPTVBBUkUo ZXJyb3JTcHkuY291bnQoKSwgaW50KCFzdWNjZXNzKSk7CisrICAgIGlmIChzdWNjZXNzKSB7Cisr ICAgICAgICBRVkVSSUZZKHByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKCkpOworKyAgICB9IGVsc2Ug eworKyAgICAgICAgUUNPTVBBUkUocHJvY2Vzcy5lcnJvcigpLCBRUHJvY2Vzczo6RmFpbGVkVG9T dGFydCk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVByb2Nlc3MpCisgI2luY2x1 ZGUgInRzdF9xcHJvY2Vzcy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRl bmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVt bW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxl c3Byb3h5bW9kZWwuY3BwCitpbmRleCBlMWVhN2E0NTUyLi45MDk3MmNhYTU3IDEwMDY0NAorLS0t IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxl c3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVzcHJv eHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK0BAIC0xMTcsNiAr MTE3LDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BB ZnRlckxhc3RSb3dfZGF0YSgpOworICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRlckxh c3RSb3coKTsKKyAgICAgdm9pZCBxdGJ1ZzkxNzg4KCk7CisrICAgIHZvaWQgcXRidWc5MTg3OCgp OworIAorIHByaXZhdGU6CisgICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtb2Q7CitAQCAtODQzLDYg Kzg0NCwyMiBAQCB2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpxdGJ1Zzkx Nzg4KCkKKyAgICAgUUNPTVBBUkUocHJveHlDb25jYXQuY29sdW1uQ291bnQoKSwgMCk7CisgfQor IAorK3ZvaWQgdHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE4NzgoKQor K3sKKysgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG07CisrICAgIG0uc2V0Um93Q291bnQoNCk7Cisr ICAgIG0uc2V0Q29sdW1uQ291bnQoNCk7CisrCisrICAgIFFDb25jYXRlbmF0ZVRhYmxlc1Byb3h5 TW9kZWwgcG07CisrICAgIFFTb3J0RmlsdGVyUHJveHlNb2RlbCBwcm94eUZpbHRlcjsKKysgICAg cHJveHlGaWx0ZXIuc2V0U291cmNlTW9kZWwoJnBtKTsKKysgICAgcHJveHlGaWx0ZXIuc2V0Rmls dGVyRml4ZWRTdHJpbmcoInNvbWV0aGluZyIpOworKyAgICBwbS5hZGRTb3VyY2VNb2RlbCgmbSk7 ICAvLyBUaGlzIHNob3VsZCBub3QgYXNzZXJ0CisrCisrICAgIFFDT01QQVJFKHBtLmNvbHVtbkNv dW50KCksIDQpOworKyAgICBRQ09NUEFSRShwbS5yb3dDb3VudCgpLCA0KTsKKyt9CisrCisgUVRF U1RfR1VJTEVTU19NQUlOKHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsKQorIAorICNp bmNsdWRlICJ0c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5tb2MiCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVjdC5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0 LmNwcAoraW5kZXggOWJkNjZjMDgzNS4uZWQ0YTBiYWU1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNwcAor QEAgLTE1OCw2ICsxNTgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIG51bGxSZWNlaXZl cigpOworICAgICB2b2lkIGZ1bmN0b3JSZWZlcmVuY2VzQ29ubmVjdGlvbigpOworICAgICB2b2lk IGRpc2Nvbm5lY3REaXNjb25uZWN0cygpOworKyAgICB2b2lkIGRlY2xhcmF0aXZlRGF0YSgpOwor IH07CisgCisgc3RydWN0IFFPYmplY3RDcmVhdGVkT25TaHV0ZG93bgorQEAgLTc2NzksNSArNzY4 MCw4MSBAQCB2b2lkIHRzdF9RT2JqZWN0OjpkaXNjb25uZWN0RGlzY29ubmVjdHMoKQorIFFfU1RB VElDX0FTU0VSVChRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPHRzdF9RT2JqZWN0Pjo6VmFs dWUpOworIFFfU1RBVElDX0FTU0VSVCghUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNybzxTaWJs aW5nRGVsZXRlcj46OlZhbHVlKTsKKyAKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysvKgor KyAgICBTaW5jZSBRT2JqZWN0UHJpdmF0ZSBzdG9yZXMgdGhlIGRlY2xhcmF0aXZlRGF0YSBwb2lu dGVyIGluIGEgdW5pb24gd2l0aCB0aGUgcG9pbnRlcgorKyAgICB0byB0aGUgY3VycmVudGx5IGRl c3Ryb3llZCBjaGlsZCwgY2FsbHMgdG8gdGhlIFF0RGVjbGFyYXRpdmUgaGFuZGxlcnMgbmVlZCB0 byBiZQorKyAgICBjb3JyZWN0bHkgZ3VhcmRlZC4gUVRCVUctMTA1Mjg2CisrKi8KKytuYW1lc3Bh Y2UgUXREZWNsYXJhdGl2ZSB7Cisrc3RhdGljIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqdGhl RGF0YTsKKysKKytzdGF0aWMgdm9pZCBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRh ICpkYXRhLCBRT2JqZWN0ICopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsKKyt9 Cisrc3RhdGljIHZvaWQgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRh dGEsIFFPYmplY3QgKiwgaW50LCB2b2lkICoqKQorK3sKKysgICAgUUNPTVBBUkUoZGF0YSwgdGhl RGF0YSk7CisrfQorKy8vIHdlIGNhbid0IHVzZSBRQ09NUEFSRSBpbiB0aGUgbmV4dCB0d28gZnVu Y3Rpb25zLCBhcyB0aGV5IGRvbid0IHJldHVybiB2b2lkCisrc3RhdGljIGludCByZWNlaXZlcnMo UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkKKyt7 CisrICAgIFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRhIiwg X19GSUxFX18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIDA7CisrfQorK3N0YXRpYyBib29sIGlz U2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3QgUU9i amVjdCAqLCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwgImRh dGEiLCAidGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiB0cnVlOwor K30KKysKKytjbGFzcyBPYmplY3QgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpFQ1QK KytwdWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIH5PYmplY3QoKQor KyAgICB7CisrICAgICAgICBpZiAoT2JqZWN0ICpwID0gc3RhdGljX2Nhc3Q8T2JqZWN0ICo+KHBh cmVudCgpKSkKKysgICAgICAgICAgICBwLT5lbWl0U2lnbmFsKCk7CisrICAgIH0KKysKKysgICAg dm9pZCBlbWl0U2lnbmFsKCkKKysgICAgeworKyAgICAgICAgZW1pdCB0aGVTaWduYWwoKTsKKysg ICAgfQorKworK3NpZ25hbHM6CisrICAgIHZvaWQgdGhlU2lnbmFsKCk7CisrfTsKKysKKyt9Cisr I2VuZGlmCisrCisrdm9pZCB0c3RfUU9iamVjdDo6ZGVjbGFyYXRpdmVEYXRhKCkKKyt7CisrI2lm ZGVmIFFUX0JVSUxEX0lOVEVSTkFMCisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGRlc3Ryb3ll ZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OmRlc3Ryb3llZCk7CisrICAgIFFTY29w ZWRWYWx1ZVJvbGxiYWNrIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpz aWduYWxFbWl0dGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF0 RGVjbGFyYXRpdmU6OnNpZ25hbEVtaXR0ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBy ZWNlaXZlcnMoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpyZWNlaXZlcnMpOworKyAg ICBRU2NvcGVkVmFsdWVSb2xsYmFjayBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJh dGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjppc1NpZ25hbENvbm5lY3RlZCk7CisrCisr ICAgIFF0RGVjbGFyYXRpdmU6Ok9iamVjdCBwOworKyAgICBRT2JqZWN0UHJpdmF0ZSAqcHJpdiA9 IFFPYmplY3RQcml2YXRlOjpnZXQoJnApOworKyAgICBwcml2LT5kZWNsYXJhdGl2ZURhdGEgPSBR dERlY2xhcmF0aXZlOjp0aGVEYXRhID0gbmV3IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTsKKysK KysgICAgY29ubmVjdCgmcCwgJlF0RGVjbGFyYXRpdmU6Ok9iamVjdDo6dGhlU2lnbmFsLCAmcCwg W117CisrICAgIH0pOworKworKyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgKmNoaWxkID0gbmV3 IFF0RGVjbGFyYXRpdmU6Ok9iamVjdDsKKysgICAgY2hpbGQtPnNldFBhcmVudCgmcCk7CisrI2Vu ZGlmCisrfQorKworIFFURVNUX01BSU4odHN0X1FPYmplY3QpCisgI2luY2x1ZGUgInRzdF9xb2Jq ZWN0Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBl cy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwCitp bmRleCAwZWE0MjJlY2JjLi4xYTMyNTY1MzRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAK KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2Uv dHN0X3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtNzAsMTUgKzcwLDE1IEBAIHN0YXRpYyBpbmxpbmUg UVN0cmluZyB0ZXN0U3VpdGVXYXJuaW5nKCkKKyAKKyAgICAgUVN0cmluZyByZXN1bHQ7CisgICAg IFFUZXh0U3RyZWFtIHN0cigmcmVzdWx0KTsKKy0gICAgc3RyIDw8ICJcbkNhbm5vdCBmaW5kIHRo ZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbnN0YXJ0aW5nIGZyb206ICIKKysgICAgc3Ry IDw8ICJcbkNhbm5vdCBmaW5kIHRoZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbmluIHRo ZSBwYXJlbnQgb2Y6ICIKKyAgICAgICAgIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhRRGly OjpjdXJyZW50UGF0aCgpKSA8PCAiXG4iCisgICAgICAgICAgICAiY2QgIiA8PCBRRGlyOjp0b05h dGl2ZVNlcGFyYXRvcnMoUVN0cmluZ0xpdGVyYWwoInRlc3RzL2F1dG8vY29yZWxpYi9taW1ldHlw ZXMvcW1pbWVkYXRhYmFzZSIpKSA8PCAiXG4iCistICAgICAgICAgICAid2dldCBodHRwOi8vY2dp dC5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8vc25hcHNob3QvUmVsZWFzZS0x LTEwLnppcFxuIgorLSAgICAgICAgICAgInVuemlwIFJlbGVhc2UtMS0xMC56aXBcbiI7CisrICAg ICAgICAgICAid2dldCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1t aW1lLWluZm8vLS9hcmNoaXZlLzIuMS9zaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiIKKysgICAg ICAgICAgICJ1bnppcCBzaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiI7CisgI2lmZGVmIFFfT1Nf V0lOCistICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBSZWxlYXNlLTEtMTAg cy1tLWlcbiI7CisrICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBzaGFyZWQt bWltZS1pbmZvLTIuMSBzLW0taVxuIjsKKyAjZWxzZQorLSAgICBzdHIgPDwgImxuIC1zIFJlbGVh c2UtMS0xMCBzLW0taVxuIjsKKysgICAgc3RyIDw8ICJsbiAtcyBzaGFyZWQtbWltZS1pbmZvLTIu MSBzLW0taVxuIjsKKyAjZW5kaWYKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMTU0LDcg KzE1NCw3IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFW RVJJRlkyKGNvcHlSZXNvdXJjZUZpbGUoeG1sRmlsZU5hbWUsIHhtbFRhcmdldEZpbGVOYW1lLCAm ZXJyb3JNZXNzYWdlKSwgcVByaW50YWJsZShlcnJvck1lc3NhZ2UpKTsKKyAjZW5kaWYKKyAKKy0g ICAgbV90ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0cyIpOworKyAgICBtX3Rl c3RTdWl0ZSA9IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzL21pbWUtZGV0ZWN0aW9uIik7Cisg ICAgIGlmIChtX3Rlc3RTdWl0ZS5pc0VtcHR5KCkpCisgICAgICAgICBxV2FybmluZygiJXMiLCBx UHJpbnRhYmxlKHRlc3RTdWl0ZVdhcm5pbmcoKSkpOworIAorQEAgLTYxMSw3ICs2MTEsNyBAQCB2 b2lkIHRzdF9RTWltZURhdGFiYXNlOjphbGxNaW1lVHlwZXMoKQorICAgICBRVkVSSUZZKCFsc3Qu aXNFbXB0eSgpKTsKKyAKKyAgICAgLy8gSGFyZGNvZGluZyB0aGlzIGlzIHRoZSBvbmx5IHdheSB0 byBjaGVjayBib3RoIHByb3ZpZGVycyBmaW5kIHRoZSBzYW1lIG51bWJlciBvZiBtaW1ldHlwZXMu CistICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA3NzkpOworKyAgICBRQ09NUEFSRShsc3QuY291 bnQoKSwgODExKTsKKyAKKyAgICAgZm9yZWFjaCAoY29uc3QgUU1pbWVUeXBlICZtaW1lLCBsc3Qp IHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG1pbWUubmFtZSgpOworQEAgLTYzMSwx MCArNjMxLDkgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6c3VmZml4ZXNfZGF0YSgpCisgCisg ICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggYSBzaW5nbGUgcGF0dGVybiIpIDw8ICJh cHBsaWNhdGlvbi9wZGYiIDw8ICIqLnBkZiIgPDwgInBkZiI7CisgICAgIFFUZXN0OjpuZXdSb3co Im1pbWV0eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24veC1rcHJl c2VudGVyIiA8PCAiKi5rcHI7Ki5rcHQiIDw8ICJrcHIiOworLSAgICBRVGVzdDo6bmV3Um93KCJq cGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGVnIjsK Ky0gICAgLy9pZiAoS01pbWVUeXBlOjpzaGFyZWRNaW1lSW5mb1ZlcnNpb24oKSA+IEtERV9NQUtF X1ZFUlNJT04oMCwgNjAsIDApKSB7CistICAgICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3 aXRoIG1hbnkgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAi Ki53cDsqLndwNDsqLndwNTsqLndwNjsqLndwZDsqLndwcCIgPDwgIndwIjsKKy0gICAgLy99Cisr ICAgIC8vIFRoZSBwcmVmZXJyZWQgc3VmZml4IGZvciBpbWFnZS9qcGVnIGlzICouanBnLCBhcyBw ZXIgaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjczNworKyAgICBRVGVz dDo6bmV3Um93KCJqcGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWci IDw8ICJqcGciOworKyAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkgcGF0dGVy bnMiKSA8PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndwNDsqLndw NTsqLndwNjsqLndwZDsqLndwcCIgPDwgIndwIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2FzaXMg dGV4dCBtaW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRl eHQiIDw8ICIqLm9kdCIgPDwgIm9kdCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm9hc2lzIHByZXNl bnRhdGlvbiBtaW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50 LnByZXNlbnRhdGlvbiIgPDwgIioub2RwIiA8PCAib2RwIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygi bWltZXR5cGUgd2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJ0ZXh0L3BsYWluIiA8PCAiKi5h c2M7Ki50eHQ7Kix2IiA8PCAidHh0IjsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9j b3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitpbmRleCAzZTU4 ZGQwM2NjLi5jOGY4MmVmNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxp Yi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitAQCAtMTc2LDYg KzE3Niw4IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50Q29udmVy c2lvbnNfZGF0YSgpOworICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpOworIAor KyAgICB2b2lkIG5vTGVha09uTmFtZUNsYXNoKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0cmlu ZyB0ZXN0RGF0YURpcjsKKyB9OworQEAgLTM2ODUsNSArMzY4NywyMyBAQCB2b2lkIHRzdF9RdEpz b246OmZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpCisgICAgIH0KKyB9CisgCisrdm9pZCB0c3Rf UXRKc29uOjpub0xlYWtPbk5hbWVDbGFzaCgpCisreworKyAgICBRSnNvbkRvY3VtZW50IGRvYyA9 IFFKc29uRG9jdW1lbnQ6OmZyb21Kc29uKCJ7XCJcIjp7XCJcIjowfSxcIlwiOjB9Iik7CisrICAg IFFWRVJJRlkoIWRvYy5pc051bGwoKSk7CisrICAgIGNvbnN0IFFKc29uT2JqZWN0IG9iaiA9IGRv Yy5vYmplY3QoKTsKKysKKysgICAgLy8gUmVtb3ZlZCB0aGUgZHVwbGljYXRlIGtleS4KKysgICAg UUNPTVBBUkUob2JqLmxlbmd0aCgpLCAxKTsKKysKKysgICAgLy8gUmV0YWluZWQgdGhlIGxhc3Qg b2YgdGhlIGR1cGxpY2F0ZXMuCisrICAgIGNvbnN0IFFKc29uVmFsdWUgdmFsID0gb2JqLmJlZ2lu KCkudmFsdWUoKTsKKysgICAgUVZFUklGWSh2YWwuaXNEb3VibGUoKSk7CisrICAgIFFDT01QQVJF KHZhbC50b0RvdWJsZSgpLCAwLjApOworKworKyAgICAvLyBJdCBzaG91bGQgbm90IGxlYWsuCisr ICAgIC8vIEluIHBhcnRpY3VsYXIgaXQgc2hvdWxkIG5vdCBmb3JnZXQgdG8gZGVyZWYgdGhlIGNv bnRhaW5lciBmb3IgdGhlIGlubmVyIG9iamVjdC4KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUXRK c29uKQorICNpbmNsdWRlICJ0c3RfcXRqc29uLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwIGIvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAoraW5k ZXggYTU5YjU4ZDU3Zi4uMjQxYzNlODRhYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKK0BAIC02 Myw2ICs2Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaXNWYWxpZElkX2RhdGEoKTsK KyAgICAgdm9pZCBpc1ZhbGlkSWQoKTsKKyAgICAgdm9pZCBtYWxmb3JtZWQoKTsKKysgICAgdm9p ZCBzZXJpYWxpemUoKTsKKyAgICAgLy8gQmFja2VuZCB0ZXN0cworICAgICB2b2lkIHV0Y1Rlc3Qo KTsKKyAgICAgdm9pZCBpY3VUZXN0KCk7CitAQCAtOTQ3LDYgKzk0OCwzMyBAQCB2b2lkIHRzdF9R VGltZVpvbmU6Om1hbGZvcm1lZCgpCisgICAgICAgICBiYXJmLm9mZnNldEZyb21VdGMobm93KTsK KyB9CisgCisrdm9pZCB0c3RfUVRpbWVab25lOjpzZXJpYWxpemUoKQorK3sKKysgICAgaW50IHBh cnRzID0gMDsKKysjaWZuZGVmIFFUX05PX0RFQlVHX1NUUkVBTQorKyAgICBxRGVidWcoKSA8PCBR VGltZVpvbmUoKTsgLy8gdG8gdmVyaWZ5IG5vIGNyYXNoCisrICAgIHBhcnRzKys7CisrI2VuZGlm CisrI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCisrICAgIFFCeXRlQXJyYXkgYmxvYjsKKysgICAg eworKyAgICAgICAgUURhdGFTdHJlYW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OldyaXRlT25s eSk7CisrICAgICAgICBzdHJlYW0gPDwgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpIDw8IFFUaW1l Wm9uZSg0MjApIDw8IFFUaW1lWm9uZSgpIDw8IHFpbnQ2NCgtMSk7CisrICAgIH0KKysgICAgUURh dGFTdHJlYW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OlJlYWRPbmx5KTsKKysgICAgUVRpbWVa b25lIGludmFsaWQsIG9mZnNldCwgb3NsbzsKKysgICAgcWludDY0IG1pbnVzb25lOworKyAgICBz dHJlYW0gPj4gb3NsbyA+PiBvZmZzZXQgPj4gaW52YWxpZCA+PiBtaW51c29uZTsKKysgICAgUUNP TVBBUkUob3NsbywgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpKTsKKysgICAgUUNPTVBBUkUob2Zm c2V0LCBRVGltZVpvbmUoNDIwKSk7CisrICAgIFFWRVJJRlkoIWludmFsaWQuaXNWYWxpZCgpKTsK KysgICAgUUNPTVBBUkUobWludXNvbmUsIHFpbnQ2NCgtMSkpOworKyAgICBwYXJ0cysrOworKyNl bmRpZgorKyAgICBpZiAoIXBhcnRzKQorKyAgICAgICAgUVNLSVAoIk5vIHNlcmlhbGl6YXRpb24g ZW5hYmxlZCIpOworK30KKysKKyB2b2lkIHRzdF9RVGltZVpvbmU6OnV0Y1Rlc3QoKQorIHsKKyAj aWZkZWYgUVRfQlVJTERfSU5URVJOQUwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9k YnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAgYi9xdGJhc2UvdGVzdHMv YXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKK2luZGV4IDA1 NDgwYzZkZDIuLjcwZjRjNzU3NTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9kYnVz L3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorQEAgLTMy NCw2ICszMjQsMTMgQEAgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6Om5vdFZhbGlkKCkKKyAKKyAg ICAgUVZFUklGWSghaW50ZXJmYWNlLmlzVmFsaWQoKSk7CisgICAgIFFWRVJJRlkoIVFNZXRhT2Jq ZWN0OjppbnZva2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RDb25u ZWN0aW9uKSk7CisrCisrICAgIC8vIFdpdGggYSBjb25uZWN0aW9uLCBidXQgZW1wdHkvbnVsbCBz ZXJ2aWNlIGFuZCBwYXRoIHNwZWNpZmllZAorKyAgICBRREJ1c0Nvbm5lY3Rpb24gY29uID0gUURC dXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCk7CisrICAgIFFWRVJJRlkoY29uLmlzQ29ubmVjdGVk KCkpOworKyAgICBRREJ1c0ludGVyZmFjZSBpZmFjZSh7fSwge30sIHt9LCBjb24pOworKyAgICBR VkVSSUZZKCFpZmFjZS5pc1ZhbGlkKCkpOworKyAgICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6aW52 b2tlTWV0aG9kKCZpbnRlcmZhY2UsICJMaXN0TmFtZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlvbikp OworIH0KKyAKKyB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWREZXJpdmVkKCkKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3Rf cWtleXNlcXVlbmNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNlcXVl bmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCitpbmRleCA4NzQ0NjhjOTU0Li4wNGNlYjRhYjY1IDEw MDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UvdHN0 X3FrZXlzZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtl eXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCitAQCAtNTA3LDYgKzUwNywxMCBAQCB2b2lk IHRzdF9RS2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGVfZGF0YSgpCisgICAgIFFUZXN0 OjpuZXdSb3coIkN0cmwrQWx0K051bStEZWwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRyb2xN b2RpZmllciB8IFF0OjpBbHRNb2RpZmllciB8IFF0OjpLZXlwYWRNb2RpZmllciB8IFF0OjpLZXlf RGVsZXRlKSA8PCAiQ3RybCtBbHQrTnVtK0RlbCI7CisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwr SW5zIikgPDwgUUtleVNlcXVlbmNlKFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6S2V5X0luc2Vy dCkgPDwgIkN0cmwrSW5zIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtOdW0rSW5zKDEpIikg PDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfSW5zZXJ0IHwgUXQ6OktleXBhZE1vZGlmaWVyIHwgUXQ6 OkNvbnRyb2xNb2RpZmllcikgPDwgIkN0cmwrTnVtK0lucyI7CisrICAgIFFUZXN0OjpuZXdSb3co IkN0cmwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9Db250cm9sKSA8PCAiQ29udHJvbCI7Cisr ICAgIFFUZXN0OjpuZXdSb3coIkFsdCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0FsdCkgPDwg IkFsdCI7CisrICAgIFFUZXN0OjpuZXdSb3coIlNoaWZ0IikgPDwgUUtleVNlcXVlbmNlKFF0OjpL ZXlfU2hpZnQpIDw8ICJTaGlmdCI7CisrICAgIFFUZXN0OjpuZXdSb3coIk1ldGEiKSA8PCBRS2V5 U2VxdWVuY2UoUXQ6OktleV9NZXRhKSA8PCAiTWV0YSI7CisgfQorIAorIHZvaWQgdHN0X1FLZXlT ZXF1ZW5jZTo6dG9TdHJpbmdGcm9tS2V5Y29kZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3Rz L2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNlLmNw cAoraW5kZXggMTVlMGVjYWRhYS4uYjRlY2E3NDI4MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFi YXNlLmNwcAorQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCByZWdp c3Rlck9wZW5UeXBlUHJlZmVycmVkTmFtZXNTeXN0ZW0oKTsKKyAgICAgdm9pZCByZWdpc3Rlck9w ZW5UeXBlUHJlZmVycmVkTmFtZXNBcHBsaWNhdGlvbigpOworIAorKyAgICB2b2lkIHN0cmV0Y2hS ZXNwZWN0ZWQoKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIG1fbGVkRm9udDsKKyAgICAg UVN0cmluZyBtX3Rlc3RGb250OworQEAgLTM1NSw2ICszNTcsMjggQEAgc3RhdGljIFFTdHJpbmcg dGVzdFN0cmluZygpCisgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiZm9vIGJhciIpOworIH0K KyAKKyt2b2lkIHRzdF9RRm9udERhdGFiYXNlOjpzdHJldGNoUmVzcGVjdGVkKCkKKyt7CisrICAg IGludCBpdGFsaWNJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udChtX3Rlc3RG b250SXRhbGljKTsKKysgICAgUVZFUklGWShpdGFsaWNJZCAhPSAtMSk7CisrCisrICAgIFFWRVJJ RlkoIVFGb250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5pc0Vt cHR5KCkpOworKworKyAgICBRU3RyaW5nIGl0YWxpY0ZvbnROYW1lID0gUUZvbnREYXRhYmFzZTo6 YXBwbGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmZpcnN0KCk7CisrCisrICAgIFFGb250 IGl0YWxpY0ZvbnQgPSBRRm9udERhdGFiYXNlKCkuZm9udChpdGFsaWNGb250TmFtZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmc6OmZyb21MYXRp bjEoIkl0YWxpYyIpLCAxNCk7CisrICAgIFFWRVJJRlkoaXRhbGljRm9udC5pdGFsaWMoKSk7Cisr CisrICAgIFFGb250IGl0YWxpY1N0cmV0Y2hlZEZvbnQgPSBpdGFsaWNGb250OworKyAgICBpdGFs aWNTdHJldGNoZWRGb250LnNldFN0cmV0Y2goIDQwMCApOworKworKyAgICBRVkVSSUZZKFFGb250 TWV0cmljc0YoaXRhbGljRm9udCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwoImZv b2JhciIpKSA8CisrICAgICAgICAgICAgUUZvbnRNZXRyaWNzRihpdGFsaWNTdHJldGNoZWRGb250 KS5ob3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpKTsKKysKKysgICAg UUZvbnREYXRhYmFzZTo6cmVtb3ZlQXBwbGljYXRpb25Gb250KGl0YWxpY0lkKTsKKyt9CisrCisg dm9pZCB0c3RfUUZvbnREYXRhYmFzZTo6Y29uZGVuc2VkRm9udFdpZHRoTm9Gb250TWVyZ2luZygp CisgeworICAgICBpbnQgcmVndWxhckZvbnRJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0 aW9uRm9udChtX3Rlc3RGb250KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3 b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVwbHku Y3BwCitpbmRleCAzZDRhMDk0YzQzLi5iNDIzZTExYTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5j cHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkv dHN0X3FuZXR3b3JrcmVwbHkuY3BwCitAQCAtMjgxLDYgKzI4MSw3IEBAIHByaXZhdGUgUV9TTE9U UzoKKyAgICAgdm9pZCBpb0dldEZyb21GaWxlU3BlY2lhbCgpOworICAgICB2b2lkIGlvR2V0RnJv bUZpbGVfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGUoKTsKKysgICAgdm9pZCBpb0dl dEZyb21GaWxlVXJsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwX2RhdGEoKTsKKyAgICAgdm9p ZCBpb0dldEZyb21GdHAoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHBXaXRoUmV1c2UoKTsKK0BA IC0zMzAwLDYgKzMzMDEsMTggQEAgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRmls ZSgpCisgICAgIFFDT01QQVJFKHJlYWRlci5kYXRhLCBkYXRhKTsKKyB9CisgCisrdm9pZCB0c3Rf UU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRmlsZVVybCgpCisreworKyAgICAvLyBUaGlzIGltbWVk aWF0ZWx5IGZhaWxzIG9uIG5vbi13aW5kb3dzIHBsYXRmb3JtczoKKysgICAgUU5ldHdvcmtSZXF1 ZXN0IHJlcXVlc3QoUVVybCgiZmlsZTovL3VuYy1zZXJ2ZXIvc29tZS9wYXRoIikpOworKyAgICBR TmV0d29ya1JlcGx5UHRyIHJlcGx5KG1hbmFnZXIuZ2V0KHJlcXVlc3QpKTsKKysgICAgUVNpZ25h bFNweSBmaW5pc2hlZFNweShyZXBseS5nZXQoKSwgJlFOZXR3b3JrUmVwbHk6OmZpbmlzaGVkKTsK KysgICAgLy8gUVRCVUctMTA1NjE4OiBUaGlzIHdvdWxkLCBvbiBub24tV2luZG93cyBwbGF0Zm9y bXMsIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHRoZSBzaWduYWwKKysgICAgLy8gd2FzIGVtaXR0ZWQg YmVmb3JlIHRoZSBjb25zdHJ1Y3RvciBmaW5pc2hlZCwgbGVhdmluZyBubyBjaGFuY2UgYXQgYWxs IHRvIGNvbm5lY3QgdG8gdGhlCisrICAgIC8vIHNpZ25hbAorKyAgICBRVkVSSUZZKGZpbmlzaGVk U3B5LndhaXQoKSk7CisrfQorKworIHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZ0 cF9kYXRhKCkKKyB7CisgICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oImZpbGVOYW1lIik7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9j ZXJ0cy9mbHVrZS5jZXJ0IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tl dC9jZXJ0cy9mbHVrZS5jZXJ0CitpbmRleCAwNjlmYTZiMzQxLi40Y2M0ZDlhNWVhIDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVr ZS5jZXJ0CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2Nl cnRzL2ZsdWtlLmNlcnQKK0BAIC0xLDc1ICsxLDM0IEBACistQ2VydGlmaWNhdGU6CistICAgIERh dGE6CistICAgICAgICBWZXJzaW9uOiAzICgweDIpCistICAgICAgICBTZXJpYWwgTnVtYmVyOiAw ICgweDApCistICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRp b24KKy0gICAgICAgIElzc3VlcjogQz1OTywgU1Q9T3NsbywgTD1OeWRhbGVuLCBPPU5va2lhIENv cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQsIENO PWZsdWtlLnRyb2xsLm5vL2VtYWlsQWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAg ICAgICBWYWxpZGl0eQorLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IERlYyAgNCAwMToxMDozMiAy MDA3IEdNVAorLSAgICAgICAgICAgIE5vdCBBZnRlciA6IEFwciAyMSAwMToxMDozMiAyMDM1IEdN VAorLSAgICAgICAgU3ViamVjdDogQz1OTywgU1Q9T3NsbywgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBh bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyksIE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50cm9s bC5ubworLSAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CistICAgICAgICAgICAgUHVi bGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KKy0gICAgICAgICAgICBSU0EgUHVibGlj IEtleTogKDEwMjQgYml0KQorLSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6Cist ICAgICAgICAgICAgICAgICAgICAwMDphNzpjODphMDo0YTpjNDoxOTowNToxYjo2NjpiYTozMjpl MjpkMjpmMToKKy0gICAgICAgICAgICAgICAgICAgIDFjOjZmOjE3OjgyOmU0OjM5OjJlOjAxOjUx OjkwOmRiOjA0OjM0OjMyOjExOgorLSAgICAgICAgICAgICAgICAgICAgMjE6YzI6MGQ6NmY6NTk6 ZDg6NTM6OTA6NTQ6M2Y6ODM6OGY6YTk6ZDM6YjM6CistICAgICAgICAgICAgICAgICAgICBkNTpl ZToxYTo5Yjo4MDphZTpjMzoyNTpjOTo1ZTphNTphZjo0Yjo2MDowNToKKy0gICAgICAgICAgICAg ICAgICAgIGFhOmEwOmQxOjkxOjAxOjFmOmNhOjA0OjgzOmUzOjU4OjFjOjk5OjMyOjQ1OgorLSAg ICAgICAgICAgICAgICAgICAgODQ6NzA6NzI6NTg6MDM6OTg6NGE6NjM6OGI6NDE6ZjU6MDg6NDk6 ZDI6OTE6CistICAgICAgICAgICAgICAgICAgICAwMjo2MDo2YjplNDo2NDpmZTpkZDphMDphYTo3 NDowODplOTozNDo0Yzo5MToKKy0gICAgICAgICAgICAgICAgICAgIDVmOjEyOjNkOjM3OjRkOjU0 OjJjOmFkOjdmOjViOjk4OjYwOjM2OjAyOjhjOgorLSAgICAgICAgICAgICAgICAgICAgM2I6ZjY6 NDU6ZjM6Mjc6NmE6OWI6OTQ6OWQKKy0gICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgw eDEwMDAxKQorLSAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CistICAgICAgICAgICAgWDUwOXYz IEJhc2ljIENvbnN0cmFpbnRzOiAKKy0gICAgICAgICAgICAgICAgQ0E6RkFMU0UKKy0gICAgICAg ICAgICBOZXRzY2FwZSBDb21tZW50OiAKKy0gICAgICAgICAgICAgICAgT3BlblNTTCBHZW5lcmF0 ZWQgQ2VydGlmaWNhdGUKKy0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmll cjogCistICAgICAgICAgICAgICAgIDIxOjg1OjA0OjNEOjIzOjAxOjY2OkU1OkY3OjlGOjFBOjg0 OjI0OjhBOkFGOjBBOjc5OkY0OkU1OkFDCistICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBL ZXkgSWRlbnRpZmllcjogCistICAgICAgICAgICAgICAgIERpck5hbWU6L0M9Tk8vU1Q9T3Nsby9M PU55ZGFsZW4vTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykv T1U9RGV2ZWxvcG1lbnQvQ049Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2VuQHRy b2xsdGVjaC5jb20KKy0gICAgICAgICAgICAgICAgc2VyaWFsOjhFOkE4OkI0OkU4OjkxOkI3OjU0 OjJFCistCistICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlvbgor LSAgICAgICAgNmQ6NTc6NWY6ZDE6MDU6NDM6ZjA6NjI6MDU6ZWM6MmE6NzE6YTU6ZGM6MTk6MDg6 ZjI6YzQ6CistICAgICAgICBhNjpiZDpiYjoyNTpkOTpjYTo4OTowMTowZTplNDpjZjoxZjpjMTo4 YzpjODoyNDoxODozNToKKy0gICAgICAgIDUzOjU5OjdiOmMwOjQzOmI0OjMyOmU2Ojk4OmIyOmE2 OmVmOjE1OjA1OjBiOjQ4OjVmOmUxOgorLSAgICAgICAgYTA6MGM6OTc6YTk6YTE6Nzc6ZDg6MzU6 MTg6MzA6YmM6YTk6OGY6ZDM6Yjc6NTQ6Yzc6ZjE6CistICAgICAgICBhOTo5ZTo1ZDplNjoxOTpi ZjpmNjozYzo1YjoyYjpkODplNDozZTo2MjoxODo4ODo4YjpkMzoKKy0gICAgICAgIDI0OmUxOjQw OjliOjBjOmU2OjI5OjE2OjYyOmFiOmVhOjA1OjI0OjcwOjM2OmFhOjU1OjkzOgorLSAgICAgICAg ZWY6MDI6ODE6MWI6MjM6MTA6YTI6MDQ6ZWI6NTY6OTU6NzU6ZmM6Zjg6OTQ6YjE6NWQ6NDI6Cist ICAgICAgICBjNTozZjozNjo0NDo4NTo1ZDozYToyZTo5MDo0Njo4YTphMjpiOTo2Zjo4NzphZTow YzoxNToKKy0gICAgICAgIDQwOjE5OjMxOjkwOmZjOjNiOjI1OmJiOmFlOmYxOjY2OjEzOjBkOjg1 OjkwOmQ5OjQ5OjM0OgorLSAgICAgICAgOGY6ZjI6NWQ6Zjk6N2E6ZGI6NGQ6NWQ6Mjc6ZjY6NzY6 OWQ6MzU6OGM6MDY6YTY6NGM6YTM6CistICAgICAgICBiMTpiMjpiNjo2ZjoxZDpkNzphMzowMDpm ZDo3MjplYjo5ZTplYTo0NDphMTphZjoyMTozNDoKKy0gICAgICAgIDdkOmM3OjQyOmUyOjQ5Ojkx OjE5OjhiOmMwOmFkOmJhOjgyOjgwOmE4OjcxOjcwOmY0OjM1OgorLSAgICAgICAgMzE6OTE6NjM6 ODQ6MjA6OTU6ZTk6NjA6YWY6NjQ6OGI6Y2M6ZmY6M2Q6OGE6NzY6NzQ6M2Q6CistICAgICAgICBj ODo1NTo2ZDplNDo4ZTpjMzoyYjoxYzplODo0MjoxODphZTo5ZjplNjo2Yjo5YzozNDowNjoKKy0g ICAgICAgIGVjOjZhOmYyOmMzCisgLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCistTUlJRUV6 Q0NBdnVnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JuREVMTUFrR0ExVUVCaE1DVGs4 eAorLURUQUxCZ05WQkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJnTlZC QW9URFZSeWIyeHMKKy1kR1ZqYUNCQlUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUwTVJj d0ZRWURWUVFERXc1bWJIVnJaUzUwCistY205c2JDNXViekVsTUNNR0NTcUdTSWIzRFFFSkFSWVdZ V2hoYm5OelpXNUFkSEp2Ykd4MFpXTm9MbU52YlRBZQorLUZ3MHdOekV5TURRd01URXdNekphRncw ek5UQTBNakV3TVRFd016SmFNR014Q3pBSkJnTlZCQVlUQWs1UE1RMHcKKy1Dd1lEVlFRSUV3UlBj Mnh2TVJZd0ZBWURWUVFLRXcxVWNtOXNiSFJsWTJnZ1FWTkJNUlF3RWdZRFZRUUxFd3RFCistWlha bGJHOXdiV1Z1ZERFWE1CVUdBMVVFQXhNT1pteDFhMlV1ZEhKdmJHd3VibTh3Z1o4d0RRWUpLb1pJ aHZjTgorLUFRRUJCUUFEZ1kwQU1JR0pBb0dCQUtmSW9FckVHUVViWnJveTR0THhIRzhYZ3VRNUxn RlJrTnNFTkRJUkljSU4KKy1iMW5ZVTVCVVA0T1BxZE96MWU0YW00Q3V3eVhKWHFXdlMyQUZxcURS a1FFZnlnU0Q0MWdjbVRKRmhIQnlXQU9ZCistU21PTFFmVUlTZEtSQW1CcjVHVCszYUNxZEFqcE5F eVJYeEk5TjAxVUxLMS9XNWhnTmdLTU8vWkY4eWRxbTVTZAorLUFnTUJBQUdqZ2dFYU1JSUJGakFK QmdOVkhSTUVBakFBTUN3R0NXQ0dTQUdHK0VJQkRRUWZGaDFQY0dWdVUxTk0KKy1JRWRsYm1WeVlY UmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVUlZVUVQU01CWnVYM254cUVKSXF2Cist Q25uMDVhd3dnYnNHQTFVZEl3U0JzekNCc0tHQm9xU0JuekNCbkRFTE1Ba0dBMVVFQmhNQ1RrOHhE VEFMQmdOVgorLUJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIwNTVaR0ZzWlc0eEZqQVVCZ05WQkFv VERWUnliMnhzZEdWamFDQkIKKy1VMEV4RkRBU0JnTlZCQXNUQzBSbGRtVnNiM0J0Wlc1ME1SY3dG UVlEVlFRREV3NW1iSFZyWlM1MGNtOXNiQzV1CistYnpFbE1DTUdDU3FHU0liM0RRRUpBUllXWVdo aGJuTnpaVzVBZEhKdmJHeDBaV05vTG1OdmJZSUpBSTZvdE9pUgorLXQxUXVNQTBHQ1NxR1NJYjNE UUVCQlFVQUE0SUJBUUJ0VjEvUkJVUHdZZ1hzS25HbDNCa0k4c1NtdmJzbDJjcUoKKy1BUTdrengv QmpNZ2tHRFZUV1h2QVE3UXk1cGl5cHU4VkJRdElYK0dnREplcG9YZllOUmd3dkttUDA3ZFV4L0dw CistbmwzbUdiLzJQRnNyMk9RK1loaUlpOU1rNFVDYkRPWXBGbUtyNmdVa2NEYXFWWlB2QW9FYkl4 Q2lCT3RXbFhYOAorLStKU3hYVUxGUHpaRWhWMDZMcEJHaXFLNWI0ZXVEQlZBR1RHUS9Ec2x1Njd4 WmhNTmhaRFpTVFNQOGwzNWV0dE4KKy1YU2YyZHAwMWpBYW1US094c3JadkhkZWpBUDF5NjU3cVJL R3ZJVFI5eDBMaVNaRVppOEN0dW9LQXFIRnc5RFV4Cista1dPRUlKWHBZSzlraTh6L1BZcDJkRDNJ Vlcza2pzTXJIT2hDR0s2ZjVtdWNOQWJzYXZMRAorK01JSUY2ekNDQTlPZ0F3SUJBZ0lVZm85YW1K dEpHV3FXRTZmK1NrQU84NXprR3I0d0RRWUpLb1pJaHZjTkFRRUwKKytCUUF3Z1lNeEN6QUpCZ05W QkFZVEFrNVBNUTB3Q3dZRFZRUUlEQVJQYzJ4dk1RMHdDd1lEVlFRSERBUlBjMnh2CisrTVJjd0ZR WURWUVFLREE1VWFHVWdVWFFnUTI5dGNHRnVlVEVNTUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlEVlFR RAorK0RBbElNaUJVWlhOMFpYSXhHekFaQmdrcWhraUc5dzBCQ1FFV0RHMXBibWx0YVVCeGRDNXBi ekFnRncweU1ERXcKKytNall4TWpBeE16RmFHQTh5TVRJd01UQXdNakV5TURFek1Wb3dnWU14Q3pB SkJnTlZCQVlUQWs1UE1RMHdDd1lECisrVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMyeHZN UmN3RlFZRFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdQorK2VURU1NQW9HQTFVRUN3d0RVaVpFTVJJ d0VBWURWUVFEREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3MEIKKytDUUVXREcxcGJtbHRh VUJ4ZEM1cGJ6Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCCisrQU9p VXA1K0U0YmxvdUtIN3ErclZOUjhOb1lYMlhrQlcrcStycHkxenU1c3NSU3picXhBakR4OWRraHQ3 UWxuZgorK1ZsRFQwMEp2cE9XZGV1UG9uNTkxNWVkUVJzWTRVbmw2bUtIMjlyYTNPdFVhMS95Q0pY c0dWSlRLQ2o3azRCeGIKKys1bVp6Yi9mVGxabnRNTGRUSUJNZlVidzYyRktpcjFXaktJY0o5ZkNv RzhKYUdlS1ZPNFJoNXAwZXpkNFVVVUlkCisrcjFCWGw1TnFkcXkydlRNc0VEbmpPc0QzZWdrdjhJ MlNLTjRPNm4vQzN3V1lwTU9XWVprR29aaUt6N3JKcy9pLworK2V6N2JzVjdKbHdkelRsaHBKemtj T1NWRkJQNkpsRU94VE5OeFoxd3RLeTdQdFpHbXNTU0FUcTJlNitidzM4QWUKKytPcDBYbnp6cWNH anRERG9mQm1UN09GelpXalM5VlpTNitET09lMlFIV2xlMW5DSGNIeUg0a3U2SVJsc3I5eGtSCisr TkFJbE9mbnZISHhxSlVlbm9lYVo0b1FEakNCS1MxS1h5Z0pPL3RMN0JMVFFWbi94SzFFbVB2S05u anpXazR0UgorK1BuaWJVaGhzNTYzNXFwT1UvWVBxRkJoMUpqVnJ1WmJzV2NEQWhSY2V3MHV4T05Y T2E5RSs0bHR0UTl5U1lhMUEKKytMdldxSnVBWDdndTJCc0JNTHlxZm04MTFZbkE3Q0lGTXlPK0hs cW1rTEZmdjVML3hJUkFYUjdsMjZZR08wVndYCisrQ0dqTWZ6NE5WUE1Na2U0bkI3cWE5TmtwWFFC UUtNbXMzUXpkNUpXMEh5OVJ1ajVPOEdQY0ZabVYwdHdqZDF1SgorK1BEL2NBamtXTGFYamROc0ox NlFXYzJuZ2hRUlM2SFlxS1JYNmorQ1hPeHVwQWdNQkFBR2pVekJSTUIwR0ExVWQKKytEZ1FXQkJS U0NPVTU4ajlOSlprTWFtdDYyM3F5Q3JoTjNUQWZCZ05WSFNNRUdEQVdnQlJTQ09VNThqOU5KWmtN CisrYW10NjIzcXlDcmhOM1RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3 VUFBNElDQVFDcQorK3E0anhzV2VORHY1TnExNGhKdEY5SEIrWkw2NHpjWnRSakpQMVlnTnMwUXBw S0lDbWpQT0wybklNR21JL2pLcnMKKyswZUdBTC85WFhOVkhQeG0xT1BPbmN2aW1NTW1VNmVtWmZw TWRFdFRmS1A0MytQZzlIZ0tSakxvUXA0MDZ2R2VRCisrOGtpL21iQmhySXRWUGdFbTN0dTJBRkEw MlhUWWkrWXhDSTlrUlpMR2tNM0ZiZ3RPdVRMUGwwWjl5K2tpUGM5RgorK3VDU0MwM2FuQkVxdit2 RFNJOCt3T0R5bVEvSUozSnl6MWx4SVJEZnA0cUFla215MGpVMmM5MVZPSEhFbU9tcXEKKytrcXln R0ZSZHdiZTk5bTl5UDYzcjZxMGI1SzNYMlVuSjZibnMwaG1Ud1RoWXdwVlBYTFU4amRhVGRkYk11 a04yCisrL0VmOTZUc3c4bldPRU9QTXlTSE9USVBnd3laUnAyNmIwa0E5RW1oTHdPUDQwMVN4WFZR Q21TUm10d05hZ210ZworK2pKS21ab1lCTisvL0Q0NWliSzh6NlEwb09tOVArV2hmL3VVWGVoY1J4 Qnh5VjN4ejdrMHdLR1FiSGovZGR3Y3kKKytJVW9JTjRsckFsaWIrbEsxNzBrVEtOMzUyUERtcnBv MmdtSXpQRXNmdXJLQUlNU2VsRGw2SCtraWgxNkJ0Wjh5CisrTno2Zmg5U29xcmczT1NBd2FyZThw eFY3azUxY3JCTW9QTE43OEtvUlY4TUZDSzRLN0ZkZHE0clJJU3E2aGlYcQorK3IxbnNqb0VQdUtN OWh1cHJtWlZaZTl0NVljRGEySSt3YjNJaUUzdXdwWmJBZGFMRHlRNW42Ri9xcHNpSWtaWG4KKytn dGNGN29xcEc1b1lyd0NjWjUzeS9lelVnVWc3UGxTejJYd0FHdlF0Z2c9PQorIC0tLS0tRU5EIENF UlRJRklDQVRFLS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3Nz bC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleSBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CitpbmRleCA5ZDE2NjRkNjA5Li4zMzdjZTU0 MWE2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tl dC9jZXJ0cy9mbHVrZS5rZXkKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CitAQCAtMSwxNSArMSw1MiBAQAorLS0tLS0tQkVHSU4g UlNBIFBSSVZBVEUgS0VZLS0tLS0KKy1NSUlDWEFJQkFBS0JnUUNueUtCS3hCa0ZHMmE2TXVMUzhS eHZGNExrT1M0QlVaRGJCRFF5RVNIQ0RXOVoyRk9RCistVkQrRGo2blRzOVh1R3B1QXJzTWx5VjZs cjB0Z0JhcWcwWkVCSDhvRWcrTllISmt5UllSd2NsZ0RtRXBqaTBIMQorLUNFblNrUUpnYStSay90 MmdxblFJNlRSTWtWOFNQVGROVkN5dGYxdVlZRFlDakR2MlJmTW5hcHVVblFJREFRQUIKKy1Bb0dB TkZ6TGthblRlU0dORk0wdXR0QmlwRlQ5RjRhMDBkcUh6NkpuTzd6WEFUMjZJNXI4c1UxcHFRQmI2 dUx6CistLytRejVad2s4UlVBUWNzTVJnSmV0dVBRVWIwSlpqRjZEdXYyNGhOYXpxWEJDdTdBWnpV ZW5qYWZ3bUtDLzhyaQorLUtwWDNmVHdxemZ6aS8vRktHZ2JYUTgweXlrU1NsaURMM2tuL2RyQVR4 c0xDZ1FFQ1FRRFhoRUZXTEowdlZaMXMKKy0xRWtmKzNOSVRFK0RSMTZYK0xRNFc2dnlFSEFqVGJh Tld0Y1RLZEFXTEEybDZONFdBQVBZU2k2YXdtK3pNeHg0CistVm9tVlRzamRBa0VBeDB6K2U3bmF0 TGVGY3JycThwYlUrd2E2U0FQMVZmaFFXS2l0eEwxZTd1L1FPOTBOQ3B4RQorLW9RWUt6TWttbXBP T0ZqUXdFTUF5MWR2Rk1ibTRMSGxld1FKQUMva3NEQmFVY1FISHFqa3RDdHJVYjhyVmpBeVcKKy1B OGxzY2NrZUIyZkVZeUc1SjZkSlZhWTRDbE5PT3M1eU1EUzJBZmsxRjZIL3hLdnRRLzVDekluQS9R SkFURHViCistSytCUFU4ak85cStncHVJaTNWSVpkdXBzc1ZHbUNnT2JWQ0hMYWtHNHVPMDR5OUl5 UGhWOWxBOXRBTHRvSWY0YworLVZJdnY1ZldHWEJyWjQ4a1pBUUpCQUptVkNkelF4ZDlMWkk1dnhp alVDajVFSTRlK3g1RFJxVlV2eVA4S0NackMKKy1BaU55b0RQODVUK2hCWmFTWEszYVlHcFZ3ZWx5 ajNidm8xR3JUTndOV0x3PQorLS0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCisrLS0tLS1C RUdJTiBQUklWQVRFIEtFWS0tLS0tCisrTUlJSlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0ND U3d3Z2drb0FnRUFBb0lDQVFEb2xLZWZoT0c1YUxpaAorKys2dnExVFVmRGFHRjlsNUFWdnF2cTZj dGM3dWJMRVVzMjZzUUl3OGZYWkliZTBKWjMxWlEwOU5DYjZUbG5YcmoKKys2SitmZGVYblVFYkdP Rko1ZXBpaDl2YTJ0enJWR3RmOGdpVjdCbFNVeWdvKzVPQWNXK1ptYzIvMzA1V1o3VEMzCisrVXlB VEgxRzhPdGhTb3E5Vm95aUhDZlh3cUJ2Q1dobmlsVHVFWWVhZEhzM2VGRkZDSGE5UVY1ZVRhbmFz dHIwegorK0xCQTU0enJBOTNvSkwvQ05raWplRHVwL3d0OEZtS1REbG1HWkJxR1lpcys2eWJQNHYz cysyN0ZleVpjSGMwNVkKKythU2M1SERrbFJRVCtpWlJEc1V6VGNXZGNMU3N1ejdXUnByRWtnRTZ0 bnV2bThOL0FIanFkRjU4ODZuQm83UXc2CisrSHdaayt6aGMyVm8wdlZXVXV2Z3pqbnRrQjFwWHRa d2gzQjhoK0pMdWlFWmJLL2NaRVRRQ0pUbjU3eHg4YWlWSAorK3A2SG1tZUtFQTR3Z1NrdFNsOG9D VHY3Uyt3UzAwRlovOFN0UkpqN3lqWjQ4MXBPTFVUNTRtMUlZYk9ldCthcVQKKytsUDJENmhRWWRT WTFhN21XN0ZuQXdJVVhIc05Mc1RqVnptdlJQdUpiYlVQY2ttR3RRQzcxcWliZ0YrNEx0Z2JBCisr VEM4cW41dk5kV0p3T3dpQlRNanZoNWFwcEN4WDcrUy84U0VRRjBlNWR1bUJqdEZjRndob3pIOCtE VlR6REpIdQorK0p3ZTZtdlRaS1YwQVVDakpyTjBNM2VTVnRCOHZVYm8rVHZCajNCV1psZExjSTNk YmlUdy8zQUk1RmkybDQzVGIKKytDZGVrRm5OcDRJVUVVdWgyS2lrVitvL2dsenNicVFJREFRQUJB b0lDQUZ3MXE2dHI1STQ4dlk3REYrclhzdUxuCisrNVpVV0UxSVE2ZnpCNGxyNzJuSnYvOUVFR25N Z1l6dDlQcE1Vc0Q2dmRDcEJnUzJDMCs2UkhBckZ6SnROQStSTQorK2lITElHN0s3NzAydmV5ci94 QngvTXdpU2xNZU12L1hwa0Z4Vkk2RTZza01HRzJzM0FNWHhLdkpUeTVDcFJ4K0kKKytlUUZ5TEcr WWExWDJsZ0plcy9xKy9DcEFIa09qQ09wY0x5U1FDNU5aNzRxNzM0VjduU2RtbitaczN0WUVoK08v CisrZWl1d1RQL2o1YjM4VGU1dlZUcUR4VGNpSlBtbGptWExDd2EwTjEwMGxXbGJjcHZ3OHFicWlU STJKbTNYQ2JVRQorK0F6SGpXOXZtckYzY1JTMWZYeEtGR1NodzNTUnFsa2J4amZlV29pOHFEUFVC UzRtOExPcjhxRzlXbzVOZm9uMHoKKyt6TFA0YmNpM3pIRHZWY2FhWnJyc1VCcy95WmJnK0Rna2Ex RG1YN2VrbWVjY3IyeVRkS0RGZ1B1cFlVeXhWYlRsCisrYTlaTEp5c2pGRDdyZ0J2MVpjbEhvbkxw NlZibStab1RxdnRlbzRpa0F5Nkw5UnRCV0oyM1hFSzM0UGtQLytjNQorKzJ2V1phT3JualNlQkhi RmNlOGNkSlN4cVdwUCtlU0NJNUk5WGJEcllGSXNRL2dxS2d0ekRLeTJpaEoyWThTVEwKKyt5TzRo eUZQRmp4YytHZzQvUDJQcG1UNUNZMnR5NDRNMEJXcytKR1c5NkNKUHJycGxmMmxtUVVRSmo1TFpZ NjZYCisrWi80QzlMN1pZdEtaK2JzNVN2VTQ2eVd1Z0F2UVpYMjJYbTl4TFhXeVZYUmR4M2JqKzNN M2ZEbkY5ZGkvemRiaAorK0NnTHg3b1dQTnJYYzdGQ2Fqbm45QW9JQkFRRDVGTVl3UnB3OU5XVDlX RHhRd3grY1NJNEljYmQ4OEJ5VFc2M1MKKytMemVSd1pBMEo5L1Nmd08rYUJSdXB6YzlHa0dYQ2la Y0dNdzNBR3NDdGlnOHlGbHc4RTVLbnpON0tsZnRETW5NCisrOU5VeHh6bFI4VndLeUxuWmZHN3NE VGwwNTdabFV1am5xaG10L0Y4RjdkSXk3RlZPMWRFLzhubmdBK0ZZVENPRworK1VaZEdqd3lCRGxE TTBKSmRVV0dZM3hzbHV0Y3BDRE41bXpTVEtqeTlkck12SW1Bc2hSYXd4UkY2V0Jwbjd2cjIKKytu QzZ2Y2lxZngxTXp4MXZ5azBKbTBpbGF5ZERkTE1BRGp0L2lMNE5rcjBCRXM0aytVelFpS0R3cDhn dTdhYlExCisrZUJmeGQ5SWFyNGh0UWEySTFFd2w2UDAxRy9xK1pZd2dIaEo5UlZuNEF4UVhlZklM QW9JQkFRRHZDb3VPUmRRWAorK0M4d3N5cDdNd1hsRi8zTlFlTk41LytCMm1oYnhyQk9mN1BtTUNY TG5rUldjandKdHp5cFdGcUowc3FhaS8yKzAKKyticWJNY2pYNW1hVDhzdFQyc2hsM3pYZS9FanQy ZTNUQllwYzF0eXVzZXM4S2I1Qk1VOGh1NnRUZDNHMkNNWHBECisrZFQ2RFZlbUpaQ1R0d2o5YUJO SXhTaXp2bGdNb2xKbkNwemhQbmxmSFNJNkUrZzNtL0xUVG8zSHdiak1Tdy9VcQorK2lyZ2pPcEky d1NCQjZMWlBTZ2p2ZmNZUFJ5V1VrMTZMNEE1dVNYMGNBRG5vdkRGTGE1L2gwd0p2Ti9Pb0NTUWcK KytyTENYRzVFMThFeUw1V2M1OEJDWTFadnhtakczbFF0Z1B4WXUySndjMzZSL3kvSktseFc1c3VF UjVaTnBiYkQ0CisrdU95VHQyVnhNUTJiQW9JQkFRQzUrTXpSRnFkby9BamZMNVk1SnJiZlZUelhD VERhMDl4Q0dkMTZaVTYwUVRXTgorKys0ZWQvcitvMXNVS3FVY1JGQjJNekVNLzJEUUJqUXBaQi9D YkVXdldhMVhKV1h4eXBYYm93dmVaVStRcU9ubU4KKyt1UXZqOFdMeUEzbytQTkY5ZTlRdmF1d0Ny SHBuOFZweGJ0UFd1YVlvS25VRnJlRlpaUXhIaFBHeFJCSVMySk9aCisrZURyVDhaYVdua0NraDFB WnA1c21RNzFMT3ByU2xtS3JnNGpkMUdqQ1ZNeFFSNU41S1hidHl2ME9UQ1ovVUZxSworKzJhUkJz TVB5SmdrYUJDaGtaUExSY0t3Yysvd2xRUngxZkhRYjE0RE5UQXBNeG9YRk83ZU93cW1Pa3BBdDlp eWwKKytTQkl3b1MwVVVJNWFiODgrYkJtWE52S2N1RmROdVE0bm93VEpVbjlwQW9JQkFETU5rSUxC WFN2UzVEZUl5dU8yCisrU3AxdGtvWlVWKzVOZlBZM3NNREszS0lpYmFXLyt0K0VPQlpvNEw3dEtR Q2I4dlJ6bDIxbW1zZnhmZ1JhUERiagorKzNyM3R2OWcwYjRZTHh4Qnk1MnBGc2NqL3NvWFJhaTE3 U1M3VVp3QTJRSytYemdEWWJEY0xOQzZtSXNUUUc0R3gKKytkc1drMy96czNLdVVTUWFlaG13cldL K2ZJVUszOGMxcExLOHY3TG94ckxrcXhsSHdaMDRSdGhIdzhLVHRoSDdYCisrUG5sMUowTEY4Q1Nl T3lmV0xTdVBVZmtUMEdFenB0bk5IcEViYUhmUU02UjZlYUdoVkpQRjZBWm1lNHk2WVlnZworK20y aWhoU3QxbjBYVkVXcEhZV2p4RnkzbUsybXo3NXVuRkM0TE0rTkVZMnAyenVVUW9DdzdOam5ZM1FZ cmZDbngKKytyUk1DZ2dFQVhlWHNNU0xGamp5dW9MN2lLYkF4bzUySEQvUDBmQm95NThMeVJjd2ZO VnIwbHZZYW40cFlFeCtvCisrS2lqSWg5SzE2UHFYWlhLTUE5djAwM0IrdWxtRjhiSjdTZGRDWjVO R3ZuRmhVVERlNERkVEtncDJSdXdRM0JzYworKzNza1BJRGJoVkVUeU9MQ3R5czM0VVNIcnE4VS8w RGxHWTNlTFJmeHc5R25iS3hTQkdhL0tFdS9xUUxQTlVvNTAKKys3eEhaRGc3R0tlQzNrcU5KZXFL TTlya3AwVnpJR2tFbmFEOTEyN0xlTkRtRVJEZmZ0eEp6Rm9DL1RIdlVCTGZVCisrNlN1czJaWXdS RThWRnZLQzMwUTQ1dC9jNTRYM0l1aFl2QXVpQ3VUbXlmRTRydXl6eU93S3poVWtlZUxxMUFQWAor K2cwdmVGYnlmemxKMHE4cXpEL2lmZnFxSWEyWlNtUT09CisrLS0tLS1FTkQgUFJJVkFURSBLRVkt LS0tLQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5 bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vb3Ro ZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKK2luZGV4 IDdiYTM3MTVlMTMuLjc1MmFhMTIyZjYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9v dGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vz c2liaWxpdHlsaW51eC5jcHAKK0BAIC0xNzksNiArMTc5LDcgQEAgdm9pZCB0c3RfUUFjY2Vzc2li aWxpdHlMaW51eDo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWSghYWRkcmVzcy5pc0VtcHR5 KCkpOworIAorICAgICBtX3dpbmRvdyA9IG5ldyBBY2Nlc3NpYmxlVGVzdFdpbmRvdygpOworKyAg ICBtX3dpbmRvdy0+c2V0T2JqZWN0TmFtZSgibWFpbldpbmRvdyJfTDEpOworICAgICBtX3dpbmRv dy0+c2hvdygpOworIAorICAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQo bV93aW5kb3cpKTsKK0BAIC0yMzYsOCArMjM3LDExIEBAIGJvb2wgaGFzU3RhdGUoUURCdXNJbnRl cmZhY2UgKmludGVyZmFjZSwgQXRzcGlTdGF0ZVR5cGUgc3RhdGUpCisgdm9pZCB0c3RfUUFjY2Vz c2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyB7CisgICAgIFFMYWJlbCAqbCA9IG5ldyBRTGFi ZWwobV93aW5kb3cpOworKyAgICBsLT5zZXRPYmplY3ROYW1lKCJ0aGVPYmplY3ROYW1lIl9MMSk7 CisgICAgIGwtPnNldFRleHQoIkhlbGxvIEExMXkiKTsKKyAgICAgbV93aW5kb3ctPmFkZFdpZGdl dChsKTsKKysgICAgYXV0byBhMTF5RW1wdHkgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAg bV93aW5kb3ctPmFkZFdpZGdldChsKTsKKyAKKyAgICAgLy8gQXBwbGljYXRpb24KKyAgICAgUUNP TVBBUkUoZ2V0UGFyZW50KG1haW5XaW5kb3cpLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfUEFU SF9ST09UKSk7CitAQCAtMjQ5LDYgKzI1Myw4IEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGlu dXg6OnRlc3RMYWJlbCgpCisgICAgIFFDT01QQVJFKGdldENoaWxkcmVuKGxhYmVsSW50ZXJmYWNl KS5jb3VudCgpLCAwKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6 OkJsb2NrLCAiR2V0Um9sZU5hbWUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksIFFM YXRpbjFTdHJpbmcoImxhYmVsIikpOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+Y2Fs bChRREJ1czo6QmxvY2ssICJHZXRSb2xlIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1VJbnQoKSwg Mjl1KTsKKysgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAi R2V0QWNjZXNzaWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAgICAg ICAgICAgICBRTGF0aW4xU3RyaW5nKCJtYWluV2luZG93LnRoZU9iamVjdE5hbWUiKSk7CisgICAg IFFDT01QQVJFKGdldFBhcmVudChsYWJlbEludGVyZmFjZSksIG1haW5XaW5kb3ctPnBhdGgoKSk7 CisgICAgIFFWRVJJRlkoIWhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9FRElU QUJMRSkpOworICAgICBRVkVSSUZZKGhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFU RV9SRUFEX09OTFkpKTsKK0BAIC0yNTYsNyArMjYyLDEyIEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmls aXR5TGludXg6OnRlc3RMYWJlbCgpCisgICAgIGwtPnNldFRleHQoIk5ldyB0ZXh0Iik7CisgICAg IFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5wcm9wZXJ0eSgiTmFtZSIpLnRvU3RyaW5nKCksIGwt PnRleHQoKSk7CisgCisrICAgIGF1dG8gKmExMXlFbXB0eUludGVyZmFjZSA9IGdldEludGVyZmFj ZShjaGlsZHJlbi5hdCgxKSwgIm9yZy5hMTF5LmF0c3BpLkFjY2Vzc2libGUiKTsKKysgICAgUUNP TVBBUkUoYTExeUVtcHR5SW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vzc2li bGVJZCIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwKKysgICAgICAgICAgICAgUUxh dGluMVN0cmluZygibWFpbldpbmRvdy5RTGFiZWwiKSk7CisrCisgICAgIG1fd2luZG93LT5jbGVh ckNoaWxkcmVuKCk7CisrICAgIGRlbGV0ZSBhMTF5RW1wdHlJbnRlcmZhY2U7CisgICAgIGRlbGV0 ZSBsYWJlbEludGVyZmFjZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v c3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0 by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAoraW5kZXggNzZkZjYxYzg5 Mi4uNmQ2ZDY1Yjc5MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwv cXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9zcWwv a2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29t cGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAq KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC02OCw2 ICs2OCw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcXVlcnlfZXhlYygpOworICAgICB2 b2lkIGV4ZWNFcnJvclJlY292ZXJ5X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZv aWQgZXhlY0Vycm9yUmVjb3ZlcnkoKTsKKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjX2RhdGEoKSB7 IGdlbmVyaWNfZGF0YSgpOyB9CisrICAgIHZvaWQgcHJlbWF0dXJlRXhlYygpOworICAgICB2b2lk IGZpcnN0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZmlyc3QoKTsKKyAg ICAgdm9pZCBuZXh0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CitAQCAtMjc3MCw2ICsyNzcy LDM1IEBAIHZvaWQgdHN0X1FTcWxRdWVyeTo6ZXhlY0Vycm9yUmVjb3ZlcnkoKQorICAgICBRVkVS SUZZX1NRTCggcSwgZXhlYygpICk7CisgfQorIAorK3ZvaWQgdHN0X1FTcWxRdWVyeTo6cHJlbWF0 dXJlRXhlYygpCisreworKyAgICBRRkVUQ0goUVN0cmluZywgZGJOYW1lKTsKKysgICAgLy8gV2Ug b25seSB3YW50IHRoZSBlbmdpbmUgbmFtZSwgZm9yIGFkZERhdGFiYXNlKCk6CisrICAgIGludCBj dXQgPSBkYk5hbWUuaW5kZXhPZihRQ2hhcignQCcpKTsKKysgICAgaWYgKGN1dCA8IDApCisrICAg ICAgICBRU0tJUCgiRmFpbGVkIHRvIHBhcnNlIGRhdGFiYXNlIHR5cGUgb3V0IG9mIG5hbWUiKTsK KysgICAgZGJOYW1lLnRydW5jYXRlKGN1dCk7CisrICAgIGN1dCA9IGRiTmFtZS5pbmRleE9mKFFD aGFyKCdfJykpOworKyAgICBpZiAoY3V0ID49IDApCisrICAgICAgICBkYk5hbWUgPSBkYk5hbWUu bWlkKGN1dCArIDEpOworKworKyAgICBhdXRvIGRiID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFz ZShkYk5hbWUpOworKyAgICBRU3FsUXVlcnkgcShkYik7CisrCisrICAgIFFUZXN0OjppZ25vcmVN ZXNzYWdlKFF0V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRh YmFzZVByaXZhdGU6OnJlbW92ZURhdGFiYXNlOiBjb25uZWN0aW9uICIKKysgICAgICAgICAgICAg ICAgICAgICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJyBpcyBzdGlsbCBpbiB1c2Us IGFsbCAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyaWVzIHdpbGwgY2Vhc2UgdG8g d29yay4iKTsKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6YWRkRGF0YWJhc2U6IGR1 cGxpY2F0ZSBjb25uZWN0aW9uIG5hbWUgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3F0 X3NxbF9kZWZhdWx0X2Nvbm5lY3Rpb24nLCBvbGQgY29ubmVjdGlvbiByZW1vdmVkLiIpOworKyAg ICBhdXRvIG90aGVyRGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7CisrCisr ICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywgIlFTcWxRdWVyeTo6ZXhlYzog Y2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAgIC8vIFFUQlVHLTEw MDAzNzogc2hvdWxkbid0IGNyYXNoICEKKysgICAgUVZFUklGWSghcS5leGVjKCJzZWxlY3Qgc3R1 ZmYgZnJvbSBUaGVWb2lkIikpOworK30KKysKKyB2b2lkIHRzdF9RU3FsUXVlcnk6Omxhc3RJbnNl cnRJZCgpCisgeworICAgICBRRkVUQ0goIFFTdHJpbmcsIGRiTmFtZSApOworZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9x YWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9x YWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAK K2luZGV4IDRhYTNmOGQ2MGIuLmQyMDUwYTYxYWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1v ZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3Rp dGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC0xMTUs NiArMTE1LDEwIEBAIHZvaWQgdHN0X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6c3RhbmRhcmRJ dGVtTW9kZWxaZXJvQ29sdW1ucygpCisgICAgIC8vIFFUQlVHLTkyODg2CisgICAgIG1vZGVsLmlu c2VydFJvd3MoMCwgNSk7CisgICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMik7CisrCisrICAgIGNv bnN0IFFNb2RlbEluZGV4IHBhcmVudEluZGV4ID0gbW9kZWwuaW5kZXgoMCwgMCk7CisrICAgIG1v ZGVsLmluc2VydFJvd3MoMCwgNSwgcGFyZW50SW5kZXgpOworKyAgICBtb2RlbC5yZW1vdmVSb3dz KDEsIDIsIHBhcmVudEluZGV4KTsKKyB9CisgCisgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1vZGVs VGVzdGVyOjp0ZXN0SW5zZXJ0VGhyb3VnaFByb3h5KCkKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVz dHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgoraW5kZXggMTJhNGEyMmEx OS4uY2U1MThlNzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9h bGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21v Yy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KK0BAIC02NjgsNTAgKzY2OCw2IEBACisgICAgICAg ICAiaW5wdXRGaWxlIjogInRhc2sxOTI1NTIuaCIsCisgICAgICAgICAib3V0cHV0UmV2aXNpb24i OiA2NworICAgICB9LAorLSAgICB7CistICAgICAgICAiY2xhc3NlcyI6IFsKKy0gICAgICAgICAg ICB7CistICAgICAgICAgICAgICAgICJjbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhyb3dE ZWNsYXJhdGlvbiIsCistICAgICAgICAgICAgICAgICJvYmplY3QiOiB0cnVlLAorLSAgICAgICAg ICAgICAgICAicXVhbGlmaWVkQ2xhc3NOYW1lIjogIklubGluZVNsb3RzV2l0aFRocm93RGVjbGFy YXRpb24iLAorLSAgICAgICAgICAgICAgICAic2xvdHMiOiBbCistICAgICAgICAgICAgICAgICAg ICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJuYW1lIjogImEiLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAg ICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGlj IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJiIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwK Ky0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNz IjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYyIsCistICAg ICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAg ICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAg ICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjog ImQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAg ICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAg ICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAibmFtZSI6ICJlIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2 b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBdLAorLSAgICAg ICAgICAgICAgICAic3VwZXJDbGFzc2VzIjogWworLSAgICAgICAgICAgICAgICAgICAgeworLSAg ICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAibmFtZSI6ICJRT2JqZWN0IgorLSAgICAgICAgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgICAgICBdCistICAgICAgICAgICAgfQorLSAgICAgICAgXSwKKy0gICAgICAgICJp bnB1dEZpbGUiOiAidGFzazE4OTk5Ni5oIiwKKy0gICAgICAgICJvdXRwdXRSZXZpc2lvbiI6IDY3 CistICAgIH0sCisgICAgIHsKKyAgICAgICAgICJjbGFzc2VzIjogWworICAgICAgICAgICAgIHsK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybyBiL3F0YmFz ZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitpbmRleCBjMzI0YjNhOGNkLi40YWNlYjc4 ZGMwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8KKysr KyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitAQCAtMTUsNyArMTUsNyBA QCBjcm9zc19jb21waWxlOiBERUZJTkVTICs9IE1PQ19DUk9TU19DT01QSUxFRAorIEhFQURFUlMg Kz0gdXNpbmctbmFtZXNwYWNlcy5oIG5vLWtleXdvcmRzLmggdGFzazg3ODgzLmggYy1jb21tZW50 cy5oIGJhY2tzbGFzaC1uZXdsaW5lcy5oIG9sZHN0eWxlLWNhc3RzLmggXAorICAgICAgICAgICAg c2xvdHMtd2l0aC12b2lkLXRlbXBsYXRlLmggcWludm9rYWJsZS5oIG5hbWVzcGFjZWQtZmxhZ3Mu aCB0cmlncmFwaHMuaCBcCisgICAgICAgICAgICBlc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5o IGNzdHlsZS1lbnVtcy5oIHFwcml2YXRlc2xvdHMuaCBnYWRnZXR3aXRobm9lbnVtcy5oIFwKKy0g ICAgICAgICAgIGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5o IHRhc2sxOTI1NTIuaCB0YXNrMTg5OTk2LmggXAorKyAgICAgICAgICAgZGlyLWluLWluY2x1ZGUt cGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIFwKKyAgICAgICAg ICAgIHRhc2syMzQ5MDkuaCB0YXNrMjQwMzY4LmggcHVyZS12aXJ0dWFsLXNpZ25hbHMuaCBjeHgx MS1lbnVtcy5oIFwKKyAgICAgICAgICAgIGN4eDExLWZpbmFsLWNsYXNzZXMuaCBcCisgICAgICAg ICAgICBjeHgxMS1leHBsaWNpdC1vdmVycmlkZS1jb250cm9sLmggXAorZGlmZiAtLWdpdCBhL3F0 YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmggYi9xdGJhc2UvdGVzdHMvYXV0 by90b29scy9tb2MvdGFzazE4OTk5Ni5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IGY5NGEwNTFiM2EuLjAwMDAwMDAwMDAKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21v Yy90YXNrMTg5OTk2LmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDQ3ICswLDAgQEAKKy0vKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorLSoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55 IEx0ZC4KKy0qKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCistKioKKy0q KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4K Ky0qKgorLSoqICRRVF9CRUdJTl9MSUNFTlNFOkdQTC1FWENFUFQkCistKiogQ29tbWVyY2lhbCBM aWNlbnNlIFVzYWdlCistKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBRdCBs aWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorLSoqIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29t bWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorLSoqIFNvZnR3YXJl IG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRhaW5l ZCBpbgorLSoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBDb21w YW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCistKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBzOi8v d3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCistKiogaW5mb3JtYXRpb24g dXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4KKy0q KgorLSoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCistKiogQWx0ZXJuYXRpdmVs eSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCistKiog R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCistKiogRm91bmRhdGlvbiB3aXRoIGV4Y2VwdGlvbnMgYXMgYXBwZWFyaW5nIGlu IHRoZSBmaWxlIExJQ0VOU0UuR1BMMy1FWENFUFQKKy0qKiBpbmNsdWRlZCBpbiB0aGUgcGFja2Fn aW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCistKiogaW5mb3Jt YXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVu dHMgd2lsbAorLSoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4w Lmh0bWwuCistKioKKy0qKiAkUVRfRU5EX0xJQ0VOU0UkCistKioKKy0qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworLS8vIGlubGluZSBmdW5jdGlvbnMgY2FuIGhhdmUgdGhyb3cgZGVjbGFyYXRpb25zCist CistI2lmbmRlZiBUQVNLMTg5OTk2X0gKKy0jZGVmaW5lIFRBU0sxODk5OTZfSAorLQorLSNpbmNs dWRlIDxRT2JqZWN0PgorLQorLWNsYXNzIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRpb24g OiBwdWJsaWMgUU9iamVjdAorLXsKKy0gICAgUV9PQkpFQ1QKKy0KKy1wdWJsaWMgc2xvdHM6Cist ICAgIHZvaWQgYSgpIHRocm93KCkgeyB9CistICAgIHZvaWQgYigpIGNvbnN0IHRocm93KCkgeyB9 CistICAgIHZvaWQgYygpIHRocm93KCk7CistICAgIHZvaWQgZCgpIHRocm93KGludCkgeyB9Cist ICAgIHZvaWQgZSgpIGNvbnN0IHRocm93KGludCxkb3VibGUpIHsgfQorLX07CistCistI2VuZGlm CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwIGIv cXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwCitpbmRleCBjNzE2YWVhZDIx Li4xNWRkOWU0MWU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rz dF9tb2MuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5jcHAK K0BAIC02MzEsNyArNjMxLDYgQEAgcHVibGljOgorIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQg aW5pdFRlc3RDYXNlKCk7CisgCistICAgIHZvaWQgc2xvdFdpdGhFeGNlcHRpb24oKSB0aHJvdyhN eVN0cnVjdCk7CisgICAgIHZvaWQgZG9udFN0cmlwTmFtZXNwYWNlcygpOworICAgICB2b2lkIG9s ZFN0eWxlQ2FzdHMoKTsKKyAgICAgdm9pZCB3YXJuT25FeHRyYVNpZ25hbFNsb3RRdWFsaWZpYWN0 aW9uKCk7CitAQCAtNjczLDcgKzY3Miw2IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVt cGxhdGVHdEd0KCk7CisgICAgIHZvaWQgcXByaXZhdGVzbG90cygpOworICAgICB2b2lkIHFwcml2 YXRlcHJvcGVydGllcygpOworLSAgICB2b2lkIGlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRp b24oKTsKKyAgICAgdm9pZCB3YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCk7CisgICAgIHZvaWQg Y29uc3RydWN0b3JzKCk7CisgICAgIHZvaWQgdHlwZW5hbWVXaXRoVW5zaWduZWQoKTsKK0BAIC03 ODQsMTIgKzc4Miw2IEBAIHZvaWQgdHN0X01vYzo6aW5pdFRlc3RDYXNlKCkKKyAjZW5kaWYKKyB9 CisgCistdm9pZCB0c3RfTW9jOjpzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0KQor LXsKKy0gICAgLy8gYmUgaGFwcHkKKy0gICAgUVZFUklGWSh0cnVlKTsKKy19CistCisgdm9pZCB0 c3RfTW9jOjpkb250U3RyaXBOYW1lc3BhY2VzKCkKKyB7CisgICAgIFNlbmRlciBzZW5kZXI7CitA QCAtODI0LDcgKzgxNiw3IEBAIHZvaWQgdHN0X01vYzo6b2xkU3R5bGVDYXN0cygpCisgCisgICAg IFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8 ICItV29sZC1zdHlsZS1jYXN0IiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIgPDwg cXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9 YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1v IiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAg IHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0 ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC04OTQsNyArODg2LDcgQEAgdm9p ZCB0c3RfTW9jOjppbnB1dEZpbGVOYW1lV2l0aERvdHNCdXROb0V4dGVuc2lvbigpCisgCisgICAg IFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8 ICItSSIgPDwgIi4uIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8i IDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysgICAg ICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAi LWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIsIGFy Z3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mud3Jp dGUobW9jT3V0KTsKK0BAIC0xMTc0LDcgKzExNjYsNyBAQCB2b2lkIHRzdF9Nb2M6Omlnbm9yZU9w dGlvbkNsYXNoZXMoKQorICAgICBRU3RyaW5nTGlzdCBnY2NBcmdzOworICAgICBnY2NBcmdzIDw8 ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKyAgICAgICAgICA8PCAiLUki IDw8IHF0SW5jbHVkZVBhdGggPDwgIi1JIiA8PCBpbmNsdWRlRGlyIDw8ICItbyIgPDwgIi9kZXYv bnVsbCIKKy0gICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAgIi0iOworKyAg ICAgICAgIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICAiLSI7CisgICAgIHByb2Muc3Rh cnQoImdjYyIsIGdjY0FyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7 CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC0xNTkzLDIxICsxNTg1LDYgQEAgdm9pZCB0 c3RfTW9jOjpxcHJpdmF0ZXByb3BlcnRpZXMoKQorIAorIH0KKyAKKy0jaW5jbHVkZSAidGFzazE4 OTk5Ni5oIgorLQorLXZvaWQgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbjo6YygpIHRo cm93KCkge30KKy0KKy12b2lkIHRzdF9Nb2M6OmlubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRp b24oKQorLXsKKy0gICAgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiB0c3Q7CistICAg IGNvbnN0IFFNZXRhT2JqZWN0ICptb2JqID0gdHN0Lm1ldGFPYmplY3QoKTsKKy0gICAgUVZFUklG WShtb2JqLT5pbmRleE9mU2xvdCgiYSgpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmlu ZGV4T2ZTbG90KCJiKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3Qo ImMoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiZCgpIikgIT0g LTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJlKCkiKSAhPSAtMSk7CistfQor LQorIHZvaWQgdHN0X01vYzo6d2Fybk9uUHJvcGVydHlXaXRob3V0UkVBRCgpCisgeworICNpZmRl ZiBNT0NfQ1JPU1NfQ09NUElMRUQKK0BAIC0xODY5LDcgKzE4NDYsNyBAQCB2b2lkIHRzdF9Nb2M6 Om5vdGlmeUVycm9yKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8PCAi LWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLiIKKy0gICAgICAgICA8PCAiLUkiIDw8 IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3Rk PWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICIt byIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAg ICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFy dGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNw cCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9x aGVhZGVydmlldy5jcHAKK2luZGV4IGMzNTVlZTk2NjUuLjg4YzA5ZGU4ZTAgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3RfcWhl YWRlcnZpZXcuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9x aGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitAQCAtMjUxLDYgKzI1MSw3IEBAIHByaXZh dGUgc2xvdHM6CisgICAgIHZvaWQgdGVzdFJlc2V0Q2FjaGVkU2l6ZUhpbnQoKTsKKyAgICAgdm9p ZCBzdGF0dXNUaXBzKCk7CisgICAgIHZvaWQgdGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91dENo YW5nZWQoKTsKKysgICAgdm9pZCB0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCk7CisgCisgcHJvdGVj dGVkOgorICAgICB2b2lkIHNldHVwVGVzdERhdGEoYm9vbCB1c2VfcmVzZXRfbW9kZWwgPSBmYWxz ZSk7CitAQCAtMzYwLDYgKzM2MSwxMiBAQCBwdWJsaWM6CisgICAgICAgICBlbmRSZW1vdmVDb2x1 bW5zKCk7CisgICAgIH0KKyAKKysgICAgdm9pZCBtb3ZlQ29sdW1uKGludCBmcm9tLCBpbnQgdG8p CisrICAgIHsKKysgICAgICAgIGJlZ2luTW92ZUNvbHVtbnMoUU1vZGVsSW5kZXgoKSwgZnJvbSwg ZnJvbSwgUU1vZGVsSW5kZXgoKSwgdG8pOworKyAgICAgICAgZW5kTW92ZUNvbHVtbnMoKTsKKysg ICAgfQorKworICAgICB2b2lkIGNsZWFudXAoKQorICAgICB7CisgICAgICAgICBlbWl0IGxheW91 dEFib3V0VG9CZUNoYW5nZWQoKTsKK0BAIC0zNjI3LDUgKzM2MzQsMTggQEAgdm9pZCB0c3RfUUhl YWRlclZpZXc6OnRlc3RSZW1vdmluZ0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCkKKyAgICAgLy8g VGhlIG1haW4gcG9pbnQgb2YgdGhpcyB0ZXN0IGlzIHRoYXQgdGhlIHNlY3Rpb24tc2l6ZSByZXN0 b3JpbmcgY29kZSBkaWRuJ3QgZ28gb3V0IG9mIGJvdW5kcy4KKyB9CisgCisrdm9pZCB0c3RfUUhl YWRlclZpZXc6OnRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKQorK3sKKysgICAgUXRUZXN0TW9kZWwg bW9kZWwoMTAsIDEwKTsKKysgICAgUUhlYWRlclZpZXcgaHYoUXQ6Okhvcml6b250YWwpOworKyAg ICBodi5zZXRNb2RlbCgmbW9kZWwpOworKyAgICBodi5yZXNpemVTZWN0aW9ucyhRSGVhZGVyVmll dzo6UmVzaXplVG9Db250ZW50cyk7CisrICAgIGh2LnNob3coKTsKKysKKysgICAgUVBlcnNpc3Rl bnRNb2RlbEluZGV4IGluZGV4MyA9IG1vZGVsLmluZGV4KDAsIDMpOworKyAgICBtb2RlbC5tb3Zl Q29sdW1uKDMsIDEpOworKyAgICBRQ09NUEFSRShpbmRleDMuY29sdW1uKCksIDEpOworK30KKysK KyBRVEVTVF9NQUlOKHRzdF9RSGVhZGVyVmlldykKKyAjaW5jbHVkZSAidHN0X3FoZWFkZXJ2aWV3 Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9x dGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv aXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitpbmRleCA3NjEzNTdiMjUy Li4wNmJiNzA2MDc0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVt dmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9h dXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitAQCAt Mzk3LDYgKzM5Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tIZWFkZXJNaW5T aXplKCk7CisgCisgICAgIHZvaWQgcmVzaXplVG9Db250ZW50cygpOworKyAgICB2b2lkIHJlc2l6 ZVRvQ29udGVudHNTcGFucygpOworIAorICAgICB2b2lkIHRhYkZvY3VzKCk7CisgICAgIHZvaWQg YmlnTW9kZWwoKTsKK0BAIC0zNzIxLDYgKzM3MjIsNzAgQEAgdm9pZCB0c3RfUVRhYmxlVmlldzo6 cmVzaXplVG9Db250ZW50cygpCisgCisgfQorIAorKworK2NsYXNzIFNwYW5Nb2RlbCA6IHB1Ymxp YyBRQWJzdHJhY3RUYWJsZU1vZGVsCisreworK3B1YmxpYzoKKysgICAgU3Bhbk1vZGVsKGJvb2wg c2VjdGlvbnNNb3ZlZCkKKysgICAgICAgIDogX3NlY3Rpb25zTW92ZWQoc2VjdGlvbnNNb3ZlZCkK KysgICAge30KKysgICAgaW50IGNvbHVtbkNvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkg Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMjsgfQorKyAgICBpbnQgcm93Q291bnQoY29uc3QgUU1v ZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAxOyB9CisrICAgIFFWYXJp YW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXggJmlkeCwgaW50IHJvbGUgPSBRdDo6RGlzcGxheVJv bGUpIGNvbnN0IG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIGlmIChyb2xlICE9IFF0OjpEaXNw bGF5Um9sZSkKKysgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgICAgIGNvbnN0 IGludCBjb2wgPSBfc2VjdGlvbnNNb3ZlZCA/IDEgLSBpZHguY29sdW1uKCkgOiBpZHguY29sdW1u KCk7CisrICAgICAgICBpZiAoY29sID09IDApCisrICAgICAgICAgICAgcmV0dXJuICJMb3JlbSBp cHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8g ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1 YS4iOworKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisrICAgIH0KKytwcml2YXRlOgorKyAg ICBib29sIF9zZWN0aW9uc01vdmVkOworK307CisrCisrCisrdm9pZCB0c3RfUVRhYmxlVmlldzo6 cmVzaXplVG9Db250ZW50c1NwYW5zKCkKKyt7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDEoZmFsc2Up OworKyAgICBTcGFuTW9kZWwgbW9kZWwyKHRydWUpOworKyAgICBRVGFibGVWaWV3IHZpZXcxLCB2 aWV3MiwgdmlldzM7CisrICAgIHZpZXcxLnNldE1vZGVsKCZtb2RlbDEpOworKyAgICB2aWV3Mi5z ZXRNb2RlbCgmbW9kZWwyKTsKKysgICAgdmlldzIuaG9yaXpvbnRhbEhlYWRlcigpLT5tb3ZlU2Vj dGlvbigwLCAxKTsKKysgICAgdmlldzMuc2V0TW9kZWwoJm1vZGVsMSk7CisrCisrICAgIHZpZXcx LnNldFNwYW4oMCwgMCwgMSwgMik7CisrICAgIHZpZXcyLnNldFNwYW4oMCwgMSwgMSwgMik7Cisr ICAgIHZpZXcxLnNob3coKTsKKysgICAgdmlldzIuc2hvdygpOworKyAgICB2aWV3My5zaG93KCk7 CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzEpKTsKKysg ICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MikpOworKyAgICBR VkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXczKSk7CisrICAgIHZpZXcx LnNldENvbHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcxLnNldENvbHVtbldpZHRoKDEsIDEw MCk7CisrICAgIHZpZXcyLnNldENvbHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcyLnNldENv bHVtbldpZHRoKDEsIDEwMCk7CisrICAgIHZpZXczLnNldENvbHVtbldpZHRoKDAsIDIwMCk7Cisr CisrICAgIHZpZXcxLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6ZVJv d1RvQ29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAg IFFDT01QQVJFKHZpZXcxLnJvd0hlaWdodCgwKSwgdmlldzMucm93SGVpZ2h0KDApKTsKKysgICAg UUNPTVBBUkUodmlldzIucm93SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKworKyAg ICB2aWV3My5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVSb3dU b0NvbnRlbnRzKDApOworKyAgICAvLyBoZWlnaHQgc2hvdWxkIGJlIG9ubHkgMSB0ZXh0IGxpbmUg Zm9yIGVhc3kgdGVzdGluZworKyAgICB2aWV3MS5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVydGlj YWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3Mi5zZXRSb3dIZWlnaHQoMCwg dmlldzMudmVydGljYWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3MS5yZXNp emVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3Mi5yZXNpemVDb2x1bW5Ub0NvbnRlbnRz KDEpOworKyAgICBRQ09NUEFSRSh2aWV3MS5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lk dGgoMCkgLSB2aWV3MS5jb2x1bW5XaWR0aCgxKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLmNvbHVt bldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcyLmNvbHVtbldpZHRoKDEpKTsK Kyt9CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgZXh0ZXJuIGJvb2wgUV9XSURHRVRTX0VYUE9S VCBxdF90YWJfYWxsX3dpZGdldHMoKTsgLy8gcWFwcGxpY2F0aW9uLmNwcAorIFFUX0VORF9OQU1F U1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBw bGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGEzYjhlZjc4 ZDguLjQ5NTVjZWJkNWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tl cm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNwcAor QEAgLTE0OTgsNyArMTQ5OCw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6ZGVza3RvcFNldHRp bmdzQXdhcmUoKQorICAgICBlbnZpcm9ubWVudCArPSBRTGF0aW4xU3RyaW5nKCJRVF9NQUNfRElT QUJMRV9GT1JFR1JPVU5EX0FQUExJQ0FUSU9OX1RSQU5TRk9STT0xIik7CisgICAgIHRlc3RQcm9j ZXNzLnNldEVudmlyb25tZW50KGVudmlyb25tZW50KTsKKyAjZW5kaWYKKy0gICAgdGVzdFByb2Nl c3Muc3RhcnQoImRlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIpOworKyAgICB0ZXN0UHJvY2Vz cy5zdGFydCgiLi9kZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKyAgICAgUVZFUklGWTIo dGVzdFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVByaW50YWJsZShR U3RyaW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ2Rlc2t0b3BzZXR0aW5nc2F3YXJlX2hl bHBlcic6ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFWRVJJ RlkodGVzdFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDEwMDAwKSk7CitAQCAtMjQ1Miw3ICsyNDUy LDcgQEAgdm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpxdGJ1Z18xMjY3MygpCisgI2lmIFFUX0NPTkZJ Ryhwcm9jZXNzKQorICAgICBRUHJvY2VzcyB0ZXN0UHJvY2VzczsKKyAgICAgUVN0cmluZ0xpc3Qg YXJndW1lbnRzOworLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgibW9kYWxfaGVscGVyIiwgYXJndW1l bnRzKTsKKysgICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vbW9kYWxfaGVscGVyIiwgYXJndW1lbnRz KTsKKyAgICAgUVZFUklGWTIodGVzdFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAg ICAgICAgcVByaW50YWJsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ21vZGFs X2hlbHBlcic6ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFW RVJJRlkodGVzdFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDIwMDAwKSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFi c3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJz dHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGViMTA4YTQwZGUuLmRj YTU1MjhjMWIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMv cWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVz dHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0 b24uY3BwCitAQCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBs aWNhdGlvbl9wLmg+CisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorKyNp bmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyBjbGFzcyB0c3RfUUFic3RyYWN0QnV0 dG9uIDogcHVibGljIFFPYmplY3QKKyB7CitAQCAtNzYsNiArNzcsOCBAQCBwcml2YXRlIHNsb3Rz OgorICAgICB2b2lkIGtleU5hdmlnYXRpb24oKTsKKyAjZW5kaWYKKyAKKysgICAgdm9pZCBidXR0 b25QcmVzc0tleXMoKTsKKysKKyBwcm90ZWN0ZWQgc2xvdHM6CisgICAgIHZvaWQgb25DbGlja2Vk KCk7CisgICAgIHZvaWQgb25Ub2dnbGVkKCBib29sIG9uICk7CitAQCAtMjY5LDcgKzI3MiwxMyBA QCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAgICAgUUNP TVBBUkUocHJlc3NfY291bnQsIGNsaWNrX2NvdW50KTsKKyAgICAgICAgIFFWRVJJRlkoY2xpY2tf Y291bnQgPiAxKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CisrICAgIGNhc2UgNDog eworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Q cml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlz KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxR TGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMo UXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFz IEtleV9FbnRlciBpbiBCdXR0b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8v IGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQg aXMgZmFsc2UKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAgICAg ICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworQEAgLTI4Niw3ICsyOTUsMTQg QEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAgICAg IFFWRVJJRlkoIGNsaWNrX2NvdW50ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNl IDU6CisrICAgIH0KKysgICAgY2FzZSA1OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblBy ZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0 Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYg KGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgICAg IFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5cyIp OworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMg bm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyB0cnVlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5z ZXREb3duKCBmYWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggdHJ1 ZSApOworQEAgLTMwNCw2ICszMjAsNyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1 dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOworICAg ICAgICAgYnJlYWs7CisrICAgIH0KKyAgICAgY2FzZSA2OgorICAgICAgICAgLy8gdmVyaWZ5IGF1 dG9yZXBlYXQgaXMgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICBNeUJ1dHRvbiB0bXAoIDApOwor QEAgLTY1MSw1ICs2NjgsMTYgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjprZXlOYXZpZ2F0 aW9uKCkKKyB9CisgI2VuZGlmCisgCisrdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpidXR0b25Q cmVzc0tleXMoKQorK3sKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBw bGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVz c0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8 UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NL ZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljayh0ZXN0V2lkZ2V0 LCBidXR0b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tfY291bnQsIGkg KyAxKTsKKysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQWJzdHJhY3RCdXR0b24pCisg I2luY2x1ZGUgInRzdF9xYWJzdHJhY3RidXR0b24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9ib3gu Y3BwCitpbmRleCAzMjQzNzA1MGY1Li40NmI1YWY2ZDYzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJv Ym94LmNwcAorQEAgLTE2OCw2ICsxNjgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNo ZWNrTWVudUl0ZW1Qb3NXaGVuU3R5bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgY2hlY2tFbWJl ZGRlZExpbmVFZGl0V2hlblN0eWxlU2hlZXRJc1NldCgpOworICAgICB2b2lkIHByb3BhZ2F0ZVN0 eWxlQ2hhbmdlcygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZhdGU6 CisgICAgIFBsYXRmb3JtSW5wdXRDb250ZXh0IG1fcGxhdGZvcm1JbnB1dENvbnRleHQ7CitAQCAt MTY4Miw2ICsxNjgzLDE2IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6c2V0TW9kZWwoKQorICAgICBR Q09NUEFSRShib3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1vZGVsSW5kZXgpOworICAgICBib3gu c2V0TW9kZWwoYm94Lm1vZGVsKCkpOworICAgICBRQ09NUEFSRShib3gucm9vdE1vZGVsSW5kZXgo KSwgcm9vdE1vZGVsSW5kZXgpOworKworKyAgICAvLyBjaGVjayB0aGF0IHNldHRpbmcgdGhlIHNh bWUgbW9kZWwgYXMgdGhlIGNvbXBsZXRlcidzIGRvZXNuJ3QgY3Jhc2gKKysgICAgUUNvbXBsZXRl ciAqY29tcGxldGVyID0gbmV3IFFDb21wbGV0ZXIoJmJveCk7CisrICAgIGJveC5zZXRFZGl0YWJs ZSh0cnVlKTsKKysgICAgYm94LnNldENvbXBsZXRlcihjb21wbGV0ZXIpOworKyAgICBhdXRvICps aXN0TW9kZWwgPSBuZXcgUVN0cmluZ0xpc3RNb2RlbCh7ICJvbmUiLCAidHdvIiB9LCBjb21wbGV0 ZXIpOworKyAgICBjb21wbGV0ZXItPnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAgIFFDT01QQVJF KGxpc3RNb2RlbC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVsZXRl ZAorKyAgICBib3guc2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1vZGVs LT5yb3dDb3VudCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisgfQorIAor IHZvaWQgdHN0X1FDb21ib0JveDo6c2V0Q3VzdG9tTW9kZWxBbmRWaWV3KCkKK0BAIC0zNjMyLDUg KzM2NDMsMjQgQEAgdm9pZCB0c3RfUUNvbWJvQm94Ojpwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKQor ICAgICBRVkVSSUZZKGZyYW1lU3R5bGUuaW5xdWlyZWQpOworIH0KKyAKKyt2b2lkIHRzdF9RQ29t Ym9Cb3g6OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBRQ29tYm9Cb3ggY29tYm9Cb3g7Cisr ICAgIGNvbWJvQm94LnNldEVkaXRhYmxlKGZhbHNlKTsKKysgICAgY29tYm9Cb3guYWRkSXRlbShR U3RyaW5nOjpudW1iZXIoMSkpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51bWJl cigyKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0 OjpLZXk+PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5n dGgoKTsgKytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmNvbWJvQm94LCBidXR0b25Q cmVzc0tleXNbaV0pOworKyAgICAgICAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGEgd2luZG93IHdp bGwgbm90IGJlIGltbWVkaWF0ZWx5IHZpc2libGUsCisrICAgICAgICAvLyBidXQgdGFrZSBzb21l IGV2ZW50LWxvb3AgaXRlcmF0aW9ucyB0byBjb21wbGV0ZS4KKysgICAgICAgIC8vIFVzaW5nIFFU UllfVkVSSUZZIHRvIGRlYWwgd2l0aCB0aGF0LgorKyAgICAgICAgUVRSWV9WRVJJRlkoY29tYm9C b3gudmlldygpLT5pc1Zpc2libGUoKSk7CisrICAgICAgICBjb21ib0JveC5oaWRlUG9wdXAoKTsK KysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQ29tYm9Cb3gpCisgI2luY2x1ZGUgInRz dF9xY29tYm9ib3gubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv d2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybyBiL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRs aW5rYnV0dG9uLnBybworaW5kZXggYmUzY2ZjZDEwNC4uYzIyOGZkZmNjYSAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNv bW1hbmRsaW5rYnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitAQCAtMSw2ICsx LDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcWNvbW1hbmRsaW5rYnV0 dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1aS1w cml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKKyAKKyAKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5r YnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNw cAoraW5kZXggMDA0NGQzM2M2Ni4uNGNmMDYyOTZlNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlu a2J1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29t bWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKK0BAIC00MCw2ICs0MCw5 IEBACisgI2luY2x1ZGUgPFFHcmlkTGF5b3V0PgorICNpbmNsdWRlIDxRUGFpbnRlcj4KKyAKKysj aW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBs YXRmb3JtdGhlbWUuaD4KKysKKyBjbGFzcyB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uIDogcHVibGlj IFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMjIzLDYgKzIyNiwxMyBAQCB2b2lkIHRz dF9RQ29tbWFuZExpbmtCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0aGF0 IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOworICAg ICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJlc2V0 IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0dG9u UHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZv cm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9uUHJl c3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47CisrICAg IH0KKyAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRlc3Q6 OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7CisgCitAQCAtMjU1LDYgKzI2 NSwxNCBAQCB2b2lkIHRzdF9RQ29tbWFuZExpbmtCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09N UEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291 bnQsICh1aW50KTEgKTsKKyAKKysgICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtl eV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlv blByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0Vu dGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVz cyggdGVzdFdpZGdldCxRdDo6S2V5X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3Vu dCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gv cWdyb3VwYm94LnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBi b3gvcWdyb3VwYm94LnBybworaW5kZXggNGE1ZTc2ZmY2NS4uYTIzNWZhMWZhYyAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3VwYm94 LnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC9x Z3JvdXBib3gucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJH RVQgPSB0c3RfcWdyb3VwYm94CistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0 cyB0ZXN0bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3Fncm91cGJveC5jcHAKKyAK KyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3Vw Ym94L3RzdF9xZ3JvdXBib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAoraW5kZXggNGZiNWQyNjJjYS4uZDhkNzU2MmI3 MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBi b3gvdHN0X3Fncm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lk Z2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK0BAIC0zNSw2ICszNSw5IEBACisgI2lu Y2x1ZGUgPFFSYWRpb0J1dHRvbj4KKyAjaW5jbHVkZSA8UURpYWxvZz4KKyAKKysjaW5jbHVkZSA8 cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhl bWUuaD4KKysKKyAjaW5jbHVkZSAicWdyb3VwYm94LmgiCisgCisgY2xhc3MgdHN0X1FHcm91cEJv eCA6IHB1YmxpYyBRT2JqZWN0CitAQCAtNjksNiArNzIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAg ICB2b2lkIHByb3BhZ2F0ZUZvY3VzKCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xOTE3MF9pZ25v cmVNb3VzZVJlbGVhc2VFdmVudCgpOworICAgICB2b2lkIHRhc2tfUVRCVUdfMTU1MTlfcHJvcGFn YXRlTW91c2VFdmVudHMoKTsKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKyAKKyBwcml2 YXRlOgorICAgICBib29sIGNoZWNrZWQ7CitAQCAtNjEwLDYgKzYxNCwyMCBAQCB2b2lkIHRzdF9R R3JvdXBCb3g6OnRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91c2VFdmVudHMoKQorICAgICBR Q09NUEFSRShwYXJlbnQubW91c2VNb3ZlZCwgdHJ1ZSk7CisgfQorIAorK3ZvaWQgdHN0X1FHcm91 cEJveDo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFHcm91cEJveCBncm91cEJveDsKKysg ICAgZ3JvdXBCb3guc2V0Q2hlY2thYmxlKHRydWUpOworKyAgICBRU2lnbmFsU3B5IGNsaWNrZWRT cHkoJmdyb3VwQm94LCAmUUdyb3VwQm94OjpjbGlja2VkKTsKKysgICAgY29uc3QgYXV0byBidXR0 b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0 Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkg PSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0 OjprZXlDbGljaygmZ3JvdXBCb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICBRQ09N UEFSRShjbGlja2VkU3B5Lmxlbmd0aCgpLCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgdm9pZCB0 c3RfUUdyb3VwQm94OjpzZW5kTW91c2VNb3ZlRXZlbnQoUVdpZGdldCAqd2lkZ2V0LCBjb25zdCBR UG9pbnQgJmxvY2FsUG9zKQorIHsKKyAgICAgLy8gU2VuZCBhIE1vdXNlTW92ZSBldmVudCB3aXRo b3V0IGFjdHVhbGx5IG1vdmluZyB0aGUgcG9pbnRlcgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8gYi9xdGJh c2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24ucHJv CitpbmRleCAzNTNhZDA2Y2EyLi5lNTVmNjE0OGYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworKysrIGIv cXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9u LnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0 X3FwdXNoYnV0dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0 bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3FwdXNoYnV0dG9uLmNwcAorIAorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRv bi90c3RfcXB1c2hidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK2luZGV4IGU4MTg1MTRhNzkuLjQwNDNl OTMyNmEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1 c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK0BAIC00MSw2ICs0 MSw5IEBACisgI2luY2x1ZGUgPFFTdHlsZUZhY3Rvcnk+CisgI2luY2x1ZGUgPFFUYWJXaWRnZXQ+ CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8 cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FQdXNoQnV0dG9uIDogcHVibGlj IFFPYmplY3QKKyB7CisgUV9PQkpFQ1QKK0BAIC0yMTIsNiArMjE1LDEzIEBAIHZvaWQgdHN0X1FQ dXNoQnV0dG9uOjphdXRvUmVwZWF0KCkKKyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRF UiBoYXMgbm8gZWZmZWN0CisgICAgIHJlc2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+ c2V0RG93biggZmFsc2UgKTsKKysgICAgLy8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVz c0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRv blByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52 YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlu cyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRlc3RX aWRnZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVz dFdpZGdldCwgUXQ6OktleV9FbnRlciApOworIAorQEAgLTI0Nyw2ICsyNTcsMTQgQEAgdm9pZCB0 c3RfUVB1c2hCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1 aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKKyAKKysg ICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBh dXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhl bWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhp bnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYg KGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0 dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCxRdDo6S2V5 X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAgICBR Q09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9tYW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdCBiL3F0YmFzZS90 ZXN0cy9tYW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdAorb2xkIG1vZGUg MTAwNzU1CituZXcgbW9kZSAxMDA2NDQKK1N1Ym1vZHVsZSBxdGNvbm5lY3Rpdml0eSBlOTU3ZDQ4 MS4uMDU2Mjk0YzA6CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9i bHVlei9oY2ltYW5hZ2VyLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXov aGNpbWFuYWdlci5jcHAKK2luZGV4IGUyNjM1ZmFlLi5hOGI4ZTNiOSAxMDA2NDQKKy0tLSBhL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKKysrKyBiL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKK0BAIC01NjMs OSArNTYzLDExIEBAIHZvaWQgSGNpTWFuYWdlcjo6aGFuZGxlSGNpQWNsUGFja2V0KGNvbnN0IHF1 aW50OCAqZGF0YSwgaW50IHNpemUpCisgCisgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVMZU1ldGFF dmVudChjb25zdCBxdWludDggKmRhdGEpCisgeworLSAgICAvLyBTcGVjIHY0LjIsIFZvbCAyLCBw YXJ0IEUsIDcuNy42NWZmCisrICAgIC8vIFNwZWMgdjUuMywgVm9sIDQsIHBhcnQgRSwgNy43LjY1 LioKKyAgICAgc3dpdGNoICgqZGF0YSkgeworLSAgICBjYXNlIDB4MTogeworKyAgICBjYXNlIDB4 MTogLy8gSENJX0xFX0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAgY2FzZSAweEE6IC8vIEhDSV9M RV9FbmhhbmNlZF9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAgIHsKKyAgICAgICAgIGNvbnN0IHF1 aW50MTYgaGFuZGxlID0gYnRfZ2V0X2xlMTYoZGF0YSArIDIpOworICAgICAgICAgZW1pdCBjb25u ZWN0aW9uQ29tcGxldGUoaGFuZGxlKTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3ZlcnlhZ2Vu dF9ibHVlei5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2 aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitpbmRleCA2YTkzMTQzYi4uNGExOGNmYzcgMTAw NjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNl ZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRv b3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitAQCAtMzIwLDcg KzMyMCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnRQcml2YXRlOjpf cV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAgICAgICAgICAgIGZvciAoY29u c3QgUUJsdWV0b290aFV1aWQgJmlkIDogc2VydmljZUNsYXNzVXVpZHMpIHsKKyAgICAgICAgICAg ICAgICAgaWYgKGlkLm1pbmltdW1TaXplKCkgPT0gMTYpIHsKKyAgICAgICAgICAgICAgICAgICAg IHNlcnZpY2VJbmZvLnNldFNlcnZpY2VVdWlkKGlkKTsKKy0gICAgICAgICAgICAgICAgICAgIHNl cnZpY2VJbmZvLnNldFNlcnZpY2VOYW1lKFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6 OnRyKCJDdXN0b20gU2VydmljZSIpKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNl SW5mby5zZXJ2aWNlTmFtZSgpLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAgICAgICAg IHNlcnZpY2VJbmZvLnNldFNlcnZpY2VOYW1lKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0b20gU2Vy dmljZSIpKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIFFC bHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2UgbW9kU2VxID0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmljZUluZm8uYXR0cmlidXRlKFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6 U2VydmljZUNsYXNzSWRzKS52YWx1ZTxRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlPigp OworICAgICAgICAgICAgICAgICAgICAgbW9kU2VxLnJlbW92ZU9uZShRVmFyaWFudDo6ZnJvbVZh bHVlKGlkKSk7CitAQCAtMzM0LDggKzMzNywxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlz Y292ZXJ5QWdlbnRQcml2YXRlOjpfcV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAor ICAgICAgICAgICAgICAgICBxQ0RlYnVnKFFUX0JUX0JMVUVaKSA8PCAiRGlzY292ZXJlZCBzZXJ2 aWNlcyIgPDwgZGlzY292ZXJlZERldmljZXMuYXQoMCkuYWRkcmVzcygpLnRvU3RyaW5nKCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc2VydmljZUluZm8uc2Vydmlj ZU5hbWUoKSA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlVXVpZCgpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDw8ICI+Pj4iIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VDbGFzc1V1 aWRzKCk7CistCistICAgICAgICAgICAgICAgIGVtaXQgcS0+c2VydmljZURpc2NvdmVyZWQoc2Vy dmljZUluZm8pOworKyAgICAgICAgICAgICAgICAvLyBVc2UgcXVldWVkIGNvbm5lY3Rpb24gdG8g YWxsb3cgdXMgZmluaXNoIHRoZSBzZXJ2aWNlIGxvb3Bpbmc7IHRoZSBhcHBsaWNhdGlvbgorKyAg ICAgICAgICAgICAgICAvLyBtaWdodCBjYWxsIHN0b3AoKSB3aGVuIGl0IGhhcyBkZXRlY3RlZCB0 aGUgc2VydmljZS1vZi1pbnRlcmVzdC4KKysgICAgICAgICAgICAgICAgUU1ldGFPYmplY3Q6Omlu dm9rZU1ldGhvZChxLCAic2VydmljZURpc2NvdmVyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRX0FSRyhRQmx1ZXRv b3RoU2VydmljZUluZm8sIHNlcnZpY2VJbmZvKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAg fQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1 ZXRvb3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290 aHNvY2tldC5jcHAKK2luZGV4IGU0ZDg1NDQ3Li5hYWRkNDc1NSAxMDA2NDQKKy0tLSBhL3F0Y29u bmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29u bmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC01OTMsNyAr NTkzLDcgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0OjpzZXRTb2NrZXRTdGF0ZShRQmx1ZXRvb3Ro U29ja2V0OjpTb2NrZXRTdGF0ZSBzdGF0ZSkKKyBib29sIFFCbHVldG9vdGhTb2NrZXQ6OmNhblJl YWRMaW5lKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRQmx1ZXRvb3RoU29ja2V0QmFzZSk7 CistICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpOworKyAgICByZXR1cm4gZC0+Y2FuUmVhZExp bmUoKSB8fCBRSU9EZXZpY2U6OmNhblJlYWRMaW5lKCk7CisgfQorIAorIC8qIQorZGlmZiAtLWdp dCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRi dXMuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0X2Js dWV6ZGJ1cy5jcHAKK2luZGV4IDA4NGFhOTU4Li5kNmFhMTdhNyAxMDA2NDQKKy0tLSBhL3F0Y29u bmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3BwCisr KysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1ZXpk YnVzLmNwcAorQEAgLTI4NCw2ICsyODQsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0UHJpdmF0 ZUJsdWV6REJ1czo6Y29ubmVjdFRvU2VydmljZSgKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQor IAorKyAgICBpZiAoc2VydmljZS5zb2NrZXRQcm90b2NvbCgpICE9IFFCbHVldG9vdGhTZXJ2aWNl SW5mbzo6UHJvdG9jb2w6OlVua25vd25Qcm90b2NvbCkKKysgICAgICAgIHNvY2tldFR5cGUgPSBz ZXJ2aWNlLnNvY2tldFByb3RvY29sKCk7CisrICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8ICJT b2NrZXQgcHJvdG9jb2wgdXNlZDoiIDw8IHNvY2tldFR5cGU7CisrCisgICAgIGNvbm5lY3RUb1Nl cnZpY2Uoc2VydmljZS5kZXZpY2UoKS5hZGRyZXNzKCksIHRhcmdldFNlcnZpY2UsIG9wZW5Nb2Rl KTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1ZXRv b3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3Rlc3Rz L2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK2luZGV4IDA1 YmMxYTBmLi5hN2I1ZWYxZiAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1dG8v cWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29ubmVj dGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5j cHAKK0BAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCB0c3RfUUJsdWV0b290aFNvY2tldDo6aW5pdFRl c3RDYXNlKCkKKyAgICAgcURlYnVnKCkgPDwgIlN0YXJ0aW5nIGRpc2NvdmVyeSI7CisgCisgICAg IHNkYS0+c2V0VXVpZEZpbHRlcihRQmx1ZXRvb3RoVXVpZChRU3RyaW5nKFRFU1RfU0VSVklDRV9V VUlEKSkpOworLSAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6 Ok1pbmltYWxEaXNjb3ZlcnkpOworKyAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlz Y292ZXJ5QWdlbnQ6OkZ1bGxEaXNjb3ZlcnkpOworIAorICAgICBmb3IgKGludCBjb25uZWN0VGlt ZSA9IE1heENvbm5lY3RUaW1lOyAhZG9uZV9kaXNjb3ZlcnkgJiYgY29ubmVjdFRpbWUgPiAwOyBj b25uZWN0VGltZSAtPSAxMDAwKQorICAgICAgICAgUVRlc3Q6OnFXYWl0KDEwMDApOworU3VibW9k dWxlIHF0ZGVjbGFyYXRpdmUgZjU3MDFmMGQuLjhkZWZlN2JmOgorZGlmZiAtLWdpdCBhL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK2luZGV4IGI2 NWI5OTRkNmMuLjE1YThjZDY4NzggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwv Y29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK0BAIC04Niw3ICs4Niw3IEBAIHB1 YmxpYzoKKyAgICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29tcGxleCkgeworICAgICAgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICAgbmV3 IChkYXRhICsgaSkgVCh2ZWN0b3IuYXQoaSkpOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAg IH0gZWxzZSBpZiAoY291bnQpIHsKKyAgICAgICAgICAgICBtZW1jcHkoZGF0YSwgc3RhdGljX2Nh c3Q8Y29uc3Qgdm9pZCo+KHZlY3Rvci5jb25zdERhdGEoKSksIGNvdW50ICogc2l6ZW9mKFQpKTsK KyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9q c3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pz cnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKK2luZGV4IGU1N2NkZDgyNzguLjk0NjEzNTk4 YWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmpl Y3R3cmFwcGVyLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9xdjRx b2JqZWN0d3JhcHBlci5jcHAKK0BAIC0xMTQ1LDggKzExNDUsNyBAQCB2b2lkIEhlYXA6OlFPYmpl Y3RXcmFwcGVyOjptYXJrT2JqZWN0cyhIZWFwOjpCYXNlICp0aGF0LCBRVjQ6Ok1hcmtTdGFjayAq bWFya1N0YQorIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0Q2Fs bCkKKyB7CisgICAgIEhlYXA6OlFPYmplY3RXcmFwcGVyICpoID0gZCgpOworLSAgICBpZiAoIWgt PmludGVybmFsQ2xhc3MpCistICAgICAgICByZXR1cm47IC8vIGRlc3Ryb3lPYmplY3QgYWxyZWFk eSBnb3QgY2FsbGVkCisrICAgIFFfQVNTRVJUKGgtPmludGVybmFsQ2xhc3MpOworIAorICAgICBp ZiAoaC0+b2JqZWN0KCkpIHsKKyAgICAgICAgIFFRbWxEYXRhICpkZGF0YSA9IFFRbWxEYXRhOjpn ZXQoaC0+b2JqZWN0KCksIGZhbHNlKTsKK0BAIC0xMTc2LDcgKzExNzUsNyBAQCB2b2lkIFFPYmpl Y3RXcmFwcGVyOjpkZXN0cm95T2JqZWN0KGJvb2wgbGFzdENhbGwpCisgICAgICAgICB9CisgICAg IH0KKyAKKy0gICAgaC0+fkRhdGEoKTsKKysgICAgaC0+ZGVzdHJveSgpOworIH0KKyAKKyAKK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcCBiL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitpbmRleCAwNmNhZjA0ZTVhLi5kYTE0 OWE2N2M0IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRtbS5j cHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitAQCAtOTgx LDcgKzk4MSw3IEBAIHZvaWQgTWVtb3J5TWFuYWdlcjo6c3dlZXAoYm9vbCBsYXN0U3dlZXAsIENs YXNzRGVzdHJveVN0YXRzQ2FsbGJhY2sgY2xhc3NDb3VudFB0CisgCisgICAgIGlmIChNdWx0aXBs eVdyYXBwZWRRT2JqZWN0TWFwICptdWx0aXBseVdyYXBwZWRRT2JqZWN0cyA9IGVuZ2luZS0+bV9t dWx0aXBseVdyYXBwZWRRT2JqZWN0cykgeworICAgICAgICAgZm9yIChNdWx0aXBseVdyYXBwZWRR T2JqZWN0TWFwOjpJdGVyYXRvciBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5iZWdpbigp OyBpdCAhPSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ZW5kKCk7KSB7CistICAgICAgICAgICAg aWYgKCFpdC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisrICAgICAgICAgICAgaWYgKGl0 LnZhbHVlKCkuaXNOdWxsT3JVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgaXQgPSBtdWx0 aXBseVdyYXBwZWRRT2JqZWN0cy0+ZXJhc2UoaXQpOworICAgICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgICAgICAgKytpdDsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2Rl bHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3Fx bWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXggMjA3OWE4ZWQwNC4uYTU3N2NiMjM1MSAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAK KysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAK K0BAIC0zODksNiArMzg5LDEyIEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpjb25u ZWN0VG9BYnN0cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1s RGVsZWdhdGVNb2RlbCwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkp OworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFM KHJvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVS ZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0KGFp bSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4 LGludCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWws IFNMT1QoX3FfY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFt bG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc1Jl bW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBR UW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQs aW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwg U0lHTkFMKGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkp LAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9j b2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7CisgICAg IHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoZGF0YUNo YW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAg ICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2RhdGFDaGFuZ2VkKFFN b2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgcW1sb2JqZWN0X2Nv bm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5k ZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwKK0BAIC00MTMsNiArNDE5LDEyIEBAIHZvaWQg UVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpkaXNjb25uZWN0RnJvbUFic3RyYWN0SXRlbU1vZGVs KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVSZW1v dmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWlt LCBTSUdOQUwocm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAgICAg ICAgICAgICAgICAgIHEsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkp KTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zSW5zZXJ0ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1Qo X3FfY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6 OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGlu dCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc1JlbW92ZWQo UU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJ R05BTChjb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwg cSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9kZWxJ bmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVj dChhaW0sIFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9y PGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX2RhdGFDaGFuZ2Vk KFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgUU9iamVjdDo6 ZGlzY29ubmVjdChhaW0sIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9k ZWxJbmRleCxpbnQpKSwKK0BAIC0xOTczLDYgKzE5ODUsMzggQEAgdm9pZCBRUW1sRGVsZWdhdGVN b2RlbDo6X3Ffcm93c01vdmVkKAorICAgICB9CisgfQorIAorK3ZvaWQgUVFtbERlbGVnYXRlTW9k ZWw6Ol9xX2NvbHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVn aW4sIGludCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VO VVNFRChlbmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRl eCAmJiBiZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2Vk CisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkp OworKyAgICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNSZW1v dmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7Cisr ICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAgIGlm IChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDApIHsK KysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1z Q2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisr dm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc01vdmVkKGNvbnN0IFFNb2RlbEluZGV4 ICZwYXJlbnQsIGludCBzdGFydCwgaW50IGVuZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggJmRlc3RpbmF0aW9uLCBpbnQgY29sdW1u KQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5kKTsK KysgICAgaWYgKChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIHN0YXJ0 ID09IDApCisrICAgICAgICB8fCAoZGVzdGluYXRpb24gPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9v dEluZGV4ICYmIGNvbHVtbiA9PSAwKSkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMgYXMg Y2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0b3I8 aW50PigpKTsKKysgICAgfQorK30KKysKKyB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9kYXRh Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmYmVnaW4sIGNvbnN0IFFNb2RlbEluZGV4ICZlbmQs IGNvbnN0IFFWZWN0b3I8aW50PiAmcm9sZXMpCisgeworICAgICBRX0QoUVFtbERlbGVnYXRlTW9k ZWwpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdh dGVtb2RlbF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRlbW9k ZWxfcC5oCitpbmRleCA4YWFiNGJhZGNhLi5kMTQwYmZiYWFmIDEwMDY0NAorLS0tIGEvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorKysrIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorQEAgLTE1Miw2ICsx NTIsOSBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgX3FfaXRlbXNNb3ZlZChpbnQgZnJv bSwgaW50IHRvLCBpbnQgY291bnQpOworICAgICB2b2lkIF9xX21vZGVsUmVzZXQoKTsKKyAgICAg dm9pZCBfcV9yb3dzSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJixpbnQsaW50KTsKKysgICAg dm9pZCBfcV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQpOwor KyAgICB2b2lkIF9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwgaW50 KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBp bnQsIGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCk7CisgICAgIHZvaWQgX3Ffcm93c0Fib3V0VG9C ZVJlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKTsK KyAgICAgdm9pZCBfcV9yb3dzUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQpOwor ICAgICB2b2lkIF9xX3Jvd3NNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwgY29u c3QgUU1vZGVsSW5kZXggJiwgaW50KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9x dWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitpbmRleCA4NTcx OWZkYzgwLi43OGUyYWIzMDJjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv YWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitAQCAtNDYsNiAr NDYsNyBAQAorICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1aWNrdGV4dGlucHV0X3AuaCIK KyAjaW5jbHVkZSAiUXRRdWljay9wcml2YXRlL3FxdWlja2FjY2Vzc2libGVhdHRhY2hlZF9wLmgi CisgI2luY2x1ZGUgIlF0UXVpY2svcXF1aWNrdGV4dGRvY3VtZW50LmgiCisrI2luY2x1ZGUgIlF0 UXVpY2svcXF1aWNrcmVuZGVyY29udHJvbC5oIgorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorICNp ZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKK0BAIC01Nyw3ICs1OCwxOSBAQCBRQWNjZXNzaWJs ZVF1aWNrSXRlbTo6UUFjY2Vzc2libGVRdWlja0l0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAKKyBR V2luZG93ICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6d2luZG93KCkgY29uc3QKKyB7CistICAgIHJl dHVybiBpdGVtKCktPndpbmRvdygpOworKyAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0ZW0o KS0+d2luZG93KCk7CisrCisrICAgIC8vIEZvciBRUXVpY2tXaWRnZXQgdGhlIGFib3ZlIHdpbmRv dyB3aWxsIGJlIHRoZSBvZmZzY3JlZW4gUVF1aWNrV2luZG93LAorKyAgICAvLyB3aGljaCBpcyBu b3QgYSBwYXJ0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIERldGVjdCB0aGlzIGNhc2UgYW5k CisrICAgIC8vIHJldHVybiB0aGUgd2luZG93IGZvciB0aGUgUVF1aWNrV2lkZ2V0IGluc3RlYWQu CisrICAgIGlmICh3aW5kb3cgJiYgIXdpbmRvdy0+aGFuZGxlKCkpIHsKKysgICAgICAgIGlmIChR UXVpY2tSZW5kZXJDb250cm9sICpyZW5kZXJDb250cm9sID0gUVF1aWNrV2luZG93UHJpdmF0ZTo6 Z2V0KHdpbmRvdyktPnJlbmRlckNvbnRyb2wpIHsKKysgICAgICAgICAgICBpZiAoUVdpbmRvdyAq cmVuZGVyV2luZG93ID0gcmVuZGVyQ29udHJvbC0+cmVuZGVyV2luZG93KG51bGxwdHIpKQorKyAg ICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyV2luZG93OworKyAgICAgICAgfQorKyAgICB9Cisr CisrICAgIHJldHVybiB3aW5kb3c7CisgfQorIAorIGludCBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6 Y2hpbGRDb3VudCgpIGNvbnN0CitAQCAtMTEzLDE5ICsxMjYsMTUgQEAgUUFjY2Vzc2libGVJbnRl cmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29uc3QK KyBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OnBhcmVudCgpIGNv bnN0CisgeworICAgICBRUXVpY2tJdGVtICpwYXJlbnQgPSBpdGVtKCktPnBhcmVudEl0ZW0oKTsK Ky0gICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworLSAgICBRUXVp Y2tJdGVtICpjaSA9IHdpbmRvdyA/IHdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7Cisr ICAgIFFRdWlja1dpbmRvdyAqaXRlbVdpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CisrICAgIFFR dWlja0l0ZW0gKmNpID0gaXRlbVdpbmRvdyA/IGl0ZW1XaW5kb3ctPmNvbnRlbnRJdGVtKCkgOiBu dWxscHRyOworICAgICB3aGlsZSAocGFyZW50ICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KHBh cmVudCktPmlzQWNjZXNzaWJsZSAmJiBwYXJlbnQgIT0gY2kpCisgICAgICAgICBwYXJlbnQgPSBw YXJlbnQtPnBhcmVudEl0ZW0oKTsKKyAKKyAgICAgaWYgKHBhcmVudCkgeworICAgICAgICAgaWYg KHBhcmVudCA9PSBjaSkgeworLSAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRoZSBzY2VuZSB3 aWRnZXQgaWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtLgorLSAgICAgICAgICAgIC8vIFRo ZXJlIGFyZSB0d28gcm9vdCBpdGVtcywgUVF1aWNrV2luZG93Ojpyb290SXRlbSBhbmQKKy0gICAg ICAgICAgICAvLyBRUXVpY2tWaWV3OjpkZWNsYXJhdGl2ZVJvb3QuIFRoZSBmb3JtZXIgaXMgdGhl IHRydWUgcm9vdCBpdGVtLAorLSAgICAgICAgICAgIC8vIGJ1dCBpcyBub3QgYSBwYXJ0IG9mIHRo ZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIENoZWNrIGlmIHdlIGhpdAorLSAgICAgICAgICAgIC8vIGl0 IGhlcmUgYW5kIHJldHVybiBhbiBpbnRlcmZhY2UgZm9yIHRoZSBzY2VuZSBpbnN0ZWFkLgorLSAg ICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKHdp bmRvdyk7CisrICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHdpbmRvdyBpZiB0aGUgcGFy ZW50IGlzIHRoZSByb290IGl0ZW0KKysgICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1 ZXJ5QWNjZXNzaWJsZUludGVyZmFjZSh3aW5kb3coKSk7CisgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC0+ZF9mdW5jKCktPmlzQWNjZXNzaWJs ZSkKKyAgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CitAQCAt MTg4LDcgKzE5Nyw3IEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6 c3RhdGUoKSBjb25zdAorICAgICBRUmVjdCB2aWV3UmVjdF8gPSB2aWV3UmVjdCgpOworICAgICBR UmVjdCBpdGVtUmVjdCA9IHJlY3QoKTsKKyAKKy0gICAgaWYgKHZpZXdSZWN0Xy5pc051bGwoKSB8 fCBpdGVtUmVjdC5pc051bGwoKSB8fCAhaXRlbSgpLT53aW5kb3coKSB8fCAhaXRlbSgpLT53aW5k b3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051bGwo aXRlbSgpLT5vcGFjaXR5KCkpKQorKyAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0ZW1S ZWN0LmlzTnVsbCgpIHx8ICF3aW5kb3coKSB8fCAhd2luZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0 ZW0oKS0+aXNWaXNpYmxlKCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkKKyAg ICAgICAgIHN0YXRlLmludmlzaWJsZSA9IHRydWU7CisgICAgIGlmICghdmlld1JlY3RfLmludGVy c2VjdHMoaXRlbVJlY3QpKQorICAgICAgICAgc3RhdGUub2Zmc2NyZWVuID0gdHJ1ZTsKK0BAIC0y MDEsNiArMjEwLDEwIEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRlbTo6 c3RhdGUoKSBjb25zdAorICAgICBpZiAocm9sZSgpID09IFFBY2Nlc3NpYmxlOjpFZGl0YWJsZVRl eHQpCisgICAgICAgICBpZiAoYXV0byB0aSA9IHFvYmplY3RfY2FzdDxRUXVpY2tUZXh0SW5wdXQg Kj4oaXRlbSgpKSkKKyAgICAgICAgICAgICBzdGF0ZS5wYXNzd29yZEVkaXQgPSB0aS0+ZWNob01v ZGUoKSAhPSBRUXVpY2tUZXh0SW5wdXQ6Ok5vcm1hbDsKKysgICAgaWYgKCFpdGVtKCktPmlzRW5h YmxlZCgpKSB7CisrICAgICAgICBzdGF0ZS5mb2N1c2FibGUgPSBmYWxzZTsKKysgICAgICAgIHN0 YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgfQorICAgICByZXR1cm4gc3RhdGU7CisgfQorIAor ZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2li bGVxdWlja3ZpZXdfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNj ZXNzaWJsZXF1aWNrdmlld19wLmgKK2luZGV4IDM5ZmZjYWYzOWMuLjhiYWEwMTMzMGMgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVp Y2t2aWV3X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNj ZXNzaWJsZXF1aWNrdmlld19wLmgKK0BAIC01OCw3ICs1OCw3IEBAIFFUX0JFR0lOX05BTUVTUEFD RQorIAorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKyAKKy1jbGFzcyBRQWNjZXNzaWJs ZVF1aWNrV2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisrY2xhc3MgUV9RVUlDS19F WFBPUlQgUUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVjdAor IHsKKyBwdWJsaWM6CisgICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3coUVF1aWNrV2luZG93ICpv YmplY3QpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a2RyYWcuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAK K2luZGV4IDgzMjFmY2ZlZWQuLjM4MzA3OGIzYjkgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKK0BAIC00ODEsNyArNDgxLDkgQEAgdm9pZCBRUXVp Y2tEcmFnQXR0YWNoZWQ6OnNldEtleXMoY29uc3QgUVN0cmluZ0xpc3QgJmtleXMpCisgICAgIFxx bWxhdHRhY2hlZHByb3BlcnR5IHN0cmluZ2xpc3QgUXRRdWljazo6RHJhZzo6bWltZURhdGEKKyAg ICAgXHNpbmNlIDUuMgorIAorLSAgICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFwIG9mIG1pbWVE YXRhIHRoYXQgaXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGlzIHByb3BlcnR5IGhv bGRzIGEgbWFwIGZyb20gbWltZSB0eXBlIHRvIGRhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBzdGFy dERyYWcuCisrICAgIFRoZSBtaW1lIGRhdGEgbmVlZHMgdG8gYmUgYSBcYyBzdHJpbmcsIG9yIGFu IFxjIEFycmF5QnVmZmVyIHdpdGggdGhlIGRhdGEgZW5jb2RlZAorKyAgICBhY2NvcmRpbmcgdG8g dGhlIG1pbWUgdHlwZS4KKyAqLworIAorIFFWYXJpYW50TWFwIFFRdWlja0RyYWdBdHRhY2hlZDo6 bWltZURhdGEoKSBjb25zdAorQEAgLTc2Niw4ICs3NjgsMTIgQEAgUXQ6OkRyb3BBY3Rpb24gUVF1 aWNrRHJhZ0F0dGFjaGVkUHJpdmF0ZTo6c3RhcnREcmFnKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0 ZWRBY3QKKyAgICAgUURyYWcgKmRyYWcgPSBuZXcgUURyYWcoc291cmNlID8gc291cmNlIDogcSk7 CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEgPSBuZXcgUU1pbWVEYXRhKCk7CisgCistICAgIGZv ciAoYXV0byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4dGVybmFsTWlt ZURhdGEuY2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCistICAgICAgICBtaW1lRGF0YS0+c2V0RGF0 YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgZm9yIChh dXRvIGl0ID0gZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1lRGF0 YS5jZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PFFN ZXRhVHlwZTo6VHlwZT4oaXQudmFsdWUoKS50eXBlKCkpID09IFFNZXRhVHlwZTo6UUJ5dGVBcnJh eSkKKysgICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50 b0J5dGVBcnJheSgpKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBtaW1lRGF0YS0+c2V0 RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgfQor IAorICAgICBkcmFnLT5zZXRNaW1lRGF0YShtaW1lRGF0YSk7CisgICAgIGlmIChwaXhtYXBMb2Fk ZXIuaXNSZWFkeSgpKSB7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRl bXMvcXF1aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tp dGVtLmNwcAoraW5kZXggNzVmMTQ1NzgxNi4uZGVjMGFlMTlhZSAxMDA2NDQKKy0tLSBhL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAorQEAgLTU5LDYgKzU5LDcgQEAKKyAj aW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcW51bWVyaWNfcC5oPgorICNpbmNsdWRlIDxRdEd1aS9x cGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnku aD4KKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWR1cGxpY2F0ZXRyYWNrZXJfcC5oPgorIAor ICNpbmNsdWRlIDxwcml2YXRlL3FxbWxnbG9iYWxfcC5oPgorICNpbmNsdWRlIDxwcml2YXRlL3Fx bWxlbmdpbmVfcC5oPgorQEAgLTIzMjYsNiArMjMyNyw3IEBAIFFRdWlja0l0ZW06OlFRdWlja0l0 ZW0oUVF1aWNrSXRlbVByaXZhdGUgJmRkLCBRUXVpY2tJdGVtICpwYXJlbnQpCisgUVF1aWNrSXRl bTo6flFRdWlja0l0ZW0oKQorIHsKKyAgICAgUV9EKFFRdWlja0l0ZW0pOworKyAgICBkLT5pbkRl c3RydWN0b3IgPSB0cnVlOworIAorICAgICBpZiAoZC0+d2luZG93UmVmQ291bnQgPiAxKQorICAg ICAgICAgZC0+d2luZG93UmVmQ291bnQgPSAxOyAvLyBNYWtlIHN1cmUgd2luZG93IGlzIHNldCB0 byBudWxsIGluIG5leHQgY2FsbCB0byBkZXJlZldpbmRvdygpLgorQEAgLTI1MjYsNiArMjUyOCw3 IEBAIFFRdWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZvY3Vz Q2hhaW4oUVF1aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgIFFRdWlja0l0ZW0gKmN1cnJlbnQgPSBp dGVtOworICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0 UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IHN0YXJ0SXRlbToiIDw8IHN0YXJ0SXRlbTsKKyAgICAg cUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5U YWJGb2N1c0NoYWluOiBmaXJzdEZyb21JdGVtOiIgPDwgZmlyc3RGcm9tSXRlbTsKKysgICAgUUR1 cGxpY2F0ZVRyYWNrZXI8UVF1aWNrSXRlbSAqPiBjeWNsZURldGVjdG9yOworICAgICBkbyB7Cisg ICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJl dkl0ZW1JblRhYkZvY3VzQ2hhaW46IGN1cnJlbnQ6IiA8PCBjdXJyZW50OworICAgICAgICAgcUNE ZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJG b2N1c0NoYWluOiBmcm9tOiIgPDwgZnJvbTsKK0BAIC0yNTkyLDcgKzI1OTUsMTAgQEAgUVF1aWNr SXRlbSogUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihRUXVp Y2tJdGVtICppdGVtLCBib28KKyAgICAgICAgIC8vIHRyYXZlcnNlZCBhbGwgb2YgdGhlIGNoYWlu IChieSBjb21wYXJlIHRoZSBbY3VycmVudF0gaXRlbSB3aXRoIFtzdGFydEl0ZW1dKQorICAgICAg ICAgLy8gU2luY2UgdGhlIFtzdGFydEl0ZW1dIG1pZ2h0IGJlIHByb21vdGVkIHRvIGl0cyBwYXJl bnQgaWYgaXQgaXMgaW52aXNpYmxlLAorICAgICAgICAgLy8gd2Ugc3RpbGwgaGF2ZSB0byBjaGVj ayBbY3VycmVudF0gaXRlbSB3aXRoIG9yaWdpbmFsIHN0YXJ0IGl0ZW0KKy0gICAgICAgIGlmICgo Y3VycmVudCA9PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYg ZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB7CisrICAgICAgICAvLyBXZSBtaWdodCBhbHNvIHJ1biBp bnRvIGEgY3ljbGUgYmVmb3JlIHdlIHJlYWNoIGZpcnN0RnJvbUl0ZW0gYWdhaW4KKysgICAgICAg IC8vIGJ1dCBub3RlIHRoYXQgd2UgaGF2ZSB0byBpZ25vcmUgY3VycmVudCBpZiB3ZSBhcmUgbWVh bnQgdG8gc2tpcCBpdAorKyAgICAgICAgaWYgKCgoY3VycmVudCA9PSBzdGFydEl0ZW0gfHwgY3Vy cmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB8fAor KyAgICAgICAgICAgICAgICAoIXNraXAgJiYgY3ljbGVEZXRlY3Rvci5oYXNTZWVuKGN1cnJlbnQp KSkgeworICAgICAgICAgICAgIC8vIHdyYXBwZWQgYXJvdW5kLCBhdm9pZCBlbmRsZXNzIGxvb3Bz CisgICAgICAgICAgICAgaWYgKGl0ZW0gPT0gY29udGVudEl0ZW0pIHsKKyAgICAgICAgICAgICAg ICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVt SW5UYWJGb2N1c0NoYWluOiBsb29wZWQsIHJldHVybiBjb250ZW50SXRlbSI7CitAQCAtMjY4OSw5 ICsyNjk1LDggQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0gKnBh cmVudEl0ZW0pCisgCisgICAgICAgICBjb25zdCBib29sIHdhc1Zpc2libGUgPSBpc1Zpc2libGUo KTsKKyAgICAgICAgIG9wLT5yZW1vdmVDaGlsZCh0aGlzKTsKKy0gICAgICAgIGlmICh3YXNWaXNp YmxlKSB7CisrICAgICAgICBpZiAod2FzVmlzaWJsZSAmJiAhb3AtPmluRGVzdHJ1Y3RvcikKKyAg ICAgICAgICAgICBlbWl0IG9sZFBhcmVudEl0ZW0tPnZpc2libGVDaGlsZHJlbkNoYW5nZWQoKTsK Ky0gICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChkLT53aW5kb3cpIHsKKyAgICAgICAgIFFRdWlj a1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5wYXJlbnRsZXNzSXRlbXMucmVtb3ZlKHRo aXMpOworICAgICB9CitAQCAtMjc2OCw4ICsyNzczLDkgQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQ YXJlbnRJdGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0pCisgCisgICAgIGQtPml0ZW1DaGFuZ2Uo SXRlbVBhcmVudEhhc0NoYW5nZWQsIGQtPnBhcmVudEl0ZW0pOworIAorLSAgICBlbWl0IHBhcmVu dENoYW5nZWQoZC0+cGFyZW50SXRlbSk7CistICAgIGlmIChpc1Zpc2libGUoKSAmJiBkLT5wYXJl bnRJdGVtKQorKyAgICBpZiAoIWQtPmluRGVzdHJ1Y3RvcikKKysgICAgICAgIGVtaXQgcGFyZW50 Q2hhbmdlZChkLT5wYXJlbnRJdGVtKTsKKysgICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBhcmVu dEl0ZW0gJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQoZC0+cGFyZW50SXRlbSktPmluRGVzdHJ1 Y3RvcikKKyAgICAgICAgIGVtaXQgZC0+cGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdl ZCgpOworIH0KKyAKK0BAIC0yOTY1LDcgKzI5NzEsOCBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRl OjpyZW1vdmVDaGlsZChRUXVpY2tJdGVtICpjaGlsZCkKKyAKKyAgICAgaXRlbUNoYW5nZShRUXVp Y2tJdGVtOjpJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlLCBjaGlsZCk7CisgCistICAgIGVtaXQgcS0+ Y2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVjdG9yKQorKyAgICAgICAgZW1p dCBxLT5jaGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCisgdm9pZCBRUXVpY2tJdGVtUHJpdmF0ZTo6 cmVmV2luZG93KFFRdWlja1dpbmRvdyAqYykKK0BAIC0zMTk0LDYgKzMyMDEsNyBAQCBRUXVpY2tJ dGVtUHJpdmF0ZTo6UVF1aWNrSXRlbVByaXZhdGUoKQorICAgICAsIHRvdWNoRW5hYmxlZChmYWxz ZSkKKyAjZW5kaWYKKyAgICAgLCBoYXNDdXJzb3JIYW5kbGVyKGZhbHNlKQorKyAgICAsIGluRGVz dHJ1Y3RvcihmYWxzZSkKKyAgICAgLCBkaXJ0eUF0dHJpYnV0ZXMoMCkKKyAgICAgLCBuZXh0RGly dHlJdGVtKG51bGxwdHIpCisgICAgICwgcHJldkRpcnR5SXRlbShudWxscHRyKQorQEAgLTUxMjAs NiArNTEyOCwxMyBAQCB2b2lkIFFRdWlja0l0ZW06OmNvbXBvbmVudENvbXBsZXRlKCkKKyAgICAg ICAgIGQtPmFkZFRvRGlydHlMaXN0KCk7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpn ZXQoZC0+d2luZG93KS0+ZGlydHlJdGVtKHRoaXMpOworICAgICB9CisrCisrI2lmIFFUX0NPTkZJ RyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoZC0+aXNBY2Nlc3NpYmxlICYmIGQtPmVmZmVjdGl2 ZVZpc2libGUpIHsKKysgICAgICAgIFFBY2Nlc3NpYmxlRXZlbnQgZXYodGhpcywgUUFjY2Vzc2li bGU6Ok9iamVjdFNob3cpOworKyAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2liaWxp dHkoJmV2KTsKKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBRUXVpY2tTdGF0ZUdyb3VwICpRUXVp Y2tJdGVtUHJpdmF0ZTo6X3N0YXRlcygpCitAQCAtNjEwNiw5ICs2MTIxLDExIEBAIGJvb2wgUVF1 aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2ZVZpc2libGVSZWN1cihib29sIG5ld0VmZmVjdGl2 ZVZpc2libGUpCisgICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgmZXYp OworICAgICB9CisgI2VuZGlmCistICAgIGVtaXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsKKy0gICAg aWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCistICAgICAgICBlbWl0IHEtPnZpc2libGVDaGls ZHJlbkNoYW5nZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3IpIHsKKysgICAgICAgIGVtaXQg cS0+dmlzaWJsZUNoYW5nZWQoKTsKKysgICAgICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2Vk KQorKyAgICAgICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICB9 CisgCisgICAgIHJldHVybiB0cnVlOyAgICAvLyBlZmZlY3RpdmUgdmlzaWJpbGl0eSBESUQgY2hh bmdlCisgfQorQEAgLTYxNTcsNiArNjE3NCwxNSBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRlOjpz ZXRFZmZlY3RpdmVFbmFibGVSZWN1cihRUXVpY2tJdGVtICpzY29wZSwgYm9vbCBuZXdFZmZlYwor ICAgICB9CisgCisgICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUVuYWJsZWRIYXNDaGFu Z2VkLCBlZmZlY3RpdmVFbmFibGUpOworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysg ICAgaWYgKGlzQWNjZXNzaWJsZSkgeworKyAgICAgICAgUUFjY2Vzc2libGU6OlN0YXRlIGNoYW5n ZWRTdGF0ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgICAg ICBjaGFuZ2VkU3RhdGUuZm9jdXNhYmxlID0gdHJ1ZTsKKysgICAgICAgIFFBY2Nlc3NpYmxlU3Rh dGVDaGFuZ2VFdmVudCBldihxLCBjaGFuZ2VkU3RhdGUpOworKyAgICAgICAgUUFjY2Vzc2libGU6 OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKysgICAgfQorKyNlbmRpZgorICAgICBlbWl0IHEt PmVuYWJsZWRDaGFuZ2VkKCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRl bXMvcXF1aWNraXRlbV9wLmgKK2luZGV4IDg0MWQ5MWJiNDAuLmFkZThmYjYxZjIgMTAwNjQ0Cist LS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorKysrIGIv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKK0BAIC00NzIsNiAr NDcyLDcgQEAgcHVibGljOgorICAgICBib29sIHJlcGxheWluZ1ByZXNzRXZlbnQ6MTsKKyAgICAg Ym9vbCB0b3VjaEVuYWJsZWQ6MTsKKyAgICAgYm9vbCBoYXNDdXJzb3JIYW5kbGVyOjE7CisrICAg IHF1aW50MzIgaW5EZXN0cnVjdG9yOjE7IC8vIGhhcyBlbnRlcmVkIH5RUXVpY2tJdGVtCisgCisg ICAgIGVudW0gRGlydHlUeXBlIHsKKyAgICAgICAgIFRyYW5zZm9ybU9yaWdpbiAgICAgICAgID0g MHgwMDAwMDAwMSwKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9x cXVpY2tpdGVtdmlldy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tp dGVtdmlldy5jcHAKK2luZGV4IDAxMGEwMTUyZTEuLmY4YWQxNjhhMTcgMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKKysrKyBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorQEAgLTE3ODUs NyArMTc4NSw3IEBAIHZvaWQgUVF1aWNrSXRlbVZpZXdQcml2YXRlOjpyZWZpbGwocXJlYWwgZnJv bSwgcXJlYWwgdG8pCisgCisgICAgIGRvIHsKKyAgICAgICAgIGJ1ZmZlclBhdXNlLnN0b3AoKTsK Ky0gICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1ZmZl cmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7CisrICAgICAgICBpZiAoY3VycmVudENo YW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGluZ0No YW5nZXMoKSB8fCBjdXJyZW50Q2hhbmdlcy5hY3RpdmUpIHsKKyAgICAgICAgICAgICBjdXJyZW50 Q2hhbmdlcy5yZXNldCgpOworICAgICAgICAgICAgIGJ1ZmZlcmVkQ2hhbmdlcy5yZXNldCgpOwor ICAgICAgICAgICAgIHJlbGVhc2VWaXNpYmxlSXRlbXMocmV1c2FibGVGbGFnKTsKK2RpZmYgLS1n aXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKK2lu ZGV4IGZiYTM4M2UyNjguLjBkNjM2MTg2MjIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAorQEAgLTYxLDcgKzYxLDYgQEAg UVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUVF1aWNrTW91c2VFdmVudDsKKyBjbGFzcyBR UXVpY2tNb3VzZUFyZWE7CistY2xhc3MgUVF1aWNrUG9pbnRlck1hc2s7CisgY2xhc3MgUVF1aWNr TW91c2VBcmVhUHJpdmF0ZSA6IHB1YmxpYyBRUXVpY2tJdGVtUHJpdmF0ZQorIHsKKyAgICAgUV9E RUNMQVJFX1BVQkxJQyhRUXVpY2tNb3VzZUFyZWEpCitAQCAtMTAwLDcgKzk5LDYgQEAgcHVibGlj OgorICNpZiBRVF9DT05GSUcocXVpY2tfZHJhZ2FuZGRyb3ApCisgICAgIFFRdWlja0RyYWcgKmRy YWc7CisgI2VuZGlmCistICAgIFFQb2ludGVyPFFRdWlja1BvaW50ZXJNYXNrPiBtYXNrOworICAg ICBRUG9pbnRGIHN0YXJ0U2NlbmU7CisgICAgIFFQb2ludEYgdGFyZ2V0U3RhcnRQb3M7CisgICAg IFFQb2ludEYgbGFzdFBvczsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9p dGVtcy9xcXVpY2t0ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlj a3RleHQuY3BwCitpbmRleCA2MjMwMTg2OTMzLi5lODIzY2ExMDk1IDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCitAQCAtMjE2OCw3ICsyMTY4LDcg QEAgdm9pZCBRUXVpY2tUZXh0OjpyZXNldE1heGltdW1MaW5lQ291bnQoKQorICAgICA8aW1nIHNy Yz0iIiBhbGlnbj0idG9wLG1pZGRsZSxib3R0b20iIHdpZHRoPSIiIGhlaWdodD0iIj4gLSBpbmxp bmUgaW1hZ2VzCisgICAgIDxvbCB0eXBlPSIiPiwgPHVsIHR5cGU9IiI+IGFuZCA8bGk+IC0gb3Jk ZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3RzCisgICAgIDxwcmU+PC9wcmU+IC0gcHJlZm9ybWF0dGVk CistICAgICZndDsgJmx0OyAmYW1wOworKyAgICAmZ3Q7ICZsdDsgJmFtcDsgJnF1b3Q7ICZuYnNw OyAmYXBvczsKKyAgICAgXGVuZGNvZGUKKyAKKyAgICAgXGMgVGV4dC5TdHlsZWRUZXh0IHBhcnNl ciBpcyBzdHJpY3QsIHJlcXVpcmluZyB0YWdzIHRvIGJlIGNvcnJlY3RseSBuZXN0ZWQuCitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5j ZWZpZWxkZ2x5cGhjYWNoZS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdyYXBo L3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAoraW5kZXggZWI0ZGIwZjg1ZS4uMjMy NWEyNjY1YiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgv cXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAorQEAg LTQ0Niw3ICs0NDYsNyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2Fk UHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25z dCBjaGFyICp0ZXh0dXJlUmVjb3JkID0gYWxsb2NhdG9yRGF0YTsKKyAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgdGV4dHVyZUNvdW50OyArK2ksIHRleHR1cmVSZWNvcmQgKz0gUXRkZjo6VGV4 dHVyZVJlY29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAodGV4dHVyZVJlY29yZCArIFF0ZGY6 OlRleHR1cmVSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgaWYgKHF0 ZGZUYWJsZUVuZCAtIHRleHR1cmVSZWNvcmQgPCBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkgewor ICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9udCAn JXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1pbHlO YW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ2Miw3ICs0NjIs NyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJhdGVk Q2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFyICpnbHlw aFJlY29yZCA9IHRleHR1cmVSZWNvcmQ7CisgICAgICAgICBmb3IgKHF1aW50MzIgaSA9IDA7IGkg PCBnbHlwaENvdW50OyArK2ksIGdseXBoUmVjb3JkICs9IFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSkg eworLSAgICAgICAgICAgIGlmIChnbHlwaFJlY29yZCArIFF0ZGY6OkdseXBoUmVjb3JkU2l6ZSA+ IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSBnbHlwaFJl Y29yZCA8IFF0ZGY6OiBHbHlwaFJlY29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5p bmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKK0BAIC01MTIsOCArNTEyLDggQEAgYm9vbCBRU0dSaGlEaXN0YW5j ZUZpZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZm b250KQorIAorICAgICAgICAgICAgIGludCB3aWR0aCA9IHRleEluZm8tPmFsbG9jYXRlZEFyZWEu d2lkdGgoKTsKKyAgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gdGV4SW5mby0+YWxsb2NhdGVkQXJl YS5oZWlnaHQoKTsKKy0gICAgICAgICAgICBxaW50NjQgc2l6ZSA9IHdpZHRoICogaGVpZ2h0Owor LSAgICAgICAgICAgIGlmIChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVyZURh dGEgKyBzaXplKSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIHFpbnQ2NCBzaXplID0g cWludDY0KHdpZHRoKSAqIGhlaWdodDsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5kIC0g cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRleHR1cmVEYXRhKSA8IHNpemUpIHsKKyAg ICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVz Jy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFt ZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwIGIvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAoraW5kZXggZDUzMWZjOTIw NS4uYTI1YWY5MDQxNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwv cXF1aWNrc3R5bGVkdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwv cXF1aWNrc3R5bGVkdGV4dC5jcHAKK0BAIC01NjQsNiArNTY0LDggQEAgdm9pZCBRUXVpY2tTdHls ZWRUZXh0UHJpdmF0ZTo6cGFyc2VFbnRpdHkoY29uc3QgUUNoYXIgKiZjaCwgY29uc3QgUVN0cmlu ZyAmdGV4dEkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcig2MCk7CisgICAgICAg ICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoImFtcCIpKQorICAgICAgICAg ICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM4KTsKKysgICAgICAgICAgICBlbHNlIGlmIChlbnRp dHkgPT0gUUxhdGluMVN0cmluZygiYXBvcyIpKQorKyAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9 IFFDaGFyKDM5KTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmlu ZygicXVvdCIpKQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM0KTsKKyAgICAg ICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygibmJzcCIpKQorZGlmZiAt LWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lk Z2V0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNr d2lkZ2V0LmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhhMWM5 MDE4ODAKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0 cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcAorQEAgLTAsMCArMSwxMTAgQEAKKysvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xr aXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGlj ZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGlj ZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1l cmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBv ciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQg aW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFu eS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3 dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVz ZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioK KysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5h dGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRo ZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiog ZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJl cXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3Ig KGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJz aW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiog UXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5T RS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24g dG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2ls bAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwg YW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioK KysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNp bmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKysjaW5jbHVkZSAicXF1aWNr d2lkZ2V0X3AuaCIKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklHKGFj Y2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdldDo6UUFjY2Vzc2libGVRdWlj a1dpZGdldChRUXVpY2tXaWRnZXQqIHdpZGdldCkKKys6IFFBY2Nlc3NpYmxlV2lkZ2V0KHdpZGdl dCkKKyssIG1fYWNjZXNzaWJsZVdpbmRvdyhRUXVpY2tXaWRnZXRQcml2YXRlOjpnZXQod2lkZ2V0 KS0+b2Zmc2NyZWVuV2luZG93KQorK3sKKysgICAgLy8gTk9URTogbV9hY2Nlc3NpYmxlV2luZG93 IGlzIGEgUUFjY2Vzc2libGVRdWlja1dpbmRvdywgYW5kIG5vdCBhCisrICAgIC8vIFFBY2Nlc3Np YmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgKGRlZmluZWQgYmVsb3cpLiBUaGlzIG1lYW5z CisrICAgIC8vIGl0IHdpbGwgcmV0dXJuIHRoZSBRdWljayBpdGVtIGNoaWxkIGludGVyZmFjZXMs IHdoaWNoIGlzIHdoYXQncyBuZWVkZWQgaGVyZQorKyAgICAvLyAodW5saWtlIFFBY2Nlc3NpYmxl UXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3csIHdoaWNoIHdpbGwgcmVwb3J0IDAgY2hpbGRyZW4p LgorK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldDo6 Y2hpbGQoaW50IGluZGV4KSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRv dy5jaGlsZChpbmRleCk7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGls ZENvdW50KCkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hpbGRD b3VudCgpOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldDo6aW5kZXhPZkNoaWxk KGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIHJldHVy biBtX2FjY2Vzc2libGVXaW5kb3cuaW5kZXhPZkNoaWxkKGlmYWNlKTsKKyt9CisrCisrUUFjY2Vz c2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQXQoaW50IHgsIGlu dCB5KSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZEF0KHgs IHkpOworK30KKysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRQWNj ZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93KQor KzpRQWNjZXNzaWJsZVF1aWNrV2luZG93KHdpbmRvdykKKyt7CisrCisrfQorKworK1FBY2Nlc3Np YmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGls ZChpbnQgaW5kZXgpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChpbmRleCk7CisrICAgIHJldHVy biBudWxscHRyOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvdzo6Y2hpbGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50 IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmluZGV4T2ZDaGlsZChjb25z dCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChp ZmFjZSk7CisrICAgIHJldHVybiAtMTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorK3sKKysgICAg UV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9 CisrCisrI2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3 aWRnZXRfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVp Y2t3aWRnZXRfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uN2My YWI5MzBlMAorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oCitAQCAtMCwwICsxLDk1IEBACisrLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFu eSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisr KiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29s a2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExp Y2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxp Y2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21t ZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUg b3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVk IGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBh bnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93 d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1 c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoq CisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJu YXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0 aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0 aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoq IGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBy ZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNh Z2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9y IChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVy c2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoq IFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VO U0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBv ZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9u IHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdp bGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1s IGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoq CisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysj aWZuZGVmIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVRVUlD S1dJREdFVF9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0tLS0t CisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4aXN0 cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRlciBm aWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5vdGlj ZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKworKyNp bmNsdWRlICJxcXVpY2t3aWRnZXQuaCIKKysjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY2Nlc3NpYmxl d2lkZ2V0Lmg+CisrCisrI2luY2x1ZGUgPHByaXZhdGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5o PgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0 eSkKKysKKysvLyBUaGVzZSBjbGFzc2VzIGltcGxlbWVudCB0aGUgUVF1aWNrV2lnZXQgYWNjZXNz aWJpbGl0eSBzd2l0Y2hhcm9vLAorKy8vIHdoZXJlIHRoZSBjaGlsZCBpdGVtcyBvZiB0aGUgUVF1 aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IGFyZSByZXBvcnRlZAorKy8vIGFzIGNoaWxkIGFjY2Vz c2libGUgaW50ZXJmYWNlcyBvZiB0aGUgUUFjY2Vzc2libGVRdWlja1dpZGdldC4KKytjbGFzcyBR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0OiBwdWJsaWMgUUFjY2Vzc2libGVXaWRnZXQKKyt7CisrcHVi bGljOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0KTsK KysKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qgb3Zl cnJpZGU7CisrICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGludCBp bmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBvdmVy cmlkZTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5KSBj b25zdCBvdmVycmlkZTsKKysKKytwcml2YXRlOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2luZG93 IG1fYWNjZXNzaWJsZVdpbmRvdzsKKysgICAgUV9ESVNBQkxFX0NPUFkoUUFjY2Vzc2libGVRdWlj a1dpZGdldCkKKyt9OworKworK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5X aW5kb3c6IHB1YmxpYyBRQWNjZXNzaWJsZVF1aWNrV2luZG93CisreworK3B1YmxpYzoKKysgICAg UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3cgKndpbmRv dyk7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0IG92 ZXJyaWRlOworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQg aW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3Qgb3Zl cnJpZGU7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZEF0KGludCB4LCBpbnQgeSkg Y29uc3Qgb3ZlcnJpZGU7CisrfTsKKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FU X0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNw cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdiYTg4YTE3NjkKKy0t LSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNz aWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKK0BAIC0wLDAgKzEsNjAgQEAKKysvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0 ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQu CisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5z ZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5z ZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNp YWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwg YWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4K KysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4g Rm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5x dC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0 aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysq KiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2 ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBm aWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMg ZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5z dXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVp cmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xn cGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQor KyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0 IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9u IDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQg Rm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5H UEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8g ZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAor KyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5k CisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysq KiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNs dWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgiCisrI2luY2x1ZGUgInFhY2Nl c3NpYmxlcXVpY2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBR VF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFjY2Vz c2libGVRdWlja1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2JqZWN0 ICpvYmplY3QpCisreworKyAgICBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlj a1dpZGdldCIpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQo cW9iamVjdF9jYXN0PFFRdWlja1dpZGdldCAqPihvYmplY3QpKTsKKysgICAgfSBlbHNlIGlmIChj bGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93Iikp IHsKKysgICAgICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvdyhxb2JqZWN0X2Nhc3Q8UVF1aWNrV2luZG93ICo+KG9iamVjdCkpOworKyAgICB9CisrICAg IHJldHVybiAwOworK30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VORF9O QU1FU1BBQ0UKKysKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhjNjNiMDlmODEKKy0tLSAvZGV2L251bGwKKysr KyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0 ZmFjdG9yeV9wLmgKK0BAIC0wLDAgKzEsNjYgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyoq CisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0 OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRf QkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoqIExp Y2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlz IGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3Jl ZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwg aW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0ZW4g YWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0 ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25k aXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3Jt IGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUg bWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2VuZXJh bCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuTEdQ TDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJl dmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoqIHdp bGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwuCisr KioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0aXZl bHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQorKyoq IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9uKSB0 aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxhdGVy IHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4gVGhl IGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3Vu ZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNFTlNF LkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNl IHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDogaHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJQ0VO U0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlIDxRdEd1aS9xYWNj ZXNzaWJsZS5oPgorKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAor KyNkZWZpbmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAorKworKy8vCisrLy8gIFcg QSBSIE4gSSBOIEcKKysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5v dCBwYXJ0IG9mIHRoZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVt ZW50YXRpb24gZGV0YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lv biB0bworKy8vIHZlcnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysv LworKy8vIFdlIG1lYW4gaXQuCisrLy8KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYg UVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKnFBY2Nl c3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNzbmFtZSwgUU9iamVj dCAqb2JqZWN0KTsKKysKKysjZW5kaWYKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlm CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdl dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAor aW5kZXggMzk3ODBmOGRlMy4uOWM5N2I0MzUxOCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorQEAgLTM5LDYgKzM5LDcgQEAKKyAKKyAj aW5jbHVkZSAicXF1aWNrd2lkZ2V0LmgiCisgI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisr I2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKyAKKyAjaW5jbHVk ZSAicHJpdmF0ZS9xcXVpY2t3aW5kb3dfcC5oIgorICNpbmNsdWRlICJwcml2YXRlL3FxdWlja2l0 ZW1fcC5oIgorQEAgLTc1LDkgKzc2LDE2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisr UVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3co UVF1aWNrV2luZG93UHJpdmF0ZSAmZGQsIFFRdWlja1JlbmRlckNvbnRyb2wgKmNvbnRyb2wpCisr OlFRdWlja1dpbmRvdyhkZCwgY29udHJvbCkKKyt7CisrICAgIHNldFRpdGxlKFFTdHJpbmc6OmZy b21MYXRpbjEoIk9mZnNjcmVlbiIpKTsKKysgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nOjpmcm9t TGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrfQorKworIC8vIG92ZXJyaWRlIHNl dFZpc2JsZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgb2Zmc2NyZWVuIHdpbmRvdyBiZWluZyBjcmVh dGVkCisgLy8gYnkgYmFzZSBjbGFzcy4KKy1jbGFzcyBRUXVpY2tPZmZjcmVlbldpbmRvd1ByaXZh dGU6IHB1YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZz Y3JlZW5XaW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisgcHVibGlj OgorICAgICB2b2lkIHNldFZpc2libGUoYm9vbCB2aXNpYmxlKSBvdmVycmlkZSB7CisgICAgICAg ICBRX1EoUVdpbmRvdyk7CitAQCAtMTA1LDkgKzExMyw4IEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJp dmF0ZTo6aW5pdChRUW1sRW5naW5lKiBlKQorICAgICBRX1EoUVF1aWNrV2lkZ2V0KTsKKyAKKyAg ICAgcmVuZGVyQ29udHJvbCA9IG5ldyBRUXVpY2tXaWRnZXRSZW5kZXJDb250cm9sKHEpOworLSAg ICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2luZG93KCpuZXcgUVF1aWNrT2ZmY3JlZW5X aW5kb3dQcml2YXRlKCkscmVuZGVyQ29udHJvbCk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0 VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikpOworLSAgICBvZmZzY3JlZW5X aW5kb3ctPnNldE9iamVjdE5hbWUoUVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVu V2luZG93IikpOworKyAgICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2lkZ2V0T2Zmc2Ny ZWVuV2luZG93KCpuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZSgpLCByZW5k ZXJDb250cm9sKTsKKysgICAgb2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4ocS0+c2NyZWVuKCkp OworICAgICAvLyBEbyBub3QgY2FsbCBjcmVhdGUoKSBvbiBvZmZzY3JlZW5XaW5kb3cuCisgCisg ICAgIC8vIENoZWNrIGlmIHRoZSBTb2Z0d2FyZSBBZGFwdGF0aW9uIGlzIGJlaW5nIHVzZWQKK0BA IC0xMzgsNiArMTQ1LDEwIEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5pdChRUW1sRW5n aW5lKiBlKQorICAgICBRV2lkZ2V0Ojpjb25uZWN0KG9mZnNjcmVlbldpbmRvdywgJlFRdWlja1dp bmRvdzo6Zm9jdXNPYmplY3RDaGFuZ2VkLCBxLCAmUVF1aWNrV2lkZ2V0Ojpwcm9wYWdhdGVGb2N1 c09iamVjdENoYW5nZWQpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJ R05BTChyZW5kZXJSZXF1ZXN0ZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisgICAg IFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHNjZW5lQ2hhbmdlZCgpKSwg cSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxp dHkpCisrICAgIFFBY2Nlc3NpYmxlOjppbnN0YWxsRmFjdG9yeSgmcUFjY2Vzc2libGVRdWlja1dp ZGdldEZhY3RvcnkpOworKyNlbmRpZgorIH0KKyAKKyB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6 OmVuc3VyZUVuZ2luZSgpIGNvbnN0CitAQCAtOTAxLDkgKzkxMiw3IEBAIHZvaWQgUVF1aWNrV2lk Z2V0UHJpdmF0ZTo6Y3JlYXRlQ29udGV4dCgpCisgCisgICAgICAgICBjb250ZXh0ID0gbmV3IFFP cGVuR0xDb250ZXh0OworICAgICAgICAgY29udGV4dC0+c2V0Rm9ybWF0KG9mZnNjcmVlbldpbmRv dy0+cmVxdWVzdGVkRm9ybWF0KCkpOworLSAgICAgICAgY29uc3QgUVdpbmRvdyAqd2luID0gcS0+ d2luZG93KCktPndpbmRvd0hhbmRsZSgpOworLSAgICAgICAgaWYgKHdpbiAmJiB3aW4tPnNjcmVl bigpKQorLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNjcmVlbih3aW4tPnNjcmVlbigpKTsKKysg ICAgICAgIGNvbnRleHQtPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgICAgICBRT3BlbkdM Q29udGV4dCAqc2hhcmVDb250ZXh0ID0gcXRfZ2xfZ2xvYmFsX3NoYXJlX2NvbnRleHQoKTsKKyAg ICAgICAgIGlmICghc2hhcmVDb250ZXh0KQorICAgICAgICAgICAgIHNoYXJlQ29udGV4dCA9IFFX aWRnZXRQcml2YXRlOjpnZXQocS0+d2luZG93KCkpLT5zaGFyZUNvbnRleHQoKTsKK0BAIC0xNTIw LDE5ICsxNTI5LDE2IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUpCisgICAg ICAgICBkLT5oYW5kbGVXaW5kb3dDaGFuZ2UoKTsKKyAgICAgICAgIGJyZWFrOworIAorLSAgICBj YXNlIFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6CistICAgICAgICBpZiAoUVdpbmRvdyAq d2luZG93ID0gdGhpcy0+d2luZG93KCktPndpbmRvd0hhbmRsZSgpKSB7CistICAgICAgICAgICAg UVNjcmVlbiAqbmV3U2NyZWVuID0gd2luZG93LT5zY3JlZW4oKTsKKy0KKy0gICAgICAgICAgICBp ZiAoZC0+b2Zmc2NyZWVuV2luZG93KQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5XaW5k b3ctPnNldFNjcmVlbihuZXdTY3JlZW4pOworLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3JlZW5T dXJmYWNlKQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3JlZW4o bmV3U2NyZWVuKTsKKysgICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOiB7Cisr ICAgICAgICBRU2NyZWVuICpuZXdTY3JlZW4gPSBzY3JlZW4oKTsKKysgICAgICAgIGlmIChkLT5v ZmZzY3JlZW5XaW5kb3cpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRTY3Jl ZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQorKyAgICAg ICAgICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNpZiBR VF9DT05GSUcob3BlbmdsKQorLSAgICAgICAgICAgIGlmIChkLT5jb250ZXh0KQorLSAgICAgICAg ICAgICAgICBkLT5jb250ZXh0LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlmIChk LT5jb250ZXh0KQorKyAgICAgICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3JlZW4p OworICNlbmRpZgorLSAgICAgICAgfQorIAorICAgICAgICAgaWYgKGQtPnVzZVNvZnR3YXJlUmVu ZGVyZXIKKyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKK0BAIC0xNTQ1LDcgKzE1NTEsNyBAQCBib29s IFFRdWlja1dpZGdldDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgICAgIGQtPnJlbmRlcih0 cnVlKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLQorKyAgICB9CisgICAgIGNhc2Ug UUV2ZW50OjpTaG93OgorICAgICBjYXNlIFFFdmVudDo6TW92ZToKKyAgICAgICAgIGQtPnVwZGF0 ZVBvc2l0aW9uKCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRz L3FxdWlja3dpZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNr d2lkZ2V0X3AuaAoraW5kZXggODgxZjdmOTIyMC4uMWE5NDZiY2M3MSAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCisrKysgYi9xdGRl Y2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAorQEAgLTE0OCw2ICsx NDgsMTQgQEAgcHVibGljOgorICAgICBib29sIGZvcmNlRnVsbFVwZGF0ZTsKKyB9OworIAorK2Ns YXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFRdWlja1dpbmRvdworK3sK KysgICAgUV9PQkpFQ1QKKysKKytwdWJsaWM6CisrICAgIFFRdWlja1dpZGdldE9mZnNjcmVlbldp bmRvdyhRUXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29udHJv bCk7CisrfTsKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmIC8vIFFRdWlja1dpZGdl dF9QX0gKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3 aWRnZXRzLnBybyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMu cHJvCitpbmRleCAyNDM4ZTU3N2FlLi44NWQxNTZiOGEzIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJh dGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitAQCAtNyw5ICs3LDEzIEBAIERF RklORVMgICArPSBRVF9OT19VUkxfQ0FTVF9GUk9NX1NUUklORyBRVF9OT19JTlRFR0VSX0VWRU5U X0NPT1JESU5BVEVTIFFUX05PX0ZPCisgSEVBREVSUyArPSBcCisgICAgIHFxdWlja3dpZGdldC5o IFwKKyAgICAgcXF1aWNrd2lkZ2V0X3AuaCBcCistICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmgK KysgICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRn ZXRfcC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCisgCisgU09V UkNFUyArPSBcCistICAgIHFxdWlja3dpZGdldC5jcHAKKysgICAgcXF1aWNrd2lkZ2V0LmNwcCBc CisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVxdWlj a3dpZGdldGZhY3RvcnkuY3BwCisgCisgbG9hZChxdF9tb2R1bGUpCitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAgYi9x dGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAor aW5kZXggM2I3ZDc0ZGY2My4uYjc1YmY4MjBkNSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUv dGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCisrKysgYi9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAorQEAgLTEw Miw2ICsxMDIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHZhbHVlQ29udmVyc2lvbl9S ZWd1bGFyRXhwcmVzc2lvbigpOworICAgICB2b2lkIGNhc3RXaXRoTXVsdGlwbGVJbmhlcml0YW5j ZSgpOworICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CisrICAgIHZvaWQgY29sbGVjdEdhcmJh Z2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKTsKKyAgICAgdm9pZCBnY1dpdGhOZXN0ZWREYXRh U3RydWN0dXJlKCk7CisgICAgIHZvaWQgc3RhY2t0cmFjZSgpOworICAgICB2b2lkIG51bWJlclBh cnNpbmdfZGF0YSgpOworQEAgLTE4MDksNiArMTgxMCw0NCBAQCB2b2lkIHRzdF9RSlNFbmdpbmU6 OmNvbGxlY3RHYXJiYWdlKCkKKyAgICAgUVZFUklGWShwdHIuaXNOdWxsKCkpOworIH0KKyAKKytj bGFzcyBUZXN0T2JqZWN0Q29udGFpbmVyIDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFfT0JK RUNUCisrICAgIFFfUFJPUEVSVFkoUU9iamVjdCAqZHVtbXkgTUVNQkVSIG1fZHVtbXkgQ09OU1RB TlQpCisrCisrcHVibGljOgorKyAgICBUZXN0T2JqZWN0Q29udGFpbmVyKCkgOiBtX2R1bW15KG5l dyBRT2JqZWN0KHRoaXMpKSB7fQorKworK3ByaXZhdGU6CisrICAgIFFPYmplY3QgKm1fZHVtbXk7 CisrfTsKKysKKyt2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBl cnNUd29FbmdpbmVzKCkKKyt7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUxOworKyAgICBRSlNFbmdp bmUgZW5naW5lMjsKKysKKysgICAgVGVzdE9iamVjdENvbnRhaW5lciBjb250YWluZXI7CisrICAg IFFRbWxFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcCgmY29udGFpbmVyLCBRUW1sRW5naW5lOjpD cHBPd25lcnNoaXApOworKworKyAgICBlbmdpbmUxLmdsb2JhbE9iamVjdCgpLnNldFByb3BlcnR5 KCJmb29iYXIiLCBlbmdpbmUxLm5ld1FPYmplY3QoJmNvbnRhaW5lcikpOworKyAgICBlbmdpbmUy Lmdsb2JhbE9iamVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIiLCBlbmdpbmUyLm5ld1FPYmplY3Qo JmNvbnRhaW5lcikpOworKworKyAgICBlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6 ID0gNDIiKTsKKysgICAgZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQzIik7 CisrCisrICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoiKS50 b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1t eS5iYXoiKS50b0ludCgpLCA0Myk7CisrCisrICAgIGVuZ2luZTEuY29sbGVjdEdhcmJhZ2UoKTsK KysgICAgZW5naW5lMi5jb2xsZWN0R2FyYmFnZSgpOworKworKyAgICAvLyBUaGUgR0Mgc2hvdWxk IG5vdCBjb2xsZWN0IGR1bW15IG9iamVjdCB3cmFwcGVycyBuZWl0aGVyIGluIGVuZ2luZTEgbm9y IGVuZ2luZTIsIHdlCisrICAgIC8vIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhl IGJheiBwcm9wZXJ0eSBzdGlsbCBoYXMgaXRzIHByZXZpb3VzIHZhbHVlLgorKyAgICBRQ09NUEFS RShlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAg ICBRQ09NUEFSRShlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwg NDMpOworK30KKysKKyB2b2lkIHRzdF9RSlNFbmdpbmU6OmdjV2l0aE5lc3RlZERhdGFTdHJ1Y3R1 cmUoKQorIHsKKyAgICAgLy8gVGhlIEdDIG11c3QgYmUgYWJsZSB0byB0cmF2ZXJzZSBkZWVwbHkg bmVzdGVkIG9iamVjdHMsIG90aGVyd2lzZSB0aGlzCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5D aGFuZ2UucW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2Rl bC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMDAwMC4uMjA2MTMzYmIzOQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNs YXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25D b2x1bW5DaGFuZ2UucW1sCitAQCAtMCwwICsxLDExIEBACisraW1wb3J0IFF0UXVpY2sgMi44Cisr CisrTGlzdFZpZXcgeworKyAgICBpZDogcm9vdAorKyAgICB3aWR0aDogMjAwCisrICAgIGhlaWdo dDogMjAwCisrCisrICAgIGRlbGVnYXRlOiBUZXh0IHsKKysgICAgICAgIHRleHQ6IGRpc3BsYXkK KysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fx bWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5j cHAKK2luZGV4IDM1ZjFlMmM5NGQuLjE3MjI0NDc4MzAgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2Rl bC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9k ZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTI3LDYgKzI3LDggQEAKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworIAorICNpbmNsdWRlIDxRdFRlc3QvcXRlc3QuaD4KKysjaW5jbHVkZSA8 UXRDb3JlL1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw+CisrI2luY2x1ZGUgPFF0R3VpL1FT dGFuZGFyZEl0ZW1Nb2RlbD4KKyAjaW5jbHVkZSA8UXRRbWwvcXFtbGNvbXBvbmVudC5oPgorICNp bmNsdWRlIDxRdFFtbE1vZGVscy9wcml2YXRlL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaD4KKyAjaW5j bHVkZSA8UXRRdWljay9xcXVpY2t2aWV3Lmg+CitAQCAtNDcsNiArNDksNyBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIGZpbHRlck9uR3JvdXBfcmVtb3ZlV2hlbkNvbXBsZXRlZCgpOworICAg ICB2b2lkIHF0YnVnXzg2MDE3KCk7CisgICAgIHZvaWQgY29udGV4dEFjY2Vzc2VkQnlIYW5kbGVy KCk7CisrICAgIHZvaWQgcmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgpOworIH07CisgCisgY2xhc3Mg QWJzdHJhY3RJdGVtTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0SXRlbU1vZGVsCitAQCAtMTg2LDYg KzE4OSwzMCBAQCB2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6Y29udGV4dEFjY2Vzc2VkQnlI YW5kbGVyKCkKKyAgICAgUVZFUklGWShyb290LT5wcm9wZXJ0eSgid29ya3MiKS50b0Jvb2woKSk7 CisgfQorIAorK3ZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpyZWRyYXdVcG9uQ29sdW1uQ2hh bmdlKCkKKyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtMTsKKysgICAgbTEuYXBwZW5kUm93 KHsKKysgICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQmFuYW5hIiksCisrICAgICAgICAg ICAgbmV3IFFTdGFuZGFyZEl0ZW0oIkNvY29udXQiKSwKKysgICAgfSk7CisrCisrICAgIFFRdWlj a1ZpZXcgdmlldyh0ZXN0RmlsZVVybCgicmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwiKSk7Cisr ICAgIFFDT01QQVJFKHZpZXcuc3RhdHVzKCksIFFRdWlja1ZpZXc6OlJlYWR5KTsKKysgICAgdmll dy5zaG93KCk7CisrICAgIFFRdWlja0l0ZW0gKnJvb3QgPSB2aWV3LnJvb3RPYmplY3QoKTsKKysg ICAgcm9vdC0+c2V0UHJvcGVydHkoIm1vZGVsIiwgUVZhcmlhbnQ6OmZyb21WYWx1ZTxRT2JqZWN0 ICo+KCZtMSkpOworKworKyAgICBRT2JqZWN0ICppdGVtID0gcm9vdC0+cHJvcGVydHkoImN1cnJl bnRJdGVtIikudmFsdWU8UU9iamVjdCAqPigpOworKyAgICBRVkVSSUZZKGl0ZW0pOworKyAgICBR Q09NUEFSRShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJCYW5hbmEiKTsKKysK KysgICAgUVZFUklGWShyb290KTsKKysgICAgbTEucmVtb3ZlQ29sdW1uKDApOworKworKyAgICBR Q09NUEFSRShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJDb2NvbnV0Iik7Cisr fQorKworIFFURVNUX01BSU4odHN0X1FRbWxEZWxlZ2F0ZU1vZGVsKQorIAorICNpbmNsdWRlICJ0 c3RfcXFtbGRlbGVnYXRlbW9kZWwubW9jIgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVz dHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0 by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAoraW5kZXggNWQ2MzVhYTYzYi4uODI0ZmQ4OWU1YiAx MDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1t LmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0bW0u Y3BwCitAQCAtNzYsMTAgKzc2LDEwIEBAIHZvaWQgdHN0X3F2NG1tOjptdWx0aVdyYXBwZWRRT2Jq ZWN0cygpCisgICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVuZGlu Z0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7CisgICAgICAgICBRQ09NUEFSRShl bmdpbmUyLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNp emUoKSwgMCk7CisgCistICAgICAgICAvLyBNb3ZlcyB0aGUgYWRkaXRpb25hbCBXZWFrVmFsdWUg ZnJvbSBtX211bHRpcGx5V3JhcHBlZFFPYmplY3RzIHRvCistICAgICAgICAvLyBtX3BlbmRpbmdG cmVlZE9iamVjdFdyYXBwZXJWYWx1ZS4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisrICAg ICAgICAvLyBUaGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBtX211bHRpcGx5V3JhcHBlZFFP YmplY3RzIGhhc24ndCBiZWVuIG1vdmVkCisrICAgICAgICAvLyB0byBtX3BlbmRpbmdGcmVlZE9i amVjdFdyYXBwZXJWYWx1ZSB5ZXQuIEl0J3Mgc3RpbGwgYWxpdmUgYWZ0ZXIgYWxsLgorICAgICAg ICAgZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5ydW5HQygpOworLSAgICAgICAgUUNPTVBBUkUoZW5n aW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXpl KCksIDIpOworKyAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRp bmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOworIAorICAgICAgICAgLy8gZW5n aW5lMiBkb2Vzbid0IG93biB0aGUgb2JqZWN0IGFzIGVuZ2luZTEgd2FzIHRoZSBmaXJzdCB0byB3 cmFwIGl0IGFib3ZlLgorICAgICAgICAgLy8gVGhlcmVmb3JlLCBubyBlZmZlY3QgaGVyZS4KK2Rp ZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0 YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0 cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxv b3AzLnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjg4OWU0ODBm M2IKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9x cXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK0BAIC0w LDAgKzEsMTMgQEAKKytpbXBvcnQgUXRRdWljayAyLjYKKysKKytJdGVtIHsKKysgICAgdmlzaWJs ZTogdHJ1ZQorKyAgICBJdGVtIHsKKysgICAgICAgIHZpc2libGU6IGZhbHNlCisrICAgICAgICBJ dGVtIHsKKysgICAgICAgICAgICBvYmplY3ROYW1lOiAiaGlkZGVuQ2hpbGQiCisrICAgICAgICAg ICAgYWN0aXZlRm9jdXNPblRhYjogdHJ1ZQorKyAgICAgICAgICAgIGZvY3VzOiB0cnVlCisrICAg ICAgICB9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRv L3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVz dHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK2luZGV4IGM4ZjI1 MWRiZTEuLmM4ZWYzNmVlNjggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8v cXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZl L3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCitAQCAtNjcs NiArNjcsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWIxMCgp OworICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wX2RhdGEoKTsKKyAgICAg dm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcCgpOworKyAgICB2b2lkIGFjdGl2ZUZv Y3VzT25UYWJfaW5maW5pdGVMb29wQ29udHJvbHMoKTsKKyAKKyAgICAgdm9pZCBuZXh0SXRlbUlu Rm9jdXNDaGFpbigpOworICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluMigpOworQEAgLTEw NTcsNiArMTA1OCwxNyBAQCB2b2lkIHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFiX2lu ZmluaXRlTG9vcCgpCisgICAgIFFDT01QQVJFKGl0ZW0sIHdpbmRvdy0+cm9vdE9iamVjdCgpKTsK KyB9CisgCisrCisrdm9pZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZlRm9jdXNPblRhYl9pbmZpbml0 ZUxvb3BDb250cm9scygpCisreworKyAgICBhdXRvIHNvdXJjZSA9IHRlc3RGaWxlVXJsKCJhY3Rp dmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIik7CisrICAgIFFTY29wZWRQb2ludGVyPFFR dWlja1ZpZXc+d2luZG93KG5ldyBRUXVpY2tWaWV3KCkpOworKyAgICB3aW5kb3ctPnNldFNvdXJj ZShzb3VyY2UpOworKyAgICB3aW5kb3ctPnNob3coKTsKKysgICAgUVZFUklGWSh3aW5kb3ctPmVy cm9ycygpLmlzRW1wdHkoKSk7CisrICAgIFFUZXN0OjprZXlDbGljayh3aW5kb3cuZ2V0KCksIFF0 OjpLZXlfVGFiKTsgLy8gc2hvdWxkIG5vdCBoYW5nCisrfQorKworIHZvaWQgdHN0X1FRdWlja0l0 ZW06Om5leHRJdGVtSW5Gb2N1c0NoYWluKCkKKyB7CisgICAgIGlmICghcXRfdGFiX2FsbF93aWRn ZXRzKCkpCitTdWJtb2R1bGUgcXRkb2MgYzBjN2JmMDcuLi43OWQ2ZWY2OToKK1N1Ym1vZHVsZSBx dGltYWdlZm9ybWF0cyAyZGNmMjg5OS4uYWJlNDRjMGY6CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZv cm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcCBiL3F0 aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxlci5j cHAKK2luZGV4IGRkZTc4M2MuLjFiZjkwNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9z cmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCisrKysgYi9xdGlt YWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3Bw CitAQCAtNDYyLDggKzQ2MiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRyeUluZm8oSUNO U0VudHJ5ICZpY29uKQorICAgICBpZiAoaXNJY29uQ29tcHJlc3NlZChpY29uKSkKKyAgICAgICAg IHJldHVybiB0cnVlOworICAgICAvLyBJY29uIGRlcHRoOgorLSAgICBpZiAoIWRlcHRoLmlzRW1w dHkoKSkKKy0gICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoLnRvVUlu dCgpKTsKKysgICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIGNvbnN0IHVpbnQg ZGVwdGhVSW50ID0gZGVwdGgudG9VSW50KCk7CisrICAgICAgICBpZiAoZGVwdGhVSW50ID4gMzIp CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNF bnRyeTo6RGVwdGgoZGVwdGhVSW50KTsKKysgICAgfQorICAgICAvLyBUcnkgbW9ubyBpZiBkZXB0 aCBub3QgZm91bmQKKyAgICAgaWYgKGljb24uZGVwdGggPT0gSUNOU0VudHJ5OjpEZXB0aFVua25v d24pCisgICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aE1vbm87CitAQCAtNTE1 LDYgKzUxOSw5IEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkgJmlj b24pCisgICAgICAgICB9CisgICAgICAgICBpY29uLmhlaWdodCA9IGljb24ud2lkdGg7CisgICAg IH0KKysgICAgLy8gU2FuaXR5IGNoZWNrCisrICAgIGlmIChpY29uLndpZHRoID09IDAgfHwgaWNv bi53aWR0aCA+IDQwOTYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiB0cnVl OworIH0KKyAKK0BAIC02ODUsNyArNjkyLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OmNhblJlYWQo KSBjb25zdAorIGJvb2wgUUlDTlNIYW5kbGVyOjpyZWFkKFFJbWFnZSAqb3V0SW1hZ2UpCisgewor ICAgICBRSW1hZ2UgaW1nOworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSkgeworKyAgICBpZiAo IWVuc3VyZVNjYW5uZWQoKSB8fCBtX2N1cnJlbnRJY29uSW5kZXggPj0gbV9pY29ucy5zaXplKCkp IHsKKyAgICAgICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRsZXI6OnJlYWQoKTogVGhlIGRldmljZSB3 YXNuJ3QgcGFyc2VkIHByb3Blcmx5ISIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9 CitAQCAtODkyLDcgKzg5OSw3IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgICAgICBjb25zdCBxaW50NjQgYmxvY2tE YXRhT2Zmc2V0ID0gZGV2aWNlKCktPnBvcygpOworLSAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVy VmFsaWQoYmxvY2tIZWFkZXIpKSB7CisrICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxpZChi bG9ja0hlYWRlciwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIGZpbGVsZW5ndGggLSBibG9ja0RhdGFP ZmZzZXQpKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6c2NhbkRldmlj ZSgpOiBGYWlsZWQsIGJhZCBoZWFkZXIgYXQgcG9zICVzLiBPU1R5cGUgXCIlc1wiLCBsZW5ndGgg JXUiLAorICAgICAgICAgICAgICAgICAgICAgIFFCeXRlQXJyYXk6Om51bWJlcihibG9ja0RhdGFP ZmZzZXQpLmNvbnN0RGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgIG5hbWVGcm9tT1NUeXBl KGJsb2NrSGVhZGVyLm9zdHlwZSkuY29uc3REYXRhKCksIGJsb2NrSGVhZGVyLmxlbmd0aCk7CitA QCAtOTI3LDExICs5MzQsMTQgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQorICAg ICAgICAgY2FzZSBJQ05TQmxvY2tIZWFkZXI6OlR5cGVPZHJwOgorICAgICAgICAgICAgIC8vIElj bnMgY29udGFpbmVyIHNlZW1zIHRvIGhhdmUgYW4gZW1iZWRkZWQgaWNvbiB2YXJpYW50IGNvbnRh aW5lcgorICAgICAgICAgICAgIC8vIExldCdzIHN0YXJ0IGEgc2NhbiBmb3IgZW50cmllcworLSAg ICAgICAgICAgIHdoaWxlIChkZXZpY2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKysg ICAgICAgICAgICB3aGlsZSAoIXN0cmVhbS5hdEVuZCgpICYmIGRldmljZSgpLT5wb3MoKSA8IG5l eHRCbG9ja09mZnNldCkgeworICAgICAgICAgICAgICAgICBJQ05TQmxvY2tIZWFkZXIgaWNvbjsK KyAgICAgICAgICAgICAgICAgc3RyZWFtID4+IGljb247CisrICAgICAgICAgICAgICAgIGlmIChz dHJlYW0uc3RhdHVzKCkgIT0gUURhdGFTdHJlYW06Ok9rKQorKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgaW5jb3JyZWN0IHZh cmlhbnQgZW50cnkgaGVhZGVyIGFuZCBzdG9wIHNjYW4KKy0gICAgICAgICAgICAgICAgaWYgKCFp c0Jsb2NrSGVhZGVyVmFsaWQoaWNvbiwgYmxvY2tEYXRhTGVuZ3RoKSkKKysgICAgICAgICAgICAg ICAgcXVpbnQ2NCByZW1haW5pbmcgPSBibG9ja0RhdGFMZW5ndGggLSAoZGV2aWNlKCktPnBvcygp IC0gYmxvY2tEYXRhT2Zmc2V0KTsKKysgICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVhZGVy VmFsaWQoaWNvbiwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIHJlbWFpbmluZykpCisgICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgaWYgKCFhZGRFbnRyeShpY29uLCBk ZXZpY2UoKS0+cG9zKCksIGJsb2NrSGVhZGVyLm9zdHlwZSkpCisgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7CitAQCAtMTAwMyw3ICsxMDEzLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6 OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9Cist ICAgIHJldHVybiB0cnVlOworKyAgICByZXR1cm4gKG1faWNvbnMuc2l6ZSgpID4gMCk7CisgfQor IAorIGNvbnN0IElDTlNFbnRyeSAmUUlDTlNIYW5kbGVyOjpnZXRJY29uTWFzayhjb25zdCBJQ05T RW50cnkgJmljb24pIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdp bnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMv cGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAoraW5kZXggNTA4MjAyMy4u Y2IzNDM3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9y bWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lu cy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorQEAgLTQzLDYgKzQzLDcgQEAKKyAj aW5jbHVkZSAicWltYWdlLmgiCisgI2luY2x1ZGUgInF2YXJpYW50LmgiCisgI2luY2x1ZGUgInFj b2xvci5oIgorKyNpbmNsdWRlICJxaW1hZ2VyZWFkZXIuaCIKKyAKKyAjaW5jbHVkZSA8amFzcGVy L2phc3Blci5oPgorICNpbmNsdWRlIDxtYXRoLmg+IC8vIGZvciBwb3cKK0BAIC0zMzMsMTYgKzMz NCw0NiBAQCBwcml2YXRlOgorIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjpKcGVnMjAwMEphc3BlclJl YWRlcihRSU9EZXZpY2UgKmlvZCwgU3ViRm9ybWF0IGZvcm1hdCkKKyAgICAgOiBqYXNwZXJPayh0 cnVlKSwgaW9EZXZpY2UoaW9kKSwgZm9ybWF0KGZvcm1hdCksIGhhc0FscGhhKGZhbHNlKQorIHsK KysjaWYgSkFTX1ZFUlNJT05fTUFKT1IgPCAzCisgICAgIGlmIChqYXNfaW5pdCgpKSB7CisgICAg ICAgICBqYXNwZXJPayA9IGZhbHNlOworICAgICAgICAgcURlYnVnKCJKYXNwZXIgTGlicmFyeSBp bml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKyAgICAgfQorKyNlbHNlCisrICAgIGphc19jb25mX2Ns ZWFyKCk7CisrI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg2LCAwLCAwKQorKyAg ICBqYXNfY29uZl9zZXRfbWF4X21lbV91c2FnZShRSW1hZ2VSZWFkZXI6OmFsbG9jYXRpb25MaW1p dCgpICogMTAyNCAqIDEwMjQpOworKyNlbHNlCisrICAgIC8vIDEyOE1CIHNlZW1zIHRvIGJlIGVu b3VnaC4KKysgICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoMTI4ICogMTAyNCAqIDEwMjQp OworKyNlbmRpZgorKyAgICBpZiAoamFzX2luaXRfbGlicmFyeSgpKSB7CisrICAgICAgICBqYXNw ZXJPayA9IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBpbml0aWFsaXph dGlvbiBmYWlsZWQiKTsKKysgICAgfQorKyAgICBpZiAoamFzX2luaXRfdGhyZWFkKCkpIHsKKysg ICAgICAgIGphc19jbGVhbnVwX2xpYnJhcnkoKTsKKysgICAgICAgIGphc3Blck9rID0gZmFsc2U7 CisrICAgICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7 CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6On5KcGVnMjAw MEphc3BlclJlYWRlcigpCisgeworKyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAgICAgaWYg KGphc3Blck9rKQorICAgICAgICAgamFzX2NsZWFudXAoKTsKKysjZWxzZQorKyAgICBpZiAoamFz cGVyT2spIHsKKysgICAgICAgIGlmIChqYXNfY2xlYW51cF90aHJlYWQoKSkgeworKyAgICAgICAg ICAgIHFEZWJ1ZygiSmFzcGVyIHRocmVhZCBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAgfQor KyAgICAgICAgaWYgKGphc19jbGVhbnVwX2xpYnJhcnkoKSkgeworKyAgICAgICAgICAgIHFEZWJ1 ZygiSmFzcGVyIGxpYnJhcnkgY2xlYW51cCBmYWlsZWQiKTsKKysgICAgICAgIH0KKysgICAgfQor KyNlbmRpZgorIH0KKyAKKyAvKiEgXGludGVybmFsCitAQCAtODU3LDcgKzg4OCw3IEBAIGJvb2wg SnBlZzIwMDBKYXNwZXJSZWFkZXI6OndyaXRlKGNvbnN0IFFJbWFnZSAmaW1hZ2UsIGludCBxdWFs aXR5KQorICAgICB9CisgCisgICAgIC8vIE9wZW4gYW4gZW1wdHkgamFzcGVyIHN0cmVhbSB0aGF0 IGdyb3dzIGF1dG9tYXRpY2FsbHkKKy0gICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVhbSA9 IGphc19zdHJlYW1fbWVtb3BlbigwLCAtMSk7CisrICAgIGphc19zdHJlYW1fdCAqIG1lbW9yeV9z dHJlYW0gPSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgMCk7CisgCisgICAgIC8vIEphc3BlciB3YW50 cyBhIG5vbi1jb25zdCBzdHJpbmcuCisgICAgIGNoYXIgKnN0ciA9IHFzdHJkdXAoamFzcGVyRm9y bWF0U3RyaW5nLnRvTGF0aW4xKCkuY29uc3REYXRhKCkpOworZGlmZiAtLWdpdCBhL3F0aW1hZ2Vm b3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAgYi9x dGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRsZXIu Y3BwCitpbmRleCAxMzg2NzUwLi5hYzg5NTZjIDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1hdHMv c3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorKysrIGIvcXRp bWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNw cAorQEAgLTM2MSw2ICszNjEsOCBAQCBib29sIFFUaWZmSGFuZGxlcjo6cmVhZChRSW1hZ2UgKmlt YWdlKQorICAgICB9CisgCisgICAgIFRJRkYgKmNvbnN0IHRpZmYgPSBkLT50aWZmOworKyAgICBp ZiAoVElGRklzVGlsZWQodGlmZikgJiYgVElGRlRpbGVTaXplNjQodGlmZikgPiB1aW50NjRfdChp bWFnZS0+c2l6ZUluQnl0ZXMoKSkpIC8vIENvcnJ1cHQgaW1hZ2UKKysgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgY29uc3QgcXVpbnQzMiB3aWR0aCA9IGQtPnNpemUud2lkdGgoKTsKKyAgICAg Y29uc3QgcXVpbnQzMiBoZWlnaHQgPSBkLT5zaXplLmhlaWdodCgpOworIAorZGlmZiAtLWdpdCBh L3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFuZGxl ci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9xd2Vi cGhhbmRsZXIuY3BwCitpbmRleCA4MmQzOGNiLi5kMDJlYjA1IDEwMDY0NAorLS0tIGEvcXRpbWFn ZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAor KysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBo YW5kbGVyLmNwcAorQEAgLTQ1LDYgKzQ1LDcgQEAKKyAjaW5jbHVkZSA8cWRlYnVnLmg+CisgI2lu Y2x1ZGUgPHFwYWludGVyLmg+CisgI2luY2x1ZGUgPHF2YXJpYW50Lmg+CisrI2luY2x1ZGUgPFF0 RW5kaWFuPgorIAorIHN0YXRpYyBjb25zdCBpbnQgcmlmZkhlYWRlclNpemUgPSAxMjsgLy8gUklG Rl9IRUFERVJfU0laRSBmcm9tIHdlYnAvZm9ybWF0X2NvbnN0YW50cy5oCisgCitAQCAtMTAyLDIx ICsxMDMsMjMgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAorIAor ICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5FcnJvcjsKKyAKKy0gICAgaWYgKGRldmljZSgpLT5pc1Nl cXVlbnRpYWwoKSkgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiU2VxdWVudGlhbCBkZXZpY2Vz IGFyZSBub3Qgc3VwcG9ydGVkIjsKKysgICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2Fz dDxRV2VicEhhbmRsZXIgKj4odGhpcyk7CisrICAgIGNvbnN0IGludCBoZWFkZXJCeXRlc05lZWRl ZCA9IHNpemVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpOworKyAgICBRQnl0ZUFycmF5IGhlYWRl ciA9IGRldmljZSgpLT5wZWVrKGhlYWRlckJ5dGVzTmVlZGVkKTsKKysgICAgaWYgKGhlYWRlci5z aXplKCkgPCBoZWFkZXJCeXRlc05lZWRlZCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAg fQorIAorLSAgICBxaW50NjQgb2xkUG9zID0gZGV2aWNlKCktPnBvcygpOworLSAgICBkZXZpY2Uo KS0+c2VlaygwKTsKKy0KKy0gICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxRV2Vi cEhhbmRsZXIgKj4odGhpcyk7CistICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCktPnBl ZWsoc2l6ZW9mKFdlYlBCaXRzdHJlYW1GZWF0dXJlcykpOworKyAgICAvLyBXZSBkbyBubyByYW5k b20gYWNjZXNzIGR1cmluZyBkZWNvZGluZywganVzdCBhIHJlYWRBbGwoKSBvZiB0aGUgd2hvbGUg aW1hZ2UgZmlsZS4gU28gaWYKKysgICAgLy8gaWYgaXQgaXMgYWxsIGF2YWlsYWJsZSBhbHJlYWR5 LCB3ZSBjYW4gYWNjZXB0IGEgc2VxdWVudGlhbCBkZXZpY2UuIFRoZSByaWZmIGhlYWRlciBjb250 YWlucworKyAgICAvLyB0aGUgZmlsZSBzaXplIG1pbnVzIDggYnl0ZXMgaGVhZGVyCisrICAgIHFp bnQ2NCBieXRlU2l6ZSA9IHFGcm9tTGl0dGxlRW5kaWFuPHF1aW50MzI+KGhlYWRlci5jb25zdERh dGEoKSArIDQpOworKyAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpICYmIGRldmljZSgp LT5ieXRlc0F2YWlsYWJsZSgpIDwgYnl0ZVNpemUgKyA4KSB7CisrICAgICAgICBxV2FybmluZygp IDw8ICJRV2VicEhhbmRsZXI6IEluc3VmZmljaWVudCBkYXRhIGF2YWlsYWJsZSBpbiBzZXF1ZW50 aWFsIGRldmljZSI7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYgKFdl YlBHZXRGZWF0dXJlcygoY29uc3QgdWludDhfdCopaGVhZGVyLmNvbnN0RGF0YSgpLCBoZWFkZXIu c2l6ZSgpLCAmKHRoYXQtPm1fZmVhdHVyZXMpKSA9PSBWUDhfU1RBVFVTX09LKSB7CisgICAgICAg ICBpZiAobV9mZWF0dXJlcy5oYXNfYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgLy8gRm9yIGFu aW1hdGlvbiwgd2UgaGF2ZSB0byByZWFkIGFuZCBzY2FuIHdob2xlIGZpbGUgdG8gZGV0ZXJtaW5l IGxvb3AgY291bnQgYW5kIGltYWdlcyBjb3VudAorLSAgICAgICAgICAgIGRldmljZSgpLT5zZWVr KG9sZFBvcyk7CistCisgICAgICAgICAgICAgaWYgKHRoYXQtPmVuc3VyZURlbXV4ZXIoKSkgewor ICAgICAgICAgICAgICAgICB0aGF0LT5tX2xvb3AgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhlciwg V0VCUF9GRl9MT09QX0NPVU5UKTsKKyAgICAgICAgICAgICAgICAgdGhhdC0+bV9mcmFtZUNvdW50 ID0gV2ViUERlbXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfRlJBTUVfQ09VTlQpOworQEAgLTEy NiwxNyArMTI5LDEzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVTY2FubmVkKCkgY29uc3QK KyAgICAgICAgICAgICAgICAgaWYgKHRoYXQtPm1fZmVhdHVyZXMuaGFzX2FscGhhKQorICAgICAg ICAgICAgICAgICAgICAgdGhhdC0+bV9jb21wb3NpdGVkLT5maWxsKFF0Ojp0cmFuc3BhcmVudCk7 CisgCistICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXNldCBkZXZpY2UgcG9zaXRpb24g c2luY2Ugd2UgaGF2ZSByZWFkIGluIGFsbCBkYXRhCisgICAgICAgICAgICAgICAgIG1fc2NhblN0 YXRlID0gU2NhblN1Y2Nlc3M7CistICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgbV9zY2FuU3RhdGUgPSBT Y2FuU3VjY2VzczsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBkZXZpY2UoKS0+c2Vlayhv bGRQb3MpOworLQorICAgICByZXR1cm4gbV9zY2FuU3RhdGUgPT0gU2NhblN1Y2Nlc3M7CisgfQor IAorQEAgLTE1OSw3ICsxNTgsNyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlRGVtdXhlcigp CisgCisgYm9vbCBRV2VicEhhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyB7CistICAgIGlm ICghZW5zdXJlU2Nhbm5lZCgpIHx8IGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSB8fCAhZW5zdXJl RGVtdXhlcigpKQorKyAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCAhZW5zdXJlRGVtdXhlcigp KQorICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICBRUmVjdCBwcmV2RnJhbWVSZWN0Owor U3VibW9kdWxlIHF0bG9jYXRpb24gOThhNWM1MTEuLmY5OTFlMjhjOgorZGlmZiAtLWdpdCBhL3F0 bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uIGIvcXRsb2NhdGlvbi9zcmMvbG9j YXRpb24vY29uZmlndXJlLmpzb24KK2luZGV4IDZkMDFhOWEzLi5kMWU2MjNhMSAxMDA2NDQKKy0t LSBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGxvY2F0 aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgorQEAgLTksNyArOSw3IEBACisgICAgICAg ICAgICAgImxhYmVsIjogIlF0LmxhYnMubG9jYXRpb24gZXhwZXJpbWVudGFsIFFNTCBwbHVnaW4i LAorICAgICAgICAgICAgICJwdXJwb3NlIjogIlByb3ZpZGVzIGV4cGVyaW1lbnRhbCBRdExvY2F0 aW9uIFFNTCB0eXBlcyIsCisgICAgICAgICAgICAgInNlY3Rpb24iOiAiTG9jYXRpb24iLAorLSAg ICAgICAgICAgICJjb25kaXRpb24iOiAiY29uZmlnLm9wZW5nbCIsCisrICAgICAgICAgICAgImNv bmRpdGlvbiI6ICJmZWF0dXJlcy5vcGVuZ2wiLAorICAgICAgICAgICAgICJvdXRwdXQiOiBbICJw cml2YXRlRmVhdHVyZSIgXQorICAgICAgICAgfSwKKyAgICAgICAgICJnZW9zZXJ2aWNlc19vc20i OiB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdlb21h cG9iamVjdHFzZ3N1cHBvcnQuY3BwIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cv cWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCitpbmRleCBhOTc4NTczZC4uMTFlMTQ2NmYgMTAw NjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0 cXNnc3VwcG9ydC5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNnL3Fn ZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAorQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFFHZW9N YXBPYmplY3RRU0dTdXBwb3J0Ojp1cGRhdGVNYXBPYmplY3RzKFFTR05vZGUgKnJvb3QsIFFRdWlj a1dpbmRvdyAqd2luZAorICAgICBpZiAoIXJvb3QpCisgICAgICAgICByZXR1cm47CisgCistICAg IGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiBtX21hcE9iamVjdHNSb290Tm9kZS0+cGFyZW50 KCkpCisrICAgIGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiAhbV9tYXBPYmplY3RzUm9vdE5v ZGUtPnBhcmVudCgpKQorICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGROb2RlKG1fbWFwT2JqZWN0 c1Jvb3ROb2RlLmdldCgpKTsKKyAKKyAgICAgaWYgKCFtX21hcE9iamVjdHNSb290Tm9kZSkgewor ZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9j b2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVhNDA0 NjdlLi5kMTIzYzZhOCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0 aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9l c3JpLmNwcAorQEAgLTU5LDggKzU5LDEwIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIHN0YXRpYyBj b25zdCBRU3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBzdGF0 aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5nTGl0 ZXJhbCgidXNlcmFnZW50IikpOworIAorLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9jb2Rl KFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3Nl cnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworLXN0 YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0 cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2Rl U2VydmVyL3JldmVyc2VHZW9jb2RlIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9j b2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVz dC9zZXJ2aWNlcy8iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIldvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOworK3N0 YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgKKysg ICAgICAgICJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9X b3JsZC9HZW9jb2RlU2VydmVyL3JldmVyc2VHZW9jb2RlIikpOworIAorIHN0YXRpYyBRU3RyaW5n IGFkZHJlc3NUb1F1ZXJ5KGNvbnN0IFFHZW9BZGRyZXNzICZhZGRyZXNzKQorIHsKK2RpZmYgLS1n aXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVqc29u cGFyc2VyX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAoraW5kZXggMTc0OTJkOTQuLjk2YzEyYjFiIDEw MDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3Jv dXRlanNvbnBhcnNlcl9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9z ZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAorQEAgLTQ2LDcgKzQ2LDgg QEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDov L3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2Vy dmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8g SlNPTiByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxw L2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRp b24vMDJyMzAwMDAwMDM2MDAwMDAwLworIAorIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvck1l c3NhZ2UoUVN0cmluZ0xpdGVyYWwoIkVycm9yICUxOiAlMi4iKSk7Cisgc3RhdGljIGNvbnN0IFFT dHJpbmcga0Vycm9ySnNvbihRU3RyaW5nTGl0ZXJhbCgiRXJyb3I6IGludmFsaWRlIEpTT04gZG9j dW1lbnQuIikpOworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vydmlj ZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9n ZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKK2luZGV4IDhjYWRmYjI5Li45 MmI2YmIxMyAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMv ZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5z L2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorQEAgLTQ0LDcgKzQ0LDgg QEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0cDov L3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVfc2Vy dmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisrLy8g SlNPTiByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxw L2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRp b24vMDJyMzAwMDAwMDM2MDAwMDAwLworIAorIEdlb1JvdXRlUmVwbHlFc3JpOjpHZW9Sb3V0ZVJl cGx5RXNyaShRTmV0d29ya1JlcGx5ICpyZXBseSwgY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVx dWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU9iamVjdCAqcGFy ZW50KSA6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1 Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitp bmRleCAwZTZiYzJjNy4uZWQ2MTNmNGIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKKysr KyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFu YWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTQ4LDcgKzQ4LDggQEAgc3RhdGljIGNvbnN0IFFTdHJp bmcga1ByZWZpeEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25zdCBR U3RyaW5nIGtQYXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1c2Vy YWdlbnQiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVG9rZW4oa1ByZWZpeEVzcmkg KyBRU3RyaW5nTGl0ZXJhbCgidG9rZW4iKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcga1Vy bFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dpcy9y ZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZlIikpOwor K3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKAorKyAgICAg ICAgImh0dHBzOi8vcm91dGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9S b3V0ZS9OQVNlcnZlci9Sb3V0ZV9Xb3JsZC9zb2x2ZSIpKTsKKyAKKyBHZW9Sb3V0aW5nTWFuYWdl ckVuZ2luZUVzcmk6Okdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFudE1h cCAmcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCitAQCAt NzAsNyArNzEsOCBAQCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6On5HZW9Sb3V0aW5nTWFu YWdlckVuZ2luZUVzcmkoKQorIHsKKyB9CisgCistLy8gUkVTVCByZWZlcmVuY2U6IGh0dHA6Ly9y ZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8v MDJyMzAwMDAwMDM2MDAwMDAwCisrLy8gUkVTVCByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNv dXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8vMDJy MzAwMDAwMDM2MDAwMDAwCisgCisgUUdlb1JvdXRlUmVwbHkgKkdlb1JvdXRpbmdNYW5hZ2VyRW5n aW5lRXNyaTo6Y2FsY3VsYXRlUm91dGUoY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVzdCkK KyB7CitAQCAtMTI1LDcgKzEyNyw3IEBAIHZvaWQgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3Jp OjpyZXBseUVycm9yKFFHZW9Sb3V0ZVJlcGx5OjpFcnJvciBlcnJvckNvZGUsIGNvCisgUVN0cmlu ZyBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnByZWZlcmVkRGlyZWN0aW9uTGFuZ2FnZSgp CisgeworICAgICAvLyBsaXN0IG9mIHN1cHBvcnRlZCBsYW5nYWdlcyBpcyBkZWZpbmVkIGluOgor LSAgICAvLyBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1h cGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKyAgICAvLyBodHRwczovL3Jlc291 cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIz MDAwMDAwMzYwMDAwMDAKKyAgICAgY29uc3QgUVN0cmluZ0xpc3Qgc3VwcG9ydGVkTGFuZ3VhZ2Vz ID0geworICAgICAgICAgImFyIiwgLy8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBBcmFiaWMKKyAg ICAgICAgICJjcyIsIC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMgaW4gQ3plY2gKK2RpZmYgLS1naXQg YS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5n bWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vydmlj ZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCA1ZDE1 ODM1ZC4uMjQxNDhmOTUgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3Nl cnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIv cXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21h bmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC0yMzAsNyArMjMwLDggQEAgUUdlb01hcCAqR2VvVGls ZWRNYXBwaW5nTWFuYWdlckVuZ2luZUVzcmk6OmNyZWF0ZU1hcCgpCisgLy8gJHt5fSA9IFkKKyAv LyAke3Rva2VufSA9IFRva2VuCisgCistLy8gdGVtcGxhdGUgPSAnaHR0cDovL3NlcnZpY2VzLmFy Y2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFwU2Vy dmVyL3RpbGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworKy8vIHRlbXBsYXRlID0KKysvLyAnaHR0 cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxk X1RvcG9fTWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKyAKKyBib29s IEdlb1RpbGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjppbml0aWFsaXplTWFwU291cmNlcyhR R2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JTdHJp bmcsCitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L21hcHMuanNvbiBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBz Lmpzb24KK2luZGV4IDgxNjdhZTdkLi44NjJlMDg3ZCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24v c3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KKysrKyBiL3F0bG9jYXRpb24v c3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KK0BAIC02LDggKzYsOCBAQAor ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFN0cmVldCBN YXAiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6 IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAor LSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3 LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUzOGE4 NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBz Oi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9T dHJlZXRfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNv cHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5 MzMzNzk4M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAg ICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTYsOCArMTYsOCBAQAorICAgICAgICAgICAg ICIiOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBJbWFnZXJ5IiwKKyAgICAgICAgICAgICAibW9iaWxl IjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJs IjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9X b3JsZF9JbWFnZXJ5L01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0x MGRmMjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor KyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlciIsCisrICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20v aG9tZS9pdGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVzcmk8 L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMjYsOCAr MjYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxk IFRlcnJhaW4gQmFzZSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAg ICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5h cmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9N YXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVm PSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdkNDll MWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAi dXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vydmlj ZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdo dFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVt Lmh0bWw/aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRy aWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMzYsOCArMzYsOCBAQAor ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRvcG9ncmFw aHkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6 IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCistICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJj Z2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4 Zic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9z ZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01h cC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVmZTMxNDlj MzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9 LAorIAorICAgICAgICAgeworQEAgLTQ2LDggKzQ2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3Jp cHRpb24iOiAiVGhpcyBtYXAgcHJlc2VudHMgbGFuZCBjb3ZlciBhbmQgZGV0YWlsZWQgdG9wb2dy YXBoaWMgbWFwcyBmb3IgdGhlIFVuaXRlZCBTdGF0ZXMuIiwKKyAgICAgICAgICAgICAibW9iaWxl IjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJs IjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L1VTQV9Ub3BvX01hcHMvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorKyAgICAgICAg ICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMu Y29tL2hvbWUvaXRlbS5odG1sP2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5F c3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTU2 LDggKzU2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmF0aW9uYWwgR2VvZ3Jh cGhpYyBXb3JsZCBNYXAiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAg ICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNl cy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9NYXAv TWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4OTQ0 ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAg InVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmln aHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRl bS5odG1sP2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250 cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTY2LDggKzY2LDggQEAK KyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92aWRpbmcg YSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAgICAgICAg Im1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAg ICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9DYW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAg ICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2 aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9M aWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC03Niw4ICs3Niw4IEBACisgICAgICAg ICAgICAgImRlc2NyaXB0aW9uIjogIk5hdHVyYWwgRWFydGggcGh5c2ljYWwgbWFwIGZvciB0aGUg d29ybGQiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmln aHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25s aW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVy IiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDov L3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5MDRh YWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6ICJo dHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxk X1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0Ijog IiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PWM0ZWM3MjJhMWNkMzRjZjBhMjM5MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTg2LDggKzg2LDggQEAKKyAgICAgICAg ICAgICAiZGVzY3JpcHRpb24iOiAiUG9ydHJheXMgc3VyZmFjZSBlbGV2YXRpb24gYXMgc2hhZGVk IHJlbGllZiIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAgICJu aWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNv bmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFwU2Vy dmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFiNDhh Mzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6 ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX1NoYWRlZF9SZWxpZWYvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRt bD9pZD05YzUzNzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0 b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC05Niw4ICs5Niw4IEBACisgICAg ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQg YXMgYSBiYXNlbWFwIGJ5IG1hcmluZSBHSVMgcHJvZmVzc2lvbmFscyBhbmQgYXMgYSByZWZlcmVu Y2UgbWFwIGJ5IGFueW9uZSBpbnRlcmVzdGVkIGluIG9jZWFuIGRhdGEiLAorICAgICAgICAgICAg ICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAg ICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9hcmNnaXMvcmVzdC9z ZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJj Z2lzb25saW5lLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNl L01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhy ZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5 NDY2YzljYTI4YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0s CisgCisgICAgICAgICB7CitAQCAtMTA2LDggKzEwNiw4IEBACisgICAgICAgICAgICAgImRlc2Ny aXB0aW9uIjogIlRoZW1hdGljIGNvbnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5k IHdpdGggbWluaW1hbCBjb2xvcnMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAg ICAgICAgICAgICAibmlnaHQiOiB0cnVlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3Nl cnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxk X0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD1hMjg0YTliOTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29t L0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2 ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw czovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5MTBk NDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAg ICAgICAgeworQEAgLTExNiw4ICsxMTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6 ICJEZUxvcm1l4oCZcyB0b3BvZ3JhcGhpYyBiYXNlbWFwIGlzIGEgc2VhbWxlc3MgZ2xvYmFsIGRh dGEgc2V0IHRoYXQgcG9ydHJheXMgdHJhbnNwb3J0YXRpb24sIGh5ZHJvZ3JhcGh5LCBqdXJpc2Rp Y3Rpb24gYm91bmRhcmllcywgYW5kIG1ham9yIGdlb2dyYXBoaWMgZmVhdHVyZXMiLAorICAgICAg ICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0g ICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMv cmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2ZXIi LAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8v d3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0ZmRi MjQxZWZmYmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0 dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lh bHR5L0RlTG9ybWVfV29ybGRfQmFzZV9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29w eXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorICAgICAgICAgfQorICAgICBdCisgfQorZGlmZiAtLWdpdCBhL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVfZXNy aS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5h Z2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCAzODU4ZGRmNS4uYWY2NmYyOGUgMTAwNjQ0CistLS0g YS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2VyZW5n aW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vz cmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNjMsOCArNjMsMTAgQEAgc3RhdGlj IGNvbnN0IFFTdHJpbmcga0NvdW50cmllc0tleShRU3RyaW5nTGl0ZXJhbCgiZGV0YWlsZWRDb3Vu dHJpZXMiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0xvY2FsaXplZE5hbWVzS2V5KFFTdHJp bmdMaXRlcmFsKCJsb2NhbGl6ZWROYW1lcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrTWF4 TG9jYXRpb25zS2V5KFFTdHJpbmdMaXRlcmFsKCJtYXhMb2NhdGlvbnMiKSk7CisgCistc3RhdGlj IGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20v YXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cistc3Rh dGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cDovL2dlb2NvZGUu YXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRB ZGRyZXNzQ2FuZGlkYXRlcyIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVy KAorKyAgICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZp Y2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXI/Zj1wanNvbiIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtV cmxGaW5kQWRkcmVzc0NhbmRpZGF0ZXMoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dp cy9yZXN0L3NlcnZpY2VzL1dvcmxkLyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJHZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpOworIAor IFBsYWNlTWFuYWdlckVuZ2luZUVzcmk6OlBsYWNlTWFuYWdlckVuZ2luZUVzcmkoY29uc3QgUVZh cmlhbnRNYXAgJnBhcmFtZXRlcnMsIFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJvciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcg KmVycm9yU3RyaW5nKSA6CitTdWJtb2R1bGUgcXRtdWx0aW1lZGlhIGYwMzQ0MDc5Li4wZDdjYzMz YToKK2RpZmYgLS1naXQgYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVk aW9pbnB1dF9wdWxzZS5jcHAgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9x YXVkaW9pbnB1dF9wdWxzZS5jcHAKK2luZGV4IDJiNTMyNTEzMi4uYjY4YjRhZjFiIDEwMDY0NAor LS0tIGEvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVs c2UuY3BwCisrKysgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVkaW9p bnB1dF9wdWxzZS5jcHAKK0BAIC00MDIsNiArNDAyLDggQEAgaW50IFFQdWxzZUF1ZGlvSW5wdXQ6 OmJ5dGVzUmVhZHkoKSBjb25zdAorIAorIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNo YXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgeworKyAgICBRX0FTU0VSVChkYXRhICE9IG51bGxwdHIg fHwgbGVuID09IDApOworKworICAgICBtX2J5dGVzQXZhaWxhYmxlID0gY2hlY2tCeXRlc1JlYWR5 KCk7CisgCisgICAgIHNldEVycm9yKFFBdWRpbzo6Tm9FcnJvcik7CitAQCAtNDExLDcgKzQxMyw4 IEBAIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4p CisgCisgICAgIGlmICghbV9wdWxsTW9kZSAmJiAhbV90ZW1wQnVmZmVyLmlzRW1wdHkoKSkgewor ICAgICAgICAgcmVhZEJ5dGVzID0gcU1pbihzdGF0aWNfY2FzdDxpbnQ+KGxlbiksIG1fdGVtcEJ1 ZmZlci5zaXplKCkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERh dGEoKSwgcmVhZEJ5dGVzKTsKKysgICAgICAgIGlmIChyZWFkQnl0ZXMpCisrICAgICAgICAgICAg bWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwgcmVhZEJ5dGVzKTsKKyAgICAg ICAgIG1fdG90YWxUaW1lVmFsdWUgKz0gcmVhZEJ5dGVzOworIAorICAgICAgICAgaWYgKHJlYWRC eXRlcyA8IG1fdGVtcEJ1ZmZlci5zaXplKCkpIHsKK0BAIC01MDIsOSArNTA1LDEwIEBAIHFpbnQ2 NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisgdm9p ZCBRUHVsc2VBdWRpb0lucHV0OjphcHBseVZvbHVtZShjb25zdCB2b2lkICpzcmMsIHZvaWQgKmRl c3QsIGludCBsZW4pCisgeworKyAgICBRX0FTU0VSVCgoc3JjICYmIGRlc3QpIHx8IGxlbiA9PSAw KTsKKyAgICAgaWYgKG1fdm9sdW1lIDwgMS5mKQorICAgICAgICAgUUF1ZGlvSGVscGVySW50ZXJu YWw6OnFNdWx0aXBseVNhbXBsZXMobV92b2x1bWUsIG1fZm9ybWF0LCBzcmMsIGRlc3QsIGxlbik7 CistICAgIGVsc2UKKysgICAgZWxzZSBpZiAobGVuKQorICAgICAgICAgbWVtY3B5KGRlc3QsIHNy YywgbGVuKTsKKyB9CisgCitTdWJtb2R1bGUgcXRwaW0gMDJlZmVmNWUuLi5mOWE4ZjBmYyAoY29t bWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHF1aWNrM2QgYjg1Y2Y2MjIuLjQ3ZGVmYzhi OgorZGlmZiAtLWdpdCBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3Np bXAvYXNzaW1wLnBybyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3Np bXAvYXNzaW1wLnBybworaW5kZXggY2E1YzQ5OWUuLjE3NGEwNzViIDEwMDY0NAorLS0tIGEvcXRx dWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCisrKysg Yi9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8K K0BAIC0xMCw3ICsxMCw3IEBAIFFUX0ZPUl9DT05GSUcgKz0gYXNzZXRpbXBvcnRlcnMtcHJpdmF0 ZQorIGluY2x1ZGUoJCRPVVRfUFdELy4uL3F0YXNzZXRpbXBvcnRlcnMtY29uZmlnLnByaSkKKyAK KyBxdENvbmZpZyhzeXN0ZW0tYXNzaW1wKTohaWYoY3Jvc3NfY29tcGlsZTpob3N0X2J1aWxkKSB7 CistICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IGFzc2ltcAorKyAgICBRTUFLRV9VU0VfUFJJVkFU RSArPSBxdWljazNkLWFzc2ltcAorIH0gZWxzZSB7CisgICAgIGluY2x1ZGUoLi4vLi4vLi4vM3Jk cGFydHkvYXNzaW1wL2Fzc2ltcC5wcmkpCisgfQorU3VibW9kdWxlIHF0cXVpY2tjb250cm9sczIg M2E2NTdkYzAuLjU2Y2U4MjMzOgorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL2lt cG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcCBiL3F0cXVpY2tj b250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51 LmNwcAoraW5kZXggZTVmZTczNGY3Li5lMzY5MjI3NzUgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5j cHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9x d2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAicXdp ZGdldHBsYXRmb3JtbWVudWl0ZW1fcC5oIgorIAorICNpbmNsdWRlIDxRdEd1aS9xd2luZG93Lmg+ CisrI2luY2x1ZGUgPFF0R3VpL3ByaXZhdGUvcWhpZ2hkcGlzY2FsaW5nX3AuaD4KKyAjaW5jbHVk ZSA8UXRXaWRnZXRzL3FtZW51Lmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xYWN0aW9uLmg+Cisg CitAQCAtMTQ1LDcgKzE0Niw3IEBAIHZvaWQgUVdpZGdldFBsYXRmb3JtTWVudTo6c2hvd1BvcHVw KGNvbnN0IFFXaW5kb3cgKndpbmRvdywgY29uc3QgUVJlY3QgJnRhcmdldFJlCisgCisgICAgIFFQ b2ludCB0YXJnZXRQb3MgPSB0YXJnZXRSZWN0LmJvdHRvbUxlZnQoKTsKKyAgICAgaWYgKHdpbmRv dykKKy0gICAgICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwodGFyZ2V0UG9zKTsK KysgICAgICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwoUUhpZ2hEcGk6OmZyb21O YXRpdmVMb2NhbFBvc2l0aW9uKHRhcmdldFBvcywgd2luZG93KSk7CisgCisgICAgIGNvbnN0IFFX aWRnZXRQbGF0Zm9ybU1lbnVJdGVtICp3aWRnZXRJdGVtID0gcW9iamVjdF9jYXN0PGNvbnN0IFFX aWRnZXRQbGF0Zm9ybU1lbnVJdGVtICo+KGl0ZW0pOworICAgICBtX21lbnUtPnBvcHVwKHRhcmdl dFBvcywgd2lkZ2V0SXRlbSA/IHdpZGdldEl0ZW0tPmFjdGlvbigpIDogbnVsbHB0cik7CitkaWZm IC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3Ry YWN0YnV0dG9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2thYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IDk1MGU0ZTA5OS4uYjgxZmJlYTBiIDEwMDY0NAor LS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0 YnV0dG9uLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2Fic3RyYWN0YnV0dG9uLmNwcAorQEAgLTM4Nyw2ICszODcsMTcgQEAgdm9pZCBRUXVpY2tB YnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNrSXRl bSAqaXRlbSkKKyAgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFuZ2Vk KCk7CisgfQorIAorK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtRGVzdHJv eWVkKFFRdWlja0l0ZW0gKml0ZW0pCisreworKyAgICBRX1EoUVF1aWNrQWJzdHJhY3RCdXR0b24p OworKyAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aXRlbURlc3Ryb3llZChpdGVtKTsKKysgICAg aWYgKGl0ZW0gPT0gaW5kaWNhdG9yKSB7CisrICAgICAgICBpbmRpY2F0b3IgPSBudWxscHRyOwor KyAgICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvcldpZHRoQ2hhbmdlZCgpOworKyAgICAg ICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKysgICAgfQorK30K KysKKyBRUXVpY2tBYnN0cmFjdEJ1dHRvbiAqUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjpm aW5kQ2hlY2tlZEJ1dHRvbigpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrQWJzdHJh Y3RCdXR0b24pOworQEAgLTExNzYsNiArMTE4NywxMiBAQCBRQWNjZXNzaWJsZTo6Um9sZSBRUXVp Y2tBYnN0cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVJvbGUoKSBjb25zdAorICAgICB9CisgICAgIHJl dHVybiBRQWNjZXNzaWJsZTo6QnV0dG9uOworIH0KKysKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0 dG9uOjphY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKQorK3sKKysgICAgUV9EKFFRdWlja0Fic3RyYWN0 QnV0dG9uKTsKKysgICAgZC0+dHJpZ2dlcigpOworK30KKyAjZW5kaWYKKyAKKyBRVF9FTkRfTkFN RVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMy L3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK2luZGV4IDBmYTQ4OTgwZS4uYWI2NjIy MGQwIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2Fic3RyYWN0YnV0dG9uX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAorQEAgLTIwOSw2ICsyMDksNyBAQCBw cm90ZWN0ZWQ6CisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorICAgICB2b2lkIGFjY2Vz c2liaWxpdHlBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKSBvdmVycmlkZTsKKyAgICAgUUFjY2Vz c2libGU6OlJvbGUgYWNjZXNzaWJsZVJvbGUoKSBjb25zdCBvdmVycmlkZTsKKysgICAgUV9JTlZP S0FCTEUgdm9pZCBhY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKTsKKyAjZW5kaWYKKyAKKyBwcml2YXRl OgorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2thYnN0cmFjdGJ1dHRvbl9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAoraW5kZXggOTI5MWMxYTg3Li5iNzI5NzIw ZjIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorQEAgLTEwOSw2ICsxMDksNyBA QCBwdWJsaWM6CisgCisgICAgIHZvaWQgaXRlbUltcGxpY2l0V2lkdGhDaGFuZ2VkKFFRdWlja0l0 ZW0gKml0ZW0pIG92ZXJyaWRlOworICAgICB2b2lkIGl0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQo UVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgaXRlbURlc3Ryb3llZChRUXVp Y2tJdGVtICppdGVtKSBvdmVycmlkZTsKKyAKKyAgICAgLy8gY29waWVkIGZyb20gcWFic3RyYWN0 YnV0dG9uLmNwcAorICAgICBzdGF0aWMgY29uc3QgaW50IEFVVE9fUkVQRUFUX0RFTEFZID0gMzAw OworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVp Y2thY3Rpb24uY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2FjdGlvbi5jcHAKK2luZGV4IDIwNDFlNzc0MS4uODYxMGNkZmFlIDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKKysrKyBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitA QCAtMTQ1LDcgKzE0NSw3IEBAIGludCBRUXVpY2tBY3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVudHJ5 OjpzaG9ydGN1dElkKCkgY29uc3QKKyAKKyB2b2lkIFFRdWlja0FjdGlvblByaXZhdGU6OlNob3J0 Y3V0RW50cnk6OmdyYWIoY29uc3QgUUtleVNlcXVlbmNlICZzaG9ydGN1dCwgYm9vbCBlbmFibGVk KQorIHsKKy0gICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSkKKysgICAgaWYgKHNob3J0Y3V0Lmlz RW1wdHkoKSB8fCBtX3Nob3J0Y3V0SWQpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFF0OjpT aG9ydGN1dENvbnRleHQgY29udGV4dCA9IFF0OjpXaW5kb3dTaG9ydGN1dDsgLy8gVE9ETworZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250 YWluZXIuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Nv bnRhaW5lci5jcHAKK2luZGV4IGYzOGMyYjA5Yy4uNmVlZDJhMDI0IDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAKKysr KyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWluZXIu Y3BwCitAQCAtMjI1LDYgKzIyNSw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6Y2xl YW51cCgpCisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVj dE1vZGVsOjpjb3VudENoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvdW50Q2hhbmdlZCk7 CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1vZGVs OjpjaGlsZHJlbkNoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvbnRlbnRDaGlsZHJlbkNo YW5nZWQpOworICAgICBkZWxldGUgY29udGVudE1vZGVsOworKyAgICBjb250ZW50TW9kZWwgPSBu dWxscHRyOworIH0KKyAKKyBRUXVpY2tJdGVtICpRUXVpY2tDb250YWluZXJQcml2YXRlOjppdGVt QXQoaW50IGluZGV4KSBjb25zdAorQEAgLTQzNiw3ICs0MzcsNyBAQCB2b2lkIFFRdWlja0NvbnRh aW5lclByaXZhdGU6OmNvbnRlbnRDaGlsZHJlbl9jbGVhcihRUW1sTGlzdFByb3BlcnR5PFFRdWlj a0l0ZW0+Cisgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50V2lkdGgo KQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50V2lk dGggfHwgcUZ1enp5Q29tcGFyZShjb250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRoKSkK KysgICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0aCwg aW1wbGljaXRDb250ZW50V2lkdGgpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1cm47 CisgCisgICAgIGNvbnRlbnRXaWR0aCA9IGltcGxpY2l0Q29udGVudFdpZHRoOworQEAgLTQ0Niw3 ICs0NDcsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRXaWR0 aCgpCisgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50SGVpZ2h0KCkK KyB7CisgICAgIFFfUShRUXVpY2tDb250YWluZXIpOworLSAgICBpZiAoaGFzQ29udGVudEhlaWdo dCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkp CisrICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhlaWdo dCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAgcmV0 dXJuOworIAorICAgICBjb250ZW50SGVpZ2h0ID0gaW1wbGljaXRDb250ZW50SGVpZ2h0OworZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250 cm9sLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250 cm9sLmNwcAoraW5kZXggYmJiZDBlNjIyLi4xZjRiNDczNDMgMTAwNjQ0CistLS0gYS9xdHF1aWNr Y29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKKysrKyBiL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAorQEAg LTg0NSw2ICs4NDUsMTMgQEAgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6ZXhlY3V0ZUJhY2tn cm91bmQoYm9vbCBjb21wbGV0ZSkKKyAgICAgICAgIHF1aWNrQ29tcGxldGVEZWZlcnJlZChxLCBi YWNrZ3JvdW5kTmFtZSgpLCBiYWNrZ3JvdW5kKTsKKyB9CisgCisrLyoKKysgICAgXGludGVybmFs CisrCisrICAgIEhpZGVzIGFuIGl0ZW0gdGhhdCB3YXMgcmVwbGFjZWQgYnkgYSBuZXdlciBvbmUs IHJhdGhlciB0aGFuCisrICAgIGRlbGV0aW5nIGl0LCBhcyB0aGUgaXRlbSBpcyB0eXBpY2FsbHkg Y3JlYXRlZCBpbiBRTUwgYW5kIGhlbmNlCisrICAgIHdlIGRvbid0IG93biBpdC4KKysqLworIHZv aWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pCisg eworICAgICBpZiAoIWl0ZW0pCitAQCAtODYzLDYgKzg3MCwyOSBAQCB2b2lkIFFRdWlja0NvbnRy b2xQcml2YXRlOjpoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKQorICNlbmRpZgorIH0KKyAK KysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAgTmFtZWQgInVuaGlkZSIgYmVjYXVzZSBpdCdz IHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGl0ZW0KKysgICAgdGhhdCB3YXMgcHJldmlvdXNseSBo aWRkZW4gYnkgXGwgaGlkZU9sZEl0ZW0oKSB3YW50cyB0byBiZQorKyAgICBzaG93biBieSBhIGNv bnRyb2wgYWdhaW4sIHN1Y2ggYXMgYSBTY3JvbGxCYXIgaW4gU2Nyb2xsVmlldy4KKysqLworK3Zv aWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAqY29u dHJvbCwgUVF1aWNrSXRlbSAqaXRlbSkKKyt7CisrICAgIFFfQVNTRVJUKGl0ZW0pOworKyAgICBx Q0RlYnVnKGxjSXRlbU1hbmFnZW1lbnQpIDw8ICJ1bmhpZGluZyBvbGQgaXRlbSIgPDwgaXRlbTsK KysKKysgICAgaXRlbS0+c2V0VmlzaWJsZSh0cnVlKTsKKysgICAgaXRlbS0+c2V0UGFyZW50SXRl bShjb250cm9sKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIC8vIEFk ZCB0aGUgaXRlbSBiYWNrIGluIHRvIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisrICAgIFFRdWlj a0FjY2Vzc2libGVBdHRhY2hlZCAqYWNjZXNzaWJsZSA9IGFjY2Vzc2libGVBdHRhY2hlZChpdGVt KTsKKysgICAgaWYgKGFjY2Vzc2libGUpCisrICAgICAgICBhY2Nlc3NpYmxlLT5zZXRJZ25vcmVk KGZhbHNlKTsKKysjZW5kaWYKKyt9CisrCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dXBk YXRlQmFzZWxpbmVPZmZzZXQoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRyb2wpOworZGlmZiAt LWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9s X3BfcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRy b2xfcF9wLmgKK2luZGV4IDhlOTc5MDc5ZS4uYTZlNjI0YzkxIDEwMDY0NAorLS0tIGEvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKKysrKyBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3BfcC5o CitAQCAtMTczLDYgKzE3Myw3IEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVC YWNrZ3JvdW5kKGJvb2wgY29tcGxldGUgPSBmYWxzZSk7CisgCisgICAgIHN0YXRpYyB2b2lkIGhp ZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pOworKyAgICBzdGF0aWMgdm9pZCB1bmhpZGVPbGRJ dGVtKFFRdWlja0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pOworIAorICAgICB2 b2lkIHVwZGF0ZUJhc2VsaW5lT2Zmc2V0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRy b2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAgYi9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNw cAoraW5kZXggZTZkYjE0ZWI1Li42MTk3ZDE1NDcgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorKysrIGIv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJv eC5jcHAKK0BAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIFFSZWN0RiBhbGlnbmVkUmVjdChRdDo6 TGF5b3V0RGlyZWN0aW9uIGRpcmVjdGlvbiwgUXQ6OkFsaWdubWVudCBhbGlnbm1lbnQKKyB2b2lk IFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OnJlc2l6ZUNvbnRlbnQoKQorIHsKKyAgICAg UV9RKFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CistICAgIGlmICghY29udGVudEl0ZW0pCisrICAg IGlmICghY29udGVudEl0ZW0gfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsKKyAK KyAgICAgUVJlY3RGIGdlb21ldHJ5ID0gcS0+Ym91bmRpbmdSZWN0KCkuYWRqdXN0ZWQocS0+bGVm dFBhZGRpbmcoKSwgcS0+dG9wUGFkZGluZygpLCAtcS0+cmlnaHRQYWRkaW5nKCksIC1xLT5ib3R0 b21QYWRkaW5nKCkpOworQEAgLTMyMiw2ICszMjIsOSBAQCB2b2lkIFFRdWlja0RpYWxvZ0J1dHRv bkJveFByaXZhdGU6OnVwZGF0ZUxheW91dCgpCisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94 UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRUXVp Y2tEaWFsb2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAgIHJl dHVybiAwOworKworICAgICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50KCk7 CisgICAgIGNvbnN0IHFyZWFsIHRvdGFsU3BhY2luZyA9IHFNYXgoMCwgY291bnQgLSAxKSAqIHNw YWNpbmc7CisgICAgIHFyZWFsIHRvdGFsV2lkdGggPSB0b3RhbFNwYWNpbmc7CitAQCAtMzQxLDYg KzM0NCw5IEBAIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRX aWR0aCgpIGNvbnN0CisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0Q29u dGVudEhlaWdodCgpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9u Qm94KTsKKysgICAgaWYgKCFjb250ZW50TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysKKyAg ICAgY29uc3QgaW50IGNvdW50ID0gY29udGVudE1vZGVsLT5jb3VudCgpOworICAgICBxcmVhbCBt YXhIZWlnaHQgPSAwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKK2Rp ZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3Zl cmxheS5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3Zl cmxheS5jcHAKK2luZGV4IDkxYmQ1OTE4NC4uMGNlNTE4Zjg0IDEwMDY0NAorLS0tIGEvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCisrKysgYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAKK0BA IC0zOTksOCArMzk5LDExIEBAIHZvaWQgUVF1aWNrT3ZlcmxheTo6aXRlbUNoYW5nZShJdGVtQ2hh bmdlIGNoYW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEgJmRhdGEpCisgICAgIFFfRChRUXVpY2tP dmVybGF5KTsKKyAgICAgUVF1aWNrSXRlbTo6aXRlbUNoYW5nZShjaGFuZ2UsIGRhdGEpOworIAor LSAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNoYW5nZSA9PSBJdGVt Q2hpbGRSZW1vdmVkQ2hhbmdlKQorKyAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hh bmdlIHx8IGNoYW5nZSA9PSBJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlKSB7CisgICAgICAgICBzZXRW aXNpYmxlKCFkLT5hbGxEcmF3ZXJzLmlzRW1wdHkoKSB8fCAhY2hpbGRJdGVtcygpLmlzRW1wdHko KSk7CisrICAgICAgICBpZiAoZGF0YS5pdGVtLT5wYXJlbnQoKSA9PSBkLT5tb3VzZUdyYWJiZXJQ b3B1cCkKKysgICAgICAgICAgICBkLT5zZXRNb3VzZUdyYWJiZXJQb3B1cChudWxscHRyKTsKKysg ICAgfQorIH0KKyAKKyB2b2lkIFFRdWlja092ZXJsYXk6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBR UmVjdEYgJm5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYgJm9sZEdlb21ldHJ5KQorZGlmZiAtLWdp dCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIu Y3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJh ci5jcHAKK2luZGV4IDRlMmY1MDlkYi4uMWM0YjMwOGNkIDEwMDY0NAorLS0tIGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKKysrKyBiL3F0 cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3BwCitA QCAtNzk3LDYgKzc5NywxNCBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJpdmF0ZTo6 aW5pdEhvcml6b250YWwoKQorICAgICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUt PnBhcmVudEl0ZW0oKSkKKyAgICAgICAgIGhvcml6b250YWwtPnN0YWNrQWZ0ZXIoZmxpY2thYmxl KTsKKyAKKysgICAgLy8gSWYgYSBzY3JvbGwgYmFyIHdhcyBwcmV2aW91c2x5IGhpZGRlbiAoZHVl IHRvIGUuZy4gc2V0dGluZyBhIG5ldyBjb250ZW50SXRlbQorKyAgICAvLyBvbiBhIFNjcm9sbFZp ZXcpLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHVuLWhpZGUgaXQuCisrICAgIC8vIFdl IGRvbid0IGJvdGhlciBjaGVja2luZyBpZiB0aGUgaXRlbSBpcyBhY3R1YWxseSB0aGUgb2xkIG9u ZSwgYmVjYXVzZQorKyAgICAvLyBpZiBpdCdzIG5vdCwgYWxsIG9mIHRoZSB0aGluZ3MgdGhlIGZ1 bmN0aW9uIGRvZXMgKHNldHRpbmcgcGFyZW50LCB2aXNpYmlsaXR5LCBldGMuKQorKyAgICAvLyBz aG91bGQgYmUgbm8tb3BzIGFueXdheS4KKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmplY3Rf Y2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlja0Nv bnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIGhvcml6b250YWwpOworKworICAg ICBsYXlvdXRIb3Jpem9udGFsKCk7CisgICAgIGhvcml6b250YWwtPnNldFNpemUoYXJlYS0+cHJv cGVydHkoIndpZHRoUmF0aW8iKS50b1JlYWwoKSk7CisgICAgIGhvcml6b250YWwtPnNldFBvc2l0 aW9uKGFyZWEtPnByb3BlcnR5KCJ4UG9zaXRpb24iKS50b1JlYWwoKSk7CitAQCAtODE4LDYgKzgy Niw5IEBAIHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0VmVydGljYWwo KQorICAgICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0ZW0oKSkK KyAgICAgICAgIHZlcnRpY2FsLT5zdGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIGlmIChh dXRvIGNvbnRyb2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQo KSkpCisrICAgICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9s LCB2ZXJ0aWNhbCk7CisrCisgICAgIGxheW91dFZlcnRpY2FsKCk7CisgICAgIHZlcnRpY2FsLT5z ZXRTaXplKGFyZWEtPnByb3BlcnR5KCJoZWlnaHRSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAgdmVy dGljYWwtPnNldFBvc2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ5UG9zaXRpb24iKS50b1JlYWwoKSk7 CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEv dHN0X3Njcm9sbHZpZXcucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xz L2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCitpbmRleCAwZThiMDgzNTIuLmNkNDkzMTE4NCAxMDA2 NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9z Y3JvbGx2aWV3LnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xz L2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCitAQCAtNTc2LDQgKzU3Niw1MSBAQCBUZXN0Q2FzZSB7 CisgICAgICAgICB2ZXJpZnkobmV3SG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorICAgICAg ICAgdmVyaWZ5KCFvbGRIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgIH0KKysKKysg ICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5k YWxvbmVGbGlja2FibGUKKysKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIHdpZHRoOiAy MDAKKysgICAgICAgICAgICBoZWlnaHQ6IDIwMAorKworKyAgICAgICAgICAgIHByb3BlcnR5IGFs aWFzIHNjcm9sbFZpZXc6IHNjcm9sbFZpZXcKKysKKysgICAgICAgICAgICBTY3JvbGxWaWV3IHsK KysgICAgICAgICAgICAgICAgaWQ6IHNjcm9sbFZpZXcKKysgICAgICAgICAgICAgICAgYW5jaG9y cy5maWxsOiBwYXJlbnQKKysgICAgICAgICAgICAgICAgY29udGVudEl0ZW06IGxpc3RWaWV3Cisr CisrICAgICAgICAgICAgICAgIHByb3BlcnR5IEl0ZW0gc29tZUJpbmRpbmc6IGNvbnRlbnRJdGVt CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIExpc3RWaWV3IHsKKysgICAgICAgICAgICAg ICAgaWQ6IGxpc3RWaWV3CisrICAgICAgICAgICAgICAgIG1vZGVsOiAxMAorKyAgICAgICAgICAg ICAgICBkZWxlZ2F0ZTogSXRlbURlbGVnYXRlIHsKKysgICAgICAgICAgICAgICAgICAgIHRleHQ6 IG1vZGVsRGF0YQorKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGxpc3RWaWV3LndpZHRoCisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysK KysgICAgLy8gVGVzdHMgdGhhdCBzY3JvbGwgYmFycyBzaG93IHVwIGZvciBhIFNjcm9sbFZpZXcg d2hlcmUKKysgICAgLy8gLSBpdHMgY29udGVudEl0ZW0gaXMgZGVjbGFyZWQgYXMgYSBzdGFuZGFs b25lLCBzZXBhcmF0ZSBpdGVtCisrICAgIC8vIC0gdGhlcmUgaXMgYSBiaW5kaW5nIHRvIGNvbnRl bnRJdGVtICh3aGljaCBjYXVzZXMgYSBkZWZhdWx0IEZsaWNrYWJsZSB0byBiZSBjcmVhdGVkKQor KyAgICBmdW5jdGlvbiB0ZXN0X2JpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNr YWJsZSgpIHsKKysgICAgICAgIGxldCByb290ID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGJpbmRp bmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSwgdGVzdENhc2UpCisrICAgICAg ICB2ZXJpZnkocm9vdCkKKysKKysgICAgICAgIGxldCBjb250cm9sID0gcm9vdC5zY3JvbGxWaWV3 CisrICAgICAgICBsZXQgdmVydGljYWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci52ZXJ0 aWNhbAorKyAgICAgICAgbGV0IGhvcml6b250YWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJh ci5ob3Jpem9udGFsCisrICAgICAgICBjb21wYXJlKHZlcnRpY2FsU2Nyb2xsQmFyLnBhcmVudCwg Y29udHJvbCkKKysgICAgICAgIGNvbXBhcmUoaG9yaXpvbnRhbFNjcm9sbEJhci5wYXJlbnQsIGNv bnRyb2wpCisrICAgICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxCYXIudmlzaWJsZSkKKysgICAg ICAgIHZlcmlmeShob3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisrCisrICAgICAgICBtb3Vz ZURyYWcodmVydGljYWxTY3JvbGxCYXIsIHZlcnRpY2FsU2Nyb2xsQmFyLndpZHRoIC8gMiwgdmVy dGljYWxTY3JvbGxCYXIuaGVpZ2h0IC8gMiwgMCwgNTApCisrICAgICAgICB2ZXJpZnkodmVydGlj YWxTY3JvbGxCYXIuYWN0aXZlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxCYXIu YWN0aXZlKQorKyAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMv YXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0 cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK2luZGV4IGIzZmFiNDFjYS4uMTBi NmJhYTAyIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xz L2RhdGEvdHN0X3N3aXRjaC5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9j b250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCitAQCAtNjA4LDQgKzYwOCwyNyBAQCBUZXN0Q2Fz ZSB7CisgICAgICAgICBtb3VzZUNsaWNrKGNvbnRyb2wuaW5kaWNhdG9yKQorICAgICAgICAgdmVy aWZ5KGNvbnRyb2wuYWN0aXZlRm9jdXMpCisgICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsKKysg ICAgICAgIGlkOiBkZWxldGlvbk9yZGVyMQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAg SW1hZ2UgeyBpZDogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9y OiBpbm5lckltYWdlIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBDb21wb25lbnQgewor KyAgICAgICAgaWQ6IGRlbGV0aW9uT3JkZXIyCisrICAgICAgICBJdGVtIHsKKysgICAgICAgICAg ICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAgIEltYWdlIHsg aWQ6IGlubmVySW1hZ2UgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGZ1bmN0aW9uIHRl c3RfZGVsZXRpb25PcmRlcigpIHsKKysgICAgICAgIHZhciBjb250cm9sMSA9IGNyZWF0ZVRlbXBv cmFyeU9iamVjdChkZWxldGlvbk9yZGVyMSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnkoY29u dHJvbDEpCisrICAgICAgICB2YXIgY29udHJvbDIgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVs ZXRpb25PcmRlcjIsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KGNvbnRyb2wyKQorKyAgICB9 CisgfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1 cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCBiL3F0cXVpY2tjb250cm9sczIv dGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFt bAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uOWU0NTk4YjlmCistLS0g L2Rldi9udWxsCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAv ZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK0BAIC0wLDAgKzEsNzggQEAKKysv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBD b21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisr KioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9v bGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkJTRCQKKysqKiBDb21tZXJjaWFsIExp Y2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxp Y2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21t ZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUg b3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVk IGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBh bnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93 d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1 c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoq CisrKiogQlNEIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHVzZSB0 aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0QgbGljZW5zZQorKyoqIGFzIGZvbGxv d3M6CisrKioKKysqKiAiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrKiogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKyoqIG1ldDoKKysq KiAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg aW4KKysqKiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQorKyoqICAgICBkaXN0cmlidXRpb24uCisrKiogICAqIE5laXRoZXIgdGhl IG5hbWUgb2YgVGhlIFF0IENvbXBhbnkgTHRkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisrKiogICAg IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg ZGVyaXZlZAorKyoqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uCisrKioKKysqKgorKyoqIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKysqKiAiQVMg SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVAorKyoqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUgorKyoqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisrKiogT1dORVIgT1IgQ09O VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws CisrKiogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUIE5PVAorKyoqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKyoqIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKyoqIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks IE9SIFRPUlQKKysqKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKysqKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiIKKysqKgorKyoqICRR VF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisraW1wb3J0IFF0 UXVpY2sgMi4xNQorK2ltcG9ydCBRdFF1aWNrLkNvbnRyb2xzIDIuMTUKKysKKytBcHBsaWNhdGlv bldpbmRvdyB7CisrICAgIGlkOiB3aW5kb3cKKysgICAgd2lkdGg6IDQwMAorKyAgICBoZWlnaHQ6 IDQwMAorKyAgICB0aXRsZTogInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uIgorKworKyAgICBw cm9wZXJ0eSBhbGlhcyBwb3B1cDogcG9wdXAKKysgICAgcHJvcGVydHkgYWxpYXMgbW9kYWxQb3B1 cDogbW9kYWxQb3B1cAorKworKyAgICBQb3B1cCB7CisrICAgICAgICBpZDogcG9wdXAKKysgICAg ICAgIHk6IHBhcmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAg ICAgaGVpZ2h0OiA1MAorKyAgICB9CisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBtb2Rh bFBvcHVwCisrICAgICAgICBtb2RhbDogdHJ1ZQorKyAgICAgICAgeTogcGFyZW50LmhlaWdodCAt IGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAgICAg ICBleGl0OiAgVHJhbnNpdGlvbiB7IFBhdXNlQW5pbWF0aW9uIHsgZHVyYXRpb246IDEwMCB9IH0K KysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1 aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0 by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCitpbmRleCA1NDk1MmQxMjguLjNkNTBl MmRkNCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2twb3B1 cC90c3RfcXF1aWNrcG9wdXAuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8v cXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAorQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2 YXRlIHNsb3RzOgorICAgICB2b2lkIGludmlzaWJsZVRvb2xUaXBPcGVuKCk7CisgICAgIHZvaWQg Y2VudGVySW5PdmVybGF5V2l0aGluU3RhY2tWaWV3SXRlbSgpOworICAgICB2b2lkIGRlc3Ryb3lE dXJpbmdFeGl0VHJhbnNpdGlvbigpOworKyAgICB2b2lkIHJlbGVhc2VBZnRlckV4aXRUcmFuc2l0 aW9uKCk7CisgfTsKKyAKKyB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6aW5pdFRlc3RDYXNlKCkKK0BA IC0xNTc1LDYgKzE1NzYsMzQgQEAgdm9pZCB0c3RfUVF1aWNrUG9wdXA6OmRlc3Ryb3lEdXJpbmdF eGl0VHJhbnNpdGlvbigpCisgICAgIFFWRVJJRlkoIWJ1dHRvbi0+aXNEb3duKCkpOworIH0KKyAK Kyt2b2lkIHRzdF9RUXVpY2tQb3B1cDo6cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKQorK3sK KysgICAgUVF1aWNrQXBwbGljYXRpb25IZWxwZXIgaGVscGVyKHRoaXMsICJyZWxlYXNlQWZ0ZXJF eGl0VHJhbnNpdGlvbi5xbWwiKTsKKysgICAgUVZFUklGWTIoaGVscGVyLnJlYWR5LCBoZWxwZXIu ZmFpbHVyZU1lc3NhZ2UoKSk7CisrCisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaGVscGVy LndpbmRvdzsKKysgICAgd2luZG93LT5zaG93KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0 Rm9yV2luZG93QWN0aXZlKHdpbmRvdykpOworKworKyAgICBRUXVpY2tPdmVybGF5ICpvdmVybGF5 ID0gUVF1aWNrT3ZlcmxheTo6b3ZlcmxheSh3aW5kb3cpOworKyAgICBRUXVpY2tQb3B1cCAqbW9k YWxQb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoIm1vZGFsUG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1 cCAqPigpOworKyAgICBRUXVpY2tQb3B1cCAqcG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJwb3B1 cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7CisrCisrICAgIG1vZGFsUG9wdXAtPm9wZW4oKTsK KysgICAgUVRSWV9WRVJJRlkobW9kYWxQb3B1cC0+aXNPcGVuZWQoKSk7CisrCisrICAgIFFUZXN0 Ojptb3VzZVByZXNzKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBRUG9p bnQoMSwgMSkpOworKyAgICAvLyB3YWl0IHVudGlsIHRoZSB0cmFuc2l0aW9uIGlzIGZpbmlzaGVk IGFuZCB0aGUgb3ZlcmxheSBoaWRlcyBpdHNlbGYKKysgICAgUVRSWV9WRVJJRlkoIW92ZXJsYXkt PmlzVmlzaWJsZSgpKTsKKysgICAgUVRlc3Q6Om1vdXNlUmVsZWFzZSh3aW5kb3csIFF0OjpMZWZ0 QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysKKysgICAgcG9wdXAtPm9w ZW4oKTsKKysgICAgUVRSWV9WRVJJRlkocG9wdXAtPmlzT3BlbmVkKCkpOworKyAgICBRVGVzdDo6 bW91c2VDbGljayh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50 KDEsIDEpKTsKKysgICAgUVRSWV9WRVJJRlkoIXBvcHVwLT5pc09wZW5lZCgpKTsKKyt9CisrCisr CisgUVRFU1RfUVVJQ0tDT05UUk9MU19NQUlOKHRzdF9RUXVpY2tQb3B1cCkKKyAKKyAjaW5jbHVk ZSAidHN0X3FxdWlja3BvcHVwLm1vYyIKK1N1Ym1vZHVsZSBxdHNjcmlwdCA1YmU5NWY5Ni4uLjRk OGU0YmQyIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0c3BlZWNoIDE3ZmM5ZmRl Li4yNTU4NDVlMjoKK2RpZmYgLS1naXQgYS9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNo ZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwIGIvcXRzcGVlY2gvc3JjL3BsdWdp bnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAoraW5kZXgg NmViNzRiOC4uYmNjN2RkMSAxMDA2NDQKKy0tLSBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0cy9z cGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKKysrKyBiL3F0c3BlZWNo L3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5j cHAKK0BAIC0zNTcsNyArMzU3LDkgQEAgUVZlY3RvcjxRTG9jYWxlPiBRVGV4dFRvU3BlZWNoRW5n aW5lU3BlZWNoZDo6YXZhaWxhYmxlTG9jYWxlcygpIGNvbnN0CisgCisgUVZlY3RvcjxRVm9pY2U+ IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVWb2ljZXMoKSBjb25zdAorIHsK Ky0gICAgcmV0dXJuIG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKS50b1Zl Y3RvcigpOworKyAgICBRTGlzdDxRVm9pY2U+IHJlc3VsdExpc3QgPSBtX3ZvaWNlcy52YWx1ZXMo bV9jdXJyZW50TG9jYWxlLm5hbWUoKSk7CisrICAgIHN0ZDo6cmV2ZXJzZShyZXN1bHRMaXN0LmJl Z2luKCksIHJlc3VsdExpc3QuZW5kKCkpOworKyAgICByZXR1cm4gcmVzdWx0TGlzdC50b1ZlY3Rv cigpOworIH0KKyAKKyAvLyBXZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIG91ciBvd24gY2xpZW50 X2lkIHNpbmNlIHNwZWVjaC1kaXNwYXRjaGVyIHNlZW1zIHRvIGJlIGluY29tcGxldGUKK1N1Ym1v ZHVsZSBxdHN2ZyAwYzA1NzgwZS4uYTdhMGYyNDk6CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcCBiL3F0c3ZnL3NyYy9wbHVn aW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKK2luZGV4IDU2MWU3N2UuLjEy ZTA1NzQgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fz dmdpb2hhbmRsZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3Zn L3Fzdmdpb2hhbmRsZXIuY3BwCitAQCAtMTkxLDYgKzE5MSw4IEBAIGJvb2wgUVN2Z0lPSGFuZGxl cjo6cmVhZChRSW1hZ2UgKmltYWdlKQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAg ICAgIGlmICghZmluYWxTaXplLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgIGlmIChxTWF4KGZp bmFsU2l6ZS53aWR0aCgpLCBmaW5hbFNpemUuaGVpZ2h0KCkpID4gMHhmZmZmKQorKyAgICAgICAg ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFzc3VtZSBjb3JydXB0ZWQgZmlsZQorICAgICAgICAg ICAgIGltYWdlLT5maWxsKGQtPmJhY2tDb2xvci5yZ2JhKCkpOworICAgICAgICAgICAgIFFQYWlu dGVyIHAoaW1hZ2UpOworICAgICAgICAgICAgIGQtPnIucmVuZGVyKCZwLCBib3VuZHMpOworZGlm ZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3N2Zy9x c3ZnaGFuZGxlci5jcHAKK2luZGV4IGE1Zjg3N2YuLjhkZGE1NjMgMTAwNjQ0CistLS0gYS9xdHN2 Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxl ci5jcHAKK0BAIC0xMzkzLDkgKzEzOTMsMTAgQEAgc3RhdGljIHZvaWQgcGFyc2VGb250KFFTdmdO b2RlICpub2RlLAorICAgICAgICAgY2FzZSBGb250U2l6ZU5vbmU6CisgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICBjYXNlIEZvbnRTaXplVmFsdWU6IHsKKy0gICAgICAgICAgICBRU3ZnSGFu ZGxlcjo6TGVuZ3RoVHlwZSBkdW1teTsgLy8gc2hvdWxkIGFsd2F5cyBiZSBwaXhlbCBzaXplCist ICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4ocGFyc2VMZW5ndGgoYXR0cmlidXRl cy5mb250U2l6ZSwgZHVtbXksIGhhbmRsZXIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHFyZWFsKDB4ZmZmZikpKTsKKysgICAgICAgICAgICBRU3ZnSGFuZGxlcjo6TGVu Z3RoVHlwZSB0eXBlOworKyAgICAgICAgICAgIHFyZWFsIGZzID0gcGFyc2VMZW5ndGgoYXR0cmli dXRlcy5mb250U2l6ZSwgdHlwZSwgaGFuZGxlcik7CisrICAgICAgICAgICAgZnMgPSBjb252ZXJ0 VG9QaXhlbHMoZnMsIHRydWUsIHR5cGUpOworKyAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6 ZShxTWluKGZzLCBxcmVhbCgweGZmZmYpKSk7CisgICAgICAgICB9CisgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICBkZWZhdWx0OgorQEAgLTI1MTMsNiArMjUxNCw4IEBAIHN0YXRpYyBib29s IHBhcnNlQW5pbWF0ZVRyYW5zZm9ybU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgICAgICAg ICArK3M7CisgICAgICAgICB9CisgICAgIH0KKysgICAgaWYgKHZhbHMuY291bnQoKSAlIDMgIT0g MCkKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgYm9vbCBvayA9IHRydWU7CisgICAg IGludCBiZWdpbiA9IHBhcnNlQ2xvY2tWYWx1ZShiZWdpblN0ciwgJm9rKTsKK0BAIC0yNTc2LDYg KzI1NzksOCBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZUNpcmNsZU5vZGUoUVN2Z05vZGUgKnBh cmVudCwKKyAgICAgcXJlYWwgbmN4ID0gdG9Eb3VibGUoY3gpOworICAgICBxcmVhbCBuY3kgPSB0 b0RvdWJsZShjeSk7CisgICAgIHFyZWFsIG5yICA9IHRvRG91YmxlKHIpOworKyAgICBpZiAobnIg PCAwLjApCisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAKKyAgICAgUVJlY3RGIHJlY3QobmN4 LW5yLCBuY3ktbnIsIG5yKjIsIG5yKjIpOworICAgICBRU3ZnTm9kZSAqY2lyY2xlID0gbmV3IFFT dmdDaXJjbGUocGFyZW50LCByZWN0KTsKK0BAIC0zMDQ2LDE1ICszMDUxLDE2IEBAIHN0YXRpYyBR U3ZnU3R5bGVQcm9wZXJ0eSAqY3JlYXRlUmFkaWFsR3JhZGllbnROb2RlKFFTdmdOb2RlICpub2Rl LAorIAorICAgICBxcmVhbCBuY3ggPSAwLjU7CisgICAgIHFyZWFsIG5jeSA9IDAuNTsKKy0gICAg cXJlYWwgbnIgID0gMC41OworICAgICBpZiAoIWN4LmlzRW1wdHkoKSkKKyAgICAgICAgIG5jeCA9 IHRvRG91YmxlKGN4KTsKKyAgICAgaWYgKCFjeS5pc0VtcHR5KCkpCisgICAgICAgICBuY3kgPSB0 b0RvdWJsZShjeSk7CisrCisrICAgIHFyZWFsIG5yID0gMC4wOworICAgICBpZiAoIXIuaXNFbXB0 eSgpKQorICAgICAgICAgbnIgPSB0b0RvdWJsZShyKTsKKy0gICAgaWYgKG5yIDwgMC41KQorLSAg ICAgICAgbnIgPSAwLjU7CisrICAgIGlmIChuciA8PSAwLjApCisrICAgICAgICByZXR1cm4gbnVs bHB0cjsKKyAKKyAgICAgcXJlYWwgbmZ4ID0gbmN4OworICAgICBpZiAoIWZ4LmlzRW1wdHkoKSkK K0BAIC0zMzUwLDcgKzMzNTYsOSBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZVRleHROb2RlKFFT dmdOb2RlICpwYXJlbnQsCisgICAgIC8vIyMjIGVkaXRhYmxlIGFuZCByb3RhdGUgbm90IGhhbmRs ZWQKKyAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKyAgICAgcXJlYWwgbnggPSBw YXJzZUxlbmd0aCh4LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnggPSBjb252ZXJ0VG9QaXhlbHMo bngsIHRydWUsIHR5cGUpOworICAgICBxcmVhbCBueSA9IHBhcnNlTGVuZ3RoKHksIHR5cGUsIGhh bmRsZXIpOworKyAgICBueSA9IGNvbnZlcnRUb1BpeGVscyhueSwgdHJ1ZSwgdHlwZSk7CisgCisg ICAgIFFTdmdOb2RlICp0ZXh0ID0gbmV3IFFTdmdUZXh0KHBhcmVudCwgUVBvaW50RihueCwgbnkp KTsKKyAgICAgcmV0dXJuIHRleHQ7CitAQCAtMzY5MSw5ICszNjk5LDcgQEAgdm9pZCBRU3ZnSGFu ZGxlcjo6cGFyc2UoKQorICAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpFbmRFbGVtZW50 OgorICAgICAgICAgICAgIGVuZEVsZW1lbnQoeG1sLT5uYW1lKCkpOworICAgICAgICAgICAgICsr cmVtYWluaW5nVW5maW5pc2hlZEVsZW1lbnRzOworLSAgICAgICAgICAgIC8vIGlmIHdlIGFyZSB1 c2luZyBzb21lYm9keSBlbHNlJ3MgcXhtbHN0cmVhbXJlYWRlcgorLSAgICAgICAgICAgIC8vIHdl IHNob3VsZCBub3QgcmVhZCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0KKy0gICAgICAgICAg ICBkb25lID0gIW1fb3duc1JlYWRlciAmJiAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmluZygi c3ZnIikpOworKyAgICAgICAgICAgIGRvbmUgPSAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmlu Zygic3ZnIikpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBRWG1sU3RyZWFt UmVhZGVyOjpDaGFyYWN0ZXJzOgorICAgICAgICAgICAgIGNoYXJhY3RlcnMoeG1sLT50ZXh0KCkp OworZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAgYi9xdHN2Zy9z cmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCitpbmRleCBiODk2MDhiLi44OWM5ZTRlIDEwMDY0NAor LS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2 Zy9xc3Znc3RydWN0dXJlLmNwcAorQEAgLTI1NSw5ICsyNTUsMTMgQEAgaW5saW5lIHN0YXRpYyBi b29sIGlzU3VwcG9ydGVkU3ZnRmVhdHVyZShjb25zdCBRU3RyaW5nICZzdHIpCisgICAgIH07Cisg CisgICAgIGlmIChzdHIubGVuZ3RoKCkgPD0gTUFYX1dPUkRfTEVOR1RIICYmIHN0ci5sZW5ndGgo KSA+PSBNSU5fV09SRF9MRU5HVEgpIHsKKysgICAgICAgIGNvbnN0IGNoYXIxNl90IHVuaWNvZGU0 NCA9IHN0ci5hdCg0NCkudW5pY29kZSgpOworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5pY29k ZTQ1ID0gc3RyLmF0KDQ1KS51bmljb2RlKCk7CisrICAgICAgICBpZiAodW5pY29kZTQ0ID49IHNp emVvZihhc3NvX3ZhbHVlcykgfHwgdW5pY29kZTQ1ID49IHNpemVvZihhc3NvX3ZhbHVlcykpCisr ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgY29uc3QgaW50IGtleSA9IHN0ci5s ZW5ndGgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbc3RyLmF0KDQ1 KS51bmljb2RlKCldCistICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tzdHIu YXQoNDQpLnVuaWNvZGUoKV07CisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVl c1t1bmljb2RlNDVdCisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1bmlj b2RlNDRdOworICAgICAgICAgaWYgKGtleSA8PSBNQVhfSEFTSF9WQUxVRSAmJiBrZXkgPj0gMCkK KyAgICAgICAgICAgICByZXR1cm4gc3RyID09IFFMYXRpbjFTdHJpbmcod29yZGxpc3Rba2V5XSk7 CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3Bw IGIvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAoraW5kZXggNjNkMDc5Ny4uMTll NzE1NCAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKKysr KyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKK0BAIC00MzMsOCArNDMzLDE2 IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6ZHJhdyhRUGFpbnRlciAqcCwgUVN2Z0V4dHJhU3Rh dGVzICYpCisgICAgIGRyYXcocCk7CisgfQorIAorK3N0YXRpYyBib29sIGlzVmFsaWRNYXRyaXgo Y29uc3QgUVRyYW5zZm9ybSAmdHJhbnNmb3JtKQorK3sKKysgICAgcXJlYWwgZGV0ZXJtaW5hbnQg PSB0cmFuc2Zvcm0uZGV0ZXJtaW5hbnQoKTsKKysgICAgcmV0dXJuIHFJc0Zpbml0ZShkZXRlcm1p bmFudCk7CisrfQorKworIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJnZXQo UVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwgY29uc3QgUVJlY3RGICZzb3Vy Y2VSZWN0KQorIHsKKysgICAgUVRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBwLT53b3JsZFRyYW5z Zm9ybSgpOworKworICAgICBRUmVjdEYgdGFyZ2V0ID0gdGFyZ2V0UmVjdDsKKyAgICAgaWYgKHRh cmdldC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIFFQYWludERldmljZSAqZGV2ID0gcC0+ZGV2aWNl KCk7CitAQCAtNDg3LDYgKzQ5NSw5IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNl VG9UYXJnZXQoUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwKKyAgICAgICAg IH0KKyAjZW5kaWYKKyAgICAgfQorKworKyAgICBpZiAoIWlzVmFsaWRNYXRyaXgocC0+d29ybGRU cmFuc2Zvcm0oKSkpCisrICAgICAgICBwLT5zZXRXb3JsZFRyYW5zZm9ybShvbGRUcmFuc2Zvcm0p OworIH0KKyAKKyBRUmVjdEYgUVN2Z1RpbnlEb2N1bWVudDo6Ym91bmRzT25FbGVtZW50KGNvbnN0 IFFTdHJpbmcgJmlkKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3Jl bmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVy ZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAKK2luZGV4IDM2Yzc2ZWMuLmRiNzFlMDIgMTAwNjQ0Cist LS0gYS9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcAor KysrIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAK K0BAIC04Niw2ICs4Niw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgb3NzX2Z1enpfMjM3 MzEoKTsKKyAgICAgdm9pZCBvc3NfZnV6el8yNDEzMSgpOworICAgICB2b2lkIG9zc19mdXp6XzI0 NzM4KCk7CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpOworKyAgICB2 b2lkIGlsbGVnYWxBbmltYXRlVHJhbnNmb3JtKCk7CisgCisgI2lmbmRlZiBRVF9OT19DT01QUkVT UworICAgICB2b2lkIHRlc3RHekxvYWRpbmcoKTsKK0BAIC0xNjQ2LDUgKzE2NDgsMjIgQEAgdm9p ZCB0c3RfUVN2Z1JlbmRlcmVyOjpvc3NfZnV6el8yNDczOCgpCisgICAgIFFTdmdSZW5kZXJlcigp LmxvYWQoUUJ5dGVBcnJheSgiPHN2Zz48cGF0aCBkPVwiYSAyIDFlLTIxMi4uLi4uXCI+IikpOwor IH0KKyAKKyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNmb3JtX2Rh dGEoKQorK3sKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRQnl0ZUFycmF5Pigic3ZnIik7CisrCisr ICAgIFFUZXN0OjpuZXdSb3coImNhc2UxIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRy YW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjgs MCw1LDBcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTIiKSA8PCBRQnl0ZUFycmF5KCI8 c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIy XCIgdmFsdWVzPVwiMSwyXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UzIikgPDwgUUJ5 dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIx XCIgZHVyPVwiMlwiIGZyb209XCIuLiA1IDJcIiB0bz1cImZcIj4iKTsKKysgICAgUVRlc3Q6Om5l d1JvdygiY2FzZTQiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9 XCJzY2FsZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBieT1cIi0tLC4uXCI+Iik7CisrfQorKwor K3ZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKQorK3sKKysg ICAgUUZFVENIKFFCeXRlQXJyYXksIHN2Zyk7CisrICAgIFFTdmdSZW5kZXJlciByZW5kZXJlcjsK KysgICAgUVZFUklGWSghcmVuZGVyZXIubG9hZChzdmcpKTsgLy8gYWxzbyBzaG91bGRuJ3QgYXNz ZXJ0CisrfQorKworIFFURVNUX01BSU4odHN0X1FTdmdSZW5kZXJlcikKKyAjaW5jbHVkZSAidHN0 X3FzdmdyZW5kZXJlci5tb2MiCitTdWJtb2R1bGUgcXR0b29scyA2OTE0ZjdjOC4uMDkwZTUyNmU6 CitkaWZmIC0tZ2l0IGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBn ZW5lcmF0b3IuY3BwIGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBn ZW5lcmF0b3IuY3BwCitpbmRleCBmZWFiMWUyZDUuLmNiZmI4MjUwNyAxMDA2NDQKKy0tLSBhL3F0 dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAorKysr IGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3IuY3Bw CitAQCAtNDQ1LDcgKzQ0NSw5IEBAIGJvb2wgSGVscEdlbmVyYXRvclByaXZhdGU6Omluc2VydEZp bGVzKGNvbnN0IFFTdHJpbmdMaXN0ICZmaWxlcywgY29uc3QgUVN0cmluZyAmCisgICAgIGlmIChm aWx0ZXJTZXRJZCA8IDApCisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICsrZmlsdGVyU2V0 SWQ7CistICAgIGZvciAoaW50IGF0dElkIDogcUFzQ29uc3QoZmlsdGVyQXR0cykpIHsKKysgICAg UUxpc3Q8aW50PiBhdHRWYWx1ZXMgPSBmaWx0ZXJBdHRzLnZhbHVlcygpOworKyAgICBzdGQ6OnNv cnQoYXR0VmFsdWVzLmJlZ2luKCksIGF0dFZhbHVlcy5lbmQoKSk7CisrICAgIGZvciAoaW50IGF0 dElkIDogcUFzQ29uc3QoYXR0VmFsdWVzKSkgeworICAgICAgICAgbV9xdWVyeS0+cHJlcGFyZShR TGF0aW4xU3RyaW5nKCJJTlNFUlQgSU5UTyBGaWxlQXR0cmlidXRlU2V0VGFibGUgIgorICAgICAg ICAgICAgICJWQUxVRVMoPywgPykiKSk7CisgICAgICAgICBtX3F1ZXJ5LT5iaW5kVmFsdWUoMCwg ZmlsdGVyU2V0SWQpOworU3VibW9kdWxlIHF0d2F5bGFuZCBkZmIwMTI5Yy4uMjkwNGUxYjM6Citk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24gYi9xdHdheWxh bmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgoraW5kZXggMmY0MjQ1ODAuLjI5MjIyMzU3IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitAQCAtMTQ5LDggKzE0OSw3IEBACisg ICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAgICAg ICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAgInVz ZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwKKyAg ICAgICAgICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAi VnVsa2FuIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNjgsNyArMTY3LDggQEAKKyAgICAgICAgICAg ICAgICAgICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBWS19FWFRFUk5BTF9NRU1P UllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAgICAgICAgICAgICAgICAg ICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CisrICAgICAg ICAgICAgfSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xpZW50IgorICAgICAgICAg fSwKKyAgICAgICAgICJlZ2xfMV81LXdheWxhbmQiOiB7CisgICAgICAgICAgICAgImxhYmVsIjog IkVHTCAxLjUgd2l0aCBXYXlsYW5kIFBsYXRmb3JtIiwKK0BAIC0xODMsNyArMTgzLDcgQEAKKyAg ICAgICAgICAgICAgICAgICAgICJlZ2xHZXRQbGF0Zm9ybURpc3BsYXkoRUdMX1BMQVRGT1JNX1dB WUxBTkRfRVhULCAoc3RydWN0IHdsX2Rpc3BsYXkgKikobnVsbHB0ciksIG51bGxwdHIpOyIKKyAg ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgInVzZSI6ICJl Z2wiCisrICAgICAgICAgICAgInVzZSI6ICJlZ2wgd2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9 CisgICAgIH0sCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3 YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9x d2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAKK2luZGV4IDEyNWIxZTE5Li5lZGNjZmU2MyAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVu c2lvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVu dGV4dGVuc2lvbi5jcHAKK0BAIC03NCw3ICs3NCwxMCBAQCB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0 ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwodm9pZCAqZGF0YSwgOjp3bF9yZWdp cworIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OmFkZFJlZ2lzdHJ5TGlzdGVuZXIoKQor IHsKKyAgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKy0gICAgZC0+d2F5bGFuZElu dGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICBpZiAo IWQtPnJlZ2lzdGVyZWQpIHsKKysgICAgICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxh eSgpLT5hZGRSZWdpc3RyeUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6 OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKysgICAgICAgIGQtPnJlZ2lzdGVyZWQgPSB0 cnVlOworKyAgICB9CisgfQorIAorIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFuZENs aWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyKQorQEAgLTg4LDYgKzkxLDEzIEBAIFFXYXlsYW5k Q2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyKQor ICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsICJhZGRSZWdpc3RyeUxpc3RlbmVy IiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KKyAKKytRV2F5bGFuZENsaWVudEV4dGVuc2lv bjo6flFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKCkKKyt7CisrICAgIFFfRChRV2F5bGFuZENsaWVu dEV4dGVuc2lvbik7CisrICAgIGlmIChkLT5yZWdpc3RlcmVkICYmICFRQ29yZUFwcGxpY2F0aW9u OjpjbG9zaW5nRG93bigpKQorKyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNwbGF5 KCktPnJlbW92ZUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRs ZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKyt9CisrCisgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFu ZEludGVncmF0aW9uICpRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6aW50ZWdyYXRpb24oKSBjb25z dAorIHsKKyAgICAgUV9EKGNvbnN0IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24u aCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5o CitpbmRleCA5ODI3MmU1Ny4uNWJkMjgzOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK0BAIC02Myw2ICs2Myw3 IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9u IDogcHVibGljIFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShib29sIGFjdGl2ZSBSRUFEIGlzQWN0 aXZlIE5PVElGWSBhY3RpdmVDaGFuZ2VkKQorIHB1YmxpYzoKKyAgICAgUVdheWxhbmRDbGllbnRF eHRlbnNpb24oY29uc3QgaW50IHZlcnNpb24pOworKyAgICB+UVdheWxhbmRDbGllbnRFeHRlbnNp b24oKTsKKyAKKyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICppbnRl Z3JhdGlvbigpIGNvbnN0OworICAgICBpbnQgdmVyc2lvbigpIGNvbnN0OworZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9wLmgg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5o CitpbmRleCA2OWNjNDZhMC4uOTA5MWVmYmUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCisrKysgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitAQCAtNjgsNiAr NjgsNyBAQCBwdWJsaWM6CisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3JhdGlv biAqd2F5bGFuZEludGVncmF0aW9uID0gbnVsbHB0cjsKKyAgICAgaW50IHZlcnNpb24gPSAtMTsK KyAgICAgYm9vbCBhY3RpdmUgPSBmYWxzZTsKKysgICAgYm9vbCByZWdpc3RlcmVkID0gZmFsc2U7 CisgfTsKKyAKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZENsaWVudEV4 dGVuc2lvblRlbXBsYXRlUHJpdmF0ZSA6IHB1YmxpYyBRV2F5bGFuZENsaWVudEV4dGVuc2lvblBy aXZhdGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAoraW5k ZXggN2UyZTMzMDguLmUzZTYwZWQ1IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhZGV2aWNlLmNwcAorQEAgLTcyLDYgKzcyLDggQEAgUVdheWxhbmREYXRhRGV2aWNlOjpR V2F5bGFuZERhdGFEZXZpY2UoUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciAqbWFuYWdlciwgUVdh eWwKKyAKKyBRV2F5bGFuZERhdGFEZXZpY2U6On5RV2F5bGFuZERhdGFEZXZpY2UoKQorIHsKKysg ICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSBXTF9EQVRBX0RF VklDRV9SRUxFQVNFX1NJTkNFX1ZFUlNJT04pCisrICAgICAgICByZWxlYXNlKCk7CisgfQorIAor IFFXYXlsYW5kRGF0YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvbk9mZmVyKCkg Y29uc3QKK0BAIC0xMTAsNyArMTEyLDcgQEAgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5kRGF0 YURldmljZTo6ZHJhZ09mZmVyKCkgY29uc3QKKyAgICAgcmV0dXJuIG1fZHJhZ09mZmVyLmRhdGEo KTsKKyB9CisgCistYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEg Km1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKytib29sIFFXYXlsYW5kRGF0YURldmlj ZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0 ZWRBY3Rpb25zLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyB7CisgICAgIGF1dG8gKnNlYXQgPSBt X2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpOworICAgICBhdXRvICpvcmlnaW4gPSBzZWF0 LT5wb2ludGVyRm9jdXMoKTsKK0BAIC0xMjMsNyArMTI1LDI4IEBAIGJvb2wgUVdheWxhbmREYXRh RGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmlj b24pCisgICAgIH0KKyAKKyAgICAgbV9kcmFnU291cmNlLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFT b3VyY2UobV9kaXNwbGF5LT5kbmRTZWxlY3Rpb25IYW5kbGVyKCksIG1pbWVEYXRhKSk7CisrCisr ICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gMykKKysgICAg ICAgIG1fZHJhZ1NvdXJjZS0+c2V0X2FjdGlvbnMoZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRlZEFj dGlvbnMpKTsKKysKKyAgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmRE YXRhU291cmNlOjpjYW5jZWxsZWQsIHRoaXMsICZRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3Vy Y2VDYW5jZWxsZWQpOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFu ZERhdGFTb3VyY2U6OmRuZFJlc3BvbnNlVXBkYXRlZCwgdGhpcywgW3RoaXNdKGJvb2wgYWNjZXB0 ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgICAgIGF1dG8gZHJhZyA9IHN0 YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bUludGVncmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICAgICAgLy8gaW4gb2xkIHZlcnNpb25z IGRyb3AgYWN0aW9uIGlzIG5vdCBzZXQsIHNvIHdlIGd1ZXNzCisrICAgICAgICAgICAgaWYgKHds X2RhdGFfc291cmNlX2dldF92ZXJzaW9uKG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCkpIDwgMykgewor KyAgICAgICAgICAgICAgICBkcmFnLT5zZXRSZXNwb25zZShhY2NlcHRlZCk7CisrICAgICAgICAg ICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgcmVz cG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJlc3Bv bnNlKHJlc3BvbnNlKTsKKysgICAgICAgICAgICB9CisrICAgIH0pOworKyAgICBjb25uZWN0KG1f ZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmRuZERyb3BwZWQsIHRoaXMs IFtdKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgUVBs YXRmb3JtRHJvcFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAg ICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxh dGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXREcm9wUmVzcG9uc2UocmVzcG9uc2UpOwor KyAgICB9KTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRh U291cmNlOjpmaW5pc2hlZCwgdGhpcywgW10oKSB7CisrICAgICAgICBzdGF0aWNfY2FzdDxRV2F5 bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigp LT5kcmFnKCkpLT5maW5pc2hEcmFnKCk7CisrICAgIH0pOworIAorICAgICBzdGFydF9kcmFnKG1f ZHJhZ1NvdXJjZS0+b2JqZWN0KCksIG9yaWdpbi0+d2xTdXJmYWNlKCksIGljb24tPndsU3VyZmFj ZSgpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5zZXJpYWwoKSk7CisgICAgIHJl dHVybiB0cnVlOworQEAgLTE1Miw3ICsxNzUsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6 ZGF0YV9kZXZpY2VfZHJvcCgpCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3Vw cG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAg ICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVk QWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlv bjsKKysgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0 aW9ucygpOworICAgICB9IGVsc2UgeworICAgICAgICAgcmV0dXJuOworICAgICB9CitAQCAtMTYy LDcgKzE4NSwxMSBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZHJvcCgp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkp OworIAorICAgICBpZiAoZHJhZykgeworLSAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFn ICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygp KS0+ZmluaXNoRHJhZyhyZXNwb25zZSk7CisrICAgICAgICBhdXRvIGRyYWcgPSAgc3RhdGljX2Nh c3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdy YXRpb24oKS0+ZHJhZygpKTsKKysgICAgICAgIGRyYWctPnNldERyb3BSZXNwb25zZShyZXNwb25z ZSk7CisrICAgICAgICBkcmFnLT5maW5pc2hEcmFnKCk7CisrICAgIH0gZWxzZSBpZiAobV9kcmFn T2ZmZXIpIHsKKysgICAgICAgIG1fZHJhZ09mZmVyLT5maW5pc2goKTsKKyAgICAgfQorIH0KKyAK K0BAIC0xODYsNyArMjEzLDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNl X2VudGVyKHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgIHN1 cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSBp ZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1pbWVE YXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBRdDo6 TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9 IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKyAgICAgY29uc3Qg UVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFj ZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9y dGVkQWN0aW9ucywKK0BAIC0xOTcsMTEgKzIyNCw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpkYXRhX2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1cmZhY2Us CisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNwb25z ZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAgICAg ICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2Vy aWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7Cist ICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+ b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRSZXNw b25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorIAorIHZvaWQgUVdheWxhbmRE YXRhRGV2aWNlOjpkYXRhX2RldmljZV9sZWF2ZSgpCitAQCAtMjM1LDEwICsyNTgsMTAgQEAgdm9p ZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1lLCB3 bF9maXhlZF90IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5z dXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1f ZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpD b3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1 cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9 CisgCistICAgIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5c3Rl bUludGVyZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2lu dCwgc3VwcG9ydGVkQWN0aW9ucywKKysgICAgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2Ug cmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dpbmRv dywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUUd1aUFwcGxpY2F0aW9uOjptb3VzZUJ1dHRvbnMoKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFHdWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCitAQCAtMjQ2LDExICsy NjksNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVpbnQz Ml90IHRpbWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdh eWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24o KS0+ZHJhZygpKS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlmIChy ZXNwb25zZS5pc0FjY2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1f ZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9y bWF0KCkudG9VdGY4KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgd2xf ZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBu dWxscHRyKTsKKy0gICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVz cG9uc2UpOworIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorQEAgLTI3 NywxNCArMjk2LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpzZWxlY3Rpb25Tb3VyY2VD YW5jZWxsZWQoKQorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgdm9pZCBRV2F5bGFuZERh dGFEZXZpY2U6OmRyYWdTb3VyY2VDYW5jZWxsZWQoKQorIHsKKysgICAgc3RhdGljX2Nhc3Q8UVdh eWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24o KS0+ZHJhZygpKS0+ZmluaXNoRHJhZygpOworICAgICBtX2RyYWdTb3VyY2UucmVzZXQoKTsKKyB9 CisgCistdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VUYXJnZXRDaGFuZ2VkKGNv bnN0IFFTdHJpbmcgJm1pbWVUeXBlKQorLXsKKy0gICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFn ICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygp KS0+dXBkYXRlVGFyZ2V0KG1pbWVUeXBlKTsKKy19CistCisgUVBvaW50IFFXYXlsYW5kRGF0YURl dmljZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25kKSBj b25zdAorIHsKKyAgICAgUVBvaW50IHBudCh3bF9maXhlZF90b19pbnQoeCksIHdsX2ZpeGVkX3Rv X2ludCh5KSk7CitAQCAtMjk3LDYgKzMxMiwzMyBAQCBRUG9pbnQgUVdheWxhbmREYXRhRGV2aWNl OjpjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbgor ICAgICB9CisgICAgIHJldHVybiBwbnQ7CisgfQorKworK3ZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpzZW5kUmVzcG9uc2UoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQ bGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt7CisrICAgIGlmIChyZXNwb25zZS5p c0FjY2VwdGVkKCkpIHsKKysgICAgICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihv YmplY3QoKSkgPj0gMykKKysgICAgICAgICAgICBtX2RyYWdPZmZlci0+c2V0X2FjdGlvbnMoZHJv cEFjdGlvbnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMpLCBkcm9wQWN0aW9uc1RvV2wocmVzcG9uc2Uu YWNjZXB0ZWRBY3Rpb24oKSkpOworKworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2Vu dGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKSk7CisrICAgIH0gZWxzZSB7Cisr ICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIFFTdHJpbmcoKSk7Cisr ICAgIH0KKyt9CisrCisraW50IFFXYXlsYW5kRGF0YURldmljZTo6ZHJvcEFjdGlvbnNUb1dsKFF0 OjpEcm9wQWN0aW9ucyBhY3Rpb25zKQorK3sKKysKKysgICAgaW50IHdsQWN0aW9ucyA9IFdMX0RB VEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9OT05FOworKyAgICBpZiAoYWN0aW9ucyAmIFF0 OjpDb3B5QWN0aW9uKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01BTkFH RVJfRE5EX0FDVElPTl9DT1BZOworKyAgICBpZiAoYWN0aW9ucyAmIChRdDo6TW92ZUFjdGlvbiB8 IFF0OjpUYXJnZXRNb3ZlQWN0aW9uKSkKKysgICAgICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRBX0RF VklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRTsKKysKKysgICAgLy8gd2F5bGFuZCBkb2VzIG5v dCBzdXBwb3J0IExpbmtBY3Rpb24gYXQgdGhlIHRpbWUgb2Ygd3JpdGluZworKyAgICByZXR1cm4g d2xBY3Rpb25zOworK30KKysKKysKKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQor IAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZp Y2VfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAoraW5k ZXggMTZjM2FkMjguLjgwMWRjYzJjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhZGV2aWNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkYXRhZGV2aWNlX3AuaAorQEAgLTY0LDYgKzY0LDcgQEAgUVRfUkVRVUlSRV9DT05GSUcod2F5 bGFuZF9kYXRhZGV2aWNlKTsKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRTWltZURh dGE7CisrY2xhc3MgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2U7CisgY2xhc3MgUVdpbmRvdzsKKyAK KyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKK0BAIC04OSw3ICs5MCw3IEBAIHB1YmxpYzoK KyAKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICBRV2F5bGFuZERhdGFPZmZlciAq ZHJhZ09mZmVyKCkgY29uc3Q7CistICAgIGJvb2wgc3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURh dGEsIFFXYXlsYW5kV2luZG93ICppY29uKTsKKysgICAgYm9vbCBzdGFydERyYWcoUU1pbWVEYXRh ICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5kV2lu ZG93ICppY29uKTsKKyAgICAgdm9pZCBjYW5jZWxEcmFnKCk7CisgI2VuZGlmCisgCitAQCAtMTA5 LDEzICsxMTAsMTYgQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorICNpZiBRVF9DT05GSUcoZHJhZ2Fu ZGRyb3ApCisgICAgIHZvaWQgZHJhZ1NvdXJjZUNhbmNlbGxlZCgpOworLSAgICB2b2lkIGRyYWdT b3VyY2VUYXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKyAjZW5kaWYKKyAK KyBwcml2YXRlOgorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFQb2ludCBjYWxj dWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0OworICNl bmRpZgorKyAgICB2b2lkIHNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0 aW9ucywgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysKKysgICAg c3RhdGljIGludCBkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGRyb3BBY3Rpb25zKTsK KysKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBR V2F5bGFuZElucHV0RGV2aWNlICptX2lucHV0RGV2aWNlID0gbnVsbHB0cjsKK2RpZmYgLS1naXQg YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcCBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitpbmRleCAz NWQ2NzMwNy4uNmRjNGY3N2YgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK0BAIC01MCw4ICs1MCw4IEBAIFFUX0JFR0lOX05B TUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorLVFXYXlsYW5kRGF0 YURldmljZU1hbmFnZXI6OlFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5 ICpkaXNwbGF5LCB1aW50MzJfdCBpZCkKKy0gICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2VyKGRp c3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCAxKQorK1FXYXlsYW5kRGF0YURldmljZU1hbmFnZXI6 OlFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBpbnQg dmVyc2lvbiwgdWludDMyX3QgaWQpCisrICAgIDogd2xfZGF0YV9kZXZpY2VfbWFuYWdlcihkaXNw bGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAgICAgLCBtX2Rpc3Bs YXkoZGlzcGxheSkKKyB7CisgICAgIC8vIENyZWF0ZSB0cmFuc2ZlciBkZXZpY2VzIGZvciBhbGwg aW5wdXQgZGV2aWNlcy4KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YWRldmljZW1hbmFnZXJfcC5oCitpbmRleCBiZDA1YzBmYi4uNTEwZDliZTQgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAorKysr IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgKK0BA IC02OCw3ICs2OCw3IEBAIGNsYXNzIFFXYXlsYW5kSW5wdXREZXZpY2U7CisgY2xhc3MgUV9XQVlM QU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciA6IHB1YmxpYyBRdFdh eWxhbmQ6OndsX2RhdGFfZGV2aWNlX21hbmFnZXIKKyB7CisgcHVibGljOgorLSAgICBRV2F5bGFu ZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3QgaWQp OworKyAgICBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxh eSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKTsKKyAgICAgflFXYXlsYW5kRGF0YURldmljZU1h bmFnZXIoKSBvdmVycmlkZTsKKyAKKyAgICAgUVdheWxhbmREYXRhRGV2aWNlICpnZXREYXRhRGV2 aWNlKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlKTsKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK2luZGV4IDIyOTdlOGExLi5mZTBlYThjOSAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAorKysr IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitAQCAtODIsNiAr ODIsMTUgQEAgUU1pbWVEYXRhICpRV2F5bGFuZERhdGFPZmZlcjo6bWltZURhdGEoKQorICAgICBy ZXR1cm4gbV9taW1lRGF0YS5kYXRhKCk7CisgfQorIAorK1F0OjpEcm9wQWN0aW9ucyBRV2F5bGFu ZERhdGFPZmZlcjo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0CisreworKyAgICBpZiAod2xfZGF0 YV9vZmZlcl9nZXRfdmVyc2lvbihjb25zdF9jYXN0PDo6d2xfZGF0YV9vZmZlcio+KG9iamVjdCgp KSkgPCAzKSB7CisrICAgICAgICByZXR1cm4gUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6Q29weUFjdGlv bjsKKysgICAgfQorKworKyAgICByZXR1cm4gbV9zdXBwb3J0ZWRBY3Rpb25zOworK30KKysKKyB2 b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpzdGFydFJlY2VpdmluZyhjb25zdCBRU3RyaW5nICZtaW1l VHlwZSwgaW50IGZkKQorIHsKKyAgICAgcmVjZWl2ZShtaW1lVHlwZSwgZmQpOworQEAgLTkzLDYg KzEwMiwyMiBAQCB2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX29mZmVyKGNvbnN0 IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyAgICAgbV9taW1lRGF0YS0+YXBwZW5kRm9ybWF0KG1pbWVf dHlwZSk7CisgfQorIAorK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfYWN0aW9u KHVpbnQzMl90IGRuZF9hY3Rpb24pCisreworKyAgICBRX1VOVVNFRChkbmRfYWN0aW9uKTsKKysg ICAgLy8gVGhpcyBpcyB0aGUgY29tcG9zaXRvciB0ZWxsaW5nIHRoZSBkcmFnIHRhcmdldCB3aGF0 IGFjdGlvbiBpdCBzaG91bGQgcGVyZm9ybQorKyAgICAvLyBJdCBkb2VzIG5vdCBtYXAgbmljZWx5 IGludG8gUXQgZmluYWwgZHJvcCBzZW1hbnRpY3MsIG90aGVyIHRoYW4gcHJldGVuZGluZyB0aGVy ZSBpcyBvbmx5IG9uZSBzdXBwb3J0ZWQgYWN0aW9uPworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0 YU9mZmVyOjpkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rpb25z KQorK3sKKysgICAgbV9zdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkRyb3BBY3Rpb25zKCk7CisrICAg IGlmIChzb3VyY2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9N T1ZFKQorKyAgICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpNb3ZlQWN0aW9uOworKyAg ICBpZiAoc291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05f Q09QWSkKKysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBRdDo6Q29weUFjdGlvbjsKKyt9 CisrCisgUVdheWxhbmRNaW1lRGF0YTo6UVdheWxhbmRNaW1lRGF0YShRV2F5bGFuZEFic3RyYWN0 RGF0YU9mZmVyICpkYXRhT2ZmZXIpCisgICAgIDogbV9kYXRhT2ZmZXIoZGF0YU9mZmVyKQorIHsK K0BAIC0xNjMsMTcgKzE4OCwxOCBAQCBRVmFyaWFudCBRV2F5bGFuZE1pbWVEYXRhOjpyZXRyaWV2 ZURhdGFfc3lzKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBRVmFyaWFudDo6VAorIAorIGludCBR V2F5bGFuZE1pbWVEYXRhOjpyZWFkRGF0YShpbnQgZmQsIFFCeXRlQXJyYXkgJmRhdGEpIGNvbnN0 CisgeworLSAgICBmZF9zZXQgcmVhZHNldDsKKy0gICAgRkRfWkVSTygmcmVhZHNldCk7CistICAg IEZEX1NFVChmZCwgJnJlYWRzZXQpOworLSAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworKyAg ICBzdHJ1Y3QgcG9sbGZkIHJlYWRzZXQ7CisrICAgIHJlYWRzZXQuZmQgPSBmZDsKKysgICAgcmVh ZHNldC5ldmVudHMgPSBQT0xMSU47CisrICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworICAg ICB0aW1lb3V0LnR2X3NlYyA9IDE7CistICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisrICAgIHRp bWVvdXQudHZfbnNlYyA9IDA7CisrCisgCisgICAgIFFfRk9SRVZFUiB7CistICAgICAgICBpbnQg cmVhZHkgPSBzZWxlY3QoRkRfU0VUU0laRSwgJnJlYWRzZXQsIG51bGxwdHIsIG51bGxwdHIsICZ0 aW1lb3V0KTsKKysgICAgICAgIGludCByZWFkeSA9IHF0X3NhZmVfcG9sbCgmcmVhZHNldCwgMSwg JnRpbWVvdXQpOworICAgICAgICAgaWYgKHJlYWR5IDwgMCkgeworLSAgICAgICAgICAgIHFXYXJu aW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBzZWxlY3QoKSBmYWlsZWQiOworKyAgICAgICAg ICAgIHFXYXJuaW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBxdF9zYWZlX3BvbGwoKSBmYWls ZWQiOworICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0gZWxzZSBpZiAocmVhZHkg PT0gMCkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJRV2F5bGFuZERhdGFPZmZlcjogdGltZW91 dCByZWFkaW5nIGZyb20gcGlwZSIpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZGF0YW9mZmVyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0 YW9mZmVyX3AuaAoraW5kZXggOWNmMTQ4M2MuLjZmNjY3Mzk4IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCisrKysgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK0BAIC04Miw2ICs4Miw3IEBAIHB1YmxpYzoK KyAgICAgZXhwbGljaXQgUVdheWxhbmREYXRhT2ZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5 LCBzdHJ1Y3QgOjp3bF9kYXRhX29mZmVyICpvZmZlcik7CisgICAgIH5RV2F5bGFuZERhdGFPZmZl cigpIG92ZXJyaWRlOworICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgb3ZlcnJpZGU7CisrICAg IFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3Q7CisgCisgICAgIFFTdHJp bmcgZmlyc3RGb3JtYXQoKSBjb25zdDsKKyAKK0BAIC04OSwxMCArOTAsMTMgQEAgcHVibGljOgor IAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJpbmcg Jm1pbWVfdHlwZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9u cyh1aW50MzJfdCBzb3VyY2VfYWN0aW9ucykgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZl cl9hY3Rpb24odWludDMyX3QgZG5kX2FjdGlvbikgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAg ICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRU2NvcGVkUG9p bnRlcjxRV2F5bGFuZE1pbWVEYXRhPiBtX21pbWVEYXRhOworKyAgICBRdDo6RHJvcEFjdGlvbnMg bV9zdXBwb3J0ZWRBY3Rpb25zOworIH07CisgCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGF0YXNvdXJjZS5jcHAKK2luZGV4IGY0NTEyMmZiLi41NTk5Y2JkNCAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKK0BAIC0xMDEsNyArMTAx LDMyIEBAIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9zZW5kKGNvbnN0IFFT dHJpbmcgJm1pbWVfdHlwZSwgaW50MzJfdCBmZCkKKyAKKyB2b2lkIFFXYXlsYW5kRGF0YVNvdXJj ZTo6ZGF0YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyB7CistICAg IFFfRU1JVCB0YXJnZXRDaGFuZ2VkKG1pbWVfdHlwZSk7CisrICAgIG1fYWNjZXB0ZWQgPSAhbWlt ZV90eXBlLmlzRW1wdHkoKTsKKysgICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2Vw dGVkLCBtX2Ryb3BBY3Rpb24pOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0 YV9zb3VyY2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikKKyt7CisrICAgIFF0OjpEcm9wQWN0aW9u IHF0QWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKysKKysgICAgaWYgKGFjdGlvbiA9PSBXTF9E QVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIHF0QWN0aW9uID0g UXQ6Ok1vdmVBY3Rpb247CisrICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklDRV9N QU5BR0VSX0RORF9BQ1RJT05fQ09QWSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6OkNvcHlBY3Rp b247CisrCisrICAgIG1fZHJvcEFjdGlvbiA9IHF0QWN0aW9uOworKyAgICBRX0VNSVQgZG5kUmVz cG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3ZvaWQgUVdh eWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9kbmRfZmluaXNoZWQoKQorK3sKKysgICAgUV9F TUlUIGZpbmlzaGVkKCk7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3Nv dXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKQorK3sKKysKKysgICAgUV9FTUlUIGRuZERyb3BwZWQo bV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyB9CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmggYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitpbmRleCAyNWFmZmY3OS4uOTZmMDdiYzMgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitAQCAtNzcs MTcgKzc3LDI1IEBAIHB1YmxpYzoKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSgpIGNvbnN0Owor IAorIFFfU0lHTkFMUzoKKy0gICAgdm9pZCB0YXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1p bWVfdHlwZSk7CisgICAgIHZvaWQgY2FuY2VsbGVkKCk7CisrICAgIHZvaWQgZmluaXNoZWQoKTsK KysKKysgICAgdm9pZCBkbmRSZXNwb25zZVVwZGF0ZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRyb3BB Y3Rpb24gYWN0aW9uKTsKKysgICAgdm9pZCBkbmREcm9wcGVkKGJvb2wgYWNjZXB0ZWQsIFF0OjpE cm9wQWN0aW9uIGFjdGlvbik7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFfc291cmNl X2NhbmNlbGxlZCgpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3NlbmQoY29uc3Qg UVN0cmluZyAmbWltZV90eXBlLCBpbnQzMl90IGZkKSBvdmVycmlkZTsKKyAgICAgdm9pZCBkYXRh X3NvdXJjZV90YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysgICAg dm9pZCBkYXRhX3NvdXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKSBvdmVycmlkZTsKKysgICAgdm9p ZCBkYXRhX3NvdXJjZV9kbmRfZmluaXNoZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRhX3Nv dXJjZV9hY3Rpb24odWludDMyX3QgYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAg ICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFNaW1lRGF0YSAq bV9taW1lX2RhdGEgPSBudWxscHRyOworKyAgICBib29sIG1fYWNjZXB0ZWQgPSBmYWxzZTsKKysg ICAgUXQ6OkRyb3BBY3Rpb24gbV9kcm9wQWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyB9Owor IAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3BsYXku Y3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAoraW5kZXggZjEw YzFmNzkuLmMwMWUyMzhiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkaXNwbGF5LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5 LmNwcAorQEAgLTg1LDEwICs4NSwyMDMgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKysj aW5jbHVkZSA8dHVwbGU+IC8vIGZvciBzdGQ6OnRpZQorKworK3N0YXRpYyB2b2lkIGNoZWNrV2F5 bGFuZEVycm9yKHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQorK3sKKysgICAgaW50IGVjb2Rl ID0gd2xfZGlzcGxheV9nZXRfZXJyb3IoZGlzcGxheSk7CisrICAgIGlmICgoZWNvZGUgPT0gRVBJ UEUgfHwgZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKysgICAgICAgIC8vIHNwZWNpYWwgY2FzZSB0 aGlzIHRvIHByb3ZpZGUgYSBuaWNlciBlcnJvcgorKyAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXls YW5kIGNvbm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9yIGRpZT8iKTsK KysgICAgfSBlbHNlIHsKKysgICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9u IGV4cGVyaWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUpKTsKKysgICAg fQorKyAgICBfZXhpdCgxKTsKKyt9CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFtZXNw YWNlIFF0V2F5bGFuZENsaWVudCB7CisgCisrY2xhc3MgRXZlbnRUaHJlYWQgOiBwdWJsaWMgUVRo cmVhZAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIGVudW0gT3BlcmF0aW5nTW9k ZSB7CisrICAgICAgICBFbWl0VG9EaXNwYXRjaCwgLy8gRW1pdCB0aGUgc2lnbmFsLCBhbGxvdyBk aXNwYXRjaGluZyBpbiBhIGRpZmZlcm50IHRocmVhZC4KKysgICAgICAgIFNlbGZEaXNwYXRjaCwg Ly8gRGlzcGF0Y2ggdGhlIGV2ZW50cyBpbnNpZGUgdGhpcyB0aHJlYWQuCisrICAgIH07CisrCisr ICAgIEV2ZW50VGhyZWFkKHN0cnVjdCB3bF9kaXNwbGF5ICogd2wsIHN0cnVjdCB3bF9ldmVudF9x dWV1ZSAqIGV2X3F1ZXVlLAorKyAgICAgICAgICAgICAgICBPcGVyYXRpbmdNb2RlIG1vZGUpCisr ICAgICAgICA6IG1fZmQod2xfZGlzcGxheV9nZXRfZmQod2wpKQorKyAgICAgICAgLCBtX3BpcGVm ZHsgLTEsIC0xIH0KKysgICAgICAgICwgbV93bGRpc3BsYXkod2wpCisrICAgICAgICAsIG1fd2xl dnF1ZXVlKGV2X3F1ZXVlKQorKyAgICAgICAgLCBtX21vZGUobW9kZSkKKysgICAgICAgICwgbV9y ZWFkaW5nKHRydWUpCisrICAgICAgICAsIG1fcXVpdHRpbmcoZmFsc2UpCisrICAgIHsKKysgICAg ICAgIHNldE9iamVjdE5hbWUoUVN0cmluZ0xpdGVyYWwoIldheWxhbmRFdmVudFRocmVhZCIpKTsK KysgICAgfQorKworKyAgICB2b2lkIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpCisrICAgIHsKKysg ICAgICAgIC8qCisrICAgICAgICAgKiBEaXNwYXRjaCBwZW5kaW5nIGV2ZW50cyBhbmQgZmx1c2gg dGhlIHJlcXVlc3RzIGF0IGxlYXN0IG9uY2UuIElmIHRoZSBldmVudCB0aHJlYWQKKysgICAgICAg ICAqIGlzIG5vdCByZWFkaW5nLCB0cnkgdG8gY2FsbCBfcHJlcGFyZV9yZWFkKCkgdG8gYWxsb3cg dGhlIGV2ZW50IHRocmVhZCB0byBwb2xsKCkuCisrICAgICAgICAgKiBJZiB0aGF0IGZhaWxzLCBy ZS10cnkgZGlzcGF0Y2ggJiBmbHVzaCBhZ2FpbiB1bnRpbCBfcHJlcGFyZV9yZWFkKCkgaXMgc3Vj Y2Vzc2Z1bC4KKysgICAgICAgICAqCisrICAgICAgICAgKiBUaGlzIGFsbG93IGFueSBjYWxsIHRv IHJlYWRBbmREaXNwYXRjaEV2ZW50cygpIHRvIHN0YXJ0IGV2ZW50IHRocmVhZCdzIHBvbGxpbmcs CisrICAgICAgICAgKiBub3Qgb25seSB0aGUgb25lIGlzc3VlZCBmcm9tIGV2ZW50IHRocmVhZCdz IHdhaXRGb3JSZWFkaW5nKCksIHdoaWNoIG1lYW5zIGZ1bmN0aW9ucworKyAgICAgICAgICogY2Fs bGVkIGZyb20gZGlzcGF0Y2hfcGVuZGluZygpIGNhbiBzYWZlbHkgc3BpbiBhbiBldmVudCBsb29w LgorKyAgICAgICAgICovCisrICAgICAgICBmb3IgKDs7KSB7CisrICAgICAgICAgICAgaWYgKGRp c3BhdGNoUXVldWVQZW5kaW5nKCkgPCAwKSB7CisrICAgICAgICAgICAgICAgIGNoZWNrV2F5bGFu ZEVycm9yKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAg ICAgIH0KKysKKysgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1fd2xkaXNwbGF5KTsKKysK KysgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGlmIGV2ZW50IHRocmVhZCBpcyByZWFk aW5nIGV2ZXJ5IHRpbWUgd2UgZGlzcGF0Y2gKKysgICAgICAgICAgICAvLyBzb21ldGhpbmcsIGFz IHRoYXQgbWF5IHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBmdW5jdGlvbi4KKysgICAgICAgICAgICBp ZiAobV9yZWFkaW5nLmxvYWRBY3F1aXJlKCkpCisrICAgICAgICAgICAgICAgIGJyZWFrOworKwor KyAgICAgICAgICAgIGlmIChwcmVwYXJlUmVhZFF1ZXVlKCkgPT0gMCkgeworKyAgICAgICAgICAg ICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAgICAgICAgIG1fcmVhZGlu Zy5zdG9yZVJlbGVhc2UodHJ1ZSk7CisrICAgICAgICAgICAgICAgIG1fY29uZC53YWtlT25lKCk7 CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysg ICAgfQorKworKyAgICB2b2lkIHN0b3AoKQorKyAgICB7CisrICAgICAgICAvLyBXZSBoYXZlIHRv IGJvdGggd3JpdGUgdG8gdGhlIHBpcGUgYW5kIHNldCB0aGUgZmxhZywgYXMgdGhlIHRocmVhZCBt YXkgYmUKKysgICAgICAgIC8vIGVpdGhlciBpbiB0aGUgcG9sbCgpIG9yIHdhaXRpbmcgZm9yIF9w cmVwYXJlX3JlYWQoKS4KKysgICAgICAgIGlmIChtX3BpcGVmZFsxXSAhPSAtMSAmJiB3cml0ZSht X3BpcGVmZFsxXSwgIlwwIiwgMSkgPT0gLTEpCisrICAgICAgICAgICAgcVdhcm5pbmcoIkZhaWxl ZCB0byB3cml0ZSB0byB0aGUgcGlwZTogJXMuIiwgc3RyZXJyb3IoZXJybm8pKTsKKysKKysgICAg ICAgIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAg ICAgbV9xdWl0dGluZyA9IHRydWU7CisrICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsKKysg ICAgICAgIH0KKysKKysgICAgICAgIHdhaXQoKTsKKysgICAgfQorKworK1FfU0lHTkFMUzoKKysg ICAgdm9pZCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrcHJvdGVjdGVkOgorKyAgICB2b2lk IHJ1bigpIG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIHdlIHVzZSB0aGlzIHBpcGUgdG8g bWFrZSB0aGUgbG9vcCBleGl0IG90aGVyd2lzZSBpZiB3ZSBzaW1wbHkgdXNlZCBhIGZsYWcgb24g dGhlIGxvb3AgY29uZGl0aW9uLCBpZiBzdG9wKCkgZ2V0cworKyAgICAgICAgLy8gY2FsbGVkIHdo aWxlIHBvbGwoKSBpcyBibG9ja2luZyB0aGUgdGhyZWFkIHdpbGwgbmV2ZXIgcXVpdCBzaW5jZSB0 aGVyZSBhcmUgbm8gd2F5bGFuZCBtZXNzYWdlcyBjb21pbmcgYW55bW9yZS4KKysgICAgICAgIHN0 cnVjdCBQaXBlCisrICAgICAgICB7CisrICAgICAgICAgICAgUGlwZShpbnQgKmZkcykKKysgICAg ICAgICAgICAgICAgOiBmZHMoZmRzKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg aWYgKHF0X3NhZmVfcGlwZShmZHMpICE9IDApCisrICAgICAgICAgICAgICAgICAgICBxV2Fybmlu ZygiUGlwZSBjcmVhdGlvbiBmYWlsZWQuIFF1aXR0aW5nIG1heSBoYW5nLiIpOworKyAgICAgICAg ICAgIH0KKysgICAgICAgICAgICB+UGlwZSgpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICBpZiAoZmRzWzBdICE9IC0xKSB7CisrICAgICAgICAgICAgICAgICAgICBjbG9zZShmZHNb MF0pOworKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpbnQgKmZkczsKKysgICAgICAg IH0gcGlwZShtX3BpcGVmZCk7CisrCisrICAgICAgICAvLyBNYWtlIHRoZSBtYWluIHRocmVhZCBj YWxsIHdsX3ByZXBhcmVfcmVhZCgpLCBkaXNwYXRjaCB0aGUgcGVuZGluZyBtZXNzYWdlcyBhbmQg Zmx1c2ggdGhlCisrICAgICAgICAvLyBvdXRib3VuZCBvbmVzLiBXYWl0IHVudGlsIGl0J3MgZG9u ZSBiZWZvcmUgcHJvY2VlZGluZywgdW5sZXNzIHdlJ3JlIHRvbGQgdG8gcXVpdC4KKysgICAgICAg IHdoaWxlICh3YWl0Rm9yUmVhZGluZygpKSB7CisrICAgICAgICAgICAgcG9sbGZkIGZkc1syXSA9 IHsgeyBtX2ZkLCBQT0xMSU4sIDAgfSwgeyBtX3BpcGVmZFswXSwgUE9MTElOLCAwIH0gfTsKKysg ICAgICAgICAgICBwb2xsKGZkcywgMiwgLTEpOworKworKyAgICAgICAgICAgIGlmIChmZHNbMV0u cmV2ZW50cyAmIFBPTExJTikgeworKyAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCByZWFsbHkg Y2FyZSB0byByZWFkIHRoZSBieXRlIHRoYXQgd2FzIHdyaXR0ZW4gaGVyZSBzaW5jZSB3ZSdyZSBj bG9zaW5nIGRvd24KKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZChtX3ds ZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysKKysg ICAgICAgICAgICBpZiAoZmRzWzBdLnJldmVudHMgJiBQT0xMSU4pCisrICAgICAgICAgICAgICAg IHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICAv LyBUaGUgcG9sbGwgd2FzIHN1Y2Nlc2Z1bGwgYW5kIHRoZSBldmVudCB0aHJlYWQgZGlkIHRoZSB3 bF9kaXNwbGF5X3JlYWRfZXZlbnRzKCkuIE9uIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgbG9v cAorKyAgICAgICAgICAgICAgICAvLyB0aGUgZXZlbnQgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQg d2lsbCBjYXVzZSBpdCB0byBkaXNwYXRjaCB0aGUgbWVzc2FnZXMganVzdCByZWFkLCB1bmxlc3Mg dGhlIGxvb3AgZXhpdHMgaW4gd2hpY2gKKysgICAgICAgICAgICAgICAgLy8gY2FzZSB3ZSBkb24n dCBjYXJlIGFueW1vcmUgYWJvdXQgdGhlbS4KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAg ICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAgfQor KyAgICB9CisrCisrcHJpdmF0ZToKKysgICAgYm9vbCB3YWl0Rm9yUmVhZGluZygpCisrICAgIHsK KysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSB0aGlzKTsKKysK KysgICAgICAgIG1fcmVhZGluZy5zdG9yZVJlbGVhc2UoZmFsc2UpOworKworKyAgICAgICAgaWYg KG1fbW9kZSA9PSBTZWxmRGlzcGF0Y2gpIHsKKysgICAgICAgICAgICByZWFkQW5kRGlzcGF0Y2hF dmVudHMoKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgUV9FTUlUIG5lZWRSZWFk QW5kRGlzcGF0Y2goKTsKKysKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbV9tdXRl eCk7CisrICAgICAgICAgICAgLy8gbV9yZWFkaW5nIG1pZ2h0IGJlIHNldCBmcm9tIG91ciBlbWl0 IG9yIHNvbWUgb3RoZXIgaW52b2NhdGlvbiBvZgorKyAgICAgICAgICAgIC8vIHJlYWRBbmREaXNw YXRjaEV2ZW50cygpLgorKyAgICAgICAgICAgIHdoaWxlICghbV9yZWFkaW5nLmxvYWRSZWxheGVk KCkgJiYgIW1fcXVpdHRpbmcpCisrICAgICAgICAgICAgICAgIG1fY29uZC53YWl0KCZtX211dGV4 KTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJldHVybiAhbV9xdWl0dGluZzsKKysgICAgfQor KworKyAgICBpbnQgZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKQorKyAgICB7CisrICAgICAgICBpZiAo bV93bGV2cXVldWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVl dWVfcGVuZGluZyhtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQorKyAg ICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobV93bGRpc3BsYXkp OworKyAgICB9CisrCisrICAgIGludCBwcmVwYXJlUmVhZFF1ZXVlKCkKKysgICAgeworKyAgICAg ICAgaWYgKG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBh cmVfcmVhZF9xdWV1ZShtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZChtX3dsZGlzcGxheSk7 CisrICAgIH0KKysKKysgICAgaW50IG1fZmQ7CisrICAgIGludCBtX3BpcGVmZFsyXTsKKysgICAg d2xfZGlzcGxheSAqbV93bGRpc3BsYXk7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX3dsZXZxdWV1 ZTsKKysgICAgT3BlcmF0aW5nTW9kZSBtX21vZGU7CisrCisrICAgIC8qIENvbmN1cnJlbmN5IG5v dGUgd2hlbiBvcGVyYXRpbmcgaW4gRW1pdFRvRGlzcGF0Y2ggbW9kZToKKysgICAgICogbV9yZWFk aW5nIGlzIHNldCB0byBmYWxzZSBpbnNpZGUgZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRpbmco KSwgYW5kIGlzCisrICAgICAqIHNldCB0byB0cnVlIGluc2lkZSBtYWluIHRocmVhZCdzIHJlYWRB bmREaXNwYXRjaEV2ZW50cygpLgorKyAgICAgKiBUaGUgbG9jayBpcyBub3QgdGFrZW4gd2hlbiBz ZXR0aW5nIG1fcmVhZGluZyB0byBmYWxzZSwgYXMgdGhlIG1haW4gdGhyZWFkCisrICAgICAqIGlz IG5vdCBhY3RpdmVseSB3YWl0aW5nIGZvciBpdCB0byB0dXJuIGZhbHNlLiBIb3dldmVyLCB0aGUg bG9jayBpcyB0YWtlbgorKyAgICAgKiBpbnNpZGUgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkgYmVm b3JlIHNldHRpbmcgbV9yZWFkaW5nIHRvIHRydWUsCisrICAgICAqIGFzIHRoZSBldmVudCB0aHJl YWQgaXMgYWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdW5kZXIgdGhlIHdhaXQgY29uZGl0aW9uLgor KyAgICAgKi8KKysKKysgICAgUUF0b21pY0ludGVnZXI8Ym9vbD4gbV9yZWFkaW5nOworKyAgICBi b29sIG1fcXVpdHRpbmc7CisrICAgIFFNdXRleCBtX211dGV4OworKyAgICBRV2FpdENvbmRpdGlv biBtX2NvbmQ7CisrfTsKKysKKyBRX0xPR0dJTkdfQ0FURUdPUlkobGNRcGFXYXlsYW5kLCAicXQu cXBhLndheWxhbmQiKTsgLy8gZm9yIGdlbmVyYWwgKHVuY2F0ZWdvcml6ZWQpIFdheWxhbmQgcGxh dGZvcm0gbG9nZ2luZworIAorIHN0cnVjdCB3bF9zdXJmYWNlICpRV2F5bGFuZERpc3BsYXk6OmNy ZWF0ZVN1cmZhY2Uodm9pZCAqaGFuZGxlKQorQEAgLTE1OCwxNyArMzUxLDE2IEBAIFFXYXlsYW5k RGlzcGxheTo6UVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRl Z3JhdGlvbikKKyAgICAgaWYgKCFtWGtiQ29udGV4dCkKKyAgICAgICAgIHFDV2FybmluZyhsY1Fw YVdheWxhbmQsICJmYWlsZWQgdG8gY3JlYXRlIHhrYiBjb250ZXh0Iik7CisgI2VuZGlmCistCist ICAgIGZvcmNlUm91bmRUcmlwKCk7CistCistICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1w dHkoKSkgeworLSAgICAgICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRf djEuZG9uZSBldmVudHMgYSBjaGFuY2UgdG8gYXJyaXZlCistICAgICAgICBmb3JjZVJvdW5kVHJp cCgpOworLSAgICB9CisgfQorIAorIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2 b2lkKQorIHsKKysgICAgaWYgKG1fZXZlbnRUaHJlYWQpCisrICAgICAgICBtX2V2ZW50VGhyZWFk LT5zdG9wKCk7CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZCkKKysgICAgICAg IG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLT5zdG9wKCk7CisrCisgICAgIGlmIChtU3luY0NhbGxi YWNrKQorICAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtU3luY0NhbGxiYWNrKTsKKyAKK0BA IC0xODcsNiArMzc5LDIxIEBAIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2b2lk KQorICNlbmRpZgorICAgICBpZiAobURpc3BsYXkpCisgICAgICAgICB3bF9kaXNwbGF5X2Rpc2Nv bm5lY3QobURpc3BsYXkpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50UXVldWUpCisrICAgICAg ICB3bF9ldmVudF9xdWV1ZV9kZXN0cm95KG1fZnJhbWVFdmVudFF1ZXVlKTsKKyt9CisrCisrLy8g U3RlcHMgd2hpY2ggaXMgY2FsbGVkIGp1c3QgYWZ0ZXIgY29uc3RydWN0b3IuIFRoaXMgc2VwYXJh dGVzIHJlZ2lzdHJ5X2dsb2JhbCgpIG91dCBvZiB0aGUgY29uc3RydWN0b3IKKysvLyBzbyB0aGF0 IGZhY3RvcnkgZnVuY3Rpb25zIGluIGludGVncmF0aW9uIGNhbiBiZSBvdmVycmlkZGVuLgorK3Zv aWQgUVdheWxhbmREaXNwbGF5Ojppbml0aWFsaXplKCkKKyt7CisrICAgIGZvcmNlUm91bmRUcmlw KCk7CisrCisrICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgeworKyAgICAgICAg Ly8gR2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBldmVudHMgYSBj aGFuY2UgdG8gYXJyaXZlCisrICAgICAgICBmb3JjZVJvdW5kVHJpcCgpOworKyAgICB9CisgfQor IAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorQEAgLTIwMyw5OCArNDEw LDM3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorIAorIHZvaWQgUVdh eWxhbmREaXNwbGF5OjpjaGVja0Vycm9yKCkgY29uc3QKKyB7CistICAgIGludCBlY29kZSA9IHds X2Rpc3BsYXlfZ2V0X2Vycm9yKG1EaXNwbGF5KTsKKy0gICAgaWYgKChlY29kZSA9PSBFUElQRSB8 fCBlY29kZSA9PSBFQ09OTlJFU0VUKSkgeworLSAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRoaXMg dG8gcHJvdmlkZSBhIG5pY2VyIGVycm9yCistICAgICAgICBxV2FybmluZygiVGhlIFdheWxhbmQg Y29ubmVjdGlvbiBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOworLSAg ICB9IGVsc2UgeworLSAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gZXhw ZXJpZW5jZWQgYSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworLSAgICB9Cist ICAgIF9leGl0KDEpOworKyAgICBjaGVja1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQorIAor Ky8vIENhbGxlZCBpbiBtYWluIHRocmVhZCwgZWl0aGVyIGZyb20gcXVldWVkIHNpZ25hbCBvciBk aXJlY3RseS4KKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zmx1c2hSZXF1ZXN0cygpCisgeworLSAg ICBpZiAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWQobURpc3BsYXkpID09IDApIHsKKy0gICAgICAg IHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlmICh3 bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNr RXJyb3IoKTsKKy0KKy0gICAgeworLSAgICAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtX2ZyYW1l UXVldWVMb2NrKTsKKy0gICAgICAgIGZvciAoY29uc3QgRnJhbWVRdWV1ZSAmcSA6IG1FeHRlcm5h bFF1ZXVlcykgeworLSAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIocS5tdXRleCk7Cist ICAgICAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNwbGF5 LCBxLnF1ZXVlKSAhPSAwKQorLSAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1 ZXVlX3BlbmRpbmcobURpc3BsYXksIHEucXVldWUpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlf cmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hf cXVldWVfcGVuZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAgICAgICB9CistICAgIH0KKy0K Ky0gICAgd2xfZGlzcGxheV9mbHVzaChtRGlzcGxheSk7CistfQorLQorLXZvaWQgUVdheWxhbmRE aXNwbGF5OjpibG9ja2luZ1JlYWRFdmVudHMoKQorLXsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfZGlz cGF0Y2gobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJyb3IoKTsKKy19CistCistdm9p ZCBRV2F5bGFuZERpc3BsYXk6OmRlc3Ryb3lGcmFtZVF1ZXVlKGNvbnN0IFFXYXlsYW5kRGlzcGxh eTo6RnJhbWVRdWV1ZSAmcSkKKy17CistICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fZnJhbWVR dWV1ZUxvY2spOworLSAgICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKG1FeHRlcm5hbFF1ZXVlcy5i ZWdpbigpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1FeHRlcm5hbFF1ZXVlcy5lbmQo KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBbJnFdIChjb25zdCBRV2F5bGFuZERpc3Bs YXk6OkZyYW1lUXVldWUgJm90aGVyKXsgcmV0dXJuIG90aGVyLnF1ZXVlID09IHEucXVldWU7IH0p OworLSAgICBRX0FTU0VSVChpdCAhPSBtRXh0ZXJuYWxRdWV1ZXMuZW5kKCkpOworLSAgICBtRXh0 ZXJuYWxRdWV1ZXMuZXJhc2UoaXQpOworLSAgICBpZiAocS5xdWV1ZSAhPSBudWxscHRyKQorLSAg ICAgICAgd2xfZXZlbnRfcXVldWVfZGVzdHJveShxLnF1ZXVlKTsKKy0gICAgZGVsZXRlIHEubXV0 ZXg7CisrICAgIG1fZXZlbnRUaHJlYWQtPnJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworIH0KKyAK Ky1RV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgUVdheWxhbmREaXNwbGF5OjpjcmVhdGVGcmFt ZVF1ZXVlKCkKKysvLyBXZSBoYXZlIHRvIHdhaXQgdW50aWwgd2UgaGF2ZSBhbiBldmVudERpc3Bh dGNoZXIgYmVmb3JlIGNyZWF0aW5nIHRoZSBldmVudFRocmVhZCwKKysvLyBvdGhlcndpc2UgZm9y Y2VSb3VuZFRyaXAoKSBtYXkgYmxvY2sgaW5zaWRlIF9ldmVudHNfcmVhZCgpIGJlY2F1c2UgZXZl bnRUaHJlYWQgaXMKKysvLyBwb2xsaW5nLgorK3ZvaWQgUVdheWxhbmREaXNwbGF5Ojppbml0RXZl bnRUaHJlYWQoKQorIHsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVlTG9j ayk7CistICAgIEZyYW1lUXVldWUgcXtjcmVhdGVFdmVudFF1ZXVlKCl9OworLSAgICBtRXh0ZXJu YWxRdWV1ZXMuYXBwZW5kKHEpOworLSAgICByZXR1cm4gcTsKKy19CisrICAgIG1fZXZlbnRUaHJl YWQucmVzZXQoCisrICAgICAgICAgICAgbmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCAvKiBkZWZh dWx0IHF1ZXVlICovIG51bGxwdHIsIEV2ZW50VGhyZWFkOjpFbWl0VG9EaXNwYXRjaCkpOworKyAg ICBjb25uZWN0KG1fZXZlbnRUaHJlYWQuZ2V0KCksICZFdmVudFRocmVhZDo6bmVlZFJlYWRBbmRE aXNwYXRjaCwgdGhpcywKKysgICAgICAgICAgICAmUVdheWxhbmREaXNwbGF5OjpmbHVzaFJlcXVl c3RzLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAgIG1fZXZlbnRUaHJlYWQtPnN0YXJ0KCk7 CisgCistd2xfZXZlbnRfcXVldWUgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlRXZlbnRRdWV1ZSgp CisteworLSAgICByZXR1cm4gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAg ICAvLyB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QoKSBmcmVlIHRoaXMuCisrICAgIG1fZnJhbWVFdmVu dFF1ZXVlID0gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICBtX2ZyYW1l RXZlbnRRdWV1ZVRocmVhZC5yZXNldCgKKysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQobURp c3BsYXksIG1fZnJhbWVFdmVudFF1ZXVlLCBFdmVudFRocmVhZDo6U2VsZkRpc3BhdGNoKSk7Cisr ICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLT5zdGFydCgpOworIH0KKyAKKy12b2lkIFFXYXls YW5kRGlzcGxheTo6ZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwgc3Rk OjpmdW5jdGlvbjxib29sICgpPiBjb25kaXRpb24sIGludCB0aW1lb3V0KQorK3ZvaWQgUVdheWxh bmREaXNwbGF5OjpibG9ja2luZ1JlYWRFdmVudHMoKQorIHsKKy0gICAgaWYgKCFjb25kaXRpb24o KSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgUUVsYXBzZWRUaW1lciB0aW1lcjsKKy0gICAg dGltZXIuc3RhcnQoKTsKKy0gICAgc3RydWN0IHBvbGxmZCBwRmQgPSBxdF9tYWtlX3BvbGxmZCh3 bF9kaXNwbGF5X2dldF9mZChtRGlzcGxheSksIFBPTExJTik7CistICAgIHdoaWxlICh0aW1lb3V0 ID09IC0xIHx8IHRpbWVyLmVsYXBzZWQoKSA8IHRpbWVvdXQpIHsKKy0gICAgICAgIHdoaWxlICh3 bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtRGlzcGxheSwgcXVldWUpICE9IDApCistICAg ICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxdWV1 ZSk7CistCistICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy0KKy0gICAgICAg IGNvbnN0IGludCByZW1haW5pbmcgPSBxTWF4KHRpbWVvdXQgLSB0aW1lci5lbGFwc2VkKCksIDBs bCk7CistICAgICAgICBjb25zdCBpbnQgcG9sbFRpbWVvdXQgPSB0aW1lb3V0ID09IC0xID8gLTEg OiByZW1haW5pbmc7CistICAgICAgICBpZiAocXRfcG9sbF9tc2VjcygmcEZkLCAxLCBwb2xsVGlt ZW91dCkgPiAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkp OworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobURp c3BsYXkpOworLQorLSAgICAgICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGlu ZyhtRGlzcGxheSwgcXVldWUpIDwgMCkKKy0gICAgICAgICAgICBjaGVja0Vycm9yKCk7CistCist ICAgICAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICB9Cisr ICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDApCisrICAgICAgICBjaGVj a1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQorIAorIFFXYXlsYW5kU2NyZWVuICpRV2F5bGFu ZERpc3BsYXk6OnNjcmVlbkZvck91dHB1dChzdHJ1Y3Qgd2xfb3V0cHV0ICpvdXRwdXQpIGNvbnN0 CitAQCAtMzQ1LDcgKzQ5MSw3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9i YWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgICAgIGlmIChp bnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX291dHB1dCIpKSB7CisgICAgICAgICBtV2Fp dGluZ1NjcmVlbnMgPDwgbmV3IFFXYXlsYW5kU2NyZWVuKHRoaXMsIHZlcnNpb24sIGlkKTsKKyAg ICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX2NvbXBvc2l0b3Ii KSkgeworLSAgICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDMp OworKyAgICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDQpOwor ICAgICAgICAgbUNvbXBvc2l0b3IuaW5pdChyZWdpc3RyeSwgaWQsIG1Db21wb3NpdG9yVmVyc2lv bik7CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9zaG0i KSkgeworICAgICAgICAgbVNobS5yZXNldChuZXcgUVdheWxhbmRTaG0odGhpcywgdmVyc2lvbiwg aWQpKTsKK0BAIC0zNTQsNyArNTAwLDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5 X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAgICAg ICAgIG1JbnB1dERldmljZXMuYXBwZW5kKGlucHV0RGV2aWNlKTsKKyAjaWYgUVRfQ09ORklHKHdh eWxhbmRfZGF0YWRldmljZSkKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xp dGVyYWwoIndsX2RhdGFfZGV2aWNlX21hbmFnZXIiKSkgeworLSAgICAgICAgbURuZFNlbGVjdGlv bkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgaWQpKTsK KysgICAgICAgIG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZp Y2VNYW5hZ2VyKHRoaXMsIHZlcnNpb24sIGlkKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBpZiAo aW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJxdF9zdXJmYWNlX2V4dGVuc2lvbiIpKSB7Cisg ICAgICAgICBtV2luZG93RXh0ZW5zaW9uLnJlc2V0KG5ldyBRdFdheWxhbmQ6OnF0X3N1cmZhY2Vf ZXh0ZW5zaW9uKHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTM2OSw2ICs1MTUsOCBAQCB2b2lkIFFX YXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5n ICZpbnRlcmZhY2UsIHVpbgorICNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFyeV9z ZWxlY3Rpb24pCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ6 d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworICAgICAgICAgbVBy aW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KG5ldyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25E ZXZpY2VNYW5hZ2VyVjEodGhpcywgaWQsIDEpKTsKKysgICAgICAgIGZvciAoUVdheWxhbmRJbnB1 dERldmljZSAqaW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5wdXREZXZpY2VzKSkKKysgICAgICAg ICAgICBpbnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShtUHJpbWFyeVNlbGVj dGlvbk1hbmFnZXItPmNyZWF0ZURldmljZShpbnB1dERldmljZSkpOworICNlbmRpZgorICAgICB9 IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3RleHRfaW5wdXRfbWFu YWdlcl92MiIpICYmICFtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCkgeworICAgICAg ICAgbVRleHRJbnB1dE1hbmFnZXIucmVzZXQobmV3IFF0V2F5bGFuZDo6endwX3RleHRfaW5wdXRf bWFuYWdlcl92MihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC00MjcsNiArNTc1LDEzIEBAIHZvaWQg UVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWxfcmVtb3ZlKHVpbnQzMl90IGlkKQorICAg ICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFRleHRJbnB1dChudWxscHRyKTsKKyAg ICAgICAgICAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+cmVjb25maWd1cmVJbnB1dENvbnRl eHQoKTsKKyAgICAgICAgICAgICB9CisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmlt YXJ5X3NlbGVjdGlvbikKKysgICAgICAgICAgICBpZiAoZ2xvYmFsLmludGVyZmFjZSA9PSBRU3Ry aW5nTGl0ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxIikpIHsK KysgICAgICAgICAgICAgICAgbVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KCk7CisrICAg ICAgICAgICAgICAgIGZvciAoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UgOiBxQXND b25zdChtSW5wdXREZXZpY2VzKSkKKysgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5z ZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKG51bGxwdHIpOworKyAgICAgICAgICAgIH0KKysjZW5k aWYKKyAgICAgICAgICAgICBtR2xvYmFscy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgIH0KK0BAIC00NTIsOSArNjA3LDEwIEBAIHZvaWQgUVdheWxhbmREaXNwbGF5 OjphZGRSZWdpc3RyeUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQgKmRh dGEpCisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlbW92ZUxpc3RlbmVyKFJlZ2lzdHJ5TGlz dGVuZXIgbGlzdGVuZXIsIHZvaWQgKmRhdGEpCisgeworLSAgICBzdGQ6OnJlbW92ZV9pZihtUmVn aXN0cnlMaXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0oTGlz dGVuZXIgbCl7CisrICAgIGF1dG8gaXRlciA9IHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxpc3Rl bmVycy5iZWdpbigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBsKXsK KyAgICAgICAgIHJldHVybiAobC5saXN0ZW5lciA9PSBsaXN0ZW5lciAmJiBsLmRhdGEgPT0gZGF0 YSk7CisgICAgIH0pOworKyAgICBtUmVnaXN0cnlMaXN0ZW5lcnMuZXJhc2UoaXRlciwgbVJlZ2lz dHJ5TGlzdGVuZXJzLmVuZCgpKTsKKyB9CisgCisgdWludDMyX3QgUVdheWxhbmREaXNwbGF5Ojpj dXJyZW50VGltZU1pbGxpc2VjKCkKK0BAIC00NjcsNTAgKzYyMyw5IEBAIHVpbnQzMl90IFFXYXls YW5kRGlzcGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCisgICAgIHJldHVybiAwOworIH0KKyAK Ky1zdGF0aWMgdm9pZAorLXN5bmNfY2FsbGJhY2sodm9pZCAqZGF0YSwgc3RydWN0IHdsX2NhbGxi YWNrICpjYWxsYmFjaywgdWludDMyX3Qgc2VyaWFsKQorLXsKKy0gICAgUV9VTlVTRUQoc2VyaWFs KQorLSAgICBib29sICpkb25lID0gc3RhdGljX2Nhc3Q8Ym9vbCAqPihkYXRhKTsKKy0KKy0gICAg KmRvbmUgPSB0cnVlOworLQorLSAgICAvLyBJZiB0aGUgd2xfY2FsbGJhY2sgZG9uZSBldmVudCBp cyByZWNlaXZlZCBhZnRlciB0aGUgY29uZGl0aW9uIGNoZWNrIGluIHRoZSB3aGlsZSBsb29wIGlu CistICAgIC8vIGZvcmNlUm91bmRUcmlwKCksIGJ1dCBiZWZvcmUgdGhlIGNhbGwgdG8gcHJvY2Vz c0V2ZW50cywgdGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cyBtYXkgYmxvY2sKKy0gICAgLy8gZm9y ZXZlciBpZiBubyBtb3JlIGV2ZW50cyBhcmUgcG9zdGVkIChldmVudGhvdWdoIHRoZSBjYWxsYmFj ayBpcyBoYW5kbGVkIGluIHJlc3BvbnNlIHRvIHRoZQorLSAgICAvLyBhYm91dFRvQmxvY2sgc2ln bmFsKS4gSGVuY2UsIHdlIHdha2UgdXAgdGhlIGV2ZW50IGRpc3BhdGNoZXIgc28gZm9yY2VSb3Vu ZFRyaXAgbWF5IHJldHVybi4KKy0gICAgLy8gKFFUQlVHLTY0Njk2KQorLSAgICBpZiAoYXV0byAq ZGlzcGF0Y2hlciA9IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVyKCkp CistICAgICAgICBkaXNwYXRjaGVyLT53YWtlVXAoKTsKKy0KKy0gICAgd2xfY2FsbGJhY2tfZGVz dHJveShjYWxsYmFjayk7CistfQorLQorLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJhY2tf bGlzdGVuZXIgc3luY19saXN0ZW5lciA9IHsKKy0gICAgc3luY19jYWxsYmFjaworLX07CistCisg dm9pZCBRV2F5bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkKKyB7CistICAgIC8vIHdsX2Rp c3BsYXlfcm91bmR0cmlwKCkgd29ya3Mgb24gdGhlIG1haW4gcXVldWUgb25seSwKKy0gICAgLy8g YnV0IHdlIHVzZSBhIHNlcGFyYXRlIG9uZSwgc28gYmFzaWNhbGx5IHJlaW1wbGVtZW50IGl0IGhl cmUKKy0gICAgaW50IHJldCA9IDA7CistICAgIGJvb2wgZG9uZSA9IGZhbHNlOworLSAgICB3bF9j YWxsYmFjayAqY2FsbGJhY2sgPSB3bF9kaXNwbGF5X3N5bmMobURpc3BsYXkpOworLSAgICB3bF9j YWxsYmFja19hZGRfbGlzdGVuZXIoY2FsbGJhY2ssICZzeW5jX2xpc3RlbmVyLCAmZG9uZSk7Cist ICAgIGZsdXNoUmVxdWVzdHMoKTsKKy0gICAgaWYgKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ ZXZlbnREaXNwYXRjaGVyKCkpIHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0gMCkg eworLSAgICAgICAgICAgIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVy KCktPnByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpOworLSAgICAg ICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSk7CistICAg ICAgICB9CistICAgIH0gZWxzZSB7CistICAgICAgICB3aGlsZSAoIWRvbmUgJiYgcmV0ID49IDAp CistICAgICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSk7CistICAg IH0KKy0KKy0gICAgaWYgKHJldCA9PSAtMSAmJiAhZG9uZSkKKy0gICAgICAgIHdsX2NhbGxiYWNr X2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAobURpc3BsYXkp OworIH0KKyAKKyBib29sIFFXYXlsYW5kRGlzcGxheTo6c3VwcG9ydHNXaW5kb3dEZWNvcmF0aW9u KCkgY29uc3QKK0BAIC01NzQsMTQgKzY4OSwxMCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6aGFu ZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpYwor ICAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzID09IGtleWJvYXJkRm9jdXMpCisgICAgICAgICBy ZXR1cm47CisgCistICAgIGlmIChtV2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3JhdGlv bikgeworLSAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNoZWxsSW50ZWdyYXRpb24tPmhh bmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKGtleWJvYXJkRm9jdXMsIG1MYXN0S2V5Ym9hcmRGb2N1 cyk7CistICAgIH0gZWxzZSB7CistICAgICAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKy0gICAgICAg ICAgICBoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CistICAgICAgICBpZiAo bUxhc3RLZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZhdGVk KG1MYXN0S2V5Ym9hcmRGb2N1cyk7CistICAgIH0KKysgICAgaWYgKGtleWJvYXJkRm9jdXMpCisr ICAgICAgICBoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CisrICAgIGlmICht TGFzdEtleWJvYXJkRm9jdXMpCisrICAgICAgICBoYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChtTGFz dEtleWJvYXJkRm9jdXMpOworIAorICAgICBtTGFzdEtleWJvYXJkRm9jdXMgPSBrZXlib2FyZEZv Y3VzOworIH0KK0BAIC02MDAsNiArNzExLDE5IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpoYW5k bGVXYXlsYW5kU3luYygpCisgICAgIFFXaW5kb3cgKmFjdGl2ZVdpbmRvdyA9IG1BY3RpdmVXaW5k b3dzLmVtcHR5KCkgPyBudWxscHRyIDogbUFjdGl2ZVdpbmRvd3MubGFzdCgpLT53aW5kb3coKTsK KyAgICAgaWYgKGFjdGl2ZVdpbmRvdyAhPSBRR3VpQXBwbGljYXRpb246OmZvY3VzV2luZG93KCkp CisgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dBY3RpdmF0ZWQo YWN0aXZlV2luZG93KTsKKysKKysgICAgaWYgKCFhY3RpdmVXaW5kb3cpIHsKKysgICAgICAgIGlm IChsYXN0SW5wdXREZXZpY2UoKSkgeworKyNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorKyAgICAg ICAgICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPmRhdGFEZXZp Y2UoKSkKKysgICAgICAgICAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9m ZmVyKCk7CisrI2VuZGlmCisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5X3Nl bGVjdGlvbikKKysgICAgICAgICAgICBpZiAoYXV0byAqZGV2aWNlID0gbGFzdElucHV0RGV2aWNl KCktPnByaW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKysgICAgICAgICAgICAgICAgZGV2aWNlLT5p bnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysgICAgICAgIH0KKysgICAgfQor IH0KKyAKKyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBRV2F5bGFuZERpc3BsYXk6OnN5bmND YWxsYmFja0xpc3RlbmVyID0geworQEAgLTYyNiw2ICs3NTAsMTMgQEAgUVdheWxhbmRJbnB1dERl dmljZSAqUVdheWxhbmREaXNwbGF5OjpkZWZhdWx0SW5wdXREZXZpY2UoKSBjb25zdAorICAgICBy ZXR1cm4gbUlucHV0RGV2aWNlcy5pc0VtcHR5KCkgPyAwIDogbUlucHV0RGV2aWNlcy5maXJzdCgp OworIH0KKyAKKytib29sIFFXYXlsYW5kRGlzcGxheTo6aXNLZXlib2FyZEF2YWlsYWJsZSgpIGNv bnN0CisreworKyAgICByZXR1cm4gc3RkOjphbnlfb2YoCisrICAgICAgICAgICAgbUlucHV0RGV2 aWNlcy5jb25zdEJlZ2luKCksIG1JbnB1dERldmljZXMuY29uc3RFbmQoKSwKKysgICAgICAgICAg ICBbdGhpc10oY29uc3QgUVdheWxhbmRJbnB1dERldmljZSAqZGV2aWNlKSB7IHJldHVybiBkZXZp Y2UtPmtleWJvYXJkKCkgIT0gbnVsbHB0cjsgfSk7CisrfQorKworICNpZiBRVF9DT05GSUcoY3Vy c29yKQorIAorIFFXYXlsYW5kQ3Vyc29yICpRV2F5bGFuZERpc3BsYXk6OndheWxhbmRDdXJzb3Io KQorQEAgLTY1Miw0ICs3ODMsNiBAQCBRV2F5bGFuZEN1cnNvclRoZW1lICpRV2F5bGFuZERpc3Bs YXk6OmxvYWRDdXJzb3JUaGVtZShjb25zdCBRU3RyaW5nICZuYW1lLCBpbnQgcAorIAorIH0gLy8g bmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudAorIAorKyNpbmNsdWRlICJxd2F5bGFuZGRpc3BsYXku bW9jIgorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRk aXNwbGF5X3AuaAoraW5kZXggM2IwOTJiYzguLjQyYmM2NjFkIDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBjbGFzcyBRV2F5 bGFuZFN1cmZhY2U7CisgY2xhc3MgUVdheWxhbmRTaGVsbEludGVncmF0aW9uOworIGNsYXNzIFFX YXlsYW5kQ3Vyc29yOworIGNsYXNzIFFXYXlsYW5kQ3Vyc29yVGhlbWU7CisrY2xhc3MgRXZlbnRU aHJlYWQ7CisgCisgdHlwZWRlZiB2b2lkICgqUmVnaXN0cnlMaXN0ZW5lcikodm9pZCAqZGF0YSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJl Z2lzdHJ5LAorQEAgLTEyMCwxNSArMTIxLDExIEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQ T1JUIFFXYXlsYW5kRGlzcGxheSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUXRXYXlsYW5kCisg ICAgIFFfT0JKRUNUCisgCisgcHVibGljOgorLSAgICBzdHJ1Y3QgRnJhbWVRdWV1ZSB7CistICAg ICAgICBGcmFtZVF1ZXVlKHdsX2V2ZW50X3F1ZXVlICpxID0gbnVsbHB0cikgOiBxdWV1ZShxKSwg bXV0ZXgobmV3IFFNdXRleCkge30KKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVlICpxdWV1ZTsKKy0g ICAgICAgIFFNdXRleCAqbXV0ZXg7CistICAgIH07CistCisgICAgIFFXYXlsYW5kRGlzcGxheShR V2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24pOworICAgICB+UVdheWxhbmRE aXNwbGF5KHZvaWQpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKysKKyAj aWYgUVRfQ09ORklHKHhrYmNvbW1vbikKKyAgICAgc3RydWN0IHhrYl9jb250ZXh0ICp4a2JDb250 ZXh0KCkgY29uc3QgeyByZXR1cm4gbVhrYkNvbnRleHQuZ2V0KCk7IH0KKyAjZW5kaWYKK0BAIC0y MTAsMTEgKzIwNywxMSBAQCBwdWJsaWM6CisgICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0No YW5nZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UpOworICAgICB2b2lkIGhhbmRs ZVdpbmRvd0Rlc3Ryb3llZChRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAKKy0gICAgd2xfZXZl bnRfcXVldWUgKmNyZWF0ZUV2ZW50UXVldWUoKTsKKy0gICAgRnJhbWVRdWV1ZSBjcmVhdGVGcmFt ZVF1ZXVlKCk7CistICAgIHZvaWQgZGVzdHJveUZyYW1lUXVldWUoY29uc3QgRnJhbWVRdWV1ZSAm cSk7CistICAgIHZvaWQgZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwg c3RkOjpmdW5jdGlvbjxib29sKCk+IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQgPSAtMSk7CisrICAg IHdsX2V2ZW50X3F1ZXVlICpmcmFtZUV2ZW50UXVldWUoKSB7IHJldHVybiBtX2ZyYW1lRXZlbnRR dWV1ZTsgfTsKKysKKysgICAgYm9vbCBpc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3Q7CisgCisr ICAgIHZvaWQgaW5pdEV2ZW50VGhyZWFkKCk7CisgcHVibGljIHNsb3RzOgorICAgICB2b2lkIGJs b2NraW5nUmVhZEV2ZW50cygpOworICAgICB2b2lkIGZsdXNoUmVxdWVzdHMoKTsKK0BAIC0yMzcs NiArMjM0LDkgQEAgcHJpdmF0ZToKKyAgICAgfTsKKyAKKyAgICAgc3RydWN0IHdsX2Rpc3BsYXkg Km1EaXNwbGF5ID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+IG1f ZXZlbnRUaHJlYWQ7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX2ZyYW1lRXZlbnRRdWV1ZSA9IG51 bGxwdHI7CisrICAgIFFTY29wZWRQb2ludGVyPEV2ZW50VGhyZWFkPiBtX2ZyYW1lRXZlbnRRdWV1 ZVRocmVhZDsKKyAgICAgUXRXYXlsYW5kOjp3bF9jb21wb3NpdG9yIG1Db21wb3NpdG9yOworICAg ICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFNobT4gbVNobTsKKyAgICAgUUxpc3Q8UVdheWxhbmRT Y3JlZW4gKj4gbVdhaXRpbmdTY3JlZW5zOworQEAgLTI3MywxMSArMjczLDkgQEAgcHJpdmF0ZToK KyAgICAgUVdheWxhbmRJbnB1dERldmljZSAqbUxhc3RJbnB1dERldmljZSA9IG51bGxwdHI7Cisg ICAgIFFQb2ludGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdElucHV0V2luZG93OworICAgICBRUG9p bnRlcjxRV2F5bGFuZFdpbmRvdz4gbUxhc3RLZXlib2FyZEZvY3VzOworLSAgICBRVmVjdG9yPFFX YXlsYW5kV2luZG93ICo+IG1BY3RpdmVXaW5kb3dzOworLSAgICBRVmVjdG9yPEZyYW1lUXVldWU+ IG1FeHRlcm5hbFF1ZXVlczsKKysgICAgUUxpc3Q8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2ZVdp bmRvd3M7CisgICAgIHN0cnVjdCB3bF9jYWxsYmFjayAqbVN5bmNDYWxsYmFjayA9IG51bGxwdHI7 CisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jQ2FsbGJhY2tMaXN0 ZW5lcjsKKy0gICAgUVJlYWRXcml0ZUxvY2sgbV9mcmFtZVF1ZXVlTG9jazsKKyAKKyAgICAgYm9v bCBtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCA9ICFRUGxhdGZvcm1JbnB1dENvbnRl eHRGYWN0b3J5OjpyZXF1ZXN0ZWQoKS5pc051bGwoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRuZC5jcHAKK2luZGV4IDY1MzVhYTE2Li43YzUzZjVmYSAxMDA2NDQKKy0tLSBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkbmQuY3BwCitAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6 c3RhcnREcmFnKCkKKyB7CisgICAgIFFCYXNpY0RyYWc6OnN0YXJ0RHJhZygpOworICAgICBRV2F5 bGFuZFdpbmRvdyAqaWNvbiA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93ICo+KHNoYXBlZFBp eG1hcFdpbmRvdygpLT5oYW5kbGUoKSk7CistICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1 dERldmljZSgpLT5kYXRhRGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGlj b24pKSB7CisrICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2 aWNlKCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGRyYWcoKS0+c3VwcG9ydGVkQWN0 aW9ucygpLCBpY29uKSkgeworICAgICAgICAgaWNvbi0+YWRkQXR0YWNoT2Zmc2V0KC1kcmFnKCkt PmhvdFNwb3QoKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBDYW5jZWxsaW5nIGltbWVk aWF0ZWx5IGRvZXMgbm90IHdvcmssIHNpbmNlIHRoZSBldmVudCBsb29wIGZvciBRRHJhZzo6ZXhl YyBpcyBzdGFydGVkCitAQCAtODAsNiArODAsOSBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6Y2FuY2Vs KCkKKyAgICAgUUJhc2ljRHJhZzo6Y2FuY2VsKCk7CisgCisgICAgIG1fZGlzcGxheS0+Y3VycmVu dElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+Y2FuY2VsRHJhZygpOworKworKyAgICBpZiAo ZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworIH0KKyAKKyB2b2lkIFFX YXlsYW5kRHJhZzo6bW92ZShjb25zdCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9u cyBiLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kcykKK0BAIC0xMDMsMzMgKzEwNiw0MSBAQCB2 b2lkIFFXYXlsYW5kRHJhZzo6ZW5kRHJhZygpCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElucHV0 RGV2aWNlKCktPmhhbmRsZUVuZERyYWcoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6OnVw ZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6 c2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCkKKyB7CistICAgIHNldENhbkRyb3AoIW1pbWVUeXBl LmlzRW1wdHkoKSk7CistCistICAgIGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0ZUN1 cnNvcihkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXkt PmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOworLSAgICB9IGVsc2UgeworLSAg ICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOworLSAgICB9CisrICAgIC8vIFRo aXMgbWV0aG9kIGlzIHVzZWQgZm9yIG9sZCBEYXRhRGV2aWNlcyB3aGVyZSB0aGUgZHJhZyBhY3Rp b24gaXMgbm90IGNvbW11bmljYXRlZAorKyAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24gPSBkZWZh dWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJlbnRJ bnB1dERldmljZSgpLT5tb2RpZmllcnMoKSk7CisrICAgIHNldFJlc3BvbnNlKFFQbGF0Zm9ybURy b3BRdFJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERy YWc6OnNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkK Kyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVz cG9uc2UgJnJlc3BvbnNlKQorIHsKKyAgICAgc2V0Q2FuRHJvcChyZXNwb25zZS5pc0FjY2VwdGVk KCkpOworIAorICAgICBpZiAoY2FuRHJvcCgpKSB7CistICAgICAgICB1cGRhdGVDdXJzb3IoZGVm YXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJyZW50 SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpKTsKKysgICAgICAgIHVwZGF0ZUN1cnNvcihyZXNw b25zZS5hY2NlcHRlZEFjdGlvbigpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHVwZGF0ZUN1 cnNvcihRdDo6SWdub3JlQWN0aW9uKTsKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5kRHJh Zzo6ZmluaXNoRHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpCisr dm9pZCBRV2F5bGFuZERyYWc6OnNldERyb3BSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRS ZXNwb25zZSAmcmVzcG9uc2UpCisgeworICAgICBzZXRFeGVjdXRlZERyb3BBY3Rpb24ocmVzcG9u c2UuYWNjZXB0ZWRBY3Rpb24oKSk7CisrfQorKworK3ZvaWQgUVdheWxhbmREcmFnOjpmaW5pc2hE cmFnKCkKKyt7CisgICAgIFFLZXlFdmVudCBldmVudChRRXZlbnQ6OktleVByZXNzLCBRdDo6S2V5 X0VzY2FwZSwgUXQ6Ok5vTW9kaWZpZXIpOworICAgICBldmVudEZpbHRlcihzaGFwZWRQaXhtYXBX aW5kb3coKSwgJmV2ZW50KTsKKysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ ZGVsZXRlTGF0ZXIoKTsKKyt9CisrCisrYm9vbCBRV2F5bGFuZERyYWc6Om93bnNEcmFnT2JqZWN0 KCkgY29uc3QKKyt7CisrICAgIHJldHVybiB0cnVlOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkbmRfcC5oCitpbmRleCA0NzRmZTJhYi4uNDZmNjI5YWMgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAorQEAgLTcxLDkgKzcxLDEwIEBAIHB1YmxpYzoKKyAg ICAgUVdheWxhbmREcmFnKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFu ZERyYWcoKSBvdmVycmlkZTsKKyAKKy0gICAgdm9pZCB1cGRhdGVUYXJnZXQoY29uc3QgUVN0cmlu ZyAmbWltZVR5cGUpOworLSAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdR dFJlc3BvbnNlICZyZXNwb25zZSk7CistICAgIHZvaWQgZmluaXNoRHJhZyhjb25zdCBRUGxhdGZv cm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGJvb2wg YWNjZXB0ZWQpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BRdFJl c3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgc2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQbGF0 Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgZmluaXNoRHJhZygpOwor IAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBzdGFydERyYWcoKSBvdmVycmlkZTsKK0BAIC04Miw2 ICs4Myw3IEBAIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkcm9wKGNvbnN0IFFQb2ludCAmZ2xvYmFs UG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKSBvdmVy cmlkZTsKKyAgICAgdm9pZCBlbmREcmFnKCkgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgb3duc0Ry YWdPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZERp c3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGlucHV0ZGV2aWNlLmNwcAoraW5kZXggNjEzZmU4NjIuLjRiOTBkZTg0IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitAQCAtNjg1LDYgKzY4 NSwxMSBAQCBwdWJsaWM6CisgCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVyOjpw b2ludGVyX2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNlKQor IHsKKysgICAgaW52YWxpZGF0ZUZvY3VzKCk7CisrICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9u OworKworKyAgICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisrCisgICAgIC8vIFRoZSBldmVudCBt YXkgYXJyaXZlIGFmdGVyIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdywgaW5kaWNhdGVkIGJ5CisgICAg IC8vIGEgbnVsbCBzdXJmYWNlLgorICAgICBpZiAoIXN1cmZhY2UpCitAQCAtNjk2LDExICs3MDEs NiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUodWlu dDMyX3QgdGltZSwgc3RydWN0IHdsX3N1cmZhYworIAorICAgICBpZiAoIVFXYXlsYW5kV2luZG93 Ojptb3VzZUdyYWIoKSkKKyAgICAgICAgIHNldEZyYW1lRXZlbnQobmV3IExlYXZlRXZlbnQod2lu ZG93LCBtU3VyZmFjZVBvcywgbUdsb2JhbFBvcykpOworLQorLSAgICBpbnZhbGlkYXRlRm9jdXMo KTsKKy0gICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CistCistICAgIG1QYXJlbnQtPm1UaW1l ID0gdGltZTsKKyB9CisgCisgY2xhc3MgTW90aW9uRXZlbnQgOiBwdWJsaWMgUVdheWxhbmRQb2lu dGVyRXZlbnQKK0BAIC0xMzAwLDE0ICsxMzAwLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNl OjpLZXlib2FyZDo6aGFuZGxlRm9jdXNEZXN0cm95ZWQoKQorIHZvaWQgUVdheWxhbmRJbnB1dERl dmljZTo6S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzTG9zdCgpCisgeworICAgICBtRm9jdXMgPSBudWxs cHRyOworLSNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorLSAgICBpZiAoYXV0byAqZGF0YURldmlj ZSA9IG1QYXJlbnQtPmRhdGFEZXZpY2UoKSkKKy0gICAgICAgIGRhdGFEZXZpY2UtPmludmFsaWRh dGVTZWxlY3Rpb25PZmZlcigpOworLSNlbmRpZgorLSNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGll bnRfcHJpbWFyeV9zZWxlY3Rpb24pCistICAgIGlmIChhdXRvICpkZXZpY2UgPSBtUGFyZW50LT5w cmltYXJ5U2VsZWN0aW9uRGV2aWNlKCkpCistICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVTZWxl Y3Rpb25PZmZlcigpOworLSNlbmRpZgorICAgICBtUGFyZW50LT5tUURpc3BsYXktPmhhbmRsZUtl eWJvYXJkRm9jdXNDaGFuZ2VkKG1QYXJlbnQpOworICAgICBtUmVwZWF0VGltZXIuc3RvcCgpOwor IH0KK0BAIC0xMzk2LDYgKzEzODgsNyBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlRvdWNo Ojp0b3VjaF9jYW5jZWwoKQorICAgICBpZiAodG91Y2hFeHQpCisgICAgICAgICB0b3VjaEV4dC0+ dG91Y2hDYW5jZWxlZCgpOworIAorKyAgICBtRm9jdXMgPSBudWxscHRyOworICAgICBRV2luZG93 U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVUb3VjaENhbmNlbEV2ZW50KG51bGxwdHIsIG1QYXJlbnQt Pm1Ub3VjaERldmljZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRp bnRlZ3JhdGlvbi5jcHAKK2luZGV4IGM1M2NjYjc4Li41NDg2MTYwMCAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAorQEAgLTEyNSw2ICsxMjUsOSBA QCBRV2F5bGFuZEludGVncmF0aW9uOjpRV2F5bGFuZEludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAK KyAgICAgcmVjb25maWd1cmVJbnB1dENvbnRleHQoKTsKKysKKysgICAgUVdheWxhbmRXaW5kb3c6 OmZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgPQorKyAgICAgICAgICAgICFxRW52aXJvbm1lbnRWYXJp YWJsZUlzU2V0KCJRVF9XQVlMQU5EX0RJU0FCTEVfRklYRURfUE9TSVRJT05TIik7CisgfQorIAor IFFXYXlsYW5kSW50ZWdyYXRpb246On5RV2F5bGFuZEludGVncmF0aW9uKCkKK0BAIC0xOTIsMTQg KzE5NSwxOCBAQCBRQWJzdHJhY3RFdmVudERpc3BhdGNoZXIgKlFXYXlsYW5kSW50ZWdyYXRpb246 OmNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZEludGVncmF0 aW9uOjppbml0aWFsaXplKCkKKyB7CisrICAgIG1EaXNwbGF5LT5pbml0RXZlbnRUaHJlYWQoKTsK KysKKysgICAgLy8gQ2FsbCBhZnRlciBldmVudERpc3BhdGNoZXIgaXMgZnVsbHkgY29ubmVjdGVk LCBmb3IgUVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgpCisrICAgIG1EaXNwbGF5LT5p bml0aWFsaXplKCk7CisrCisrICAgIC8vIEJ1dCB0aGUgYWJvdXRUb0Jsb2NrKCkgYW5kIGF3YWtl KCkgc2hvdWxkIGJlIGNvbm5lY3RlZCBhZnRlciBpbml0aWFsaXplUGxhdGZvcm0oKS4KKysgICAg Ly8gT3RoZXJ3aXNlIHRoZSBjb25uZWN0ZWQgZmx1c2hSZXF1ZXN0cygpIG1heSBjb25zdW1lcyB1 cCBhbGwgZXZlbnRzIGJlZm9yZSBwcm9jZXNzRXZlbnRzIHN0YXJ0cyB0byB3YWl0LAorKyAgICAv LyBzbyB0aGF0IHByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpIG1h eSBiZSBibG9ja2VkIGluIHRoZSBmb3JjZVJvdW5kVHJpcCgpLgorICAgICBRQWJzdHJhY3RFdmVu dERpc3BhdGNoZXIgKmRpc3BhdGNoZXIgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpldmVudERp c3BhdGNoZXI7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGFib3V0 VG9CbG9jaygpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworICAg ICBRT2JqZWN0Ojpjb25uZWN0KGRpc3BhdGNoZXIsIFNJR05BTChhd2FrZSgpKSwgbURpc3BsYXku ZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworIAorLSAgICBpbnQgZmQgPSB3bF9kaXNw bGF5X2dldF9mZChtRGlzcGxheS0+d2xfZGlzcGxheSgpKTsKKy0gICAgUVNvY2tldE5vdGlmaWVy ICpzbiA9IG5ldyBRU29ja2V0Tm90aWZpZXIoZmQsIFFTb2NrZXROb3RpZmllcjo6UmVhZCwgbURp c3BsYXkuZGF0YSgpKTsKKy0gICAgUU9iamVjdDo6Y29ubmVjdChzbiwgU0lHTkFMKGFjdGl2YXRl ZChRU29ja2V0RGVzY3JpcHRvcikpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1ZXN0 cygpKSk7CistCisgICAgIC8vIFF0IGRvZXMgbm90IHN1cHBvcnQgcnVubmluZyB3aXRoIG5vIHNj cmVlbnMKKyAgICAgbURpc3BsYXktPmVuc3VyZVNjcmVlbigpOworIH0KK0BAIC0yNjIsNiArMjY5 LDE0IEBAIFFXYXlsYW5kRGlzcGxheSAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6ZGlzcGxheSgpIGNv bnN0CisgICAgIHJldHVybiBtRGlzcGxheS5kYXRhKCk7CisgfQorIAorK1F0OjpLZXlib2FyZE1v ZGlmaWVycyBRV2F5bGFuZEludGVncmF0aW9uOjpxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkgY29u c3QKKyt7CisrICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJbnB1dERldmlj ZSgpKSB7CisrICAgICAgICByZXR1cm4gc2VhdC0+bW9kaWZpZXJzKCk7CisrICAgIH0KKysgICAg cmV0dXJuIFF0OjpOb01vZGlmaWVyOworK30KKysKKyBRTGlzdDxpbnQ+IFFXYXlsYW5kSW50ZWdy YXRpb246OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorIHsKKyAg ICAgaWYgKGF1dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpCitAQCAt NDc5LDcgKzQ5NCw3IEBAIHZvaWQgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cmVjb25maWd1cmVJbnB1 dENvbnRleHQoKQorICAgICB9CisgI2VuZGlmCisgCistICAgIHFDRGVidWcobGNRcGFXYXlsYW5k KSA8PCAidXNpbmcgaW5wdXQgbWV0aG9kOiIgPDwgaW5wdXRDb250ZXh0KCktPm1ldGFPYmplY3Qo KS0+Y2xhc3NOYW1lKCk7CisrICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNpbmcgaW5w dXQgbWV0aG9kOiIgPDwgKGlucHV0Q29udGV4dCgpID8gaW5wdXRDb250ZXh0KCktPm1ldGFPYmpl Y3QoKS0+Y2xhc3NOYW1lKCkgOiAiPG5vbmU+Iik7CisgfQorIAorIFFXYXlsYW5kU2hlbGxJbnRl Z3JhdGlvbiAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxJbnRlZ3JhdGlvbihjb25z dCBRU3RyaW5nICZpbnRlZ3JhdGlvbk5hbWUpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGludGVncmF0aW9uX3AuaAoraW5kZXggZmY3MGFlMjUuLjczYjgwNjU4IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCitAQCAtMTA3LDYgKzEw Nyw4IEBAIHB1YmxpYzoKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KCkgY29uc3Q7 CisgCisrICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkg Y29uc3Qgb3ZlcnJpZGU7CisrCisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0IFFL ZXlFdmVudCAqZXZlbnQpIGNvbnN0IG92ZXJyaWRlOworIAorICAgICBRU3RyaW5nTGlzdCB0aGVt ZU5hbWVzKCkgY29uc3Qgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitpbmRleCA4MzJmOTY3OC4uZWE1MDg3NzEg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxlY3Rp b252MS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVj dGlvbnYxLmNwcAorQEAgLTU0LDExICs1NCw2IEBAIFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRl dmljZU1hbmFnZXJWMTo6UVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxCisg ICAgIDogendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxKGRpc3BsYXktPnds X3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIHVpbnQoMSkpKQorICAgICAsIG1fZGlzcGxh eShkaXNwbGF5KQorIHsKKy0gICAgLy8gQ3JlYXRlIGRldmljZXMgZm9yIGFsbCBzZWF0cy4KKy0g ICAgLy8gVGhpcyBvbmx5IHdvcmtzIGlmIHdlIGdldCB0aGUgZ2xvYmFsIGJlZm9yZSBhbGwgZGV2 aWNlcworLSAgICBjb25zdCBhdXRvIHNlYXRzID0gbV9kaXNwbGF5LT5pbnB1dERldmljZXMoKTsK Ky0gICAgZm9yIChhdXRvICpzZWF0IDogc2VhdHMpCistICAgICAgICBzZWF0LT5zZXRQcmltYXJ5 U2VsZWN0aW9uRGV2aWNlKGNyZWF0ZURldmljZShzZWF0KSk7CisgfQorIAorIFFXYXlsYW5kUHJp bWFyeVNlbGVjdGlvbkRldmljZVYxICpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VNYW5h Z2VyVjE6OmNyZWF0ZURldmljZShRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0KQorZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcCBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAoraW5kZXggNmNiMzM3ZGUuLjU1MzdkYWZkIDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK0BAIC02MCw3ICs2MCw3 IEBAIFFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxOjpRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJW MShRV2F5bGFuZERpc3BsYXkqIGRpc3BsYXksCisgfQorIAorIFFXYXlsYW5kU2NyZWVuOjpRV2F5 bGFuZFNjcmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5LCBpbnQgdmVyc2lvbiwg dWludDMyX3QgaWQpCistICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3BsYXkt PndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDIpKQorKyAgICA6IFF0V2F5bGFuZDo6 d2xfb3V0cHV0KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9u LCAzKSkKKyAgICAgLCBtX291dHB1dElkKGlkKQorICAgICAsIG1XYXlsYW5kRGlzcGxheSh3YXls YW5kRGlzcGxheSkKKyAgICAgLCBtT3V0cHV0TmFtZShRU3RyaW5nTGl0ZXJhbCgiU2NyZWVuJTEi KS5hcmcoaWQpKQorQEAgLTcyLDcgKzcyLDcgQEAgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5kU2Ny ZWVuKFFXYXlsYW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW4KKyAg ICAgICAgIHFDV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ3bF9vdXRwdXQgZG9uZSBldmVudCBu b3Qgc3VwcG9ydGVkIGJ5IGNvbXBvc2l0b3IsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPDwgIlFTY3JlZW4gbWF5IG5vdCB3b3JrIGNvcnJlY3RseSI7CisgICAgICAgICBtV2F5 bGFuZERpc3BsYXktPmZvcmNlUm91bmRUcmlwKCk7IC8vIEdpdmUgdGhlIGNvbXBvc2l0b3IgYSBj aGFuY2UgdG8gc2VuZCBnZW9tZXRyeSBldGMuCistICAgICAgICBtT3V0cHV0RG9uZSA9IHRydWU7 IC8vIEZha2UgdGhlIGRvbmUgZXZlbnQKKysgICAgICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0 cHV0RG9uZUV2ZW50OyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisgICAgICAgICBtYXliZUluaXRp YWxpemUoKTsKKyAgICAgfQorIH0KK0BAIC04MSwxNiArODEsMjkgQEAgUVdheWxhbmRTY3JlZW46 On5RV2F5bGFuZFNjcmVlbigpCisgeworICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlh bGl6ZWQoKSkKKyAgICAgICAgIHp4ZGdfb3V0cHV0X3YxOjpkZXN0cm95KCk7CisrICAgIGlmICh3 bF9vdXRwdXQ6OmlzSW5pdGlhbGl6ZWQoKSAmJiB3bF9vdXRwdXRfZ2V0X3ZlcnNpb24od2xfb3V0 cHV0OjpvYmplY3QoKSkgPj0gV0xfT1VUUFVUX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysgICAg ICAgIHdsX291dHB1dDo6cmVsZWFzZSgpOworK30KKysKKyt1aW50IFFXYXlsYW5kU2NyZWVuOjpy ZXF1aXJlZEV2ZW50cygpIGNvbnN0CisreworKyAgICB1aW50IHJldCA9IE91dHB1dERvbmVFdmVu dDsKKysKKysgICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpKSB7Cisr ICAgICAgICByZXQgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworKworKyAgICAgICAgaWYgKG1XYXls YW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPCAzKQorKyAgICAgICAg ICAgIHJldCB8PSBYZGdPdXRwdXREb25lRXZlbnQ7CisrICAgIH0KKysgICAgcmV0dXJuIHJldDsK KyB9CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6bWF5YmVJbml0aWFsaXplKCkKKyB7CisgICAg IFFfQVNTRVJUKCFtSW5pdGlhbGl6ZWQpOworIAorLSAgICBpZiAoIW1PdXRwdXREb25lKQorLSAg ICAgICAgcmV0dXJuOworLQorLSAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5h Z2VyKCkgJiYgIW1YZGdPdXRwdXREb25lKQorKyAgICBjb25zdCB1aW50IHJlcXVpcmVkRXZlbnRz ID0gdGhpcy0+cmVxdWlyZWRFdmVudHMoKTsKKysgICAgaWYgKChtUHJvY2Vzc2VkRXZlbnRzICYg cmVxdWlyZWRFdmVudHMpICE9IHJlcXVpcmVkRXZlbnRzKQorICAgICAgICAgcmV0dXJuOworIAor ICAgICBtSW5pdGlhbGl6ZWQgPSB0cnVlOworQEAgLTI3Niw5ICsyODksOCBAQCB2b2lkIFFXYXls YW5kU2NyZWVuOjpvdXRwdXRfc2NhbGUoaW50MzJfdCBmYWN0b3IpCisgCisgdm9pZCBRV2F5bGFu ZFNjcmVlbjo6b3V0cHV0X2RvbmUoKQorIHsKKy0gICAgbU91dHB1dERvbmUgPSB0cnVlOworLSAg ICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSAmJiBtV2F5bGFuZERpc3BsYXkt PnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpCistICAgICAgICBtWGRnT3V0cHV0 RG9uZSA9IHRydWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2ZW50Owor KworICAgICBpZiAobUluaXRpYWxpemVkKSB7CisgICAgICAgICB1cGRhdGVPdXRwdXRQcm9wZXJ0 aWVzKCk7CisgICAgICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkKK0BA IC0zMzksNyArMzUxLDcgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFfZG9u ZSgpCisgICAgIGlmIChRX1VOTElLRUxZKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdl cigpLT52ZXJzaW9uKCkgPj0gMykpCisgICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQpIDw8 ICJ6eGRnX291dHB1dF92MS5kb25lIHJlY2VpdmVkIG9uIHZlcnNpb24gMyBvciBuZXdlciwgdGhp cyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7CisgCistICAgIG1YZGdP dXRwdXREb25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXREb25l RXZlbnQ7CisgICAgIGlmIChtSW5pdGlhbGl6ZWQpCisgICAgICAgICB1cGRhdGVYZGdPdXRwdXRQ cm9wZXJ0aWVzKCk7CisgICAgIGVsc2UKK0BAIC0zNDgsNyArMzYwLDExIEBAIHZvaWQgUVdheWxh bmRTY3JlZW46Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46 Onp4ZGdfb3V0cHV0X3YxX25hbWUoY29uc3QgUVN0cmluZyAmbmFtZSkKKyB7CisrICAgIGlmIChR X1VOTElLRUxZKG1Jbml0aWFsaXplZCkpCisrICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQp IDw8ICJ6eGRnX291dHB1dF92MS5uYW1lIHJlY2VpdmVkIGFmdGVyIG91dHB1dCBoYXMgYmVlbiBp bml0aWFsaXplZCwgdGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7 CisrCisgICAgIG1PdXRwdXROYW1lID0gbmFtZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBY ZGdPdXRwdXROYW1lRXZlbnQ7CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46OnVwZGF0ZVhk Z091dHB1dFByb3BlcnRpZXMoKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kc2NyZWVuX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3Au aAoraW5kZXggZGYxYzk0ZjIuLjA1MGNmZGMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZHNjcmVlbl9wLmgKK0BAIC0xMTYsNiArMTE2LDEzIEBAIHB1YmxpYzoKKyAgICAgc3RhdGlj IFFXYXlsYW5kU2NyZWVuICpmcm9tV2xPdXRwdXQoOjp3bF9vdXRwdXQgKm91dHB1dCk7CisgCisg cHJpdmF0ZToKKysgICAgZW51bSBFdmVudCA6IHVpbnQgeworKyAgICAgICAgWGRnT3V0cHV0RG9u ZUV2ZW50ID0gMHgxLAorKyAgICAgICAgT3V0cHV0RG9uZUV2ZW50ID0gMHgyLAorKyAgICAgICAg WGRnT3V0cHV0TmFtZUV2ZW50ID0gMHg0LAorKyAgICB9OworKyAgICB1aW50IHJlcXVpcmVkRXZl bnRzKCkgY29uc3Q7CisrCisgICAgIHZvaWQgb3V0cHV0X21vZGUodWludDMyX3QgZmxhZ3MsIGlu dCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHJlZnJlc2gpIG92ZXJyaWRlOworICAgICB2b2lkIG91 dHB1dF9nZW9tZXRyeShpbnQzMl90IHgsIGludDMyX3QgeSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCitAQCAtMTQ4LDggKzE1NSw3IEBA IHByaXZhdGU6CisgICAgIFFTaXplIG1QaHlzaWNhbFNpemU7CisgICAgIFFTdHJpbmcgbU91dHB1 dE5hbWU7CisgICAgIFF0OjpTY3JlZW5PcmllbnRhdGlvbiBtX29yaWVudGF0aW9uID0gUXQ6OlBy aW1hcnlPcmllbnRhdGlvbjsKKy0gICAgYm9vbCBtT3V0cHV0RG9uZSA9IGZhbHNlOworLSAgICBi b29sIG1YZGdPdXRwdXREb25lID0gZmFsc2U7CisrICAgIHVpbnQgbVByb2Nlc3NlZEV2ZW50cyA9 IDA7CisgICAgIGJvb2wgbUluaXRpYWxpemVkID0gZmFsc2U7CisgCisgI2lmIFFUX0NPTkZJRyhj dXJzb3IpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNr aW5nc3RvcmUuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3Rv cmUuY3BwCitpbmRleCBkYzdmZjY3MC4uNDFjZmZkZjcgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAorQEAgLTUyLDYgKzUyLDcgQEAK KyAKKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5kLWNs aWVudC1wcm90b2NvbC5oPgorIAorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlz dGQuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKK0BAIC02MSw2ICs2Miw5IEBACisgIyAg aWZuZGVmIE1GRF9DTE9FWEVDCisgIyAgICBkZWZpbmUgTUZEX0NMT0VYRUMgICAgIDB4MDAwMVUK KyAjICBlbmRpZgorKyMgIGlmbmRlZiBNRkRfQUxMT1dfU0VBTElORworKyMgICAgZGVmaW5lIE1G RF9BTExPV19TRUFMSU5HIDB4MDAwMlUKKysjICBlbmRpZgorICNlbmRpZgorIAorIFFUX0JFR0lO X05BTUVTUEFDRQorQEAgLTc0LDggKzc4LDEwIEBAIFFXYXlsYW5kU2htQnVmZmVyOjpRV2F5bGFu ZFNobUJ1ZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksCisgICAgIGludCBhbGxvYyA9IHN0 cmlkZSAqIHNpemUuaGVpZ2h0KCk7CisgICAgIGludCBmZCA9IC0xOworIAorLSNpZmRlZiBTWVNf bWVtZmRfY3JlYXRlCistICAgIGZkID0gc3lzY2FsbChTWVNfbWVtZmRfY3JlYXRlLCAid2F5bGFu ZC1zaG0iLCBNRkRfQ0xPRVhFQyk7CisrI2lmIGRlZmluZWQoU1lTX21lbWZkX2NyZWF0ZSkgJiYg ZGVmaW5lZChGX1NFQUxfU0VBTCkKKysgICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVhdGUs ICJ3YXlsYW5kLXNobSIsIE1GRF9DTE9FWEVDIHwgTUZEX0FMTE9XX1NFQUxJTkcpOworKyAgICBp ZiAoZmQgPj0gMCkKKysgICAgICAgIGZjbnRsKGZkLCBGX0FERF9TRUFMUywgRl9TRUFMX1NIUklO SyB8IEZfU0VBTF9TRUFMKTsKKyAjZW5kaWYKKyAKKyAgICAgUVNjb3BlZFBvaW50ZXI8UUZpbGU+ IGZpbGVQb2ludGVyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k d2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAoraW5k ZXggY2I4Mjg1N2EuLmZiMmM1OWRjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmR3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdp bmRvdy5jcHAKK0BAIC03Niw3ICs3Niw2IEBAIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRv dzo6bU1vdXNlR3JhYiA9IG51bGxwdHI7CisgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2luZG93 KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQorICAgICA6IFFQbGF0 Zm9ybVdpbmRvdyh3aW5kb3cpCisgICAgICwgbURpc3BsYXkoZGlzcGxheSkKKy0gICAgLCBtRnJh bWVRdWV1ZShtRGlzcGxheS0+Y3JlYXRlRnJhbWVRdWV1ZSgpKQorICAgICAsIG1SZXNpemVBZnRl clN3YXAocUVudmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFORF9SRVNJWkVfQUZURVJf U1dBUCIpKQorIHsKKyAgICAgeworQEAgLTk1LDkgKzk0LDYgQEAgUVdheWxhbmRXaW5kb3c6OlFX YXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQor IAorIFFXYXlsYW5kV2luZG93Ojp+UVdheWxhbmRXaW5kb3coKQorIHsKKy0gICAgbURpc3BsYXkt PmRlc3Ryb3lGcmFtZVF1ZXVlKG1GcmFtZVF1ZXVlKTsKKy0gICAgbURpc3BsYXktPmhhbmRsZVdp bmRvd0Rlc3Ryb3llZCh0aGlzKTsKKy0KKyAgICAgZGVsZXRlIG1XaW5kb3dEZWNvcmF0aW9uOwor IAorICAgICBpZiAobVN1cmZhY2UpCitAQCAtMjQzLDYgKzIzOSw3IEBAIGJvb2wgUVdheWxhbmRX aW5kb3c6OnNob3VsZENyZWF0ZVN1YlN1cmZhY2UoKSBjb25zdAorIAorIHZvaWQgUVdheWxhbmRX aW5kb3c6OnJlc2V0KCkKKyB7CisrICAgIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKyAgICAgZGVsZXRl IG1TaGVsbFN1cmZhY2U7CisgICAgIG1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBkZWxl dGUgbVN1YlN1cmZhY2VXaW5kb3c7CitAQCAtMjU1LDE3ICsyNTIsMjIgQEAgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6cmVzZXQoKQorICAgICAgICAgbVN1cmZhY2UucmVzZXQoKTsKKyAgICAgfQorIAor LSAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3ko bUZyYW1lQ2FsbGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAg ICB9CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgp OworKyAgICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAgICAgICAgd2xfY2FsbGJh Y2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2sg PSBudWxscHRyOworKyAgICAgICAgfQorIAorLSAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1l ci5pbnZhbGlkYXRlKCk7CistICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOwor KyAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAgICAg ICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgIH0KKyAgICAgbUZyYW1l Q2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworIAorICAgICBtTWFzayA9IFFSZWdpb24oKTsKKyAg ICAgbVF1ZXVlZEJ1ZmZlciA9IG51bGxwdHI7CisrCisrICAgIG1EaXNwbGF5LT5oYW5kbGVXaW5k b3dEZXN0cm95ZWQodGhpcyk7CisgfQorIAorIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdpbmRv dzo6ZnJvbVdsU3VyZmFjZSg6OndsX3N1cmZhY2UgKnN1cmZhY2UpCitAQCAtMzUxLDE5ICszNTMs MjUgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFSZWN0 ICZyZWN0KQorICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5 KGNvbnN0IFFSZWN0ICZyZWN0KQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5KGNv bnN0IFFSZWN0ICZyKQorIHsKKysgICAgYXV0byByZWN0ID0gcjsKKysgICAgaWYgKGZpeGVkVG9w bGV2ZWxQb3NpdGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCkt PnR5cGUoKSAhPSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6 OlRvb2xUaXApIHsKKysgICAgICAgIHJlY3QubW92ZVRvKHNjcmVlbigpLT5nZW9tZXRyeSgpLnRv cExlZnQoKSk7CisrICAgIH0KKyAgICAgc2V0R2VvbWV0cnlfaGVscGVyKHJlY3QpOworIAorICAg ICBpZiAod2luZG93KCktPmlzVmlzaWJsZSgpICYmIHJlY3QuaXNWYWxpZCgpKSB7CisgICAgICAg ICBpZiAobVdpbmRvd0RlY29yYXRpb24pCisgICAgICAgICAgICAgbVdpbmRvd0RlY29yYXRpb24t PnVwZGF0ZSgpOworIAorLSAgICAgICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlw ZSgpID09IEVnbCAmJiBtU2VudEluaXRpYWxSZXNpemUpCisrICAgICAgICBpZiAobVJlc2l6ZUFm dGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkgewor KyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtUmVzaXplTG9jayk7CisgICAgICAgICAg ICAgbVJlc2l6ZURpcnR5ID0gdHJ1ZTsKKy0gICAgICAgIGVsc2UKKysgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlR2VvbWV0cnlDaGFu Z2Uod2luZG93KCksIGdlb21ldHJ5KCkpOworLQorKyAgICAgICAgfQorICAgICAgICAgbVNlbnRJ bml0aWFsUmVzaXplID0gdHJ1ZTsKKyAgICAgfQorICAgICBRUmVjdCBleHBvc2VHZW9tZXRyeShR UG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpOworQEAgLTM3NCw3ICszODIsNyBAQCB2b2lkIFFX YXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgICAgIG1T aGVsbFN1cmZhY2UtPnNldFdpbmRvd0dlb21ldHJ5KHdpbmRvd0NvbnRlbnRHZW9tZXRyeSgpKTsK KyAKKyAgICAgaWYgKGlzT3BhcXVlKCkgJiYgbU1hc2suaXNFbXB0eSgpKQorLSAgICAgICAgc2V0 T3BhcXVlQXJlYShyZWN0KTsKKysgICAgICAgIHNldE9wYXF1ZUFyZWEoUVJlY3QoUVBvaW50KDAs IDApLCByZWN0LnNpemUoKSkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNpemVG cm9tQXBwbHlDb25maWd1cmUoY29uc3QgUVNpemUgJnNpemVXaXRoTWFyZ2lucywgY29uc3QgUVBv aW50ICZvZmZzZXQpCitAQCAtMzk5LDIxICs0MDcsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93Ojpz ZW5kRXhwb3NlRXZlbnQoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIG1MYXN0RXhwb3NlR2VvbWV0 cnkgPSByZWN0OworIH0KKyAKKy0KKy1zdGF0aWMgUVZlY3RvcjxRUG9pbnRlcjxRV2F5bGFuZFdp bmRvdz4+IGFjdGl2ZVBvcHVwczsKKy0KKy12b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZVBvcHVw cyhRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorLXsKKy0gICAgd2hpbGUgKCFhY3RpdmVQb3B1cHMu aXNFbXB0eSgpKSB7CistICAgICAgICBhdXRvIHBvcHVwID0gYWN0aXZlUG9wdXBzLnRha2VMYXN0 KCk7CistICAgICAgICBpZiAocG9wdXAuaXNOdWxsKCkpCistICAgICAgICAgICAgY29udGludWU7 CistICAgICAgICBpZiAocG9wdXAuZGF0YSgpID09IHBhcmVudCkKKy0gICAgICAgICAgICByZXR1 cm47CistICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKy0gICAgfQorLX0KKy0KKyBRUGxhdGZvcm1T Y3JlZW4gKlFXYXlsYW5kV2luZG93OjpjYWxjdWxhdGVTY3JlZW5Gcm9tU3VyZmFjZUV2ZW50cygp IGNvbnN0CisgeworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworQEAgLTQz MywxMCArNDI2LDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2li bGUpCisgICAgIGxhc3RWaXNpYmxlID0gdmlzaWJsZTsKKyAKKyAgICAgaWYgKHZpc2libGUpIHsK Ky0gICAgICAgIGlmICh3aW5kb3coKS0+dHlwZSgpID09IFF0OjpQb3B1cCB8fCB3aW5kb3coKS0+ dHlwZSgpID09IFF0OjpUb29sVGlwKQorLSAgICAgICAgICAgIGFjdGl2ZVBvcHVwcyA8PCB0aGlz OworICAgICAgICAgaW5pdFdpbmRvdygpOworLSAgICAgICAgbURpc3BsYXktPmZsdXNoUmVxdWVz dHMoKTsKKyAKKyAgICAgICAgIHNldEdlb21ldHJ5KHdpbmRvd0dlb21ldHJ5KCkpOworICAgICAg ICAgLy8gRG9uJ3QgZmx1c2ggdGhlIGV2ZW50cyBoZXJlLCBvciBlbHNlIHRoZSBuZXdseSB2aXNp YmxlIHdpbmRvdyBtYXkgc3RhcnQgZHJhd2luZywgYnV0IHNpbmNlCitAQCAtNDQ0LDcgKzQzNCw2 IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAgICAg ICAgLy8gUVdheWxhbmRTaG1CYWNraW5nU3RvcmU6OmJlZ2luUGFpbnQoKS4KKyAgICAgfSBlbHNl IHsKKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKy0gICAgICAgIGNsb3NlUG9w dXBzKHRoaXMpOworICAgICAgICAgcmVzZXQoKTsKKyAgICAgfQorIH0KK0BAIC01NTYsMTIgKzU0 NSwxMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kUmVjdXJzaXZlRXhwb3NlRXZlbnQoKQor IAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OmF0dGFjaChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBp bnQgeCwgaW50IHkpCisgeworLSAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7Cisg ICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgaWYgKG1TdXJmYWNl ID09IG51bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGlmIChidWZmZXIpIHsKKysg ICAgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgICAgIGhhbmRsZVVw ZGF0ZSgpOworICAgICAgICAgYnVmZmVyLT5zZXRCdXN5KCk7CisgCitAQCAtNTgzLDcgKzU3Miwx MSBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpkYW1hZ2UoY29uc3QgUVJlY3QgJnJlY3QpCisgICAg IGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBtU3Vy ZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdo dCgpKTsKKysgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAgICBpZiAobURpc3BsYXktPmNv bXBvc2l0b3JWZXJzaW9uKCkgPj0gNCkKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVmZmVy KHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICogcmVjdC5o ZWlnaHQoKSk7CisrICAgIGVsc2UKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCks IHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworIH0KKyAKKyB2b2lkIFFX YXlsYW5kV2luZG93OjpzYWZlQ29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0IFFS ZWdpb24gJmRhbWFnZSkKK0BAIC02MTksOCArNjEyLDE0IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6 OmNvbW1pdChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCisg ICAgICAgICByZXR1cm47CisgCisgICAgIGF0dGFjaE9mZnNldChidWZmZXIpOworLSAgICBmb3Ig KGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCistICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJl Y3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgaWYg KG1EaXNwbGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpIHsKKysgICAgICAgIGNvbnN0IGlu dCBzID0gc2NhbGUoKTsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFnZSkK KysgICAgICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiBy ZWN0LnkoKSwgcyAqIHJlY3Qud2lkdGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICB9IGVs c2UgeworKyAgICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAgICAg ICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJl Y3QuaGVpZ2h0KCkpOworKyAgICB9CisgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgp KTsKKyAgICAgYnVmZmVyLT5zZXRDb21taXR0ZWQoKTsKKyAgICAgbVN1cmZhY2UtPmNvbW1pdCgp OworQEAgLTYzNSw0MiArNjM0LDUzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdCgpCisg CisgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNrTGlz dGVuZXIgPSB7CisgICAgIFtdKHZvaWQgKmRhdGEsIHdsX2NhbGxiYWNrICpjYWxsYmFjaywgdWlu dDMyX3QgdGltZSkgeworLSAgICAgICAgUV9VTlVTRUQoY2FsbGJhY2spOworICAgICAgICAgUV9V TlVTRUQodGltZSk7CisgICAgICAgICBhdXRvICp3aW5kb3cgPSBzdGF0aWNfY2FzdDxRV2F5bGFu ZFdpbmRvdyo+KGRhdGEpOworLSAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNrKCk7 CisrICAgICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soY2FsbGJhY2spOworICAgICB9 CisgfTsKKyAKKy12b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKCkKKyt2 b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKHdsX2NhbGxiYWNrKiBjYWxs YmFjaykKKyB7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7Cisr ICAgIGlmICghbUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGNh bGxiYWNrIGlzIGFscmVhZHkgdW5zZXQgYnkgUVdheWxhbmRXaW5kb3c6OnJlc2V0LgorKyAgICAg ICAgLy8gVGhlIHdsX2NhbGxiYWNrIG9iamVjdCB3aWxsIGJlIGRlc3Ryb3llZCB0aGVyZSB0b28u CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgUV9BU1NFUlQoY2FsbGJhY2sgPT0gbUZy YW1lQ2FsbGJhY2spOworKyAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAg bUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworKworICAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJh Y2sgPSBmYWxzZTsKKyAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgp OworIAorICAgICAvLyBUaGUgcmVzdCBjYW4gd2FpdCB1bnRpbCB3ZSBjYW4gcnVuIGl0IG9uIHRo ZSBjb3JyZWN0IHRocmVhZAorLSAgICBpZiAoIW1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkpIHsK Ky0gICAgICAgIGF1dG8gZG9IYW5kbGVFeHBvc2UgPSBbdGhpc10oKSB7CistICAgICAgICAgICAg Ym9vbCB3YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CistICAgICAgICAgICAgbUZyYW1lQ2FsbGJh Y2tUaW1lZE91dCA9IGZhbHNlOworLSAgICAgICAgICAgIGlmICghd2FzRXhwb3NlZCAmJiBpc0V4 cG9zZWQoKSkgLy8gRGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCBtYWtlIHRoZSB3 aW5kb3cgZXhwb3NlZD8KKy0gICAgICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQ b2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkpOworLSAgICAgICAgICAgIGlmICh3YXNFeHBvc2Vk ICYmIGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCistICAgICAgICAgICAgICAgIGRlbGl2ZXJV cGRhdGVSZXF1ZXN0KCk7CistCistICAgICAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVy eSA9IGZhbHNlOworLSAgICAgICAgfTsKKysgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0aGlz XSgpIHsKKysgICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkuc3RvcmVSZWxlYXNlKGZh bHNlKTsKKysgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworKyAgICAgICAg bUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworKyAgICAgICAgaWYgKCF3YXNFeHBvc2Vk ICYmIGlzRXhwb3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0IG1h a2UgdGhlIHdpbmRvdyBleHBvc2VkPworKyAgICAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVj dChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysgICAgICAgIGlmICh3YXNFeHBvc2Vk ICYmIGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisrICAgICAgICAgICAgZGVsaXZlclVwZGF0 ZVJlcXVlc3QoKTsKKysgICAgfTsKKyAKKysgICAgaWYgKG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZl cnkudGVzdEFuZFNldEFjcXVpcmUoZmFsc2UsIHRydWUpKSB7CisgICAgICAgICAvLyBRdWV1ZWQg Y29ubmVjdGlvbiwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgaGFuZGxlVXBkYXRlKCkgZnJv bSBpbnNpZGUgd2FpdEZvckZyYW1lU3luYygpCisgICAgICAgICAvLyBpbiB0aGUgc2luZ2xlLXRo cmVhZGVkIGNhc2UuCistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gdHJ1ZTsK KyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgZG9IYW5kbGVFeHBvc2Us IFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgfQorKworKyAgICBtRnJhbWVTeW5jV2FpdC5u b3RpZnlfYWxsKCk7CisgfQorIAorIGJvb2wgUVdheWxhbmRXaW5kb3c6OndhaXRGb3JGcmFtZVN5 bmMoaW50IHRpbWVvdXQpCisgeworLSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1GcmFtZVF1ZXVl Lm11dGV4KTsKKy0gICAgbURpc3BsYXktPmRpc3BhdGNoUXVldWVXaGlsZShtRnJhbWVRdWV1ZS5x dWV1ZSwgWyZdKCkgeyByZXR1cm4gbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrOyB9LCB0aW1lb3V0 KTsKKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKysgICAg UURlYWRsaW5lVGltZXIgZGVhZGxpbmUodGltZW91dCk7CisrICAgIHdoaWxlIChtV2FpdGluZ0Zv ckZyYW1lQ2FsbGJhY2sgJiYgbUZyYW1lU3luY1dhaXQud2FpdCgmbUZyYW1lU3luY011dGV4LCBk ZWFkbGluZSkpIHsgfQorIAorICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7Cisg ICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZl IGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7 CitAQCAtODY4LDYgKzg3OCwxNyBAQCBib29sIFFXYXlsYW5kV2luZG93OjpjcmVhdGVEZWNvcmF0 aW9uKCkKKyAgICAgICAgICAgICBzdWJzdXJmLT5zZXRfcG9zaXRpb24ocG9zLngoKSArIG0ubGVm dCgpLCBwb3MueSgpICsgbS50b3AoKSk7CisgICAgICAgICB9CisgICAgICAgICBzZW5kRXhwb3Nl RXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrCisrICAgICAgICAv LyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBidWZmZXIgaXMgcmVjcmVhdGVkLCBi dXQgc2luY2UKKysgICAgICAgIC8vIHRoZSBjb250ZW50IHJlY3QgcmVtYWlucyB0aGUgc2FtZSwg dGhlIHdpZGdldHMgcmVtYWluIHRoZSBzYW1lCisrICAgICAgICAvLyBzaXplIGFuZCBhcmUgbm90 IHJlZHJhd24sIGxlYXZpbmcgdGhlIG5ldyBidWZmZXIgZW1wdHkuIEFzIGEgc2ltcGxlCisrICAg ICAgICAvLyB3b3JrLWFyb3VuZCwgd2UgdHJpZ2dlciBhIGZ1bGwgZXh0cmEgdXBkYXRlIHdoZW5l dmVyIHRoZSBjbGllbnQtc2lkZQorKyAgICAgICAgLy8gd2luZG93IGRlY29yYXRpb25zIGFyZSB0 b2dnbGVkIHdoaWxlIHRoZSB3aW5kb3cgaXMgc2hvd2luZy4KKysgICAgICAgIC8vIE5vdGU6IGNy ZWF0ZURlY29yYXRpb24oKSBpcyBzb21ldGltZXMgY2FsbGVkIGZyb20gdGhlIHJlbmRlciB0aHJl YWQKKysgICAgICAgIC8vIG9mIFF0IFF1aWNrLiBUaGlzIGlzIGVzc2VudGlhbGx5IHdyb25nIGFu ZCBjb3VsZCBwb3RlbnRpYWxseSBjYXVzZSBwcm9ibGVtcywKKysgICAgICAgIC8vIGJ1dCB1bnRp bCB0aGUgdW5kZXJseWluZyBpc3N1ZSBoYXMgYmVlbiBmaXhlZCwgd2UgaGF2ZSB0byB1c2UgaW52 b2tlTWV0aG9kKCkKKysgICAgICAgIC8vIGhlcmUgdG8gYXZvaWQgYXNzZXJ0cy4KKysgICAgICAg IFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qod2luZG93KCksICZRV2luZG93OjpyZXF1ZXN0VXBk YXRlKTsKKyAgICAgfQorIAorICAgICByZXR1cm4gbVdpbmRvd0RlY29yYXRpb247CitAQCAtMTAy Myw2ICsxMDQ0LDEzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVNjcmVlbnNDaGFuZ2Vk KCkKKyAKKyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U2NyZWVuQ2hh bmdlZCh3aW5kb3coKSwgbmV3U2NyZWVuLT5RUGxhdGZvcm1TY3JlZW46OnNjcmVlbigpKTsKKyAg ICAgbUxhc3RSZXBvcnRlZFNjcmVlbiA9IG5ld1NjcmVlbjsKKysgICAgaWYgKGZpeGVkVG9wbGV2 ZWxQb3NpdGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCktPnR5 cGUoKSAhPSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlRv b2xUaXAKKysgICAgICAgICYmIGdlb21ldHJ5KCkudG9wTGVmdCgpICE9IG5ld1NjcmVlbi0+Z2Vv bWV0cnkoKS50b3BMZWZ0KCkpIHsKKysgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSB0aGlzLT5nZW9t ZXRyeSgpOworKyAgICAgICAgZ2VvbWV0cnkubW92ZVRvKG5ld1NjcmVlbi0+Z2VvbWV0cnkoKS50 b3BMZWZ0KCkpOworKyAgICAgICAgc2V0R2VvbWV0cnkoZ2VvbWV0cnkpOworKyAgICB9CisgCisg ICAgIGludCBzY2FsZSA9IG5ld1NjcmVlbi0+aXNQbGFjZWhvbGRlcigpID8gMSA6IHN0YXRpY19j YXN0PFFXYXlsYW5kU2NyZWVuICo+KG5ld1NjcmVlbiktPnNjYWxlKCk7CisgICAgIGlmIChzY2Fs ZSAhPSBtU2NhbGUpIHsKK0BAIC0xMDk0LDEwICsxMTIyLDE4IEBAIGJvb2wgUVdheWxhbmRXaW5k b3c6OnNldE1vdXNlR3JhYkVuYWJsZWQoYm9vbCBncmFiKQorICAgICByZXR1cm4gdHJ1ZTsKKyB9 CisgCisrUXQ6OldpbmRvd1N0YXRlcyBRV2F5bGFuZFdpbmRvdzo6d2luZG93U3RhdGVzKCkgY29u c3QKKyt7CisrICAgIHJldHVybiBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzOworK30KKysKKyB2 b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5kb3dT dGF0ZXMgc3RhdGVzKQorIHsKKyAgICAgY3JlYXRlRGVjb3JhdGlvbigpOworLSAgICBRV2luZG93 U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRl cywgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3Rh dGVzV2l0aG91dEFjdGl2ZSA9IHN0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRdDo6 V2luZG93U3RhdGVzIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlID0gbUxhc3RSZXBvcnRlZFdpbmRv d1N0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNl OjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRlc1dpdGhvdXRBY3RpdmUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs YXN0U3RhdGVzV2l0aG91dEFjdGl2ZSk7CisgICAgIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMg PSBzdGF0ZXM7CisgfQorIAorQEAgLTExMzksMTkgKzExNzUsMjQgQEAgdm9pZCBRV2F5bGFuZFdp bmRvdzo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+dGlt ZXJJZCgpICE9IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpCisgICAgICAgICBy ZXR1cm47CisgCistICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxsYmFj a0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CistICAgIGlm ICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJF eHBpcmVkICkgeworLSAgICAgICAga2lsbFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZh bFRpbWVySWQpOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9 IC0xOworLSAgICB9CistICAgIGlmIChtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1ZhbGlk KCkgJiYgY2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrRWxh cHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2VyIGxv Y2soJm1GcmFtZVN5bmNNdXRleCk7CisgCistICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tp bmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRv dyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CistICAgICAgICBtRnJhbWVDYWxsYmFja1RpbWVk T3V0ID0gdHJ1ZTsKKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CistICAgICAg ICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CisrICAgICAgICBib29sIGNhbGxiYWNrVGltZXJF eHBpcmVkID0gbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxs YmFja1RpbWVvdXQpOworKyAgICAgICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5p c1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CisrICAgICAgICAgICAga2lsbFRp bWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpOworKyAgICAgICAgICAgIG1G cmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKysgICAgICAgIH0KKysgICAg ICAgIGlmICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8ICFjYWxsYmFj a1RpbWVyRXhwaXJlZCkgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAg ICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKyAgICAgfQorKwor KyAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZy YW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7Cisr ICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworKyAgICBtV2FpdGluZ0ZvclVwZGF0 ZSA9IGZhbHNlOworKyAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CisgfQorIAorIHZvaWQg UVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorQEAgLTExNjAsOCArMTIwMSwxMSBAQCB2 b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAgICAgUV9BU1NFUlQoaGFzUGVu ZGluZ1VwZGF0ZVJlcXVlc3QoKSk7IC8vIHNob3VsZCBiZSBzZXQgYnkgUVBBCisgCisgICAgIC8v IElmIHdlIGhhdmUgYSBmcmFtZSBjYWxsYmFjayBhbGwgaXMgZ29vZCBhbmQgd2lsbCBiZSB0YWtl biBjYXJlIG9mIHRoZXJlCistICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCistICAg ICAgICByZXR1cm47CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFt ZVN5bmNNdXRleCk7CisrICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQorKyAg ICAgICAgICAgIHJldHVybjsKKysgICAgfQorIAorICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGNh bGxlZCBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpLCBidXQgaGF2ZW4ndCBzZWVuIGFueSBhdHRhY2gr Y29tbWl0L3N3YXAgeWV0CisgICAgIC8vIFRoaXMgaXMgYSBzb21ld2hhdCByZWR1bmRhbnQgYmVo YXZpb3IgYW5kIG1pZ2h0IGluZGljYXRlIGEgYnVnIGluIHRoZSBjYWxsaW5nIGNvZGUsIHNvIGxv ZworQEAgLTExNzQsNyArMTIxOCwxMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBk YXRlKCkKKyAgICAgLy8gc28gdXNlIGludm9rZU1ldGhvZCB0byBkZWxheSB0aGUgZGVsaXZlcnkg YSBiaXQuCisgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdIHsKKyAg ICAgICAgIC8vIFRoaW5ncyBtaWdodCBoYXZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lCistICAg ICAgICBpZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSAmJiAhbVdhaXRpbmdGb3JGcmFtZUNh bGxiYWNrKQorKyAgICAgICAgeworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1G cmFtZVN5bmNNdXRleCk7CisrICAgICAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFj aykKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKGhh c1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJlcXVl c3QoKTsKKyAgICAgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KK0BAIC0xMTg1LDE5ICsx MjM0LDE4IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorIHZvaWQgUVdh eWxhbmRXaW5kb3c6OmhhbmRsZVVwZGF0ZSgpCisgeworICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJh Y2tpbmdzdG9yZSkgPDwgImhhbmRsZVVwZGF0ZSIgPDwgUVRocmVhZDo6Y3VycmVudFRocmVhZCgp OworKworICAgICAvLyBUT0RPOiBTaG91bGQgc3luYyBzdWJzdXJmYWNlcyBhdm9pZCByZXF1ZXN0 aW5nIGZyYW1lIGNhbGxiYWNrcz8KKyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1cmZhY2VMb2Nr KTsKKyAgICAgaWYgKCFtU3VyZmFjZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYgKG1G cmFtZUNhbGxiYWNrKSB7CistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNhbGxi YWNrKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAgICBR TXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAobVdhaXRpbmdG b3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgcmV0dXJuOworIAorLSAgICBRTXV0ZXhMb2NrZXIg bG9ja2VyKG1GcmFtZVF1ZXVlLm11dGV4KTsKKyAgICAgc3RydWN0IDo6d2xfc3VyZmFjZSAqd3Jh cHBlZFN1cmZhY2UgPSByZWludGVycHJldF9jYXN0PHN0cnVjdCA6OndsX3N1cmZhY2UgKj4od2xf cHJveHlfY3JlYXRlX3dyYXBwZXIobVN1cmZhY2UtPm9iamVjdCgpKSk7CistICAgIHdsX3Byb3h5 X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNlKSwg bUZyYW1lUXVldWUucXVldWUpOworKyAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnByZXRf Y2FzdDx3bF9wcm94eSAqPih3cmFwcGVkU3VyZmFjZSksIG1EaXNwbGF5LT5mcmFtZUV2ZW50UXVl dWUoKSk7CisgICAgIG1GcmFtZUNhbGxiYWNrID0gd2xfc3VyZmFjZV9mcmFtZSh3cmFwcGVkU3Vy ZmFjZSk7CisgICAgIHdsX3Byb3h5X3dyYXBwZXJfZGVzdHJveSh3cmFwcGVkU3VyZmFjZSk7Cisg ICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihtRnJhbWVDYWxsYmFjaywgJlFXYXlsYW5kV2lu ZG93OjpjYWxsYmFja0xpc3RlbmVyLCB0aGlzKTsKK0BAIC0xMjA3LDYgKzEyNTUsOCBAQCB2b2lk IFFXYXlsYW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorICAgICAvLyBTdGFydCBhIHRpbWVyIGZv ciBoYW5kbGluZyB0aGUgY2FzZSB3aGVuIHRoZSBjb21wb3NpdG9yIHN0b3BzIHNlbmRpbmcgZnJh bWUgY2FsbGJhY2tzLgorICAgICBpZiAobUZyYW1lQ2FsbGJhY2tUaW1lb3V0ID4gMCkgeworICAg ICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworKyAgICAgICAg ICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrCisgICAgICAgICAg ICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykgeworICAgICAgICAgICAgICAgICBpZiAo bUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA8IDApCisgICAgICAgICAgICAgICAg ICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gc3RhcnRUaW1lcihtRnJh bWVDYWxsYmFja1RpbWVvdXQpOworQEAgLTEyNjcsNiArMTMxNywyMCBAQCB2b2lkIFFXYXlsYW5k V2luZG93OjpzZXRPcGFxdWVBcmVhKGNvbnN0IFFSZWdpb24gJm9wYXF1ZUFyZWEpCisgICAgIHds X3JlZ2lvbl9kZXN0cm95KHJlZ2lvbik7CisgfQorIAorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OmFk ZENoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsKKysgICAgbUNoaWxkUG9wdXBz LmFwcGVuZChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVtb3ZlQ2hp bGRQb3B1cChRV2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMucmVt b3ZlQWxsKHN1cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZUNoaWxk UG9wdXBzKCkgeworKyAgICB3aGlsZSAoIW1DaGlsZFBvcHVwcy5pc0VtcHR5KCkpIHsKKysgICAg ICAgIGF1dG8gcG9wdXAgPSBtQ2hpbGRQb3B1cHMudGFrZUxhc3QoKTsKKysgICAgICAgIHBvcHVw LT5yZXNldCgpOworKyAgICB9CisrfQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitpbmRleCAwMTMzN2NmZi4uMmYyMTlkOGMg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorQEAgLTk4LDYgKzk4 LDkgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXls YW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZFdpbmRvdygpIG92ZXJyaWRlOwor IAorKyAgICAvLyBLZWVwIFRvcGxldmVscyBwb3NpdGlvbiBvbiB0aGUgdG9wIGxlZnQgY29ybmVy IG9mIHRoZWlyIHNjcmVlbgorKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgZml4ZWRUb3BsZXZlbFBv c2l0aW9ucyA9IHRydWU7CisrCisgICAgIHZpcnR1YWwgV2luZG93VHlwZSB3aW5kb3dUeXBlKCkg Y29uc3QgPSAwOworICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlU2l6ZSgpOworICAgICBXSWQgd2lu SWQoKSBjb25zdCBvdmVycmlkZTsKK0BAIC0xNDgsNiArMTUxLDcgQEAgcHVibGljOgorICAgICB2 b2lkIHNldFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKSBvdmVycmlkZTsKKyAg ICAgdm9pZCBzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpIG92ZXJyaWRlOwor ICAgICB2b2lkIGhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBzdGF0 ZXMpOworKyAgICBRdDo6V2luZG93U3RhdGVzIHdpbmRvd1N0YXRlcygpIGNvbnN0OworIAorICAg ICB2b2lkIHJhaXNlKCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgbG93ZXIoKSBvdmVycmlkZTsKK0BA IC0yMDYsNiArMjEwLDEwIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVVcGRhdGUoKTsKKyAg ICAgdm9pZCBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGFk ZENoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCByZW1vdmVDaGls ZFBvcHVwKFFXYXlsYW5kV2luZG93KiBjaGlsZCk7CisrICAgIHZvaWQgY2xvc2VDaGlsZFBvcHVw cygpOworKworIHB1YmxpYyBzbG90czoKKyAgICAgdm9pZCBhcHBseUNvbmZpZ3VyZSgpOworIAor QEAgLTIxNSw3ICsyMjMsMTEgQEAgc2lnbmFsczoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIFFXYXls YW5kRGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRyOworKworKyAgICAvLyBtU3VyZmFjZSBjYW4g YmUgd3JpdHRlbiBieSB0aGUgbWFpbiB0aHJlYWQuIE90aGVyIHRocmVhZHMgc2hvdWxkIGNsYWlt IGEgcmVhZCBsb2NrIGZvciBhY2Nlc3MKKysgICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBtU3Vy ZmFjZUxvY2s7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU3VyZmFjZT4gbVN1cmZhY2U7 CisrCisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICptU2hlbGxTdXJmYWNlID0gbnVsbHB0cjsK KyAgICAgUVdheWxhbmRTdWJTdXJmYWNlICptU3ViU3VyZmFjZVdpbmRvdyA9IG51bGxwdHI7Cisg ICAgIFFWZWN0b3I8UVdheWxhbmRTdWJTdXJmYWNlICo+IG1DaGlsZHJlbjsKK0BAIC0yMjUsMTMg KzIzNywxNCBAQCBwcm90ZWN0ZWQ6CisgICAgIFF0OjpNb3VzZUJ1dHRvbnMgbU1vdXNlUHJlc3Nl ZEluQ29udGVudEFyZWEgPSBRdDo6Tm9CdXR0b247CisgCisgICAgIFdJZCBtV2luZG93SWQ7Cist ICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIGJvb2wgbUZy YW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOyAvLyBXaGV0aGVyIHRoZSBmcmFtZSBjYWxsYmFj ayBoYXMgdGltZWQgb3V0CistICAgIGJvb2wgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZh bHNlOworICAgICBpbnQgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0xOwor LSAgICBRRWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyOworLSAgICBzdHJ1 Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICBRV2F5bGFu ZERpc3BsYXk6OkZyYW1lUXVldWUgbUZyYW1lUXVldWU7CisrICAgIFFBdG9taWNJbnQgbVdhaXRp bmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOworKworKyAgICBib29sIG1XYWl0aW5nRm9yRnJh bWVDYWxsYmFjayA9IGZhbHNlOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAg IFFFbGFwc2VkVGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7IC8vIFByb3RlY3RlZCBi eSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxi YWNrID0gbnVsbHB0cjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBRTXV0 ZXggbUZyYW1lU3luY011dGV4OworICAgICBRV2FpdENvbmRpdGlvbiBtRnJhbWVTeW5jV2FpdDsK KyAKKyAgICAgLy8gVHJ1ZSB3aGVuIHdlIGhhdmUgY2FsbGVkIGRlbGl2ZXJSZXF1ZXN0VXBkYXRl LCBidXQgdGhlIGNsaWVudCBoYXMgbm90IHlldCBhdHRhY2hlZCBhIG5ldyBidWZmZXIKK0BAIC0y NjEsNiArMjc0LDggQEAgcHJvdGVjdGVkOgorICAgICBRV2F5bGFuZEJ1ZmZlciAqbVF1ZXVlZEJ1 ZmZlciA9IG51bGxwdHI7CisgICAgIFFSZWdpb24gbVF1ZXVlZEJ1ZmZlckRhbWFnZTsKKyAKKysg ICAgUUxpc3Q8UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBtQ2hpbGRQb3B1cHM7CisrCisgcHJp dmF0ZToKKyAgICAgdm9pZCBzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3QpOwor ICAgICB2b2lkIGluaXRXaW5kb3coKTsKK0BAIC0yODMsMTIgKzI5OCwxMCBAQCBwcml2YXRlOgor ICAgICBRUmVjdCBtTGFzdEV4cG9zZUdlb21ldHJ5OworIAorICAgICBzdGF0aWMgY29uc3Qgd2xf Y2FsbGJhY2tfbGlzdGVuZXIgY2FsbGJhY2tMaXN0ZW5lcjsKKy0gICAgdm9pZCBoYW5kbGVGcmFt ZUNhbGxiYWNrKCk7CisrICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxsYmFjayhzdHJ1Y3QgOjp3bF9j YWxsYmFjayogY2FsbGJhY2spOworIAorICAgICBzdGF0aWMgUVdheWxhbmRXaW5kb3cgKm1Nb3Vz ZUdyYWI7CisgCistICAgIG11dGFibGUgUVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOworLQor ICAgICBmcmllbmQgY2xhc3MgUVdheWxhbmRTdWJTdXJmYWNlOworIH07CisgCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxsaW50 ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5 bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCitpbmRleCBjY2FkMDA0OC4uNGNjOWIzYjggMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hl bGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdy YXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorQEAgLTczLDExICs3MywxMCBAQCBw dWJsaWM6CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICB2aXJ0dWFsIFFXYXls YW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRv dykgPSAwOworKyAgICAvLyBrZXB0IGZvciBiaW5hcnkgY29tcGF0IHdpdGggbGF5ZXItc2hlbGwt cXQKKyAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5k V2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgICAgICBp ZiAobmV3Rm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3RpdmF0 ZWQobmV3Rm9jdXMpOworLSAgICAgICAgaWYgKG9sZEZvY3VzKQorLSAgICAgICAgICAgIG1fZGlz cGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworKyAgICAgICAgUV9VTlVT RUQobmV3Rm9jdXMpOworKyAgICAgICAgUV9VTlVTRUQob2xkRm9jdXMpOworICAgICB9CisgICAg IHZpcnR1YWwgdm9pZCAqbmF0aXZlUmVzb3VyY2VGb3JXaW5kb3coY29uc3QgUUJ5dGVBcnJheSAm cmVzb3VyY2UsIFFXaW5kb3cgKndpbmRvdykgeworICAgICAgICAgUV9VTlVTRUQocmVzb3VyY2Up OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbiBi L3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgoraW5kZXggYmNmZDUyMTUu LmRhOTVkMDdiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZpZ3Vy ZS5qc29uCisrKysgYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KK0BA IC03LDYgKzcsMzEgQEAKKyAgICAgInRlc3REaXIiOiAiLi4vLi4vY29uZmlnLnRlc3RzIiwKKyAK KyAgICAgImxpYnJhcmllcyI6IHsKKysgICAgICAgICJ3YXlsYW5kLWNsaWVudCI6IHsKKysgICAg ICAgICAgICAibGFiZWwiOiAiV2F5bGFuZCBjbGllbnQgbGlicmFyeSIsCisrICAgICAgICAgICAg ImhlYWRlcnMiOiAid2F5bGFuZC12ZXJzaW9uLmgiLAorKyAgICAgICAgICAgICJ0ZXN0Ijogewor KyAgICAgICAgICAgICAgICAibWFpbiI6IFsKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZ TEFORF9WRVJTSU9OX01BSk9SIDwgMSIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlcnJvciBX YXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAi I2VuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJTSU9OX01BSk9S ID09IDEiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9S IDwgOCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBo aWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZW5kaWYiLAorKyAgICAg ICAgICAgICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9SID09IDgiLAorKyAgICAg ICAgICAgICAgICAgICAgIiMgIGlmIFdBWUxBTkRfVkVSU0lPTl9NSUNSTyA8IDAiLAorKyAgICAg ICAgICAgICAgICAgICAgIiMgICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJl ZCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAg ICAgIiMgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKysgICAgICAgICAg ICAgICAgIF0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJzb3VyY2VzIjogWworKyAg ICAgICAgICAgICAgICB7ICJ0eXBlIjogInBrZ0NvbmZpZyIsICJhcmdzIjogIndheWxhbmQtY2xp ZW50IiB9LAorKyAgICAgICAgICAgICAgICAiLWx3YXlsYW5kLWNsaWVudCIKKysgICAgICAgICAg ICBdCisrICAgICAgICB9LAorICAgICAgICAgIndheWxhbmQtc2VydmVyIjogeworICAgICAgICAg ICAgICJsYWJlbCI6ICJ3YXlsYW5kLXNlcnZlciIsCisgICAgICAgICAgICAgImhlYWRlcnMiOiAi d2F5bGFuZC12ZXJzaW9uLmgiLAorQEAgLTE1MSw4ICsxNzYsNyBAQAorICAgICAgICAgICAgICAg ICAgICAgIiNlbmRpZiIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAg ICAgICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAg ICAgICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZG1hYnVm LWNsaWVudC1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIkxpbnV4IENsaWVudCBk bWEtYnVmIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNzYsOCArMjAwLDcgQEAKKyAgICAgICAgICAg ICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9 LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjogImVn bCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAgICAg InZ1bGthbi1zZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxrYW4g QnVmZmVyIFNoYXJpbmciLAorQEAgLTE5NSw3ICsyMTgsOCBAQAorICAgICAgICAgICAgICAgICAg ICAgImV4cG9ydEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9IQU5E TEVfVFlQRV9PUEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJldHVy biAwOyIKKyAgICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9 LAorKyAgICAgICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9CisgICAg IH0sCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Ns aWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2hh cmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNw cAoraW5kZXggNzg4OWY1NzUuLjY0MTQwNjcyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9o YXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFu ZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitAQCAtNDAsNiArNDAsNyBAQAorICNpbmNsdWRl ICJxd2F5bGFuZGVnbHdpbmRvdy5oIgorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQvcHJp dmF0ZS9xd2F5bGFuZHNjcmVlbl9wLmg+CisrI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2 YXRlL3F3YXlsYW5kc3VyZmFjZV9wLmg+CisgI2luY2x1ZGUgInF3YXlsYW5kZ2xjb250ZXh0Lmgi CisgCisgI2luY2x1ZGUgPFF0RWdsU3VwcG9ydC9wcml2YXRlL3FlZ2xjb252ZW5pZW5jZV9wLmg+ CitAQCAtMTI0LDYgKzEyNSw3IEBAIHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZh Y2UoYm9vbCBjcmVhdGUpCisgICAgICAgICB9CisgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7 CisgICAgIH0gZWxzZSB7CisrICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9j ayk7CisgICAgICAgICBpZiAobV93YXlsYW5kRWdsV2luZG93KSB7CisgICAgICAgICAgICAgaW50 IGN1cnJlbnRfd2lkdGgsIGN1cnJlbnRfaGVpZ2h0OworICAgICAgICAgICAgIHN0YXRpYyBib29s IGRpc2FibGVSZXNpemVDaGVjayA9IHFnZXRlbnYoIlFUX1dBWUxBTkRfRElTQUJMRV9SRVNJWkVD SEVDSyIpLnRvSW50KCk7CitAQCAtMTMxLDE0ICsxMzMsMTYgQEAgdm9pZCBRV2F5bGFuZEVnbFdp bmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAgICAgICAgICBpZiAoIWRpc2Fi bGVSZXNpemVDaGVjaykgeworICAgICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X2dldF9hdHRh Y2hlZF9zaXplKG1fd2F5bGFuZEVnbFdpbmRvdywgJmN1cnJlbnRfd2lkdGgsICZjdXJyZW50X2hl aWdodCk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmIChkaXNhYmxlUmVzaXplQ2hl Y2sgfHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkgfHwgY3VycmVu dF9oZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSkgeworKyAgICAgICAgICAgIGlm IChkaXNhYmxlUmVzaXplQ2hlY2sgfHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5z LndpZHRoKCkgfHwgY3VycmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSB8 fCBtX3JlcXVlc3RlZFNpemUgIT0gc2l6ZVdpdGhNYXJnaW5zKSB7CisgICAgICAgICAgICAgICAg IHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2F5bGFuZEVnbFdpbmRvdywgc2l6ZVdpdGhNYXJnaW5z LndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSwgbU9mZnNldC54KCksIG1PZmZzZXQu eSgpKTsKKysgICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5z OworICAgICAgICAgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7CisgCisgICAgICAgICAgICAg ICAgIG1fcmVzaXplID0gdHJ1ZTsKKyAgICAgICAgICAgICB9CistICAgICAgICB9IGVsc2UgaWYg KGNyZWF0ZSAmJiB3bFN1cmZhY2UoKSkgeworLSAgICAgICAgICAgIG1fd2F5bGFuZEVnbFdpbmRv dyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSgpLCBzaXplV2l0aE1hcmdpbnMud2lk dGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgIH0gZWxzZSBpZiAoY3Jl YXRlICYmIG1TdXJmYWNlKSB7CisrICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0gd2xf ZWdsX3dpbmRvd19jcmVhdGUobVN1cmZhY2UtPm9iamVjdCgpLCBzaXplV2l0aE1hcmdpbnMud2lk dGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgICAgICBtX3JlcXVlc3Rl ZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoIW1f ZWdsU3VyZmFjZSAmJiBtX3dheWxhbmRFZ2xXaW5kb3cgJiYgY3JlYXRlKSB7CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9x d2F5bGFuZGVnbHdpbmRvdy5oIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2Ns aWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitpbmRleCA1YjFmNGQ1Ni4uMDA3 OWRmZWYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xp ZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv aGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cu aAorQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKKyAgICAgbXV0YWJsZSBRT3BlbkdMRnJhbWVi dWZmZXJPYmplY3QgKm1fY29udGVudEZCTyA9IG51bGxwdHI7CisgCisgICAgIFFTdXJmYWNlRm9y bWF0IG1fZm9ybWF0OworKyAgICBRU2l6ZSBtX3JlcXVlc3RlZFNpemU7CisgfTsKKyAKKyB9Citk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3Iv bGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmggYi9xdHdheWxhbmQvc3JjL2hh cmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGlu dXhkbWFidWYuaAoraW5kZXggNTZhNzEwYzMuLmM2YThiNmM2IDEwMDY0NAorLS0tIGEvcXR3YXls YW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVuc3Rh YmxlLXYxL2xpbnV4ZG1hYnVmLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3Jh dGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCitA QCAtNDEsNiArNDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUVRleHRTdHJlYW0+CisgI2luY2x1 ZGUgPFF0R3VpL1FPcGVuR0xUZXh0dXJlPgorIAorKyNpbmNsdWRlIDxhcnJheT4KKysKKyAjaW5j bHVkZSA8RUdML2VnbC5oPgorICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisgCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwIGIv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCitpbmRl eCBlNzVmZGEzYy4uZmE4ODUxNDMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv ZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAorQEAgLTE2NCwxMyArMTY0LDEwIEBAIHZv aWQgUVdheWxhbmRCcmFkaWVudERlY29yYXRpb246OnBhaW50KFFQYWludERldmljZSAqZGV2aWNl KQorICAgICAvLyBXaW5kb3cgaWNvbgorICAgICBRSWNvbiBpY29uID0gd2F5bGFuZFdpbmRvdygp LT53aW5kb3dJY29uKCk7CisgICAgIGlmICghaWNvbi5pc051bGwoKSkgeworLSAgICAgICAgUVBp eG1hcCBwaXhtYXAgPSBpY29uLnBpeG1hcChRU2l6ZSgxMjgsIDEyOCkpOworLSAgICAgICAgUVBp eG1hcCBzY2FsZWQgPSBwaXhtYXAuc2NhbGVkKDIyLCAyMiwgUXQ6Oklnbm9yZUFzcGVjdFJhdGlv LCBRdDo6U21vb3RoVHJhbnNmb3JtYXRpb24pOworLQorICAgICAgICAgUVJlY3RGIGljb25SZWN0 KDAsIDAsIDIyLCAyMik7CistICAgICAgICBwLmRyYXdQaXhtYXAoaWNvblJlY3QuYWRqdXN0ZWQo bWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywg NCksCistICAgICAgICAgICAgICAgICAgICAgc2NhbGVkLCBpY29uUmVjdCk7CisrICAgICAgICBp Y29uUmVjdC5hZGp1c3QobWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywg NCksCisrICAgICAgICBpY29uLnBhaW50KCZwLCBpY29uUmVjdC50b1JlY3QoKSk7CisgICAgIH0K KyAKKyAgICAgLy8gV2luZG93IHRpdGxlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdh eWxhbmR4ZGdwb3B1cHY1LmNwcAoraW5kZXggODVkMjVlM2MuLjYwYmRkNDkxIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3 YXlsYW5keGRncG9wdXB2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitAQCAtNDcsMTgg KzQ3LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGll bnQgeworIAorLVFXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6 OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpCisrUVdheWxhbmRY ZGdQb3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1 cCwgUVdheWxhbmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKyAgICAg OiBRV2F5bGFuZFNoZWxsU3VyZmFjZSh3aW5kb3cpCisgICAgICwgUXRXYXlsYW5kOjp4ZGdfcG9w dXBfdjUocG9wdXApCisrICAgICwgbV9wYXJlbnQocGFyZW50KQorICAgICAsIG1fd2luZG93KHdp bmRvdykKKyB7CisgICAgIGlmICh3aW5kb3ctPmRpc3BsYXkoKS0+d2luZG93RXh0ZW5zaW9uKCkp CisgICAgICAgICBtX2V4dGVuZGVkV2luZG93ID0gbmV3IFFXYXlsYW5kRXh0ZW5kZWRTdXJmYWNl KHdpbmRvdyk7CisrICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVwKG1fd2luZG93KTsKKyB9Cisg CisgUVdheWxhbmRYZGdQb3B1cFY1Ojp+UVdheWxhbmRYZGdQb3B1cFY1KCkKKyB7CisgICAgIHhk Z19wb3B1cF9kZXN0cm95KG9iamVjdCgpKTsKKysgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9w dXAobV93aW5kb3cpOworICAgICBkZWxldGUgbV9leHRlbmRlZFdpbmRvdzsKKyB9CisgCitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAoraW5kZXggNzQ5 NGY2YTYuLmQ4NWYxMzBiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxs aW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKKysrKyBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFu ZHhkZ3BvcHVwdjVfcC5oCitAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5U X0VYUE9SVCBRV2F5bGFuZFhkZ1BvcHVwVjUgOiBwdWJsaWMgUVdheWxhbmRTaGVsbFN1cmZhY2UK KyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3Ry dWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7CisrICAg IFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFu ZFdpbmRvdyogcGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAgICAgflFXYXlsYW5k WGRnUG9wdXBWNSgpIG92ZXJyaWRlOworIAorIHByb3RlY3RlZDoKK0BAIC03OCw2ICs3OCw3IEBA IHByb3RlY3RlZDoKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZEV4dGVuZGVkU3VyZmFjZSAq bV9leHRlbmRlZFdpbmRvdyA9IG51bGxwdHI7CisrICAgIFFXYXlsYW5kV2luZG93ICptX3BhcmVu dCA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kV2luZG93ICptX3dpbmRvdyA9IG51bGxwdHI7Cisg fTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3Bw CitpbmRleCA3ZTI0MmM0YS4uZGVmODQ1MmEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNw cAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK0BAIC04NCw3ICs4NCw3IEBAIFFXYXlsYW5kWGRn UG9wdXBWNSAqUVdheWxhbmRYZGdTaGVsbFY1OjpjcmVhdGVYZGdQb3B1cChRV2F5bGFuZFdpbmRv dyAqd2luZG93LCBRCisgICAgIGludCB4ID0gcG9zaXRpb24ueCgpICsgcGFyZW50V2luZG93LT5m cmFtZU1hcmdpbnMoKS5sZWZ0KCk7CisgICAgIGludCB5ID0gcG9zaXRpb24ueSgpICsgcGFyZW50 V2luZG93LT5mcmFtZU1hcmdpbnMoKS50b3AoKTsKKyAKKy0gICAgYXV0byBwb3B1cCA9IG5ldyBR V2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgpLCBwYXJl bnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgd2luZG93KTsKKysgICAgYXV0 byBwb3B1cCA9IG5ldyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPnds U3VyZmFjZSgpLCBwYXJlbnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgcGFy ZW50V2luZG93LCB3aW5kb3cpOworICAgICBtX3BvcHVwcy5hcHBlbmQod2luZG93KTsKKyAgICAg UU9iamVjdDo6Y29ubmVjdChwb3B1cCwgJlFXYXlsYW5kWGRnUG9wdXBWNTo6ZGVzdHJveWVkLCBb dGhpcywgd2luZG93XSgpeworICAgICAgICAgbV9wb3B1cHMucmVtb3ZlT25lKHdpbmRvdyk7Citk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVp bnRlZ3JhdGlvbi5jcHAKK2luZGV4IDRlMjU5NDlmLi5jZmM2MDkzOSAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFu ZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlv bi5jcHAKK0BAIC04NSwxMyArODUsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRY ZGdTaGVsbFY1SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICBy ZXR1cm4gbV94ZGdTaGVsbC0+Y3JlYXRlWGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lk IFFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdl ZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgewor LSAgICBpZiAobmV3Rm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAqPihu ZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5k b3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0 PFFXYXlsYW5kWGRnUG9wdXBWNSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAg ICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistfQorLQor IH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVn cmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1z aGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNlNmJkYjll Li5hZWQ4ODY3MCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKKysr KyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9x d2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK0BAIC02Nyw3ICs2Nyw2IEBAIHB1Ymxp YzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGlu aXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxh bmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93 KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFu ZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7Cisg CisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbFY1PiBtX3hk Z1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5j cHAKK2luZGV4IDhjMzcxNjYxLi4xNTFjNzhlMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAorQEAgLTE3NCw2ICsxNzQsNyBAQCBRV2F5bGFu ZFhkZ1N1cmZhY2VWNjo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZVY2ICp4ZGdTdXJm YWNlLCBRV2F5bGFuZFhkZworICAgICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorICAgICAs IG1fcGFyZW50KHBhcmVudCkKKyB7CisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+YWRkQ2hpbGRQ b3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNl VjY6OlBvcHVwOjp+UG9wdXAoKQorQEAgLTE4MSw2ICsxODIsOCBAQCBRV2F5bGFuZFhkZ1N1cmZh Y2VWNjo6UG9wdXA6On5Qb3B1cCgpCisgICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAg ICBkZXN0cm95KCk7CisgCisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+cmVtb3ZlQ2hpbGRQb3B1 cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAg ICAgICAgIGF1dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9B U1NFUlQoc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3 YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9z aGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlv bi5jcHAKK2luZGV4IDAzMTY0MzE2Li5lOGRhOGJhMSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxs djZpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAKK0BA IC02OCwyMCArNjgsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVsbFY2 SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4gbV94 ZGdTaGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5kWGRn U2hlbGxWNkludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdp bmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChu ZXdGb2N1cykgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5 bGFuZFhkZ1N1cmZhY2VWNiAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAg aWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAg ICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0g ICAgfQorLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFj ZVY2ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1 cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMtPnNo ZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5o YW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRv d0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy0gICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmggYi9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4 ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCitpbmRleCAyNjFmOGNiYi4uYzFiY2Q1YzYgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwt djYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2 aW50ZWdyYXRpb25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5k WGRnU2hlbGxWNkludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5k RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpj cmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAg IHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3Vz LCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAg IFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGxWNj4gbV94ZGdTaGVsbDsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdh eWxhbmR4ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlv bi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK2luZGV4IGYzZTNjMzMwLi5mYTZkNTgw OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitAQCAtNjcs MTEgKzY3LDYgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6VG9wbGV2ZWwoUVdheWxh bmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlKQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2 ZWw6On5Ub3BsZXZlbCgpCisgeworLSAgICBpZiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5k b3dBY3RpdmUpIHsKKy0gICAgICAgIFFXYXlsYW5kV2luZG93ICp3aW5kb3cgPSBtX3hkZ1N1cmZh Y2UtPndpbmRvdygpOworLSAgICAgICAgd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0Rl YWN0aXZhdGVkKHdpbmRvdyk7CistICAgIH0KKy0KKyAgICAgLy8gVGhlIHByb3RvY29sIHNwZWMg cmVxdWlyZXMgdGhhdCB0aGUgZGVjb3JhdGlvbiBvYmplY3QgaXMgZGVsZXRlZCBiZWZvcmUgeGRn X3RvcGxldmVsLgorICAgICBkZWxldGUgbV9kZWNvcmF0aW9uOworICAgICBtX2RlY29yYXRpb24g PSBudWxscHRyOworQEAgLTg1LDE2ICs4MCwxNSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6 VG9wbGV2ZWw6OmFwcGx5Q29uZmlndXJlKCkKKyAgICAgaWYgKCEobV9hcHBsaWVkLnN0YXRlcyAm IChRdDo6V2luZG93TWF4aW1pemVkfFF0OjpXaW5kb3dGdWxsU2NyZWVuKSkpCisgICAgICAgICBt X25vcm1hbFNpemUgPSBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT53aW5kb3dGcmFtZUdlb21ldHJ5 KCkuc2l6ZSgpOworIAorLSAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0 aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAgaWYg KChtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQuc3Rh dGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1fd2lu ZG93LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRnU3Vy ZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG1feGRnU3Vy ZmFjZS0+bV93aW5kb3cpOworIAorLSAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6Oldp bmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysg ICAgaWYgKCEobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2FwcGxp ZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2Ut Pm1fd2luZG93LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1f eGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQo bV94ZGdTdXJmYWNlLT5tX3dpbmRvdyk7CisgCistICAgIC8vIFRPRE86IG5vbmUgb2YgdGhlIG90 aGVyIHBsdWdpbnMgc2VuZCBXaW5kb3dBY3RpdmUgZWl0aGVyLCBidXQgaXMgaXQgb24gcHVycG9z ZT8KKy0gICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gbV9wZW5kaW5n LnN0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworLQorLSAgICBtX3hkZ1N1cmZhY2UtPm1fd2lu ZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKHN0YXRlc1dpdGhvdXRBY3RpdmUpOworKyAg ICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKG1fcGVu ZGluZy5zdGF0ZXMpOworIAorICAgICBpZiAobV9wZW5kaW5nLnNpemUuaXNFbXB0eSgpKSB7Cisg ICAgICAgICAvLyBBbiBlbXB0eSBzaXplIGluIHRoZSBjb25maWd1cmUgbWVhbnMgaXQncyB1cCB0 byB0aGUgY2xpZW50IHRvIGNob29zZSB0aGUgc2l6ZQorQEAgLTEwNSw4ICs5OSw2IEBAIHZvaWQg UVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAgICAgICAg bV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKG1fcGVuZGlu Zy5zaXplKTsKKyAgICAgfQorIAorLSAgICBtX3hkZ1N1cmZhY2UtPnNldFNpemVIaW50cygpOwor LQorICAgICBtX2FwcGxpZWQgPSBtX3BlbmRpbmc7CisgICAgIHFDRGVidWcobGNRcGFXYXlsYW5k KSA8PCAiQXBwbGllZCBwZW5kaW5nIHhkZ190b3BsZXZlbCBjb25maWd1cmUgZXZlbnQ6IiA8PCBt X2FwcGxpZWQuc2l6ZSA8PCBtX2FwcGxpZWQuc3RhdGVzOworIH0KK0BAIC0yMDMsMTIgKzE5NSwx NyBAQCBRdFdheWxhbmQ6OnhkZ190b3BsZXZlbDo6cmVzaXplX2VkZ2UgUVdheWxhbmRYZGdTdXJm YWNlOjpUb3BsZXZlbDo6Y29udmVydFRvUmVzaQorICAgICAgICAgICAgICAgICB8ICgoZWRnZXMg JiBRdDo6UmlnaHRFZGdlKSA/IHJlc2l6ZV9lZGdlX3JpZ2h0IDogMCkpOworIH0KKyAKKy1RV2F5 bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZh Y2UsIFFXYXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LAorK1FXYXlsYW5kWGRnU3VyZmFjZTo6UG9w dXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5kb3cg KnBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdFdheWxhbmQ6Onhk Z19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKQorLSAgICA6IHhkZ19wb3B1cCh4ZGdTdXJmYWNlLT5n ZXRfcG9wdXAocGFyZW50LT5vYmplY3QoKSwgcG9zaXRpb25lci0+b2JqZWN0KCkpKQorLSAgICAs IG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAgICA6IG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNl KQorKyAgICAsIG1fcGFyZW50WGRnU3VyZmFjZShxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJm YWNlICo+KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpKQorICAgICAsIG1fcGFyZW50KHBhcmVudCkK KyB7CisrCisrICAgIGluaXQoeGRnU3VyZmFjZS0+Z2V0X3BvcHVwKG1fcGFyZW50WGRnU3VyZmFj ZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+b2JqZWN0KCkgOiBudWxscHRyLCBwb3NpdGlvbmVyLT5v YmplY3QoKSkpOworKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5hZGRD aGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisgfQorIAorIFFXYXls YW5kWGRnU3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMjE2LDEwICsyMTMsMjQgQEAgUVdh eWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6ZWQo KSkKKyAgICAgICAgIGRlc3Ryb3koKTsKKyAKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAgICAg ICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysg ICAgfQorKworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwgPSBt X3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Btb3N0 R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKKy0gICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFiYmlu Z1BvcHVwID0gbV9wYXJlbnQtPm1fcG9wdXA7CisrICAgICAgICBzaGVsbC0+bV90b3Btb3N0R3Jh YmJpbmdQb3B1cCA9IG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+bV9w b3B1cCA6IG51bGxwdHI7CisrICAgICAgICBtX2dyYWJiaW5nID0gZmFsc2U7CisrCisrICAgICAg ICAvLyBTeW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAgICAg IFFXaW5kb3cgKmxlYXZlID0gbnVsbHB0cjsKKysgICAgICAgIGlmIChtX3hkZ1N1cmZhY2UgJiYg bV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgICAgICBsZWF2ZSA9IG1feGRnU3VyZmFj ZS0+d2luZG93KCktPndpbmRvdygpOworKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6 aGFuZGxlTGVhdmVFdmVudChsZWF2ZSk7CisrCisrICAgICAgICBpZiAoUVdpbmRvdyAqZW50ZXIg PSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6cG9zKCkpKQorKyAgICAgICAg ICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVudGVy LT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworICAgICB9 CisgfQorIAorQEAgLTI1Nyw2ICsyNjgsNyBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlFXYXlsYW5k WGRnU3VyZmFjZShRV2F5bGFuZFhkZ1NoZWxsICpzaGVsbCwgOjp4ZGdfc3VyZmFjZSAqcworICAg ICAgICAgICAgICAgICBtX3RvcGxldmVsLT5zZXRfcGFyZW50KHBhcmVudFhkZ1N1cmZhY2UtPm1f dG9wbGV2ZWwtPm9iamVjdCgpKTsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBzZXRTaXplSGlu dHMoKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjp+UVdheWxhbmRYZGdTdXJmYWNlKCkK K0BAIC00MDAsOCArNDEyLDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVwKFFX YXlsYW5kV2luZG93ICpwYXJlbnQpCisgeworICAgICBRX0FTU0VSVCghbV90b3BsZXZlbCAmJiAh bV9wb3B1cCk7CisgCistICAgIGF1dG8gcGFyZW50WGRnU3VyZmFjZSA9IHN0YXRpY19jYXN0PFFX YXlsYW5kWGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKTsKKy0KKyAgICAgYXV0 byBwb3NpdGlvbmVyID0gbmV3IFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIobV9zaGVsbC0+Y3Jl YXRlX3Bvc2l0aW9uZXIoKSk7CisgICAgIC8vIHNldF9wb3B1cCBleHBlY3RzIGEgcG9zaXRpb24g cmVsYXRpdmUgdG8gdGhlIHBhcmVudAorICAgICBRUG9pbnQgdHJhbnNpZW50UG9zID0gbV93aW5k b3ctPmdlb21ldHJ5KCkudG9wTGVmdCgpOyAvLyB0aGlzIGlzIGFic29sdXRlCitAQCAtNDE0LDgg KzQyNCw5IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdpbmRv dyAqcGFyZW50KQorICAgICBwb3NpdGlvbmVyLT5zZXRfYW5jaG9yKFF0V2F5bGFuZDo6eGRnX3Bv c2l0aW9uZXI6OmFuY2hvcl90b3BfbGVmdCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9ncmF2aXR5 KFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXI6OmdyYXZpdHlfYm90dG9tX3JpZ2h0KTsKKyAgICAg cG9zaXRpb25lci0+c2V0X3NpemUobV93aW5kb3ctPmdlb21ldHJ5KCkud2lkdGgoKSwgbV93aW5k b3ctPmdlb21ldHJ5KCkuaGVpZ2h0KCkpOworLSAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRoaXMs IHBhcmVudFhkZ1N1cmZhY2UsIHBvc2l0aW9uZXIpOworKyAgICBtX3BvcHVwID0gbmV3IFBvcHVw KHRoaXMsIHBhcmVudCwgcG9zaXRpb25lcik7CisgICAgIHBvc2l0aW9uZXItPmRlc3Ryb3koKTsK KysKKyAgICAgZGVsZXRlIHBvc2l0aW9uZXI7CisgfQorIAorQEAgLTQzNyw2ICs0NDgsMjMgQEAg dm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldEdyYWJQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFy ZW50LCBRV2F5bGFuZElucHV0RGV2aWMKKyAgICAgfQorICAgICBzZXRQb3B1cChwYXJlbnQpOwor ICAgICBtX3BvcHVwLT5ncmFiKGRldmljZSwgc2VyaWFsKTsKKysKKysgICAgLy8gU3ludGhlc2l6 ZSBRdCBlbnRlci9sZWF2ZSBldmVudHMgZm9yIHBvcHVwCisrICAgIGlmICghcGFyZW50KQorKyAg ICAgICAgcmV0dXJuOworKyAgICBRV2luZG93ICpjdXJyZW50ID0gUUd1aUFwcGxpY2F0aW9uOjp0 b3BMZXZlbEF0KFFDdXJzb3I6OnBvcygpKTsKKysgICAgUVdpbmRvdyAqbGVhdmUgPSBwYXJlbnQt PndpbmRvdygpOworKyAgICBpZiAoY3VycmVudCAhPSBsZWF2ZSkKKysgICAgICAgIHJldHVybjsK KysKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2ZSk7 CisrCisrICAgIFFXaW5kb3cgKmVudGVyID0gbnVsbHB0cjsKKysgICAgaWYgKG1fcG9wdXAgJiYg bV9wb3B1cC0+bV94ZGdTdXJmYWNlICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCkp CisrICAgICAgICBlbnRlciA9IG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCktPndpbmRv dygpOworKworKyAgICBpZiAoZW50ZXIpCisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNl OjpoYW5kbGVFbnRlckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpw b3MoKSksIFFDdXJzb3I6OnBvcygpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6 OnhkZ19zdXJmYWNlX2NvbmZpZ3VyZSh1aW50MzJfdCBzZXJpYWwpCitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRn c2hlbGxfcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCitpbmRleCA5Njc4NTIwNS4uNGI1MThmMGEgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwv cXdheWxhbmR4ZGdzaGVsbF9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAorQEAgLTEzMSwxNCArMTMx LDE1IEBAIHByaXZhdGU6CisgCisgICAgIGNsYXNzIFBvcHVwIDogcHVibGljIFF0V2F5bGFuZDo6 eGRnX3BvcHVwIHsKKyAgICAgcHVibGljOgorLSAgICAgICAgUG9wdXAoUVdheWxhbmRYZGdTdXJm YWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwgUXRXYXlsYW5kOjp4 ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcik7CisrICAgICAgICBQb3B1cChRV2F5bGFuZFhkZ1N1 cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFF0V2F5bGFuZDo6eGRn X3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpOworICAgICAgICAgflBvcHVwKCkgb3ZlcnJpZGU7Cisg CisgICAgICAgICB2b2lkIGdyYWIoUVdheWxhbmRJbnB1dERldmljZSAqc2VhdCwgdWludCBzZXJp YWwpOworICAgICAgICAgdm9pZCB4ZGdfcG9wdXBfcG9wdXBfZG9uZSgpIG92ZXJyaWRlOworIAor ICAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3hkZ1N1cmZhY2UgPSBudWxscHRyOworLSAg ICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudCA9IG51bGxwdHI7CisrICAgICAgICBR V2F5bGFuZFhkZ1N1cmZhY2UgKm1fcGFyZW50WGRnU3VyZmFjZSA9IG51bGxwdHI7CisrICAgICAg ICBRV2F5bGFuZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICAgICAgYm9vbCBtX2dy YWJiaW5nID0gZmFsc2U7CisgICAgIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3Jh dGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAoraW5kZXggODc2OWQ5NzEuLmRhMGRk NmE3IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxs aW50ZWdyYXRpb24uY3BwCitAQCAtNjksMjAgKzY5LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2Ug KlFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5k V2kKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9Cisg Cistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9jdXND aGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3Vz KQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNlID0g cW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNl KCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3Rp dmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVk KG5ld0ZvY3VzKTsKKy0gICAgfQorLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFX YXlsYW5kWGRnU3VyZmFjZSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7CistICAgICAg ICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihv bGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhk Z1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+ aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0KKyAK KyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgg Yi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxh bmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggYjZjYWE2YzkuLjJmOTI5Zjk4IDEwMDY0 NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs L3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRp b25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxJ bnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkgKmRp c3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxT dXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhhbmRs ZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRX aW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVkUG9p bnRlcjxRV2F5bGFuZFhkZ1NoZWxsPiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFu ZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwIGIvcXR3YXls YW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKK2luZGV4 IDUyNmQwZWY0Li5mNTBjY2YzMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3 YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3No YXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAorQEAgLTM5LDcgKzM5LDEw IEBACisgCisgI2luY2x1ZGUgInF3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXJfcC5oIgor IAorKyNpbmNsdWRlIDxRQnJ1c2g+CisrI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyAjaW5j bHVkZSA8UUlucHV0TWV0aG9kPgorKyNpbmNsdWRlIDxRUGFsZXR0ZT4KKyAjaW5jbHVkZSA8UVRl eHRDaGFyRm9ybWF0PgorIAorICNpZmRlZiBRVF9CVUlMRF9XQVlMQU5EQ09NUE9TSVRPUl9MSUIK K0BAIC04MSwzMiArODQsMzggQEAgdm9pZCBRV2F5bGFuZElucHV0TWV0aG9kRXZlbnRCdWlsZGVy OjphZGRQcmVlZGl0U3R5bGluZyh1aW50MzJfdCBpbmRleCwgdWludDMyX3QKKyAgICAgUVRleHRD aGFyRm9ybWF0IGZvcm1hdDsKKyAKKyAgICAgc3dpdGNoIChzdHlsZSkgeworLSAgICBjYXNlIDA6 CistICAgIGNhc2UgMToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxF X05PTkU6CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVF RElUX1NUWUxFX0RFRkFVTFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9T VFlMRV9VTkRFUkxJTkU6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsK KyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmds ZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhv ZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBs ZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgMjoKKy0gICAgY2Fz ZSAzOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfQUNUSVZFOgor KyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSU5BQ1RJVkU6CisgICAg ICAgICBmb3JtYXQuc2V0Rm9udFdlaWdodChRRm9udDo6Qm9sZCk7CisgICAgICAgICBmb3JtYXQu c2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHls ZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVkaXRT dHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZl bnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7 CistICAgIGNhc2UgNDoKKy0gICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOwor LSAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2luZ2xl VW5kZXJsaW5lKTsKKy0gICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9k RXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxl bmd0aCwgZm9ybWF0KSk7CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlM RV9ISUdITElHSFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9T RUxFQ1RJT046CisrICAgICAgICB7CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxp bmUodHJ1ZSk7CisrICAgICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hh ckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKysgICAgICAgICAgICBRUGFsZXR0ZSBwYWxldHRl ID0gcUFwcC0+cGFsZXR0ZSgpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRCYWNrZ3JvdW5kKFFC cnVzaChwYWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGlnaHQp KSk7CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvcmVncm91bmQoUUJydXNoKHBhbGV0dGUuY29s b3IoUVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodGVkVGV4dCkpKTsKKysgICAg ICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1 dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkp OworKyAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgY2FzZSBa V1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0lOQ09SUkVDVDoKKyAgICAgICAgIGZvcm1h dC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0 eWxlKFFUZXh0Q2hhckZvcm1hdDo6V2F2ZVVuZGVybGluZSk7CisgICAgICAgICBmb3JtYXQuc2V0 VW5kZXJsaW5lQ29sb3IoUUNvbG9yKFF0OjpyZWQpKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0eWxl cy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6 VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsKKy0v LyAgICBjYXNlIFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9zZWxlY3Rp b246CistLy8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6OnByZWVkaXRfc3R5bGVf bm9uZToKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgICB9CitAQCAtMTUzLDcg KzE2Miw3IEBAIFFJbnB1dE1ldGhvZEV2ZW50IFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1aWxk ZXI6OmJ1aWxkUHJlZWRpdChjb25zdCBRU3RyaW5nICZ0CisgCisgICAgIGlmIChtX3ByZWVkaXRD dXJzb3IgPCAwKSB7CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVu dDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3IsIDAsIDAsIFFWYXJpYW50KCkp KTsKKy0gICAgfSBlbHNlIGlmIChtX3ByZWVkaXRDdXJzb3IgPiAwKSB7CisrICAgIH0gZWxzZSB7 CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRl KFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3IsIGluZGV4RnJvbVdheWxhbmQodGV4dCwgbV9wcmVl ZGl0Q3Vyc29yKSwgMSwgUVZhcmlhbnQoKSkpOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcCBiL3F0d2F5bGFuZC9zcmMv c2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK2luZGV4IGE1ZmRkMzRkLi5lMmZlMTkyOCAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAK KysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK0BAIC02 MCw3ICs2MCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJyYXko UU1pbWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICAgICAgYnVmLm9w ZW4oUUlPRGV2aWNlOjpSZWFkV3JpdGUpOworICAgICAgICAgICAgIFFCeXRlQXJyYXkgZm10ID0g IkJNUCI7CisgICAgICAgICAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmlu ZygiaW1hZ2UvIikpKSB7CistICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0gbWlt ZVR5cGUubWlkKDYpLnRvVXBwZXIoKS50b0xhdGluMSgpOworKyAgICAgICAgICAgICAgICBRQnl0 ZUFycmF5IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b0xvd2VyKCkudG9MYXRpbjEoKTsKKyAg ICAgICAgICAgICAgICAgaWYgKFFJbWFnZVdyaXRlcjo6c3VwcG9ydGVkSW1hZ2VGb3JtYXRzKCku Y29udGFpbnMoaW1nRm10KSkKKyAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGltZ0ZtdDsKKyAg ICAgICAgICAgICB9CitAQCAtNzQsNyArNzQsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWltZUhl bHBlcjo6Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcgJgor ICAgICAgICAgUUxpc3Q8UVVybD4gdXJscyA9IG1pbWVEYXRhLT51cmxzKCk7CisgICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IHVybHMuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgY29u dGVudC5hcHBlbmQodXJscy5hdChpKS50b0VuY29kZWQoKSk7CistICAgICAgICAgICAgY29udGVu dC5hcHBlbmQoJ1xuJyk7CisrICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iKTsKKyAg ICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGNvbnRlbnQgPSBtaW1lRGF0YS0+ZGF0 YShtaW1lVHlwZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L2Rh dGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK2luZGV4IDE1NjhiM2I5Li4w Njc0MTBkMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRhZGV2 aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK0BAIC0zNSw3ICszNSw3IEBA CisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAorLWNvbnN0ZXhwciBpbnQg ZGF0YURldmljZVZlcnNpb24gPSAxOworK2NvbnN0ZXhwciBpbnQgZGF0YURldmljZVZlcnNpb24g PSAzOworIAorIGNsYXNzIERhdGFEZXZpY2VDb21wb3NpdG9yIDogcHVibGljIERlZmF1bHRDb21w b3NpdG9yIHsKKyBwdWJsaWM6CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9z ZWF0djUvdHN0X3NlYXR2NS5jcHAKK2luZGV4IDkzMTJjMmU1Li4yZWEzODJmMSAxMDA2NDQKKy0t LSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKKysr KyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKK0BA IC03Myw2ICs3Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbXVsdGlUb3VjaCgpOwor ICAgICB2b2lkIG11bHRpVG91Y2hVcEFuZE1vdGlvbkZyYW1lKCk7CisgICAgIHZvaWQgdGFwQW5k TW92ZUluU2FtZUZyYW1lKCk7CisrICAgIHZvaWQgY2FuY2VsVG91Y2goKTsKKyB9OworIAorIHZv aWQgdHN0X3NlYXR2NTo6YmluZHNUb1NlYXQoKQorQEAgLTY0Niw1ICs2NDcsMzQgQEAgdm9pZCB0 c3Rfc2VhdHY1Ojp0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKQorICAgICBRVFJZX0NPTVBBUkUod2lu ZG93Lm1fZXZlbnRzLmxhc3QoKS50b3VjaFBvaW50cy5maXJzdCgpLnN0YXRlKCksIFF0OjpUb3Vj aFBvaW50U3RhdGU6OlRvdWNoUG9pbnRSZWxlYXNlZCk7CisgfQorIAorK3ZvaWQgdHN0X3NlYXR2 NTo6Y2FuY2VsVG91Y2goKQorK3sKKysgICAgVG91Y2hXaW5kb3cgd2luZG93OworKyAgICBRQ09N UE9TSVRPUl9UUllfVkVSSUZZKHhkZ1N1cmZhY2UoKSAmJiB4ZGdTdXJmYWNlKCktPm1fY29tbWl0 dGVkQ29uZmlndXJlU2VyaWFsKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAq dCA9IHRvdWNoKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICB0LT5z ZW5kRG93bih4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCksIHszMiwgMzJ9LCAxKTsKKysgICAgICAg IHQtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHQtPnNlbmRDYW5jZWwoYyk7CisrICAgICAgICB0 LT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRVFJZX1ZFUklGWSghd2luZG93Lm1f ZXZlbnRzLmVtcHR5KCkpOworKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9ldmVu dHMudGFrZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91Y2hC ZWdpbik7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRTdGF0ZXMsIFF0OjpUb3VjaFBv aW50UHJlc3NlZCk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgpLCAx KTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMuZmlyc3QoKS5wb3MoKSwgUVBvaW50 RigzMi13aW5kb3cuZnJhbWVNYXJnaW5zKCkubGVmdCgpLCAzMi13aW5kb3cuZnJhbWVNYXJnaW5z KCkudG9wKCkpKTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9l dmVudHMudGFrZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91 Y2hDYW5jZWwpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5sZW5ndGgoKSwgMCk7 CisrICAgIH0KKyt9CisrCisgUUNPTVBPU0lUT1JfVEVTVF9NQUlOKHRzdF9zZWF0djUpCisgI2lu Y2x1ZGUgInRzdF9zZWF0djUubW9jIgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK2luZGV4IDVjNmM4M2JhLi5mYTliNzY2 MiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNv bXBvc2l0b3IuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2Nv cmVjb21wb3NpdG9yLmNwcAorQEAgLTI3LDYgKzI3LDcgQEAKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworIAorICNpbmNsdWRlICJjb3JlY29tcG9zaXRvci5oIgorKyNpbmNsdWRlIDx0aHJlYWQ+Cisg CisgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yIHsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAgYi9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKK2luZGV4IDBkOTg4NTIxLi5k MWEyZTdjYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQv Y29yZXByb3RvY29sLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJl ZC9jb3JlcHJvdG9jb2wuY3BwCitAQCAtNDUxLDYgKzQ1MSwxMyBAQCB2b2lkIFRvdWNoOjpzZW5k RnJhbWUod2xfY2xpZW50ICpjbGllbnQpCisgICAgICAgICBzZW5kX2ZyYW1lKHItPmhhbmRsZSk7 CisgfQorIAorK3ZvaWQgVG91Y2g6OnNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpCisrewor KyAgICBjb25zdCBhdXRvIHRvdWNoUmVzb3VyY2VzID0gcmVzb3VyY2VNYXAoKS52YWx1ZXMoY2xp ZW50KTsKKysgICAgZm9yIChhdXRvICpyIDogdG91Y2hSZXNvdXJjZXMpCisrICAgICAgICBzZW5k X2NhbmNlbChyLT5oYW5kbGUpOworK30KKysKKyB1aW50IEtleWJvYXJkOjpzZW5kRW50ZXIoU3Vy ZmFjZSAqc3VyZmFjZSkKKyB7CisgICAgIGF1dG8gc2VyaWFsID0gbV9zZWF0LT5tX2NvbXBvc2l0 b3ItPm5leHRTZXJpYWwoKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZC9jb3JlcHJvdG9jb2wuaAoraW5kZXggYTFhZjEzN2EuLjIxMGQ4ZGRiIDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorKysr IGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAorQEAg LTE1OCw3ICsxNTgsNyBAQCBjbGFzcyBXbENvbXBvc2l0b3IgOiBwdWJsaWMgR2xvYmFsLCBwdWJs aWMgUXRXYXlsYW5kU2VydmVyOjp3bF9jb21wb3NpdG9yCisgeworICAgICBRX09CSkVDVAorIHB1 YmxpYzoKKy0gICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21wb3Np dG9yLCBpbnQgdmVyc2lvbiA9IDMpCisrICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3JlQ29t cG9zaXRvciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSA0KQorICAgICAgICAgOiBRdFdheWxh bmRTZXJ2ZXI6OndsX2NvbXBvc2l0b3IoY29tcG9zaXRvci0+bV9kaXNwbGF5LCB2ZXJzaW9uKQor ICAgICAgICAgLCBtX2NvbXBvc2l0b3IoY29tcG9zaXRvcikKKyAgICAge30KK0BAIC0zNjQsNiAr MzY0LDcgQEAgcHVibGljOgorICAgICB1aW50IHNlbmRVcCh3bF9jbGllbnQgKmNsaWVudCwgaW50 IGlkKTsKKyAgICAgdm9pZCBzZW5kTW90aW9uKHdsX2NsaWVudCAqY2xpZW50LCBjb25zdCBRUG9p bnRGICZwb3NpdGlvbiwgaW50IGlkKTsKKyAgICAgdm9pZCBzZW5kRnJhbWUod2xfY2xpZW50ICpj bGllbnQpOworKyAgICB2b2lkIHNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpOworIAorICAg ICBTZWF0ICptX3NlYXQgPSBudWxscHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitpbmRleCBh NDE1Y2JmNS4uYjFkM2QwN2QgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGll bnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAorQEAgLTM0Miw3ICszNDIs NyBAQCBDb21wb3NpdG9yOjpDb21wb3NpdG9yKE1vY2tDb21wb3NpdG9yICptb2NrQ29tcG9zaXRv cikKKyAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgfQorIAorLSAgICB3bF9nbG9i YWxfY3JlYXRlKG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxLCB0aGlzLCBi aW5kQ29tcG9zaXRvcik7CisrICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xfY29t cG9zaXRvcl9pbnRlcmZhY2UsIDQsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKyAKKyAgICAgbV9k YXRhX2RldmljZV9tYW5hZ2VyLnJlc2V0KG5ldyBEYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBtX2Rp c3BsYXkpKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hh cmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKK2luZGV4IGU5ZGY1ZjkwLi5jMzI0NmU0YSAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNl LmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1 cmZhY2UuY3BwCitAQCAtMTI1LDYgKzEyNSwxNiBAQCB2b2lkIFN1cmZhY2U6OnN1cmZhY2VfZGFt YWdlKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyB9CisgCisr dm9pZCBTdXJmYWNlOjpzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5 LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyt7CisrICAgIFFfVU5VU0VEKHJlc291 cmNlKTsKKysgICAgUV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICBRX1VOVVNF RCh3aWR0aCk7CisrICAgIFFfVU5VU0VEKGhlaWdodCk7CisrfQorKworIHZvaWQgU3VyZmFjZTo6 c3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGNhbGxiYWNrKQorIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVz dHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oIGIvcXR3YXlsYW5kL3Rlc3Rz L2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAoraW5kZXggOTQ5ZGMyM2QuLmQx NzY4MzdlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9v bGQvbW9ja3N1cmZhY2UuaAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJl ZF9vbGQvbW9ja3N1cmZhY2UuaAorQEAgLTY1LDYgKzY1LDggQEAgcHJvdGVjdGVkOgorICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9yZXNvdXJjZSAqYnVmZmVyLCBpbnQgeCwgaW50 IHkpIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZGFtYWdlKFJlc291cmNlICpyZXNvdXJj ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJf dCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworKyAgICB2b2lkIHN1cmZhY2VfZGFt YWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdo dCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2Us CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykgb3ZlcnJpZGU7Cisg ICAgIHZvaWQgc3VyZmFjZV9jb21taXQoUmVzb3VyY2UgKnJlc291cmNlKSBvdmVycmlkZTsKK2Rp ZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFj ZS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5j cHAKK2luZGV4IDk1ZTRlNjA5Li42MGM2NzJjZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCitAQCAtMTI5LDYgKzEyOSwx MCBAQCB2b2lkIHRzdF9zdXJmYWNlOjp3YWl0Rm9yRnJhbWVDYWxsYmFja0dsKCkKKyAgICAgLy8g TWFrZSBzdXJlIHdlIGZvbGxvdyBmcmFtZSBjYWxsYmFja3MgZm9yIHNvbWUgZnJhbWVzCisgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgICB4ZGdQaW5nQW5kV2FpdEZv clBvbmcoKTsgLy8gTWFrZSBzdXJlIHRoaW5ncyBoYXZlIGhhcHBlbmVkIG9uIHRoZSBjbGllbnQK KysgICAgICAgIGlmICghcUVudmlyb25tZW50VmFyaWFibGVJbnRWYWx1ZSgiUVRfV0FZTEFORF9E SVNBQkxFX1dJTkRPV0RFQ09SQVRJT04iKSAmJiBpID09IDApIHsKKysgICAgICAgICAgICBRQ09N UEFSRShidWZmZXJTcHkuY291bnQoKSwgMSk7CisrICAgICAgICAgICAgYnVmZmVyU3B5LnJlbW92 ZUZpcnN0KCk7CisrICAgICAgICB9CisgICAgICAgICBleGVjKFsmXSB7CisgICAgICAgICAgICAg UVZFUklGWShidWZmZXJTcHkuZW1wdHkoKSk7IC8vIE1ha2Ugc3VyZSBubyBleHRyYSBidWZmZXJz IGhhdmUgYXJyaXZlZAorICAgICAgICAgICAgIFFWRVJJRlkoIXhkZ1RvcGxldmVsKCktPnN1cmZh Y2UoKS0+bV93YWl0aW5nRnJhbWVDYWxsYmFja3MuZW1wdHkoKSk7CitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAgYi9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAoraW5kZXgg MjI3N2JiYjguLjc0Nzg3NWI0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitAQCAtMzEsNiArMzEsNyBAQAorICNp bmNsdWRlIDxRdEd1aS9RT3BlbkdMV2luZG93PgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBsYXRm b3JtbmF0aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRl L3dheWxhbmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKysjaW5jbHVkZSA8UXRXYXlsYW5k Q2xpZW50L3ByaXZhdGUvcXdheWxhbmR3aW5kb3dfcC5oPgorIAorIHVzaW5nIG5hbWVzcGFjZSBN b2NrQ29tcG9zaXRvcjsKKyAKK0BAIC00NSw2ICs0Niw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAg IHZvaWQgY29uZmlndXJlU3RhdGVzKCk7CisgICAgIHZvaWQgcG9wdXAoKTsKKyAgICAgdm9pZCB0 b29sdGlwT25Qb3B1cCgpOworKyAgICB2b2lkIHRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKTsKKyAg ICAgdm9pZCBzd2l0Y2hQb3B1cHMoKTsKKyAgICAgdm9pZCBoaWRlUG9wdXBQYXJlbnQoKTsKKyAg ICAgdm9pZCBwb25ncygpOworQEAgLTEzOCw2ICsxNDAsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6 Y29uZmlndXJlU2l6ZSgpCisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygp CisgeworKyAgICBRVkVSSUZZKHFwdXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tfVElN RU9VVCIsICIwIikpOworICAgICBRUmFzdGVyV2luZG93IHdpbmRvdzsKKyAgICAgd2luZG93LnJl c2l6ZSg2NCwgNDgpOworICAgICB3aW5kb3cuc2hvdygpOworQEAgLTE1NCw5ICsxNTcsMTIgQEAg dm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIC8vIFRvcGxldmVsIHdp bmRvd3MgZG9uJ3Qga25vdyB0aGVpciBwb3NpdGlvbiBvbiB4ZGctc2hlbGwKKyAvLyAgICBRQ09N UEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBUT0RP OiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMgYXJl IGVuYWJsZWQKKyAKKy0vLyAgICBRRVhQRUNUX0ZBSUwoIiIsICJjb25maWd1cmUgaGFzIGFscmVh ZHkgYmVlbiBhY2tlZCwgd2Ugc2hvdWxkbid0IGhhdmUgdG8gd2FpdCBmb3IgaXNBY3RpdmUiLCBD b250aW51ZSk7CistLy8gICAgUVZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7CistICAgIFFUUllf VkVSSUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1YWxs eSBnZXQncyBzZXQgY29ycmVjdGx5CisrICAgIC8vIHdpbmRvdy53aW5kb3dzdGF0ZSgpIGlzIGRy aXZlbiBieSBrZXlib2FyZCBmb2N1cywgaG93ZXZlciBmb3IgZGVjb3JhdGlvbnMgd2Ugd2FudCB0 byBmb2xsb3cKKysgICAgLy8gWERHU2hlbGwgdGhpcyBpcyBpbnRlcm5hbCB0byBRdFdheWxhbmQg c28gaXQgaXMgcXVlcmllZCBkaXJlY3RseQorKyAgICBhdXRvIHdheWxhbmRXaW5kb3cgPSBzdGF0 aWNfY2FzdDxRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kV2luZG93ICo+KHdpbmRvdy5oYW5kbGUo KSk7CisrICAgIFFfQVNTRVJUKHdheWxhbmRXaW5kb3cpOworKyAgICBRVFJZX1ZFUklGWSh3YXls YW5kV2luZG93LT53aW5kb3dTdGF0ZXMoKS50ZXN0RmxhZygKKysgICAgICAgICAgICBRdDo6V2lu ZG93QWN0aXZlKSk7IC8vIEp1c3QgbWFrZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNv cnJlY3RseQorIAorICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplKDY0MCwgNDgwKTsKKyAgICAg Y29uc3QgdWludCBtYXhpbWl6ZWRTZXJpYWwgPSBleGVjKFs9XSB7CitAQCAtMTg2LDYgKzE5Miw3 IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorICAgICBRQ09NUEFSRSh3 aW5kb3cud2luZG93U3RhdGVzKCksIFF0OjpXaW5kb3dOb1N0YXRlKTsKKyAgICAgUUNPTVBBUkUo d2luZG93LmZyYW1lR2VvbWV0cnkoKS5zaXplKCksIHdpbmRvd2VkU2l6ZSk7CisgLy8gICAgUUNP TVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCksIFFQb2ludCgpKTsgLy8gVE9E TzogdGhpcyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2luZG93IGRlY29yYXRpb25zIGFy ZSBlbmFibGVkCisrICAgIFFWRVJJRlkocXVuc2V0ZW52KCJRVF9XQVlMQU5EX0ZSQU1FX0NBTExC QUNLX1RJTUVPVVQiKSk7CisgfQorIAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpwb3B1cCgpCitAQCAt MzQwLDYgKzM0Nyw5MiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcE9uUG9wdXAoKQorICAg ICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisgfQorIAor K3ZvaWQgdHN0X3hkZ3NoZWxsOjp0b29sdGlwQW5kU2libGluZ1BvcHVwKCkKKyt7CisrICAgIGNs YXNzIFRvb2xUaXAgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAg ICAgIGV4cGxpY2l0IFRvb2xUaXAoUVdpbmRvdyAqcGFyZW50KSB7CisrICAgICAgICAgICAgc2V0 VHJhbnNpZW50UGFyZW50KHBhcmVudCk7CisrICAgICAgICAgICAgc2V0RmxhZ3MoUXQ6OlRvb2xU aXApOworKyAgICAgICAgICAgIHJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgc2hvdygp OworKyAgICAgICAgfQorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQg KmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQcmVz c0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBtX3BvcHVwID0gbmV3IFFSYXN0ZXJXaW5kb3c7 CisrICAgICAgICAgICAgbV9wb3B1cC0+c2V0VHJhbnNpZW50UGFyZW50KHRyYW5zaWVudFBhcmVu dCgpKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zZXRGbGFncyhRdDo6UG9wdXApOworKyAgICAg ICAgICAgIG1fcG9wdXAtPnJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgbV9wb3B1cC0+ c2hvdygpOworKyAgICAgICAgfQorKworKyAgICAgICAgUVJhc3RlcldpbmRvdyAqbV9wb3B1cCA9 IG51bGxwdHI7CisrICAgIH07CisrCisrICAgIGNsYXNzIFdpbmRvdyA6IHB1YmxpYyBRUmFzdGVy V2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1v dXNlRXZlbnQgKmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6 bW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBtX3Rvb2x0aXAgPSBuZXcgVG9v bFRpcCh0aGlzKTsKKysgICAgICAgIH0KKysgICAgICAgIFRvb2xUaXAgKm1fdG9vbHRpcCA9IG51 bGxwdHI7CisrICAgIH07CisrCisrICAgIFdpbmRvdyB3aW5kb3c7CisrICAgIHdpbmRvdy5yZXNp emUoMjAwLCAyMDApOworKyAgICB3aW5kb3cuc2hvdygpOworKworKyAgICBRQ09NUE9TSVRPUl9U UllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworKyAgICBleGVjKFs9XSB7IHhkZ1RvcGxldmVsKCkt PnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklG WSh4ZGdUb3BsZXZlbCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFs KTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhkZ1RvcGxl dmVsKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAgICAg ICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwgezEw MCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5kQnV0 dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQpOwor KyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRv bl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBw LT5zZW5kTGVhdmUoc3VyZmFjZSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgIH0p OworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKCkpOworKyAgICBleGVj KFs9XSB7IHhkZ1BvcHVwKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwg MTAwLCAxMDApKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoKS0+ bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01QT1NJ VE9SX1RSWV9WRVJJRlkoIXhkZ1BvcHVwKCktPm1fZ3JhYmJlZCk7CisrCisrICAgIGV4ZWMoWz1d IHsKKysgICAgICAgIGF1dG8gKnN1cmZhY2UgPSB4ZGdQb3B1cCgpLT5zdXJmYWNlKCk7CisrICAg ICAgICBhdXRvICpwID0gcG9pbnRlcigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOwor KyAgICAgICAgcC0+c2VuZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAgcC0+ c2VuZEZyYW1lKGMpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQs IFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24o Y2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOworKyAg ICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZ X1ZFUklGWSh4ZGdQb3B1cCgxKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoMSktPnNlbmRD b21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsgfSk7CisrICAgIFFD T01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0 ZWRDb25maWd1cmVTZXJpYWwpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVw KDEpLT5tX2dyYWJiZWQpOworKworKyAgICAvLyBDbG9zZSB0aGUgbWlkZGxlIHRvb2x0aXAgKGl0 IHNob3VsZCBub3QgY2xvc2UgdGhlIHNpYmxpbmcgcG9wdXApCisrICAgIHdpbmRvdy5tX3Rvb2x0 aXAtPmNsb3NlKCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDEp LCBudWxscHRyKTsKKysgICAgLy8gVmVyaWZ5IHRoZSByZW1haW5pbmcgeGRnIHN1cmZhY2UgaXMg YSBncmFiIHBvcHVwLi4KKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgwKSk7 CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMCktPm1fZ3JhYmJlZCk7Cisr CisrICAgIHdpbmRvdy5tX3Rvb2x0aXAtPm1fcG9wdXAtPmNsb3NlKCk7CisrICAgIFFDT01QT1NJ VE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRyKTsKKysgICAgUUNPTVBPU0lUT1Jf VFJZX0NPTVBBUkUoeGRnUG9wdXAoMCksIG51bGxwdHIpOworK30KKysKKyAvLyBRVEJVRy02NTY4 MAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpzd2l0Y2hQb3B1cHMoKQorIHsKK0BAIC01MDUsNyArNTk4 LDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6Om1pbk1heFNpemUoKQorICAgICB3aW5kb3cuc2hvdygp OworICAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworIAorLSAgICBl eGVjKFs9XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysg ICAgLy8gd2UgZG9uJ3Qgcm91bmR0cmlwIHdpdGggb3VyIGNvbmZpZ3VyYXRpb24gdGhlIGluaXRp YWwgY29tbWl0IHNob3VsZCBiZSBjb3JyZWN0CisgCisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01Q QVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0dGVkLm1pblNpemUsIFFTaXplKDEwMCwgMTAwKSk7 CisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0dGVk Lm1heFNpemUsIFFTaXplKDEwMDAsIDEwMDApKTsKK1N1Ym1vZHVsZSBxdHdlYmNoYW5uZWwgNjE4 NDIyZWUuLmY4OTQ5NjU1OgorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5l bC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwv cW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitpbmRleCA1MzZlYjVjLi44OThkNzY5IDEwMDY0NAor LS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNw cAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVy LmNwcAorQEAgLTE4Niw4ICsxODYsNiBAQCBRX0RFQ0xBUkVfVFlQRUlORk8oT3ZlcmxvYWRSZXNv bHV0aW9uQ2FuZGlkYXRlLCBRX01PVkFCTEVfVFlQRSk7CisgUU1ldGFPYmplY3RQdWJsaXNoZXI6 OlFNZXRhT2JqZWN0UHVibGlzaGVyKFFXZWJDaGFubmVsICp3ZWJDaGFubmVsKQorICAgICA6IFFP YmplY3Qod2ViQ2hhbm5lbCkKKyAgICAgLCB3ZWJDaGFubmVsKHdlYkNoYW5uZWwpCistICAgICwg c2lnbmFsSGFuZGxlcih0aGlzKQorLSAgICAsIGNsaWVudElzSWRsZShmYWxzZSkKKyAgICAgLCBi bG9ja1VwZGF0ZXMoZmFsc2UpCisgICAgICwgcHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQoZmFs c2UpCisgeworQEAgLTMwMSwxNyArMjk5LDE3IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVi bGlzaGVyOjpjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBRV2ViCisg ICAgIHJldHVybiBkYXRhOworIH0KKyAKKy12b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRD bGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0 Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0 cmFuc3BvcnQpCisgeworLSAgICBpZiAoY2xpZW50SXNJZGxlID09IGlzSWRsZSkgeworLSAgICAg ICAgcmV0dXJuOworLSAgICB9CistICAgIGNsaWVudElzSWRsZSA9IGlzSWRsZTsKKy0gICAgaWYg KCFpc0lkbGUgJiYgdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAgdGltZXIuc3RvcCgpOwor LSAgICB9IGVsc2UgaWYgKGlzSWRsZSAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAg dGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKy0gICAgfQorKyAg ICB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdLmNsaWVudElzSWRsZSA9IGlzSWRsZTsKKysgICAg aWYgKGlzSWRsZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyh0cmFuc3Bv cnQpOworK30KKysKKytib29sIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppc0NsaWVudElkbGUoUVdl YkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byBmb3Vu ZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAgcmV0dXJuIGZvdW5kICE9 IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlOworIH0K KyAKKyBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZUNsaWVudChR V2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCitAQCAtMzMzLDYgKzMzMSw3 IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50KFFX ZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQKKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVy Ojppbml0aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0IG9iamVjdCwg Y29uc3QgUUpzb25PYmplY3QgJm9iamVjdEluZm8pCisgeworKyAgICBhdXRvICpzaWduYWxIYW5k bGVyID0gc2lnbmFsSGFuZGxlckZvcihvYmplY3QpOworICAgICBmb3JlYWNoIChjb25zdCBRSnNv blZhbHVlICZwcm9wZXJ0eUluZm9WYXIsIG9iamVjdEluZm9bS0VZX1BST1BFUlRJRVNdLnRvQXJy YXkoKSkgeworICAgICAgICAgY29uc3QgUUpzb25BcnJheSAmcHJvcGVydHlJbmZvID0gcHJvcGVy dHlJbmZvVmFyLnRvQXJyYXkoKTsKKyAgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uc2l6ZSgpIDwg MikgeworQEAgLTM1MywxOSArMzUyLDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omlu aXRpYWxpemVQcm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0CisgCisg ICAgICAgICAvLyBPbmx5IGNvbm5lY3QgZm9yIGEgcHJvcGVydHkgdXBkYXRlIG9uY2UKKyAgICAg ICAgIGlmIChjb25uZWN0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIHNp Z25hbEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworKyAgICAgICAgICAg IHNpZ25hbEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNpZ25hbEluZGV4KTsKKyAgICAgICAg IH0KKyAKKyAgICAgICAgIGNvbm5lY3RlZFByb3BlcnRpZXMuaW5zZXJ0KHByb3BlcnR5SW5kZXgp OworICAgICB9CisgCisgICAgIC8vIGFsc28gYWx3YXlzIGNvbm5lY3QgdG8gZGVzdHJveWVkIHNp Z25hbAorLSAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVkU2ln bmFsSW5kZXgpOworKyAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzX2Rlc3Ry b3llZFNpZ25hbEluZGV4KTsKKyB9CisgCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2Vu ZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKQorIHsKKy0gICAgaWYgKGJsb2NrVXBkYXRlcyB8fCAh Y2xpZW50SXNJZGxlIHx8IHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMuaXNFbXB0eSgpKSB7CisrICAg IGlmIChibG9ja1VwZGF0ZXMpIHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorQEAgLTQx NSwxOCArNDE0LDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJv cGVydHlVcGRhdGVzKCkKKyAKKyAgICAgLy8gZGF0YSBkb2VzIG5vdCBjb250YWluIHNwZWNpZmlj IHVwZGF0ZXMKKyAgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgeworLSAgICAgICAgc2V0Q2xpZW50 SXNJZGxlKGZhbHNlKTsKKy0KKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFdID0gZGF0YTsKKy0g ICAgICAgIGJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlQnJvYWRj YXN0TWVzc2FnZShtZXNzYWdlKTsKKyAgICAgfQorIAorICAgICAvLyBzZW5kIGV2ZXJ5IHByb3Bl cnR5IHVwZGF0ZSB3aGljaCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgYnJvYWRjYXN0ZWQKKyAgICAg Y29uc3QgUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+Ojpj b25zdF9pdGVyYXRvciBzdWVuZCA9IHNwZWNpZmljVXBkYXRlcy5jb25zdEVuZCgpOworICAgICBm b3IgKFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQqLCBRSnNvbkFycmF5Pjo6Y29u c3RfaXRlcmF0b3IgaXQgPSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RCZWdpbigpOyBpdCAhPSBzdWVu ZDsgKytpdCkgeworICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBpdC52YWx1ZSgpOworLSAg ICAgICAgaXQua2V5KCktPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgZW5xdWV1ZU1l c3NhZ2UobWVzc2FnZSwgaXQua2V5KCkpOworICAgICB9CisrCisrICAgIGZvciAoYXV0byBzdGF0 ZSA9IHRyYW5zcG9ydFN0YXRlLmJlZ2luKCk7IHN0YXRlICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgp OyArK3N0YXRlKQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHN0YXRlLmtl eSgpKTsKKyB9CisgCisgUVZhcmlhbnQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omludm9rZU1ldGhv ZChRT2JqZWN0ICpjb25zdCBvYmplY3QsIGNvbnN0IFFNZXRhTWV0aG9kICZtZXRob2QsCitAQCAt NTcyLDcgKzU3Miw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEVtaXR0ZWQo Y29uc3QgUU9iamVjdCAqb2JqZWN0LCBjb25zdCBpbnQgc2lnbmFsCisgICAgICAgICB9CisgICAg IH0gZWxzZSB7CisgICAgICAgICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzW29iamVjdF1bc2lnbmFs SW5kZXhdID0gYXJndW1lbnRzOworLSAgICAgICAgaWYgKGNsaWVudElzSWRsZSAmJiAhYmxvY2tV cGRhdGVzICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CisrICAgICAgICBpZiAoIWJsb2NrVXBkYXRl cyAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAgIHRpbWVyLnN0YXJ0KFBST1BF UlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICB9CisgICAgIH0KK0BAIC01OTAs NyArNTkwLDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6b2JqZWN0RGVzdHJveWVkKGNv bnN0IFFPYmplY3QgKm9iamVjdCkKKyAgICAgLy8gb25seSByZW1vdmUgZnJvbSBoYW5kbGVyIHdo ZW4gd2UgaW5pdGlhbGl6ZWQgdGhlIHByb3BlcnR5IHVwZGF0ZXMKKyAgICAgLy8gY2Y6IGh0dHBz Oi8vYnVncmVwb3J0cy5xdC5pby9icm93c2UvUVRCVUctNjAyNTAKKyAgICAgaWYgKHByb3BlcnR5 VXBkYXRlc0luaXRpYWxpemVkKSB7CistICAgICAgICBzaWduYWxIYW5kbGVyLnJlbW92ZShvYmpl Y3QpOworKyAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5yZW1vdmUob2JqZWN0KTsK KyAgICAgICAgIHNpZ25hbFRvUHJvcGVydHlNYXAucmVtb3ZlKG9iamVjdCk7CisgICAgIH0KKyAg ICAgcGVuZGluZ1Byb3BlcnR5VXBkYXRlcy5yZW1vdmUob2JqZWN0KTsKK0BAIC04NTIsNiArODUy LDUyIEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmJyb2FkY2FzdE1lc3NhZ2UoY29uc3Qg UUpzb25PYmplY3QgJm1lc3NhZ2UpIGNvbnN0CisgICAgIH0KKyB9CisgCisrdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6ZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3Qg Jm1lc3NhZ2UpCisreworKyAgICBpZiAod2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMu aXNFbXB0eSgpKSB7CisrICAgICAgICBxV2FybmluZygiUVdlYkNoYW5uZWwgaXMgbm90IGNvbm5l Y3RlZCB0byBhbnkgdHJhbnNwb3J0cywgY2Fubm90IHNlbmQgbWVzc2FnZTogJXMiLAorKyAgICAg ICAgICAgICAgICAgUUpzb25Eb2N1bWVudChtZXNzYWdlKS50b0pzb24oKS5jb25zdERhdGEoKSk7 CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQg OiB3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgYXV0byAmc3Rh dGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICAgICAgc3RhdGUucXVldWVkTWVz c2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworKyAgICB9CisrfQorKworK3ZvaWQgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OmVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFXZWJDaGFubmVsQWJzdHJh Y3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0 U3RhdGVbdHJhbnNwb3J0XTsKKysgICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBwZW5kKG1lc3Nh Z2UpOworK30KKysKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kRW5xdWV1ZWRQcm9w ZXJ0eVVwZGF0ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sK KysgICAgYXV0byBmb3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAg aWYgKGZvdW5kICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50 SXNJZGxlCisrICAgICAgICAmJiAhZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcy5pc0VtcHR5 KCkpIHsKKysKKysgICAgICAgIC8vIElmIHRoZSBjbGllbnQgaXMgY29ubmVjdGVkIHdpdGggYW4g aW4tcHJvY2VzcyB0cmFuc3BvcnQsIGl0IGNhbgorKyAgICAgICAgLy8gaGFwcGVuIHRoYXQgYSBt ZXNzYWdlIHRyaWdnZXJzIGEgc3Vic2VxdWVudCBwcm9wZXJ0eSBjaGFuZ2UuIEluCisrICAgICAg ICAvLyB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHF1ZXVlZCBtZXNzYWdl cyBoYXZlIGFscmVhZHkKKysgICAgICAgIC8vIGJlZW4gY2xlYXJlZDsgb3RoZXJ3aXNlIHRoZSBy ZWN1cnNpdmUgY2FsbCB3aWxsIHNlbmQgZXZlcnl0aGlnIGFnYWluLgorKyAgICAgICAgLy8gQ2Fz ZSBpbiBwb2ludDogVGhlIHFtbHdlYmNoYW5uZWwgdGVzdHMgZmFpbCBpZiB3ZSBkb24ndCBjbGVh ciB0aGUKKysgICAgICAgIC8vIHF1ZXVlZCBtZXNzYWdlcyBiZWZvcmUgc2VuZGluZyB0aGVtIG91 dC4KKysgICAgICAgIC8vIEZvciB0aGF0IHNhbWUgcmVhc29uIHNldCB0aGUgY2xpZW50IHRvICJi dXN5IiAoYWthIG5vbi1pZGxlKSBqdXN0CisrICAgICAgICAvLyByaWdodCBiZWZvcmUgc2VuZGlu ZyBvdXQgdGhlIG1lc3NhZ2VzOyBvdGhlcndpc2UgYSBwb3RlbnRpYWwKKysgICAgICAgIC8vICJJ ZGxlIiB0eXBlIG1lc3NhZ2Ugd2lsbCBub3QgY29ycmVjdGx5IHJlc3RvcmUgdGhlIElkbGUgc3Rh dGUuCisrICAgICAgICBjb25zdCBhdXRvIG1lc3NhZ2VzID0gc3RkOjptb3ZlKGZvdW5kLnZhbHVl KCkucXVldWVkTWVzc2FnZXMpOworKyAgICAgICAgUV9BU1NFUlQoZm91bmQudmFsdWUoKS5xdWV1 ZWRNZXNzYWdlcy5pc0VtcHR5KCkpOworKyAgICAgICAgZm91bmQudmFsdWUoKS5jbGllbnRJc0lk bGUgPSBmYWxzZTsKKysKKysgICAgICAgIGZvciAoY29uc3QgYXV0byAmbWVzc2FnZSA6IG1lc3Nh Z2VzKSB7CisrICAgICAgICAgICAgdHJhbnNwb3J0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKysg ICAgICAgIH0KKysgICAgfQorK30KKysKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpoYW5k bGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3RyYWN0 VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisgeworICAgICBpZiAoIXdlYkNoYW5uZWwtPmRfZnVuYygp LT50cmFuc3BvcnRzLmNvbnRhaW5zKHRyYW5zcG9ydCkpIHsKK0BAIC04NjYsNyArOTEyLDcgQEAg dm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVj dCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAKKyAgICAgY29uc3QgTWVzc2FnZVR5cGUgdHlwZSA9 IHRvVHlwZShtZXNzYWdlLnZhbHVlKEtFWV9UWVBFKSk7CisgICAgIGlmICh0eXBlID09IFR5cGVJ ZGxlKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgICAgICBzZXRDbGll bnRJc0lkbGUodHJ1ZSwgdHJhbnNwb3J0KTsKKyAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5cGVJ bml0KSB7CisgICAgICAgICBpZiAoIW1lc3NhZ2UuY29udGFpbnMoS0VZX0lEKSkgeworICAgICAg ICAgICAgIHFXYXJuaW5nKCJKU09OIG1lc3NhZ2Ugb2JqZWN0IGlzIG1pc3NpbmcgdGhlIGlkIHBy b3BlcnR5OiAlcyIsCitAQCAtOTEzLDkgKzk1OSw5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNo ZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVs CisgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB0cmFuc3BvcnQtPnNlbmRN ZXNzYWdlKGNyZWF0ZVJlc3BvbnNlKG1lc3NhZ2UudmFsdWUoS0VZX0lEKSwgd3JhcFJlc3VsdChy ZXN1bHQsIHRyYW5zcG9ydCkpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlQ29u bmVjdFRvU2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2Jq ZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAgICAg c2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5jb25uZWN0VG8ob2JqZWN0LCBtZXNzYWdlLnZhbHVl KEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gVHlw ZURpc2Nvbm5lY3RGcm9tU2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5kaXNj b25uZWN0RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsK KysgICAgICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmRpc2Nvbm5lY3RGcm9tKG9i amVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAgfSBl bHNlIGlmICh0eXBlID09IFR5cGVTZXRQcm9wZXJ0eSkgeworICAgICAgICAgICAgIHNldFByb3Bl cnR5KG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfUFJPUEVSVFkpLnRvSW50KC0xKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnZhbHVlKEtFWV9WQUxVRSkpOworQEAgLTkzMSw2 ICs5NzcsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRCbG9ja1VwZGF0ZXMoYm9v bCBibG9jaykKKyAgICAgYmxvY2tVcGRhdGVzID0gYmxvY2s7CisgCisgICAgIGlmICghYmxvY2tV cGRhdGVzKSB7CisrICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUws IHRoaXMpOworICAgICAgICAgc2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAgfSBl bHNlIGlmICh0aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICB0aW1lci5zdG9wKCk7CitAQCAt OTQ4LDQgKzk5NSwxNSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjp0aW1lckV2ZW50KFFU aW1lckV2ZW50ICpldmVudCkKKyAgICAgfQorIH0KKyAKKytTaWduYWxIYW5kbGVyPFFNZXRhT2Jq ZWN0UHVibGlzaGVyPiAqUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEhhbmRsZXJGb3IoY29u c3QgUU9iamVjdCAqb2JqZWN0KQorK3sKKysgICAgYXV0byB0aHJlYWQgPSBvYmplY3QtPnRocmVh ZCgpOworKyAgICBhdXRvIGl0ID0gc2lnbmFsSGFuZGxlcnMuZmluZCh0aHJlYWQpOworKyAgICBp ZiAoaXQgPT0gc2lnbmFsSGFuZGxlcnMuZW5kKCkpIHsKKysgICAgICAgIGl0ID0gc2lnbmFsSGFu ZGxlcnMuZW1wbGFjZSh0aHJlYWQsIHRoaXMpLmZpcnN0OworKyAgICAgICAgaXQtPnNlY29uZC5t b3ZlVG9UaHJlYWQodGhyZWFkKTsKKysgICAgfQorKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7Cisr fQorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dl YmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJj aGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAoraW5kZXggYmJkOTg3NS4uNDcxM2VmMSAx MDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxp c2hlcl9wLmgKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1 Ymxpc2hlcl9wLmgKK0BAIC01OSw2ICs1OSw5IEBACisgI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgor ICNpbmNsdWRlIDxRUG9pbnRlcj4KKyAjaW5jbHVkZSA8UUpzb25PYmplY3Q+CisrI2luY2x1ZGUg PFFRdWV1ZT4KKysKKysjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyAKKyAjaW5jbHVkZSAicXdl YmNoYW5uZWxnbG9iYWwuaCIKKyAKK0BAIC0xMDksMTcgKzExMiwzNiBAQCBwdWJsaWM6CisgICAg ICAqLworICAgICB2b2lkIGJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3Nh Z2UpIGNvbnN0OworIAorKyAgICAvKioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVz c2FnZSB0byBhbGwga25vd24gdHJhbnNwb3J0cy4KKysgICAgICovCisrICAgIHZvaWQgZW5xdWV1 ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpOworKworKyAgICAv KioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBAcCB0cmFuc3BvcnQu CisrICAgICAqLworKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZt ZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKworKyAg ICAvKioKKysgICAgICogSWYgY2xpZW50IGZvciBnaXZlbiBAcCB0cmFuc3BvcnQgaXMgaWRsZSwg c2VuZCBxdWV1ZWQgbWVzc2FnZWQgdG8gQHAgdHJhbnNwb3J0IGFuZCB0aGVuIG1hcmsKKysgICAg ICogdGhlIGNsaWVudCBhcyBub3QgaWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2VuZEVucXVl dWVkUHJvcGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9y dCk7CisrCisgICAgIC8qKgorICAgICAgKiBTZXJpYWxpemUgdGhlIFFNZXRhT2JqZWN0IG9mIEBw IG9iamVjdCBhbmQgcmV0dXJuIGl0IGluIEpTT04gZm9ybS4KKyAgICAgICovCisgICAgIFFKc29u T2JqZWN0IGNsYXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWJDaGFu bmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorLSAgICAgKiBT ZXQgdGhlIGNsaWVudCB0byBpZGxlIG9yIGJ1c3ksIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBAcCBp c0lkbGUuCistICAgICAqCistICAgICAqIFdoZW4gdGhlIHZhbHVlIGNoYW5nZWQsIHN0YXJ0L3N0 b3AgdGhlIHByb3BlcnR5IHVwZGF0ZSB0aW1lciBhY2NvcmRpbmdseS4KKysgICAgICogU2V0IHRo ZSBjbGllbnQgdG8gaWRsZSBvciBidXN5IGZvciBhIHNpbmdsZSBAcCB0cmFuc3BvcnQsIGJhc2Vk IG9uIHRoZSB2YWx1ZSBvZiBAcCBpc0lkbGUuCisrICAgICAqLworKyAgICB2b2lkIHNldENsaWVu dElzSWRsZShib29sIGlzSWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNw b3J0KTsKKysKKysgICAgLyoqCisrICAgICAqIENoZWNrIHRoYXQgY2xpZW50IGlzIGlkbGUgZm9y IEBwIHRyYW5zcG9ydC4KKyAgICAgICovCistICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJvb2wg aXNJZGxlKTsKKysgICAgYm9vbCBpc0NsaWVudElkbGUoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5z cG9ydCAqdHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgY2xpZW50 cyBieSBzZW5kaW5nIHRoZW0gdGhlIGNsYXNzIGluZm9ybWF0aW9uIG9mIHRoZSByZWdpc3RlcmVk IG9iamVjdHMuCitAQCAtMjcyLDEwICsyOTQsMTggQEAgcHJpdmF0ZToKKyAgICAgZnJpZW5kIGNs YXNzIFRlc3RXZWJDaGFubmVsOworIAorICAgICBRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5lbDsKKy0g ICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gc2lnbmFsSGFuZGxlcjsKKysg ICAgc3RkOjp1bm9yZGVyZWRfbWFwPGNvbnN0IFFUaHJlYWQqLCBTaWduYWxIYW5kbGVyPFFNZXRh T2JqZWN0UHVibGlzaGVyPj4gc2lnbmFsSGFuZGxlcnM7CisrICAgIFNpZ25hbEhhbmRsZXI8UU1l dGFPYmplY3RQdWJsaXNoZXI+ICpzaWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVj dCk7CisgCistICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50IGlzIGlkbGUsIGZhbHNlIG90aGVy d2lzZQorLSAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgc3RydWN0IFRyYW5zcG9ydFN0YXRl CisrICAgIHsKKysgICAgICAgIFRyYW5zcG9ydFN0YXRlKCkgOiBjbGllbnRJc0lkbGUoZmFsc2Up IHsgfQorKyAgICAgICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ugb3Ro ZXJ3aXNlCisrICAgICAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgICAgIC8vIG1lc3NhZ2Vz IHRvIHNlbmQKKysgICAgICAgIFFRdWV1ZTxRSnNvbk9iamVjdD4gcXVldWVkTWVzc2FnZXM7Cisr ICAgIH07CisrICAgIFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKiwgVHJhbnNw b3J0U3RhdGU+IHRyYW5zcG9ydFN0YXRlOworIAorICAgICAvLyB0cnVlIHdoZW4gbm8gcHJvcGVy dHkgdXBkYXRlcyBzaG91bGQgYmUgc2VudCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgIGJvb2wgYmxv Y2tVcGRhdGVzOworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWdu YWxoYW5kbGVyX3AuaCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVy X3AuaAoraW5kZXggMjdhZmFkYi4uZDc3MzczYyAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9z cmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93 ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitAQCAtNTYsNiArNTYsNyBAQAorICNpbmNsdWRl IDxRVmVjdG9yPgorICNpbmNsdWRlIDxRTWV0YU1ldGhvZD4KKyAjaW5jbHVkZSA8UURlYnVnPgor KyNpbmNsdWRlIDxRVGhyZWFkPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTcxLDYg KzcyLDcgQEAgc3RhdGljIGNvbnN0IGludCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4ID0gUU9iamVj dDo6c3RhdGljTWV0YU9iamVjdC5pbmRleE9mTWV0aG8KKyB0ZW1wbGF0ZTxjbGFzcyBSZWNlaXZl cj4KKyBjbGFzcyBTaWduYWxIYW5kbGVyIDogcHVibGljIFFPYmplY3QKKyB7CisrICAgIFFfRElT QUJMRV9DT1BZKFNpZ25hbEhhbmRsZXIpCisgcHVibGljOgorICAgICBTaWduYWxIYW5kbGVyKFJl Y2VpdmVyICpyZWNlaXZlciwgUU9iamVjdCAqcGFyZW50ID0gMCk7CisgCitAQCAtMjY4LDYgKzI3 MCw3IEBAIGludCBTaWduYWxIYW5kbGVyPFJlY2VpdmVyPjo6cXRfbWV0YWNhbGwoUU1ldGFPYmpl Y3Q6OkNhbGwgY2FsbCwgaW50IG1ldGhvZElkLCB2CisgICAgIGlmIChjYWxsID09IFFNZXRhT2Jq ZWN0OjpJbnZva2VNZXRhTWV0aG9kKSB7CisgICAgICAgICBjb25zdCBRT2JqZWN0ICpvYmplY3Qg PSBzZW5kZXIoKTsKKyAgICAgICAgIFFfQVNTRVJUKG9iamVjdCk7CisrICAgICAgICBRX0FTU0VS VChRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkgPT0gb2JqZWN0LT50aHJlYWQoKSk7CisgICAgICAg ICBRX0FTU0VSVChzZW5kZXJTaWduYWxJbmRleCgpID09IG1ldGhvZElkKTsKKyAgICAgICAgIFFf QVNTRVJUKG1fY29ubmVjdGlvbnNDb3VudGVyLmNvbnRhaW5zKG9iamVjdCkpOworICAgICAgICAg UV9BU1NFUlQobV9jb25uZWN0aW9uc0NvdW50ZXIudmFsdWUob2JqZWN0KS5jb250YWlucyhtZXRo b2RJZCkpOworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2Vi Y2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5uZWwu Y3BwCitpbmRleCA5ODkxNjg3Li4zY2E4MWMyIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVsL3Rl c3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3Rz L2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorQEAgLTQ2LDcgKzQ2LDExIEBAIFRlc3RXZWJD aGFubmVsOjp+VGVzdFdlYkNoYW5uZWwoKQorIAorIGJvb2wgVGVzdFdlYkNoYW5uZWw6OmNsaWVu dElzSWRsZSgpIGNvbnN0CisgeworLSAgICByZXR1cm4gUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5w dWJsaXNoZXItPmNsaWVudElzSWRsZTsKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiBRV2Vi Q2hhbm5lbDo6ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsKKysgICAgICAgIGlmIChRV2ViQ2hhbm5l bDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKHRyYW5zcG9ydCkpCisrICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKyBR VF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2Vi Y2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJj aGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAoraW5kZXggMTgxZGE5ZS4uMzdmOTg5YSAxMDA2NDQK Ky0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwu Y3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFu bmVsLmNwcAorQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0VHJh bnNwb3J0V3JhcE9iamVjdFByb3BlcnRpZXMoKQorICAgICBEdW1teVRyYW5zcG9ydCAqZHVtbXlU cmFuc3BvcnQgPSBuZXcgRHVtbXlUcmFuc3BvcnQodGhpcyk7CisgICAgIGNoYW5uZWwuY29ubmVj dFRvKGR1bW15VHJhbnNwb3J0KTsKKyAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT5p bml0aWFsaXplQ2xpZW50KGR1bW15VHJhbnNwb3J0KTsKKy0gICAgY2hhbm5lbC5kX2Z1bmMoKS0+ cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgIGNoYW5uZWwuZF9mdW5jKCkt PnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIGR1bW15VHJhbnNwb3J0KTsKKyAKKyAg ICAgUUNPTVBBUkUoY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT50cmFuc3BvcnRlZFdyYXBw ZWRPYmplY3RzLnNpemUoKSwgMCk7CisgCitAQCAtOTQzLDggKzk0Myw2IEBAIHZvaWQgVGVzdFdl YkNoYW5uZWw6OnRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpCisgCisgdm9pZCBUZXN0V2ViQ2hhbm5l bDo6dGVzdEFzeW5jT2JqZWN0KCkKKyB7CistICAgIFFTS0lQKCJUaGlzIHRlc3QgaXMgYnJva2Vu LiBTZWUgUVRCVUctODA3MjkiKTsKKy0KKyAgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKyAgICAg Y2hhbm5lbC5jb25uZWN0VG8obV9kdW1teVRyYW5zcG9ydCk7CisgCitAQCAtOTkwLDYgKzk4OCw1 MCBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorICAgICB0aHJlYWQu d2FpdCgpOworIH0KKyAKKyt2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0UHJvcGVydHlNdWx0aXBs ZVRyYW5zcG9ydHMoKQorK3sKKysgICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MTsKKysgICAg RHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MjsKKysKKysgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsK KysgICAgUU1ldGFPYmplY3RQdWJsaXNoZXIgKnB1Ymxpc2hlciA9IGNoYW5uZWwuZF9mdW5jKCkt PnB1Ymxpc2hlcjsKKysKKysgICAgVGVzdE9iamVjdCB0ZXN0T2JqOworKyAgICB0ZXN0T2JqLnNl dE9iamVjdE5hbWUoInRlc3RPYmplY3QiKTsKKysgICAgY2hhbm5lbC5yZWdpc3Rlck9iamVjdCh0 ZXN0T2JqLm9iamVjdE5hbWUoKSwgJnRlc3RPYmopOworKyAgICBjaGFubmVsLmNvbm5lY3RUbygm dHJhbnNwb3J0MSk7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQyKTsKKysKKysg ICAgdGVzdE9iai5zZXRQcm9wKCJIZWxsbyIpOworKworKyAgICBwdWJsaXNoZXItPmluaXRpYWxp emVDbGllbnQoJnRyYW5zcG9ydDEpOworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGllbnQo JnRyYW5zcG9ydDIpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJh bnNwb3J0MSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3Bv cnQxKSwgdHJ1ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFu c3BvcnQyKSwgZmFsc2UpOworKyAgICBRVkVSSUZZKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50KCku aXNFbXB0eSgpKTsKKysgICAgUVZFUklGWSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLmlzRW1w dHkoKSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiV29ybGQiKTsKKysgICAgUVRSWV9DT01Q QVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUsIDIw MDApOworKyAgICBRQ09NUEFSRSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMHUp OworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7Cisr ICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQoKS5z aXplKCksIDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUo JnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJ ZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2UpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIiEhISIp OworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7Cisr ICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgdHJ1ZSk7 CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFs c2UpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDIubWVzc2FnZXNT ZW50KCkuc2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDEubWVzc2Fn ZXNTZW50KCkuc2l6ZSgpLCAxdSk7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRy dWUsICZ0cmFuc3BvcnQxKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3Bv cnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFSRShwdWJs aXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNPTVBBUkUo cHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrfQorKworIGNs YXNzIEZ1bmN0aW9uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAor QEAgLTEwODIsNyArMTEyNCw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoSW5pdGlhbGl6 ZUNsaWVudHMoKQorIAorICAgICAgICAgcHVibGlzaGVyLT5wcm9wZXJ0eVVwZGF0ZXNJbml0aWFs aXplZCA9IGZhbHNlOworICAgICAgICAgcHVibGlzaGVyLT5zaWduYWxUb1Byb3BlcnR5TWFwLmNs ZWFyKCk7CistICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXIuY2xlYXIoKTsKKysgICAg ICAgIHB1Ymxpc2hlci0+c2lnbmFsSGFuZGxlcnMuY2xlYXIoKTsKKyAgICAgfQorIH0KKyAKK0BA IC0xMTA3LDcgKzExNDksNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjpiZW5jaFByb3BlcnR5VXBk YXRlcygpCisgICAgICAgICAgICAgb2JqLT5jaGFuZ2UoKTsKKyAgICAgICAgIH0KKyAKKy0gICAg ICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlID0gdHJ1ZTsKKysg ICAgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUs IG1fZHVtbXlUcmFuc3BvcnQpOworICAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVy LT5zZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9CisgfQorZGlmZiAtLWdpdCBh L3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaCBiL3F0 d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAoraW5kZXgg ZWFlMjFmNC4uZGQ0ZTY5MCAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dl YmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v d2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitAQCAtMzQ4LDYgKzM0OCw3IEBAIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgdGVzdEpzb25Ub1ZhcmlhbnQoKTsKKyAgICAgdm9pZCB0ZXN0SW5m aW5pdGVSZWN1cnNpb24oKTsKKyAgICAgdm9pZCB0ZXN0QXN5bmNPYmplY3QoKTsKKysgICAgdm9p ZCB0ZXN0UHJvcGVydHlNdWx0aXBsZVRyYW5zcG9ydHMoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRp b25EdXJpbmdNZXRob2RJbnZvY2F0aW9uX2RhdGEoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRpb25E dXJpbmdNZXRob2RJbnZvY2F0aW9uKCk7CisgCitTdWJtb2R1bGUgcXR3ZWJlbmdpbmUgZjMyODA1 NGQuLi4zOGUwZGY2YyAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHdlYnNvY2tl dHMgNjU4NTA5NTQuLjYzZmI4ZGExOgorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMvd2Vi c29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dl YnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitpbmRleCAyYWZmZGQ1Li45NWYx MTk0IDEwMDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRk YXRhcHJvY2Vzc29yLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJz b2NrZXRkYXRhcHJvY2Vzc29yLmNwcAorQEAgLTI3Myw2ICsyNzMsNyBAQCB2b2lkIFFXZWJTb2Nr ZXREYXRhUHJvY2Vzc29yOjpjbGVhcigpCisgICAgIGlmICghbV9wQ29udmVydGVyU3RhdGUpCisg ICAgICAgICBtX3BDb252ZXJ0ZXJTdGF0ZSA9IG5ldyBRVGV4dENvZGVjOjpDb252ZXJ0ZXJTdGF0 ZShRVGV4dENvZGVjOjpDb252ZXJ0SW52YWxpZFRvTnVsbCB8CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVGV4dENvZGVjOjpJZ25v cmVIZWFkZXIpOworKyAgICBmcmFtZS5jbGVhcigpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQg YS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcCBiL3F0 d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitpbmRleCBk Zjg3YTkzLi5kMDQ2NWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRz L3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKKysrKyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0 cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUVdlYlNv Y2tldFByb3RvY29sOjptYXNrKGNoYXIgKnBheWxvYWQsIHF1aW50NjQgc2l6ZSwgcXVpbnQzMiBt YXNraW5nS2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tpbmdL ZXkgJiAweDAwMDBGRjAwdSkgPj4gOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1 aW50OCgobWFza2luZ0tleSAmIDB4MDAwMDAwRkZ1KSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIH07CistICAgIGludCBpID0gMDsKKysgICAgcXVpbnQ2NCBpID0gMDsKKyAgICAgd2hpbGUg KHNpemUtLSA+IDApCisgICAgICAgICAqcGF5bG9hZCsrIF49IG1hc2tbaSsrICUgNF07CisgfQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpp bmRleCBhNzlkMjVlNjlkYTguLjZkZGRjZTdmM2U0NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKQEAgLTIsMTEgKzIsMTEgQEAKICMK ICMgcmV2YnVtcCBsaWJxdHhkZyBhZnRlciBidW1waW5nIHBhdGNoIHZlcnNpb24KIHBrZ25hbWU9 cXQ1Ci12ZXJzaW9uPTUuMTUuNysyMDIyMTExOQordmVyc2lvbj01LjE1LjgKK3JldmlzaW9uPTEK K2J1aWxkX3N0eWxlPW1ldGEKICMgY29tbWl0IGY4YzlmYjMwNGJjM2U1M2IzYWEwN2Y5NjJjZDc0 ZTkxNjBkZWNjY2MKICMgYmFzZSByZXBvOiBodHRwczovL2ludmVudC5rZGUub3JnL3F0L3F0L3F0 NQotcmV2aXNpb249NQotYnVpbGRfc3R5bGU9bWV0YQogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBj bGFuZyBmbGV4IHBlcmwgZ2xpYi1kZXZlbCBwa2ctY29uZmlnCiAgcHl0aG9uIHJlMmMgcnVieSB3 aGljaCIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIFZ1bGthbi1IZWFkZXJzIGFsc2EtbGliLWRl dmVsIGRvdWJsZS1jb252ZXJzaW9uLWRldmVsCkBAIC0yOSw4ICsyOSw5IEBAIGhvbWVwYWdlPSJo dHRwczovL3F0LmlvLyIKICMgdGFyYmFsbCBpcyBnZW5lcmF0ZWQgd2l0aCBgZ2l0IGFyY2hpdmUt YWxsIHF0NS0kdmVyc2lvbi50YXIuZ3pgCiAjIHRvIGtlZXAgdGhlIHNpemUgc21hbGxlciBxdHdl YmVuZ2luZSwgcXR3ZWJ2aWV3LCBxdGRvY2dhbGxlcnksIHF0YWN0aXZlcXQgYW5kIHF0cGltCiAj IGNhbiBiZSBtYXJrZWQgd2l0aCB0aGUgZXhwb3J0LWlnbm9yZSBhdHRyaWJ1dGUKLWRpc3RmaWxl cz0iaHR0cHM6Ly92b2lkLmpvaG5ueW5hdG9yLmRldi9kaXN0ZmlsZXMvcXQ1LSR7dmVyc2lvbn0u dGFyLmd6IgotY2hlY2tzdW09OWQ1N2FmNDcxYzc4MDI5YTM2MjI3NmI3Yzk5MTA4ZWEwMDlmNTEx YmI5YmE2ZmY2Y2I4ODRmNmRkZDI1NWU5ZgorI2Rpc3RmaWxlcz0iaHR0cHM6Ly92b2lkLmpvaG5u eW5hdG9yLmRldi9kaXN0ZmlsZXMvcXQ1LSR7dmVyc2lvbn0udGFyLmd6IgorZGlzdGZpbGVzPSJo dHRwczovL2Rvd25sb2FkLnF0LmlvL2FyY2hpdmUvcXQvNS4xNS8ke3ZlcnNpb259L3NpbmdsZS9x dC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09 Nzc2YTkzMDJjMzM2NjcxZjk0MDZhNTNiZDMwYjhlMzZmODI1NzQyYjJlYzQ0YTU3YzA4MjE3YmZm MGZhODZiOQogcHl0aG9uX3ZlcnNpb249MiAjdW52ZXJpZmllZAogcmVwbGFjZXM9InF0NS1kb2M8 NS42LjAgcXQ1LXF1aWNrMTw1LjYuMCBxdDUtcXVpY2sxLWRldmVsPDUuNi4wIHF0NS13ZWJraXQ8 NS42LjAgcXQ1LXdlYmtpdC1kZXZlbDw1LjYuMAogIHF0NS1lbmdpbmlvPDUuNy4xIHF0NS1lbmdp bmlvLWRldmVsPDUuNy4xIHF0NS1wbHVnaW4tZ3RrPDUuNy4xIHF0NS1jYW52YXMzZDw1LjEzLjAi CkBAIC0yNTAsNyArMjUxLDYgQEAgZG9fY29uZmlndXJlKCkgewogCSMgb3B0cys9IiAtdiIKIAlv cHRzKz0iIC1za2lwIHF0d2ViZW5naW5lIgogCW9wdHMrPSIgLXNraXAgcXR3ZWJ2aWV3IgotCW9w dHMrPSIgLXNraXAgcXRkb2NnYWxsZXJ5IgogCW9wdHMrPSIgLXNraXAgcXRwaW0iCiAJb3B0cys9 IiAtc2tpcCBxdHN5c3RlbXMiCiAJb3B0cys9IiAtc2tpcCBxdHNwZWVjaCIKCkZyb20gZmNkMzRi NTVhY2Q4Y2Y3OWU0MjY0YTc5NzViZWVmYzg2MGM2YTljOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc1LzExNl0gcXRhdjogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3F0YXYvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlIGIvc3JjcGtncy9xdGF2L3RlbXBsYXRlCmluZGV4IDM0 YzMwYjJjMGM3OC4uMmQwMGFkMTA0MzU1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0YXYvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9xdGF2L3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdxdGF2JwogcGtnbmFtZT1xdGF2CiB2ZXJzaW9uPTEuMTMuMAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icXQ1 LXFtYWtlIHF0NS1ob3N0LXRvb2xzIgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCBsaWJhc3Mt ZGV2ZWwgbGlib3BlbmFsLWRldmVsCittYWtlZGVwZW5kcz0iZmZtcGVnNC1kZXZlbCBsaWJhc3Mt ZGV2ZWwgbGlib3BlbmFsLWRldmVsCiAgbGlidmEtZ2x4LWRldmVsIGxpYlh2LWRldmVsIHB1bHNl YXVkaW8tZGV2ZWwKICBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIHF0NS1x dWlja2NvbnRyb2xzIgoKRnJvbSBiNGRjMzA2NTYzOWFkMjMwYjYyNmEzOGIzMWJiNWQ0NTQ3YTUw NWU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNzYvMTE2XSBxdG94OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXRv eC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXRv eC90ZW1wbGF0ZQppbmRleCAxNjAxOWQ3ZWFlYzkuLjVjZWEwYjExYjY5NyAxMDA2NDQKLS0tIGEv c3JjcGtncy9xdG94L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0b3gnCiBwa2duYW1lPXF0b3gKIHZlcnNp b249MS4xNy42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29u ZmlndXJlX2FyZ3M9Ii1EVVBEQVRFX0NIRUNLPU9GRgogIC1ER0lUX0RFU0NSSUJFPSR7dmVyc2lv bn0KCkZyb20gNWEzZWNiZDQ4NWU1MmUzN2NkZWEwOTgxMWZkZTg2MWE3ZmNkMmYzNCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTog V2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc3LzExNl0g cmV0cm9hcmNoOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcmV0cm9hcmNo L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUgYi9zcmNwa2dz L3JldHJvYXJjaC90ZW1wbGF0ZQppbmRleCAyODAxNmFhMDEyOWUuLjIwYTE0MTU5MTNiZSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9yZXRyb2Fy Y2gvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdyZXRyb2Fy Y2gnCiBwa2duYW1lPXJldHJvYXJjaAogdmVyc2lvbj0xLjE1LjAKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tcHJlZml4PS91 c3IgLS1zeXNjb25mZGlyPS9ldGMgLS1lbmFibGUtbmV0d29ya2luZwogIC0tZW5hYmxlLXVkZXYg LS1kaXNhYmxlLWJ1aWx0aW5mbGFjIC0tZGlzYWJsZS1idWlsdGluZ2xzbGFuZwoKRnJvbSAyZDgy NzhjOWVlYTY3Y2U5NmQ4ZDY0Nzk1YTVjYWIyMWFiOGYxMmYwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzgvMTE2XSBzY3JjcHk6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlCmluZGV4 IGVlNmU2OThlMzg3Zi4uOGFkYTVjYTQzMjNmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NjcmNweS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3NjcmNweScKIHBrZ25hbWU9c2NyY3B5CiB2ZXJzaW9uPTIuMAot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdz PSItRGNvbXBpbGVfc2VydmVyPWZhbHNlCiAgLURwcmVidWlsdF9zZXJ2ZXI9L3Vzci9zaGFyZS9z Y3JjcHkvc2NyY3B5LXNlcnZlci12JHt2ZXJzaW9ufSIKCkZyb20gNDg4MWI3NTU0NTdkMTc4NGEw NDdmN2ZjMThhMzJhYzlmMWE3YTVkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc5LzExNl0gc3Blay1hbHRlcm5hdGl2ZTogcmV2YnVtcCBm b3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUg fCA2ICsrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUgYi9zcmNw a2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKaW5kZXggZDY1MDg2YjhmMDA4Li4wNTI0NmYx YjhkMGMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3NwZWstYWx0ZXJuYXRpdmUnCiBwa2duYW1lPXNwZWstYWx0ZXJu YXRpdmUKIHZlcnNpb249MC44LjIuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVs IGludGx0b29sIGxpYnRvb2wgcGtnLWNvbmZpZyB3eFdpZGdldHMtY29tbW9uIgotbWFrZWRlcGVu ZHM9ImZmbXBlZy1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKLWRlcGVuZHM9ImZmbXBlZyIK K21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVsIgorZGVwZW5k cz0iZmZtcGVnNCIKIHNob3J0X2Rlc2M9IkFjb3VzdGljIHNwZWN0cnVtIGFuYWx5c2VyIgogbWFp bnRhaW5lcj0iS2FydGlrIFNpbmdoIDxrYXJ0aWsueW53YUBnbWFpbC5jb20+IgogbGljZW5zZT0i R1BMLTMuMC1vci1sYXRlciIKCkZyb20gZDA5YTY5Yzk3MDkzYTBiY2RjMmMzOGU5NjRiOWVmZDRk ZTFkZjM3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDgwLzExNl0gc3NyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3Br Z3Mvc3NyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlIGIvc3Jj cGtncy9zc3IvdGVtcGxhdGUKaW5kZXggYjA1NWI5ZWMwNzc0Li4zNDQ4Y2ExMTBlYjAgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3NyL3RlbXBsYXRlCkBA IC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzc3InCiBwa2duYW1lPXNzcgog dmVyc2lvbj0wLjQuNAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UK IGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfUVQ1PU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIgotbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBnbHUtZGV2ZWwg amFjay1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwg ZmZtcGVnNC1kZXZlbCBnbHUtZGV2ZWwgamFjay1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgcXQ1 LXRvb2xzLWRldmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgbGliWGluZXJhbWEtZGV2ZWwgdjRsLXV0 aWxzLWRldmVsIgogZGVwZW5kcz0iZGVza3RvcC1maWxlLXV0aWxzIGhpY29sb3ItaWNvbi10aGVt ZSIKIHNob3J0X2Rlc2M9IlNpbXBsZSBTY3JlZW4gUmVjb3JkZXIgZm9yIHByb2dyYW1zIGFuZCBn YW1lcyIKCkZyb20gM2ViZDljMTE1ZTg3MmRlYmIzNzc1Yzk4MzQ2NWZlZmI5NDBlYWY1OCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgxLzEx Nl0gc3VtbzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3N1bW8vdGVtcGxh dGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUgYi9zcmNwa2dzL3N1bW8vdGVtcGxh dGUKaW5kZXggMGY5YjllYzgxNWY1Li5hM2ZlMTM0YWE1YWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv c3Vtby90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzdW1vJwogcGtnbmFtZT1zdW1vCiB2ZXJzaW9uPTEuMTIu MAotcmV2aXNpb249NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVw ZW5kcz0ibGliZ2RhbC10b29scyBwa2ctY29uZmlnIHN3aWcgcHl0aG9uMy1zZXR1cHRvb2xzIgog bWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgZmZtcGVnLWRldmVsIGZveC1kZXZlbCBnbDJwcy1k ZXZlbCBsaWJnZGFsLWRldmVsCgpGcm9tIGZmMjcxMTdhYmUyNjBiM2Q1NzU3YTY0NWIwOWI5NzU5 OGJjY2ZkODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDog W1BBVENIIDA4Mi8xMTZdIHN5bmZpZzogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMCBhbmQgbWx0NwoK LS0tCiBzcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggfCA3MSArKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZSAgICAgICAgICAgICAg fCAgNCArLQogMiBmaWxlcyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3Ny Y3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAtMCwwICsxLDcxIEBACistLS0gYS9z cmMvbW9kdWxlcy9tb2RfbGliYXZjb2RlYy90cmd0X2F2LmNwcAkyMDIyLTEwLTI1IDA5OjE0OjEy LjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9h di5jcHAJMjAyMy0wNS0wNSAyMTozNDoxNy44OTkxOTQ1NTkgLTA0MDAKK0BAIC0zOCw2ICs0MSw3 IEBACisgZXh0ZXJuICJDIgorIHsKKyAjaWZkZWYgSEFWRV9MSUJBVkZPUk1BVF9BVkZPUk1BVF9I CisrIwlpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KKyAjCWluY2x1ZGUgPGxpYmF2Zm9y bWF0L2F2Zm9ybWF0Lmg+CisgI2VsaWYgZGVmaW5lZChIQVZFX0FWRk9STUFUX0gpCisgIwlpbmNs dWRlIDxhdmZvcm1hdC5oPgorQEAgLTE1NSwxMSArMTU2LDExIEBACisgICAgIH0KKyAKKyAJYm9v bCBvcGVuX3ZpZGVvX3N0cmVhbSgpIHsKKy0JCWlmIChhdmNvZGVjX29wZW4yKHZpZGVvX2NvbnRl eHQsIE5VTEwsIE5VTEwpIDwgMCkgeworKwkJaWYgKGF2Y29kZWNfb3BlbjIodmlkZW9fY29udGV4 dCwgbnVsbHB0ciwgbnVsbHB0cikgPCAwKSB7CisgCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xp YkFWQ29kZWM6IGNvdWxkIG5vdCBvcGVuIHZpZGVvIGNvZGVjIik7CisgCQkJLy8gc2VlbXMgdGhl IGNhbGxpbmcgb2YgYXZjb2RlY19mcmVlX2NvbnRleHQgYWZ0ZXIgZXJyb3Igd2lsbCBjYXVzZSBj cmFzaAorIAkJCS8vIHNvIGp1c3QgZm9yZ2V0IGFib3V0IHRoaXMgY29udGV4dAorLQkJCXZpZGVv X2NvbnRleHQgPSBOVUxMOworKwkJCXZpZGVvX2NvbnRleHQgPSBudWxscHRyOworIAkJCWNsb3Nl KCk7CisgCQkJcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorQEAgLTIzNCwxNSArMjM1LDIxIEBA CisgCQljbG9zZSgpOworIAorIAkJaWYgKCFhdl9yZWdpc3RlcmVkKSB7CisrI2lmIExJQkFWQ09E RUNfVkVSU0lPTl9NQUpPUiA8IDU4IC8vIEZGTVBFRyA8IDQuMAorIAkJCWF2X3JlZ2lzdGVyX2Fs bCgpOworKyNlbmRpZgorIAkJCWF2X3JlZ2lzdGVyZWQgPSB0cnVlOworIAkJfQorIAorIAkJLy8g Z3Vlc3MgZm9ybWF0CistCQlBVk91dHB1dEZvcm1hdCAqZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0 KE5VTEwsIGZpbGVuYW1lLmNfc3RyKCksIE5VTEwpOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05f TUFKT1IgPCA1OSAvLyBGRk1QRUcgPCA1LjAKKysJCUFWT3V0cHV0Rm9ybWF0KiBmb3JtYXQgPSBh dl9ndWVzc19mb3JtYXQobnVsbHB0ciwgZmlsZW5hbWUuY19zdHIoKSwgbnVsbHB0cik7CisrI2Vs c2UKKysJCWNvbnN0IEFWT3V0cHV0Rm9ybWF0KiBmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQobnVs bHB0ciwgZmlsZW5hbWUuY19zdHIoKSwgbnVsbHB0cik7CisrI2VuZGlmCisgCQlpZiAoIWZvcm1h dCkgeworIAkJCXN5bmZpZzo6d2FybmluZygiVGFyZ2V0X0xpYkFWQ29kZWM6IHVuYWJsZSB0byBn dWVzcyB0aGUgb3V0cHV0IGZvcm1hdCwgZGVmYXVsdGluZyB0byBNUEVHIik7CistCQkJZm9ybWF0 ID0gYXZfZ3Vlc3NfZm9ybWF0KCJtcGVnIiwgTlVMTCwgTlVMTCk7CisrCQkJZm9ybWF0ID0gYXZf Z3Vlc3NfZm9ybWF0KCJtcGVnIiwgbnVsbHB0ciwgbnVsbHB0cik7CisgCQl9CisgCQlpZiAoIWZv cm1hdCkgeworIAkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiB1bmFibGUgdG8g ZmluZCAnbXBlZycgb3V0cHV0IGZvcm1hdCIpOworQEAgLTI1NCw2ICsyNjEsNyBAQAorIAkJY29u dGV4dCA9IGF2Zm9ybWF0X2FsbG9jX2NvbnRleHQoKTsKKyAJCWFzc2VydChjb250ZXh0KTsKKyAJ CWNvbnRleHQtPm9mb3JtYXQgPSBmb3JtYXQ7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpP UiA8IDU4IC8vIEZGTVBFRyA8IDQuMAorIAkJaWYgKGZpbGVuYW1lLnNpemUoKSArIDEgPiBzaXpl b2YoY29udGV4dC0+ZmlsZW5hbWUpKSB7CisgCQkJc3luZmlnOjplcnJvcigKKyAJCQkJIlRhcmdl dF9MaWJBVkNvZGVjOiBmaWxlbmFtZSB0b28gbG9uZywgbWF4IGxlbmd0aCBpcyAlZCwgZmlsZW5h bWUgaXMgJyVzJyIsCitAQCAtMjYzLDYgKzI3MSwxNCBAQAorIAkJCXJldHVybiBmYWxzZTsKKyAJ CX0KKyAJCW1lbWNweShjb250ZXh0LT5maWxlbmFtZSwgZmlsZW5hbWUuY19zdHIoKSwgZmlsZW5h bWUuc2l6ZSgpICsgMSk7CisrI2Vsc2UKKysJCWNvbnRleHQtPnVybCA9IGF2X3N0cm5kdXAoZmls ZW5hbWUuY19zdHIoKSwgZmlsZW5hbWUuc2l6ZSgpKTsKKysJCWlmICghY29udGV4dC0+dXJsKSB7 CisrCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29kZWM6IGNhbm5vdCBhbGxvY2F0ZSBz cGFjZSBmb3IgZmlsZW5hbWUiKTsKKysJCQljbG9zZSgpOworKwkJCXJldHVybiBmYWxzZTsKKysJ CX0KKysjZW5kaWYKKyAKKyAJCXBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworIAkJYXNzZXJ0 KHBhY2tldCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv c3luZmlnL3RlbXBsYXRlCmluZGV4IDVmNWY1YmIzZjRiMi4uNmUwZDcxMzE1MGFlIDEwMDY0NAot LS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0 ZQpAQCAtNiw3ICs2LDcgQEAgcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQog Y29uZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NST1NTX0JBU0V9L3Vz ci9saWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFnaWNrIHBrZy1jb25m aWcgaW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwgbGlieG1sKystZGV2 ZWwgbWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9IkVUTCBnZXR0ZXh0LWRl dmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRldmVsCiAgbGlibW5nLWRl dmVsIGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2ZWwgZmZtcGVnLWRldmVs IgogZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQgdmVjdG9yIGFuZCB0 aW1lbGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3ICsyMCw3IEBAIENYWEZM QUdTPSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5maWctZGV2ZWxfcGFja2Fn ZSgpIHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KLQkg bGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwiCisJIGxpYm9wZW5leHIt ZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxv cG1lbnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9iaW4vc3luZmlnLWNv bmZpZwoKRnJvbSA5NzQ0Y2JhYTFjOTVjNjcwYjQxNTFiZWU2NWI3NGQ2ZDc5OTc2ZjUxIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBGcmksIDUgTWF5IDIwMjMgMTI6NTc6NTcgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4My8xMTZd IHN5bmZpZ3N0dWRpbzogcmV2YnVtcCBmb3Igc3luZmlnIG1sdDcKCi0tLQogc3JjcGtncy9zeW5m aWdzdHVkaW8vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCmluZGV4IDkxMzQ5MTY5ZWQyYi4uYWYx YzVhMjk2ZWYwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICMgU2hvdWxk IGJlIGtlcHQgaW4gc3luYyB3aXRoICdzeW5maWcnIGFuZCAnRVRMJwogcGtnbmFtZT1zeW5maWdz dHVkaW8KIHZlcnNpb249MS40LjQKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtdXBkYXRlLW1pbWVkYiIK IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBnZXR0ZXh0IHN5bmZpZyIKCkZy b20gZDM1NTAxMjI2NDYyZTZkODNmMzA2MTY3Y2RmYTk4Mzg1OTY3NTUyNyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg0LzExNl0gdGdfb3d0 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUgYi9zcmNwa2dzL3RnX293dC90ZW1wbGF0 ZQppbmRleCA5N2QxOTVkZGIzNGEuLjU1MTYxNGIyNDk1NiAxMDA2NDQKLS0tIGEvc3JjcGtncy90 Z19vd3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0Z19vd3QnCiBwa2duYW1lPXRnX293dAogdmVyc2lv bj0wLjAuMC4yMDIzMDEwNwotcmV2aXNpb249MQorcmV2aXNpb249MgogX2NvbW1pdD01MDk4NzMw YjllYjYxNzNmMGI1MjA2OGZlMjU1NWI3YzEwMTUxMjNhCiBfbGlieXV2X2NvbW1pdD0wMDk1MDg0 MGQxYzliY2JiM2ViNmViYzVhYWM1NzkzZTcxMTY2YzhiCiBfYWJzZWlsX2NvbW1pdD04YzBiOTRl NzkzYTY2NDk1ZTBiMWYzNGE1ZWIyNmJkN2RjNjcyZGIwCgpGcm9tIDA2Y2ZlNzI3YmYxMDFmMTZk ZGQ3ZTczOThmYjJiY2Q1YjIzZmViNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIg LTA0MDAKU3ViamVjdDogW1BBVENIIDA4NS8xMTZdIHRpbWc6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy90aW1nL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90aW1nL3Rl bXBsYXRlIGIvc3JjcGtncy90aW1nL3RlbXBsYXRlCmluZGV4IDJhMmFiNzYzZDJmZC4uOGZiNDMy NzUzNWVmIDEwMDY0NAotLS0gYS9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90 aW1nL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGltZycK IHBrZ25hbWU9dGltZwogdmVyc2lvbj0xLjQuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfT1BFTlNMSURFX1NVUFBPUlQ9 b2ZmIC1Xbm8tZGV2IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdpdCIKCkZyb20gN2Qw MDgxMGQ4ZTRiZjE2MTQ0ZjhiMmUxYjBlYTQ3OWU4Zjc1NjE3ZSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg2LzExNl0gdHZoZWFkZW5kOiBy ZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRl IHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIGIvc3JjcGtncy90dmhl YWRlbmQvdGVtcGxhdGUKaW5kZXggZTZiMTZkN2NjZjNiLi40NmI1MmI2ZmI3ZjkgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdHZoZWFkZW5kL3Rl bXBsYXRlCkBAIC0xLDE0ICsxLDE0IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0dmhlYWRlbmQn CiBwa2duYW1lPXR2aGVhZGVuZAogdmVyc2lvbj00LjIuOAotcmV2aXNpb249NgorcmV2aXNpb249 NwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZW5hYmxlLWR2 YnNjYW4gLS1kaXNhYmxlLWZmbXBlZ19zdGF0aWMKIC0tZGlzYWJsZS1oZGhvbWVydW5fc3RhdGlj IC0tZGlzYWJsZS1iaW50cmF5X2NhY2hlIC0tZGlzYWJsZS1saWJ4MjY0X3N0YXRpYwogLS1kaXNh YmxlLWxpYngyNjVfc3RhdGljIC0tZGlzYWJsZS1saWJ2cHhfc3RhdGljIC0tZGlzYWJsZS1saWJ0 aGVvcmFfc3RhdGljCiAtLWRpc2FibGUtbGlidm9yYmlzX3N0YXRpYyAtLWRpc2FibGUtbGliZmRr YWFjX3N0YXRpYyIKIGhvc3RtYWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHB5dGhvbiBn aXQgd2hpY2giCi1tYWtlZGVwZW5kcz0iYXZhaGktbGlicy1kZXZlbCBvcGVuc3NsLWRldmVsIHps aWItZGV2ZWwgbGliY3VybC1kZXZlbCBmZm1wZWctZGV2ZWwiCittYWtlZGVwZW5kcz0iYXZhaGkt bGlicy1kZXZlbCBvcGVuc3NsLWRldmVsIHpsaWItZGV2ZWwgbGliY3VybC1kZXZlbCBmZm1wZWc0 LWRldmVsIgogc2hvcnRfZGVzYz0iVFYgc3RyZWFtaW5nIHNlcnZlciIKIG1haW50YWluZXI9Imxl bW1pIDxsZW1taUBuZXJkMm5lcmQub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb25seSIKCkZyb20g YmM3NzAyMDY1MzhlYWNmOWU0MjdjZDRiZjM2ZWZhNzgyMmVjNTRlOSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg3LzExNl0gdW5wYXBlcjog dXBkYXRlIHRvIDcuMC4wLgoKLS0tCiBzcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUgfCAxNiArKysr KysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvdW5w YXBlci90ZW1wbGF0ZQppbmRleCAzOGVkNDdhNTg0MDEuLjFmZjkxMGU3MjJhZiAxMDA2NDQKLS0t IGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0 ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndW5wYXBlcicKIHBrZ25h bWU9dW5wYXBlcgotdmVyc2lvbj02LjEKLXJldmlzaW9uPTMKLWJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKK3ZlcnNpb249Ny4wLjAKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPW1lc29uCitob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgbWVzb24gbGlieHNsdCIKK21ha2VkZXBlbmRzPSJmZm1w ZWctZGV2ZWwgcHl0aG9uMy1TcGhpbngiCitzaG9ydF9kZXNjPSJQb3N0LXByb2Nlc3NpbmcgdG9v bCBmb3Igc2Nhbm5lZCBzaGVldHMgb2YgcGFwZXIiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3Jw aGFuQHZvaWRsaW51eC5vcmc+IgotaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGxpYnhzbHQi Ci1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIgotbGljZW5zZT0iR1BMLTIiCitsaWNlbnNlPSJH UEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmZsYW1lZXllcy5ldS9wcm9q ZWN0cy91bnBhcGVyIgotc2hvcnRfZGVzYz0iQSBwb3N0LXByb2Nlc3NpbmcgdG9vbCBmb3Igc2Nh bm5lZCBzaGVldHMgb2YgcGFwZXIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vd3d3LmZsYW1lZXllcy5l dS9maWxlcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09MjM3Yzg0ZjVk YTU0NGIzZjc3MDk4MjdmOWYxMmMzN2MzNDZjZGYwMjliMTEyOGZiNDYzM2Y5YmFmYTVjYjkzMAor Y2hlY2tzdW09MjU3NWZiYmYyNmMyMjcxOWQxY2I4ODJiNTk2MDJjOTkwMGM3Zjc0NzExOGFjMTMw ODgzZjYzNDE5YmU0NmE4MAoKRnJvbSAxZWQ5YzkxM2JkYTUzMzVlYjM1YWMxODUzZGVmNzIwNjQ2 NDJkNGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODgvMTE2XSB2YmEtbTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L3ZiYS1tL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92YmEtbS90ZW1wbGF0ZSBiL3NyY3Br Z3MvdmJhLW0vdGVtcGxhdGUKaW5kZXggYmExNTNlMGI1OGNhLi5hYTYwOTM2NDVlOTcgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy92YmEtbS90ZW1wbGF0 ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9dmJhLW0KIHJldmVydHM9MTI5Ml8yCiB2ZXJzaW9u PTIuMS41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVFIC1ERU5BQkxFX0ZGTVBFRz1UUlVFIC1ERU5BQkxF X0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVwZW5kcz0i Z2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHppcCB5YXNtIHd4V2lkZ2V0cy1ndGszLWRldmVsIgoK RnJvbSBjNzk1ZWRhYTY3YTNhOTlhYjRiZGNkMzAyMDVlODZlOWNhMGIxZmZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODkvMTE2XSB2aWNl OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdmljZS90ZW1wbGF0ZSB8 IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUgYi9zcmNwa2dzL3ZpY2UvdGVtcGxh dGUKaW5kZXggMDkyNDc2N2NmY2ZiLi41OTgxZTQ1MTQ5ZDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv dmljZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICd2aWNlJwogcGtnbmFtZT12aWNlCiB2ZXJzaW9uPTMuNQot cmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9IgogCSQodm9wdF9lbmFibGUgc2RsMiBzZGx1aTIpCkBAIC0yOCw3ICsyOCw3IEBA IG1ha2VkZXBlbmRzPSIKIAkkKHZvcHRfaWYgZ3RrMyBndGsrMy1kZXZlbCkKIAkkKHZvcHRfaWYg Z3RrMyBwdWxzZWF1ZGlvLWRldmVsKQogCSQodm9wdF9pZiBndGszIHBhbmdvLWRldmVsKQotCSQo dm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKSIKKwkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZzQt ZGV2ZWwpIgogc2hvcnRfZGVzYz0iRW11bGF0b3IgZm9yIEM2NCwgQzEyOCwgQ0JNLUlJLCBQRVQs IFZJQzIwLCBQbHVzNCBhbmQgQzE2IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDIzY2RhODMxZTc2 MmE0ZTEyNGI3MDA4MzEyYzQ5MWQxNGQ0MDI5OTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MC8xMTZdIHdheXBpcGU6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy93YXlwaXBlL3RlbXBsYXRlIGIvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCmluZGV4IDVj NDE2MTkwMDA2MC4uMWE0NmZlMjdmN2Q4IDEwMDY0NAotLS0gYS9zcmNwa2dzL3dheXBpcGUvdGVt cGxhdGUKKysrIGIvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnd2F5cGlwZScKIHBrZ25hbWU9d2F5cGlwZQogdmVyc2lvbj0wLjgu NAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KICMgbHRvIGlzIG9m ZiBiZWNhdXNlIGl0IGNhdXNlcyBsaW5raW5nIGVycm9ycyBpbiBhcm12NmwgYW5kIGFybXY3bCAo ZHVlIHRvIE5FT04pCiBjb25maWd1cmVfYXJncz0iLUR3ZXJyb3I9ZmFsc2UgLUR3aXRoX2RtYWJ1 Zj1lbmFibGVkIC1Ed2l0aF9sejQ9ZW5hYmxlZAoKRnJvbSBlYTYzOTEzNThlYjhiYTMyMWY3NGM0 ZmZkYjdlODljNzg2NzI3NWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwOTEvMTE2XSB3Zi1yZWNvcmRlcjogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy93Zi1yZWNvcmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKaW5k ZXggZTI3OGViMDAxNjAwLi41ZDAxNGE1ZjI4YWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvd2YtcmVj b3JkZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3dmLXJlY29yZGVyJwogcGtnbmFtZT13Zi1y ZWNvcmRlcgogdmVyc2lvbj0wLjMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBzY2RvYyB3YXlsYW5kLWRldmVs IgogbWFrZWRlcGVuZHM9IndheWxhbmQtcHJvdG9jb2xzIHdheWxhbmQtZGV2ZWwgZmZtcGVnLWRl dmVsIHgyNjQtZGV2ZWwKCkZyb20gOTg1ZTAzMWYxMDg0NzgyMTAwNTgyZGY4YTllOGExZjM2YjVm OWJlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDkyLzExNl0geHByYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3hw cmEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUgYi9zcmNwa2dzL3hw cmEvdGVtcGxhdGUKaW5kZXggZWU4Y2U0ZWM3OGE5Li5jMDI0ODJhZDRiMzkgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MveHByYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3hwcmEvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd4cHJhJwogcGtnbmFtZT14cHJhCiB2ZXJz aW9uPTQuNC41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1weXRob24zLW1v ZHVsZQogbWFrZV9idWlsZF9hcmdzPSItLXdpdGhvdXQtY3VkYV9rZXJuZWxzIC0td2l0aG91dC1j dWRhX3JlYnVpbGQiCiBtYWtlX2luc3RhbGxfYXJncz0iJCh2b3B0X3dpdGggZG9jcykgJHttYWtl X2J1aWxkX2FyZ3N9IgoKRnJvbSA5YTQ4NTEzMTRiOTQ5YThmMDYyNDE4MTk3OGMyMjBhYTNkODM3 MTUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDA5OjA3OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwOTMvMTE2XSBudi1jb2RlYy1oZWFkZXJzOiB1cGRhdGUgdG8gMTIuMC4xNi4wCgotLS0KIHNy Y3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL252 LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUgYi9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxh dGUKaW5kZXggM2Q0MjJhNjFlNDg5Li4yNTFlMDU3ZjgyNmYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bnYtY29kZWMtaGVhZGVycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMv dGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdudi1jb2RlYy1o ZWFkZXJzJwogcGtnbmFtZT1udi1jb2RlYy1oZWFkZXJzCi12ZXJzaW9uPTExLjEuNS4xCit2ZXJz aW9uPTEyLjAuMTYuMAogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBzaG9y dF9kZXNjPSJGRm1wZWcgdmVyc2lvbiBvZiBoZWFkZXJzIHJlcXVpcmVkIHRvIGludGVyZmFjZSB3 aXRoIE52aWRpYXMgY29kZWMgQVBJcyIKQEAgLTgsNyArOCw3IEBAIG1haW50YWluZXI9Ik9ycGhh bmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0 cDovL2dpdC52aWRlb2xhbi5vcmcvP3A9ZmZtcGVnL252LWNvZGVjLWhlYWRlcnMuZ2l0IgogZGlz dGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vRkZtcGVnL252LWNvZGVjLWhlYWRlcnMvYXJjaGl2 ZS9uJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1kMDk1ZmJkNTZhYTkzNzcyNDcxYTMyM2Jl MGViZTY1NTA0YTBmNDNmMDZjNzZhMzBiNmQyNWRhNzdiMDZhZTljCitjaGVja3N1bT0yYTE1MzNi NjVmNTVmOWRhNTI5NTZmYWYwNjI3ZWQzYjc0ODY4YWMwYzdmMjY5OTkwZWRkMjEzNjkxMTNiNDhm CiAKIHBvc3RfaW5zdGFsbCgpIHsKIAlzZWQgLW4gJzQsMjVwJyBpbmNsdWRlL2ZmbnZjb2RlYy9u dkVuY29kZUFQSS5oID4gTElDRU5TRQoKRnJvbSAyNzUyZGYzYjFlODFmMGE3ZWVkYWFmMzU5Yzkz YjU3MTk3ZmU1M2UzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDA5OjA4OjQwIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwOTQvMTE2XSBvcGVuaW1hZ2VkZW5vaXNlOiByZXZidW1wIGZvciBmZm1wZWct Ni4wCgotLS0KIHNyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lz ZS90ZW1wbGF0ZQppbmRleCBkYjVjY2RiMDU1Y2MuLmNiOTAwNDVhZmI2MyAxMDA2NDQKLS0tIGEv c3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbmltYWdl ZGVub2lzZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29w ZW5pbWFnZWRlbm9pc2UnCiBwa2duYW1lPW9wZW5pbWFnZWRlbm9pc2UKIHZlcnNpb249MS40LjMK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGFyY2hzPSJ4ODZfNjQqIgogYnVpbGRfc3R5bGU9Y21h a2UKIGhvc3RtYWtlZGVwZW5kcz0iaXNwYyBweXRob24zIgoKRnJvbSA1MDg1NmNhODhkMGU3NTkx ZDM1YzMwODVmNjA5MDAyMzRmZDM5Y2M2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMgMjM6MzE6NDUg LTA0MDAKU3ViamVjdDogW1BBVENIIDA5NS8xMTZdIHNob3RjdXQ6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlIHwgMTYgKysrKysrKystLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgYi9zcmNwa2dzL3Nob3RjdXQvdGVtcGxh dGUKaW5kZXggOTllYmYyZThhNWFmLi5jNDE2YzkwNmZmNzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv c2hvdGN1dC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKQEAgLTEsMjAg KzEsMjAgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nob3RjdXQnCiBwa2duYW1lPXNob3RjdXQK LXZlcnNpb249MjIuMTIuMjEKLXJldmlzaW9uPTEKK3ZlcnNpb249MjMuMDUuMTQKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VUX1ZFUlNJT049 JHt2ZXJzaW9ufSIKLWhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtdG9vbHMtZGV2ZWwi Ci1tYWtlZGVwZW5kcz0ibWx0Ny1kZXZlbCBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LW11bHRp bWVkaWEtZGV2ZWwKLSBxdDUtcXVpY2tjb250cm9sczItZGV2ZWwgcXQ1LXdlYnNvY2tldHMtZGV2 ZWwgcXQ1LXBsdWdpbi1teXNxbCBxdDUtcGx1Z2luLW9kYmMKLSBxdDUtcGx1Z2luLXBnc3FsIHF0 NS1wbHVnaW4tc3FsaXRlIHF0NS1wbHVnaW4tdGRzIgotZGVwZW5kcz0iZmZtcGVnIGZyZWkwci1w bHVnaW5zIHF0NS1ncmFwaGljYWxlZmZlY3RzIHF0NS1xdWlja2NvbnRyb2xzIgoraG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHF0Ni10b29scy1kZXZlbCIKK21ha2VkZXBlbmRzPSJtbHQ3LWRl dmVsIHF0Ni1kZWNsYXJhdGl2ZS1kZXZlbCBxdDYtbXVsdGltZWRpYS1kZXZlbAorIHF0Ni13ZWJz b2NrZXRzLWRldmVsIHF0Ni1wbHVnaW4tbXlzcWwgcXQ2LXBsdWdpbi1vZGJjCisgcXQ2LXBsdWdp bi1wZ3NxbCBxdDYtcGx1Z2luLXNxbGl0ZSIKK2RlcGVuZHM9ImZmbXBlZyBmcmVpMHItcGx1Z2lu cyBxdDYtZGVjbGFyYXRpdmUiCiBzaG9ydF9kZXNjPSJGcmVlLCBvcGVuIHNvdXJjZSwgY3Jvc3Mt cGxhdGZvcm0gdmlkZW8gZWRpdG9yIgogbWFpbnRhaW5lcj0iSm9obiA8bWVAam9obm55bmF0b3Iu ZGV2PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cu c2hvdGN1dC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0aHViLmNvbS9tbHRmcmFtZXdvcmsv c2hvdGN1dC9yZWxlYXNlcyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL21sdGZyYW1l d29yay9zaG90Y3V0L2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09MWI5YTRm ODdiMTZhOTc1MWY5Y2I0MTU4OGYyMmFmNGMwMGYwODUxMDVkODJjZjIxZDA5NWQ5ZjNjMjgwYmM4 NgorY2hlY2tzdW09OTQ2MzJiZDY5Y2M4ZjNiMmNiYTA2NjhiOWU4ZDA1MTQ5M2VmYTVhOWM5NTU0 YzAyODIyYzM0NmZlNjRjMWNlMAogCiBDWFhGTEFHUz0iLURIQVZFX0xPQ0FMRV9IPTEgLURTSE9U Q1VUX05PVVBHUkFERSIKCkZyb20gYjVhMjlkYmU0MzRlYzgyMWI4ZjU2ZTJlMjFmOWYzZDUwMWE3 Mzk2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMzOjMwIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwOTYvMTE2XSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtn cy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCB8IDEg Kwogc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRs aWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4y L3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3NoaWJv a2VuMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uZWZjZjMyNDliZDg4Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFz cy5wYXRjaApAQCAtMCwwICsxIEBACisuLi8uLi9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBv cnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tl bjIvdGVtcGxhdGUKaW5kZXggMDg0ZWNjM2JhMWUxLi4yYTIxOTk4OTk3ZWIgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2hpYm9rZW4yJwogcGtn bmFtZT1zaGlib2tlbjIKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBf cGtnbmFtZT0icHlzaWRlLXNldHVwLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93 cmtzcmM9InNvdXJjZXMvc2hpYm9rZW4yIgogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gYmNmMmIw MzY2OTg1OTJjOTQ0NDVhN2MwYjMyMWQ5NzM1ZDc5YzQxMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIz IDIzOjMzOjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTcvMTE2XSBweXRob24zLXB5c2lkZTI6 IHVwZGF0ZSB0byA1LjE1LjgKCi0tLQogLi4uL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1i eXBhc3MucGF0Y2ggICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjcGtncy9weXRob24zLXB5 c2lkZTIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrLS0tLQogMiBmaWxlcyBj aGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1i eXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVz L2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9weXRob24zLXB5c2lk ZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY0YzQyOTU4NDc3NgotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1i eXBhc3MucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXNpbmcgdGhpcyBwcmV2ZW50cyBhbiBlcnJv ciBhcm91bmQgbGluZSAyMjAgYmVsb3cgaXQuCisiQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAnaW1w b3J0bGliJyBoYXMgbm8gYXR0cmlidXRlICdtYWNoaW5lcnknIgorVGhlIG9sZCBiYWNrdXAgbG9n aWMgaXMgaW4gcGxhY2UgYW5kIGNvbXBpbGVzIHdpdGhvdXQgaXNzdWVzLgorLS0tIGEvc291cmNl cy9zaGlib2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIz LTA0LTAyIDIzOjA5OjM0LjY4ODkxMjQwMiAtMDQwMAorKysrIGIvc291cmNlcy9zaGlib2tlbjIv bGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAyIDIzOjEw OjAzLjM5NTUyOTU4MiAtMDQwMAorQEAgLTE3MCw5ICsxNzAsNiBAQAorCisgICAgICMgJ3ppcHN0 cmluZ19zZXF1ZW5jZScgY29tZXMgZnJvbSBzaWduYXR1cmUuY3BwCisgICAgIHppcGJ5dGVzID0g YmFzZTY0LmI2NGRlY29kZSgnJy5qb2luKHppcHN0cmluZ19zZXF1ZW5jZSkpCistICAgIGlmIHN5 cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKy0gICAgICAgIHZ6aXAgPSB6aXBmaWxlLlppcEZpbGUo aW8uQnl0ZXNJTyh6aXBieXRlcykpCistICAgICAgICByZXR1cm4gc3lzLm1ldGFfcGF0aCwgRW1i ZWRkYWJsZVppcEltcG9ydGVyKHZ6aXApCisKKyAgICAgIyBPbGQgdmVyc2lvbiBmb3IgUHl0aG9u IDIuNywgb25seS4KKyAgICAgaW1wb3J0IG9zCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMt cHlzaWRlMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCmluZGV4 IDUwZTZmZjI2MGQzYi4uYjUwZTYyYmQyMTVkIDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5dGhvbjMt cHlzaWRlMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQpA QCAtMSwxMSArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwog cGtnbmFtZT1weXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4xNS41Ci1yZXZpc2lvbj0yCit2ZXJz aW9uPTUuMTUuOAorcmV2aXNpb249MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNl LXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWlsZF9z dHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4v cHl0aG9uIgorY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4vcHl0 aG9uIC1EQ01BS0VfQlVJTERfVFlQRT1Ob25lCisgLURCVUlMRF9URVNUUz1PRkYiCiBob3N0bWFr ZWRlcGVuZHM9ImNtYWtlIHB5dGhvbjMgc2hpYm9rZW4yIgogbWFrZWRlcGVuZHM9InB5dGhvbjMt ZGV2ZWwgbGlic2hpYm9rZW4yLWRldmVsIHF0NS1kZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRldmVs IHF0NS10b29scy1kZXZlbCBxdDUtcGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYwpAQCAtMjMs NyArMjQsNyBAQCBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+Igog bGljZW5zZT0iTEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93aWtpLnF0Lmlv L1F0X2Zvcl9QeXRob24iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNp YWxfcmVsZWFzZXMvUXRGb3JQeXRob24vcHlzaWRlMi9QeVNpZGUyLSR7dmVyc2lvbn0tc3JjLyR7 X3BrZ25hbWV9LnRhci54eiIKLWNoZWNrc3VtPTM5MjBhNGZiMzUzMzAwMjYwYzliYzQ2ZmY3MGYx ZmI5NzVjNWU3ZWZhMjJlOWQ1MTIyMjU4ODkyOGNlMTliMzMKK2NoZWNrc3VtPTIzNDM2MzAyYzhk ZWI1YjRjYmM3NjliMjA1ZDA5NjA0ZTM4YmE4M2I0MDcwOGVmY2NiN2JkOGM5YWY2ZjZiNWQKIAog YnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgogZGVzY19vcHRpb25fd2ViZW5naW5lPSJCdWlsZCBR dDUgV2ViRW5naW5lIGJpbmRpbmdzIgoKRnJvbSAyYTk2ZTJhMzkyMTQ2ZTBlYjk2NGZiMjFkODYx NTQyOTM0ZGRiYTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVj dDogW1BBVENIIDA5OC8xMTZdIGtvbnF1ZXJvcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1 ZXJvci90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCmluZGV4IGQ4ZDBlNzNh NzhhYi4uYzViZGJhNjAxZDNjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZQpAQCAtMSwxMSArMSwxMSBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAna29ucXVlcm9yJwogcGtnbmFtZT1rb25xdWVyb3IKIHZlcnNpb249 MjMuMDQuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRERFU0tUT1BUT0pTT05fRVhFQ1VUQUJMRT0vdXNyL2Jpbi9kZXNrdG9wdG9q c29uIgogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHB5dGhvbjMgcXQ1LWhv c3QtdG9vbHMgcXQ1LXFtYWtlIGtkb2N0b29scwota2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0 IgorIGtjb3JlYWRkb25zIGtjb25maWcgZ2V0dGV4dCIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwg cXQ1LXdlYmVuZ2luZS1kZXZlbCBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwKICBxdDUtd2ViY2hhbm5l bC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwga2NtdXRpbHMtZGV2ZWwga2RlbGliczRzdXBwb3J0 LWRldmVsCiAga2FyY2hpdmUtZGV2ZWwga2h0bWwtZGV2ZWwga2Rlc3UtZGV2ZWwga2FjdGl2aXRp ZXM1LWRldmVsIgoKRnJvbSAzZjE2OGFjNTZiMDM4Y2Q5M2Q5ZjNiOTcyNTdjM2RjZGEzZWZjZDA3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6NTggLTA0MDAKU3ViamVjdDogW1BBVENIIDA5 OS8xMTZdIHF0NS1zcGVlY2g6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9x dDUtc3BlZWNoL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRl IGIvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCmluZGV4IDNlY2QxMGQ1MDY1MC4uMmQ3ZDRk NGQyNDUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAncXQ1LXNwZWVjaCcKIHBrZ25hbWU9cXQ1LXNwZWVjaAogdmVyc2lvbj01LjE1LjcKLXJl dmlzaW9uPTIKK3JldmlzaW9uPTMKIF9jb21taXQ9ZDMyZjRhNDc5ZDM4YTExZjU0NzU5ODAwNGI5 NzVmNDM1NjQyNGExNgogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItLSAtZmxp dGUgLWZsaXRlLWFsc2EgLXNwZWVjaGQiCgpGcm9tIGM3NjdhZmFkNjQ4NTdhZjU5N2UzYTJiNjBj ODM4ZGNkZjc3ZDRiZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxODozODo1MCAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMTAwLzExNl0gcXQ1LXN0eWxlcGx1Z2luczogcmV2YnVtcCBmb3IgcXQ1LTUu MTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdp bnMvdGVtcGxhdGUKaW5kZXggOTZlZDk3ZDEyY2QyLi4zMGQ5MzY2MGEyYTQgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHls ZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdx dDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4w Ci1yZXZpc2lvbj0yMAorcmV2aXNpb249MjEKIF9naXRyZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2Nm ODE5YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0i cGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIGMxYWFjNjI1NGVjNTMw YmFhNjM0M2QwMGUzOWRhOTI0N2ZjMTg1NDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMzAgQXByIDIwMjMgMjA6MjI6 MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMS8xMTZdIGdzdC1wbHVnaW5zLXVnbHkxOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUKaW5kZXggZTI1NGZkNDBmODY5Li44NWFl NjRiYzdhMGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtdWdseTEvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9nc3QtcGx1Z2lucy11Z2x5MS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLXVnbHkxJwogcGtnbmFtZT1nc3QtcGx1 Z2lucy11Z2x5MQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBi dWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EYW1ybmI9ZGlzYWJsZWQgLURhbXJ3 YmRlYz1kaXNhYmxlZCAtRHNpZHBsYXk9ZGlzYWJsZWQiCkBAIC0xNSw0ICsxNSw0IEBAIG1haW50 YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BMLTIu MS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmci CiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWUvMS99LyR7cGtnbmFtZS8xL30t JHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT04Y2FhMjA3ODlhMDljMzA0YjQ5Y2Y1NjNkMzNj Y2E5NDIxYjE4NzViODRmY2MxODdlNGEzODVmYTAxZDZhZWZkCitjaGVja3N1bT04ZjMwZjQ0ZGIw YmQwNjM3MDliZjZmYmU1NTEzOGUzYTk4YWYwYWJjYjYxYzM2MGYzNTU4MmJiZTEwZTgwNjkxCgpG cm9tIGRmOTgwYjRiNDRmOTZhMGU0NTYyNzlhZjA0N2U3NTA4NTEyZjk1NDEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwg MzAgQXByIDIwMjMgMjA6MjI6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMi8xMTZdIGdzdC1y dHNwLXNlcnZlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1ydHNw LXNlcnZlci90ZW1wbGF0ZSB8IDggKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2 ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQppbmRleCA4Y2Vl YThkMzRiNGIuLjk4MGZkNzJjZGQ0YyAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2 ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtcnRzcC1zZXJ2ZXInCiBwa2duYW1l PWdzdC1ydHNwLXNlcnZlcgotdmVyc2lvbj0xLjIwLjMKLXJldmlzaW9uPTMKK3ZlcnNpb249MS4y Mi4yCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIHB5dGhvbjMiCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYWQx LWRldmVsIGdvYmplY3QtaW50cm9zcGVjdGlvbgpAQCAtMTAsNSArMTAsNSBAQCBzaG9ydF9kZXNj PSJHU3RyZWFtZXIgbXVsdGltZWRpYSBncmFwaCBmcmFtZXdvcmsgLSBydHNwIHNlcnZlciIKIG1h aW50YWluZXI9IjFpczdhYzMgPGlzYWFjLnFhMTNAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkxHUEwt Mi4xLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9y ZyIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qt cnRzcC1zZXJ2ZXIvZ3N0LXJ0c3Atc2VydmVyLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09 ZWU0MDI3MThiZTliMTI3ZjBlNWU2NmNhNGMxYjRmNDJlNDkyNmVjOTNiYTMwN2I3Y2NjYTVkYzZj Yzk3OTRjYQorZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lfS8ke3BrZ25hbWV9 LSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09MmJlNGFlY2ZiODg3MTAxMDBlYTcxMTVlZDAy MTY0MDNlODA5NDM0NGViZjE0NjA5NDI3MWI4ZDRkNzM4MjhiZgoKRnJvbSBjYTgyYmZhOWUzYzk5 ZTNkYmVmZjY4NjhiOThlMmFhZWZkMDg3YjI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDMwIEFwciAyMDIzIDIwOjIy OjI2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDMvMTE2XSBnc3QtbGliYXY6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCA0ICsrLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0 ZQppbmRleCBmMDgyYmQyMTFjNjUuLjA0YzM5YmZmMTQ4OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9n c3QtbGliYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKQEAgLTEs NiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnc3QtbGliYXYnCiBwa2duYW1lPWdzdC1s aWJhdgotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0yCiBidWlsZF9z dHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCkBAIC0xMSw3ICsx MSw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNl bnNlPSJMR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVl ZGVza3RvcC5vcmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy8ke3BrZ25hbWV9LyR7cGtn bmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT0zZmVkZDEwNTYwZmNkZmFhMWI2NDYy Y2JmNzlhMzhjNGU3YjU3ZDdmMzkwMzU5MzkzZmMwY2VmNmRiZjI3ZGZlCitjaGVja3N1bT1mY2Fh Zjk4NzhmZThmM2JjODIzMTdlZjEzYTE1NTg4MjRjYjY4ZGYxZjg5NjhjNjc5N2Y1NTZjNWUzM2Jj ZmZkCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCSotbXVzbCkgIyBSZXF1aXJl ZCBieSBtdXNsIGZvciBNX1NRUlQxXzIKCkZyb20gYjFlYzQ5NWM0YmZlM2E2YzMwNTI4MTk3YmRm NjUwYTk5YTJjYmZlNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjE0OjE0IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAxMDQvMTE2XSBtbHQ3OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlICAgICAgICAgICAgIHwgMiArLQogc3JjcGtncy9nc3Qt b214L3RlbXBsYXRlICAgICAgICAgICAgICAgfCA0ICsrLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMt YmFzZTEvdGVtcGxhdGUgICAgIHwgNCArKy0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWdvb2QxL3Rl bXBsYXRlICAgICB8IDQgKystLQogc3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxh dGUgfCA0ICsrLS0KIHNyY3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRlICAgICAgICAgIHwgNiAr KystLS0KIHNyY3BrZ3MvZ3N0cmVhbWVyLXZhYXBpL3RlbXBsYXRlICAgICAgIHwgNCArKy0tCiBz cmNwa2dzL2dzdHJlYW1lcjEvdGVtcGxhdGUgICAgICAgICAgICB8IDQgKystLQogc3JjcGtncy9t bHQ3L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAyICstCiA5IGZpbGVzIGNoYW5nZWQsIDE3 IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0 LWxpYmF2L3RlbXBsYXRlIGIvc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUKaW5kZXggMDRjMzli ZmYxNDg5Li44YzcyZmMzZTk3ZWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYKIHZlcnNpb249 MS4yMi4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRldmVsIGdzdC1w bHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0 LW9teC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZQppbmRleCA4OTM1MzVjNDYz ZGEuLjVhZDU0Y2M3YjlkOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3Qtb214L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ3N0LW9teC90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2dzdC1vbXgnCiBwa2duYW1lPWdzdC1vbXgKLXZlcnNpb249MS4yMC4zCit2ZXJz aW9uPTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdz PSItRGV4YW1wbGVzPWRpc2FibGVkIC1EdGFyZ2V0PWdlbmVyaWMiCkBAIC0xMSw0ICsxMSw0IEBA IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJM R1BMLTIuMS1vbmx5IgogaG9tZXBhZ2U9Imh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9y ZyIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vc3JjLyR7cGtnbmFtZX0vJHtwa2duYW1lfS0ke3Zl cnNpb259LnRhci54eiIKLWNoZWNrc3VtPThkYjQ4MDQwYmI0MWYwOWVkZjhkMTdmZjZkMTZjNTQ4 ODhkNzc3N2JhNDUwMWMyYzY5ZjAwODMzNTBlYTlhMTUKK2NoZWNrc3VtPTFiMGM1N2YyY2M0ZGRl ZWM1ZTdmMGM0MzZlNTAyZjA2NjY1YzRlOTNjNzMyNjE4NTViOTRlMDRmYzk0MzM3YjIKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1w bHVnaW5zLWJhc2UxL3RlbXBsYXRlCmluZGV4IDI5ZThmNzZiZDFmZS4uMmYyMGVhODE5ODQ5IDEw MDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhc2UxL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvZ3N0LXBsdWdpbnMtYmFzZTEvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdnc3QtcGx1Z2lucy1iYXNlMScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMtYmFzZTEK LXZlcnNpb249MS4yMC4zCit2ZXJzaW9uPTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9 bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgpAQCAtMjIsNyArMjIsNyBAQCBtYWludGFpbmVyPSJP cnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRl ciwgTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRl c2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lLzEvfS8ke3Br Z25hbWUvMS99LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09N2UzMGIzZGQ4MWE3MDM4MGZm NzU1NGY5OTg0NzFkNjk5NmZmNzZiYmU2ZmM1NDQ3MDk2Zjg1MWUyNDQ3M2M5ZgorY2hlY2tzdW09 ZWI2NTEyMGM0ZWU3OWI3YTE1M2MzYzE5NzJkNWMwMTU4YzIxNTE4NzdjYzUxZWM3NzI1YmJhNTc0 OTY3OWQ0OQogCiBidWlsZF9vcHRpb25zPSJjZHBhcmFub2lhIGdpciBzbmRpbyB3YXlsYW5kIgog YnVpbGRfb3B0aW9uc19kZWZhdWx0PSJjZHBhcmFub2lhIGdpciB3YXlsYW5kIgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9nc3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LXBsdWdp bnMtZ29vZDEvdGVtcGxhdGUKaW5kZXggMWY1ZTYyMGNlMWZkLi41ZDBmZTFiZmUyODQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtZ29vZDEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9n c3QtcGx1Z2lucy1nb29kMS90ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2dzdC1wbHVnaW5zLWdvb2QxJwogcGtnbmFtZT1nc3QtcGx1Z2lucy1nb29kMQotdmVy c2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNv bgogY29uZmlndXJlX2FyZ3M9Ii1EZHY9ZGlzYWJsZWQgLURkdjEzOTQ9ZGlzYWJsZWQgLURzaG91 dDI9ZGlzYWJsZWQgLURxdDU9ZW5hYmxlZApAQCAtMjIsNyArMjIsNyBAQCBtYWludGFpbmVyPSJP cnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0 ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZp bGVzPSIke2hvbWVwYWdlfS9zcmMvJHtwa2duYW1lLzEvfS8ke3BrZ25hbWUvMS99LSR7dmVyc2lv bn0udGFyLnh6IgotY2hlY2tzdW09ZjhmM2MyMDZiZjVjZGFiYzAwOTUzOTIwYjQ3YjM1NzVhZjBl ZjE1ZTlmODcxYzBiNjk2NmY2ZDBhYTU4NjhiNworY2hlY2tzdW09N2M4Y2M1OTQyNWYyYjIzMmY2 MGNhN2QxM2U1NmVkZDYxNWRhNGY3MTFlNzNkZDAxYTdjZmZhNDZlNmJjMGNkZAogCiBidWlsZF9v cHRpb25zPSJndGszIHdheWxhbmQiCiBidWlsZF9vcHRpb25zX2RlZmF1bHQ9Imd0azMgd2F5bGFu ZCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3RlbXBsYXRlIGIv c3JjcGtncy9nc3QxLWVkaXRpbmctc2VydmljZXMvdGVtcGxhdGUKaW5kZXggNjczYjQ2OTcwZjI0 Li4xMDI0NDBmN2YyNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2Vz L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0MS1lZGl0aW5nLXNlcnZpY2VzL3RlbXBsYXRlCkBA IC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0MS1lZGl0aW5nLXNlcnZpY2Vz JwogcGtnbmFtZT1nc3QxLWVkaXRpbmctc2VydmljZXMKLXZlcnNpb249MS4yMC4zCit2ZXJzaW9u PTEuMjIuMgogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2ly IgpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJUb3lhbSBDb3ggPFZhZWxhdGVybkBnbWFp bC5jb20+IgogbGljZW5zZT0iTEdQTC0yLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9n c3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvJHtw a2duYW1lL2dzdDEvZ3N0fS8ke3BrZ25hbWUvZ3N0MS9nc3R9LSR7dmVyc2lvbn0udGFyLnh6Igot Y2hlY2tzdW09NWZkODk2ZGU2OWZiZTI0NDIxZWI2YjBmZjhkMmY4YjRjM2NiYTNmMzAyNWNlYWNk MzAyMTcyZjM5YThhYmFhMgorY2hlY2tzdW09NDUzYjE0NjRmYzM4NTdkZTI2OWE3Y2IwZWJkOTY2 YWZlMDIxNzFkOTdiZWY2NzJhMGI4YTBhNmQ0M2UwY2ViZgogCiBkb19jaGVjaygpIHsKIAk6ICMg VGVzdHMgZmFpbCBpbiBvbGRlciB2ZXJzaW9ucyBhcyB3ZWxsCmRpZmYgLS1naXQgYS9zcmNwa2dz L2dzdDEtcHl0aG9uMy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0MS1weXRob24zL3RlbXBsYXRlCmlu ZGV4IDNmNTY0YWM2NGI5My4uNzg5ZTQwZjAzNmVhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdDEt cHl0aG9uMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdDEtcHl0aG9uMy90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdDEtcHl0aG9uMycKIHBrZ25hbWU9 Z3N0MS1weXRob24zCi12ZXJzaW9uPTEuMjAuMwotcmV2aXNpb249MgordmVyc2lvbj0xLjIyLjIK K3JldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgcHl0aG9uMyIKIG1ha2VkZXBlbmRzPSJsaWJnbGliLWRldmVsIHB5dGhvbjMtZGV2ZWwgcHl0 aG9uMy1nb2JqZWN0LWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIgpAQCAtMTEsNCArMTEs NCBAQCBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5z ZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRl c2t0b3Aub3JnIgogZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9zcmMvZ3N0LXB5dGhvbi9nc3QtcHl0 aG9uLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZGIzNDgxMjBlYWU5NTViOGNjNGRlMzU2 MGE3ZWEwNmUzNmQ2ZTFkZGJhYTk5YTdhZDk2YjU5ODQ2NjAxY2ZkYworY2hlY2tzdW09YmVmMmIz ZDgyY2U0YmU0NmI3NzViMWJiNTYzMDVjMTAwM2VlMDFiNTM1YTUzYTgyZjlmZTg5MjQ5NzIxNTNh ZApkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUgYi9zcmNwa2dz L2dzdHJlYW1lci12YWFwaS90ZW1wbGF0ZQppbmRleCAzY2M0ZTA1NzU1OWEuLjBhNWVlOGIxY2Ez ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nc3RyZWFtZXItdmFhcGkvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdnc3RyZWFtZXItdmFhcGknCiBwa2duYW1lPWdzdHJlYW1lci12YWFwaQotdmVy c2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgpAQCAtMTEsNyArMTEsNyBAQCBsaWNlbnNl PSJMR1BMLTIuMS1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVz a3RvcC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9H U3RyZWFtZXIvZ3N0cmVhbWVyLXZhYXBpL21hc3Rlci9DaGFuZ2VMb2ciCiBkaXN0ZmlsZXM9IiR7 aG9tZXBhZ2V9L3NyYy9nc3RyZWFtZXItdmFhcGkvZ3N0cmVhbWVyLXZhYXBpLSR7dmVyc2lvbn0u dGFyLnh6IgotY2hlY2tzdW09NmVlOTllYjMxNmFiZGRlOWFkMzcwMDI5MTViZDhjMzg2NzkxOGY2 ZmRjNzRiN2NmMmFjNGMxYWUwZDY5MGI0NQorY2hlY2tzdW09ZDJlNjQyZjk3NDVmOTdkOWY3M2E3 ZjUwODVlNzY1OWE5YTMxZmUyMDliNzc0ZTZlNDVkYWUwNDFiNDM1ZGYwNgogCiBwcmVfY2hlY2so KSB7CiAJIyBTZWVtcyB0byBuZWVkIGNlcnRhaW4gaGFyZHdhcmUgdG8gcGFzcwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBsYXRlIGIvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBs YXRlCmluZGV4IGFlOGE0OWNiMjBlOC4uNTcxMTQ4ZjJmZjMzIDEwMDY0NAotLS0gYS9zcmNwa2dz L2dzdHJlYW1lcjEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nc3RyZWFtZXIxL3RlbXBsYXRlCkBA IC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0cmVhbWVyMScKIHBrZ25hbWU9 Z3N0cmVhbWVyMQotdmVyc2lvbj0xLjIwLjMKK3ZlcnNpb249MS4yMi4yCiByZXZpc2lvbj0xCiBi dWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPSJnaXIiCkBAIC0xNiw3ICsxNiw3IEBAIG1h aW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJMR1BM LTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5v cmciCiBkaXN0ZmlsZXM9IiR7aG9tZXBhZ2V9L3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7dmVy c2lvbn0udGFyLnh6IgotY2hlY2tzdW09NjA3ZGFmNjRiYmJkNWZiMThhZjlkMTdlMjFjMGQyMmM0 ZDcwMmZmZmU4M2IyM2NiMjJkMWIxYWYyY2EyM2EyYQorY2hlY2tzdW09YjJhZmU3MzYwMzkyMWM2 MDhiYTQ4OTY5ZGJiN2Q3NDM3NzY3NDRiZmU1ZDgwNTllY2UyNDExMzdiN2Y4OGUyMQogCiBwcmVf Y2hlY2soKSB7CiAJIyBnc3RfZ3N0ZGF0ZXRpbWUgaXMga25vd24gdG8gZmFpbCBhY2NvcmRpbmcg dG8gTEZTCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUgYi9zcmNwa2dzL21sdDcv dGVtcGxhdGUKaW5kZXggOWZiN2Y2MGQ2OTJlLi5jY2EwZWI2OGNmYzMgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbWx0Ny90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21sdDcvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQ3JwogcGtnbmFtZT1tbHQ3CiB2ZXJzaW9u PTcuMTQuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZp Z3VyZV9hcmdzPSItRFNXSUdfUFlUSE9OPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJkb3h5Z2VuIHBr Zy1jb25maWcgbGFkc3BhLXNkayBzd2lnIHB5dGhvbjMgd2hpY2gKCkZyb20gMTU5N2FjNWY5ZjQy MDQ3OTFkNmVmMWE0ZjUwMThmN2QyMGI2MGNiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjE1 OjAzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDUvMTE2XSBxdDYtd2ViZW5naW5lOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ2LXdlYmVu Z2luZS90ZW1wbGF0ZQppbmRleCA0ZTIyY2I2ZTg4NjMuLmY5NDhkYzkxOWExNSAxMDA2NDQKLS0t IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVu Z2luZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni13 ZWJlbmdpbmUnCiBwa2duYW1lPXF0Ni13ZWJlbmdpbmUKIHZlcnNpb249Ni41LjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iCiAgLURR VF9GRUFUVVJFX3dlYmVuZ2luZV9zeXN0ZW1fZmZtcGVnPU9OCgpGcm9tIGFkYTRhM2Q3NTg2YzEx NmQ1ZjZkOTMyYTJlMWZmMTAyMzFhMzhhODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAyMDoxNToy OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA2LzExNl0gdHJhY2tlci1taW5lcnM6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUgYi9zcmNwa2dzL3RyYWNrZXIt bWluZXJzL3RlbXBsYXRlCmluZGV4IDhjMDA1ZDY5N2ZhNC4uYTZlNWFhNTc3NzAyIDEwMDY0NAot LS0gYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdHJhY2tl ci1taW5lcnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0 cmFja2VyLW1pbmVycycKIHBrZ25hbWU9dHJhY2tlci1taW5lcnMKIHZlcnNpb249My41LjAKLXJl dmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9cWVt dQogIyBtaXNzaW5nIGxpYmdyc3MgZm9yIG1pbmVyX3JzcwoKRnJvbSAzNzBmOGIxYmJkYjdkNzU4 ODZjNzA0YTQ1ODE3NjEzZTI3NzgyMDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDcgTWF5IDIwMjMgMjA6MjA6NTgg LTA0MDAKU3ViamVjdDogW1BBVENIIDEwNy8xMTZdIG1wZDogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL21wZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXBkL3RlbXBs YXRlIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKaW5kZXggOWRiZDRjOTM1YWNjLi45ZjA1OGI2MmRm MmYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXBkL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXBkJwogcGtnbmFt ZT1tcGQKIHZlcnNpb249MC4yMy4xMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRG9wdXM9ZW5hYmxlZCAtRG1pa21vZD1lbmFibGVk IC1EbmVpZ2hib3I9dHJ1ZQogIC1Ec291bmRjbG91ZD1lbmFibGVkIC1EcGlwZT10cnVlIC1EdHdv bGFtZT1lbmFibGVkIC1EYnppcDI9ZW5hYmxlZAoKRnJvbSAzODc0MmVkMTZhYTVkYTNkMDZmNDFj NDExMzhjNDA1NDhkMzA5OTc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUsIDExIE1heSAyMDIzIDE0OjA1OjE0IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAxMDgvMTE2XSBvcGVubXc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5tdy90 ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCmluZGV4IGUzNzcxYzdhYWYxYS4uM2Ni ZjIwYjA2NTc3IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5tdy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL29wZW5tdy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J29wZW5tdycKIHBrZ25hbWU9b3Blbm13CiB2ZXJzaW9uPTAuNDcuMAotcmV2aXNpb249NQorcmV2 aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIF9yZWNhc3RfY29tbWl0PWU3NWFkZjg2ZjkxZWIz MDgyMjIwMDg1ZTQyZGRhNjI2NzlmOWEzZWEKIF9idWxsZXRfdGFnPTMuMTcKCkZyb20gOGMzZmJk NmNlNzc5OWE2ZGRmNjQ2OTIyYmVjMmRlNjk5NWJkMWZlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAyMSBNYXkgMjAy MyAxMjo0NDoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA5LzExNl0gZWxlY3Ryb24yNDogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMjQv dGVtcGxhdGUKaW5kZXggYmRhYTU2YWRjOGE2Li5mZjNkNWUzZWYzODEgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjI0JwogcGtn bmFtZT1lbGVjdHJvbjI0CiB2ZXJzaW9uPTI0LjMuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog X25vZGV2ZXI9MTguMTQuMAogX2Nocm9taXVtdmVyPTExMi4wLjU2MTUuMTY1CiBhcmNocz0ieDg2 XzY0KiBhYXJjaDY0KiIKCkZyb20gZjY2OWQyOWY5ODNkYzAwMzc1NGMxNTA4YTczZDZlOTgyMTIx NmIzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogU2F0LCAzIEp1biAyMDIzIDA4OjIwOjIyIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMTAvMTE2XSBndGs0OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3Rr NC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3Rr NC90ZW1wbGF0ZQppbmRleCBiMzE4YjdiYWUxZGQuLmUzYmRlNGE1MGU1NCAxMDA2NDQKLS0tIGEv c3JjcGtncy9ndGs0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2d0azQnCiBwa2duYW1lPWd0azQKIHZlcnNp b249NC4xMC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogYnVp bGRfaGVscGVyPSJnaXIiCiBjb25maWd1cmVfYXJncz0iLURtYW4tcGFnZXM9dHJ1ZSAtRGd0a19k b2M9dHJ1ZSAtRGJ1aWxkLXRlc3RzPWZhbHNlCgpGcm9tIDM5ZjFiZDZlYjZiNTJjOGNlZjJjMmVi NzlhOWU0NjA0NjM5YzEyZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBKdW4gMjAyMyAxMToyNTo1MCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMTExLzExNl0gZWxlY3Ryb24xOTogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMTkvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKaW5kZXggMzJj ZTMwMWU3MzBjLi5hYjdmMzA4ZjVlOGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlY3Ryb24xOS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjE5JwogcGtnbmFtZT1lbGVjdHJvbjE5CiB2 ZXJzaW9uPTE5LjAuOAotcmV2aXNpb249MworcmV2aXNpb249NAogX25vZGV2ZXI9MTYuMTQuMgog X2Nocm9taXVtdmVyPTEwMi4wLjUwMDUuMTI1CiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2 NGxlKiIKCkZyb20gN2Q2Y2E5MjBhZGJkZWM4ZGJiMjY3NjA1NDc3NTVlOWYzOTkxNjcxMyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogU3VuLCA0IEp1biAyMDIzIDExOjI4OjI2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTIvMTE2 XSBzaXJpbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3NpcmlsL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2lyaWwvdGVt cGxhdGUKaW5kZXggODQzMzJmNzlkMDYwLi42Mjc1MGRkMjQ3NTQgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3Mvc2lyaWwvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NpcmlsJwogcGtnbmFtZT1zaXJpbAogdmVyc2lv bj0wLjkuMTIKLXJldmlzaW9uPTEwCityZXZpc2lvbj0xMQogYnVpbGRfc3R5bGU9Z251LWNvbmZp Z3VyZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGludGx0b29sIGF1dG9jb25mIGF1dG9t YWtlIGdldHRleHQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0iZmZ0dy1kZXZlbCBsaWJjb25maWctZGV2 ZWwgbGlib3BlbmN2LWRldmVsIGxpYmZmbXMyLWRldmVsCgpGcm9tIGY4Nzk3MmJiMDA2ZTUyMjg0 ODZmN2VmZWEzZGY1YmI4Y2M0MDc5NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBKdW4gMjAyMyAxMToyOTowOCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMTEzLzExNl0gdGVsZWdyYW0tZGVza3RvcDogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUgYi9zcmNwa2dzL3RlbGVn cmFtLWRlc2t0b3AvdGVtcGxhdGUKaW5kZXggZjExNGIyMzQxZGM1Li45ZGI5ZjgwYzFhNTMgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1kZXNrdG9wCiB2ZXJz aW9uPTQuOC4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1jbWFrZQogYnVp bGRfaGVscGVyPSJxZW11IgogY29uZmlndXJlX2FyZ3M9Ii1EVERFU0tUT1BfQVBJX0lEPTIwOTIz NQoKRnJvbSA2NjRlOTUzZjQ2N2ViYWVlMTIzZTUwOGFlODRhNTk0ZjljY2U1MzNmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBT YXQsIDEwIEp1biAyMDIzIDAwOjQwOjM5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMTQvMTE2XSBm cmVlY2FkOiByZXZidW1wIGZvciBxdDUtd2ViZW5naW5lLTUuMTUuMTMKCi0tLQogc3JjcGtncy9m cmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIGIvc3Jj cGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGE0YTNmNWY3NmIyOS4uODYwOGQxNjcwYzg3IDEw MDY0NAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mcmVlY2Fk L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZnJlZWNhZCcK IHBrZ25hbWU9ZnJlZWNhZAogdmVyc2lvbj0wLjIwLjIKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYK IGJ1aWxkX3N0eWxlPWNtYWtlCiAKIF9pbnN0X3ByZWZpeD0vdXNyL2xpYi8ke3BrZ25hbWV9CgpG cm9tIGU5MTJkY2MyNDliM2Y4YTM1ZGVjYzVhZTBhN2M4ZmRiYjYxZGIzOWEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFNhdCwg MTAgSnVuIDIwMjMgMDA6NTc6MDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDExNS8xMTZdIHF0Ni1t dWx0aW1lZGlhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcXQ2LW11bHRp bWVkaWEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRl IGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQppbmRleCBhNjgzMmZkZDY5YmYuLmM5 ZmZhYzkxNGFiOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAncXQ2LW11bHRpbWVkaWEnCiBwa2duYW1lPXF0Ni1tdWx0aW1lZGlh CiB2ZXJzaW9uPTYuNS4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFr ZQogY29uZmlndXJlX2FyZ3M9Ii1EUVRfRkVBVFVSRV9nc3RyZWFtZXI9T04iCiBob3N0bWFrZWRl cGVuZHM9InBlcmwgcXQ2LWRlY2xhcmF0aXZlLWhvc3QtdG9vbHMgcGtnLWNvbmZpZyBxdDYtc2hh ZGVydG9vbHMiCgpGcm9tIDgyNDBkNTM2YzQ5ZDI0ODA1MDhkMzNhNjgwNzM4ZmUzOTAzZmY3ZTIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgSnVuIDIwMjMgMTU6Mjg6MjEgLTA0MDAKU3ViamVjdDogW1BBVENIIDEx Ni8xMTZdIGtkZW5saXZlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva2Rl bmxpdmUvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlIGIvc3Jj cGtncy9rZGVubGl2ZS90ZW1wbGF0ZQppbmRleCA0MjkxMjZlZjNjM2IuLjBjNWY3YmY2OThmYiAx MDA2NDQKLS0tIGEvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tkZW5s aXZlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2Rlbmxp dmUnCiBwa2duYW1lPWtkZW5saXZlCiB2ZXJzaW9uPTIzLjA0LjIKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9IgogIGV4dHJhLWNtYWtl LW1vZHVsZXMga2NvbmZpZyBrY29yZWFkZG9ucyBrZG9jdG9vbHMgcGtnLWNvbmZpZyBweXRob24z Cg== --===============5137543193215146374==--