From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jocelyn Falempe To: git-commits@fedoraproject.org Subject: [rpms/kmscon] f44: Add localectl runtime support Date: Thu, 02 Jul 2026 16:23:45 GMT Message-ID: <178300942528.1.7871132063223825739.rpms-kmscon-acf9652b0f61@fedoraproject.org> List-ID: X-Git-Repo: rpms/kmscon X-Git-Branch: f44 X-Git-Rev: acf9652b0f61ec90ae0042e92b6282c65f89d0d0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMva21zY29uCiAgICAgICAgICAgIEJyYW5jaCA6IGY0NAogICAgICAgICAgICBD b21taXQgOiBhY2Y5NjUyYjBmNjFlYzkwYWUwMDQyZTkyYjYyODJjNjVmODlkMGQwCiAgICAgICAg ICAgIEF1dGhvciA6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KICAgICAg ICAgICAgRGF0ZSAgIDogMjAyNi0wNi0wNVQxMzoxNzoyNCswMjowMAogICAgICAgICAgICBTdGF0 cyAgOiArMjgxMC8tMyBpbiAyIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6Ly9z cmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9rbXNjb24vYy9hY2Y5NjUyYjBmNjFlYzkwYWUwMDQy ZTkyYjYyODJjNjVmODlkMGQwP2JyYW5jaD1mNDQKCiAgICAgICAgICAgIExvZzoKICAgICAgICAg ICAgQWRkIGxvY2FsZWN0bCBydW50aW1lIHN1cHBvcnQKClRoaXMgYWxsb3dzIHRvIGNoYW5nZSB0 aGUga2V5Ym9hcmQgbGF5b3V0IGF0IHJ1bnRpbWUgdXNpbmcgbG9jYWxlY3RsLgpPcGVuUUEgc2Ny aXB0cyB1c2UgbG9hZGtleXMgb24gZmJjb24gVlQsIGFuZCBuZWVkIGEgc2ltaWxhcgpmdW5jdGlv bmFsaXR5IG9uIGttc2NvbgoKU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1w ZUByZWRoYXQuY29tPgoKLS0tCmRpZmYgLS1naXQgYS9rbXNjb24uc3BlYyBiL2ttc2Nvbi5zcGVj CmluZGV4IDk0ZTk0ZjUuLjc4NzVjYTkgMTAwNjQ0Ci0tLSBhL2ttc2Nvbi5zcGVjCisrKyBiL2tt c2Nvbi5zcGVjCkBAIC0yMSw3ICsyMSw3IEBAIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcoZnJl ZXR5cGUyKQogQnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyhnYm0pCiBCdWlsZFJlcXVpcmVzOiAg cGtnY29uZmlnKGdsZXN2MikKIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcobGliZHJtKQotQnVp bGRSZXF1aXJlczogIHBrZ2NvbmZpZyhsaWJzeXN0ZW1kKQorQnVpbGRSZXF1aXJlczogIHBrZ2Nv bmZpZyhkYnVzLTEpCiBCdWlsZFJlcXVpcmVzOiAgcGtnY29uZmlnKGxpYnVkZXYpID49IDE3Mgog QnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyhwYW5nbykKIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25m aWcocGFuZ29mdDIpCkBAIC0yOSw2ICsyOSw4IEBAIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWco c3lzdGVtZCkKIEJ1aWxkUmVxdWlyZXM6ICBwa2djb25maWcoeGtiY29tbW9uKSA+PSAwLjUuMAog QnVpbGRSZXF1aXJlczogIHBrZ2NvbmZpZyh6bGliKQogCitQYXRjaDogbG9jYWxlY3RsX3N1cHBv cnQucGF0Y2gKKwogJWRlc2NyaXB0aW9uCiBLbXNjb24gaXMgYSBzaW1wbGUgdGVybWluYWwgZW11 bGF0b3IgYmFzZWQgb24gbGludXgga2VybmVsIG1vZGUgc2V0dGluZyAoS01TKS4KIEl0IGlzIGFu IGF0dGVtcHQgdG8gcmVwbGFjZSB0aGUgaW4ta2VybmVsIFZUIGltcGxlbWVudGF0aW9uIHdpdGgg YSB1c2Vyc3BhY2UKQEAgLTkxLDggKzkzLDYgQEAgbW9kLWdsdGV4LnNvCiAle19iaW5kaXJ9LyV7 bmFtZX0KICV7X2JpbmRpcn0va21zY29uLWxhdW5jaC1ndWkKICV7X2xpYmRpcn0va21zY29uL21v ZC11bmlmb250LnNvCi0lZGlyICV7X2xpYmV4ZWNkaXJ9L2ttc2NvbgotJXtfbGliZXhlY2Rpcn0v a21zY29uL2ttc2NvbgogJXtfbWFuZGlyfS9tYW4xL2ttc2Nvbi4xKgogJXtfbWFuZGlyfS9tYW41 L2ttc2Nvbi5jb25mLjUqCiAle191bml0ZGlyfS9rbXNjb24uc2VydmljZQoKZGlmZiAtLWdpdCBh L2xvY2FsZWN0bF9zdXBwb3J0LnBhdGNoIGIvbG9jYWxlY3RsX3N1cHBvcnQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZkNTE3ZAotLS0gL2Rldi9udWxsCisrKyBi L2xvY2FsZWN0bF9zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMjgwNyBAQAorRnJvbSA1MTlhNTdi ODU0Njk3N2QwMzc4YWM0OTEwNjU3OTdkMzA0MGY5MTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgorRGF0ZTogRnJp LCA1IEp1biAyMDI2IDEyOjA4OjU2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFNxdWFzaGVkIGNv bW1pdCBvZiB0aGUgZm9sbG93aW5nOgorCitjb21taXQgMjFhN2Y0MTI2NmE4ODExNjk2MDk0NTJk M2QzZDc2MjNjMTA0MDRhZQorQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhh dC5jb20+CitEYXRlOiAgIEZyaSBKdW4gNSAxMToxMTo0MiAyMDI2ICswMjAwCisKKyAgICBkYnVz OiBMaXN0ZW4gdG8gbG9jYWxlMSBwcm9wZXJ0eSBjaGFuZ2VzCisKKyAgICBBbmQgdXBkYXRlIHRo ZSBrZXlib2FyZCBsYXlvdXQgYWNjb3JkaW5nbHkuCisKKyAgICBEb24ndCBsaXN0ZW4gdG8gbG9j YWxlMSBwcm9wZXJ0eSBjaGFuZ2VzIGlmIHRoZSBrZXlib2FyZCBsYXlvdXQgd2FzCisgICAgc2V0 IGluIHRoZSBjb25maWcgZmlsZSBvciBpbiBjb21tYW5kIGxpbmUgYXJndW1lbnQuCisKKyAgICBU aGlzIGFsbG93cyB0byB1c2UgYGxvY2FsZWN0bCBzZXQta2V5bWFwYCB0byBjaGFuZ2UgdGhlIGtl eWJvYXJkCisgICAgbGF5b3V0IGF0IHJ1bnRpbWUuCisgICAgT25lIGRpZmZlcmVuY2UgZnJvbSAi bG9hZGtleXMiIGlzIHRoYXQgdGhpcyBpcyBhIHN5c3RlbS13aWRlIHNldHRpbmcsCisgICAgYW5k IHRoYXQgaXQgd2lsbCBhZmZlY3QgYWxsIGttc2NvbiBpbnN0YW5jZSBvbiBhbGwgdHR5LgorCisg ICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgor Citjb21taXQgOTliNWU3ZTg0MDAzNWY5ZjZhNDM3Y2I0ZDFjNTA2YmUwODVjYmQ5MgorQXV0aG9y OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CitEYXRlOiAgIEZyaSBKdW4g NSAxMDo0ODoyMSAyMDI2ICswMjAwCisKKyAgICBjb25mOiBVc2UgTlVMTCBmb3IgZGVmYXVsdCB4 a2IgY29uZmlnIHZhcmlhYmxlCisKKyAgICBUaGlzIGJldHRlciBmaXQgbGlieGtiY29tbW9uIEFQ SQorICAgIFJlbW92ZSB0aGUgd29ya2Fyb3VuZCBpbiBpbnB1dCwgYXMgaXQncyBubyBsb25nZXIg bmVjZXNzYXJ5LgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1w ZUByZWRoYXQuY29tPgorCitjb21taXQgMzAxMDAwOGM1ZDgxMGE3OTRiNDdlMzhiZWZiZDc4MGY0 MDZjNDkwNAorQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CitE YXRlOiAgIEZyaSBKdW4gNSAxMDoyMjowMSAyMDI2ICswMjAwCisKKyAgICBpbnB1dDogQWRkIGlu cHV0X3VwZGF0ZV9rZXltYXAoKSB0byBjaGFuZ2UgdGhlIGtleW1hcCBhdCBydW50aW1lCisKKyAg ICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CisK K2NvbW1pdCBkNzE2ZDcyY2FlNjMzMWU2ODFhMGYwYTM3ZGZhNGFkMmNjNDkzNjZkCitBdXRob3I6 IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KK0RhdGU6ICAgRnJpIEp1biA1 IDEwOjE2OjA5IDIwMjYgKzAyMDAKKworICAgIGlucHV0OiBzcGxpdCBrZXlib2FyZCBsYXlvdXQg YW5kIGNvbXBvc2UgaW5pdGlhbGl6YXRpb24KKworICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4g RmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KKworY29tbWl0IDBkZmZiZDdhMjdkYjdmMjM4 MDZjZmFiMGVjZDUzNjllNWY3YjE1Y2EKK0F1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1w ZUByZWRoYXQuY29tPgorRGF0ZTogICBUaHUgSnVuIDQgMDA6Mzg6MjAgMjAyNiArMDIwMAorCisg ICAgc2Vzc2lvbjogU2ltcGxpZnkgc2Vzc2lvbiBtYW5hZ2VtZW50CisKKyAgICBEaXJlY3RseSBz d2l0Y2ggZnJvbSBvbmUgc2Vzc2lvbiB0byBhbm90aGVyLgorCisgICAgU2lnbmVkLW9mZi1ieTog Sm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgorCitjb21taXQgZmE0MmQ2ZDBh ZGY4MDZhMDUzNDllZmVkY2VhYTgwMWRmNzdhY2E2ZAorQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUg PGpmYWxlbXBlQHJlZGhhdC5jb20+CitEYXRlOiAgIFdlZCBKdW4gMyAxNzozNzo0NyAyMDI2ICsw MjAwCisKKyAgICB0ZXJtaW5hbDogcGFzcyBkaXJlY3RseSB0aGUgc2VhdCBpbnB1dCwgY29uZiwg bmFtZSBhbmQgZWxvb3AKKworICAgIFRoaXMgYXZvaWQgdG8gdXNlIGttc2Nvbl9zZWF0X2dldF94 eHgoKSBmb3IgZWFjaC4KKworICAgIFNpZ25lZC1vZmYtYnk6IEpvY2VseW4gRmFsZW1wZSA8amZh bGVtcGVAcmVkaGF0LmNvbT4KKworY29tbWl0IDIxMDExYjE1NjFjOTE5OWZkYWUyYTE1NjZkMjdl NDNiNjdiY2MwYjYKK0F1dGhvcjogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29t PgorRGF0ZTogICBXZWQgSnVuIDMgMTY6MjQ6MjQgMjAyNiArMDIwMAorCisgICAgc2Vzc2lvbjog UmVtb3ZlIHNlc3Npb24gY2FsbGJhY2sKKworICAgIEFzIHRlcm1pbmFsIHNlc3Npb25zIGFyZSB0 aGUgb25seSBzZXNzaW9uIGF2YWlsYWJsZSwgcmVtb3ZlIHRoZQorICAgIGNhbGxiYWNrcywgYW5k IGNhbGwgZGlyZWN0bHkgdGhlIGNvcnJlc3BvbmRpbmcgdGVybWluYWwgZnVuY3Rpb25zLgorCisg ICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgor Citjb21taXQgMTJjMTA3MmQyNTRlNmIwNDgxOTg1MDYzMGRlZjkwMjhlMGNmOGQxOQorQXV0aG9y OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+CitEYXRlOiAgIFdlZCBKdW4g MyAxMjoyNjoxMyAyMDI2ICswMjAwCisKKyAgICBkdW1teV9zZXNzaW9uOiBSZW1vdmUgZHVtbXkg c2Vzc2lvbnMKKworICAgIEttc2NvbiB3YW50ZWQgdG8gcHJvdmlkZSBkaWZmZXJlbnQgdHlwZSBv ZiBzZXNzaW9uLCBidXQgb25seSB0aGUKKyAgICB0ZXJtaW5hbCBzZXNzaW9uIGlzIHVzZWQuCisg ICAgRHVtbXkgc2Vzc2lvbiBpcyBqdXN0IGEgYmxhY2sgc2NyZWVuLCBzbyBoYXMgbm8gcmVhbCB1 c2FnZS4KKworICAgIExldCdzIGZvY3VzIG9uIHRlcm1pbmFsIHNlc3Npb25zLCBhbmQgcmVtb3Zl IHRoZSBkdW1teSBzZXNzaW9uLgorCisgICAgU2lnbmVkLW9mZi1ieTogSm9jZWx5biBGYWxlbXBl IDxqZmFsZW1wZUByZWRoYXQuY29tPgorCitjb21taXQgYTZlNzgxNTNhNTY5MDY1OWQ5OWU1ODdm ZTc3MGVjYTRiNTZkMDlhZAorQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhh dC5jb20+CitEYXRlOiAgIE1vbiBKdW4gMSAyMzo0MTozMiAyMDI2ICswMjAwCisKKyAgICBSZW1v dmUgc3RhcnR1cCBzY3JpcHQsIGFzIGl0IGlzIG5vIG1vcmUgbmVjZXNzYXJ5CisKKyAgICBrbXNj b24gbm93IHJldHJpZXZlIHhrYiBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRpcmVjdGx5IGZvcm0g ZGJ1cywKKyAgICBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB0aGUgc3RhcnR1cCBzY3JpcHQuCisK KyAgICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+ CisKK2NvbW1pdCAwNmJiNzQxMzI5MmQ3YzU1NmZmYzgxN2JjMzA3NWMzYzNjOTZmYjBjCitBdXRo b3I6IEpvY2VseW4gRmFsZW1wZSA8amZhbGVtcGVAcmVkaGF0LmNvbT4KK0RhdGU6ICAgVGh1IE1h eSAyMSAxODowOTo1MSAyMDI2ICswMjAwCisKKyAgICBVc2UgbGliZGJ1cyBkaXJlY3RseSB0byBn ZXQgbG9jYWxlCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBl QHJlZGhhdC5jb20+CisKK2NvbW1pdCA4NDUwMTY4NGRiN2RkYTYwNjIwOWM0YzdhZTA0ZjdlNjZk OTY0ODA5CitBdXRob3I6IEZhYmlhbiBWb2d0IDxmdm9ndEBzdXNlLmRlPgorRGF0ZTogICBUdWUg SnVuIDIgMTI6MzE6MDUgMjAyNiArMDIwMAorCisgICAgZnJlZXR5cGU6IEVuYWJsZSBsaWdodCBo aW50aW5nCisKKyAgICBOb3QgaGludGluZyBhdCBhbGwgcmVzdWx0cyBpbiBibHVycnkgZWRnZXMs IGVzcGVjaWFsbHkgdmlzaWJsZSB3aXRoIHN0cmFpZ2h0CisgICAgbGluZXMgaW4gY29tbW9uIGNo YXJhY3RlcnMgc3VjaCBhcyAiLVtdIi4KKworICAgIExpZ2h0IGhpbnRpbmcgaW4gRnJlZVR5cGUg aGFzIHRoZSBuaWNlIHByb3BlcnR5IHRoYXQgaXQgb25seSB0cmllcyB0bworICAgIGFsaWduIGVk Z2VzIHZlcnRpY2FsbHksIHNvIHRoZSB3aWR0aCBvZiBnbHlwaHMgZG9lcyBub3QgY2hhbmdlLCBw cmVzZXJ2aW5nCisgICAgbW9ub3NwYWNlbmVzcy4KKworY29tbWl0IGQ3ODlkMWMzNTE3ZDk5N2Yx MjcxYTM4YjQ1OTRjMjk4OThlYWYxOTkKK0F1dGhvcjogRmFiaWFuIFZvZ3QgPGZ2b2d0QHN1c2Uu ZGU+CitEYXRlOiAgIE1vbiBKdW4gMSAxNzowMzo0NyAyMDI2ICswMjAwCisKKyAgICBEZWZpbmUg ZGVmYXVsdCBpc3N1ZSBzZWFyY2ggcGF0aCBpbiBhIHNpbmdsZSBwbGFjZQorCisgICAgSXQgd2Fz IGhhcmRjb2RlZCBpbiBmb3VyIGRpZmZlcmVudCBwbGFjZXMsIG9mIHdoaWNoIG9ubHkgb25lIGhh cyBhbiBhY3R1YWwKKyAgICBlZmZlY3QuIENvbnNvbGlkYXRlIGl0LgorCitjb21taXQgNDRjMGRm MTJmZjIwMmViODQzOTRlYTBjOGUwNTk4OTQ1NjNmZTUwMQorQXV0aG9yOiBBZGFtIER1c2tldHQg PGFkYW0uZHVza2V0dEBhbWFydWxhc29sdXRpb25zLmNvbT4KK0RhdGU6ICAgVGh1IE1heSAyMSAx NjoyNDoyMyAyMDI2ICswMjAwCisKKyAgICBmaXggemxpYiBjcm9zcy1jb21waWxpbmcgZXJyb3Jz CisKKyAgICB6bGliIGNvbXByZXNzaW9uIHdhcyBpbnRyb2R1Y2VkIGluIHZlcnNpb24gOS4zLjMu IEhvd2V2ZXIsIHdoZW4KKyAgICBjcm9zcy1jb21waWxpbmcga21zY29uIGZvciBhbiBhcmNoaXRl Y3R1cmUgb3RoZXIgdGhhbiB4ODZfNjQsIHRoZQorICAgIGdlbnVuaWZvbnQgZXhlY3V0YWJsZSB0 cmllcyB0byB1c2UgdGhlIGJ1aWxkLXN5c3RlbXMgemxpYiBpbnN0ZWFkCisgICAgb2YgdGhlIGhv c3RzIHpsaWIuCisKKyAgICBUaGlzIGxlYWRzIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVyaW5n IGNvbXBpbGluZzoKKyAgICBsaWJ6LnNvOiBlcnJvciBhZGRpbmcgc3ltYm9sczogZmlsZSBpbiB3 cm9uZyBmb3JtYXQKKworICAgIEZpeCB0aGlzIGJ5IGFkZGluZyBhIG5ldyBuYXRpdmUgemxpYiBk ZXBlbmRlbmN5IHNwZWNpZmljYWxseSBmb3IgdGhlCisgICAgZ2VudW5pZm9udCBleGVjdXRhYmxl LgorLS0tCisgUkVBRE1FLm1kICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAtCisgZG9jcy9t YW4va21zY29uLjEueG1sLmluICAgICAgICB8ICAyOSArLQorIGRvY3MvbWFuL2ttc2Nvbi5jb25m LjUueG1sLmluICAgfCAgMTQgLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAg MTAgKy0KKyBtZXNvbi5vcHRpb25zICAgICAgICAgICAgICAgICAgIHwgICA4ICstCisgc2NyaXB0 cy9ldGMva21zY29uLmNvbmYuZXhhbXBsZSB8ICAgMSAtCisgc2NyaXB0cy9rbXNjb24uaW4gICAg ICAgICAgICAgICB8ICA2MyAtLS0tCisgc3JjL2RidXMuYyAgICAgICAgICAgICAgICAgICAgICB8 IDM2OCArKysrKysrKysrKysrKysrKysrCisgc3JjL3trbXNjb25fZHVtbXkuaCA9PiBkYnVzLmh9 ICB8ICA1MyArLS0KKyBzcmMvZm9udC9mb250X2ZyZWV0eXBlLmMgICAgICAgIHwgICA0ICstCisg c3JjL2ZvbnQvbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAgNCArLQorIHNyYy9pbnB1dC9pbnB1 dC5jICAgICAgICAgICAgICAgfCAgNjAgKysrLQorIHNyYy9pbnB1dC9pbnB1dC5oICAgICAgICAg ICAgICAgfCAgIDcgKy0KKyBzcmMvaW5wdXQvaW5wdXRfaW50ZXJuYWwuaCAgICAgIHwgIDEwICst Cisgc3JjL2lucHV0L2lucHV0X3V4a2IuYyAgICAgICAgICB8ICAzMyArLQorIHNyYy9rbXNjb25f Y29uZi5jICAgICAgICAgICAgICAgfCAgMjYgKy0KKyBzcmMva21zY29uX2NvbmYuaCAgICAgICAg ICAgICAgIHwgICA0IC0KKyBzcmMva21zY29uX2R1bW15LmMgICAgICAgICAgICAgIHwgMTU0IC0t LS0tLS0tCisgc3JjL2ttc2Nvbl9pc3N1ZS5jICAgICAgICAgICAgICB8ICAxMCAtCisgc3JjL2tt c2Nvbl9pc3N1ZS5oICAgICAgICAgICAgICB8ICAgOSArCisgc3JjL2ttc2Nvbl9tYWluLmMgICAg ICAgICAgICAgICB8ICAzMyArKworIHNyYy9rbXNjb25fc2VhdC5jICAgICAgICAgICAgICAgfCA2 MDIgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMva21zY29uX3NlYXQuaCAg ICAgICAgICAgICAgIHwgIDQxICstLQorIHNyYy9rbXNjb25fdGVybWluYWwuYyAgICAgICAgICAg fCAgOTggKystLS0tCisgc3JjL2ttc2Nvbl90ZXJtaW5hbC5oICAgICAgICAgICB8ICAzNCArLQor IHNyYy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAgMjUgKy0KKyBzcmMvc2hsL2RsaXN0 LmggICAgICAgICAgICAgICAgIHwgIDEwICsKKyB0ZXN0cy90ZXN0X2lucHV0LmMgICAgICAgICAg ICAgIHwgICA3ICstCisgMjggZmlsZXMgY2hhbmdlZCwgNzUxIGluc2VydGlvbnMoKyksIDk2OCBk ZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA3NTUgc2NyaXB0cy9rbXNjb24uaW4KKyBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2RidXMuYworIHJlbmFtZSBzcmMve2ttc2Nvbl9kdW1teS5oID0+ IGRidXMuaH0gKDUwJSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2ttc2Nvbl9kdW1teS5jCisK K2RpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKK2luZGV4IDg2NzU0MTMuLjNiZjQ5 MTIgMTAwNjQ0CistLS0gYS9SRUFETUUubWQKKysrKyBiL1JFQURNRS5tZAorQEAgLTgyLDggKzgy LDYgQEAgZXhwbGljaXRseSBlbmFibGUgaXQgdmlhIGNvbW1hbmQgbGluZToKKyB8YGZvbnRfZnJl ZXR5cGVgfCBgYXV0b2AgfCBGcmVldHlwZTIgYmFzZWQgc2NhbGFibGUgZm9udCByZW5kZXJlciwg YWxzbyBoYW5kbGUgYml0bWFwIGZvbnRzIHwKKyB8YGZvbnRfcGFuZ29gfCBgYXV0b2AgfCBQYW5n byBiYXNlZCBzY2FsYWJsZSBmb250IHJlbmRlcmVyIHwKKyB8YHJlbmRlcmVyX2dsdGV4YHwgYGF1 dG9gIHwgT3BlbkdMRVN2MiBhY2NlbGVyYXRlZCByZW5kZXJlciB8CistfGBzZXNzaW9uX2R1bW15 YHwgYGF1dG9gIHwgRHVtbXkgZmFsbGJhY2sgc2Vzc2lvbiB8CistfGBzZXNzaW9uX3Rlcm1pbmFs YHwgYGF1dG9gIHwgVGVybWluYWwtZW11bGF0b3Igc2Vzc2lvbnMgfAorIHxgZG9jc2B8YGF1dG9g fCBCdWlsZCBtYW5wYWdlcyBhbmQgZG9jdW1lbnRhdGlvbiB8CisgCisgCitkaWZmIC0tZ2l0IGEv ZG9jcy9tYW4va21zY29uLjEueG1sLmluIGIvZG9jcy9tYW4va21zY29uLjEueG1sLmluCitpbmRl eCAwNTM4MTg2Li4yNWNmMjlhIDEwMDY0NAorLS0tIGEvZG9jcy9tYW4va21zY29uLjEueG1sLmlu CisrKysgYi9kb2NzL21hbi9rbXNjb24uMS54bWwuaW4KK0BAIC0xODcsMTQgKzE4Nyw2IEBACisg ICAgICAgICAgICAgICAgIHNlc3Npb25zIHZpYSBrZXlib2FyZCBpbnB1dC4gKGRlZmF1bHQ6IG9m Zik8L3BhcmE+CisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5Pgor LQorLSAgICAgIDx2YXJsaXN0ZW50cnk+CistICAgICAgICA8dGVybT48b3B0aW9uPi0tdGVybWlu YWwtc2Vzc2lvbjwvb3B0aW9uPjwvdGVybT4KKy0gICAgICAgIDxsaXN0aXRlbT4KKy0gICAgICAg ICAgPHBhcmE+U3RhcnQgYSB0ZXJtaW5hbCBzZXNzaW9uIGFmdGVyIHNldHVwIGlzIGRvbmUuCist ICAgICAgICAgICAgICAgIChkZWZhdWx0OiBvbik8L3BhcmE+CistICAgICAgICA8L2xpc3RpdGVt PgorLSAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAKKyAgICAg PHBhcmE+VGVybWluYWwgT3B0aW9uczo8L3BhcmE+CitAQCAtNDYzLDE0ICs0NTUsNiBAQAorICAg ICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAKKy0gICAgICA8dmFy bGlzdGVudHJ5PgorLSAgICAgICAgPHRlcm0+PG9wdGlvbj4tLWdyYWItc2Vzc2lvbi1kdW1teSB7 Z3JhYn08L29wdGlvbj48L3Rlcm0+CistICAgICAgICA8bGlzdGl0ZW0+CistICAgICAgICAgIDxw YXJhPlN3aXRjaCB0byBhIGR1bW15IHNlc3Npb24gKGJsYW5rIHNjcmVlbikuCistICAgICAgICAg ICAgICAgIChkZWZhdWx0OiAmbHQ7Q3RybCZndDsmbHQ7TG9nbyZndDtFc2NhcGUpPC9wYXJhPgor LSAgICAgICAgPC9saXN0aXRlbT4KKy0gICAgICA8L3Zhcmxpc3RlbnRyeT4KKy0KKyAgICAgICA8 dmFybGlzdGVudHJ5PgorICAgICAgICAgPHRlcm0+PG9wdGlvbj4tLWdyYWItc2Vzc2lvbi1jbG9z ZSB7Z3JhYn08L29wdGlvbj48L3Rlcm0+CisgICAgICAgICA8bGlzdGl0ZW0+CitAQCAtODg2LDE2 ICs4NzAsMTEgQEAKKyAgIDxyZWZzZWN0MT4KKyAgICAgPHRpdGxlPlNlc3Npb25zPC90aXRsZT4K KyAgICAgPHBhcmE+SWYgS01TQ09OIGlzIGFjdGl2ZSBvbiBhIHNlYXQsIHRoZSBpbnRlcm5hbCBz ZXNzaW9uLW1hbmFnZXIgaXMgd29rZW4KKy0gICAgICAgICAgdXAuIEF0IG1vc3QgdGltZXMsIG9u bHkgdGhlIHRlcm1pbmFsLXNlc3Npb24gaXMgYWN0aXZlLCBidXQgS01TQ09OIGNhbgorLSAgICAg ICAgICBhbHNvIHN1cHBvcnQgYW55IG90aGVyIHNlc3Npb24gdHlwZS4gWW91IGNhbiBzd2l0Y2gg YmV0d2VlbiBzZXNzaW9ucworLSAgICAgICAgICB3aXRoIGtleWJvYXJkLXNob3J0Y3V0cyBhbmQg eW91IGNhbiBjcmVhdGUvZGVzdHJveSBzZXNzaW9ucyBkdXJpbmcKKy0gICAgICAgICAgcnVudGlt ZS48L3BhcmE+CistCistICAgIDxwYXJhPkR1bW15IHNlc3Npb25zIHNpbXBseSBzaG93IGEgYmxh Y2sgc2NyZWVuIGFuZCBhcmUgdXNlZCBpZiBubyBvdGhlcgorLSAgICAgICAgICBzZXNzaW9uIGlz IGF2YWlsYWJsZS4gT3RoZXJ3aXNlLCBkdW1teSBzZXNzaW9ucyBhcmUgaGlkZGVuIGZyb20gdGhl CistICAgICAgICAgIHVzZXIgc28gdGhleSBjYW5ub3Qgc3dpdGNoIHRvIGl0LjwvcGFyYT4KKysg ICAgICAgICAgdXAuIEF0IG1vc3QgdGltZXMsIG9ubHkgdGhlIHRlcm1pbmFsLXNlc3Npb24gaXMg YWN0aXZlLiBZb3UgY2FuIHN3aXRjaAorKyAgICAgICAgICBiZXR3ZWVuIHNlc3Npb25zIHdpdGgg a2V5Ym9hcmQtc2hvcnRjdXRzIGFuZCB5b3UgY2FuIGNyZWF0ZS9kZXN0cm95CisrICAgICAgICAg IHRlcm1pbmFsIHNlc3Npb25zIGR1cmluZyBydW50aW1lLjwvcGFyYT4KKyAKKy0gICAgPHBhcmE+ VGVybWluYWwgc2Vzc2lvbnMgcHJvdmlkZSBhIHRlcm1pbmFsIGVtdWxhdG9yLiBUaGV5IGFyZSB0 aGUgbWFpbgorKyAgICA8cGFyYT5UZXJtaW5hbCBzZXNzaW9ucyBwcm92aWRlIGEgdGVybWluYWwg ZW11bGF0b3IuIFRoZXkgYXJlIHRoZSBvbmx5CisgICAgICAgICAgIHNlc3Npb24gdHlwZSBhbmQg cHJvdmlkZSBhbGwgdGhlIHRlcm1pbmFsLWVtdWxhdGlvbgorICAgICAgICAgICBmdW5jdGlvbmFs aXR5LjwvcGFyYT4KKyAgIDwvcmVmc2VjdDE+CitkaWZmIC0tZ2l0IGEvZG9jcy9tYW4va21zY29u LmNvbmYuNS54bWwuaW4gYi9kb2NzL21hbi9rbXNjb24uY29uZi41LnhtbC5pbgoraW5kZXggZGNh MDU2ZC4uOGFmNDU4MCAxMDA2NDQKKy0tLSBhL2RvY3MvbWFuL2ttc2Nvbi5jb25mLjUueG1sLmlu CisrKysgYi9kb2NzL21hbi9rbXNjb24uY29uZi41LnhtbC5pbgorQEAgLTE2MSwxMyArMTYxLDYg QEAgZm9udC1uYW1lPVVidW50dSBNb25vCisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwv dmFybGlzdGVudHJ5PgorIAorLSAgICAgIDx2YXJsaXN0ZW50cnk+CistICAgICAgICA8dGVybT48 b3B0aW9uPnRlcm1pbmFsLXNlc3Npb248L29wdGlvbj48L3Rlcm0+CistICAgICAgICA8bGlzdGl0 ZW0+CistICAgICAgICAgIDxwYXJhPkVuYWJsZSB0ZXJtaW5hbCBzZXNzaW9uLiAoZGVmYXVsdDog b24pPC9wYXJhPgorLSAgICAgICAgPC9saXN0aXRlbT4KKy0gICAgICA8L3Zhcmxpc3RlbnRyeT4K Ky0KKyAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgPHRlcm0+PG9wdGlvbj5sb2dpbjwv b3B0aW9uPjwvdGVybT4KKyAgICAgICAgIDxsaXN0aXRlbT4KK0BAIC0zNjgsMTMgKzM2MSw2IEBA IGZvbnQtbmFtZT1VYnVudHUgTW9ubworICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8L3Zh cmxpc3RlbnRyeT4KKyAKKy0gICAgICA8dmFybGlzdGVudHJ5PgorLSAgICAgICAgPHRlcm0+PG9w dGlvbj5ncmFiLXNlc3Npb24tZHVtbXk8L29wdGlvbj48L3Rlcm0+CistICAgICAgICA8bGlzdGl0 ZW0+CistICAgICAgICAgIDxwYXJhPlN3aXRjaCB0byBkdW1teSBzZXNzaW9uLiAoZGVmYXVsdDog Jmx0O0N0cmwmZ3Q7Jmx0O0xvZ28mZ3Q7RXNjYXBlKTwvcGFyYT4KKy0gICAgICAgIDwvbGlzdGl0 ZW0+CistICAgICAgPC92YXJsaXN0ZW50cnk+CistCisgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgICAgIDx0ZXJtPjxvcHRpb24+Z3JhYi1zZXNzaW9uLWNsb3NlPC9vcHRpb24+PC90ZXJtPgor ICAgICAgICAgPGxpc3RpdGVtPgorZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVp bGQKK2luZGV4IGRlODlkNzIuLjFhYTcyZjIgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysr IGIvbWVzb24uYnVpbGQKK0BAIC01Myw2ICs1Myw3IEBAIGxpYnVkZXZfZGVwcyA9IGRlcGVuZGVu Y3koJ2xpYnVkZXYnLCB2ZXJzaW9uOiAnPj0xNzInKQorIGRsX2RlcHMgPSBkZXBlbmRlbmN5KCdk bCcpCisgdGhyZWFkc19kZXBzID0gZGVwZW5kZW5jeSgndGhyZWFkcycpCisgemxpYl9kZXBzID0g ZGVwZW5kZW5jeSgnemxpYicpCisremxpYl9kZXBzX25hdGl2ZSA9IGRlcGVuZGVuY3koJ3psaWIn LCBuYXRpdmU6IHRydWUpCisgCisgcHl0aG9uID0gZmluZF9wcm9ncmFtKCdweXRob24zJykKKyAK K0BAIC03NSw2ICs3Niw3IEBAIGdsZXN2Ml9kZXBzID0gZGVwZW5kZW5jeSgnZ2xlc3YyJywgZGlz YWJsZXI6IHRydWUsIHJlcXVpcmVkOiByZXF1aXJlX2dsZXN2MikKKyBwYW5nb19kZXBzID0gZGVw ZW5kZW5jeSgncGFuZ29mdDInLCBkaXNhYmxlcjogdHJ1ZSwgcmVxdWlyZWQ6IGdldF9vcHRpb24o J2ZvbnRfcGFuZ28nKSkKKyBmcmVldHlwZV9kZXBzID0gZGVwZW5kZW5jeSgnZnJlZXR5cGUyJywg ZGlzYWJsZXI6IHRydWUsIHJlcXVpcmVkOiBnZXRfb3B0aW9uKCdmb250X2ZyZWV0eXBlJykpCisg Zm9udGNvbmZpZ19kZXBzID0gZGVwZW5kZW5jeSgnZm9udGNvbmZpZycsIGRpc2FibGVyOiB0cnVl LCByZXF1aXJlZDogZ2V0X29wdGlvbignZm9udF9mcmVldHlwZScpKQorK2RidXNfZGVwcyA9IGRl cGVuZGVuY3koJ2RidXMtMScsIGRpc2FibGVyOiB0cnVlLCByZXF1aXJlZDogZ2V0X29wdGlvbign ZGJ1cycpKQorIHhzbHRwcm9jID0gZmluZF9wcm9ncmFtKCd4c2x0cHJvYycsIG5hdGl2ZTogdHJ1 ZSwgZGlzYWJsZXI6IHRydWUsIHJlcXVpcmVkOiBnZXRfb3B0aW9uKCdkb2NzJykpCisgY2hlY2tf ZGVwcyA9IGRlcGVuZGVuY3koJ2NoZWNrJywgZGlzYWJsZXI6IHRydWUsIHJlcXVpcmVkOiBnZXRf b3B0aW9uKCd0ZXN0cycpKQorIHRpYyA9IGZpbmRfcHJvZ3JhbSgndGljJywgcmVxdWlyZWQ6IGZh bHNlKQorQEAgLTg5LDcgKzkxLDYgQEAgc2VjdGlvbnMgPSB7CisgICAndmlkZW8nOiAnVmlkZW8g QmFja2VuZHMnLAorICAgJ2ZvbnQnOiAnRm9udCBCYWNrZW5kcycsCisgICAncmVuZGVyZXInOiAn UmVuZGVyZXJzJywKKy0gICdzZXNzaW9uJzogJ1Nlc3Npb24gVHlwZXMnLAorIH0KKyBjb25maWcg PSBjb25maWd1cmF0aW9uX2RhdGEoKQorICMgTm90ZToga2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0 aGUgZGVwZW5kZW5jaWVzIGFib3ZlCitAQCAtMTAyLDggKzEwMyw3IEBAIGZvcmVhY2ggbmFtZSwg cmVxcyA6IHsKKyAgICdmb250X3VuaWZvbnQnOiBbXSwKKyAgICdmb250X2ZyZWV0eXBlJzogW2Zy ZWV0eXBlX2RlcHMsIGZvbnRjb25maWdfZGVwc10sCisgICAnZm9udF9wYW5nbyc6IFtwYW5nb19k ZXBzXSwKKy0gICdzZXNzaW9uX2R1bW15JzogW10sCistICAnc2Vzc2lvbl90ZXJtaW5hbCc6IFtd LAorKyAgJ2RidXMnOiBbZGJ1c19kZXBzXSwKKyB9CisgICBmb3VuZCA9IHRydWUKKyAgIGZvcmVh Y2ggcmVxIDogcmVxcworQEAgLTE5NSwxMCArMTk1LDYgQEAgZWxzZQorICAgZGlyc19pbmZvLnNl dCgnUEFNX0NGRycsICcnKQorIGVuZGlmCisgZm9yZWFjaCBmaWxlbmFtZSwga3dhcmdzIDogewor LSAgJ3NjcmlwdHMva21zY29uLmluJzogeworLSAgICAnaW5zdGFsbF9kaXInOiBiaW5kaXIsCist ICAgICdpbnN0YWxsX21vZGUnOiAncnd4ci14ci14JywKKy0gIH0sCisgICAnc2NyaXB0cy9rbXNj b24tbGF1bmNoLWd1aS5zaCc6IHsKKyAgICAgJ2luc3RhbGxfZGlyJzogYmluZGlyLAorICAgICAn aW5zdGFsbF9tb2RlJzogJ3J3eHIteHIteCcsCitkaWZmIC0tZ2l0IGEvbWVzb24ub3B0aW9ucyBi L21lc29uLm9wdGlvbnMKK2luZGV4IDVjYWZhNjAuLmFmYTViMzIgMTAwNjQ0CistLS0gYS9tZXNv bi5vcHRpb25zCisrKysgYi9tZXNvbi5vcHRpb25zCitAQCAtMjksOCArMjksNiBAQCBvcHRpb24o J2ZvbnRfZnJlZXR5cGUnLCB0eXBlOiAnZmVhdHVyZScsIHZhbHVlOiAnYXV0bycsCisgb3B0aW9u KCdmb250X3BhbmdvJywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAorICAgZGVzY3Jp cHRpb246ICdwYW5nbyBmb250IGJhY2tlbmQnKQorIAorLSMga21zY29uIHNlc3Npb25zCistb3B0 aW9uKCdzZXNzaW9uX2R1bW15JywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAorLSAg ZGVzY3JpcHRpb246ICdkdW1teSBzZXNzaW9uJykKKy1vcHRpb24oJ3Nlc3Npb25fdGVybWluYWwn LCB0eXBlOiAnZmVhdHVyZScsIHZhbHVlOiAnYXV0bycsCistICBkZXNjcmlwdGlvbjogJ3Rlcm1p bmFsIHNlc3Npb24nKQorKyMgZGJ1cyBpbnRlZ3JhdGlvbgorK29wdGlvbignZGJ1cycsIHR5cGU6 ICdmZWF0dXJlJywgdmFsdWU6ICdhdXRvJywKKysgIGRlc2NyaXB0aW9uOiAnZGJ1cyBpbnRlZ3Jh dGlvbicpCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9ldGMva21zY29uLmNvbmYuZXhhbXBsZSBiL3Nj cmlwdHMvZXRjL2ttc2Nvbi5jb25mLmV4YW1wbGUKK2luZGV4IGNhMjIzMmUuLmJlNDVhNGEgMTAw NjQ0CistLS0gYS9zY3JpcHRzL2V0Yy9rbXNjb24uY29uZi5leGFtcGxlCisrKysgYi9zY3JpcHRz L2V0Yy9rbXNjb24uY29uZi5leGFtcGxlCitAQCAtNjYsNyArNjYsNiBAQAorICNncmFiLXpvb20t b3V0PTxDdHJsPk1pbnVzCisgI2dyYWItc2Vzc2lvbi1uZXh0PTxDdHJsPjxMb2dvPlJpZ2h0Cisg I2dyYWItc2Vzc2lvbi1wcmV2PTxDdHJsPjxMb2dvPkxlZnQKKy0jZ3JhYi1zZXNzaW9uLWR1bW15 PTxDdHJsPjxMb2dvPkVzY2FwZQorICNncmFiLXNlc3Npb24tY2xvc2U9PEN0cmw+PExvZ28+QmFj a1NwYWNlCisgI2dyYWItdGVybWluYWwtbmV3PTxDdHJsPjxMb2dvPlJldHVybgorICNncmFiLXJv dGF0ZS1jdz08TG9nbz5QbHVzCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9rbXNjb24uaW4gYi9zY3Jp cHRzL2ttc2Nvbi5pbgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CitpbmRleCA2NTQ1Mzk5Li4w MDAwMDAwCistLS0gYS9zY3JpcHRzL2ttc2Nvbi5pbgorKysrIC9kZXYvbnVsbAorQEAgLTEsNjMg KzAsMCBAQAorLSMhL2Jpbi9zaAorLSMKKy0jIENvcHlyaWdodCAoYykgMjAxOCBBZXRmIDxhZXRm QHVubGltaXRlZGNvZGV3b3Jrcy54eXo+CistIyBDb3B5cmlnaHQgKGMpIDIwMTggRmFiaWFuIFZv Z3QgPGZ2b2d0QHN1c2UuY29tPgorLSMKKy0jIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKy0jIG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLCB0byBkZWFsCistIyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCistIyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBz ZWxsCistIyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUgU29mdHdhcmUgaXMKKy0jIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CistIworLSMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCist IyBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorLSMKKy0j IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCistIyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKy0jIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM IFRIRQorLSMgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorLSMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKy0jIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MgSU4gVEhFCistIyBTT0ZUV0FSRS4KKy0KKy0jIGNvbmZpZ3VyYXRpb24gcGF0aAor LWhlbHBlcmRpcj1AbGliZXhlY2RpckAKKy0KKy0jIEdldCBhIHByb3BlcnR5IGZyb20gb3JnLmZy ZWVkZXNrdG9wLmxvY2FsZTEKKy1xdWVyeUxvY2FsZWRidXMoKSB7CistICAgIGRidXMtc2VuZCAt LXN5c3RlbSAtLXByaW50LXJlcGx5PWxpdGVyYWwgLS1kZXN0PW9yZy5mcmVlZGVza3RvcC5sb2Nh bGUxIC9vcmcvZnJlZWRlc2t0b3AvbG9jYWxlMSBvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0 aWVzLkdldCAic3RyaW5nOm9yZy5mcmVlZGVza3RvcC5sb2NhbGUxIiAic3RyaW5nOlgxMSQxIiAy Pi9kZXYvbnVsbCB8IGF3ayAne3ByaW50ICQyfScKKy19CistCistcXVlcnlMb2NhbGVjdGwoKSB7 CistICAgIGxvY2FsZWN0bCBzdGF0dXMgfCBhd2sgIi9YMTEgJDEvIHtwcmludCBcJDN9IgorLX0K Ky0KKy0jIFF1ZXJ5IGFuZCBzZXR1cCBzeXN0ZW0gbG9jYWxlIHNldHRpbmdzIGJlZm9yZSBzdGFy dCBrbXNjb24KKy1zZXR1cExvY2FsZSgpIHsKKy0gICAgIyBEb24ndCBvdmVycmlkZSBleGlzdGlu ZyB2YWx1ZXMuIEFsc28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gc2V0dGluZyBvbmx5IHNvbWUgb2Yg dGhlbQorLSAgICAjIGFzIHRoZW4gdGhleSB3b3VsZCBub3QgbWF0Y2ggYW55bW9yZS4KKy0gICAg aWYgdGVzdCAtbiAiJHtYS0JfREVGQVVMVF9NT0RFTH0iIC1vIC1uICIke1hLQl9ERUZBVUxUX0xB WU9VVH0iIC1vIC1uICIke1hLQl9ERUZBVUxUX1ZBUklBTlR9IiAtbyAtbiAiJHtYS0JfREVGQVVM VF9PUFRJT05TfSI7IHRoZW4KKy0gICAgICAgIHJldHVybgorLSAgICBmaQorLQorLSAgICBpZiBj b21tYW5kIC12IGRidXMtc2VuZCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCistICAgICAg ICBxdWVyeWNtZD0icXVlcnlMb2NhbGVkYnVzIgorLSAgICBlbGlmIGNvbW1hbmQgLXYgbG9jYWxl Y3RsID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKy0gICAgICAgIHF1ZXJ5Y21kPSJxdWVy eUxvY2FsZWN0bCIKKy0gICAgZWxzZQorLSAgICAgICAgcmV0dXJuCistICAgIGZpCistCistICAg IFgxMU1PREVMPSIkKCR7cXVlcnljbWR9IE1vZGVsKSIKKy0gICAgWDExTEFZT1VUPSIkKCR7cXVl cnljbWR9IExheW91dCkiCistICAgIFgxMVZBUklBTlQ9IiQoJHtxdWVyeWNtZH0gVmFyaWFudCki CistICAgIFgxMU9QVElPTlM9IiQoJHtxdWVyeWNtZH0gT3B0aW9ucykiCistICAgIFsgLW4gIiR7 WDExTU9ERUx9IiBdICYmIGV4cG9ydCBYS0JfREVGQVVMVF9NT0RFTD0iJHtYMTFNT0RFTH0iCist ICAgIFsgLW4gIiR7WDExTEFZT1VUfSIgXSAmJiBleHBvcnQgWEtCX0RFRkFVTFRfTEFZT1VUPSIk e1gxMUxBWU9VVH0iCistICAgIFsgLW4gIiR7WDExVkFSSUFOVH0iIF0gJiYgZXhwb3J0IFhLQl9E RUZBVUxUX1ZBUklBTlQ9IiR7WDExVkFSSUFOVH0iCistICAgIFsgLW4gIiR7WDExT1BUSU9OU30i IF0gJiYgZXhwb3J0IFhLQl9ERUZBVUxUX09QVElPTlM9IiR7WDExT1BUSU9OU30iCistfQorLQor LXNldHVwTG9jYWxlCistZXhlYyAke2hlbHBlcmRpcn0va21zY29uICIkQCIKK2RpZmYgLS1naXQg YS9zcmMvZGJ1cy5jIGIvc3JjL2RidXMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjg0YzQ2N2QKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9kYnVzLmMKK0BAIC0wLDAg KzEsMzY4IEBACisrLyoKKysgKiBkYnVzIC0gRC1CdXMgc3VwcG9ydAorKyAqCisrICogQ29weXJp Z2h0IChjKSAyMDI2IFJlZCBIYXQuCisrICogQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxl bXBlQHJlZGhhdC5jb20+CisrICoKKysgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKysgKiBhIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzCisrICogKHRoZSAi U29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nCisrICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorKyAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworKyAqIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 bworKyAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKysgKgorKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk CisrICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuCisrICoKKysgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworKyAqIE9SIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKysgKiBNRVJDSEFOVEFCSUxJVFks IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisr ICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkKKysgKiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAorKyAqIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisrICogU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisrICovCisr CisrI2luY2x1ZGUgPGRidXMvZGJ1cy5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRl IDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgImRidXMuaCIK KysjaW5jbHVkZSAic2hsL2Vsb29wLmgiCisrI2luY2x1ZGUgInNobC9sb2cuaCIKKysKKysjZGVm aW5lIExPR19TVUJTWVNURU0gImRidXMiCisrCisrc3RydWN0IHJtbHZvIHsKKysJY29uc3QgY2hh ciAqbW9kZWw7CisrCWNvbnN0IGNoYXIgKmxheW91dDsKKysJY29uc3QgY2hhciAqdmFyaWFudDsK KysJY29uc3QgY2hhciAqb3B0aW9uczsKKyt9OworKworK3N0cnVjdCBrbXNjb25fZGJ1cyB7Cisr CURCdXNDb25uZWN0aW9uICpjb25uOworKwlzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wOworKwlzdHJ1 Y3QgZXZfZmQgKndhdGNoX2ZkOworKwlkYnVzX3VwZGF0ZV94a2JfbGF5b3V0X2NiIGNiOworKwl2 b2lkICpkYXRhOworK307CisrCisrc3RhdGljIHZvaWQgc2V0X2Vudl9mcm9tX2xvY2FsZTFfcHJv cGVydGllcyhEQnVzQ29ubmVjdGlvbiAqY29ubiwgY29uc3QgY2hhciAqcHJvcGVydHlfbmFtZSwK KysJCQkJCSAgICBjb25zdCBjaGFyICplbnZfbmFtZSkKKyt7CisrCURCdXNFcnJvciBlcnJvcjsK KysJREJ1c01lc3NhZ2UgKm1zZzsKKysJREJ1c01lc3NhZ2UgKnJlcGx5OworKwlEQnVzTWVzc2Fn ZUl0ZXIgYXJncywgdmFyaWFudF9pdGVyOworKwljb25zdCBjaGFyICppbnRlcmZhY2VfbmFtZSA9 ICJvcmcuZnJlZWRlc2t0b3AubG9jYWxlMSI7CisrCWNoYXIgKnZhbHVlID0gTlVMTDsKKysKKysJ ZGJ1c19lcnJvcl9pbml0KCZlcnJvcik7CisrCisrCW1zZyA9IGRidXNfbWVzc2FnZV9uZXdfbWV0 aG9kX2NhbGwoIm9yZy5mcmVlZGVza3RvcC5sb2NhbGUxIiwgIi9vcmcvZnJlZWRlc2t0b3AvbG9j YWxlMSIsCisrCQkJCQkgICAib3JnLmZyZWVkZXNrdG9wLkRCdXMuUHJvcGVydGllcyIsICJHZXQi KTsKKysJaWYgKCFtc2cpCisrCQlyZXR1cm47CisrCisrCWRidXNfbWVzc2FnZV9pdGVyX2luaXRf YXBwZW5kKG1zZywgJmFyZ3MpOworKwlpZiAoIWRidXNfbWVzc2FnZV9pdGVyX2FwcGVuZF9iYXNp YygmYXJncywgREJVU19UWVBFX1NUUklORywgJmludGVyZmFjZV9uYW1lKSB8fAorKwkgICAgIWRi dXNfbWVzc2FnZV9pdGVyX2FwcGVuZF9iYXNpYygmYXJncywgREJVU19UWVBFX1NUUklORywgJnBy b3BlcnR5X25hbWUpKSB7CisrCQlkYnVzX21lc3NhZ2VfdW5yZWYobXNnKTsKKysJCXJldHVybjsK KysJfQorKworKwlyZXBseSA9IGRidXNfY29ubmVjdGlvbl9zZW5kX3dpdGhfcmVwbHlfYW5kX2Js b2NrKGNvbm4sIG1zZywgMjAwMCwgJmVycm9yKTsKKysJZGJ1c19tZXNzYWdlX3VucmVmKG1zZyk7 CisrCisrCWlmIChkYnVzX2Vycm9yX2hhc19uYW1lKCZlcnJvciwgREJVU19FUlJPUl9VTktOT1dO X0lOVEVSRkFDRSkgfHwKKysJICAgIGRidXNfZXJyb3JfaGFzX25hbWUoJmVycm9yLCBEQlVTX0VS Uk9SX1VOS05PV05fUFJPUEVSVFkpKSB7CisrCQkvKiBUaGlzIGlzIG5vcm1hbCBpZiB0aGUgaW50 ZXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbSAqLworKwkJZGJ1c19lcnJvcl9m cmVlKCZlcnJvcik7CisrCQlyZXR1cm47CisrCX0gZWxzZSBpZiAoZGJ1c19lcnJvcl9pc19zZXQo JmVycm9yKSkgeworKwkJbG9nX3dhcm5pbmcoImRidXMgZXJyb3I6ICVzIC8gJXMiLCBlcnJvci5u YW1lLCBlcnJvci5tZXNzYWdlKTsKKysJCWRidXNfZXJyb3JfZnJlZSgmZXJyb3IpOworKwkJcmV0 dXJuOworKwl9IGVsc2UgaWYgKCFyZXBseSkgeworKwkJbG9nX3dhcm5pbmcoIm5vIHJlcGx5IGZy b20gZGJ1cyIpOworKwkJcmV0dXJuOworKwl9CisrCisrCWlmICghZGJ1c19tZXNzYWdlX2l0ZXJf aW5pdChyZXBseSwgJmFyZ3MpKSB7CisrCQlsb2dfZGVidWcoIlJlcGx5IG1lc3NhZ2UgaGFzIG5v IGFyZ3VtZW50cy5cbiIpOworKwl9IGVsc2UgaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdf dHlwZSgmYXJncykgIT0gREJVU19UWVBFX1ZBUklBTlQpIHsKKysJCWxvZ19kZWJ1ZygiUmVwbHkg YXJndW1lbnQgaXMgbm90IGEgdmFyaWFudC5cbiIpOworKwl9IGVsc2UgeworKwkJZGJ1c19tZXNz YWdlX2l0ZXJfcmVjdXJzZSgmYXJncywgJnZhcmlhbnRfaXRlcik7CisrCisrCQlpZiAoZGJ1c19t ZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKCZ2YXJpYW50X2l0ZXIpID09IERCVVNfVFlQRV9TVFJJ TkcpIHsKKysJCQlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMoJnZhcmlhbnRfaXRlciwgJnZh bHVlKTsKKysJCQlpZiAoc3RybGVuKHZhbHVlKSA+IDApIHsKKysJCQkJc2V0ZW52KGVudl9uYW1l LCB2YWx1ZSwgMCk7CisrCQkJCWxvZ19kZWJ1ZygiU2V0ICVzIHRvICVzXG4iLCBlbnZfbmFtZSwg dmFsdWUpOworKwkJCX0KKysJCX0gZWxzZSB7CisrCQkJbG9nX2RlYnVnKCJVbmV4cGVjdGVkIGlu bmVyIGRhdGEgdHlwZSBpbiB2YXJpYW50LlxuIik7CisrCQl9CisrCX0KKysKKysJZGJ1c19tZXNz YWdlX3VucmVmKHJlcGx5KTsKKysJcmV0dXJuOworK30KKysKKytzdGF0aWMgYm9vbCBpc194a2Jf ZW52X3NldCh2b2lkKQorK3sKKysJcmV0dXJuIGdldGVudigiWEtCX0RFRkFVTFRfTU9ERUwiKSB8 fCBnZXRlbnYoIlhLQl9ERUZBVUxUX0xBWU9VVCIpIHx8CisrCSAgICAgICBnZXRlbnYoIlhLQl9E RUZBVUxUX1ZBUklBTlQiKSB8fCBnZXRlbnYoIlhLQl9ERUZBVUxUX09QVElPTlMiKTsKKyt9Cisr CisrLyogVGhpcyBpcyBjYWxsZWQgb25jZSBhdCBzdGFydHVwIHRvIHNldCB0aGUgWEtCIGVudmly b25tZW50IHZhcmlhYmxlcyBmcm9tIHRoZSBsb2NhbGUxIHByb3BlcnRpZXMuCisrICovCisrdm9p ZCBrbXNjb25fZGJ1c19zZXRfeGtiX2Vudl9mcm9tX2xvY2FsZTEoc3RydWN0IGttc2Nvbl9kYnVz ICpkYnVzKQorK3sKKysJREJ1c0Vycm9yIGVycm9yOworKworKwlpZiAoaXNfeGtiX2Vudl9zZXQo KSkKKysJCXJldHVybjsKKysKKysJZGJ1c19lcnJvcl9pbml0KCZlcnJvcik7CisrCisrCXNldF9l bnZfZnJvbV9sb2NhbGUxX3Byb3BlcnRpZXMoZGJ1cy0+Y29ubiwgIlgxMU1vZGVsIiwgIlhLQl9E RUZBVUxUX01PREVMIik7CisrCXNldF9lbnZfZnJvbV9sb2NhbGUxX3Byb3BlcnRpZXMoZGJ1cy0+ Y29ubiwgIlgxMUxheW91dCIsICJYS0JfREVGQVVMVF9MQVlPVVQiKTsKKysJc2V0X2Vudl9mcm9t X2xvY2FsZTFfcHJvcGVydGllcyhkYnVzLT5jb25uLCAiWDExVmFyaWFudCIsICJYS0JfREVGQVVM VF9WQVJJQU5UIik7CisrCXNldF9lbnZfZnJvbV9sb2NhbGUxX3Byb3BlcnRpZXMoZGJ1cy0+Y29u biwgIlgxMU9wdGlvbnMiLCAiWEtCX0RFRkFVTFRfT1BUSU9OUyIpOworK30KKysKKytzdHJ1Y3Qg a21zY29uX2RidXMgKmttc2Nvbl9kYnVzX25ldyhzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wKQorK3sK KysJc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzOworKwlEQnVzRXJyb3IgZXJyb3I7CisrCisrCWRi dXMgPSBtYWxsb2Moc2l6ZW9mKCpkYnVzKSk7CisrCWlmICghZGJ1cykKKysJCXJldHVybiBOVUxM OworKwltZW1zZXQoZGJ1cywgMCwgc2l6ZW9mKCpkYnVzKSk7CisrCisrCWRidXMtPmVsb29wID0g ZWxvb3A7CisrCisrCWRidXNfZXJyb3JfaW5pdCgmZXJyb3IpOworKwlkYnVzLT5jb25uID0gZGJ1 c19idXNfZ2V0KERCVVNfQlVTX1NZU1RFTSwgJmVycm9yKTsKKysJaWYgKGRidXNfZXJyb3JfaXNf c2V0KCZlcnJvcikpIHsKKysJCWxvZ19kZWJ1ZygiQ29ubmVjdGlvbiBFcnJvcjogJXNcbiIsIGVy cm9yLm1lc3NhZ2UpOworKwkJZGJ1c19lcnJvcl9mcmVlKCZlcnJvcik7CisrCQlyZXR1cm4gTlVM TDsKKysJfQorKwlyZXR1cm4gZGJ1czsKKyt9CisrCisrdm9pZCBrbXNjb25fZGJ1c19mcmVlKHN0 cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cykKKyt7CisrCWlmICghZGJ1cykKKysJCXJldHVybjsKKysJ ZGJ1c19jb25uZWN0aW9uX3VucmVmKGRidXMtPmNvbm4pOworKwlmcmVlKGRidXMpOworK30KKysK KytzdGF0aWMgdm9pZCBzZXRfcm1sdm9fcHJvcGVydHkoc3RydWN0IHJtbHZvICpybWx2bywgY29u c3QgY2hhciAqcHJvcGVydHlfbmFtZSwKKysJCQkgICAgICAgY29uc3QgY2hhciAqcHJvcGVydHlf dmFsdWUpCisreworKwlpZiAoIXN0cmNtcChwcm9wZXJ0eV9uYW1lLCAiWDExTW9kZWwiKSkgewor KwkJcm1sdm8tPm1vZGVsID0gcHJvcGVydHlfdmFsdWU7CisrCX0gZWxzZSBpZiAoIXN0cmNtcChw cm9wZXJ0eV9uYW1lLCAiWDExTGF5b3V0IikpIHsKKysJCXJtbHZvLT5sYXlvdXQgPSBwcm9wZXJ0 eV92YWx1ZTsKKysJfSBlbHNlIGlmICghc3RyY21wKHByb3BlcnR5X25hbWUsICJYMTFWYXJpYW50 IikpIHsKKysJCXJtbHZvLT52YXJpYW50ID0gcHJvcGVydHlfdmFsdWU7CisrCX0gZWxzZSBpZiAo IXN0cmNtcChwcm9wZXJ0eV9uYW1lLCAiWDExT3B0aW9ucyIpKSB7CisrCQlybWx2by0+b3B0aW9u cyA9IHByb3BlcnR5X3ZhbHVlOworKwl9CisrfQorKworKy8qIFBhcnNlIHRoZSBsb2NhbGUxIHBy b3BlcnRpZXMgY2hhbmdlZCBtZXNzYWdlIGFuZCB1cGRhdGUgdGhlIHJtbHZvIHN0cnVjdCAqLwor K3ZvaWQgcGFyc2VfbG9jYWxlX3Byb3BlcnRpZXMoREJ1c01lc3NhZ2UgKm1zZywgc3RydWN0IHJt bHZvICpybWx2bykKKyt7CisrCURCdXNNZXNzYWdlSXRlciByb290X2l0ZXI7CisrCURCdXNNZXNz YWdlSXRlciBkaWN0X2l0ZXI7CisrCURCdXNNZXNzYWdlSXRlciBlbnRyeV9pdGVyOworKwlEQnVz TWVzc2FnZUl0ZXIgdmFyaWFudF9pdGVyOworKwljaGFyICpwcm9wZXJ0eV9uYW1lOworKwljaGFy ICpwcm9wZXJ0eV92YWx1ZTsKKysKKysJaWYgKCFkYnVzX21lc3NhZ2VfaXRlcl9pbml0KG1zZywg JnJvb3RfaXRlcikpIHsKKysJCWxvZ19kZWJ1ZygiTWVzc2FnZSBoYXMgbm8gYXJndW1lbnRzLlxu Iik7CisrCQlyZXR1cm47CisrCX0KKysKKysJZGJ1c19tZXNzYWdlX2l0ZXJfbmV4dCgmcm9vdF9p dGVyKTsKKysJaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmcm9vdF9pdGVyKSAh PSBEQlVTX1RZUEVfQVJSQVkpIHsKKysJCWxvZ19kZWJ1ZygiTm90IHRoZSBjb250YWluZXIgdHlw ZSB3ZSBleHBlY3RcbiIpOworKwkJcmV0dXJuOworKwl9CisrCisrCWRidXNfbWVzc2FnZV9pdGVy X3JlY3Vyc2UoJnJvb3RfaXRlciwgJmRpY3RfaXRlcik7CisrCXdoaWxlIChkYnVzX21lc3NhZ2Vf aXRlcl9nZXRfYXJnX3R5cGUoJmRpY3RfaXRlcikgPT0gREJVU19UWVBFX0RJQ1RfRU5UUlkpIHsK KysKKysJCWRidXNfbWVzc2FnZV9pdGVyX3JlY3Vyc2UoJmRpY3RfaXRlciwgJmVudHJ5X2l0ZXIp OworKworKwkJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKCZlbnRyeV9pdGVyLCAmcHJvcGVy dHlfbmFtZSk7CisrCisrCQlkYnVzX21lc3NhZ2VfaXRlcl9uZXh0KCZlbnRyeV9pdGVyKTsKKysK KysJCWlmIChkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYXJnX3R5cGUoJmVudHJ5X2l0ZXIpID09IERC VVNfVFlQRV9WQVJJQU5UKSB7CisrCisrCQkJZGJ1c19tZXNzYWdlX2l0ZXJfcmVjdXJzZSgmZW50 cnlfaXRlciwgJnZhcmlhbnRfaXRlcik7CisrCisrCQkJaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dl dF9hcmdfdHlwZSgmdmFyaWFudF9pdGVyKSA9PSBEQlVTX1RZUEVfU1RSSU5HKSB7CisrCQkJCWRi dXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYygmdmFyaWFudF9pdGVyLCAmcHJvcGVydHlfdmFsdWUp OworKwkJCQlzZXRfcm1sdm9fcHJvcGVydHkocm1sdm8sIHByb3BlcnR5X25hbWUsIHByb3BlcnR5 X3ZhbHVlKTsKKysJCQkJbG9nX2RlYnVnKCJwcm9wZXJ0eSAlczogJXNcbiIsIHByb3BlcnR5X25h bWUsIHByb3BlcnR5X3ZhbHVlKTsKKysJCQl9CisrCQl9CisrCQlkYnVzX21lc3NhZ2VfaXRlcl9u ZXh0KCZkaWN0X2l0ZXIpOworKwl9CisrfQorKworK3N0YXRpYyB2b2lkIGhhbmRsZV9kaXNwYXRj aF9zdGF0dXMoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNEaXNwYXRjaFN0YXR1cyBzdGF0dXMs IHZvaWQgKmRhdGEpCisreworKwlzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMgPSBkYXRhOworKwlz dHJ1Y3Qgcm1sdm8gcm1sdm8gPSB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH07CisrCisrCWlmIChz dGF0dXMgPT0gREJVU19ESVNQQVRDSF9EQVRBX1JFTUFJTlMpIHsKKysJCURCdXNNZXNzYWdlICpt c2cgPSBkYnVzX2Nvbm5lY3Rpb25fcG9wX21lc3NhZ2UoZGJ1cy0+Y29ubik7CisrCQlpZiAobXNn KSB7CisrCQkJbG9nX2RlYnVnKCJSZWNlaXZlZCBtZXNzYWdlICVzXG4iLCBkYnVzX21lc3NhZ2Vf Z2V0X3NpZ25hdHVyZShtc2cpKTsKKysJCQlpZiAoZGJ1c19tZXNzYWdlX2lzX3NpZ25hbChtc2cs ICJvcmcuZnJlZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiwKKysJCQkJCQkgICAiUHJvcGVydGll c0NoYW5nZWQiKSkgeworKwkJCQlwYXJzZV9sb2NhbGVfcHJvcGVydGllcyhtc2csICZybWx2byk7 CisrCQkJCWlmIChkYnVzLT5jYikKKysJCQkJCWRidXMtPmNiKHJtbHZvLm1vZGVsLCBybWx2by5s YXlvdXQsIHJtbHZvLnZhcmlhbnQsCisrCQkJCQkJIHJtbHZvLm9wdGlvbnMsIGRidXMtPmRhdGEp OworKwkJCX0KKysJCQlkYnVzX21lc3NhZ2VfdW5yZWYobXNnKTsKKysJCX0KKysJfQorK30KKysK KytzdGF0aWMgdm9pZCBsb2NhbGUxX3Byb3BlcnRpZXNfY2hhbmdlZChzdHJ1Y3QgZXZfZmQgKmZk LCBpbnQgbWFzaywgdm9pZCAqZGF0YSkKKyt7CisrCXN0cnVjdCBEQnVzV2F0Y2ggKndhdGNoID0g ZGF0YTsKKysJc3RydWN0IGttc2Nvbl9kYnVzICpkYnVzID0gZGJ1c193YXRjaF9nZXRfZGF0YSh3 YXRjaCk7CisrCisrCXVuc2lnbmVkIGludCBmbGFncyA9IDA7CisrCisrCWxvZ19kZWJ1ZygibG9j YWxlMSBwcm9wZXJ0eSBjaGFuZ2VkXG4iKTsKKysKKysJaWYgKG1hc2sgJiBFVl9SRUFEQUJMRSkK KysJCWZsYWdzIHw9IERCVVNfV0FUQ0hfUkVBREFCTEU7CisrCWlmIChtYXNrICYgRVZfV1JJVEVB QkxFKQorKwkJZmxhZ3MgfD0gREJVU19XQVRDSF9XUklUQUJMRTsKKysKKysJZGJ1c193YXRjaF9o YW5kbGUod2F0Y2gsIGZsYWdzKTsKKysKKysJd2hpbGUgKGRidXNfY29ubmVjdGlvbl9nZXRfZGlz cGF0Y2hfc3RhdHVzKGRidXMtPmNvbm4pID09IERCVVNfRElTUEFUQ0hfREFUQV9SRU1BSU5TKSB7 CisrCQlkYnVzX2Nvbm5lY3Rpb25fZGlzcGF0Y2goZGJ1cy0+Y29ubik7CisrCQkvLyBEQlVTLTEg QVBJIGlzIGEgcGFpbiwgYnV0IGF0IGxlYXN0IHRoYXQgd29ya3MgZm9yIHRoaXMgc2ltcGxlIHVz ZSBjYXNlCisrCQloYW5kbGVfZGlzcGF0Y2hfc3RhdHVzKGRidXMtPmNvbm4sIERCVVNfRElTUEFU Q0hfREFUQV9SRU1BSU5TLCBkYnVzKTsKKysJfQorK30KKysKKysvKiBPbmx5IHJlZ2lzdGVyIG9u ZSByZWFkIHdhdGNoLCBhcyB3ZSdyZSBub3QgaW50ZXJlc3RlZCBpbiB3cml0ZXMgKi8KKytzdGF0 aWMgdW5zaWduZWQgaW50IGRidXNfYWRkX3dhdGNoKERCdXNXYXRjaCAqd2F0Y2gsIHZvaWQgKmRh dGEpCisreworKwlzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMgPSBkYXRhOworKwlpbnQgZmQgPSBk YnVzX3dhdGNoX2dldF91bml4X2ZkKHdhdGNoKTsKKysJdW5zaWduZWQgaW50IGZsYWdzID0gZGJ1 c193YXRjaF9nZXRfZmxhZ3Mod2F0Y2gpOworKwl1bnNpZ25lZCBpbnQgZXZfZmxhZ3MgPSAwOwor KwlpbnQgcmV0ID0gMDsKKysKKysJbG9nX2RlYnVnKCJBZGRpbmcgd2F0Y2ggZm9yIGZkICVkIHdp dGggZmxhZ3MgJWQgJXAgJWRcbiIsIGZkLCBmbGFncywgd2F0Y2gsCisrCQkgIGRidXNfd2F0Y2hf Z2V0X2VuYWJsZWQod2F0Y2gpKTsKKysKKysJaWYgKCFkYnVzX3dhdGNoX2dldF9lbmFibGVkKHdh dGNoKSkKKysJCXJldHVybiBUUlVFOworKworKwlpZiAoZGJ1cy0+d2F0Y2hfZmQpIHsKKysJCWxv Z193YXJuaW5nKCJkYnVzIHdhdGNoIGFscmVhZHkgcmVnaXN0ZXJlZCIpOworKwkJcmV0dXJuIFRS VUU7CisrCX0KKysJaWYgKGZsYWdzICYgREJVU19XQVRDSF9XUklUQUJMRSkKKysJCWV2X2ZsYWdz IHw9IEVWX1dSSVRFQUJMRTsKKysJaWYgKGZsYWdzICYgREJVU19XQVRDSF9SRUFEQUJMRSkKKysJ CWV2X2ZsYWdzIHw9IEVWX1JFQURBQkxFOworKworKwlyZXQgPSBldl9lbG9vcF9uZXdfZmQoZGJ1 cy0+ZWxvb3AsICZkYnVzLT53YXRjaF9mZCwgZmQsIGV2X2ZsYWdzLAorKwkJCSAgICAgIGxvY2Fs ZTFfcHJvcGVydGllc19jaGFuZ2VkLCB3YXRjaCk7CisrCisrCWRidXNfd2F0Y2hfc2V0X2RhdGEo d2F0Y2gsIGRidXMsIE5VTEwpOworKworKwlpZiAocmV0KQorKwkJbG9nX2Vycm9yKCJjYW5ub3Qg YWRkIHdhdGNoIGZvciBmZCAlZDogJWQgJWQgJXAiLCBmZCwgcmV0LCBldl9mbGFncywgd2F0Y2gp OworKwlyZXR1cm4gVFJVRTsKKyt9CisrCisrc3RhdGljIHZvaWQgZGJ1c19yZW1vdmVfd2F0Y2go REJ1c1dhdGNoICp3YXRjaCwgdm9pZCAqZGF0YSkKKyt7CisrCXN0cnVjdCBrbXNjb25fZGJ1cyAq ZGJ1cyA9IGRhdGE7CisrCWxvZ19kZWJ1ZygiUmVtb3Zpbmcgd2F0Y2ggZm9yIGZkICVkXG4iLCBk YnVzX3dhdGNoX2dldF91bml4X2ZkKHdhdGNoKSk7CisrCisrCWlmIChkYnVzX3dhdGNoX2dldF9k YXRhKHdhdGNoKSAhPSBkYnVzKQorKwkJcmV0dXJuOworKworKwlldl9lbG9vcF9ybV9mZChkYnVz LT53YXRjaF9mZCk7CisrCWRidXMtPndhdGNoX2ZkID0gTlVMTDsKKysJZGJ1c193YXRjaF9zZXRf ZGF0YSh3YXRjaCwgTlVMTCwgTlVMTCk7CisrCXJldHVybjsKKyt9CisrCisrc3RhdGljIHZvaWQg ZGJ1c190b2dnbGVfd2F0Y2goREJ1c1dhdGNoICp3YXRjaCwgdm9pZCAqZGF0YSkKKyt7CisrCWxv Z19kZWJ1ZygiVG9nZ2xpbmcgd2F0Y2ggZm9yIGZkICVkXG4iLCBkYnVzX3dhdGNoX2dldF91bml4 X2ZkKHdhdGNoKSk7CisrCisrCWlmIChkYnVzX3dhdGNoX2dldF9lbmFibGVkKHdhdGNoKSkKKysJ CWRidXNfYWRkX3dhdGNoKHdhdGNoLCBkYXRhKTsKKysJZWxzZQorKwkJZGJ1c19yZW1vdmVfd2F0 Y2god2F0Y2gsIGRhdGEpOworK30KKysKKysvKiBMaXN0ZW4gdG8gbG9jYWxlMSBwcm9wZXJ0aWVz IGNoYW5nZWQsIGFuZCB1cGRhdGUgdGhlIFhLQiBsYXlvdXQgaWYgbmVlZGVkICovCisraW50IGtt c2Nvbl9kYnVzX2xpc3Rlbl9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cywgZGJ1c191 cGRhdGVfeGtiX2xheW91dF9jYiBjYiwgdm9pZCAqZGF0YSkKKyt7CisrCURCdXNFcnJvciBlcnJv cjsKKysKKysJbG9nX2RlYnVnKCJMaXN0ZW5pbmcgdG8gbG9jYWxlMVxuIik7CisrCisrCWlmICgh Y2IpCisrCQlyZXR1cm4gLUVJTlZBTDsKKysKKysJZGJ1cy0+Y2IgPSBjYjsKKysJZGJ1cy0+ZGF0 YSA9IGRhdGE7CisrCisrCWRidXNfZXJyb3JfaW5pdCgmZXJyb3IpOworKworKwlkYnVzX2Nvbm5l Y3Rpb25fc2V0X3dhdGNoX2Z1bmN0aW9ucyhkYnVzLT5jb25uLCBkYnVzX2FkZF93YXRjaCwgZGJ1 c19yZW1vdmVfd2F0Y2gsCisrCQkJCQkgICAgZGJ1c190b2dnbGVfd2F0Y2gsIGRidXMsIE5VTEwp OworKworKwlkYnVzX2Nvbm5lY3Rpb25fc2V0X2Rpc3BhdGNoX3N0YXR1c19mdW5jdGlvbihkYnVz LT5jb25uLCBoYW5kbGVfZGlzcGF0Y2hfc3RhdHVzLCBkYnVzLAorKwkJCQkJCSAgICAgTlVMTCk7 CisrCisrCWNvbnN0IGNoYXIgKm1hdGNoX3J1bGUgPSAidHlwZT0nc2lnbmFsJywiCisrCQkJCSAi c2VuZGVyPSdvcmcuZnJlZWRlc2t0b3AubG9jYWxlMScsIgorKwkJCQkgInBhdGg9Jy9vcmcvZnJl ZWRlc2t0b3AvbG9jYWxlMScsIgorKwkJCQkgImludGVyZmFjZT0nb3JnLmZyZWVkZXNrdG9wLkRC dXMuUHJvcGVydGllcycsIgorKwkJCQkgIm1lbWJlcj0nUHJvcGVydGllc0NoYW5nZWQnIjsKKysK KysJZGJ1c19idXNfYWRkX21hdGNoKGRidXMtPmNvbm4sIG1hdGNoX3J1bGUsICZlcnJvcik7Cisr CisrCWlmIChkYnVzX2Vycm9yX2lzX3NldCgmZXJyb3IpKSB7CisrCQlsb2dfZGVidWcoIkVycm9y IGFkZGluZyBtYXRjaDogJXNcbiIsIGVycm9yLm1lc3NhZ2UpOworKwkJZGJ1c19lcnJvcl9mcmVl KCZlcnJvcik7CisrCQlyZXR1cm4gLUVJTzsKKysJfQorKwlkYnVzX2Nvbm5lY3Rpb25fZmx1c2go ZGJ1cy0+Y29ubik7CisrCisrCWxvZ19pbmZvKCJMaXN0ZW5pbmcgdG8gbG9jYWxlMSBjaGFuZ2Vz Iik7CisrCisrCXJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9zcmMva21zY29uX2R1bW15Lmgg Yi9zcmMvZGJ1cy5oCitzaW1pbGFyaXR5IGluZGV4IDUwJQorcmVuYW1lIGZyb20gc3JjL2ttc2Nv bl9kdW1teS5oCityZW5hbWUgdG8gc3JjL2RidXMuaAoraW5kZXggYjRmM2FhMi4uMjcyNDM0ZiAx MDA2NDQKKy0tLSBhL3NyYy9rbXNjb25fZHVtbXkuaAorKysrIGIvc3JjL2RidXMuaAorQEAgLTEs NyArMSw4IEBACisgLyoKKy0gKiBrbXNjb24gLSBEdW1teSBTZXNzaW9uCisrICogZGJ1cyAtIEQt QnVzIHN1cHBvcnQKKyAgKgorLSAqIENvcHlyaWdodCAoYykgMjAxMiBEYXZpZCBIZXJybWFubiA8 ZGguaGVycm1hbm5AZ29vZ2xlbWFpbC5jb20+CisrICogQ29weXJpZ2h0IChjKSAyMDI2IFJlZCBI YXQuCisrICogQXV0aG9yOiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+Cisg ICoKKyAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcKKyAgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzCitAQCAtMjMsMjggKzI0LDM4IEBACisgICogU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgICov CisgCistLyoKKy0gKiBEdW1teSBTZXNzaW9uCistICovCistCistI2lmbmRlZiBLTVNDT05fRFVN TVlfSAorLSNkZWZpbmUgS01TQ09OX0RVTU1ZX0gKKysjaWZuZGVmIF9LTVNDT05fREJVU19ICisr I2RlZmluZSBfS01TQ09OX0RCVVNfSAorIAorLSNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRl IDxzdGRsaWIuaD4KKy0jaW5jbHVkZSAia21zY29uX3NlYXQuaCIKKytzdHJ1Y3QgZXZfZWxvb3A7 Cisrc3RydWN0IGttc2Nvbl9kYnVzOworIAorLSNpZmRlZiBCVUlMRF9FTkFCTEVfU0VTU0lPTl9E VU1NWQorK3R5cGVkZWYgdm9pZCAoKmRidXNfdXBkYXRlX3hrYl9sYXlvdXRfY2IpKGNvbnN0IGNo YXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCisrCQkJCQkgIGNvbnN0IGNoYXIgKnZhcmlh bnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMsIHZvaWQgKmRhdGEpOworIAorLWludCBrbXNjb25fZHVt bXlfcmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICoqb3V0LCBzdHJ1Y3Qga21zY29uX3Nl YXQgKnNlYXQpOworKyNpZmRlZiBCVUlMRF9FTkFCTEVfREJVUworK3ZvaWQga21zY29uX2RidXNf c2V0X3hrYl9lbnZfZnJvbV9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyk7Cisrc3Ry dWN0IGttc2Nvbl9kYnVzICprbXNjb25fZGJ1c19uZXcoc3RydWN0IGV2X2Vsb29wICplbG9vcCk7 Cisrdm9pZCBrbXNjb25fZGJ1c19mcmVlKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cyk7CisraW50 IGttc2Nvbl9kYnVzX2xpc3Rlbl9sb2NhbGUxKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cywgZGJ1 c191cGRhdGVfeGtiX2xheW91dF9jYiBjYiwgdm9pZCAqZGF0YSk7CisgCistI2Vsc2UgLyogIUJV SUxEX0VOQUJMRV9TRVNTSU9OX0RVTU1ZICovCistCistc3RhdGljIGlubGluZSBpbnQga21zY29u X2R1bW15X3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3RydWN0IGttc2Nv bl9zZWF0ICpzZWF0KQorKyNlbHNlCisrc3RhdGljIGlubGluZSB2b2lkIGttc2Nvbl9kYnVzX3Nl dF94a2JfZW52X2Zyb21fbG9jYWxlMShzdHJ1Y3Qga21zY29uX2RidXMgKmRidXMpCisgeworLQly ZXR1cm4gLUVPUE5PVFNVUFA7CisrCXJldHVybjsKKyB9CistCistI2VuZGlmIC8qIEJVSUxEX0VO QUJMRV9TRVNTSU9OX0RVTU1ZICovCistCistI2VuZGlmIC8qIEtNU0NPTl9EVU1NWV9IICovCisr c3RhdGljIGlubGluZSBzdHJ1Y3Qga21zY29uX2RidXMgKmttc2Nvbl9kYnVzX25ldyhzdHJ1Y3Qg ZXZfZWxvb3AgKmVsb29wKQorK3sKKysJcmV0dXJuIE5VTEw7CisrfQorK3N0YXRpYyBpbmxpbmUg dm9pZCBrbXNjb25fZGJ1c19mcmVlKHN0cnVjdCBrbXNjb25fZGJ1cyAqZGJ1cykKKyt7CisrCXJl dHVybjsKKyt9Cisrc3RhdGljIGlubGluZSBpbnQga21zY29uX2RidXNfbGlzdGVuX2xvY2FsZTEo c3RydWN0IGttc2Nvbl9kYnVzICpkYnVzLCBkYnVzX3VwZGF0ZV94a2JfbGF5b3V0X2NiIGNiLAor KwkJCQkJICAgICB2b2lkICpkYXRhKQorK3sKKysJcmV0dXJuIDA7CisrfQorKyNlbmRpZiAvKiBC VUlMRF9FTkFCTEVfREJVUyAqLworKyNlbmRpZiAvKiBfS01TQ09OX0RCVVNfSCAqLworXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkaWZmIC0tZ2l0IGEvc3JjL2ZvbnQvZm9udF9mcmVldHlw ZS5jIGIvc3JjL2ZvbnQvZm9udF9mcmVldHlwZS5jCitpbmRleCBhODc5ZDY0Li5kMGUzZWU5IDEw MDY0NAorLS0tIGEvc3JjL2ZvbnQvZm9udF9mcmVldHlwZS5jCisrKysgYi9zcmMvZm9udC9mb250 X2ZyZWV0eXBlLmMKK0BAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIGludCBmb250X2dldF93aWR0 aChGVF9GYWNlIGZhY2UpCisgeworIAlGVF9VSW50IGdseXBoX2luZGV4ID0gRlRfR2V0X0NoYXJf SW5kZXgoZmFjZSwgJ00nKTsKKyAKKy0JaWYgKEZUX0xvYWRfR2x5cGgoZmFjZSwgZ2x5cGhfaW5k ZXgsIEZUX0xPQURfREVGQVVMVCkpCisrCWlmIChGVF9Mb2FkX0dseXBoKGZhY2UsIGdseXBoX2lu ZGV4LCBGVF9MT0FEX1RBUkdFVF9MSUdIVCkpCisgCQlyZXR1cm4gLTE7CisgCisgCWlmIChGVF9S ZW5kZXJfR2x5cGgoZmFjZS0+Z2x5cGgsIEZUX1JFTkRFUl9NT0RFX05PUk1BTCkpCitAQCAtMzc3 LDcgKzM3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qga21zY29uX2dseXBoICpyZW5kZXJfZ2x5cGgoRlRf RmFjZSBmYWNlLCBGVF9VSW50IGluZGV4LCBjb25zdCB1aW50CisgCWlmICghY3dpZHRoKQorIAkJ cmV0dXJuIE5VTEw7CisgCistCWlmIChGVF9Mb2FkX0dseXBoKGZhY2UsIGluZGV4LCBGVF9MT0FE X05PX0hJTlRJTkcpKSB7CisrCWlmIChGVF9Mb2FkX0dseXBoKGZhY2UsIGluZGV4LCBGVF9MT0FE X1RBUkdFVF9MSUdIVCkpIHsKKyAJCWxvZ19lcnIoIkZhaWxlZCB0byBsb2FkIGdseXBoXG4iKTsK KyAJCXJldHVybiBOVUxMOworIAl9CitkaWZmIC0tZ2l0IGEvc3JjL2ZvbnQvbWVzb24uYnVpbGQg Yi9zcmMvZm9udC9tZXNvbi5idWlsZAoraW5kZXggZGQ1ZDlkYy4uZDI2NWJiMCAxMDA2NDQKKy0t LSBhL3NyYy9mb250L21lc29uLmJ1aWxkCisrKysgYi9zcmMvZm9udC9tZXNvbi5idWlsZAorQEAg LTIyLDcgKzIyLDcgQEAgZm9udF9kZXBzID0gZGVjbGFyZV9kZXBlbmRlbmN5KAorICMgVW5pZm9u dCBHZW5lcmF0b3IKKyAjIFRoaXMgZ2VuZXJhdGVzIHRoZSB1bmlmb250IHNvdXJjZXMgZnJvbSBy YXcgaGV4LWVuY29kZWQgZm9udCBkYXRhLgorICMKKy1nZW51bmlmb250ID0gZXhlY3V0YWJsZSgn Z2VudW5pZm9udCcsICdnZW51bmlmb250LmMnLCBkZXBlbmRlbmNpZXM6IFt6bGliX2RlcHNdLCBu YXRpdmU6IHRydWUpCisrZ2VudW5pZm9udCA9IGV4ZWN1dGFibGUoJ2dlbnVuaWZvbnQnLCAnZ2Vu dW5pZm9udC5jJywgZGVwZW5kZW5jaWVzOiBbemxpYl9kZXBzX25hdGl2ZV0sIG5hdGl2ZTogdHJ1 ZSkKKyAKKyB1bmlmb250X2JpbiA9IGN1c3RvbV90YXJnZXQoJ3VuaWZvbnQtYmluJywKKyAgIGlu cHV0OiBbJ2ZvbnRfdW5pZm9udF9kYXRhLmhleCddLAorQEAgLTY4LDQgKzY4LDQgQEAgaWYgZW5h YmxlX2ZvbnRfcGFuZ28KKyAgICAgaW5zdGFsbDogdHJ1ZSwKKyAgICAgaW5zdGFsbF9kaXI6IG1v ZHVsZWRpciwKKyAgICkKKy1lbmRpZgorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrZW5k aWYKK2RpZmYgLS1naXQgYS9zcmMvaW5wdXQvaW5wdXQuYyBiL3NyYy9pbnB1dC9pbnB1dC5jCitp bmRleCA2NWMxZDZmLi43MWEwNTNiIDEwMDY0NAorLS0tIGEvc3JjL2lucHV0L2lucHV0LmMKKysr KyBiL3NyYy9pbnB1dC9pbnB1dC5jCitAQCAtNTA0LDIzICs1MDQsNDggQEAgZXJyX2ZyZWU6Cisg CisgU0hMX0VYUE9SVAorIGludCBpbnB1dF9zZXRfa2V5bWFwKHN0cnVjdCBpbnB1dCAqaW5wdXQs IGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCistCQkgICAgIGNvbnN0IGNo YXIgKnZhcmlhbnQsIGNvbnN0IGNoYXIgKm9wdGlvbnMsIGNvbnN0IGNoYXIgKmxvY2FsZSwKKy0J CSAgICAgY29uc3QgY2hhciAqa2V5bWFwLCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsIHNpemVf dCBjb21wb3NlX2ZpbGVfbGVuKQorLXsKKy0JLyogeGtiY29tbW9uIHdvbid0IHVzZSB0aGUgWEtC X0RFRkFVTFRfT1BUSU9OUyBlbnZpcm9ubWVudAorLQkgKiB2YXJpYWJsZSBpZiBvcHRpb25zIGlz IGFuIGVtcHR5IHN0cmluZy4KKy0JICogU28gaWYgYWxsIHZhcmlhYmxlcyBhcmUgZW1wdHksIHVz ZSBOVUxMIGluc3RlYWQuCistCSAqLworLQlpZiAobW9kZWwgJiYgKm1vZGVsID09IDAgJiYgbGF5 b3V0ICYmICpsYXlvdXQgPT0gMCAmJiB2YXJpYW50ICYmICp2YXJpYW50ID09IDAgJiYgb3B0aW9u cyAmJgorLQkgICAgKm9wdGlvbnMgPT0gMCkgeworLQkJbW9kZWwgPSBOVUxMOworLQkJbGF5b3V0 ID0gTlVMTDsKKy0JCXZhcmlhbnQgPSBOVUxMOworLQkJb3B0aW9ucyA9IE5VTEw7CistCX0KKysJ CSAgICAgY29uc3QgY2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hh ciAqa2V5bWFwKQorK3sKKysJcmV0dXJuIHV4a2JfbGF5b3V0X2luaXQoaW5wdXQsIG1vZGVsLCBs YXlvdXQsIHZhcmlhbnQsIG9wdGlvbnMsIGtleW1hcCk7CisrfQorIAorLQlyZXR1cm4gdXhrYl9k ZXNjX2luaXQoaW5wdXQsIG1vZGVsLCBsYXlvdXQsIHZhcmlhbnQsIG9wdGlvbnMsIGxvY2FsZSwg a2V5bWFwLCBjb21wb3NlX2ZpbGUsCistCQkJICAgICAgY29tcG9zZV9maWxlX2xlbik7CisrU0hM X0VYUE9SVAorK3ZvaWQgaW5wdXRfc2V0X2NvbXBvc2Uoc3RydWN0IGlucHV0ICppbnB1dCwgY29u c3QgY2hhciAqbG9jYWxlLCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsCisrCQkgICAgICAgc2l6 ZV90IGNvbXBvc2VfZmlsZV9sZW4pCisreworKwl1eGtiX2NvbXBvc2VfdGFibGVfaW5pdChpbnB1 dCwgY29tcG9zZV9maWxlLCBjb21wb3NlX2ZpbGVfbGVuLCBsb2NhbGUpOworK30KKysKKytTSExf RVhQT1JUCisraW50IGlucHV0X3VwZGF0ZV9rZXltYXAoc3RydWN0IGlucHV0ICppbnB1dCwgY29u c3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKKysJCQljb25zdCBjaGFyICp2YXJp YW50LCBjb25zdCBjaGFyICpvcHRpb25zKQorK3sKKysJc3RydWN0IHNobF9kbGlzdCAqaXRlcjsK KysJc3RydWN0IGlucHV0X2RldiAqZGV2OworKworKwlpZiAoaW5wdXQtPmN0eCkgeworKwkJc2hs X2RsaXN0X2Zvcl9lYWNoKGl0ZXIsICZpbnB1dC0+ZGV2aWNlcykKKysJCXsKKysJCQlkZXYgPSBz aGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGlucHV0X2RldiwgbGlzdCk7CisrCQkJaWYgKGRl di0+Y2FwYWJpbGl0aWVzICYgREVWSUNFX0hBU19LRVlTKSB7CisrCQkJCWlucHV0X3NsZWVwX2Rl dihkZXYpOworKwkJCQlpbnB1dF9leGl0X2tleWJvYXJkKGRldik7CisrCQkJfQorKwkJfQorKwl9 CisrCXV4a2JfY29tcG9zZV90YWJsZV9kZXN0cm95KGlucHV0KTsKKysJdXhrYl9sYXlvdXRfZGVz dHJveShpbnB1dCk7CisrCXV4a2JfbGF5b3V0X2luaXQoaW5wdXQsIG1vZGVsLCBsYXlvdXQsIHZh cmlhbnQsIG9wdGlvbnMsIE5VTEwpOworKwlzaGxfZGxpc3RfZm9yX2VhY2goaXRlciwgJmlucHV0 LT5kZXZpY2VzKQorKwl7CisrCQlkZXYgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGlu cHV0X2RldiwgbGlzdCk7CisrCQlpZiAoZGV2LT5jYXBhYmlsaXRpZXMgJiBERVZJQ0VfSEFTX0tF WVMpIHsKKysJCQlpbnB1dF9pbml0X2tleWJvYXJkKGRldik7CisrCQkJaWYgKGlucHV0LT5hd2Fr ZSkKKysJCQkJaW5wdXRfd2FrZV91cF9kZXYoZGV2KTsKKysJCX0KKysJfQorKwlyZXR1cm4gMDsK KyB9CisgCisgU0hMX0VYUE9SVAorQEAgLTU2NSw3ICs1OTAsOCBAQCB2b2lkIGlucHV0X3VucmVm KHN0cnVjdCBpbnB1dCAqaW5wdXQpCisgCQlpbnB1dF9mcmVlX2RldihkZXYpOworIAl9CisgCist CXV4a2JfZGVzY19kZXN0cm95KGlucHV0KTsKKysJdXhrYl9jb21wb3NlX3RhYmxlX2Rlc3Ryb3ko aW5wdXQpOworKwl1eGtiX2xheW91dF9kZXN0cm95KGlucHV0KTsKKyAJc2hsX2hvb2tfZnJlZShp bnB1dC0+a2V5X2hvb2spOworIAlzaGxfaG9va19mcmVlKGlucHV0LT5wb2ludGVyX2hvb2spOwor IAlldl9lbG9vcF9ybV90aW1lcihpbnB1dC0+aGlkZV9wb2ludGVyKTsKK2RpZmYgLS1naXQgYS9z cmMvaW5wdXQvaW5wdXQuaCBiL3NyYy9pbnB1dC9pbnB1dC5oCitpbmRleCA4YjgxZTAwLi45ZjI2 OWZmIDEwMDY0NAorLS0tIGEvc3JjL2lucHV0L2lucHV0LmgKKysrKyBiL3NyYy9pbnB1dC9pbnB1 dC5oCitAQCAtOTIsOCArOTIsMTEgQEAgdHlwZWRlZiB2b2lkICgqdXRlcm1fY2xvc2VfY2IpKGlu dCBmZCwgaW50IGZkX2lkLCB2b2lkICpkYXRhKTsKKyAKKyBpbnQgaW5wdXRfbmV3KHN0cnVjdCBp bnB1dCAqKm91dCwgc3RydWN0IGV2X2Vsb29wICplbG9vcCk7CisgaW50IGlucHV0X3NldF9rZXlt YXAoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxh eW91dCwKKy0JCSAgICAgY29uc3QgY2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywg Y29uc3QgY2hhciAqbG9jYWxlLAorLQkJICAgICBjb25zdCBjaGFyICprZXltYXAsIGNvbnN0IGNo YXIgKmNvbXBvc2VfZmlsZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4pOworKwkJICAgICBjb25z dCBjaGFyICp2YXJpYW50LCBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICprZXltYXAp OworK3ZvaWQgaW5wdXRfc2V0X2NvbXBvc2Uoc3RydWN0IGlucHV0ICppbnB1dCwgY29uc3QgY2hh ciAqbG9jYWxlLCBjb25zdCBjaGFyICpjb21wb3NlX2ZpbGUsCisrCQkgICAgICAgc2l6ZV90IGNv bXBvc2VfZmlsZV9sZW4pOworK2ludCBpbnB1dF91cGRhdGVfa2V5bWFwKHN0cnVjdCBpbnB1dCAq aW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsCisrCQkJY29uc3Qg Y2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucyk7Cisgdm9pZCBpbnB1dF9zZXRfY29u ZihzdHJ1Y3QgaW5wdXQgKmlucHV0LCB1bnNpZ25lZCBpbnQgcmVwZWF0X2RlbGF5LCB1bnNpZ25l ZCBpbnQgcmVwZWF0X3JhdGUsCisgCQkgICAgYm9vbCBtb3VzZV9lbmFibGVkKTsKKyB2b2lkIGlu cHV0X3JlZihzdHJ1Y3QgaW5wdXQgKmlucHV0KTsKK2RpZmYgLS1naXQgYS9zcmMvaW5wdXQvaW5w dXRfaW50ZXJuYWwuaCBiL3NyYy9pbnB1dC9pbnB1dF9pbnRlcm5hbC5oCitpbmRleCA1NTllOGVj Li5mYzkzMmZhIDEwMDY0NAorLS0tIGEvc3JjL2lucHV0L2lucHV0X2ludGVybmFsLmgKKysrKyBi L3NyYy9pbnB1dC9pbnB1dF9pbnRlcm5hbC5oCitAQCAtMTQwLDEwICsxNDAsMTIgQEAgc3RhdGlj IGlubGluZSBib29sIGlucHV0X2JpdF9pc19zZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYXJyYXks IGludCBiaXQpCisgCXJldHVybiAhIShhcnJheVtiaXQgLyBMT05HX0JJVF0gJiAoMVVMIDw8IChi aXQgJSBMT05HX0JJVCkpKTsKKyB9CisgCistaW50IHV4a2JfZGVzY19pbml0KHN0cnVjdCBpbnB1 dCAqaW5wdXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsIGNvbnN0IGNo YXIgKnZhcmlhbnQsCistCQkgICBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICpsb2Nh bGUsIGNvbnN0IGNoYXIgKmtleW1hcCwKKy0JCSAgIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmlsZSwg c2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4pOworLXZvaWQgdXhrYl9kZXNjX2Rlc3Ryb3koc3RydWN0 IGlucHV0ICppbnB1dCk7CisraW50IHV4a2JfbGF5b3V0X2luaXQoc3RydWN0IGlucHV0ICppbnB1 dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKKysJCSAgICAgY29uc3Qg Y2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqa2V5bWFwKTsK Kyt2b2lkIHV4a2JfY29tcG9zZV90YWJsZV9pbml0KHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0 IGNoYXIgKmNvbXBvc2VfZmlsZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4sCisrCQkJICAgICBj b25zdCBjaGFyICpsb2NhbGUpOworK3ZvaWQgdXhrYl9sYXlvdXRfZGVzdHJveShzdHJ1Y3QgaW5w dXQgKmlucHV0KTsKKyt2b2lkIHV4a2JfY29tcG9zZV90YWJsZV9kZXN0cm95KHN0cnVjdCBpbnB1 dCAqaW5wdXQpOworIAorIGludCB1eGtiX2Rldl9pbml0KHN0cnVjdCBpbnB1dF9kZXYgKmRldik7 Cisgdm9pZCB1eGtiX2Rldl9kZXN0cm95KHN0cnVjdCBpbnB1dF9kZXYgKmRldik7CitkaWZmIC0t Z2l0IGEvc3JjL2lucHV0L2lucHV0X3V4a2IuYyBiL3NyYy9pbnB1dC9pbnB1dF91eGtiLmMKK2lu ZGV4IDM3N2U5MzUuLjFhZTI1NjUgMTAwNjQ0CistLS0gYS9zcmMvaW5wdXQvaW5wdXRfdXhrYi5j CisrKysgYi9zcmMvaW5wdXQvaW5wdXRfdXhrYi5jCitAQCAtNjksMTEgKzY5LDEwIEBAIHN0YXRp YyB2b2lkIHV4a2JfbG9nKHN0cnVjdCB4a2JfY29udGV4dCAqY29udGV4dCwgZW51bSB4a2JfbG9n X2xldmVsIGxldmVsLCBjb25zCisgCWxvZ19zdWJtaXQoTE9HX0RFRkFVTFQsIHNldiwgZm9ybWF0 LCBhcmdzKTsKKyB9CisgCistaW50IHV4a2JfZGVzY19pbml0KHN0cnVjdCBpbnB1dCAqaW5wdXQs IGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQsIGNvbnN0IGNoYXIgKnZhcmlh bnQsCistCQkgICBjb25zdCBjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICpsb2NhbGUsIGNvbnN0 IGNoYXIgKmtleW1hcCwKKy0JCSAgIGNvbnN0IGNoYXIgKmNvbXBvc2VfZmlsZSwgc2l6ZV90IGNv bXBvc2VfZmlsZV9sZW4pCisraW50IHV4a2JfbGF5b3V0X2luaXQoc3RydWN0IGlucHV0ICppbnB1 dCwgY29uc3QgY2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKKysJCSAgICAgY29uc3Qg Y2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqa2V5bWFwKQor IHsKKy0JaW50IHJldDsKKysJaW50IHJldCA9IDA7CisgCXN0cnVjdCB4a2JfcnVsZV9uYW1lcyBy bWx2byA9IHsKKyAJCS5ydWxlcyA9ICJldmRldiIsCisgCQkubW9kZWwgPSBtb2RlbCwKK0BAIC0x NDAsNyArMTM5LDE1IEBAIGludCB1eGtiX2Rlc2NfaW5pdChzdHJ1Y3QgaW5wdXQgKmlucHV0LCBj b25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LCBjCisgCQlsb2dfZGVidWcoIm5l dyBrZXlib2FyZCBkZXNjcmlwdGlvbiAoJXMsICVzLCAlcywgJXMpIiwgbW9kZWwsIGxheW91dCwg dmFyaWFudCwKKyAJCQkgIG9wdGlvbnMpOworIAl9CisrCXJldHVybiAwOworK2Vycl9jdHg6Cisr CXhrYl9jb250ZXh0X3VucmVmKGlucHV0LT5jdHgpOworKwlyZXR1cm4gcmV0OworK30KKyAKKyt2 b2lkIHV4a2JfY29tcG9zZV90YWJsZV9pbml0KHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0IGNo YXIgKmNvbXBvc2VfZmlsZSwgc2l6ZV90IGNvbXBvc2VfZmlsZV9sZW4sCisrCQkJICAgICBjb25z dCBjaGFyICpsb2NhbGUpCisreworIAlpZiAoY29tcG9zZV9maWxlICYmICpjb21wb3NlX2ZpbGUp IHsKKyAJCWlucHV0LT5jb21wb3NlX3RhYmxlID0geGtiX2NvbXBvc2VfdGFibGVfbmV3X2Zyb21f YnVmZmVyKAorIAkJCWlucHV0LT5jdHgsIGNvbXBvc2VfZmlsZSwgY29tcG9zZV9maWxlX2xlbiwg bG9jYWxlLAorQEAgLTE2MSwxOSArMTY4LDIwIEBAIGludCB1eGtiX2Rlc2NfaW5pdChzdHJ1Y3Qg aW5wdXQgKmlucHV0LCBjb25zdCBjaGFyICptb2RlbCwgY29uc3QgY2hhciAqbGF5b3V0LCBjCisg CQkJCSAidGFibGUsIGRpc2FibGluZyBjb21wb3NlIHN1cHBvcnQiKTsKKyAJCX0KKyAJfQorLQor LQlyZXR1cm4gMDsKKy0KKy1lcnJfY3R4OgorLQl4a2JfY29udGV4dF91bnJlZihpbnB1dC0+Y3R4 KTsKKy0JcmV0dXJuIHJldDsKKyB9CisgCistdm9pZCB1eGtiX2Rlc2NfZGVzdHJveShzdHJ1Y3Qg aW5wdXQgKmlucHV0KQorK3ZvaWQgdXhrYl9jb21wb3NlX3RhYmxlX2Rlc3Ryb3koc3RydWN0IGlu cHV0ICppbnB1dCkKKyB7CisgCXhrYl9jb21wb3NlX3RhYmxlX3VucmVmKGlucHV0LT5jb21wb3Nl X3RhYmxlKTsKKysJaW5wdXQtPmNvbXBvc2VfdGFibGUgPSBOVUxMOworK30KKysKKyt2b2lkIHV4 a2JfbGF5b3V0X2Rlc3Ryb3koc3RydWN0IGlucHV0ICppbnB1dCkKKyt7CisgCXhrYl9rZXltYXBf dW5yZWYoaW5wdXQtPmtleW1hcCk7CisgCXhrYl9jb250ZXh0X3VucmVmKGlucHV0LT5jdHgpOwor KwlpbnB1dC0+a2V5bWFwID0gTlVMTDsKKysJaW5wdXQtPmN0eCA9IE5VTEw7CisgfQorIAorIHN0 YXRpYyB2b2lkIHRpbWVyX2V2ZW50KHN0cnVjdCBldl90aW1lciAqdGltZXIsIHVpbnQ2NF90IG51 bSwgdm9pZCAqZGF0YSkKK0BAIC0yMTgsNiArMjI2LDkgQEAgdm9pZCB1eGtiX2Rldl9kZXN0cm95 KHN0cnVjdCBpbnB1dF9kZXYgKmRldikKKyAJeGtiX2NvbXBvc2Vfc3RhdGVfdW5yZWYoZGV2LT5j b21wb3NlX3N0YXRlKTsKKyAJeGtiX3N0YXRlX3VucmVmKGRldi0+c3RhdGUpOworIAlldl9lbG9v cF9ybV90aW1lcihkZXYtPnJlcGVhdF90aW1lcik7CisrCWRldi0+Y29tcG9zZV9zdGF0ZSA9IE5V TEw7CisrCWRldi0+c3RhdGUgPSBOVUxMOworKwlkZXYtPnJlcGVhdF90aW1lciA9IE5VTEw7Cisg fQorIAorICNkZWZpbmUgRVZERVZfS0VZQ09ERV9PRkZTRVQgOAorZGlmZiAtLWdpdCBhL3NyYy9r bXNjb25fY29uZi5jIGIvc3JjL2ttc2Nvbl9jb25mLmMKK2luZGV4IDZhODcyOGEuLjRiMDFkNGEg MTAwNjQ0CistLS0gYS9zcmMva21zY29uX2NvbmYuYworKysrIGIvc3JjL2ttc2Nvbl9jb25mLmMK K0BAIC0zNCw2ICszNCw3IEBACisgI2luY2x1ZGUgPHhrYmNvbW1vbi94a2Jjb21tb24ta2V5c3lt cy5oPgorICNpbmNsdWRlICJjb25mLmgiCisgI2luY2x1ZGUgImttc2Nvbl9jb25mLmgiCisrI2lu Y2x1ZGUgImttc2Nvbl9pc3N1ZS5oIgorICNpbmNsdWRlICJzaGwvZ2l0aGVhZC5oIgorICNpbmNs dWRlICJzaGwvbG9nLmgiCisgI2luY2x1ZGUgInNobC9taXNjLmgiCitAQCAtNzgsMTQgKzc5LDEz IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlbHAoKQorIAkJIlNlc3Npb24gT3B0aW9uczpcbiIKKyAJ CSJcdCAgICAtLXNlc3Npb24tbWF4IDxtYXg+ICAgICAgICAgWzUwXSAgTWF4aW11bSBudW1iZXIg b2Ygc2Vzc2lvbnNcbiIKKyAJCSJcdCAgICAtLXNlc3Npb24tY29udHJvbCAgICAgICAgICAgW29m Zl0gQWxsb3cga2V5Ym9hcmQgc2Vzc2lvbi1jb250cm9sXG4iCistCQkiXHQgICAgLS10ZXJtaW5h bC1zZXNzaW9uICAgICAgICAgIFtvbl0gIEVuYWJsZSB0ZXJtaW5hbCBzZXNzaW9uXG4iCisgCQki XG4iCisgCQkiVGVybWluYWwgT3B0aW9uczpcbiIKKyAJCSJcdCAgICAtLWlzc3VlICAgICAgICAg ICAgICAgICBbb25dXG4iCisgCQkiXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNw bGF5IGlzc3VlIGZpbGVzIGJlZm9yZSB0aGVcbiIKKyAJCSJcdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxvZ2luIHByb21wdC4gVXNlIC0tbm8taXNzdWUgdG9cbiIKKyAJCSJcdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aGUgbG9naW4gcHJvY2VzcyBoYW5kbGUgaXQu XG4iCistCQkiXHQgICAgLS1pc3N1ZS1wYXRoIDxwYXRoPiAgICAgWy9ldGMvaXNzdWU6L2V0Yy9p c3N1ZS5kXVxuIgorKwkJIlx0ICAgIC0taXNzdWUtcGF0aCA8cGF0aD4gICAgIFsiIElTU1VFX0RF RkFVTFRfUEFUSCAiXVxuIgorIAkJIlx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29s b24tc2VwYXJhdGVkIGxpc3Qgb2YgaXNzdWVcbiIKKyAJCSJcdCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byByZWFkXG4iCisgCQkiXHQtbCwgLS1s b2dpbiAgICAgICAgICAgICAgICAgWy9iaW4vbG9naW4gLXBdXG4iCitAQCAtMTQ4LDggKzE0OCw2 IEBAIHN0YXRpYyB2b2lkIHByaW50X2hlbHAoKQorIAkJIlx0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFN3aXRjaCB0byB0aGUgbmV4dCBzZXNzaW9uXG4iCisgCQkiXHQgICAgLS1n cmFiLXNlc3Npb24tcHJldiA8Z3JhYj4gIFs8Q3RybD48TG9nbz5MZWZ0XVxuIgorIAkJIlx0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3aXRjaCB0byB0aGUgcHJldmlvdXMgc2Vz c2lvblxuIgorLQkJIlx0ICAgIC0tZ3JhYi1zZXNzaW9uLWR1bW15IDxncmFiPiBbPEN0cmw+PExv Z28+RXNjYXBlXVxuIgorLQkJIlx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN3 aXRjaCB0byBhIGR1bW15IHNlc3Npb25cbiIKKyAJCSJcdCAgICAtLWdyYWItc2Vzc2lvbi1jbG9z ZSA8Z3JhYj4gWzxDdHJsPjxMb2dvPkJhY2tTcGFjZV1cbiIKKyAJCSJcdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDbG9zZSBjdXJyZW50IHNlc3Npb25cbiIKKyAJCSJcdCAgICAt LWdyYWItdGVybWluYWwtbmV3IDxncmFiPiAgWzxDdHJsPjxMb2dvPlJldHVybl1cbiIKK0BAIC02 NTksOSArNjU3LDYgQEAgc3RhdGljIHN0cnVjdCBjb25mX2dyYWIgZGVmX2dyYWJfc2Vzc2lvbl9u ZXh0ID0KKyBzdGF0aWMgc3RydWN0IGNvbmZfZ3JhYiBkZWZfZ3JhYl9zZXNzaW9uX3ByZXYgPQor IAlDT05GX1NJTkdMRV9HUkFCKFNITF9DT05UUk9MX01BU0sgfCBTSExfTE9HT19NQVNLLCBYS0Jf S0VZX0xlZnQpOworIAorLXN0YXRpYyBzdHJ1Y3QgY29uZl9ncmFiIGRlZl9ncmFiX3Nlc3Npb25f ZHVtbXkgPQorLQlDT05GX1NJTkdMRV9HUkFCKFNITF9DT05UUk9MX01BU0sgfCBTSExfTE9HT19N QVNLLCBYS0JfS0VZX0VzY2FwZSk7CistCisgc3RhdGljIHN0cnVjdCBjb25mX2dyYWIgZGVmX2dy YWJfc2Vzc2lvbl9jbG9zZSA9CisgCUNPTkZfU0lOR0xFX0dSQUIoU0hMX0NPTlRST0xfTUFTSyB8 IFNITF9MT0dPX01BU0ssIFhLQl9LRVlfQmFja1NwYWNlKTsKKyAKK0BAIC03MjgsMTEgKzcyMywx MCBAQCBpbnQga21zY29uX2NvbmZfbmV3KHN0cnVjdCBjb25mX2N0eCAqKm91dCkKKyAJCS8qIFNl c3Npb24gT3B0aW9ucyAqLworIAkJQ09ORl9PUFRJT05fVUlOVCgwLCAic2Vzc2lvbi1tYXgiLCAm Y29uZi0+c2Vzc2lvbl9tYXgsIDUwKSwKKyAJCUNPTkZfT1BUSU9OX0JPT0woMCwgInNlc3Npb24t Y29udHJvbCIsICZjb25mLT5zZXNzaW9uX2NvbnRyb2wsIGZhbHNlKSwKKy0JCUNPTkZfT1BUSU9O X0JPT0woMCwgInRlcm1pbmFsLXNlc3Npb24iLCAmY29uZi0+dGVybWluYWxfc2Vzc2lvbiwgdHJ1 ZSksCisgCisgCQkvKiBUZXJtaW5hbCBPcHRpb25zICovCisgCQlDT05GX09QVElPTl9CT09MKDAs ICJpc3N1ZSIsICZjb25mLT5pc3N1ZSwgdHJ1ZSksCistCQlDT05GX09QVElPTl9TVFJJTkcoMCwg Imlzc3VlLXBhdGgiLCAmY29uZi0+aXNzdWVfcGF0aCwgIi9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5k IiksCisrCQlDT05GX09QVElPTl9TVFJJTkcoMCwgImlzc3VlLXBhdGgiLCAmY29uZi0+aXNzdWVf cGF0aCwgSVNTVUVfREVGQVVMVF9QQVRIKSwKKyAJCUNPTkZfT1BUSU9OKDAsICdsJywgImxvZ2lu IiwgJmNvbmZfbG9naW4sIGFmdGVyY2hlY2tfbG9naW4sIE5VTEwsIGZpbGVfbG9naW4sCisgCQkJ ICAgICZjb25mLT5sb2dpbiwgZmFsc2UpLAorIAkJQ09ORl9PUFRJT05fU1RSSU5HKCd0JywgInRl cm0iLCAmY29uZi0+dGVybSwgImttc2NvbiIpLAorQEAgLTc0MiwxMiArNzM2LDEyIEBAIGludCBr bXNjb25fY29uZl9uZXcoc3RydWN0IGNvbmZfY3R4ICoqb3V0KQorIAkJQ09ORl9PUFRJT05fQk9P TCgwLCAiYmVsbCIsICZjb25mLT5iZWxsLCBmYWxzZSksCisgCisgCQkvKiBJbnB1dCBPcHRpb25z ICovCistCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1tb2RlbCIsICZjb25mLT54a2JfbW9k ZWwsICIiKSwKKy0JCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGtiLWxheW91dCIsICZjb25mLT54 a2JfbGF5b3V0LCAiIiksCistCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi12YXJpYW50Iiwg JmNvbmYtPnhrYl92YXJpYW50LCAiIiksCistCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1v cHRpb25zIiwgJmNvbmYtPnhrYl9vcHRpb25zLCAiIiksCistCQlDT05GX09QVElPTl9TVFJJTkco MCwgInhrYi1rZXltYXAiLCAmY29uZi0+eGtiX2tleW1hcCwgIiIpLAorLQkJQ09ORl9PUFRJT05f U1RSSU5HKDAsICJ4a2ItY29tcG9zZS1maWxlIiwgJmNvbmYtPnhrYl9jb21wb3NlX2ZpbGUsICIi KSwKKysJCUNPTkZfT1BUSU9OX1NUUklORygwLCAieGtiLW1vZGVsIiwgJmNvbmYtPnhrYl9tb2Rl bCwgTlVMTCksCisrCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi1sYXlvdXQiLCAmY29uZi0+ eGtiX2xheW91dCwgTlVMTCksCisrCQlDT05GX09QVElPTl9TVFJJTkcoMCwgInhrYi12YXJpYW50 IiwgJmNvbmYtPnhrYl92YXJpYW50LCBOVUxMKSwKKysJCUNPTkZfT1BUSU9OX1NUUklORygwLCAi eGtiLW9wdGlvbnMiLCAmY29uZi0+eGtiX29wdGlvbnMsIE5VTEwpLAorKwkJQ09ORl9PUFRJT05f U1RSSU5HKDAsICJ4a2Ita2V5bWFwIiwgJmNvbmYtPnhrYl9rZXltYXAsIE5VTEwpLAorKwkJQ09O Rl9PUFRJT05fU1RSSU5HKDAsICJ4a2ItY29tcG9zZS1maWxlIiwgJmNvbmYtPnhrYl9jb21wb3Nl X2ZpbGUsIE5VTEwpLAorIAkJQ09ORl9PUFRJT05fVUlOVCgwLCAieGtiLXJlcGVhdC1kZWxheSIs ICZjb25mLT54a2JfcmVwZWF0X2RlbGF5LCAyNTApLAorIAkJQ09ORl9PUFRJT05fVUlOVCgwLCAi eGtiLXJlcGVhdC1yYXRlIiwgJmNvbmYtPnhrYl9yZXBlYXRfcmF0ZSwgNTApLAorIAkJQ09ORl9P UFRJT05fQk9PTCgwLCAibW91c2UiLCAmY29uZi0+bW91c2UsIHRydWUpLAorQEAgLTc2Nyw4ICs3 NjEsNiBAQCBpbnQga21zY29uX2NvbmZfbmV3KHN0cnVjdCBjb25mX2N0eCAqKm91dCkKKyAJCQkJ ICZkZWZfZ3JhYl9zZXNzaW9uX25leHQpLAorIAkJQ09ORl9PUFRJT05fR1JBQigwLCAiZ3JhYi1z ZXNzaW9uLXByZXYiLCAmY29uZi0+Z3JhYl9zZXNzaW9uX3ByZXYsCisgCQkJCSAmZGVmX2dyYWJf c2Vzc2lvbl9wcmV2KSwKKy0JCUNPTkZfT1BUSU9OX0dSQUIoMCwgImdyYWItc2Vzc2lvbi1kdW1t eSIsICZjb25mLT5ncmFiX3Nlc3Npb25fZHVtbXksCistCQkJCSAmZGVmX2dyYWJfc2Vzc2lvbl9k dW1teSksCisgCQlDT05GX09QVElPTl9HUkFCKDAsICJncmFiLXNlc3Npb24tY2xvc2UiLCAmY29u Zi0+Z3JhYl9zZXNzaW9uX2Nsb3NlLAorIAkJCQkgJmRlZl9ncmFiX3Nlc3Npb25fY2xvc2UpLAor IAkJQ09ORl9PUFRJT05fR1JBQigwLCAiZ3JhYi10ZXJtaW5hbC1uZXciLCAmY29uZi0+Z3JhYl90 ZXJtaW5hbF9uZXcsCitkaWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9jb25mLmggYi9zcmMva21zY29u X2NvbmYuaAoraW5kZXggOGRjN2FmZC4uMzc3ZjhhMyAxMDA2NDQKKy0tLSBhL3NyYy9rbXNjb25f Y29uZi5oCisrKysgYi9zcmMva21zY29uX2NvbmYuaAorQEAgLTc5LDggKzc5LDYgQEAgc3RydWN0 IGttc2Nvbl9jb25mX3QgeworIAl1bnNpZ25lZCBpbnQgc2Vzc2lvbl9tYXg7CisgCS8qIGFsbG93 IGtleWJvYXJkIHNlc3Npb24gY29udHJvbCAqLworIAlib29sIHNlc3Npb25fY29udHJvbDsKKy0J LyogcnVuIHRlcm1pbmFsIHNlc3Npb24gKi8KKy0JYm9vbCB0ZXJtaW5hbF9zZXNzaW9uOworIAor IAkvKiBUZXJtaW5hbCBPcHRpb25zICovCisgCS8qIGRpc3BsYXkgL2V0Yy9pc3N1ZSBiZWZvcmUg bG9naW4gcHJvbXB0ICovCitAQCAtMTQ1LDggKzE0Myw2IEBAIHN0cnVjdCBrbXNjb25fY29uZl90 IHsKKyAJc3RydWN0IGNvbmZfZ3JhYiAqZ3JhYl9zZXNzaW9uX25leHQ7CisgCS8qIHNlc3Npb24t cHJldiBncmFiICovCisgCXN0cnVjdCBjb25mX2dyYWIgKmdyYWJfc2Vzc2lvbl9wcmV2OworLQkv KiBzZXNzaW9uLWR1bW15IGdyYWIgKi8KKy0Jc3RydWN0IGNvbmZfZ3JhYiAqZ3JhYl9zZXNzaW9u X2R1bW15OworIAkvKiBzZXNzaW9uLWNsb3NlIGdyYWIgKi8KKyAJc3RydWN0IGNvbmZfZ3JhYiAq Z3JhYl9zZXNzaW9uX2Nsb3NlOworIAkvKiB0ZXJtaW5hbC1uZXcgZ3JhYiAqLworZGlmZiAtLWdp dCBhL3NyYy9rbXNjb25fZHVtbXkuYyBiL3NyYy9rbXNjb25fZHVtbXkuYworZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCBmY2FmYjZjLi4wMDAwMDAwCistLS0gYS9zcmMva21zY29uX2R1 bW15LmMKKysrKyAvZGV2L251bGwKK0BAIC0xLDE1NCArMCwwIEBACistLyoKKy0gKiBrbXNjb24g LSBEdW1teSBTZXNzaW9uCistICoKKy0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgRGF2aWQgSGVycm1h bm4gPGRoLmhlcnJtYW5uQGdvb2dsZW1haWwuY29tPgorLSAqCistICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCist ICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcworLSAqICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworLSAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKy0gKiBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8K Ky0gKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8KKy0gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CistICoKKy0g KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz aGFsbCBiZSBpbmNsdWRlZAorLSAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlIFNvZnR3YXJlLgorLSAqCistICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKKy0gKiBPUiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCistICog TUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULgorLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCistICogQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKy0gKiBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRQorLSAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgorLSAqLworLQorLS8qCistICogRHVtbXkgU2Vzc2lvbgorLSAqLworLQorLSNpbmNs dWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+ CistI2luY2x1ZGUgImttc2Nvbl9kdW1teS5oIgorLSNpbmNsdWRlICJrbXNjb25fc2VhdC5oIgor LSNpbmNsdWRlICJzaGwvZGxpc3QuaCIKKy0jaW5jbHVkZSAic2hsL2xvZy5oIgorLSNpbmNsdWRl ICJ2aWRlby92aWRlby5oIgorLQorLSNkZWZpbmUgTE9HX1NVQlNZU1RFTSAiZHVtbXkiCistCist c3RydWN0IGRpc3BsYXkgeworLQlzdHJ1Y3Qgc2hsX2RsaXN0IGxpc3Q7CistCXN0cnVjdCBkaXNw bGF5ICpkaXNwOworLX07CistCistc3RydWN0IGttc2Nvbl9kdW1teSB7CistCXN0cnVjdCBrbXNj b25fc2Vzc2lvbiAqc2Vzc2lvbjsKKy0Jc3RydWN0IHNobF9kbGlzdCBkaXNwbGF5czsKKy0JYm9v bCBhY3RpdmU7CistfTsKKy0KKy1zdGF0aWMgdm9pZCBkdW1teV9yZWRyYXcoc3RydWN0IGttc2Nv bl9kdW1teSAqZHVtbXksIHN0cnVjdCBkaXNwbGF5ICpkKQorLXsKKy0JZGlzcGxheV9jbGVhcihk LT5kaXNwLCAwLCAwLCAwKTsKKy0JZGlzcGxheV9zd2FwKGQtPmRpc3ApOworLX0KKy0KKy1zdGF0 aWMgaW50IGR1bW15X3Nlc3Npb25fZXZlbnQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzaW9u LCBzdHJ1Y3Qga21zY29uX3Nlc3Npb25fZXZlbnQgKmV2LAorLQkJCSAgICAgICB2b2lkICpkYXRh KQorLXsKKy0Jc3RydWN0IGttc2Nvbl9kdW1teSAqZHVtbXkgPSBkYXRhOworLQlzdHJ1Y3QgZGlz cGxheSAqZDsKKy0Jc3RydWN0IHNobF9kbGlzdCAqaXRlcjsKKy0KKy0Jc3dpdGNoIChldi0+dHlw ZSkgeworLQljYXNlIEtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfTkVXOgorLQkJZCA9IG1hbGxvYyhz aXplb2YoKmQpKTsKKy0JCWlmICghZCkgeworLQkJCWxvZ19lcnJvcigiY2Fubm90IGFsbG9jYXRl IG1lbW9yeSBmb3IgbmV3IGRpc3BsYXkiKTsKKy0JCQlicmVhazsKKy0JCX0KKy0JCW1lbXNldChk LCAwLCBzaXplb2YoKmQpKTsKKy0JCWQtPmRpc3AgPSBldi0+ZGlzcDsKKy0JCXNobF9kbGlzdF9s aW5rX3RhaWwoJmR1bW15LT5kaXNwbGF5cywgJmQtPmxpc3QpOworLQkJaWYgKGR1bW15LT5hY3Rp dmUpCistCQkJZHVtbXlfcmVkcmF3KGR1bW15LCBkKTsKKy0JCWJyZWFrOworLQljYXNlIEtNU0NP Tl9TRVNTSU9OX0RJU1BMQVlfR09ORToKKy0JCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmZHVt bXktPmRpc3BsYXlzKQorLQkJeworLQkJCWQgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0 IGRpc3BsYXksIGxpc3QpOworLQkJCWlmIChkLT5kaXNwICE9IGV2LT5kaXNwKQorLQkJCQljb250 aW51ZTsKKy0KKy0JCQlzaGxfZGxpc3RfdW5saW5rKCZkLT5saXN0KTsKKy0JCQlmcmVlKGQpOwor LQkJCWJyZWFrOworLQkJfQorLQkJYnJlYWs7CistCWNhc2UgS01TQ09OX1NFU1NJT05fRElTUExB WV9SRUZSRVNIOgorLQkJc2hsX2RsaXN0X2Zvcl9lYWNoKGl0ZXIsICZkdW1teS0+ZGlzcGxheXMp CistCQl7CistCQkJZCA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3QgZGlzcGxheSwgbGlz dCk7CistCQkJaWYgKGQtPmRpc3AgIT0gZXYtPmRpc3ApCistCQkJCWNvbnRpbnVlOworLQorLQkJ CWlmIChkdW1teS0+YWN0aXZlKQorLQkJCQlkdW1teV9yZWRyYXcoZHVtbXksIGQpOworLQkJCWJy ZWFrOworLQkJfQorLQkJYnJlYWs7CistCWNhc2UgS01TQ09OX1NFU1NJT05fQUNUSVZBVEU6Cist CQlkdW1teS0+YWN0aXZlID0gdHJ1ZTsKKy0JCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAmZHVt bXktPmRpc3BsYXlzKQorLQkJeworLQkJCWQgPSBzaGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0 IGRpc3BsYXksIGxpc3QpOworLQkJCWR1bW15X3JlZHJhdyhkdW1teSwgZCk7CistCQl9CistCQli cmVhazsKKy0JY2FzZSBLTVNDT05fU0VTU0lPTl9ERUFDVElWQVRFOgorLQkJZHVtbXktPmFjdGl2 ZSA9IGZhbHNlOworLQkJYnJlYWs7CistCWNhc2UgS01TQ09OX1NFU1NJT05fVU5SRUdJU1RFUjoK Ky0JCXdoaWxlICghc2hsX2RsaXN0X2VtcHR5KCZkdW1teS0+ZGlzcGxheXMpKSB7CistCQkJZCA9 IHNobF9kbGlzdF9lbnRyeShkdW1teS0+ZGlzcGxheXMucHJldiwgc3RydWN0IGRpc3BsYXksIGxp c3QpOworLQkJCXNobF9kbGlzdF91bmxpbmsoJmQtPmxpc3QpOworLQkJCWZyZWUoZCk7CistCQl9 CistCistCQlmcmVlKGR1bW15KTsKKy0JCWJyZWFrOworLQl9CistCistCXJldHVybiAwOworLX0K Ky0KKy1pbnQga21zY29uX2R1bW15X3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91 dCwgc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorLXsKKy0Jc3RydWN0IGttc2Nvbl9kdW1teSAq ZHVtbXk7CistCWludCByZXQ7CistCistCWlmICghb3V0IHx8ICFzZWF0KQorLQkJcmV0dXJuIC1F SU5WQUw7CistCistCWR1bW15ID0gbWFsbG9jKHNpemVvZigqZHVtbXkpKTsKKy0JaWYgKCFkdW1t eSkKKy0JCXJldHVybiAtRU5PTUVNOworLQltZW1zZXQoZHVtbXksIDAsIHNpemVvZigqZHVtbXkp KTsKKy0Jc2hsX2RsaXN0X2luaXQoJmR1bW15LT5kaXNwbGF5cyk7CistCistCXJldCA9IGttc2Nv bl9zZWF0X3JlZ2lzdGVyX3Nlc3Npb24oc2VhdCwgJmR1bW15LT5zZXNzaW9uLCBkdW1teV9zZXNz aW9uX2V2ZW50LCBkdW1teSk7CistCWlmIChyZXQpIHsKKy0JCWxvZ19lcnJvcigiY2Fubm90IHJl Z2lzdGVyIHNlc3Npb24gZm9yIGR1bW15OiAlZCIsIHJldCk7CistCQlnb3RvIGVycl9mcmVlOwor LQl9CistCistCSpvdXQgPSBkdW1teS0+c2Vzc2lvbjsKKy0JbG9nX2RlYnVnKCJuZXcgZHVtbXkg b2JqZWN0ICVwIiwgZHVtbXkpOworLQlyZXR1cm4gMDsKKy0KKy1lcnJfZnJlZToKKy0JZnJlZShk dW1teSk7CistCXJldHVybiByZXQ7CistfQorZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25faXNzdWUu YyBiL3NyYy9rbXNjb25faXNzdWUuYworaW5kZXggMzg0NmY4OS4uYmZmYjc5MiAxMDA2NDQKKy0t LSBhL3NyYy9rbXNjb25faXNzdWUuYworKysrIGIvc3JjL2ttc2Nvbl9pc3N1ZS5jCitAQCAtMzYs MTYgKzM2LDYgQEAKKyAvKiBDYXAgdG90YWwgY29sbGVjdGVkIGlzc3VlIHRleHQgdG8gcHJldmVu dCBydW5hd2F5IGFsbG9jYXRpb24uICovCisgI2RlZmluZSBJU1NVRV9NQVhfU0laRSAoMjU2dSAq IDEwMjR1KQorIAorLS8qCistICogRGVmYXVsdCBzZWFyY2ggcGF0aCwgbWF0Y2hpbmcgYWdldHR5 J3MgZGVmYXVsdDoKKy0gKiAgIC9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5kCistICoKKy0gKiBEaXN0 cm9zIGNhbiBvdmVycmlkZSB0aGlzIHdpdGggLS1pc3N1ZS1wYXRoIG9yIHRoZSBpc3N1ZS1wYXRo IGNvbmZpZworLSAqIG9wdGlvbiB1c2luZyBhIGNvbG9uLXNlcGFyYXRlZCBsaXN0LiAgUGxhaW4g ZmlsZXMgYXJlIHJlYWQgZGlyZWN0bHk7CistICogZGlyZWN0b3JpZXMgYXJlIHNjYW5uZWQgZm9y ICouaXNzdWUgZmlsZXMgaW4gbGV4aWNvZ3JhcGhpYyBvcmRlci4KKy0gKi8KKy0jZGVmaW5lIElT U1VFX0RFRkFVTFRfUEFUSCAiL2V0Yy9pc3N1ZTovZXRjL2lzc3VlLmQiCistCisgLyogQ29sb3Ig ZXNjYXBlIGNvZGVzICovCisgLy8gY2xhbmctZm9ybWF0IG9mZgorICNkZWZpbmUgVUxfQ09MT1Jf UkVTRVQJCSJbMG0iCitkaWZmIC0tZ2l0IGEvc3JjL2ttc2Nvbl9pc3N1ZS5oIGIvc3JjL2ttc2Nv bl9pc3N1ZS5oCitpbmRleCBmNzQzODJhLi44OTAwYzk1IDEwMDY0NAorLS0tIGEvc3JjL2ttc2Nv bl9pc3N1ZS5oCisrKysgYi9zcmMva21zY29uX2lzc3VlLmgKK0BAIC0yOSw2ICsyOSwxNSBAQAor ICNpbmNsdWRlIDxsaWJ0c20uaD4KKyAjaW5jbHVkZSAicHR5LmgiCisgCisrLyoKKysgKiBEZWZh dWx0IHNlYXJjaCBwYXRoLCBtYXRjaGluZyBhZ2V0dHkncyBkZWZhdWx0LgorKyAqCisrICogRGlz dHJvcyBjYW4gb3ZlcnJpZGUgdGhpcyB3aXRoIC0taXNzdWUtcGF0aCBvciB0aGUgaXNzdWUtcGF0 aCBjb25maWcKKysgKiBvcHRpb24gdXNpbmcgYSBjb2xvbi1zZXBhcmF0ZWQgbGlzdC4gIFBsYWlu IGZpbGVzIGFyZSByZWFkIGRpcmVjdGx5OworKyAqIGRpcmVjdG9yaWVzIGFyZSBzY2FubmVkIGZv ciAqLmlzc3VlIGZpbGVzIGluIGxleGljb2dyYXBoaWMgb3JkZXIuCisrICovCisrI2RlZmluZSBJ U1NVRV9ERUZBVUxUX1BBVEggIi9ldGMvaXNzdWU6L2V0Yy9pc3N1ZS5kIgorKworIHZvaWQga21z Y29uX2lzc3VlX3dyaXRlKHN0cnVjdCB0c21fdnRlICp2dGUsIHN0cnVjdCBrbXNjb25fcHR5ICpw dHksIGNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoKTsKKyAKKyAjZW5kaWYgLyogS01TQ09OX0lTU1VF X0ggKi8KK2RpZmYgLS1naXQgYS9zcmMva21zY29uX21haW4uYyBiL3NyYy9rbXNjb25fbWFpbi5j CitpbmRleCA2ZmI1N2E4Li44MTM0M2Y0IDEwMDY0NAorLS0tIGEvc3JjL2ttc2Nvbl9tYWluLmMK KysrKyBiL3NyYy9rbXNjb25fbWFpbi5jCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlIDxz dHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3NpZ25hbGZkLmg+CisgI2luY2x1ZGUgImNvbmYuaCIK KysjaW5jbHVkZSAiZGJ1cy5oIgorICNpbmNsdWRlICJrbXNjb25fY29uZi5oIgorICNpbmNsdWRl ICJrbXNjb25fc2VhdC5oIgorICNpbmNsdWRlICJyZW5kZXIvdGV4dC5oIgorQEAgLTM5LDYgKzQw LDggQEAKKyAjaW5jbHVkZSAic2hsL21vZHVsZS5oIgorICNpbmNsdWRlICJ2aWRlby92aWRlby5o IgorIAorKyNkZWZpbmUgTE9HX1NVQlNZU1RFTSAia21zY29uIgorKworIHN0cnVjdCBrbXNjb25f YXBwIHsKKyAJc3RydWN0IGNvbmZfY3R4ICpjb25mX2N0eDsKKyAJc3RydWN0IGttc2Nvbl9jb25m X3QgKmNvbmY7CitAQCAtNDksNiArNTIsNyBAQCBzdHJ1Y3Qga21zY29uX2FwcCB7CisgCXN0cnVj dCBjb25mX2N0eCAqc2VhdF9jdHg7CisgCXN0cnVjdCBrbXNjb25fY29uZl90ICpzZWF0X2NvbmY7 CisgCXN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdDsKKysJc3RydWN0IGttc2Nvbl9kYnVzICpkYnVz OworIH07CisgCisgc3RhdGljIGludCBhcHBfc2VhdF9ldmVudChzdHJ1Y3Qga21zY29uX3NlYXQg KnMsIHVuc2lnbmVkIGludCBldmVudCwgdm9pZCAqZGF0YSkKK0BAIC0xMTIsNiArMTE2LDMwIEBA IHN0YXRpYyB2b2lkIGRlc3Ryb3lfYXBwKHN0cnVjdCBrbXNjb25fYXBwICphcHApCisgCWV2X2Vs b29wX3VucmVnaXN0ZXJfc2lnbmFsX2NiKGFwcC0+ZWxvb3AsIFNJR0lOVCwgYXBwX3NpZ19nZW5l cmljLCBhcHApOworIAlldl9lbG9vcF91bnJlZ2lzdGVyX3NpZ25hbF9jYihhcHAtPmVsb29wLCBT SUdURVJNLCBhcHBfc2lnX2dlbmVyaWMsIGFwcCk7CisgCWV2X2Vsb29wX3VucmVmKGFwcC0+ZWxv b3ApOworKwlrbXNjb25fZGJ1c19mcmVlKGFwcC0+ZGJ1cyk7CisrfQorKworK3N0YXRpYyB2b2lk IHVwZGF0ZV94a2JfbGF5b3V0KGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlvdXQs IGNvbnN0IGNoYXIgKnZhcmlhbnQsCisrCQkJICAgICAgY29uc3QgY2hhciAqb3B0aW9ucywgdm9p ZCAqZGF0YSkKKyt7CisrCXN0cnVjdCBrbXNjb25fYXBwICphcHAgPSBkYXRhOworKworKwlsb2df ZGVidWcoInVwZGF0aW5nIHhrYiBsYXlvdXQ6ICVzLCAlcywgJXMsICVzIiwgbW9kZWwsIGxheW91 dCwgdmFyaWFudCwgb3B0aW9ucyk7CisrCWlmIChrbXNjb25fc2VhdF91cGRhdGVfeGtiX2xheW91 dChhcHAtPnNlYXQsIG1vZGVsLCBsYXlvdXQsIHZhcmlhbnQsIG9wdGlvbnMpKQorKwkJbG9nX2Vy cm9yKCJjYW5ub3QgdXBkYXRlIHhrYiBsYXlvdXQiKTsKKyt9CisrCisrc3RhdGljIHZvaWQgbGlz dGVuX3RvX2RidXNfbG9jYWxlMShzdHJ1Y3Qga21zY29uX2FwcCAqYXBwKQorK3sKKysJaW50IHJl dDsKKysKKysJaWYgKGFwcC0+Y29uZi0+eGtiX2tleW1hcCB8fCBhcHAtPmNvbmYtPnhrYl9tb2Rl bCB8fCBhcHAtPmNvbmYtPnhrYl9sYXlvdXQgfHwKKysJICAgIGFwcC0+Y29uZi0+eGtiX3Zhcmlh bnQgfHwgYXBwLT5jb25mLT54a2Jfb3B0aW9ucykKKysJCXJldHVybjsKKysKKysJcmV0ID0ga21z Y29uX2RidXNfbGlzdGVuX2xvY2FsZTEoYXBwLT5kYnVzLCB1cGRhdGVfeGtiX2xheW91dCwgYXBw KTsKKysJaWYgKHJldCkKKysJCWxvZ193YXJuaW5nKCJjYW5ub3QgbGlzdGVuIHRvIGxvY2FsZTE6 ICVkIiwgcmV0KTsKKyB9CisgCisgc3RhdGljIGludCBzZXR1cF9hcHAoc3RydWN0IGttc2Nvbl9h cHAgKmFwcCkKK0BAIC0xNDIsNiArMTcwLDExIEBAIHN0YXRpYyBpbnQgc2V0dXBfYXBwKHN0cnVj dCBrbXNjb25fYXBwICphcHApCisgCQlnb3RvIGVycl9hcHA7CisgCX0KKyAKKysJYXBwLT5kYnVz ID0ga21zY29uX2RidXNfbmV3KGFwcC0+ZWxvb3ApOworKwlpZiAoYXBwLT5kYnVzKSB7CisrCQlr bXNjb25fZGJ1c19zZXRfeGtiX2Vudl9mcm9tX2xvY2FsZTEoYXBwLT5kYnVzKTsKKysJCWxpc3Rl bl90b19kYnVzX2xvY2FsZTEoYXBwKTsKKysJfQorIAlyZXR1cm4gMDsKKyAKKyBlcnJfYXBwOgor ZGlmZiAtLWdpdCBhL3NyYy9rbXNjb25fc2VhdC5jIGIvc3JjL2ttc2Nvbl9zZWF0LmMKK2luZGV4 IDdiNjc1OWEuLjkxYjhkYjggMTAwNjQ0CistLS0gYS9zcmMva21zY29uX3NlYXQuYworKysrIGIv c3JjL2ttc2Nvbl9zZWF0LmMKK0BAIC0zOSw3ICszOSw2IEBACisgI2luY2x1ZGUgImNvbmYuaCIK KyAjaW5jbHVkZSAiaW5wdXQvaW5wdXQuaCIKKyAjaW5jbHVkZSAia21zY29uX2NvbmYuaCIKKy0j aW5jbHVkZSAia21zY29uX2R1bW15LmgiCisgI2luY2x1ZGUgImttc2Nvbl9zZWF0LmgiCisgI2lu Y2x1ZGUgImttc2Nvbl90ZXJtaW5hbC5oIgorICNpbmNsdWRlICJzaGwvZGxpc3QuaCIKK0BAIC01 MywxNyArNTIsMTIgQEAKKyAKKyBzdHJ1Y3Qga21zY29uX3Nlc3Npb24geworIAlzdHJ1Y3Qgc2hs X2RsaXN0IGxpc3Q7CistCXVuc2lnbmVkIGxvbmcgcmVmOworIAlzdHJ1Y3Qga21zY29uX3NlYXQg KnNlYXQ7CisgCistCWJvb2wgZW5hYmxlZDsKKyAJYm9vbCBmb3JlZ3JvdW5kOworLQlib29sIGRl YWN0aXZhdGluZzsKKyAKKyAJc3RydWN0IGV2X3RpbWVyICp0aW1lcjsKKy0KKy0Ja21zY29uX3Nl c3Npb25fY2JfdCBjYjsKKy0Jdm9pZCAqZGF0YTsKKysJc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAq dGVybTsKKyB9OworIAorIHN0cnVjdCBrbXNjb25fZGlzcGxheSB7CitAQCAtODUsMTIgKzc5LDYg QEAgc3RydWN0IGttc2Nvbl92aWRlbyB7CisgCWJvb2wgYXdha2U7CisgfTsKKyAKKy1lbnVtIGtt c2Nvbl9hc3luY19zY2hlZHVsZSB7CistCVNDSEVEVUxFX1NXSVRDSCwKKy0JU0NIRURVTEVfVlQs CistCVNDSEVEVUxFX1VOUkVHSVNURVIsCistfTsKKy0KKyBzdHJ1Y3Qga21zY29uX3NlYXQgewor IAlzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wOworIAlzdHJ1Y3QgY29uZl9jdHggKmNvbmZfY3R4Owor QEAgLTExMCwxMCArOTgsNiBAQCBzdHJ1Y3Qga21zY29uX3NlYXQgeworIAlib29sIGF3YWtlOwor IAlib29sIGZvcmVncm91bmQ7CisgCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqY3VycmVudF9zZXNz OworLQlzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNjaGVkdWxlZF9zZXNzOworLQlzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKmR1bW15X3Nlc3M7CistCistCXVuc2lnbmVkIGludCBhc3luY19zY2hlZHVs ZTsKKyAKKyAJLyogRFBNUyB0aW1lb3V0IG1hbmFnZW1lbnQgKi8KKyAJc3RydWN0IGV2X3RpbWVy ICpkcG1zX3RpbWVyOworQEAgLTEzMyw0OCArMTE3LDEwIEBAIHN0YXRpYyBpbnQga21zY29uX3Nl YXRfYWRkX3ZpZGVvKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgZW51bSB1dGVybV9tb25pdG9y X2RlCisgc3RhdGljIHZvaWQga21zY29uX3NlYXRfcmVtb3ZlX3ZpZGVvKHN0cnVjdCBrbXNjb25f c2VhdCAqc2VhdCwgdm9pZCAqZGF0YSk7Cisgc3RhdGljIHZvaWQga21zY29uX3NlYXRfcG9sbF92 aWRlbyh2b2lkICpkYXRhKTsKKyAKKy1zdGF0aWMgaW50IHNlc3Npb25fY2FsbChzdHJ1Y3Qga21z Y29uX3Nlc3Npb24gKnNlc3MsIHVuc2lnbmVkIGludCBldmVudCwgc3RydWN0IGRpc3BsYXkgKmRp c3ApCisteworLQlzdHJ1Y3Qga21zY29uX3Nlc3Npb25fZXZlbnQgZXY7CistCistCWlmICghc2Vz cy0+Y2IpCistCQlyZXR1cm4gMDsKKy0KKy0JbWVtc2V0KCZldiwgMCwgc2l6ZW9mKGV2KSk7Cist CWV2LnR5cGUgPSBldmVudDsKKy0JZXYuZGlzcCA9IGRpc3A7CistCXJldHVybiBzZXNzLT5jYihz ZXNzLCAmZXYsIHNlc3MtPmRhdGEpOworLX0KKy0KKy1zdGF0aWMgaW50IHNlc3Npb25fY2FsbF9h Y3RpdmF0ZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisteworLQlsb2dfZGVidWcoImFj dGl2YXRlIHNlc3Npb24gJXAiLCBzZXNzKTsKKy0JcmV0dXJuIHNlc3Npb25fY2FsbChzZXNzLCBL TVNDT05fU0VTU0lPTl9BQ1RJVkFURSwgTlVMTCk7CistfQorLQorLXN0YXRpYyBpbnQgc2Vzc2lv bl9jYWxsX2RlYWN0aXZhdGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQorLXsKKy0JbG9n X2RlYnVnKCJkZWFjdGl2YXRlIHNlc3Npb24gJXAiLCBzZXNzKTsKKy0JcmV0dXJuIHNlc3Npb25f Y2FsbChzZXNzLCBLTVNDT05fU0VTU0lPTl9ERUFDVElWQVRFLCBOVUxMKTsKKy19CistCistc3Rh dGljIHZvaWQgc2Vzc2lvbl9jYWxsX2Rpc3BsYXlfbmV3KHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAq c2Vzcywgc3RydWN0IGRpc3BsYXkgKmRpc3ApCisteworLQlzZXNzaW9uX2NhbGwoc2VzcywgS01T Q09OX1NFU1NJT05fRElTUExBWV9ORVcsIGRpc3ApOworLX0KKy0KKy1zdGF0aWMgdm9pZCBzZXNz aW9uX2NhbGxfZGlzcGxheV9nb25lKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcywgc3RydWN0 IGRpc3BsYXkgKmRpc3ApCisteworLQlzZXNzaW9uX2NhbGwoc2VzcywgS01TQ09OX1NFU1NJT05f RElTUExBWV9HT05FLCBkaXNwKTsKKy19CistCistc3RhdGljIHZvaWQgc2Vzc2lvbl9jYWxsX2Rp c3BsYXlfcmVmcmVzaChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MsIHN0cnVjdCBkaXNwbGF5 ICpkaXNwKQorLXsKKy0Jc2Vzc2lvbl9jYWxsKHNlc3MsIEtNU0NPTl9TRVNTSU9OX0RJU1BMQVlf UkVGUkVTSCwgZGlzcCk7CistfQorLQorIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KKyBzdGF0 aWMgdm9pZCBzZWF0X2RwbXNfcmVzZXRfdGltZXIoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KTsK KytzdGF0aWMgc3RydWN0IGttc2Nvbl9zZXNzaW9uICprbXNjb25fc2VhdF9uZXdfc2Vzc2lvbihz dHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpOworK3N0YXRpYyB2b2lkIGttc2Nvbl9zZXNzaW9uX3Vu cmVnaXN0ZXIoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKKyAKKyBzdGF0aWMgdm9pZCBh Y3RpdmF0ZV9kaXNwbGF5KHN0cnVjdCBrbXNjb25fZGlzcGxheSAqZCkKKyB7CitAQCAtMjAzLDEy ICsxNDksMTIgQEAgc3RhdGljIHZvaWQgYWN0aXZhdGVfZGlzcGxheShzdHJ1Y3Qga21zY29uX2Rp c3BsYXkgKmQpCisgCQlzaGxfZGxpc3RfZm9yX2VhY2hfc2FmZShpdGVyLCB0bXAsICZzZWF0LT5z ZXNzaW9ucykKKyAJCXsKKyAJCQlzID0gc2hsX2RsaXN0X2VudHJ5KGl0ZXIsIHN0cnVjdCBrbXNj b25fc2Vzc2lvbiwgbGlzdCk7CistCQkJc2Vzc2lvbl9jYWxsX2Rpc3BsYXlfbmV3KHMsIGQtPmRp c3ApOworKwkJCXRlcm1pbmFsX2FkZF9kaXNwbGF5KHMtPnRlcm0sIGQtPmRpc3ApOworIAkJfQor IAl9CisgfQorIAorLXN0YXRpYyBpbnQgc2VhdF9nb19mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25f c2VhdCAqc2VhdCwgYm9vbCBmb3JjZSkKKytzdGF0aWMgaW50IHNlYXRfZ29fZm9yZWdyb3VuZChz dHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisgeworIAlzdHJ1Y3Qgc2hsX2RsaXN0ICppdGVyLCAq dG1wOworIAlzdHJ1Y3Qga21zY29uX3ZpZGVvICp2aWQ7CitAQCAtMjE3LDcgKzE2Myw3IEBAIHN0 YXRpYyBpbnQgc2VhdF9nb19mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgYm9v bCBmb3JjZSkKKyAKKyAJaWYgKHNlYXQtPmZvcmVncm91bmQpCisgCQlyZXR1cm4gMDsKKy0JaWYg KCFzZWF0LT5hd2FrZSB8fCAoIWZvcmNlICYmIHNlYXQtPmN1cnJlbnRfc2VzcykpCisrCWlmICgh c2VhdC0+YXdha2UpCisgCQlyZXR1cm4gLUVCVVNZOworIAorIAlzZWF0LT5mb3JlZ3JvdW5kID0g dHJ1ZTsKK0BAIC0yNTEsMTQgKzE5NywxNCBAQCBzdGF0aWMgaW50IHNlYXRfZ29fZm9yZWdyb3Vu ZChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJvb2wgZm9yY2UpCisgCXJldHVybiAwOworIH0K KyAKKy1zdGF0aWMgaW50IHNlYXRfZ29fYmFja2dyb3VuZChzdHJ1Y3Qga21zY29uX3NlYXQgKnNl YXQsIGJvb2wgZm9yY2UpCisrc3RhdGljIGludCBzZWF0X2dvX2JhY2tncm91bmQoc3RydWN0IGtt c2Nvbl9zZWF0ICpzZWF0KQorIHsKKyAJc3RydWN0IHNobF9kbGlzdCAqaXRlcjsKKyAJc3RydWN0 IGttc2Nvbl92aWRlbyAqdmlkOworIAorIAlpZiAoIXNlYXQtPmZvcmVncm91bmQpCisgCQlyZXR1 cm4gMDsKKy0JaWYgKCFzZWF0LT5hd2FrZSB8fCAoIWZvcmNlICYmIHNlYXQtPmN1cnJlbnRfc2Vz cykpCisrCWlmICghc2VhdC0+YXdha2UpCisgCQlyZXR1cm4gLUVCVVNZOworIAorIAlzaGxfZGxp c3RfZm9yX2VhY2goaXRlciwgJnNlYXQtPnZpZGVvcykKK0BAIC0yNzEsMjUgKzIxNywxNSBAQCBz dGF0aWMgaW50IHNlYXRfZ29fYmFja2dyb3VuZChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJv b2wgZm9yY2UpCisgCXJldHVybiAwOworIH0KKyAKKy1zdGF0aWMgaW50IHNlYXRfZ29fYXNsZWVw KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgYm9vbCBmb3JjZSkKKytzdGF0aWMgaW50IHNlYXRf Z29fYXNsZWVwKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKKyB7CistCWludCBlcnIgPSAwOwor LQorIAlpZiAoIXNlYXQtPmF3YWtlKQorIAkJcmV0dXJuIDA7CistCWlmIChzZWF0LT5jdXJyZW50 X3Nlc3MgfHwgc2VhdC0+Zm9yZWdyb3VuZCkgeworLQkJaWYgKGZvcmNlKSB7CistCQkJc2VhdC0+ Zm9yZWdyb3VuZCA9IGZhbHNlOworLQkJCXNlYXQtPmN1cnJlbnRfc2VzcyA9IE5VTEw7CistCQkJ ZXJyID0gLUVCVVNZOworLQkJfSBlbHNlIHsKKy0JCQlyZXR1cm4gLUVCVVNZOworLQkJfQorLQl9 CisrCisgCXNlYXQtPmF3YWtlID0gZmFsc2U7CisgCWlucHV0X3NsZWVwKHNlYXQtPmlucHV0KTsK KyAKKy0JcmV0dXJuIGVycjsKKysJcmV0dXJuIDA7CisgfQorIAorIHN0YXRpYyBpbnQgc2VhdF9n b19hd2FrZShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCitAQCAtMzEzLDE5NiArMjQ5LDUyIEBA IHN0YXRpYyBpbnQgc2VhdF9nb19hd2FrZShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisgCXJl dHVybiAwOworIH0KKyAKKy1zdGF0aWMgaW50IHNlYXRfcnVuKHN0cnVjdCBrbXNjb25fc2VhdCAq c2VhdCkKKytzdGF0aWMgdm9pZCBzZWF0X3N3aXRjaChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQs IHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqbmV3KQorIHsKKy0JaW50IHJldDsKKy0Jc3RydWN0IGtt c2Nvbl9zZXNzaW9uICpzZXNzaW9uOworLQorLQlpZiAoIXNlYXQtPmF3YWtlKQorLQkJcmV0dXJu IC1FQlVTWTsKKy0JaWYgKHNlYXQtPmN1cnJlbnRfc2VzcykKKy0JCXJldHVybiAwOworLQorLQlp ZiAoIXNlYXQtPnNjaGVkdWxlZF9zZXNzKSB7CistCQlsb2dfZGVidWcoIm5vIHNlc3Npb24gc2No ZWR1bGVkIHRvIHJ1biAobnVtICV6dSkiLCBzZWF0LT5zZXNzaW9uX2NvdW50KTsKKy0JCXJldHVy biAtRU5PRU5UOworLQl9CistCXNlc3Npb24gPSBzZWF0LT5zY2hlZHVsZWRfc2VzczsKKy0KKy0J aWYgKHNlc3Npb24tPmZvcmVncm91bmQgJiYgIXNlYXQtPmZvcmVncm91bmQpIHsKKy0JCXJldCA9 IHNlYXRfZ29fZm9yZWdyb3VuZChzZWF0LCBmYWxzZSk7CistCQlpZiAocmV0KSB7CistCQkJbG9n X3dhcm5pbmcoImNhbm5vdCBwdXQgc2VhdCAlcyBpbnRvIGZvcmVncm91bmQgZm9yIHNlc3Npb24g JXAiLCBzZWF0LT5uYW1lLAorLQkJCQkgICAgc2Vzc2lvbik7CistCQkJcmV0dXJuIHJldDsKKy0J CX0KKy0JfSBlbHNlIGlmICghc2Vzc2lvbi0+Zm9yZWdyb3VuZCAmJiBzZWF0LT5mb3JlZ3JvdW5k KSB7CistCQlyZXQgPSBzZWF0X2dvX2JhY2tncm91bmQoc2VhdCwgZmFsc2UpOworLQkJaWYgKHJl dCkgeworLQkJCWxvZ193YXJuaW5nKCJjYW5ub3QgcHV0IHNlYXQgJXMgaW50byBiYWNrZ3JvdW5k IGZvciBzZXNzaW9uICVwIiwgc2VhdC0+bmFtZSwKKy0JCQkJICAgIHNlc3Npb24pOworLQkJCXJl dHVybiByZXQ7CistCQl9CistCX0KKy0KKy0JcmV0ID0gc2Vzc2lvbl9jYWxsX2FjdGl2YXRlKHNl c3Npb24pOworLQlpZiAocmV0KSB7CistCQlsb2dfd2FybmluZygiY2Fubm90IGFjdGl2YXRlIHNl c3Npb24gJXA6ICVkIiwgc2Vzc2lvbiwgcmV0KTsKKy0JCXJldHVybiByZXQ7CistCX0KKy0KKy0J c2VhdC0+Y3VycmVudF9zZXNzID0gc2Vzc2lvbjsKKy0KKy0JcmV0dXJuIDA7CistfQorLQorLXN0 YXRpYyB2b2lkIHNlc3Npb25fZGVhY3RpdmF0ZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3Mp CisteworLQlpZiAoc2Vzcy0+c2VhdC0+Y3VycmVudF9zZXNzICE9IHNlc3MpCisrCWlmIChzZWF0 LT5jdXJyZW50X3Nlc3MgPT0gbmV3KQorIAkJcmV0dXJuOworIAorLQlzZXNzLT5zZWF0LT5hc3lu Y19zY2hlZHVsZSA9IFNDSEVEVUxFX1NXSVRDSDsKKy0Jc2Vzcy0+ZGVhY3RpdmF0aW5nID0gZmFs c2U7CistCXNlc3MtPnNlYXQtPmN1cnJlbnRfc2VzcyA9IE5VTEw7CistfQorLQorLXN0YXRpYyBp bnQgc2VhdF9wYXVzZShzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIGJvb2wgZm9yY2UpCistewor LQlpbnQgcmV0OworLQorLQlpZiAoIXNlYXQtPmN1cnJlbnRfc2VzcykKKy0JCXJldHVybiAwOwor LQorLQlzZWF0LT5jdXJyZW50X3Nlc3MtPmRlYWN0aXZhdGluZyA9IHRydWU7CistCXJldCA9IHNl c3Npb25fY2FsbF9kZWFjdGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vzcyk7CistCWlmIChyZXQpIHsK Ky0JCWlmIChyZXQgPT0gLUVJTlBST0dSRVNTKQorLQkJCWxvZ19kZWJ1ZygicGVuZGluZyBkZWFj dGl2YXRpb24gZm9yIHNlc3Npb24gJXAiLCBzZWF0LT5jdXJyZW50X3Nlc3MpOworLQkJZWxzZQor LQkJCWxvZ193YXJuaW5nKCJjYW5ub3QgZGVhY3RpdmF0ZSBzZXNzaW9uICVwOiAlZCIsIHNlYXQt PmN1cnJlbnRfc2VzcywgcmV0KTsKKy0JCWlmICghZm9yY2UpCistCQkJcmV0dXJuIHJldDsKKy0J fQorLQorLQlzZXNzaW9uX2RlYWN0aXZhdGUoc2VhdC0+Y3VycmVudF9zZXNzKTsKKy0KKy0JcmV0 dXJuIHJldDsKKy19CistCistc3RhdGljIHZvaWQgc2VhdF9yZXNjaGVkdWxlKHN0cnVjdCBrbXNj b25fc2VhdCAqc2VhdCkKKy17CistCXN0cnVjdCBzaGxfZGxpc3QgKml0ZXIsICpzdGFydDsKKy0J c3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzOworLQorLQlpZiAoc2VhdC0+c2NoZWR1bGVkX3Nl c3MgJiYgc2VhdC0+c2NoZWR1bGVkX3Nlc3MtPmVuYWJsZWQpCistCQlyZXR1cm47CistCistCWlm IChzZWF0LT5jdXJyZW50X3Nlc3MgJiYgc2VhdC0+Y3VycmVudF9zZXNzLT5lbmFibGVkKSB7Cist CQlzZWF0LT5zY2hlZHVsZWRfc2VzcyA9IHNlYXQtPmN1cnJlbnRfc2VzczsKKy0JCXJldHVybjsK Ky0JfQorKwlsb2dfZGVidWcoInN3aXRjaCBzZXNzaW9uIGZyb20gJXAgdG8gJXAgb24gc2VhdCAl cyIsIHNlYXQtPmN1cnJlbnRfc2VzcywgbmV3LCBzZWF0LT5uYW1lKTsKKyAKKyAJaWYgKHNlYXQt PmN1cnJlbnRfc2VzcykKKy0JCXN0YXJ0ID0gJnNlYXQtPmN1cnJlbnRfc2Vzcy0+bGlzdDsKKy0J ZWxzZQorLQkJc3RhcnQgPSAmc2VhdC0+c2Vzc2lvbnM7CistCistCXNobF9kbGlzdF9mb3JfZWFj aF9idXRfb25lKGl0ZXIsIHN0YXJ0LCAmc2VhdC0+c2Vzc2lvbnMpCistCXsKKy0JCXNlc3MgPSBz aGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKKy0JCWlm IChzZXNzID09IHNlYXQtPmR1bW15X3Nlc3MgfHwgIXNlc3MtPmVuYWJsZWQpCistCQkJY29udGlu dWU7CistCQlzZWF0LT5zY2hlZHVsZWRfc2VzcyA9IHNlc3M7CistCQlyZXR1cm47CisrCQl0ZXJt aW5hbF9kZWFjdGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vzcy0+dGVybSk7CisrCWlmIChuZXcpIHsK KysJCWlmIChuZXctPmZvcmVncm91bmQgJiYgIXNlYXQtPmZvcmVncm91bmQpIHsKKysJCQlzZWF0 X2dvX2ZvcmVncm91bmQoc2VhdCk7CisrCQl9IGVsc2UgaWYgKCFuZXctPmZvcmVncm91bmQgJiYg c2VhdC0+Zm9yZWdyb3VuZCkgeworKwkJCXNlYXRfZ29fYmFja2dyb3VuZChzZWF0KTsKKysJCX0K KysJCXRlcm1pbmFsX2FjdGl2YXRlKG5ldy0+dGVybSk7CisgCX0KKy0KKy0JaWYgKHNlYXQtPmR1 bW15X3Nlc3MgJiYgc2VhdC0+ZHVtbXlfc2Vzcy0+ZW5hYmxlZCkKKy0JCXNlYXQtPnNjaGVkdWxl ZF9zZXNzID0gc2VhdC0+ZHVtbXlfc2VzczsKKy0JZWxzZQorLQkJc2VhdC0+c2NoZWR1bGVkX3Nl c3MgPSBOVUxMOworLX0KKy0KKy1zdGF0aWMgYm9vbCBzZWF0X2hhc19zY2hlZHVsZShzdHJ1Y3Qg a21zY29uX3NlYXQgKnNlYXQpCisteworLQlyZXR1cm4gc2VhdC0+c2NoZWR1bGVkX3Nlc3MgJiYg c2VhdC0+c2NoZWR1bGVkX3Nlc3MgIT0gc2VhdC0+Y3VycmVudF9zZXNzOworLX0KKy0KKy1zdGF0 aWMgaW50IHNlYXRfc3dpdGNoKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkKKy17CistCWludCBy ZXQ7CistCistCXNlYXQtPmFzeW5jX3NjaGVkdWxlID0gU0NIRURVTEVfU1dJVENIOworLQlyZXQg PSBzZWF0X3BhdXNlKHNlYXQsIGZhbHNlKTsKKy0JaWYgKHJldCkKKy0JCXJldHVybiByZXQ7Cist CistCXJldHVybiBzZWF0X3J1bihzZWF0KTsKKysJc2VhdC0+Y3VycmVudF9zZXNzID0gbmV3Owor IH0KKyAKKyBzdGF0aWMgdm9pZCBzZWF0X25leHQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQor IHsKKy0Jc3RydWN0IHNobF9kbGlzdCAqY3VyLCAqaXRlcjsKKy0Jc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzLCAqbmV4dDsKKysJc3RydWN0IGttc2Nvbl9zZXNzaW9uICpuZXh0ID0gTlVMTDsKKyAK KyAJaWYgKHNlYXQtPmN1cnJlbnRfc2VzcykKKy0JCWN1ciA9ICZzZWF0LT5jdXJyZW50X3Nlc3Mt Pmxpc3Q7CistCWVsc2UgaWYgKHNlYXQtPnNlc3Npb25fY291bnQpCistCQljdXIgPSAmc2VhdC0+ c2Vzc2lvbnM7CistCWVsc2UKKy0JCXJldHVybjsKKy0KKy0JbmV4dCA9IE5VTEw7CistCWlmICgh c2VhdC0+Y3VycmVudF9zZXNzICYmIHNlYXQtPmR1bW15X3Nlc3MgJiYgc2VhdC0+ZHVtbXlfc2Vz cy0+ZW5hYmxlZCkKKy0JCW5leHQgPSBzZWF0LT5kdW1teV9zZXNzOworLQorLQlzaGxfZGxpc3Rf Zm9yX2VhY2hfYnV0X29uZShpdGVyLCBjdXIsICZzZWF0LT5zZXNzaW9ucykKKy0JeworLQkJcyA9 IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxpc3QpOworLQkJ aWYgKCFzLT5lbmFibGVkIHx8IHNlYXQtPmR1bW15X3Nlc3MgPT0gcykKKy0JCQljb250aW51ZTsK Ky0KKy0JCW5leHQgPSBzOworLQkJYnJlYWs7CistCX0KKy0KKysJCW5leHQgPSBzaGxfZGxpc3Rf bmV4dChzZWF0LT5jdXJyZW50X3Nlc3MsICZzZWF0LT5zZXNzaW9ucywgbGlzdCk7CisgCWlmICgh bmV4dCkKKy0JCXJldHVybjsKKysJCW5leHQgPSBzaGxfZGxpc3RfZmlyc3QoJnNlYXQtPnNlc3Np b25zLCBzdHJ1Y3Qga21zY29uX3Nlc3Npb24sIGxpc3QpOworKwlpZiAobmV4dCAmJiBuZXh0ID09 IHNlYXQtPmN1cnJlbnRfc2VzcykKKysJCW5leHQgPSBOVUxMOworIAorLQlzZWF0LT5zY2hlZHVs ZWRfc2VzcyA9IG5leHQ7CistCXNlYXRfc3dpdGNoKHNlYXQpOworKwlzZWF0X3N3aXRjaChzZWF0 LCBuZXh0KTsKKyB9CisgCisgc3RhdGljIHZvaWQgc2VhdF9wcmV2KHN0cnVjdCBrbXNjb25fc2Vh dCAqc2VhdCkKKyB7CistCXN0cnVjdCBzaGxfZGxpc3QgKmN1ciwgKml0ZXI7CistCXN0cnVjdCBr bXNjb25fc2Vzc2lvbiAqcywgKnByZXY7CisrCXN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqcHJldiA9 IE5VTEw7CisgCisgCWlmIChzZWF0LT5jdXJyZW50X3Nlc3MpCistCQljdXIgPSAmc2VhdC0+Y3Vy cmVudF9zZXNzLT5saXN0OworLQllbHNlIGlmIChzZWF0LT5zZXNzaW9uX2NvdW50KQorLQkJY3Vy ID0gJnNlYXQtPnNlc3Npb25zOworLQllbHNlCistCQlyZXR1cm47CistCistCXByZXYgPSBOVUxM OworLQlpZiAoIXNlYXQtPmN1cnJlbnRfc2VzcyAmJiBzZWF0LT5kdW1teV9zZXNzICYmIHNlYXQt PmR1bW15X3Nlc3MtPmVuYWJsZWQpCistCQlwcmV2ID0gc2VhdC0+ZHVtbXlfc2VzczsKKy0KKy0J c2hsX2RsaXN0X2Zvcl9lYWNoX3JldmVyc2VfYnV0X29uZShpdGVyLCBjdXIsICZzZWF0LT5zZXNz aW9ucykKKy0JeworLQkJcyA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX3Nl c3Npb24sIGxpc3QpOworLQkJaWYgKCFzLT5lbmFibGVkIHx8IHNlYXQtPmR1bW15X3Nlc3MgPT0g cykKKy0JCQljb250aW51ZTsKKy0KKy0JCXByZXYgPSBzOworLQkJYnJlYWs7CistCX0KKy0KKysJ CXByZXYgPSBzaGxfZGxpc3RfcHJldihzZWF0LT5jdXJyZW50X3Nlc3MsICZzZWF0LT5zZXNzaW9u cywgbGlzdCk7CisgCWlmICghcHJldikKKy0JCXJldHVybjsKKysJCXByZXYgPSBzaGxfZGxpc3Rf bGFzdCgmc2VhdC0+c2Vzc2lvbnMsIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiwgbGlzdCk7CisrCWlm IChwcmV2ICYmIHByZXYgPT0gc2VhdC0+Y3VycmVudF9zZXNzKQorKwkJcHJldiA9IE5VTEw7Cisg CistCXNlYXQtPnNjaGVkdWxlZF9zZXNzID0gcHJldjsKKy0Jc2VhdF9zd2l0Y2goc2VhdCk7Cisr CXNlYXRfc3dpdGNoKHNlYXQsIHByZXYpOworIH0KKyAKKyBzdGF0aWMgdm9pZCBzZWF0X2FkZF9k aXNwbGF5KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCitA QCAtNTM2LDcgKzMyOCw3IEBAIHN0YXRpYyB2b2lkIHNlYXRfcmVtb3ZlX2Rpc3BsYXkoc3RydWN0 IGttc2Nvbl9zZWF0ICpzZWF0LCBzdHJ1Y3Qga21zY29uX2Rpc3BsYXkKKyAJCXNobF9kbGlzdF9m b3JfZWFjaF9zYWZlKGl0ZXIsIHRtcCwgJnNlYXQtPnNlc3Npb25zKQorIAkJeworIAkJCXMgPSBz aGxfZGxpc3RfZW50cnkoaXRlciwgc3RydWN0IGttc2Nvbl9zZXNzaW9uLCBsaXN0KTsKKy0JCQlz ZXNzaW9uX2NhbGxfZGlzcGxheV9nb25lKHMsIGQtPmRpc3ApOworKwkJCXRlcm1pbmFsX3JtX2Rp c3BsYXkocy0+dGVybSwgZC0+ZGlzcCk7CisgCQl9CisgCX0KKyAKK0BAIC01NjksNyArMzYxLDcg QEAgc3RhdGljIHZvaWQgc2VhdF9yZWZyZXNoX2Rpc3BsYXkoc3RydWN0IGttc2Nvbl9zZWF0ICpz ZWF0LCBzdHJ1Y3Qga21zY29uX2Rpc3BsYXkKKyAJCXNobF9kbGlzdF9mb3JfZWFjaChpdGVyLCAm c2VhdC0+c2Vzc2lvbnMpCisgCQl7CisgCQkJcyA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1 Y3Qga21zY29uX3Nlc3Npb24sIGxpc3QpOworLQkJCXNlc3Npb25fY2FsbF9kaXNwbGF5X3JlZnJl c2gocywgZC0+ZGlzcCk7CisrCQkJdGVybWluYWxfcmVmcmVzaF9kaXNwbGF5cyhzLT50ZXJtKTsK KyAJCX0KKyAJfQorIH0KK0BAIC01NzgsOSArMzcwLDE0IEBAIHN0YXRpYyB2b2lkIHNlYXRfdnRf YWN0aXZhdGUoc3RydWN0IHV0ZXJtX3Z0ICp2dCwgdm9pZCAqZGF0YSkKKyB7CisgCXN0cnVjdCBr bXNjb25fc2VhdCAqc2VhdCA9IGRhdGE7CisgCisrCWxvZ19kZWJ1ZygiVlQgJWQgYWN0aXZhdGVk IG9uIHNlYXQgJXMiLCB1dGVybV92dF9nZXRfbnVtKHZ0KSwgc2VhdC0+bmFtZSk7CisrCisgCWlm IChzZWF0X2dvX2F3YWtlKHNlYXQpKQorIAkJcmV0dXJuOworLQlzZWF0X3J1bihzZWF0KTsKKysJ aWYgKHNlYXRfZ29fZm9yZWdyb3VuZChzZWF0KSkKKysJCXJldHVybjsKKysJaWYgKHNlYXQtPmN1 cnJlbnRfc2VzcykKKysJCXRlcm1pbmFsX2FjdGl2YXRlKHNlYXQtPmN1cnJlbnRfc2Vzcy0+dGVy bSk7CisgfQorIAorIHN0YXRpYyBpbnQgc2VhdF92dF9kZWFjdGl2YXRlKHN0cnVjdCB1dGVybV92 dCAqdnQsIGJvb2wgZm9yY2UsIHZvaWQgKmRhdGEpCitAQCAtNTg4LDE0ICszODUsMTMgQEAgc3Rh dGljIGludCBzZWF0X3Z0X2RlYWN0aXZhdGUoc3RydWN0IHV0ZXJtX3Z0ICp2dCwgYm9vbCBmb3Jj ZSwgdm9pZCAqZGF0YSkKKyAJc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0ID0gZGF0YTsKKyAJaW50 IHJldDsKKyAKKy0Jc2VhdC0+YXN5bmNfc2NoZWR1bGUgPSBTQ0hFRFVMRV9WVDsKKy0JcmV0ID0g c2VhdF9wYXVzZShzZWF0LCBmYWxzZSk7CistCWlmIChyZXQpCistCQlyZXR1cm4gcmV0OworLQly ZXQgPSBzZWF0X2dvX2JhY2tncm91bmQoc2VhdCwgZmFsc2UpOworKwlpZiAoc2VhdC0+Y3VycmVu dF9zZXNzKQorKwkJdGVybWluYWxfZGVhY3RpdmF0ZShzZWF0LT5jdXJyZW50X3Nlc3MtPnRlcm0p OworKworKwlyZXQgPSBzZWF0X2dvX2JhY2tncm91bmQoc2VhdCk7CisgCWlmIChyZXQpCisgCQly ZXR1cm4gcmV0OworLQlyZXQgPSBzZWF0X2dvX2FzbGVlcChzZWF0LCBmYWxzZSk7CisrCXJldCA9 IHNlYXRfZ29fYXNsZWVwKHNlYXQpOworIAlpZiAocmV0KQorIAkJcmV0dXJuIHJldDsKKyAJcmV0 dXJuIDA7CitAQCAtNzI2LDcgKzUyMiw2IEBAIHN0YXRpYyB2b2lkIHNlYXRfaW5wdXRfZXZlbnQo c3RydWN0IGlucHV0ICppbnB1dCwgc3RydWN0IGlucHV0X2tleV9ldmVudCAqZXYsIHZvCisgewor IAlzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQgPSBkYXRhOworIAlzdHJ1Y3Qga21zY29uX3Nlc3Np b24gKnM7CistCWludCByZXQ7CisgCisgCS8qIFJlc2V0IERQTVMgdGltZXIgb24gYW55IGlucHV0 IGV2ZW50ICovCisgCXNlYXRfZHBtc19yZXNldF90aW1lcihzZWF0KTsKK0BAIC03MzYsNDkgKzUz MSwyNyBAQCBzdGF0aWMgdm9pZCBzZWF0X2lucHV0X2V2ZW50KHN0cnVjdCBpbnB1dCAqaW5wdXQs IHN0cnVjdCBpbnB1dF9rZXlfZXZlbnQgKmV2LCB2bworIAorIAlpZiAoY29uZl9ncmFiX21hdGNo ZXMoc2VhdC0+Y29uZi0+Z3JhYl9zZXNzaW9uX25leHQsIGV2LT5tb2RzLCBldi0+bnVtX3N5bXMs IGV2LT5rZXlzeW1zKSkgeworIAkJZXYtPmhhbmRsZWQgPSB0cnVlOworLQkJaWYgKCFzZWF0LT5j b25mLT5zZXNzaW9uX2NvbnRyb2wpCisrCQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Npb25fY29udHJv bCB8fCBzZWF0LT5zZXNzaW9uX2NvdW50IDwgMikKKyAJCQlyZXR1cm47CisgCQlzZWF0X25leHQo c2VhdCk7CisgCQlyZXR1cm47CisgCX0KKyAJaWYgKGNvbmZfZ3JhYl9tYXRjaGVzKHNlYXQtPmNv bmYtPmdyYWJfc2Vzc2lvbl9wcmV2LCBldi0+bW9kcywgZXYtPm51bV9zeW1zLCBldi0+a2V5c3lt cykpIHsKKyAJCWV2LT5oYW5kbGVkID0gdHJ1ZTsKKy0JCWlmICghc2VhdC0+Y29uZi0+c2Vzc2lv bl9jb250cm9sKQorKwkJaWYgKCFzZWF0LT5jb25mLT5zZXNzaW9uX2NvbnRyb2wgfHwgc2VhdC0+ c2Vzc2lvbl9jb3VudCA8IDIpCisgCQkJcmV0dXJuOworIAkJc2VhdF9wcmV2KHNlYXQpOworIAkJ cmV0dXJuOworIAl9CistCWlmIChjb25mX2dyYWJfbWF0Y2hlcyhzZWF0LT5jb25mLT5ncmFiX3Nl c3Npb25fZHVtbXksIGV2LT5tb2RzLCBldi0+bnVtX3N5bXMsCistCQkJICAgICAgZXYtPmtleXN5 bXMpKSB7CistCQlldi0+aGFuZGxlZCA9IHRydWU7CistCQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Np b25fY29udHJvbCkKKy0JCQlyZXR1cm47CistCQlzZWF0LT5zY2hlZHVsZWRfc2VzcyA9IHNlYXQt PmR1bW15X3Nlc3M7CistCQlzZWF0X3N3aXRjaChzZWF0KTsKKy0JCXJldHVybjsKKy0JfQorKwor IAlpZiAoY29uZl9ncmFiX21hdGNoZXMoc2VhdC0+Y29uZi0+Z3JhYl9zZXNzaW9uX2Nsb3NlLCBl di0+bW9kcywgZXYtPm51bV9zeW1zLAorIAkJCSAgICAgIGV2LT5rZXlzeW1zKSkgeworIAkJZXYt PmhhbmRsZWQgPSB0cnVlOworLQkJaWYgKCFzZWF0LT5jb25mLT5zZXNzaW9uX2NvbnRyb2wpCisr CQlpZiAoIXNlYXQtPmNvbmYtPnNlc3Npb25fY29udHJvbCB8fCBzZWF0LT5zZXNzaW9uX2NvdW50 IDwgMikKKyAJCQlyZXR1cm47CisgCQlzID0gc2VhdC0+Y3VycmVudF9zZXNzOworIAkJaWYgKCFz KQorIAkJCXJldHVybjsKKy0JCWlmIChzID09IHNlYXQtPmR1bW15X3Nlc3MpCistCQkJcmV0dXJu OworLQorLQkJLyogRmlyc3QgdGltZSB0aGlzIGlzIGludm9rZWQgb24gYSBzZXNzaW9uLCB3ZSBz aW1wbHkgdHJ5CistCQkgKiB1bmxvYWRpbmcgaXQuIElmIGl0IGZhaWxzLCB3ZSBnaXZlIGl0IHNv bWUgdGltZS4gSWYgdGhpcyBpcworLQkJICogaW52b2tlZCBhIHNlY29uZCB0aW1lLCB3ZSBub3Rp Y2UgdGhhdCB3ZSBhbHJlYWR5IHRyaWVkCistCQkgKiByZW1vdmluZyBpdCBhbmQgc28gd2UgZ28g c3RyYWlnaHQgdG8gdW5yZWdpc3RlcmluZyB0aGUKKy0JCSAqIHNlc3Npb24gdW5jb25kaXRpb25h bGx5LiAqLworLQkJaWYgKCFzLT5kZWFjdGl2YXRpbmcpIHsKKy0JCQlzZWF0LT5hc3luY19zY2hl ZHVsZSA9IFNDSEVEVUxFX1VOUkVHSVNURVI7CistCQkJcmV0ID0gc2VhdF9wYXVzZShzZWF0LCBm YWxzZSk7CistCQkJaWYgKHJldCkKKy0JCQkJcmV0dXJuOworLQkJfQorIAorIAkJa21zY29uX3Nl c3Npb25fdW5yZWdpc3RlcihzKTsKKyAJCXJldHVybjsKK0BAIC03ODcsMTYgKzU2MCw5IEBAIHN0 YXRpYyB2b2lkIHNlYXRfaW5wdXRfZXZlbnQoc3RydWN0IGlucHV0ICppbnB1dCwgc3RydWN0IGlu cHV0X2tleV9ldmVudCAqZXYsIHZvCisgCQlldi0+aGFuZGxlZCA9IHRydWU7CisgCQlpZiAoIXNl YXQtPmNvbmYtPnNlc3Npb25fY29udHJvbCkKKyAJCQlyZXR1cm47CistCQlyZXQgPSBrbXNjb25f dGVybWluYWxfcmVnaXN0ZXIoJnMsIHNlYXQsIHV0ZXJtX3Z0X2dldF9udW0oc2VhdC0+dnQpKTsK Ky0JCWlmIChyZXQgPT0gLUVPUE5PVFNVUFApIHsKKy0JCQlsb2dfbm90aWNlKCJ0ZXJtaW5hbCBz dXBwb3J0IG5vdCBjb21waWxlZCBpbiIpOworLQkJfSBlbHNlIGlmIChyZXQpIHsKKy0JCQlsb2df ZXJyb3IoImNhbm5vdCByZWdpc3RlciB0ZXJtaW5hbCBzZXNzaW9uOiAlZCIsIHJldCk7CistCQl9 IGVsc2UgeworLQkJCXMtPmVuYWJsZWQgPSB0cnVlOworLQkJCXNlYXQtPnNjaGVkdWxlZF9zZXNz ID0gczsKKy0JCQlzZWF0X3N3aXRjaChzZWF0KTsKKy0JCX0KKysJCXMgPSBrbXNjb25fc2VhdF9u ZXdfc2Vzc2lvbihzZWF0KTsKKysJCWlmIChzKQorKwkJCXNlYXRfc3dpdGNoKHNlYXQsIHMpOwor IAkJcmV0dXJuOworIAl9CisgCWlmIChzZWF0LT5jb25mLT5ncmFiX3JlYm9vdCAmJgorQEAgLTgy OSwxMiArNTk1LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmZpbmRfbG9jYWxlKHZvaWQpCisgCisg c3RhdGljIGludCBrbXNjb25fc2VhdF9zZXRfa2V5bWFwKHN0cnVjdCBrbXNjb25fc2VhdCAqc2Vh dCkKKyB7CistCWNvbnN0IGNoYXIgKmxvY2FsZTsKKy0JY2hhciAqa2V5bWFwLCAqY29tcG9zZV9m aWxlOworLQlzaXplX3QgY29tcG9zZV9maWxlX2xlbjsKKy0JaW50IHJldDsKKyAKKy0JbG9jYWxl ID0gZmluZF9sb2NhbGUoKTsKKysJY2hhciAqa2V5bWFwOworKwlpbnQgcmV0OworIAorIAkvKiBU T0RPOiBUaGUgWEtCLUFQSSBjdXJyZW50bHkgcmVxdWlyZXMgemVyby10ZXJtaW5hdGVkIHN0cmlu Z3MgYXMKKyAJICoga2V5bWFwIGlucHV0LiBIZW5jZSwgd2UgaGF2ZSB0byByZWFkIGl0IGluIGlu c3RlYWQgb2YgdXNpbmcgbW1hcCgpLgorQEAgLTg0NiwyMSArNjA5LDQ5IEBAIHN0YXRpYyBpbnQg a21zY29uX3NlYXRfc2V0X2tleW1hcChzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpCisgCQkJbG9n X2Vycm9yKCJjYW5ub3QgcmVhZCBrZXltYXAgZmlsZSAlczogJWQiLCBzZWF0LT5jb25mLT54a2Jf a2V5bWFwLCByZXQpOworIAl9CisgCisrCXJldCA9IGlucHV0X3NldF9rZXltYXAoc2VhdC0+aW5w dXQsIHNlYXQtPmNvbmYtPnhrYl9tb2RlbCwgc2VhdC0+Y29uZi0+eGtiX2xheW91dCwKKysJCQkg ICAgICAgc2VhdC0+Y29uZi0+eGtiX3ZhcmlhbnQsIHNlYXQtPmNvbmYtPnhrYl9vcHRpb25zLCBr ZXltYXApOworKwlpZiAocmV0KQorKwkJbG9nX2Vycm9yKCJjYW5ub3Qgc2V0IGtleW1hcDogJWQi LCByZXQpOworKworKwlmcmVlKGtleW1hcCk7CisrCXJldHVybiByZXQ7CisrfQorKworK3N0YXRp YyB2b2lkIGttc2Nvbl9zZWF0X3NldF9jb21wb3NlKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCkK Kyt7CisrCWNvbnN0IGNoYXIgKmxvY2FsZTsKKysJY2hhciAqY29tcG9zZV9maWxlOworKwlzaXpl X3QgY29tcG9zZV9maWxlX2xlbjsKKysJaW50IHJldDsKKysKKysJbG9jYWxlID0gZmluZF9sb2Nh bGUoKTsKKysKKyAJY29tcG9zZV9maWxlID0gTlVMTDsKKyAJY29tcG9zZV9maWxlX2xlbiA9IDA7 CisgCWlmIChzZWF0LT5jb25mLT54a2JfY29tcG9zZV9maWxlICYmICpzZWF0LT5jb25mLT54a2Jf Y29tcG9zZV9maWxlKSB7CisgCQlyZXQgPSBzaGxfcmVhZF9maWxlKHNlYXQtPmNvbmYtPnhrYl9j b21wb3NlX2ZpbGUsICZjb21wb3NlX2ZpbGUsICZjb21wb3NlX2ZpbGVfbGVuKTsKKy0JCWlmIChy ZXQpCisrCQlpZiAocmV0KSB7CisgCQkJbG9nX2Vycm9yKCJjYW5ub3QgcmVhZCBjb21wb3NlIGZp bGUgJXM6ICVkIiwgc2VhdC0+Y29uZi0+eGtiX2NvbXBvc2VfZmlsZSwKKyAJCQkJICByZXQpOwor KwkJCXJldHVybjsKKysJCX0KKyAJfQorLQlyZXQgPSBpbnB1dF9zZXRfa2V5bWFwKHNlYXQtPmlu cHV0LCBzZWF0LT5jb25mLT54a2JfbW9kZWwsIHNlYXQtPmNvbmYtPnhrYl9sYXlvdXQsCistCQkJ ICAgICAgIHNlYXQtPmNvbmYtPnhrYl92YXJpYW50LCBzZWF0LT5jb25mLT54a2Jfb3B0aW9ucywg bG9jYWxlLCBrZXltYXAsCistCQkJICAgICAgIGNvbXBvc2VfZmlsZSwgY29tcG9zZV9maWxlX2xl bik7CistCWlmIChyZXQpCistCQlsb2dfZXJyb3IoImNhbm5vdCBzZXQga2V5bWFwOiAlZCIsIHJl dCk7CisrCWlucHV0X3NldF9jb21wb3NlKHNlYXQtPmlucHV0LCBsb2NhbGUsIGNvbXBvc2VfZmls ZSwgY29tcG9zZV9maWxlX2xlbik7CisrfQorIAorLQlmcmVlKGtleW1hcCk7CisraW50IGttc2Nv bl9zZWF0X3VwZGF0ZV94a2JfbGF5b3V0KHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgY29uc3Qg Y2hhciAqbW9kZWwsIGNvbnN0IGNoYXIgKmxheW91dCwKKysJCQkJICBjb25zdCBjaGFyICp2YXJp YW50LCBjb25zdCBjaGFyICpvcHRpb25zKQorK3sKKysJaW50IHJldDsKKysKKysJcmV0ID0gaW5w dXRfdXBkYXRlX2tleW1hcChzZWF0LT5pbnB1dCwgbW9kZWwsIGxheW91dCwgdmFyaWFudCwgb3B0 aW9ucyk7CisrCWlmIChyZXQpIHsKKysJCWxvZ19lcnJvcigiY2Fubm90IHVwZGF0ZSBrZXltYXA6 ICVkIiwgcmV0KTsKKysJCXJldHVybiByZXQ7CisrCX0KKysJLyogQ29tcG9zZSB0YWJsZSBpcyBs b3N0IHdoZW4gdXBkYXRpbmcgdGhlIGtleW1hcCwgc28gd2UgbmVlZCB0byBzZXQgaXQgYWdhaW4g Ki8KKysJa21zY29uX3NlYXRfc2V0X2NvbXBvc2Uoc2VhdCk7CisgCXJldHVybiByZXQ7CisgfQor IAorQEAgLTk5Myw2ICs3ODQsOCBAQCBpbnQga21zY29uX3NlYXRfbmV3KHN0cnVjdCBrbXNjb25f c2VhdCAqKm91dCwgc3RydWN0IGNvbmZfY3R4ICptYWluX2NvbmYsCisgCWlmIChyZXQpCisgCQln b3RvIGVycl9jb25mOworIAorKwlrbXNjb25fc2VhdF9zZXRfY29tcG9zZShzZWF0KTsKKysKKyAJ cmV0ID0gdXRlcm1fbW9uaXRvcl9uZXcoJnNlYXQtPm1vbiwgc2VhdC0+ZWxvb3AsICZzZWF0X21v bml0b3JfY2IsIHNlYXQpOworIAlpZiAocmV0KSB7CisgCQlsb2dfZXJyb3IoImNhbm5vdCBjcmVh dGUgZGV2aWNlIG1vbml0b3I6ICVkIiwgcmV0KTsKK0BAIC0xMDYzLDEyICs4NTYsOSBAQCB2b2lk IGttc2Nvbl9zZWF0X2ZyZWUoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorIAlpZiAoIXNlYXQp CisgCQlyZXR1cm47CisgCistCXJldCA9IHNlYXRfcGF1c2Uoc2VhdCwgdHJ1ZSk7CistCWlmIChy ZXQpCistCQlsb2dfd2FybmluZygiZGVzdHJveWluZyBzZWF0ICVzIHdoaWxlIHNlc3Npb24gJXAg aXMgYWN0aXZlIiwgc2VhdC0+bmFtZSwKKy0JCQkgICAgc2VhdC0+Y3VycmVudF9zZXNzKTsKKysJ c2VhdF9zd2l0Y2goc2VhdCwgTlVMTCk7CisgCistCXJldCA9IHNlYXRfZ29fYXNsZWVwKHNlYXQs IHRydWUpOworKwlyZXQgPSBzZWF0X2dvX2FzbGVlcChzZWF0KTsKKyAJaWYgKHJldCkKKyAJCWxv Z193YXJuaW5nKCJkZXN0cm95aW5nIHNlYXQgJXMgd2hpbGUgc3RpbGwgYXdha2U6ICVkIiwgc2Vh dC0+bmFtZSwgcmV0KTsKKyAKK0BAIC0xMzA2LDMxICsxMDk2LDE4IEBAIHN0YXRpYyB2b2lkIGtt c2Nvbl9zZWF0X3BvbGxfdmlkZW8odm9pZCAqZGF0YSkKKyAKKyB2b2lkIGttc2Nvbl9zZWF0X3N0 YXJ0dXAoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorIHsKKy0JaW50IHJldDsKKyAJc3RydWN0 IGttc2Nvbl9zZXNzaW9uICpzOworIAorIAlpZiAoIXNlYXQpCisgCQlyZXR1cm47CisgCistCXJl dCA9IGttc2Nvbl9kdW1teV9yZWdpc3Rlcigmcywgc2VhdCk7CistCWlmIChyZXQgPT0gLUVPUE5P VFNVUFApIHsKKy0JCWxvZ19ub3RpY2UoImR1bW15IHNlc3Npb25zIG5vdCBjb21waWxlZCBpbiIp OworLQl9IGVsc2UgaWYgKHJldCkgeworLQkJbG9nX2Vycm9yKCJjYW5ub3QgcmVnaXN0ZXIgZHVt bXkgc2Vzc2lvbjogJWQiLCByZXQpOworLQl9IGVsc2UgeworLQkJc2VhdC0+ZHVtbXlfc2VzcyA9 IHM7CistCQlrbXNjb25fc2Vzc2lvbl9lbmFibGUocyk7CistCX0KKysJc2VhdF9nb19hd2FrZShz ZWF0KTsKKyAKKy0JaWYgKHNlYXQtPmNvbmYtPnRlcm1pbmFsX3Nlc3Npb24pIHsKKy0JCXJldCA9 IGttc2Nvbl90ZXJtaW5hbF9yZWdpc3Rlcigmcywgc2VhdCwgdXRlcm1fdnRfZ2V0X251bShzZWF0 LT52dCkpOworLQkJaWYgKHJldCA9PSAtRU9QTk9UU1VQUCkKKy0JCQlsb2dfbm90aWNlKCJ0ZXJt aW5hbCBzdXBwb3J0IG5vdCBjb21waWxlZCBpbiIpOworLQkJZWxzZSBpZiAocmV0KQorLQkJCWxv Z19lcnJvcigiY2Fubm90IHJlZ2lzdGVyIHRlcm1pbmFsIHNlc3Npb24iKTsKKy0JCWVsc2UKKy0J CQlrbXNjb25fc2Vzc2lvbl9lbmFibGUocyk7CistCX0KKysJcyA9IGttc2Nvbl9zZWF0X25ld19z ZXNzaW9uKHNlYXQpOworKwlpZiAocykKKysJCXNlYXRfc3dpdGNoKHNlYXQsIHMpOworKwllbHNl CisrCQlsb2dfZXJyb3IoImNhbm5vdCBjcmVhdGUgbmV3IHNlc3Npb24gb24gc2VhdCAlcyIsIHNl YXQtPm5hbWUpOworIAorIAlpZiAoc2VhdC0+Y29uZi0+c3dpdGNodnQgfHwgdXRlcm1fdnRfZ2V0 X251bShzZWF0LT52dCkgPT0gMCkKKyAJCXV0ZXJtX3Z0X2FjdGl2YXRlKHNlYXQtPnZ0KTsKK0BA IC0xMzM5LDMwICsxMTE2LDYgQEAgdm9pZCBrbXNjb25fc2VhdF9zdGFydHVwKHN0cnVjdCBrbXNj b25fc2VhdCAqc2VhdCkKKyAJdXRlcm1fbW9uaXRvcl9zY2FuKHNlYXQtPm1vbiwgc2VhdC0+bmFt ZSk7CisgfQorIAorLWNvbnN0IGNoYXIgKmttc2Nvbl9zZWF0X2dldF9uYW1lKHN0cnVjdCBrbXNj b25fc2VhdCAqc2VhdCkKKy17CistCWlmICghc2VhdCkKKy0JCXJldHVybiBOVUxMOworLQorLQly ZXR1cm4gc2VhdC0+bmFtZTsKKy19CistCistc3RydWN0IGlucHV0ICprbXNjb25fc2VhdF9nZXRf aW5wdXQoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorLXsKKy0JaWYgKCFzZWF0KQorLQkJcmV0 dXJuIE5VTEw7CistCistCXJldHVybiBzZWF0LT5pbnB1dDsKKy19CistCistc3RydWN0IGV2X2Vs b29wICprbXNjb25fc2VhdF9nZXRfZWxvb3Aoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorLXsK Ky0JaWYgKCFzZWF0KQorLQkJcmV0dXJuIE5VTEw7CistCistCXJldHVybiBzZWF0LT5lbG9vcDsK Ky19CistCisgc3RydWN0IGNvbmZfY3R4ICprbXNjb25fc2VhdF9nZXRfY29uZihzdHJ1Y3Qga21z Y29uX3NlYXQgKnNlYXQpCisgeworIAlpZiAoIXNlYXQpCitAQCAtMTM3MSwzNiArMTEyNCwzOSBA QCBzdHJ1Y3QgY29uZl9jdHggKmttc2Nvbl9zZWF0X2dldF9jb25mKHN0cnVjdCBrbXNjb25fc2Vh dCAqc2VhdCkKKyAJcmV0dXJuIHNlYXQtPmNvbmZfY3R4OworIH0KKyAKKy1pbnQga21zY29uX3Nl YXRfcmVnaXN0ZXJfc2Vzc2lvbihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVjdCBrbXNj b25fc2Vzc2lvbiAqKm91dCwKKy0JCQkJIGttc2Nvbl9zZXNzaW9uX2NiX3QgY2IsIHZvaWQgKmRh dGEpCisrc3RhdGljIHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqa21zY29uX3NlYXRfbmV3X3Nlc3Np b24oc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0KQorIHsKKyAJc3RydWN0IGttc2Nvbl9zZXNzaW9u ICpzZXNzOworIAlzdHJ1Y3Qgc2hsX2RsaXN0ICppdGVyOworIAlzdHJ1Y3Qga21zY29uX2Rpc3Bs YXkgKmQ7CisgCistCWlmICghc2VhdCB8fCAhb3V0KQorLQkJcmV0dXJuIC1FSU5WQUw7CisrCWlm ICghc2VhdCkKKysJCXJldHVybiBOVUxMOworIAorIAlpZiAoc2VhdC0+Y29uZi0+c2Vzc2lvbl9t YXggJiYgc2VhdC0+c2Vzc2lvbl9jb3VudCA+PSBzZWF0LT5jb25mLT5zZXNzaW9uX21heCkgewor IAkJbG9nX3dhcm5pbmcoIm1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zIHJlYWNoZWQgKCVkKSwg ZHJvcHBpbmcgbmV3IHNlc3Npb24iLAorIAkJCSAgICBzZWF0LT5jb25mLT5zZXNzaW9uX21heCk7 CistCQlyZXR1cm4gLUVPVkVSRkxPVzsKKysJCXJldHVybiBOVUxMOworIAl9CisgCisgCXNlc3Mg PSBtYWxsb2Moc2l6ZW9mKCpzZXNzKSk7CisgCWlmICghc2VzcykgeworIAkJbG9nX2Vycm9yKCJj YW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgc2Vzc2lvbiBvbiBzZWF0ICVzIiwgc2VhdC0+ bmFtZSk7CistCQlyZXR1cm4gLUVOT01FTTsKKysJCXJldHVybiBOVUxMOworIAl9CisgCisgCWxv Z19kZWJ1ZygicmVnaXN0ZXIgc2Vzc2lvbiAlcCIsIHNlc3MpOworIAorIAltZW1zZXQoc2Vzcywg MCwgc2l6ZW9mKCpzZXNzKSk7CistCXNlc3MtPnJlZiA9IDE7CisgCXNlc3MtPnNlYXQgPSBzZWF0 OworLQlzZXNzLT5jYiA9IGNiOworLQlzZXNzLT5kYXRhID0gZGF0YTsKKyAJc2Vzcy0+Zm9yZWdy b3VuZCA9IHRydWU7CisrCXNlc3MtPnRlcm0gPSB0ZXJtaW5hbF9uZXcoc2VzcywgdXRlcm1fdnRf Z2V0X251bShzZWF0LT52dCksIHNlYXQtPmNvbmZfY3R4LCBzZWF0LT5lbG9vcCwKKysJCQkJICBz ZWF0LT5pbnB1dCwgc2VhdC0+bmFtZSk7CisrCWlmICghc2Vzcy0+dGVybSkgeworKwkJbG9nX2Vy cm9yKCJjYW5ub3QgY3JlYXRlIHRlcm1pbmFsIGZvciBuZXcgc2Vzc2lvbiBvbiBzZWF0ICVzIiwg c2VhdC0+bmFtZSk7CisrCQlmcmVlKHNlc3MpOworKwkJcmV0dXJuIE5VTEw7CisrCX0KKyAKKyAJ LyogcmVnaXN0ZXIgbmV3IHNlc3Npb25zIG5leHQgdG8gdGhlIGN1cnJlbnQgb25lICovCisgCWlm IChzZWF0LT5jdXJyZW50X3Nlc3MpCitAQCAtMTQwOSwzOSArMTE2NSwxOCBAQCBpbnQga21zY29u X3NlYXRfcmVnaXN0ZXJfc2Vzc2lvbihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQsIHN0cnVjdCBr bXNjb25fc2Vzc2lvbgorIAkJc2hsX2RsaXN0X2xpbmtfdGFpbCgmc2VhdC0+c2Vzc2lvbnMsICZz ZXNzLT5saXN0KTsKKyAKKyAJKytzZWF0LT5zZXNzaW9uX2NvdW50OworLQkqb3V0ID0gc2VzczsK KyAKKyAJc2hsX2RsaXN0X2Zvcl9lYWNoKGl0ZXIsICZzZWF0LT5kaXNwbGF5cykKKyAJeworIAkJ ZCA9IHNobF9kbGlzdF9lbnRyeShpdGVyLCBzdHJ1Y3Qga21zY29uX2Rpc3BsYXksIGxpc3QpOwor LQkJc2Vzc2lvbl9jYWxsX2Rpc3BsYXlfbmV3KHNlc3MsIGQtPmRpc3ApOworKwkJdGVybWluYWxf YWRkX2Rpc3BsYXkoc2Vzcy0+dGVybSwgZC0+ZGlzcCk7CisgCX0KKy0KKy0JcmV0dXJuIDA7Cist fQorLQorLXZvaWQga21zY29uX3Nlc3Npb25fcmVmKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vz cykKKy17CistCWlmICghc2VzcyB8fCAhc2Vzcy0+cmVmKQorLQkJcmV0dXJuOworLQorLQkrK3Nl c3MtPnJlZjsKKysJcmV0dXJuIHNlc3M7CisgfQorIAorLXZvaWQga21zY29uX3Nlc3Npb25fdW5y ZWYoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQorLXsKKy0JaWYgKCFzZXNzIHx8ICFzZXNz LT5yZWYgfHwgLS1zZXNzLT5yZWYpCistCQlyZXR1cm47CistCistCWttc2Nvbl9zZXNzaW9uX3Vu cmVnaXN0ZXIoc2Vzcyk7CistCWZyZWUoc2Vzcyk7CistfQorLQorLXZvaWQga21zY29uX3Nlc3Np b25fdW5yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisrc3RhdGljIHZvaWQg a21zY29uX3Nlc3Npb25fdW5yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisg eworIAlzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQ7CistCWludCByZXQ7CistCWJvb2wgZm9yY2Vk ID0gZmFsc2U7CisgCisgCWlmICghc2VzcyB8fCAhc2Vzcy0+c2VhdCkKKyAJCXJldHVybjsKK0BA IC0xNDQ5LDQ3ICsxMTg0LDE4IEBAIHZvaWQga21zY29uX3Nlc3Npb25fdW5yZWdpc3RlcihzdHJ1 Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisgCWxvZ19kZWJ1ZygidW5yZWdpc3RlciBzZXNzaW9u ICVwIiwgc2Vzcyk7CisgCisgCXNlYXQgPSBzZXNzLT5zZWF0OworLQlzZXNzLT5lbmFibGVkID0g ZmFsc2U7CistCWlmIChzZWF0LT5kdW1teV9zZXNzID09IHNlc3MpCistCQlzZWF0LT5kdW1teV9z ZXNzID0gTlVMTDsKKy0Jc2VhdF9yZXNjaGVkdWxlKHNlYXQpOworIAorIAlpZiAoc2VhdC0+Y3Vy cmVudF9zZXNzID09IHNlc3MpIHsKKy0JCXJldCA9IHNlYXRfcGF1c2Uoc2VhdCwgdHJ1ZSk7Cist CQlpZiAocmV0KSB7CistCQkJZm9yY2VkID0gdHJ1ZTsKKy0JCQlsb2dfd2FybmluZygidW5yZWdp c3RlcmluZyBhY3RpdmUgc2Vzc2lvbiAlcDsgc2tpcHBpbmcgYXV0b21hdGljICIKKy0JCQkJICAg ICJzZXNzaW9uLXN3aXRjaCIsCistCQkJCSAgICBzZXNzKTsKKy0JCX0KKysJCXRlcm1pbmFsX2Rl YWN0aXZhdGUoc2VhdC0+Y3VycmVudF9zZXNzLT50ZXJtKTsKKysJCXNlYXRfbmV4dChzZWF0KTsK KyAJfQorIAorIAlzaGxfZGxpc3RfdW5saW5rKCZzZXNzLT5saXN0KTsKKyAJLS1zZWF0LT5zZXNz aW9uX2NvdW50OworIAlzZXNzLT5zZWF0ID0gTlVMTDsKKyAKKy0Jc2Vzc2lvbl9jYWxsKHNlc3Ms IEtNU0NPTl9TRVNTSU9OX1VOUkVHSVNURVIsIE5VTEwpOworLQlrbXNjb25fc2Vzc2lvbl91bnJl ZihzZXNzKTsKKy0KKy0JLyogSWYgdGhpcyBzZXNzaW9uIHdhcyBhY3RpdmUgYW5kIHdlIGNvdWxk bid0IGRlYWN0aXZhdGUgaXQsIHRoZW4gaXQKKy0JICogbWlnaHQgc3RpbGwgaGF2ZSByZXNvdXJj ZXMgYWxsb2NhdGVkIHRoYXQgY291bGRuJ3QgZ2V0IGZyZWVkLiBJbiB0aGlzCistCSAqIGNhc2Ug d2Ugc2hvdWxkIG5vdCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV4dCBzZXNzaW9uIGFz IGl0IGlzCistCSAqIHZlcnkgbGlrZWx5IHRoYXQgaXQgd2lsbCBub3QgYmUgYWJsZSB0byBzdGFy dC4KKy0JICogSW5zdGVhZCwgd2Ugc3RheSBpbmFjdGl2ZSBhbmQgd2FpdCBmb3IgdXNlci9leHRl cm5hbCBpbnB1dCB0byBzd2l0Y2gKKy0JICogdG8gYW5vdGhlciBzZXNzaW9uLiBUaGlzIGRlbGF5 IHdpbGwgdGhlbiBob3BlZnVsbHkgYmUgbG9uZyBlbm91Z2ggc28KKy0JICogYWxsIHJlc291cmNl cyBnb3QgZnJlZWQuICovCistCWlmICghZm9yY2VkKQorLQkJc2VhdF9ydW4oc2VhdCk7CistfQor LQorLWJvb2wga21zY29uX3Nlc3Npb25faXNfcmVnaXN0ZXJlZChzdHJ1Y3Qga21zY29uX3Nlc3Np b24gKnNlc3MpCisteworLQlyZXR1cm4gc2VzcyAmJiBzZXNzLT5zZWF0OworLX0KKy0KKy1ib29s IGttc2Nvbl9zZXNzaW9uX2lzX2FjdGl2ZShzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCist eworLQlyZXR1cm4gc2VzcyAmJiBzZXNzLT5zZWF0ICYmIHNlc3MtPnNlYXQtPmN1cnJlbnRfc2Vz cyA9PSBzZXNzOworKwl0ZXJtaW5hbF9kZXN0cm95KHNlc3MtPnRlcm0pOworKwlmcmVlKHNlc3Mp OworIH0KKyAKKyBpbnQga21zY29uX3Nlc3Npb25fc2V0X2ZvcmVncm91bmQoc3RydWN0IGttc2Nv bl9zZXNzaW9uICpzZXNzKQorQEAgLTE1MDgsNyArMTIxNCw3IEBAIGludCBrbXNjb25fc2Vzc2lv bl9zZXRfZm9yZWdyb3VuZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCisgCQlpZiAocmV0 KQorIAkJCXJldHVybiByZXQ7CisgCistCQlyZXQgPSBzZWF0X2dvX2ZvcmVncm91bmQoc2VhdCwg dHJ1ZSk7CisrCQlyZXQgPSBzZWF0X2dvX2ZvcmVncm91bmQoc2VhdCk7CisgCQlpZiAocmV0KQor IAkJCXJldHVybiByZXQ7CisgCX0KK0BAIC0xNTI5LDcgKzEyMzUsNyBAQCBpbnQga21zY29uX3Nl c3Npb25fc2V0X2JhY2tncm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQorIAorIAlz ZWF0ID0gc2Vzcy0+c2VhdDsKKyAJaWYgKHNlYXQgJiYgc2VhdC0+Y3VycmVudF9zZXNzID09IHNl c3MgJiYgc2VhdC0+Zm9yZWdyb3VuZCkgeworLQkJcmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNl YXQsIHRydWUpOworKwkJcmV0ID0gc2VhdF9nb19iYWNrZ3JvdW5kKHNlYXQpOworIAkJaWYgKHJl dCkKKyAJCQlyZXR1cm4gcmV0OworIAl9CitAQCAtMTU0MywzNSArMTI0OSw2IEBAIGJvb2wga21z Y29uX3Nlc3Npb25fZ2V0X2ZvcmVncm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQor IAlyZXR1cm4gc2Vzcy0+Zm9yZWdyb3VuZDsKKyB9CisgCistdm9pZCBrbXNjb25fc2Vzc2lvbl9l bmFibGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQorLXsKKy0JaWYgKCFzZXNzIHx8IHNl c3MtPmVuYWJsZWQpCistCQlyZXR1cm47CistCistCWxvZ19kZWJ1ZygiZW5hYmxlIHNlc3Npb24g JXAiLCBzZXNzKTsKKy0Jc2Vzcy0+ZW5hYmxlZCA9IHRydWU7CistCWlmIChzZXNzLT5zZWF0ICYm CistCSAgICAoIXNlc3MtPnNlYXQtPmN1cnJlbnRfc2VzcyB8fCBzZXNzLT5zZWF0LT5jdXJyZW50 X3Nlc3MgPT0gc2Vzcy0+c2VhdC0+ZHVtbXlfc2VzcykpIHsKKy0JCXNlc3MtPnNlYXQtPnNjaGVk dWxlZF9zZXNzID0gc2VzczsKKy0JCWlmIChzZWF0X2hhc19zY2hlZHVsZShzZXNzLT5zZWF0KSkK Ky0JCQlzZWF0X3N3aXRjaChzZXNzLT5zZWF0KTsKKy0JfQorLX0KKy0KKy12b2lkIGttc2Nvbl9z ZXNzaW9uX2Rpc2FibGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQorLXsKKy0JaWYgKCFz ZXNzIHx8ICFzZXNzLT5lbmFibGVkKQorLQkJcmV0dXJuOworLQorLQlsb2dfZGVidWcoImRpc2Fi bGUgc2Vzc2lvbiAlcCIsIHNlc3MpOworLQlzZXNzLT5lbmFibGVkID0gZmFsc2U7CistfQorLQor LWJvb2wga21zY29uX3Nlc3Npb25faXNfZW5hYmxlZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNl c3MpCisteworLQlyZXR1cm4gc2VzcyAmJiBzZXNzLT5lbmFibGVkOworLX0KKy0KKyB2b2lkIGtt c2Nvbl9zZXNzaW9uX2JlbGwoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKQorIHsKKyAJaWYg KCFzZXNzIHx8ICFzZXNzLT5zZWF0KQorQEAgLTE1ODgsMzYgKzEyNjUsMyBAQCB2b2lkIGttc2Nv bl9zZXNzaW9uX3NldF9sZWRzKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2VzcywgdW5zaWduZWQg aW50IHNjcm9sbF9sbworIAorIAlpbnB1dF9zZXRfbGVkcyhzZXNzLT5zZWF0LT5pbnB1dCwgc2Ny b2xsX2xvY2ssIG51bV9sb2NrLCBjYXBzX2xvY2spOworIH0KKy0KKy12b2lkIGttc2Nvbl9zZXNz aW9uX25vdGlmeV9kZWFjdGl2YXRlZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3MpCistewor LQlzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQ7CistCWludCByZXQ7CistCXVuc2lnbmVkIGludCBz Y2hlZDsKKy0KKy0JaWYgKCFzZXNzIHx8ICFzZXNzLT5zZWF0KQorLQkJcmV0dXJuOworLQorLQlz ZWF0ID0gc2Vzcy0+c2VhdDsKKy0JaWYgKHNlYXQtPmN1cnJlbnRfc2VzcyAhPSBzZXNzKQorLQkJ cmV0dXJuOworLQorLQlzY2hlZCA9IHNlYXQtPmFzeW5jX3NjaGVkdWxlOworLQlsb2dfZGVidWco InNlc3Npb24gJXAgbm90aWZpZWQgY29yZSBhYm91dCBkZWFjdGl2YXRpb24gKHNjaGVkdWxlOiAl dSkiLCBzZXNzLCBzY2hlZCk7CistCXNlc3Npb25fZGVhY3RpdmF0ZShzZXNzKTsKKy0Jc2VhdF9y ZXNjaGVkdWxlKHNlYXQpOworLQorLQlpZiAoc2NoZWQgPT0gU0NIRURVTEVfVlQpIHsKKy0JCXJl dCA9IHNlYXRfZ29fYmFja2dyb3VuZChzZWF0LCBmYWxzZSk7CistCQlpZiAocmV0KQorLQkJCXJl dHVybjsKKy0JCXJldCA9IHNlYXRfZ29fYXNsZWVwKHNlYXQsIGZhbHNlKTsKKy0JCWlmIChyZXQp CistCQkJcmV0dXJuOworLQkJdXRlcm1fdnRfcmV0cnkoc2VhdC0+dnQpOworLQl9IGVsc2UgaWYg KHNjaGVkID09IFNDSEVEVUxFX1VOUkVHSVNURVIpIHsKKy0JCWttc2Nvbl9zZXNzaW9uX3VucmVn aXN0ZXIoc2Vzcyk7CistCX0gZWxzZSB7CistCQlzZWF0X3N3aXRjaChzZWF0KTsKKy0JfQorLX0K K2RpZmYgLS1naXQgYS9zcmMva21zY29uX3NlYXQuaCBiL3NyYy9rbXNjb25fc2VhdC5oCitpbmRl eCBjM2ZhNzA3Li4zMWU4ODA4IDEwMDY0NAorLS0tIGEvc3JjL2ttc2Nvbl9zZWF0LmgKKysrKyBi L3NyYy9rbXNjb25fc2VhdC5oCitAQCAtMzMsMTQgKzMzLDkgQEAKKyAjZGVmaW5lIEtNU0NPTl9T RUFUX0gKKyAKKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKyAj aW5jbHVkZSAiY29uZi5oIgorLSNpbmNsdWRlICJpbnB1dC9pbnB1dC5oIgorICNpbmNsdWRlICJr bXNjb25fY29uZi5oIgorICNpbmNsdWRlICJzaGwvZWxvb3AuaCIKKy0jaW5jbHVkZSAidXRlcm1f bW9uaXRvci5oIgorLSNpbmNsdWRlICJ1dGVybV92dC5oIgorLSNpbmNsdWRlICJ2aWRlby92aWRl by5oIgorIAorIHN0cnVjdCBrbXNjb25fc2VhdDsKKyBzdHJ1Y3Qga21zY29uX3Nlc3Npb247CitA QCAtNTMsNTQgKzQ4LDIyIEBAIGVudW0ga21zY29uX3NlYXRfZXZlbnQgeworIAorIHR5cGVkZWYg aW50ICgqa21zY29uX3NlYXRfY2JfdCkoc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LCB1bnNpZ25l ZCBpbnQgZXZlbnQsIHZvaWQgKmRhdGEpOworIAorLWVudW0ga21zY29uX3Nlc3Npb25fZXZlbnRf dHlwZSB7CistCUtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfTkVXLAorLQlLTVNDT05fU0VTU0lPTl9E SVNQTEFZX0dPTkUsCistCUtNU0NPTl9TRVNTSU9OX0RJU1BMQVlfUkVGUkVTSCwKKy0JS01TQ09O X1NFU1NJT05fQUNUSVZBVEUsCistCUtNU0NPTl9TRVNTSU9OX0RFQUNUSVZBVEUsCistCUtNU0NP Tl9TRVNTSU9OX1VOUkVHSVNURVIsCistfTsKKy0KKy1zdHJ1Y3Qga21zY29uX3Nlc3Npb25fZXZl bnQgeworLQl1bnNpZ25lZCBpbnQgdHlwZTsKKy0Jc3RydWN0IGRpc3BsYXkgKmRpc3A7CistfTsK Ky0KKy10eXBlZGVmIGludCAoKmttc2Nvbl9zZXNzaW9uX2NiX3QpKHN0cnVjdCBrbXNjb25fc2Vz c2lvbiAqc2Vzc2lvbiwKKy0JCQkJICAgc3RydWN0IGttc2Nvbl9zZXNzaW9uX2V2ZW50ICpldmVu dCwgdm9pZCAqZGF0YSk7CistCisgaW50IGttc2Nvbl9zZWF0X25ldyhzdHJ1Y3Qga21zY29uX3Nl YXQgKipvdXQsIHN0cnVjdCBjb25mX2N0eCAqbWFpbl9jb25mLAorIAkJICAgIHN0cnVjdCBrbXNj b25fY29uZl90ICpjb25mLCBzdHJ1Y3QgZXZfZWxvb3AgKmVsb29wLCBrbXNjb25fc2VhdF9jYl90 IGNiLAorIAkJICAgIHZvaWQgKmRhdGEpOworIHZvaWQga21zY29uX3NlYXRfZnJlZShzdHJ1Y3Qg a21zY29uX3NlYXQgKnNlYXQpOworIHZvaWQga21zY29uX3NlYXRfc3RhcnR1cChzdHJ1Y3Qga21z Y29uX3NlYXQgKnNlYXQpOworK2ludCBrbXNjb25fc2VhdF91cGRhdGVfeGtiX2xheW91dChzdHJ1 Y3Qga21zY29uX3NlYXQgKnNlYXQsIGNvbnN0IGNoYXIgKm1vZGVsLCBjb25zdCBjaGFyICpsYXlv dXQsCisrCQkJCSAgY29uc3QgY2hhciAqdmFyaWFudCwgY29uc3QgY2hhciAqb3B0aW9ucyk7Cisg CistY29uc3QgY2hhciAqa21zY29uX3NlYXRfZ2V0X25hbWUoc3RydWN0IGttc2Nvbl9zZWF0ICpz ZWF0KTsKKy1zdHJ1Y3QgaW5wdXQgKmttc2Nvbl9zZWF0X2dldF9pbnB1dChzdHJ1Y3Qga21zY29u X3NlYXQgKnNlYXQpOworLXN0cnVjdCBldl9lbG9vcCAqa21zY29uX3NlYXRfZ2V0X2Vsb29wKHN0 cnVjdCBrbXNjb25fc2VhdCAqc2VhdCk7Cisgc3RydWN0IGNvbmZfY3R4ICprbXNjb25fc2VhdF9n ZXRfY29uZihzdHJ1Y3Qga21zY29uX3NlYXQgKnNlYXQpOworIAorLWludCBrbXNjb25fc2VhdF9y ZWdpc3Rlcl9zZXNzaW9uKHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwgc3RydWN0IGttc2Nvbl9z ZXNzaW9uICoqb3V0LAorLQkJCQkga21zY29uX3Nlc3Npb25fY2JfdCBjYiwgdm9pZCAqZGF0YSk7 CistCistdm9pZCBrbXNjb25fc2Vzc2lvbl9yZWYoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNz KTsKKy12b2lkIGttc2Nvbl9zZXNzaW9uX3VucmVmKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vz cyk7Cistdm9pZCBrbXNjb25fc2Vzc2lvbl91bnJlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lv biAqc2Vzcyk7CistYm9vbCBrbXNjb25fc2Vzc2lvbl9pc19yZWdpc3RlcmVkKHN0cnVjdCBrbXNj b25fc2Vzc2lvbiAqc2Vzcyk7CistCistYm9vbCBrbXNjb25fc2Vzc2lvbl9pc19hY3RpdmUoc3Ry dWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKKyBpbnQga21zY29uX3Nlc3Npb25fc2V0X2ZvcmVn cm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKKyBpbnQga21zY29uX3Nlc3Npb25f c2V0X2JhY2tncm91bmQoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzKTsKKyBib29sIGttc2Nv bl9zZXNzaW9uX2dldF9mb3JlZ3JvdW5kKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqc2Vzcyk7Cisg Cistdm9pZCBrbXNjb25fc2Vzc2lvbl9lbmFibGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNz KTsKKy12b2lkIGttc2Nvbl9zZXNzaW9uX2Rpc2FibGUoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpz ZXNzKTsKKy1ib29sIGttc2Nvbl9zZXNzaW9uX2lzX2VuYWJsZWQoc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzZXNzKTsKKyB2b2lkIGttc2Nvbl9zZXNzaW9uX2JlbGwoc3RydWN0IGttc2Nvbl9zZXNz aW9uICpzZXNzKTsKKyB2b2lkIGttc2Nvbl9zZXNzaW9uX3NldF9sZWRzKHN0cnVjdCBrbXNjb25f c2Vzc2lvbiAqc2VzcywgdW5zaWduZWQgaW50IHNjcm9sbF9sb2NrLAorIAkJCSAgICAgdW5zaWdu ZWQgaW50IG51bV9sb2NrLCB1bnNpZ25lZCBpbnQgY2Fwc19sb2NrKTsKKyAKKy12b2lkIGttc2Nv bl9zZXNzaW9uX25vdGlmeV9kZWFjdGl2YXRlZChzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKnNlc3Mp OworLQorICNlbmRpZiAvKiBLTVNDT05fU0VBVF9IICovCitkaWZmIC0tZ2l0IGEvc3JjL2ttc2Nv bl90ZXJtaW5hbC5jIGIvc3JjL2ttc2Nvbl90ZXJtaW5hbC5jCitpbmRleCAzOTFjZDUzLi5jNTU2 MmY2IDEwMDY0NAorLS0tIGEvc3JjL2ttc2Nvbl90ZXJtaW5hbC5jCisrKysgYi9zcmMva21zY29u X3Rlcm1pbmFsLmMKK0BAIC02NDUsNyArNjQ1LDcgQEAgc3RhdGljIHZvaWQgcm90YXRlX2Njd19h bGwoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSkKKyAJdXBkYXRlX3BvaW50ZXJfbWF4X2Fs bCh0ZXJtKTsKKyB9CisgCistc3RhdGljIGludCBhZGRfZGlzcGxheShzdHJ1Y3Qga21zY29uX3Rl cm1pbmFsICp0ZXJtLCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCkKKytpbnQgdGVybWluYWxfYWRkX2Rp c3BsYXkoc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSwgc3RydWN0IGRpc3BsYXkgKmRpc3Ap CisgeworIAlzdHJ1Y3Qgc2hsX2RsaXN0ICppdGVyOworIAlzdHJ1Y3Qgc2NyZWVuICpzY3I7CitA QCAtNzQxLDcgKzc0MSw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfc2NyZWVuKHN0cnVjdCBzY3JlZW4g KnNjciwgYm9vbCB1cGRhdGUpCisgCXRlcm1pbmFsX3VwZGF0ZV9zaXplX25vdGlmeSh0ZXJtKTsK KyB9CisgCistc3RhdGljIHZvaWQgcm1fZGlzcGxheShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0 ZXJtLCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCkKKyt2b2lkIHRlcm1pbmFsX3JtX2Rpc3BsYXkoc3Ry dWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybSwgc3RydWN0IGRpc3BsYXkgKmRpc3ApCisgeworIAlz dHJ1Y3Qgc2hsX2RsaXN0ICppdGVyOworIAlzdHJ1Y3Qgc2NyZWVuICpzY3I7CitAQCAtMTA4MCw3 ICsxMDgwLDMwIEBAIHN0YXRpYyB2b2lkIHRlcm1pbmFsX2Nsb3NlKHN0cnVjdCBrbXNjb25fdGVy bWluYWwgKnRlcm0pCisgCXRlcm0tPm9wZW5lZCA9IGZhbHNlOworIH0KKyAKKy1zdGF0aWMgdm9p ZCB0ZXJtaW5hbF9kZXN0cm95KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCisrdm9pZCB0 ZXJtaW5hbF9yZWZyZXNoX2Rpc3BsYXlzKHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0pCisr eworKwlpZiAodGVybS0+cG9pbnRlci52aXNpYmxlKQorKwkJaHdfY3Vyc29yX3Nob3codGVybSwg dGVybS0+cG9pbnRlci54LCB0ZXJtLT5wb2ludGVyLnkpOworKwlyZWRyYXdfYWxsX3RleHQodGVy bSk7CisrfQorKworK3ZvaWQgdGVybWluYWxfYWN0aXZhdGUoc3RydWN0IGttc2Nvbl90ZXJtaW5h bCAqdGVybSkKKyt7CisrCXRlcm0tPmF3YWtlID0gdHJ1ZTsKKysJaWYgKCF0ZXJtLT5vcGVuZWQp CisrCQl0ZXJtaW5hbF9vcGVuKHRlcm0pOworKwlpZiAodGVybS0+cG9pbnRlci52aXNpYmxlKQor KwkJaHdfY3Vyc29yX3Nob3codGVybSwgdGVybS0+cG9pbnRlci54LCB0ZXJtLT5wb2ludGVyLnkp OworKwlyZWRyYXdfYWxsX3RleHQodGVybSk7CisrfQorKworK3ZvaWQgdGVybWluYWxfZGVhY3Rp dmF0ZShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtKQorK3sKKysJdGVybS0+YXdha2UgPSBm YWxzZTsKKysJaHdfY3Vyc29yX2hpZGUodGVybSk7CisrfQorKworK3ZvaWQgdGVybWluYWxfZGVz dHJveShzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtKQorIHsKKyAJbG9nX2RlYnVnKCJmcmVl IHRlcm1pbmFsIG9iamVjdCAlcCIsIHRlcm0pOworIAorQEAgLTEwOTksNDMgKzExMjIsNiBAQCBz dGF0aWMgdm9pZCB0ZXJtaW5hbF9kZXN0cm95KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0p CisgCWZyZWUodGVybSk7CisgfQorIAorLXN0YXRpYyBpbnQgc2Vzc2lvbl9ldmVudChzdHJ1Y3Qg a21zY29uX3Nlc3Npb24gKnNlc3Npb24sIHN0cnVjdCBrbXNjb25fc2Vzc2lvbl9ldmVudCAqZXYs CistCQkJIHZvaWQgKmRhdGEpCisteworLQlzdHJ1Y3Qga21zY29uX3Rlcm1pbmFsICp0ZXJtID0g ZGF0YTsKKy0KKy0Jc3dpdGNoIChldi0+dHlwZSkgeworLQljYXNlIEtNU0NPTl9TRVNTSU9OX0RJ U1BMQVlfTkVXOgorLQkJYWRkX2Rpc3BsYXkodGVybSwgZXYtPmRpc3ApOworLQkJYnJlYWs7Cist CWNhc2UgS01TQ09OX1NFU1NJT05fRElTUExBWV9HT05FOgorLQkJcm1fZGlzcGxheSh0ZXJtLCBl di0+ZGlzcCk7CistCQlicmVhazsKKy0JY2FzZSBLTVNDT05fU0VTU0lPTl9ESVNQTEFZX1JFRlJF U0g6CistCQlpZiAodGVybS0+cG9pbnRlci52aXNpYmxlKQorLQkJCWh3X2N1cnNvcl9zaG93KHRl cm0sIHRlcm0tPnBvaW50ZXIueCwgdGVybS0+cG9pbnRlci55KTsKKy0JCXJlZHJhd19hbGxfdGV4 dCh0ZXJtKTsKKy0JCWJyZWFrOworLQljYXNlIEtNU0NPTl9TRVNTSU9OX0FDVElWQVRFOgorLQkJ dGVybS0+YXdha2UgPSB0cnVlOworLQkJaWYgKCF0ZXJtLT5vcGVuZWQpCistCQkJdGVybWluYWxf b3Blbih0ZXJtKTsKKy0JCWlmICh0ZXJtLT5wb2ludGVyLnZpc2libGUpCistCQkJaHdfY3Vyc29y X3Nob3codGVybSwgdGVybS0+cG9pbnRlci54LCB0ZXJtLT5wb2ludGVyLnkpOworLQkJcmVkcmF3 X2FsbF90ZXh0KHRlcm0pOworLQkJYnJlYWs7CistCWNhc2UgS01TQ09OX1NFU1NJT05fREVBQ1RJ VkFURToKKy0JCXRlcm0tPmF3YWtlID0gZmFsc2U7CistCQlod19jdXJzb3JfaGlkZSh0ZXJtKTsK Ky0JCWJyZWFrOworLQljYXNlIEtNU0NPTl9TRVNTSU9OX1VOUkVHSVNURVI6CistCQl0ZXJtaW5h bF9kZXN0cm95KHRlcm0pOworLQkJYnJlYWs7CistCX0KKy0KKy0JcmV0dXJuIDA7CistfQorLQor IHN0YXRpYyB2b2lkIHB0eV9pbnB1dChzdHJ1Y3Qga21zY29uX3B0eSAqcHR5LCBjb25zdCBjaGFy ICp1OCwgc2l6ZV90IGxlbiwgdm9pZCAqZGF0YSkKKyB7CisgCXN0cnVjdCBrbXNjb25fdGVybWlu YWwgKnRlcm0gPSBkYXRhOworQEAgLTExNjMsMjYgKzExNDksMjUgQEAgc3RhdGljIHZvaWQgd3Jp dGVfZXZlbnQoc3RydWN0IHRzbV92dGUgKnZ0ZSwgY29uc3QgY2hhciAqdTgsIHNpemVfdCBsZW4s IHZvaWQgKmQKKyAJa21zY29uX3B0eV93cml0ZSh0ZXJtLT5wdHksIHU4LCBsZW4pOworIH0KKyAK Ky1pbnQga21zY29uX3Rlcm1pbmFsX3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91 dCwgc3RydWN0IGttc2Nvbl9zZWF0ICpzZWF0LAorLQkJCSAgICAgdW5zaWduZWQgaW50IHZ0bnIp Cisrc3RydWN0IGttc2Nvbl90ZXJtaW5hbCAqdGVybWluYWxfbmV3KHN0cnVjdCBrbXNjb25fc2Vz c2lvbiAqc2Vzc2lvbiwgdW5zaWduZWQgaW50IHZ0bnIsCisrCQkJCSAgICAgc3RydWN0IGNvbmZf Y3R4ICpjb25mX2N0eCwgc3RydWN0IGV2X2Vsb29wICplbG9vcCwKKysJCQkJICAgICBzdHJ1Y3Qg aW5wdXQgKmlucHV0LCBjb25zdCBjaGFyICpzZWF0X25hbWUpCisgeworIAlzdHJ1Y3Qga21zY29u X3Rlcm1pbmFsICp0ZXJtOworIAlpbnQgcmV0OworIAorLQlpZiAoIW91dCB8fCAhc2VhdCkKKy0J CXJldHVybiAtRUlOVkFMOworLQorIAl0ZXJtID0gbWFsbG9jKHNpemVvZigqdGVybSkpOworIAlp ZiAoIXRlcm0pCistCQlyZXR1cm4gLUVOT01FTTsKKysJCXJldHVybiBOVUxMOworIAorIAltZW1z ZXQodGVybSwgMCwgc2l6ZW9mKCp0ZXJtKSk7CisgCXRlcm0tPnJlZiA9IDE7CistCXRlcm0tPmVs b29wID0ga21zY29uX3NlYXRfZ2V0X2Vsb29wKHNlYXQpOworLQl0ZXJtLT5pbnB1dCA9IGttc2Nv bl9zZWF0X2dldF9pbnB1dChzZWF0KTsKKysJdGVybS0+c2Vzc2lvbiA9IHNlc3Npb247CisrCXRl cm0tPmVsb29wID0gZWxvb3A7CisrCXRlcm0tPmlucHV0ID0gaW5wdXQ7CisgCXNobF9kbGlzdF9p bml0KCZ0ZXJtLT5zY3JlZW5zKTsKKyAKKy0JdGVybS0+Y29uZl9jdHggPSBrbXNjb25fc2VhdF9n ZXRfY29uZihzZWF0KTsKKysJdGVybS0+Y29uZl9jdHggPSBjb25mX2N0eDsKKyAJdGVybS0+Y29u ZiA9IGNvbmZfY3R4X2dldF9tZW0odGVybS0+Y29uZl9jdHgpOworIAorIAlzdHJuY3B5KHRlcm0t PmZvbnRfYXR0ci5uYW1lLCB0ZXJtLT5jb25mLT5mb250X25hbWUsIEtNU0NPTl9GT05UX01BWF9O QU1FIC0gMSk7CitAQCAtMTIyMSw3ICsxMjA2LDcgQEAgaW50IGttc2Nvbl90ZXJtaW5hbF9yZWdp c3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2UK KyAJCWdvdG8gZXJyX2ZvbnQ7CisgCisgCXJldCA9IGttc2Nvbl9wdHlfc2V0X2NvbmYodGVybS0+ cHR5LCB0ZXJtLT5jb25mLT50ZXJtLCAidHJ1ZWNvbG9yIiwgdGVybS0+Y29uZi0+YXJndiwKKy0J CQkJICBrbXNjb25fc2VhdF9nZXRfbmFtZShzZWF0KSwgdnRuciwgdGVybS0+Y29uZi0+cmVzZXRf ZW52LAorKwkJCQkgIHNlYXRfbmFtZSwgdnRuciwgdGVybS0+Y29uZi0+cmVzZXRfZW52LAorIAkJ CQkgIHRlcm0tPmNvbmYtPmJhY2tzcGFjZV9kZWxldGUpOworIAlpZiAocmV0KQorIAkJZ290byBl cnJfcHR5OworQEAgLTEyNDEsMjAgKzEyMjYsMTEgQEAgaW50IGttc2Nvbl90ZXJtaW5hbF9yZWdp c3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24gKipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2UK KyAJCQlnb3RvIGVycl9pbnB1dDsKKyAJfQorIAorLQlyZXQgPSBrbXNjb25fc2VhdF9yZWdpc3Rl cl9zZXNzaW9uKHNlYXQsICZ0ZXJtLT5zZXNzaW9uLCBzZXNzaW9uX2V2ZW50LCB0ZXJtKTsKKy0J aWYgKHJldCkgeworLQkJbG9nX2Vycm9yKCJjYW5ub3QgcmVnaXN0ZXIgc2Vzc2lvbiBmb3IgdGVy bWluYWw6ICVkIiwgcmV0KTsKKy0JCWdvdG8gZXJyX3BvaW50ZXI7CistCX0KKy0KKyAJZXZfZWxv b3BfcmVmKHRlcm0tPmVsb29wKTsKKyAJaW5wdXRfcmVmKHRlcm0tPmlucHV0KTsKKy0JKm91dCA9 IHRlcm0tPnNlc3Npb247CisgCWxvZ19kZWJ1ZygibmV3IHRlcm1pbmFsIG9iamVjdCAlcCIsIHRl cm0pOworLQlyZXR1cm4gMDsKKysJcmV0dXJuIHRlcm07CisgCistZXJyX3BvaW50ZXI6CistCWlu cHV0X3VucmVnaXN0ZXJfcG9pbnRlcl9jYih0ZXJtLT5pbnB1dCwgcG9pbnRlcl9ldmVudCwgdGVy bSk7CisgZXJyX2lucHV0OgorIAlpbnB1dF91bnJlZ2lzdGVyX2tleV9jYih0ZXJtLT5pbnB1dCwg aW5wdXRfZXZlbnQsIHRlcm0pOworIGVycl9wdHlmZDoKK0BAIC0xMjY5LDUgKzEyNDUsNSBAQCBl cnJfY29uOgorIAl0c21fc2NyZWVuX3VucmVmKHRlcm0tPmNvbnNvbGUpOworIGVycl9mcmVlOgor IAlmcmVlKHRlcm0pOworLQlyZXR1cm4gcmV0OworKwlyZXR1cm4gTlVMTDsKKyB9CitkaWZmIC0t Z2l0IGEvc3JjL2ttc2Nvbl90ZXJtaW5hbC5oIGIvc3JjL2ttc2Nvbl90ZXJtaW5hbC5oCitpbmRl eCBjZDc0YmFiLi41NTIyNDJjIDEwMDY0NAorLS0tIGEvc3JjL2ttc2Nvbl90ZXJtaW5hbC5oCisr KysgYi9zcmMva21zY29uX3Rlcm1pbmFsLmgKK0BAIC0zMywyMyArMzMsMjEgQEAKKyAjaWZuZGVm IEtNU0NPTl9URVJNSU5BTF9ICisgI2RlZmluZSBLTVNDT05fVEVSTUlOQUxfSAorIAorLSNpbmNs dWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSAia21zY29uX3Nl YXQuaCIKKy0KKy0jaWZkZWYgQlVJTERfRU5BQkxFX1NFU1NJT05fVEVSTUlOQUwKKy0KKy1pbnQg a21zY29uX3Rlcm1pbmFsX3JlZ2lzdGVyKHN0cnVjdCBrbXNjb25fc2Vzc2lvbiAqKm91dCwgc3Ry dWN0IGttc2Nvbl9zZWF0ICpzZWF0LAorLQkJCSAgICAgdW5zaWduZWQgaW50IHZ0bnIpOworLQor LSNlbHNlIC8qICFCVUlMRF9FTkFCTEVfU0VTU0lPTl9URVJNSU5BTCAqLworLQorLXN0YXRpYyBp bmxpbmUgaW50IGttc2Nvbl90ZXJtaW5hbF9yZWdpc3RlcihzdHJ1Y3Qga21zY29uX3Nlc3Npb24g KipvdXQsIHN0cnVjdCBrbXNjb25fc2VhdCAqc2VhdCwKKy0JCQkJCSAgIHVuc2lnbmVkIGludCB2 dG5yKQorLXsKKy0JcmV0dXJuIC1FT1BOT1RTVVBQOworLX0KKy0KKy0jZW5kaWYgLyogQlVJTERf RU5BQkxFX1NFU1NJT05fVEVSTUlOQUwgKi8KKytzdHJ1Y3QgY29uZl9jdHg7Cisrc3RydWN0IGRp c3BsYXk7Cisrc3RydWN0IGV2X2Vsb29wOworK3N0cnVjdCBrbXNjb25fdGVybWluYWw7Cisrc3Ry dWN0IGttc2Nvbl9zZXNzaW9uOworK3N0cnVjdCBpbnB1dDsKKysKKytzdHJ1Y3Qga21zY29uX3Rl cm1pbmFsICp0ZXJtaW5hbF9uZXcoc3RydWN0IGttc2Nvbl9zZXNzaW9uICpzZXNzaW9uLCB1bnNp Z25lZCBpbnQgdnRuciwKKysJCQkJICAgICBzdHJ1Y3QgY29uZl9jdHggKmNvbmZfY3R4LCBzdHJ1 Y3QgZXZfZWxvb3AgKmVsb29wLAorKwkJCQkgICAgIHN0cnVjdCBpbnB1dCAqaW5wdXQsIGNvbnN0 IGNoYXIgKnNlYXRfbmFtZSk7Cisrdm9pZCB0ZXJtaW5hbF9kZXN0cm95KHN0cnVjdCBrbXNjb25f dGVybWluYWwgKnRlcm0pOworK2ludCB0ZXJtaW5hbF9hZGRfZGlzcGxheShzdHJ1Y3Qga21zY29u X3Rlcm1pbmFsICp0ZXJtLCBzdHJ1Y3QgZGlzcGxheSAqZGlzcCk7Cisrdm9pZCB0ZXJtaW5hbF9y bV9kaXNwbGF5KHN0cnVjdCBrbXNjb25fdGVybWluYWwgKnRlcm0sIHN0cnVjdCBkaXNwbGF5ICpk aXNwKTsKKyt2b2lkIHRlcm1pbmFsX3JlZnJlc2hfZGlzcGxheXMoc3RydWN0IGttc2Nvbl90ZXJt aW5hbCAqdGVybSk7Cisrdm9pZCB0ZXJtaW5hbF9hY3RpdmF0ZShzdHJ1Y3Qga21zY29uX3Rlcm1p bmFsICp0ZXJtKTsKKyt2b2lkIHRlcm1pbmFsX2RlYWN0aXZhdGUoc3RydWN0IGttc2Nvbl90ZXJt aW5hbCAqdGVybSk7CisgCisgI2VuZGlmIC8qIEtNU0NPTl9URVJNSU5BTF9IICovCitkaWZmIC0t Z2l0IGEvc3JjL21lc29uLmJ1aWxkIGIvc3JjL21lc29uLmJ1aWxkCitpbmRleCA5NTQ3ZmUxLi4x YzRiYTEyIDEwMDY0NAorLS0tIGEvc3JjL21lc29uLmJ1aWxkCisrKysgYi9zcmMvbWVzb24uYnVp bGQKK0BAIC04OCwxNiArODgsMjcgQEAga21zY29uX3NyY3MgPSBbCisgICAna21zY29uX2NvbmYu YycsCisgICAna21zY29uX2lzc3VlLmMnLAorICAgJ2ttc2Nvbl9tYWluLmMnLAorKyAgJ2ttc2Nv bl90ZXJtaW5hbC5jJywKKyBdCistaWYgZW5hYmxlX3Nlc3Npb25fZHVtbXkKKy0gIGttc2Nvbl9z cmNzICs9ICdrbXNjb25fZHVtbXkuYycKKy1lbmRpZgorLWlmIGVuYWJsZV9zZXNzaW9uX3Rlcm1p bmFsCistICBrbXNjb25fc3JjcyArPSAna21zY29uX3Rlcm1pbmFsLmMnCisra21zY29uX2RlcCA9 IFt4a2Jjb21tb25fZGVwcywKKysgIGxpYnRzbV9kZXBzLAorKyAgdGhyZWFkc19kZXBzLAorKyAg ZGxfZGVwcywKKysgIGNvbmZfZGVwcywKKysgIHNobF9kZXBzLAorKyAgZWxvb3BfZGVwcywKKysg IHV0ZXJtX2RlcHMsCisrICByZW5kZXJfZGVwcywKKysgIGZvbnRfZGVwcywKKytdCisrCisraWYg ZW5hYmxlX2RidXMKKysgIGttc2Nvbl9zcmNzICs9ICdkYnVzLmMnCisrICBrbXNjb25fZGVwICs9 IGRidXNfZGVwcworIGVuZGlmCisga21zY29uID0gZXhlY3V0YWJsZSgna21zY29uJywga21zY29u X3NyY3MsCistICBkZXBlbmRlbmNpZXM6IFt4a2Jjb21tb25fZGVwcywgbGlidHNtX2RlcHMsIHRo cmVhZHNfZGVwcywgZGxfZGVwcywgY29uZl9kZXBzLCBzaGxfZGVwcywgZWxvb3BfZGVwcywgdXRl cm1fZGVwcywgcmVuZGVyX2RlcHMsIGZvbnRfZGVwc10sCisrICBkZXBlbmRlbmNpZXM6IGttc2Nv bl9kZXAsCisgICBleHBvcnRfZHluYW1pYzogdHJ1ZSwKKyAgIGluc3RhbGw6IHRydWUsCistICBp bnN0YWxsX2RpcjogbGliZXhlY2RpciwKKysgIGluc3RhbGxfZGlyOiBiaW5kaXIsCisgKQorZGlm ZiAtLWdpdCBhL3NyYy9zaGwvZGxpc3QuaCBiL3NyYy9zaGwvZGxpc3QuaAoraW5kZXggODNjZDIz My4uMGFmNTA5NCAxMDA2NDQKKy0tLSBhL3NyYy9zaGwvZGxpc3QuaAorKysrIGIvc3JjL3NobC9k bGlzdC5oCitAQCAtMTAyLDYgKzEwMiwxNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hsX2RsaXN0 X2VtcHR5KHN0cnVjdCBzaGxfZGxpc3QgKmhlYWQpCisgCisgI2RlZmluZSBzaGxfZGxpc3RfbGFz dChoZWFkLCB0eXBlLCBtZW1iZXIpIHNobF9kbGlzdF9lbnRyeSgoaGVhZCktPnByZXYsIHR5cGUs IG1lbWJlcikKKyAKKysjZGVmaW5lIHNobF9kbGlzdF9uZXh0KGl0ZXIsIGhlYWQsIG1lbWJlcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisrCSgoaXRlciktPm1lbWJlci5uZXh0ID09IChoZWFkKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrCQkgPyBOVUxMICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysJCSA6IHNobF9kbGlzdF9lbnRyeSgoaXRlciktPm1lbWJlci5uZXh0 LCB0eXBlb2YoKml0ZXIpLCBsaXN0KSkKKysKKysjZGVmaW5lIHNobF9kbGlzdF9wcmV2KGl0ZXIs IGhlYWQsIG1lbWJlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrCSgoaXRlciktPm1lbWJlci5wcmV2ID09IChoZWFkKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr CQkgPyBOVUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysJCSA6IHNobF9kbGlzdF9lbnRyeSgoaXRl ciktPm1lbWJlci5wcmV2LCB0eXBlb2YoKml0ZXIpLCBsaXN0KSkKKysKKyAjZGVmaW5lIHNobF9k bGlzdF9mb3JfZWFjaChpdGVyLCBoZWFkKSBmb3IgKGl0ZXIgPSAoaGVhZCktPm5leHQ7IGl0ZXIg IT0gKGhlYWQpOyBpdGVyID0gaXRlci0+bmV4dCkKKyAKKyAjZGVmaW5lIHNobF9kbGlzdF9mb3Jf ZWFjaF9idXRfb25lKGl0ZXIsIHN0YXJ0LCBoZWFkKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdF9pbnB1dC5jIGIv dGVzdHMvdGVzdF9pbnB1dC5jCitpbmRleCAwZWNlZmMwLi5iMjE4ZWRjIDEwMDY0NAorLS0tIGEv dGVzdHMvdGVzdF9pbnB1dC5jCisrKysgYi90ZXN0cy90ZXN0X2lucHV0LmMKK0BAIC0xMjgsMTEg KzEyOCwxMiBAQCBzdGF0aWMgdm9pZCBzZXR1cF9pbnB1dChzdHJ1Y3QgdXRlcm1fbW9uaXRvciAq bW9uKQorIAlpZiAocmV0KQorIAkJcmV0dXJuOworIAlyZXQgPSBpbnB1dF9zZXRfa2V5bWFwKGlu cHV0LCBpbnB1dF9jb25mLnhrYl9tb2RlbCwgaW5wdXRfY29uZi54a2JfbGF5b3V0LAorLQkJCSAg ICAgICBpbnB1dF9jb25mLnhrYl92YXJpYW50LCBpbnB1dF9jb25mLnhrYl9vcHRpb25zLCBpbnB1 dF9jb25mLmxvY2FsZSwKKy0JCQkgICAgICAgaW5wdXRfY29uZi54a2Jfa2V5bWFwLCBpbnB1dF9j b25mLnhrYl9jb21wb3NlX2ZpbGUsCistCQkJICAgICAgIGNvbXBvc2VfZmlsZV9sZW4pOworKwkJ CSAgICAgICBpbnB1dF9jb25mLnhrYl92YXJpYW50LCBpbnB1dF9jb25mLnhrYl9vcHRpb25zLAor KwkJCSAgICAgICBpbnB1dF9jb25mLnhrYl9rZXltYXApOworIAlpZiAocmV0KQorIAkJcmV0dXJu OworKworKwlpbnB1dF9zZXRfY29tcG9zZShpbnB1dCwgaW5wdXRfY29uZi5sb2NhbGUsIGNvbXBv c2VfZmlsZSwgY29tcG9zZV9maWxlX2xlbik7CisgCWlucHV0X3NldF9jb25mKGlucHV0LCAyNTAs IDUwLCB0cnVlKTsKKyAJcmV0ID0gaW5wdXRfcmVnaXN0ZXJfa2V5X2NiKGlucHV0LCBpbnB1dF9h cnJpdmVkLCBOVUxMKTsKKyAJaWYgKHJldCkKKy0tIAorMi41NC4wCisK