From: marko.makela Date: May 15 2012 7:25am Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3829 to 3833) WL#6255 List-Archive: http://lists.mysql.com/commits/143799 Message-Id: <201205150725.q4F7PNBJ021840@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4MzMgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0xNQogICAgICBXTCM2MjU1IHByZXBhcmF0aW9u OiBTcGxpdCByb3dfaW5zX2luZGV4X2VudHJ5KCksIHJvd19pbnNfaW5kZXhfZW50cnlfbG93KCku CiAgICAgIAogICAgICByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5KCk6IEluc2VydCBhIGNsdXN0 ZXJlZCBpbmRleCBlbnRyeS4KICAgICAgcm93X2luc19zZWNfaW5kZXhfZW50cnkoKTogSW5zZXJ0 IGEgc2Vjb25kYXJ5IGluZGV4IGVudHJ5LgogICAgICAKICAgICAgcm93X2luc19jbHVzdF9pbmRl eF9lbnRyeV9sb3coKTogSW5zZXJ0IGEgY2x1c3RlcmVkIGluZGV4IGVudHJ5LgogICAgICByb3df aW5zX3NlY19pbmRleF9lbnRyeV9sb3coKTogSW5zZXJ0IGEgc2Vjb25kYXJ5IGluZGV4IGVudHJ5 LgogICAgICAKICAgICAgUmVtb3ZlIHRoZSBwYXJhbWV0ZXIgZm9yZWlnbj1UUlVFIGZyb20gYWxs IGZ1bmN0aW9ucyBhbmQgbl9leHQ9MAogICAgICBmcm9tIHRoZSBpbnNlcnQgaW50byBzZWNvbmRh cnkgaW5kZXguCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVm MGlidWYuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBpbnMuaAogICAgICBz dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwaW5zLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzB1cGQuY2MKIDM4MzIgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0xNQogICAgICBBZGQgZnVu Y3Rpb24gYXR0cmlidXRlcy4KCiAgICBtb2RpZmllZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9p bmNsdWRlL2J0cjBjdXIuaAogMzgzMSBNYXJrbyBNw6RrZWzDpAkyMDEyLTA1LTE0CiAgICAgIFdM IzYyNTU6IEFsbG93IFJPV19GT1JNQVQgYW5kIEtFWV9CTE9DS19TSVpFIHRvIGJlIGNoYW5nZWQg aW4tcGxhY2UuCiAgICAgIAogICAgICBjcmVhdGVfb3B0aW9uc19hcmVfdmFsaWQoKTogUmVuYW1l IHRvIGNyZWF0ZV9vcHRpb25zX2FyZV9pbnZhbGlkKCksIGFuZAogICAgICBjaGFuZ2UgdGhlIHJl dHVybiB0eXBlIGZyb20gaWJvb2wgdG8gY29uc3QgY2hhciouCiAgICAgIAogICAgICBJTk5PQkFT RV9PTkxJTkVfQ1JFQVRFLCBJTk5PQkFTRV9JTlBMQUNFX1JFQlVJTEQ6IE5ldyBzZXRzIG9mCiAg ICAgIHN1cHBvcnRlZCBpbi1wbGFjZSBBTFRFUiBUQUJMRSBvcGVyYXRpb25zLgogICAgICAKICAg ICAgaW5ub2Jhc2VfbmVlZF9yZWJ1aWxkKCk6IERldGVybWluZSBpZiBBTFRFUiBUQUJMRSBuZWVk cyB0byByZWJ1aWxkIHRoZQogICAgICB0YWJsZS4gV2UgaWdub3JlIG90aGVyIENIQU5HRV9DUkVB VEVfT1BUSU9OIGZsYWdzIHRoYW4gS0VZX0JMT0NLX1NJWkUKICAgICAgYW5kIFJPV19GT1JNQVQu CiAgICAgIAogICAgICBoYV9pbm5vYmFzZTo6Y2hlY2tfaWZfc3VwcG9ydGVkX2lucGxhY2VfYWx0 ZXIoKTogQWxsb3cgYWxsCiAgICAgIElOTk9CQVNFX0lOUExBQ0VfUkVCVUlMRCBvcGVyYXRpb25z LiBSZXBsYWNlIEFERF9QS19JTkRFWCB3aXRoCiAgICAgIElOTk9CQVNFX0lOUExBQ0VfUkVCVUlM RC4KICAgICAgCiAgICAgIGlubm9iYXNlX2NyZWF0ZV9rZXlfZGVmcygpOiBSZWJ1aWxkIHRoZSBj bHVzdGVyZWQgaW5kZXggZm9yCiAgICAgIElOTk9CQVNFX0lOUExBQ0VfUkVCVUlMRC4KICAgICAg CiAgICAgIGhhX2lubm9iYXNlOjpwcmVwYXJlX2lucGxhY2VfYWx0ZXJfdGFibGUoKTogQ2FsbAog ICAgICBjcmVhdGVfb3B0aW9uc19hcmVfaW52YWxpZCgpLgogICAgICAKICAgICAgaGFfaW5ub2Jh c2U6OmlucGxhY2VfYWx0ZXJfdGFibGUoKTogSWYgbm8gb3RoZXIgb3BlcmF0aW9ucyB0aGFuCiAg ICAgIENIQU5HRV9DUkVBVEVfT1BUSU9OIGFyZSBiZWluZyBwZXJmb3JtZWQgYW5kICFpbm5vYmFz ZV9uZWVkX3JlYnVpbGQoKSwKICAgICAgZG8gbm90aGluZy4KCiAgICBtb2RpZmllZDoKICAgICAg bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5vZGItY3JlYXRlLW9wdGlvbnMucmVzdWx0CiAg ICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLWNyZWF0ZS1vcHRpb25zLnRlc3QK ICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdl L2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5k bGVyL2hhbmRsZXIwYWx0ZXIuY2MKIDM4MzAgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0xNAogICAg ICBCcmFuY2ggbXlzcWwtdHJ1bmstd2w2MjU1IGZyb20gbXlzcWwtdHJ1bmsuCgogICAgbW9kaWZp ZWQ6CiAgICAgIC5ienItbXlzcWwvZGVmYXVsdC5jb25mCiAzODI5IEpvcmdlbiBMb2xhbmQJMjAx Mi0wNS0xNAogICAgICBCdWcjMTE3NTQxNjggbGlzdCBidWctaWQgZnJvbSBuZXcgYnVnIHN5c3Rl bSBpbnN0ZWFkIG9mIG9sZCBidWcKICAgICAgc3lzdGVtIGluIGRlZmF1bHQuZXhwZXJpbWVudGFs CgogICAgbW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3QvY29sbGVjdGlvbnMvZGVmYXVsdC5leHBl cmltZW50YWwKPT09IG1vZGlmaWVkIGZpbGUgJy5ienItbXlzcWwvZGVmYXVsdC5jb25mJwotLS0g YS8uYnpyLW15c3FsL2RlZmF1bHQuY29uZglyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20t MjAxMjA1MTQwOTMwNTgtNHZkNGdjMWlvc2gybjZiYQorKysgYi8uYnpyLW15c3FsL2RlZmF1bHQu Y29uZglyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTA3MTkzMi01aDAxZWU2 cGVtdDZrenJuCkBAIC0xLDQgKzEsNCBAQAogW01ZU1FMXQogcG9zdF9jb21taXRfdG8gPSAiY29t bWl0c0BsaXN0cy5teXNxbC5jb20iCiBwb3N0X3B1c2hfdG8gPSAiY29tbWl0c0BsaXN0cy5teXNx bC5jb20iCi10cmVlX25hbWUgPSAibXlzcWwtdHJ1bmsiCit0cmVlX25hbWUgPSAibXlzcWwtdHJ1 bmstd2w2MjU1IgoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3Iv aW5ub2RiLWNyZWF0ZS1vcHRpb25zLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5v ZGIvci9pbm5vZGItY3JlYXRlLW9wdGlvbnMucmVzdWx0CXJldmlkOmpvcmdlbi5sb2xhbmRAb3Jh Y2xlLmNvbS0yMDEyMDUxNDA5MzA1OC00dmQ0Z2MxaW9zaDJuNmJhCisrKyBiL215c3FsLXRlc3Qv c3VpdGUvaW5ub2RiL3IvaW5ub2RiLWNyZWF0ZS1vcHRpb25zLnJlc3VsdAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTA3MTkzMi01aDAxZWU2cGVtdDZrenJuCkBAIC00Niwx MSArNDYsMTEgQEAgU0VMRUNUIFRBQkxFX05BTUUsUk9XX0ZPUk1BVCxDUkVBVEVfT1BUSQogVEFC TEVfTkFNRQlST1dfRk9STUFUCUNSRUFURV9PUFRJT05TCiB0MQlDb21wYWN0CQogQUxURVIgVEFC TEUgdDEgUk9XX0ZPUk1BVD1GSVhFRCBLRVlfQkxPQ0tfU0laRT0wOwotRVJST1IgSFkwMDA6IENh bid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJubzogMTQ3OCkKK0VSUk9SIEhZ MDAwOiBUYWJsZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBj cmVhdGUgb3B0aW9uICdST1dfVFlQRScKIFNIT1cgV0FSTklOR1M7CiBMZXZlbAlDb2RlCU1lc3Nh Z2UKIFdhcm5pbmcJMTQ3OAlJbm5vREI6IGludmFsaWQgUk9XX0ZPUk1BVCBzcGVjaWZpZXIuCi1F cnJvcgkxMDA1CUNhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJubzogMTQ3 OCkKK0Vycm9yCTE0NzgJVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3Vw cG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnUk9XX1RZUEUnCiBTRUxFQ1QgVEFCTEVfTkFNRSxST1df Rk9STUFULENSRUFURV9PUFRJT05TIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBXSEVS RSBUQUJMRV9OQU1FID0gJ3QxJzsKIFRBQkxFX05BTUUJUk9XX0ZPUk1BVAlDUkVBVEVfT1BUSU9O UwogdDEJQ29tcGFjdAkKQEAgLTEwNCwyOSArMTA0LDI5IEBAIHQxCUNvbXByZXNzZWQJS0VZX0JM T0NLX1NJWkU9MQogRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CiBDUkVBVEUgVEFCTEUgdDEgKCBp IElOVCApOwogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1GSVhFRCBLRVlfQkxPQ0tfU0laRT0x OwotRVJST1IgSFkwMDA6IENhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJu bzogMTQ3OCkKK0VSUk9SIEhZMDAwOiBUYWJsZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBkb2Vz IG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0aW9uICdST1dfVFlQRScKIFNIT1cgV0FSTklOR1M7 CiBMZXZlbAlDb2RlCU1lc3NhZ2UKIFdhcm5pbmcJMTQ3OAlJbm5vREI6IGludmFsaWQgUk9XX0ZP Uk1BVCBzcGVjaWZpZXIuCi1FcnJvcgkxMDA1CUNhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1w b3JhcnknIChlcnJubzogMTQ3OCkKK0Vycm9yCTE0NzgJVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lu bm9EQicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnUk9XX1RZUEUnCiBBTFRF UiBUQUJMRSB0MSBST1dfRk9STUFUPUNPTVBBQ1QgS0VZX0JMT0NLX1NJWkU9MjsKLUVSUk9SIEhZ MDAwOiBDYW4ndCBjcmVhdGUgdGFibGUgJyNzcWwtdGVtcG9yYXJ5JyAoZXJybm86IDE0NzgpCitF UlJPUiBIWTAwMDogVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3VwcG9y dCB0aGUgY3JlYXRlIG9wdGlvbiAnS0VZX0JMT0NLX1NJWkUnCiBTSE9XIFdBUk5JTkdTOwogTGV2 ZWwJQ29kZQlNZXNzYWdlCiBXYXJuaW5nCTE0NzgJSW5ub0RCOiBjYW5ub3Qgc3BlY2lmeSBST1df Rk9STUFUID0gQ09NUEFDVCB3aXRoIEtFWV9CTE9DS19TSVpFLgotRXJyb3IJMTAwNQlDYW4ndCBj cmVhdGUgdGFibGUgJyNzcWwtdGVtcG9yYXJ5JyAoZXJybm86IDE0NzgpCitFcnJvcgkxNDc4CVRh YmxlIHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBv cHRpb24gJ0tFWV9CTE9DS19TSVpFJwogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1EWU5BTUlD IEtFWV9CTE9DS19TSVpFPTQ7Ci1FUlJPUiBIWTAwMDogQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3Fs LXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRVJST1IgSFkwMDA6IFRhYmxlIHN0b3JhZ2UgZW5n aW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJ0tFWV9CTE9D S19TSVpFJwogU0hPVyBXQVJOSU5HUzsKIExldmVsCUNvZGUJTWVzc2FnZQogV2FybmluZwkxNDc4 CUlubm9EQjogY2Fubm90IHNwZWNpZnkgUk9XX0ZPUk1BVCA9IERZTkFNSUMgd2l0aCBLRVlfQkxP Q0tfU0laRS4KLUVycm9yCTEwMDUJQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScg KGVycm5vOiAxNDc4KQorRXJyb3IJMTQ3OAlUYWJsZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBk b2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0aW9uICdLRVlfQkxPQ0tfU0laRScKIEFMVEVS IFRBQkxFIHQxIFJPV19GT1JNQVQ9UkVEVU5EQU5UIEtFWV9CTE9DS19TSVpFPTI7Ci1FUlJPUiBI WTAwMDogQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQor RVJST1IgSFkwMDA6IFRhYmxlIHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBv cnQgdGhlIGNyZWF0ZSBvcHRpb24gJ0tFWV9CTE9DS19TSVpFJwogU0hPVyBXQVJOSU5HUzsKIExl dmVsCUNvZGUJTWVzc2FnZQogV2FybmluZwkxNDc4CUlubm9EQjogY2Fubm90IHNwZWNpZnkgUk9X X0ZPUk1BVCA9IFJFRFVOREFOVCB3aXRoIEtFWV9CTE9DS19TSVpFLgotRXJyb3IJMTAwNQlDYW4n dCBjcmVhdGUgdGFibGUgJyNzcWwtdGVtcG9yYXJ5JyAoZXJybm86IDE0NzgpCitFcnJvcgkxNDc4 CVRhYmxlIHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0 ZSBvcHRpb24gJ0tFWV9CTE9DS19TSVpFJwogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1ERUZB VUxUIEtFWV9CTE9DS19TSVpFPTE7CiBTSE9XIFdBUk5JTkdTOwogTGV2ZWwJQ29kZQlNZXNzYWdl CkBAIC0xNDYsMTEgKzE0NiwxMSBAQCBTRUxFQ1QgVEFCTEVfTkFNRSxST1dfRk9STUFULENSRUFU RV9PUFRJCiBUQUJMRV9OQU1FCVJPV19GT1JNQVQJQ1JFQVRFX09QVElPTlMKIHQxCUNvbXBhY3QJ cm93X2Zvcm1hdD1DT01QQUNUCiBBTFRFUiBUQUJMRSB0MSBLRVlfQkxPQ0tfU0laRT0yOwotRVJS T1IgSFkwMDA6IENhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJubzogMTQ3 OCkKK0VSUk9SIEhZMDAwOiBUYWJsZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBkb2VzIG5vdCBz dXBwb3J0IHRoZSBjcmVhdGUgb3B0aW9uICdLRVlfQkxPQ0tfU0laRScKIFNIT1cgV0FSTklOR1M7 CiBMZXZlbAlDb2RlCU1lc3NhZ2UKIFdhcm5pbmcJMTQ3OAlJbm5vREI6IGNhbm5vdCBzcGVjaWZ5 IFJPV19GT1JNQVQgPSBDT01QQUNUIHdpdGggS0VZX0JMT0NLX1NJWkUuCi1FcnJvcgkxMDA1CUNh bid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJubzogMTQ3OCkKK0Vycm9yCTE0 NzgJVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3Jl YXRlIG9wdGlvbiAnS0VZX0JMT0NLX1NJWkUnCiBBTFRFUiBUQUJMRSB0MSBST1dfRk9STUFUPVJF RFVOREFOVDsKIFNIT1cgV0FSTklOR1M7CiBMZXZlbAlDb2RlCU1lc3NhZ2UKQEAgLTE1OCwxMSAr MTU4LDExIEBAIFNFTEVDVCBUQUJMRV9OQU1FLFJPV19GT1JNQVQsQ1JFQVRFX09QVEkKIFRBQkxF X05BTUUJUk9XX0ZPUk1BVAlDUkVBVEVfT1BUSU9OUwogdDEJUmVkdW5kYW50CXJvd19mb3JtYXQ9 UkVEVU5EQU5UCiBBTFRFUiBUQUJMRSB0MSBLRVlfQkxPQ0tfU0laRT00OwotRVJST1IgSFkwMDA6 IENhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJubzogMTQ3OCkKK0VSUk9S IEhZMDAwOiBUYWJsZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBkb2VzIG5vdCBzdXBwb3J0IHRo ZSBjcmVhdGUgb3B0aW9uICdLRVlfQkxPQ0tfU0laRScKIFNIT1cgV0FSTklOR1M7CiBMZXZlbAlD b2RlCU1lc3NhZ2UKIFdhcm5pbmcJMTQ3OAlJbm5vREI6IGNhbm5vdCBzcGVjaWZ5IFJPV19GT1JN QVQgPSBSRURVTkRBTlQgd2l0aCBLRVlfQkxPQ0tfU0laRS4KLUVycm9yCTEwMDUJQ2FuJ3QgY3Jl YXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRXJyb3IJMTQ3OAlUYWJs ZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0 aW9uICdLRVlfQkxPQ0tfU0laRScKIEFMVEVSIFRBQkxFIHQxIFJPV19GT1JNQVQ9RFlOQU1JQzsK IFNIT1cgV0FSTklOR1M7CiBMZXZlbAlDb2RlCU1lc3NhZ2UKQEAgLTE3MCwxMSArMTcwLDExIEBA IFNFTEVDVCBUQUJMRV9OQU1FLFJPV19GT1JNQVQsQ1JFQVRFX09QVEkKIFRBQkxFX05BTUUJUk9X X0ZPUk1BVAlDUkVBVEVfT1BUSU9OUwogdDEJRHluYW1pYwlyb3dfZm9ybWF0PURZTkFNSUMKIEFM VEVSIFRBQkxFIHQxIEtFWV9CTE9DS19TSVpFPTI7Ci1FUlJPUiBIWTAwMDogQ2FuJ3QgY3JlYXRl IHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRVJST1IgSFkwMDA6IFRhYmxl IHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRp b24gJ0tFWV9CTE9DS19TSVpFJwogU0hPVyBXQVJOSU5HUzsKIExldmVsCUNvZGUJTWVzc2FnZQog V2FybmluZwkxNDc4CUlubm9EQjogY2Fubm90IHNwZWNpZnkgUk9XX0ZPUk1BVCA9IERZTkFNSUMg d2l0aCBLRVlfQkxPQ0tfU0laRS4KLUVycm9yCTEwMDUJQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3Fs LXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRXJyb3IJMTQ3OAlUYWJsZSBzdG9yYWdlIGVuZ2lu ZSAnSW5ub0RCJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0aW9uICdLRVlfQkxPQ0tf U0laRScKIEFMVEVSIFRBQkxFIHQxIFJPV19GT1JNQVQ9Q09NUFJFU1NFRDsKIFNIT1cgV0FSTklO R1M7CiBMZXZlbAlDb2RlCU1lc3NhZ2UKQEAgLTIxMiwyMyArMjEyLDIzIEBAIHQxCUNSRUFURSBU QUJMRSBgdDFgICgKICAgYGYxYCBpbnQoMTEpIERFRkFVTFQgTlVMTAogKSBFTkdJTkU9SW5ub0RC IERFRkFVTFQgQ0hBUlNFVD1sYXRpbjEgS0VZX0JMT0NLX1NJWkU9MgogQUxURVIgVEFCTEUgdDEg Uk9XX0ZPUk1BVD1DT01QQUNUOwotRVJST1IgSFkwMDA6IENhbid0IGNyZWF0ZSB0YWJsZSAnI3Nx bC10ZW1wb3JhcnknIChlcnJubzogMTQ3OCkKK0VSUk9SIEhZMDAwOiBUYWJsZSBzdG9yYWdlIGVu Z2luZSAnSW5ub0RCJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0aW9uICdLRVlfQkxP Q0tfU0laRScKIFNIT1cgV0FSTklOR1M7CiBMZXZlbAlDb2RlCU1lc3NhZ2UKIFdhcm5pbmcJMTQ3 OAlJbm5vREI6IGNhbm5vdCBzcGVjaWZ5IFJPV19GT1JNQVQgPSBDT01QQUNUIHdpdGggS0VZX0JM T0NLX1NJWkUuCi1FcnJvcgkxMDA1CUNhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3Jhcnkn IChlcnJubzogMTQ3OCkKK0Vycm9yCTE0NzgJVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicg ZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnS0VZX0JMT0NLX1NJWkUnCiBBTFRF UiBUQUJMRSB0MSBST1dfRk9STUFUPVJFRFVOREFOVDsKLUVSUk9SIEhZMDAwOiBDYW4ndCBjcmVh dGUgdGFibGUgJyNzcWwtdGVtcG9yYXJ5JyAoZXJybm86IDE0NzgpCitFUlJPUiBIWTAwMDogVGFi bGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9w dGlvbiAnS0VZX0JMT0NLX1NJWkUnCiBTSE9XIFdBUk5JTkdTOwogTGV2ZWwJQ29kZQlNZXNzYWdl CiBXYXJuaW5nCTE0NzgJSW5ub0RCOiBjYW5ub3Qgc3BlY2lmeSBST1dfRk9STUFUID0gUkVEVU5E QU5UIHdpdGggS0VZX0JMT0NLX1NJWkUuCi1FcnJvcgkxMDA1CUNhbid0IGNyZWF0ZSB0YWJsZSAn I3NxbC10ZW1wb3JhcnknIChlcnJubzogMTQ3OCkKK0Vycm9yCTE0NzgJVGFibGUgc3RvcmFnZSBl bmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnS0VZX0JM T0NLX1NJWkUnCiBBTFRFUiBUQUJMRSB0MSBST1dfRk9STUFUPURZTkFNSUM7Ci1FUlJPUiBIWTAw MDogQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRVJS T1IgSFkwMDA6IFRhYmxlIHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBvcnQg dGhlIGNyZWF0ZSBvcHRpb24gJ0tFWV9CTE9DS19TSVpFJwogU0hPVyBXQVJOSU5HUzsKIExldmVs CUNvZGUJTWVzc2FnZQogV2FybmluZwkxNDc4CUlubm9EQjogY2Fubm90IHNwZWNpZnkgUk9XX0ZP Uk1BVCA9IERZTkFNSUMgd2l0aCBLRVlfQkxPQ0tfU0laRS4KLUVycm9yCTEwMDUJQ2FuJ3QgY3Jl YXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRXJyb3IJMTQ3OAlUYWJs ZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0 aW9uICdLRVlfQkxPQ0tfU0laRScKIEFMVEVSIFRBQkxFIHQxIFJPV19GT1JNQVQ9Q09NUFJFU1NF RDsKIFNIT1cgV0FSTklOR1M7CiBMZXZlbAlDb2RlCU1lc3NhZ2UKQEAgLTI5OCwyMyArMjk4LDIz IEBAIENSRUFURSBUQUJMRSB0MSAoIGkgSU5UICkgUk9XX0ZPUk1BVD1ERUYKIFNIT1cgV0FSTklO R1M7CiBMZXZlbAlDb2RlCU1lc3NhZ2UKIEFMVEVSIFRBQkxFIHQxIEtFWV9CTE9DS19TSVpFPTI7 Ci1FUlJPUiBIWTAwMDogQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5v OiAxNDc4KQorRVJST1IgSFkwMDA6IFRhYmxlIHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMg bm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJ0tFWV9CTE9DS19TSVpFJwogU0hPVyBXQVJO SU5HUzsKIExldmVsCUNvZGUJTWVzc2FnZQogV2FybmluZwkxNDc4CUlubm9EQjogS0VZX0JMT0NL X1NJWkUgcmVxdWlyZXMgaW5ub2RiX2ZpbGVfZm9ybWF0ID4gQW50ZWxvcGUuCi1FcnJvcgkxMDA1 CUNhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJubzogMTQ3OCkKK0Vycm9y CTE0NzgJVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3VwcG9ydCB0aGUg Y3JlYXRlIG9wdGlvbiAnS0VZX0JMT0NLX1NJWkUnCiBBTFRFUiBUQUJMRSB0MSBST1dfRk9STUFU PUNPTVBSRVNTRUQ7Ci1FUlJPUiBIWTAwMDogQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3FsLXRlbXBv cmFyeScgKGVycm5vOiAxNDc4KQorRVJST1IgSFkwMDA6IFRhYmxlIHN0b3JhZ2UgZW5naW5lICdJ bm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJ1JPV19GT1JNQVQnCiBT SE9XIFdBUk5JTkdTOwogTGV2ZWwJQ29kZQlNZXNzYWdlCiBXYXJuaW5nCTE0NzgJSW5ub0RCOiBS T1dfRk9STUFUPUNPTVBSRVNTRUQgcmVxdWlyZXMgaW5ub2RiX2ZpbGVfZm9ybWF0ID4gQW50ZWxv cGUuCi1FcnJvcgkxMDA1CUNhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3JhcnknIChlcnJu bzogMTQ3OCkKK0Vycm9yCTE0NzgJVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicgZG9lcyBu b3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnUk9XX0ZPUk1BVCcKIEFMVEVSIFRBQkxFIHQx IFJPV19GT1JNQVQ9RFlOQU1JQzsKLUVSUk9SIEhZMDAwOiBDYW4ndCBjcmVhdGUgdGFibGUgJyNz cWwtdGVtcG9yYXJ5JyAoZXJybm86IDE0NzgpCitFUlJPUiBIWTAwMDogVGFibGUgc3RvcmFnZSBl bmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnUk9XX0ZP Uk1BVCcKIFNIT1cgV0FSTklOR1M7CiBMZXZlbAlDb2RlCU1lc3NhZ2UKIFdhcm5pbmcJMTQ3OAlJ bm5vREI6IFJPV19GT1JNQVQ9RFlOQU1JQyByZXF1aXJlcyBpbm5vZGJfZmlsZV9mb3JtYXQgPiBB bnRlbG9wZS4KLUVycm9yCTEwMDUJQ2FuJ3QgY3JlYXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScg KGVycm5vOiAxNDc4KQorRXJyb3IJMTQ3OAlUYWJsZSBzdG9yYWdlIGVuZ2luZSAnSW5ub0RCJyBk b2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0aW9uICdST1dfRk9STUFUJwogU0VUIEdMT0JB TCBpbm5vZGJfZmlsZV9mb3JtYXQ9QmFycmFjdWRhOwogRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7 CiBDUkVBVEUgVEFCTEUgdDEgKCBpIElOVCApIFJPV19GT1JNQVQ9Q09NUFJFU1NFRCBLRVlfQkxP Q0tfU0laRT00OwpAQCAtMzc1LDIzICszNzUsMjMgQEAgQ1JFQVRFIFRBQkxFIHQxICggaSBJTlQg KSBST1dfRk9STUFUPURFRgogU0hPVyBXQVJOSU5HUzsKIExldmVsCUNvZGUJTWVzc2FnZQogQUxU RVIgVEFCTEUgdDEgS0VZX0JMT0NLX1NJWkU9MTsKLUVSUk9SIEhZMDAwOiBDYW4ndCBjcmVhdGUg dGFibGUgJyNzcWwtdGVtcG9yYXJ5JyAoZXJybm86IDE0NzgpCitFUlJPUiBIWTAwMDogVGFibGUg c3RvcmFnZSBlbmdpbmUgJ0lubm9EQicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlv biAnS0VZX0JMT0NLX1NJWkUnCiBTSE9XIFdBUk5JTkdTOwogTGV2ZWwJQ29kZQlNZXNzYWdlCiBX YXJuaW5nCTE0NzgJSW5ub0RCOiBLRVlfQkxPQ0tfU0laRSByZXF1aXJlcyBpbm5vZGJfZmlsZV9w ZXJfdGFibGUuCi1FcnJvcgkxMDA1CUNhbid0IGNyZWF0ZSB0YWJsZSAnI3NxbC10ZW1wb3Jhcnkn IChlcnJubzogMTQ3OCkKK0Vycm9yCTE0NzgJVGFibGUgc3RvcmFnZSBlbmdpbmUgJ0lubm9EQicg ZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnS0VZX0JMT0NLX1NJWkUnCiBBTFRF UiBUQUJMRSB0MSBST1dfRk9STUFUPUNPTVBSRVNTRUQ7Ci1FUlJPUiBIWTAwMDogQ2FuJ3QgY3Jl YXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRVJST1IgSFkwMDA6IFRh YmxlIHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBv cHRpb24gJ1JPV19GT1JNQVQnCiBTSE9XIFdBUk5JTkdTOwogTGV2ZWwJQ29kZQlNZXNzYWdlCiBX YXJuaW5nCTE0NzgJSW5ub0RCOiBST1dfRk9STUFUPUNPTVBSRVNTRUQgcmVxdWlyZXMgaW5ub2Ri X2ZpbGVfcGVyX3RhYmxlLgotRXJyb3IJMTAwNQlDYW4ndCBjcmVhdGUgdGFibGUgJyNzcWwtdGVt cG9yYXJ5JyAoZXJybm86IDE0NzgpCitFcnJvcgkxNDc4CVRhYmxlIHN0b3JhZ2UgZW5naW5lICdJ bm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJ1JPV19GT1JNQVQnCiBB TFRFUiBUQUJMRSB0MSBST1dfRk9STUFUPURZTkFNSUM7Ci1FUlJPUiBIWTAwMDogQ2FuJ3QgY3Jl YXRlIHRhYmxlICcjc3FsLXRlbXBvcmFyeScgKGVycm5vOiAxNDc4KQorRVJST1IgSFkwMDA6IFRh YmxlIHN0b3JhZ2UgZW5naW5lICdJbm5vREInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBv cHRpb24gJ1JPV19GT1JNQVQnCiBTSE9XIFdBUk5JTkdTOwogTGV2ZWwJQ29kZQlNZXNzYWdlCiBX YXJuaW5nCTE0NzgJSW5ub0RCOiBST1dfRk9STUFUPURZTkFNSUMgcmVxdWlyZXMgaW5ub2RiX2Zp bGVfcGVyX3RhYmxlLgotRXJyb3IJMTAwNQlDYW4ndCBjcmVhdGUgdGFibGUgJyNzcWwtdGVtcG9y YXJ5JyAoZXJybm86IDE0NzgpCitFcnJvcgkxNDc4CVRhYmxlIHN0b3JhZ2UgZW5naW5lICdJbm5v REInIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJ1JPV19GT1JNQVQnCiBBTFRF UiBUQUJMRSB0MSBST1dfRk9STUFUPUNPTVBBQ1Q7CiBTSE9XIFdBUk5JTkdTOwogTGV2ZWwJQ29k ZQlNZXNzYWdlCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvdC9p bm5vZGItY3JlYXRlLW9wdGlvbnMudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIv dC9pbm5vZGItY3JlYXRlLW9wdGlvbnMudGVzdAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5j b20tMjAxMjA1MTQwOTMwNTgtNHZkNGdjMWlvc2gybjZiYQorKysgYi9teXNxbC10ZXN0L3N1aXRl L2lubm9kYi90L2lubm9kYi1jcmVhdGUtb3B0aW9ucy50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTIwNTE1MDcxOTMyLTVoMDFlZTZwZW10Nmt6cm4KQEAgLTk4LDcgKzk4LDcg QEAgQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1ERUZBVUxUIEtFWV9CTAogU0hPVyBXQVJOSU5H UzsKIFNFTEVDVCBUQUJMRV9OQU1FLFJPV19GT1JNQVQsQ1JFQVRFX09QVElPTlMgRlJPTSBpbmZv cm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIFRBQkxFX05BTUUgPSAndDEnOwogLS1yZXBsYWNl X3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCi0t LWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCistLWVycm9yIEVSX0lMTEVHQUxfSEFfQ1JFQVRF X09QVElPTgogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1GSVhFRCBLRVlfQkxPQ0tfU0laRT0w OwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRl bXBvcmFyeScvCiBTSE9XIFdBUk5JTkdTOwpAQCAtMTM3LDIyICsxMzcsMjIgQEAgU0VMRUNUIFRB QkxFX05BTUUsUk9XX0ZPUk1BVCxDUkVBVEVfT1BUSQogRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7 CiBDUkVBVEUgVEFCTEUgdDEgKCBpIElOVCApOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0 XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCi0tLWVycm9yIEVSX0NBTlRfQ1JF QVRFX1RBQkxFCistLWVycm9yIEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTgogQUxURVIgVEFC TEUgdDEgUk9XX0ZPUk1BVD1GSVhFRCBLRVlfQkxPQ0tfU0laRT0xOwogLS1yZXBsYWNlX3JlZ2V4 IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCiBTSE9XIFdB Uk5JTkdTOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycj c3FsLXRlbXBvcmFyeScvCi0tLWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCistLWVycm9yIEVS X0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTgogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1DT01Q QUNUIEtFWV9CTE9DS19TSVpFPTI7CiAtLXJlcGxhY2VfcmVnZXggLydbXiddKnRlc3RcLiNzcWwt WzAtOWEtZl9dKicvJyNzcWwtdGVtcG9yYXJ5Jy8KIFNIT1cgV0FSTklOR1M7CiAtLXJlcGxhY2Vf cmVnZXggLydbXiddKnRlc3RcLiNzcWwtWzAtOWEtZl9dKicvJyNzcWwtdGVtcG9yYXJ5Jy8KLS0t ZXJyb3IgRVJfQ0FOVF9DUkVBVEVfVEFCTEUKKy0tZXJyb3IgRVJfSUxMRUdBTF9IQV9DUkVBVEVf T1BUSU9OCiBBTFRFUiBUQUJMRSB0MSBST1dfRk9STUFUPURZTkFNSUMgS0VZX0JMT0NLX1NJWkU9 NDsKIC0tcmVwbGFjZV9yZWdleCAvJ1teJ10qdGVzdFwuI3NxbC1bMC05YS1mX10qJy8nI3NxbC10 ZW1wb3JhcnknLwogU0hPVyBXQVJOSU5HUzsKIC0tcmVwbGFjZV9yZWdleCAvJ1teJ10qdGVzdFwu I3NxbC1bMC05YS1mX10qJy8nI3NxbC10ZW1wb3JhcnknLwotLS1lcnJvciBFUl9DQU5UX0NSRUFU RV9UQUJMRQorLS1lcnJvciBFUl9JTExFR0FMX0hBX0NSRUFURV9PUFRJT04KIEFMVEVSIFRBQkxF IHQxIFJPV19GT1JNQVQ9UkVEVU5EQU5UIEtFWV9CTE9DS19TSVpFPTI7CiAtLXJlcGxhY2VfcmVn ZXggLydbXiddKnRlc3RcLiNzcWwtWzAtOWEtZl9dKicvJyNzcWwtdGVtcG9yYXJ5Jy8KIFNIT1cg V0FSTklOR1M7CkBAIC0xNjksNyArMTY5LDcgQEAgRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CiBD UkVBVEUgVEFCTEUgdDEgKCBpIElOVCApIFJPV19GT1JNQVQ9Q09NUEFDVDsKIFNFTEVDVCBUQUJM RV9OQU1FLFJPV19GT1JNQVQsQ1JFQVRFX09QVElPTlMgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEu dGFibGVzIFdIRVJFIFRBQkxFX05BTUUgPSAndDEnOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0 ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCi0tLWVycm9yIEVSX0NBTlRf Q1JFQVRFX1RBQkxFCistLWVycm9yIEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTgogQUxURVIg VEFCTEUgdDEgS0VZX0JMT0NLX1NJWkU9MjsKIC0tcmVwbGFjZV9yZWdleCAvJ1teJ10qdGVzdFwu I3NxbC1bMC05YS1mX10qJy8nI3NxbC10ZW1wb3JhcnknLwogU0hPVyBXQVJOSU5HUzsKQEAgLTE3 Nyw3ICsxNzcsNyBAQCBBTFRFUiBUQUJMRSB0MSBST1dfRk9STUFUPVJFRFVOREFOVDsKIFNIT1cg V0FSTklOR1M7CiBTRUxFQ1QgVEFCTEVfTkFNRSxST1dfRk9STUFULENSRUFURV9PUFRJT05TIEZS T00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyBXSEVSRSBUQUJMRV9OQU1FID0gJ3QxJzsKIC0t cmVwbGFjZV9yZWdleCAvJ1teJ10qdGVzdFwuI3NxbC1bMC05YS1mX10qJy8nI3NxbC10ZW1wb3Jh cnknLwotLS1lcnJvciBFUl9DQU5UX0NSRUFURV9UQUJMRQorLS1lcnJvciBFUl9JTExFR0FMX0hB X0NSRUFURV9PUFRJT04KIEFMVEVSIFRBQkxFIHQxIEtFWV9CTE9DS19TSVpFPTQ7CiAtLXJlcGxh Y2VfcmVnZXggLydbXiddKnRlc3RcLiNzcWwtWzAtOWEtZl9dKicvJyNzcWwtdGVtcG9yYXJ5Jy8K IFNIT1cgV0FSTklOR1M7CkBAIC0xODUsNyArMTg1LDcgQEAgQUxURVIgVEFCTEUgdDEgUk9XX0ZP Uk1BVD1EWU5BTUlDOwogU0hPVyBXQVJOSU5HUzsKIFNFTEVDVCBUQUJMRV9OQU1FLFJPV19GT1JN QVQsQ1JFQVRFX09QVElPTlMgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIFRB QkxFX05BTUUgPSAndDEnOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlh LWZfXSonLycjc3FsLXRlbXBvcmFyeScvCi0tLWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCist LWVycm9yIEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTgogQUxURVIgVEFCTEUgdDEgS0VZX0JM T0NLX1NJWkU9MjsKIC0tcmVwbGFjZV9yZWdleCAvJ1teJ10qdGVzdFwuI3NxbC1bMC05YS1mX10q Jy8nI3NxbC10ZW1wb3JhcnknLwogU0hPVyBXQVJOSU5HUzsKQEAgLTIwOSwxNyArMjA5LDE3IEBA IFNIT1cgQ1JFQVRFIFRBQkxFIHQxOwogQUxURVIgVEFCTEUgdDEgQUREIENPTFVNTiBmMSBJTlQ7 CiBTSE9XIENSRUFURSBUQUJMRSB0MTsKIC0tcmVwbGFjZV9yZWdleCAvJ1teJ10qdGVzdFwuI3Nx bC1bMC05YS1mX10qJy8nI3NxbC10ZW1wb3JhcnknLwotLS1lcnJvciBFUl9DQU5UX0NSRUFURV9U QUJMRQorLS1lcnJvciBFUl9JTExFR0FMX0hBX0NSRUFURV9PUFRJT04KIEFMVEVSIFRBQkxFIHQx IFJPV19GT1JNQVQ9Q09NUEFDVDsKIC0tcmVwbGFjZV9yZWdleCAvJ1teJ10qdGVzdFwuI3NxbC1b MC05YS1mX10qJy8nI3NxbC10ZW1wb3JhcnknLwogU0hPVyBXQVJOSU5HUzsKIC0tcmVwbGFjZV9y ZWdleCAvJ1teJ10qdGVzdFwuI3NxbC1bMC05YS1mX10qJy8nI3NxbC10ZW1wb3JhcnknLwotLS1l cnJvciBFUl9DQU5UX0NSRUFURV9UQUJMRQorLS1lcnJvciBFUl9JTExFR0FMX0hBX0NSRUFURV9P UFRJT04KIEFMVEVSIFRBQkxFIHQxIFJPV19GT1JNQVQ9UkVEVU5EQU5UOwogLS1yZXBsYWNlX3Jl Z2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCiBTSE9X IFdBUk5JTkdTOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSon Lycjc3FsLXRlbXBvcmFyeScvCi0tLWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCistLWVycm9y IEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTgogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1E WU5BTUlDOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycj c3FsLXRlbXBvcmFyeScvCiBTSE9XIFdBUk5JTkdTOwpAQCAtMjY0LDE3ICsyNjQsMTcgQEAgRFJP UCBUQUJMRSBJRiBFWElTVFMgdDE7CiBDUkVBVEUgVEFCTEUgdDEgKCBpIElOVCApIFJPV19GT1JN QVQ9REVGQVVMVDsKIFNIT1cgV0FSTklOR1M7CiAtLXJlcGxhY2VfcmVnZXggLydbXiddKnRlc3Rc LiNzcWwtWzAtOWEtZl9dKicvJyNzcWwtdGVtcG9yYXJ5Jy8KLS0tZXJyb3IgRVJfQ0FOVF9DUkVB VEVfVEFCTEUKKy0tZXJyb3IgRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OCiBBTFRFUiBUQUJM RSB0MSBLRVlfQkxPQ0tfU0laRT0yOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3Fs LVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCiBTSE9XIFdBUk5JTkdTOwogLS1yZXBsYWNl X3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCi0t LWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCistLWVycm9yIEVSX0lMTEVHQUxfSEFfQ1JFQVRF X09QVElPTgogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1DT01QUkVTU0VEOwogLS1yZXBsYWNl X3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCiBT SE9XIFdBUk5JTkdTOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZf XSonLycjc3FsLXRlbXBvcmFyeScvCi0tLWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCistLWVy cm9yIEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTgogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1B VD1EWU5BTUlDOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSon Lycjc3FsLXRlbXBvcmFyeScvCiBTSE9XIFdBUk5JTkdTOwpAQCAtMzE5LDE3ICszMTksMTcgQEAg RFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CiBDUkVBVEUgVEFCTEUgdDEgKCBpIElOVCApIFJPV19G T1JNQVQ9REVGQVVMVDsKIFNIT1cgV0FSTklOR1M7CiAtLXJlcGxhY2VfcmVnZXggLydbXiddKnRl c3RcLiNzcWwtWzAtOWEtZl9dKicvJyNzcWwtdGVtcG9yYXJ5Jy8KLS0tZXJyb3IgRVJfQ0FOVF9D UkVBVEVfVEFCTEUKKy0tZXJyb3IgRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OCiBBTFRFUiBU QUJMRSB0MSBLRVlfQkxPQ0tfU0laRT0xOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4j c3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScvCiBTSE9XIFdBUk5JTkdTOwogLS1yZXBs YWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScv Ci0tLWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCistLWVycm9yIEVSX0lMTEVHQUxfSEFfQ1JF QVRFX09QVElPTgogQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1DT01QUkVTU0VEOwogLS1yZXBs YWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZfXSonLycjc3FsLXRlbXBvcmFyeScv CiBTSE9XIFdBUk5JTkdTOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlh LWZfXSonLycjc3FsLXRlbXBvcmFyeScvCi0tLWVycm9yIEVSX0NBTlRfQ1JFQVRFX1RBQkxFCist LWVycm9yIEVSX0lMTEVHQUxfSEFfQ1JFQVRFX09QVElPTgogQUxURVIgVEFCTEUgdDEgUk9XX0ZP Uk1BVD1EWU5BTUlDOwogLS1yZXBsYWNlX3JlZ2V4IC8nW14nXSp0ZXN0XC4jc3FsLVswLTlhLWZf XSonLycjc3FsLXRlbXBvcmFyeScvCiBTSE9XIFdBUk5JTkdTOwoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29t LTIwMTIwNTE0MDkzMDU4LTR2ZDRnYzFpb3NoMm42YmEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9o YW5kbGVyL2hhX2lubm9kYi5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUx NTA3MTkzMi01aDAxZWU2cGVtdDZrenJuCkBAIC04NTE5LDcgKzg1MTksNyBAQCBnZXRfcm93X2Zv cm1hdF9uYW1lKAogCQkJIklubm9EQjogUk9XX0ZPUk1BVD0lcyByZXF1aXJlcyIJXAogCQkJIiBp bm5vZGJfZmlsZV9wZXJfdGFibGUuIiwJCVwKIAkJCWdldF9yb3dfZm9ybWF0X25hbWUocm93X2Zv cm1hdCkpOwlcCi0JCXJldCA9IEZBTFNFOwkJCQkJXAorCQlyZXQgPSAiUk9XX0ZPUk1BVCI7CQkJ CQlcCiAJfQogCiAvKiogSWYgZmlsZS1mb3JtYXQgaXMgQW50ZWxvcGUsIGlzc3VlIHdhcm5pbmcg YW5kIHNldCByZXQgZmFsc2UgKi8KQEAgLTg1MzEsNyArODUzMSw3IEBAIGdldF9yb3dfZm9ybWF0 X25hbWUoCiAJCQkiSW5ub0RCOiBST1dfRk9STUFUPSVzIHJlcXVpcmVzIglcCiAJCQkiIGlubm9k Yl9maWxlX2Zvcm1hdCA+IEFudGVsb3BlLiIsCVwKIAkJCWdldF9yb3dfZm9ybWF0X25hbWUocm93 X2Zvcm1hdCkpOwlcCi0JCXJldCA9IEZBTFNFOwkJCQkJXAorCQlyZXQgPSAiUk9XX0ZPUk1BVCI7 CQkJCVwKIAl9CiAKIApAQCAtODU0MCwxMSArODU0MCwxMSBAQCBWYWxpZGF0ZXMgdGhlIGNyZWF0 ZSBvcHRpb25zLiBXZSBtYXkgYnVpCiBpbiBmdXR1cmUuIEZvciBub3csIGl0IGNoZWNrcyB0d28g c3BlY2lmaWVyczoKIEtFWV9CTE9DS19TSVpFIGFuZCBST1dfRk9STUFUCiBJZiBpbm5vZGJfc3Ry aWN0X21vZGUgaXMgbm90IHNldCB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcAotQHJldHVy bglUUlVFIGlmIHZhbGlkLiAqLwotc3RhdGljCi1pYm9vbAotY3JlYXRlX29wdGlvbnNfYXJlX3Zh bGlkKAotLyo9PT09PT09PT09PT09PT09PT09PT0qLworQHJldHVybglOVUxMIGlmIHZhbGlkLCBz dHJpbmcgaWYgbm90LiAqLworVU5JVl9JTlRFUk4KK2NvbnN0IGNoYXIqCitjcmVhdGVfb3B0aW9u c19hcmVfaW52YWxpZCgKKy8qPT09PT09PT09PT09PT09PT09PT09PT0qLwogCVRIRCoJCXRoZCwJ CS8qITwgaW46IGNvbm5lY3Rpb24gdGhyZWFkLiAqLwogCVRBQkxFKgkJZm9ybSwJCS8qITwgaW46 IGluZm9ybWF0aW9uIG9uIHRhYmxlCiAJCQkJCWNvbHVtbnMgYW5kIGluZGV4ZXMgKi8KQEAgLTg1 NTIsMTQgKzg1NTIsMTQgQEAgY3JlYXRlX29wdGlvbnNfYXJlX3ZhbGlkKAogCWJvb2wJCXVzZV90 YWJsZXNwYWNlKQkvKiE8IGluOiBzcnZfZmlsZV9wZXJfdGFibGUgKi8KIHsKIAlpYm9vbAlrYnNf c3BlY2lmaWVkCT0gRkFMU0U7Ci0JaWJvb2wJcmV0CQk9IFRSVUU7CisJY29uc3QgY2hhcioJcmV0 CT0gTlVMTDsKIAllbnVtIHJvd190eXBlCXJvd19mb3JtYXQJPSBmb3JtLT5zLT5yb3dfdHlwZTsK IAogCXV0X2FkKHRoZCAhPSBOVUxMKTsKIAogCS8qIElmIGlubm9kYl9zdHJpY3RfbW9kZSBpcyBu b3Qgc2V0IGRvbid0IGRvIGFueSB2YWxpZGF0aW9uLiAqLwogCWlmICghKFRIRFZBUih0aGQsIHN0 cmljdF9tb2RlKSkpIHsKLQkJcmV0dXJuKFRSVUUpOworCQlyZXR1cm4oTlVMTCk7CiAJfQogCiAJ dXRfYWQoZm9ybSAhPSBOVUxMKTsKQEAgLTg1ODIsNyArODU4Miw3IEBAIGNyZWF0ZV9vcHRpb25z X2FyZV92YWxpZCgKIAkJCQkJRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OLAogCQkJCQkiSW5u b0RCOiBLRVlfQkxPQ0tfU0laRSByZXF1aXJlcyIKIAkJCQkJIiBpbm5vZGJfZmlsZV9wZXJfdGFi bGUuIik7Ci0JCQkJcmV0ID0gRkFMU0U7CisJCQkJcmV0ID0gIktFWV9CTE9DS19TSVpFIjsKIAkJ CX0KIAkJCWlmIChzcnZfZmlsZV9mb3JtYXQgPCBVTklWX0ZPUk1BVF9CKSB7CiAJCQkJcHVzaF93 YXJuaW5nKApAQCAtODU5MCw3ICs4NTkwLDcgQEAgY3JlYXRlX29wdGlvbnNfYXJlX3ZhbGlkKAog CQkJCQlFUl9JTExFR0FMX0hBX0NSRUFURV9PUFRJT04sCiAJCQkJCSJJbm5vREI6IEtFWV9CTE9D S19TSVpFIHJlcXVpcmVzIgogCQkJCQkiIGlubm9kYl9maWxlX2Zvcm1hdCA+IEFudGVsb3BlLiIp OwotCQkJCXJldCA9IEZBTFNFOworCQkJCXJldCA9ICJLRVlfQkxPQ0tfU0laRSI7CiAJCQl9CiAK IAkJCS8qIFRoZSBtYXhpbXVtIEtFWV9CTE9DS19TSVpFIChLQlMpIGlzIDE2LiBCdXQgaWYKQEAg LTg2MDcsNyArODYwNyw3IEBAIGNyZWF0ZV9vcHRpb25zX2FyZV92YWxpZCgKIAkJCQkJIiBjYW5u b3QgYmUgbGFyZ2VyIHRoYW4gJWxkLiIsCiAJCQkJCWNyZWF0ZV9pbmZvLT5rZXlfYmxvY2tfc2l6 ZSwKIAkJCQkJa2JzX21heCk7Ci0JCQkJcmV0ID0gRkFMU0U7CisJCQkJcmV0ID0gIktFWV9CTE9D S19TSVpFIjsKIAkJCX0KIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtODYxNyw3ICs4NjE3LDcg QEAgY3JlYXRlX29wdGlvbnNfYXJlX3ZhbGlkKAogCQkJCSJJbm5vREI6IGludmFsaWQgS0VZX0JM T0NLX1NJWkUgPSAlbHUuIgogCQkJCSIgVmFsaWQgdmFsdWVzIGFyZSBbMSwgMiwgNCwgOCwgMTZd IiwKIAkJCQljcmVhdGVfaW5mby0+a2V5X2Jsb2NrX3NpemUpOwotCQkJcmV0ID0gRkFMU0U7CisJ CQlyZXQgPSAiS0VZX0JMT0NLX1NJWkUiOwogCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC04NjQyLDcg Kzg2NDIsNyBAQCBjcmVhdGVfb3B0aW9uc19hcmVfdmFsaWQoCiAJCQkJIklubm9EQjogY2Fubm90 IHNwZWNpZnkgUk9XX0ZPUk1BVCA9ICVzIgogCQkJCSIgd2l0aCBLRVlfQkxPQ0tfU0laRS4iLAog CQkJCWdldF9yb3dfZm9ybWF0X25hbWUocm93X2Zvcm1hdCkpOwotCQkJcmV0ID0gRkFMU0U7CisJ CQlyZXQgPSAiS0VZX0JMT0NLX1NJWkUiOwogCQl9CiAJCWJyZWFrOwogCWNhc2UgUk9XX1RZUEVf REVGQVVMVDoKQEAgLTg2NTQsNyArODY1NCw3IEBAIGNyZWF0ZV9vcHRpb25zX2FyZV92YWxpZCgK IAkJCXRoZCwgU3FsX2NvbmRpdGlvbjo6V0FSTl9MRVZFTF9XQVJOLAogCQkJRVJfSUxMRUdBTF9I QV9DUkVBVEVfT1BUSU9OLAkJXAogCQkJIklubm9EQjogaW52YWxpZCBST1dfRk9STUFUIHNwZWNp Zmllci4iKTsKLQkJcmV0ID0gRkFMU0U7CisJCXJldCA9ICJST1dfVFlQRSI7CiAJCWJyZWFrOwog CX0KIApAQCAtODk5MSw3ICs4OTkxLDcgQEAgaGFfaW5ub2Jhc2U6OmNyZWF0ZSgKIAkvKiBDcmVh dGUgdGhlIHRhYmxlIGRlZmluaXRpb24gaW4gSW5ub0RCICovCiAKIAkvKiBWYWxpZGF0ZSBjcmVh dGUgb3B0aW9ucyBpZiBpbm5vZGJfc3RyaWN0X21vZGUgaXMgc2V0LiAqLwotCWlmICghY3JlYXRl X29wdGlvbnNfYXJlX3ZhbGlkKAorCWlmIChjcmVhdGVfb3B0aW9uc19hcmVfaW52YWxpZCgKIAkJ CXRoZCwgZm9ybSwgY3JlYXRlX2luZm8sIHVzZV90YWJsZXNwYWNlKSkgewogCQlEQlVHX1JFVFVS TihFUl9JTExFR0FMX0hBX0NSRUFURV9PUFRJT04pOwogCX0KCj09PSBtb2RpZmllZCBmaWxlICdz dG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jh c2UvaGFuZGxlci9oYV9pbm5vZGIuaAlyZXZpZDpqb3JnZW4ubG9sYW5kQG9yYWNsZS5jb20tMjAx MjA1MTQwOTMwNTgtNHZkNGdjMWlvc2gybjZiYQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRs ZXIvaGFfaW5ub2RiLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUwNzE5 MzItNWgwMWVlNnBlbXQ2a3pybgpAQCAtNDkyLDYgKzQ5MiwyMyBAQCBpbm5vYmFzZV90YWJsZV9m bGFncygKIAl1bGludCoJCQlmbGFnczIpCQkvKiE8IG91dDogRElDVF9URjIgZmxhZ3MgKi8KIAlf X2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKTsKIAorLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ly8qKgorVmFsaWRhdGVzIHRoZSBjcmVhdGUgb3B0aW9ucy4gV2UgbWF5IGJ1aWxkIG9uIHRoaXMg ZnVuY3Rpb24KK2luIGZ1dHVyZS4gRm9yIG5vdywgaXQgY2hlY2tzIHR3byBzcGVjaWZpZXJzOgor S0VZX0JMT0NLX1NJWkUgYW5kIFJPV19GT1JNQVQKK0lmIGlubm9kYl9zdHJpY3RfbW9kZSBpcyBu b3Qgc2V0IHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wCitAcmV0dXJuCU5VTEwgaWYgdmFs aWQsIHN0cmluZyBpZiBub3QuICovCitVTklWX0lOVEVSTgorY29uc3QgY2hhcioKK2NyZWF0ZV9v cHRpb25zX2FyZV9pbnZhbGlkKAorLyo9PT09PT09PT09PT09PT09PT09PT09PSovCisJVEhEKgkJ dGhkLAkJLyohPCBpbjogY29ubmVjdGlvbiB0aHJlYWQuICovCisJVEFCTEUqCQlmb3JtLAkJLyoh PCBpbjogaW5mb3JtYXRpb24gb24gdGFibGUKKwkJCQkJY29sdW1ucyBhbmQgaW5kZXhlcyAqLwor CUhBX0NSRUFURV9JTkZPKgljcmVhdGVfaW5mbywJLyohPCBpbjogY3JlYXRlIGluZm8uICovCisJ Ym9vbAkJdXNlX3RhYmxlc3BhY2UpCS8qITwgaW46IHNydl9maWxlX3Blcl90YWJsZSAqLworCV9f YXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgogUmV0cmlldmUgdGhlIEZUUyBSZWxldmFuY2UgUmFua2luZyByZXN1bHQgZm9yIGRv YyB3aXRoIGRvY19pZAogb2YgcHJlYnVpbHQtPmZ0c19kb2NfaWQKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYycKLS0tIGEvc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6am9yZ2VuLmxvbGFuZEBv cmFjbGUuY29tLTIwMTIwNTE0MDkzMDU4LTR2ZDRnYzFpb3NoMm42YmEKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMjA1MTUwNzE5MzItNWgwMWVlNnBlbXQ2a3pybgpAQCAtNDQsMTYgKzQ0LDM1IEBA IFNtYXJ0IEFMVEVSIFRBQkxFCiAjaW5jbHVkZSAiaGFfaW5ub2RiLmgiCiAKIC8qKiBPcGVyYXRp b25zIGZvciBjcmVhdGluZyBhbiBpbmRleCBpbiBwbGFjZSAqLwotc3RhdGljIGNvbnN0IEFsdGVy X2lucGxhY2VfaW5mbzo6SEFfQUxURVJfRkxBR1MgSU5OT0JBU0VfSU5QTEFDRV9DUkVBVEUKK3N0 YXRpYyBjb25zdCBBbHRlcl9pbnBsYWNlX2luZm86OkhBX0FMVEVSX0ZMQUdTIElOTk9CQVNFX09O TElORV9DUkVBVEUKIAk9IEFsdGVyX2lucGxhY2VfaW5mbzo6QUREX0lOREVYCi0JfCBBbHRlcl9p bnBsYWNlX2luZm86OkFERF9VTklRVUVfSU5ERVgKLQl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QURE X1BLX0lOREVYOy8vIG5vdCBvbmxpbmUKKwl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QUREX1VOSVFV RV9JTkRFWDsKKworLyoqIE9wZXJhdGlvbnMgZm9yIHJlYnVpbGRpbmcgYSB0YWJsZSBpbiBwbGFj ZSAqLworc3RhdGljIGNvbnN0IEFsdGVyX2lucGxhY2VfaW5mbzo6SEFfQUxURVJfRkxBR1MgSU5O T0JBU0VfSU5QTEFDRV9SRUJVSUxECisJPSBBbHRlcl9pbnBsYWNlX2luZm86OkFERF9QS19JTkRF WAorCXwgQWx0ZXJfaW5wbGFjZV9pbmZvOjpDSEFOR0VfQ1JFQVRFX09QVElPTgorCS8qCisJfCBB bHRlcl9pbnBsYWNlX2luZm86OkFMVEVSX0NPTFVNTl9OVUxMQUJMRQorCXwgQWx0ZXJfaW5wbGFj ZV9pbmZvOjpBTFRFUl9DT0xVTU5fTk9UX05VTExBQkxFCisJfCBBbHRlcl9pbnBsYWNlX2luZm86 OkFMVEVSX0NPTFVNTl9UWVBFCisJfCBBbHRlcl9pbnBsYWNlX2luZm86OkFMVEVSX0NPTFVNTl9F UVVBTF9QQUNLX0xFTkdUSCwKKwl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxURVJfQ09MVU1OX09S REVSCisJfCBBbHRlcl9pbnBsYWNlX2luZm86OkFERF9DT0xVTU4KKwl8IEFsdGVyX2lucGxhY2Vf aW5mbzo6RFJPUF9DT0xVTU4KKwkqLworCTsKKworLyoqIE9wZXJhdGlvbnMgZm9yIGNyZWF0aW5n IGluZGV4ZXMgb3IgcmVidWlsZGluZyBhIHRhYmxlICovCitzdGF0aWMgY29uc3QgQWx0ZXJfaW5w bGFjZV9pbmZvOjpIQV9BTFRFUl9GTEFHUyBJTk5PQkFTRV9JTlBMQUNFX0NSRUFURQorCT0gSU5O T0JBU0VfT05MSU5FX0NSRUFURSB8IElOTk9CQVNFX0lOUExBQ0VfUkVCVUlMRDsKIAogLyoqIE9w ZXJhdGlvbnMgZm9yIGFsdGVyaW5nIGEgdGFibGUgdGhhdCBJbm5vREIgZG9lcyBub3QgY2FyZSBh Ym91dCAqLwogc3RhdGljIGNvbnN0IEFsdGVyX2lucGxhY2VfaW5mbzo6SEFfQUxURVJfRkxBR1Mg SU5OT0JBU0VfSU5QTEFDRV9JR05PUkUKIAk9IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxURVJfQ09M VU1OX0RFRkFVTFQKLQl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxURVJfUkVOQU1FCi0JfCBBbHRl cl9pbnBsYWNlX2luZm86OkNIQU5HRV9DUkVBVEVfT1BUSU9OOworCXwgQWx0ZXJfaW5wbGFjZV9p bmZvOjpBTFRFUl9DT0xVTU5fQ09MVU1OX0ZPUk1BVAorCXwgQWx0ZXJfaW5wbGFjZV9pbmZvOjpB TFRFUl9DT0xVTU5fU1RPUkFHRV9UWVBFCisJfCBBbHRlcl9pbnBsYWNlX2luZm86OkFMVEVSX1JF TkFNRTsKIAogLyoqIE9wZXJhdGlvbnMgdGhhdCBJbm5vREIgY2FuIHBlcmZvcm0gb25saW5lICov CiBzdGF0aWMgY29uc3QgQWx0ZXJfaW5wbGFjZV9pbmZvOjpIQV9BTFRFUl9GTEFHUyBJTk5PQkFT RV9PTkxJTkVfT1BFUkFUSU9OUwpAQCAtMTM1LDYgKzE1NCwyOSBAQCBteV9lcnJvcl9pbm5vZGIo CiAJfQogfQogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8vKioKK0RldGVybWluZSBpZiBBTFRFUiBUQUJMRSBuZWVk cyB0byByZWJ1aWxkIHRoZSB0YWJsZS4KK0BwYXJhbSBoYV9hbHRlcl9pbmZvCQl0aGUgRERMIG9w ZXJhdGlvbgorQHJldHVybiB3aGV0aGVyIGl0IGlzIG5lY2Vzc2FyeSB0byByZWJ1aWxkIHRoZSB0 YWJsZSAqLworc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3Vs dCkpCitib29sCitpbm5vYmFzZV9uZWVkX3JlYnVpbGQoCisvKj09PT09PT09PT09PT09PT09PSov CisJY29uc3QgQWx0ZXJfaW5wbGFjZV9pbmZvKgloYV9hbHRlcl9pbmZvKQoreworCWlmIChoYV9h bHRlcl9pbmZvLT5oYW5kbGVyX2ZsYWdzCisJICAgID09IEFsdGVyX2lucGxhY2VfaW5mbzo6Q0hB TkdFX0NSRUFURV9PUFRJT04KKwkgICAgJiYgIShoYV9hbHRlcl9pbmZvLT5jcmVhdGVfaW5mby0+ dXNlZF9maWVsZHMKKwkJICYgKEhBX0NSRUFURV9VU0VEX1JPV19GT1JNQVQKKwkJICAgIHwgSEFf Q1JFQVRFX1VTRURfS0VZX0JMT0NLX1NJWkUpKSkgeworCQkvKiBBbnkgb3RoZXIgQ0hBTkdFX0NS RUFURV9PUFRJT04gdGhhbiBjaGFuZ2luZworCQlST1dfRk9STUFUIG9yIEtFWV9CTE9DS19TSVpF IGlzIGlnbm9yZWQuICovCisJCXJldHVybihmYWxzZSk7CisJfQorCisJcmV0dXJuKCEhKGhhX2Fs dGVyX2luZm8tPmhhbmRsZXJfZmxhZ3MgJiBJTk5PQkFTRV9JTlBMQUNFX1JFQlVJTEQpKTsKK30K KwogLyoqIENoZWNrIGlmIElubm9EQiBzdXBwb3J0cyBhIHBhcnRpY3VsYXIgYWx0ZXIgdGFibGUg aW4tcGxhY2UKIEBwYXJhbSBhbHRlcmVkX3RhYmxlCVRBQkxFIG9iamVjdCBmb3IgbmV3IHZlcnNp b24gb2YgdGFibGUuCiBAcGFyYW0gaGFfYWx0ZXJfaW5mbwlTdHJ1Y3R1cmUgZGVzY3JpYmluZyBj aGFuZ2VzIHRvIGJlIGRvbmUKQEAgLTE2MSwzMCArMjAzLDExIEBAIGhhX2lubm9iYXNlOjpjaGVj a19pZl9zdXBwb3J0ZWRfaW5wbGFjZV8KIAkJREJVR19SRVRVUk4oSEFfQUxURVJfSU5QTEFDRV9O T1RfU1VQUE9SVEVEKTsKIAl9CiAKLQlIQV9DUkVBVEVfSU5GTyogY3JlYXRlX2luZm8gPSBoYV9h bHRlcl9pbmZvLT5jcmVhdGVfaW5mbzsKLQogCWlmIChoYV9hbHRlcl9pbmZvLT5oYW5kbGVyX2Zs YWdzCi0JICAgICYgfihJTk5PQkFTRV9PTkxJTkVfT1BFUkFUSU9OUwotCQl8IEFsdGVyX2lucGxh Y2VfaW5mbzo6QUREX1BLX0lOREVYKSkgeworCSAgICAmIH4oSU5OT0JBU0VfT05MSU5FX09QRVJB VElPTlMgfCBJTk5PQkFTRV9JTlBMQUNFX1JFQlVJTEQpKSB7CiAJCURCVUdfUkVUVVJOKEhBX0FM VEVSX0lOUExBQ0VfTk9UX1NVUFBPUlRFRCk7CiAJfQogCi0JaWYgKGhhX2FsdGVyX2luZm8tPmhh bmRsZXJfZmxhZ3MKLQkgICAgJiBBbHRlcl9pbnBsYWNlX2luZm86OkNIQU5HRV9DUkVBVEVfT1BU SU9OKSB7Ci0JCS8qIENoYW5naW5nIFJPV19GT1JNQVQgb3IgS0VZX0JMT0NLX1NJWkUgc2hvdWxk Ci0JCXJlYnVpbGQgdGhlIHRhYmxlLiBUT0RPOiBjb3B5IGluZGV4LWJ5LWluZGV4IGluc3RlYWQK LQkJb2Ygcm93LWJ5LXJvdy4gKi8KLQotCQlpZiAoY3JlYXRlX2luZm8tPnVzZWRfZmllbGRzICYg SEFfQ1JFQVRFX1VTRURfUk9XX0ZPUk1BVAotCQkgICAgJiYgY3JlYXRlX2luZm8tPnJvd190eXBl ICE9IGdldF9yb3dfdHlwZSgpKSB7Ci0JCQlEQlVHX1JFVFVSTihIQV9BTFRFUl9JTlBMQUNFX05P VF9TVVBQT1JURUQpOwotCQl9Ci0KLQkJaWYgKGNyZWF0ZV9pbmZvLT51c2VkX2ZpZWxkcyAmIEhB X0NSRUFURV9VU0VEX0tFWV9CTE9DS19TSVpFKSB7Ci0JCQlEQlVHX1JFVFVSTihIQV9BTFRFUl9J TlBMQUNFX05PVF9TVVBQT1JURUQpOwotCQl9Ci0JfQotCiAJaWYgKCEoaGFfYWx0ZXJfaW5mby0+ aGFuZGxlcl9mbGFncyAmIH5JTk5PQkFTRV9JTlBMQUNFX0lHTk9SRSkpIHsKIAkJREJVR19SRVRV Uk4oSEFfQUxURVJfSU5QTEFDRV9OT19MT0NLKTsKIAl9CkBAIC0yNTQsMTQgKzI3Nyw5IEBAIGhh X2lubm9iYXNlOjpjaGVja19pZl9zdXBwb3J0ZWRfaW5wbGFjZV8KIAogCXByZWJ1aWx0LT50cngt PndpbGxfbG9jaysrOwogCi0JLyogVE9ETzogUmVqZWN0IGlmIGNyZWF0aW5nIGEgZnVsbHRleHQg aW5kZXggYW5kIHRoZXJlIGlzIGFuCi0JaW5jb21wYXRpYmxlIEZUU19ET0NfSUQgb3IgRlRTX0RP Q19JRF9JTkRFWCwgZWl0aGVyIGluIHRoZSB0YWJsZQotCW9yIGluIHRoZSBoYV9hbHRlcl9pbmZv LiBXZSBjYW4gYW5kIHNob3VsZCByZWplY3QgdGhpcyBiZWZvcmUKLQlsb2NraW5nIHRoZSBkYXRh IGRpY3Rpb25hcnkuICovCi0KLQkvKiBDcmVhdGluZyB0aGUgcHJpbWFyeSBrZXkgcmVxdWlyZXMg YW4gZXhjbHVzaXZlIGxvY2sgb24gdGhlCisJLyogUmVidWlsZGluZyB0aGUgY2x1c3RlcmVkIGlu ZGV4IHJlcXVpcmVzIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZQogCXRhYmxlIGR1cmluZyB0aGUg d2hvbGUgY29weWluZyBvcGVyYXRpb24uICovCi0JaWYgKGhhX2FsdGVyX2luZm8tPmhhbmRsZXJf ZmxhZ3MgJiBBbHRlcl9pbnBsYWNlX2luZm86OkFERF9QS19JTkRFWCkgeworCWlmIChpbm5vYmFz ZV9uZWVkX3JlYnVpbGQoaGFfYWx0ZXJfaW5mbykpIHsKIAkJREJVR19SRVRVUk4oSEFfQUxURVJf SU5QTEFDRV9FWENMVVNJVkVfTE9DSyk7CiAJfQogCkBAIC05MzQsNyArOTUyLDcgQEAgaW5ub2Jh c2VfY3JlYXRlX2tleV9kZWZzKAogCQkJZGVmaW5pdGlvbnMgYXJlIGFsbG9jYXRlZCAqLwogCWNv bnN0IEFsdGVyX2lucGxhY2VfaW5mbyoJaGFfYWx0ZXJfaW5mbywKIAkJCS8qITwgaW46IGFsdGVy IG9wZXJhdGlvbiAqLwotCWNvbnN0IFRBQkxFKgkJYWx0ZXJlZF90YWJsZSwKKwljb25zdCBUQUJM RSoJCQlhbHRlcmVkX3RhYmxlLAogCQkJLyohPCBpbjogTXlTUUwgdGFibGUgdGhhdCBpcyBiZWlu ZyBhbHRlcmVkICovCiAJdWxpbnQmCQkJCW5fYWRkLAogCQkJLyohPCBpbi9vdXQ6IG51bWJlciBv ZiBpbmRleGVzIHRvIGJlIGNyZWF0ZWQgKi8KQEAgLTk3MCwyMCArOTg4LDIxIEBAIGlubm9iYXNl X2NyZWF0ZV9rZXlfZGVmcygKIAkvKiBJZiB0aGVyZSBpcyBhIHByaW1hcnkga2V5LCBpdCBpcyBh bHdheXMgdGhlIGZpcnN0IGluZGV4CiAJZGVmaW5lZCBmb3IgdGhlIGlubm9kYl90YWJsZS4gKi8K IAotCW5ld19wcmltYXJ5ID0gIW15X3N0cmNhc2VjbXAoc3lzdGVtX2NoYXJzZXRfaW5mbywKLQkJ CQkgICAgIGtleV9pbmZvWyphZGRdLm5hbWUsICJQUklNQVJZIik7CisJbmV3X3ByaW1hcnkgPSBu X2FkZCA+IDAKKwkJJiYgIW15X3N0cmNhc2VjbXAoc3lzdGVtX2NoYXJzZXRfaW5mbywKKwkJCQkg IGtleV9pbmZvWyphZGRdLm5hbWUsICJQUklNQVJZIik7CiAKIAkvKiBJZiB0aGVyZSBpcyBhIFVO SVFVRSBJTkRFWCBjb25zaXN0aW5nIGVudGlyZWx5IG9mIE5PVCBOVUxMCiAJY29sdW1ucyBhbmQg aWYgdGhlIGluZGV4IGRvZXMgbm90IGNvbnRhaW4gY29sdW1uIHByZWZpeChlcykKIAkob25seSBw cmVmaXgvcGFydCBvZiB0aGUgY29sdW1uIGlzIGluZGV4ZWQpLCBNeVNRTCB3aWxsIHRyZWF0IHRo ZQogCWluZGV4IGFzIGEgUFJJTUFSWSBLRVkgdW5sZXNzIHRoZSB0YWJsZSBhbHJlYWR5IGhhcyBv bmUuICovCiAKLQlpZiAoIW5ld19wcmltYXJ5ICYmIGdvdF9kZWZhdWx0X2NsdXN0CisJaWYgKG5f YWRkID4gMCAmJiAhbmV3X3ByaW1hcnkgJiYgZ290X2RlZmF1bHRfY2x1c3QKIAkgICAgJiYgKGtl eV9pbmZvWyphZGRdLmZsYWdzICYgSEFfTk9TQU1FKQogCSAgICAmJiAhKGtleV9pbmZvWyphZGRd LmZsYWdzICYgSEFfS0VZX0hBU19QQVJUX0tFWV9TRUcpKSB7CiAJCXVpbnQJa2V5X3BhcnQgPSBr ZXlfaW5mb1sqYWRkXS5rZXlfcGFydHM7CiAKLQkJbmV3X3ByaW1hcnkgPSBUUlVFOworCQluZXdf cHJpbWFyeSA9IHRydWU7CiAKIAkJd2hpbGUgKGtleV9wYXJ0LS0pIHsKIAkJCWNvbnN0IHVpbnQJ bWF5YmVfbnVsbApAQCAtOTk0LDM4ICsxMDEzLDMzIEBAIGlubm9iYXNlX2NyZWF0ZV9rZXlfZGVm cygKIAkJCQkgICAgZmllbGQtPm51bGxfcHRyKTsKIAogCQkJaWYgKG1heWJlX251bGwpIHsKLQkJ CQluZXdfcHJpbWFyeSA9IEZBTFNFOworCQkJCW5ld19wcmltYXJ5ID0gZmFsc2U7CiAJCQkJYnJl YWs7CiAJCQl9CiAJCX0KIAl9CiAKLQlpZiAobmV3X3ByaW1hcnkgfHwgYWRkX2Z0c19kb2NfaWQp IHsKKwlpZiAobmV3X3ByaW1hcnkgfHwgYWRkX2Z0c19kb2NfaWQKKwkgICAgfHwgaW5ub2Jhc2Vf bmVlZF9yZWJ1aWxkKGhhX2FsdGVyX2luZm8pKSB7CiAJCXVsaW50CXByaW1hcnlfa2V5X251bWJl cjsKIAogCQlpZiAobmV3X3ByaW1hcnkpIHsKKwkJCURCVUdfQVNTRVJUKG5fYWRkID4gMCk7CiAJ CQlwcmltYXJ5X2tleV9udW1iZXIgPSAqYWRkOwotCQl9IGVsc2UgaWYgKGFkZF9mdHNfZG9jX2lk KSB7Ci0JCQkvKiBJZiBESUNUX1RGMl9GVFNfQUREX0RPQ19JRCBpcyBzZXQsIHdlIHdpbGwgbmVl ZCB0bwotCQkJcmVidWlsZCB0aGUgdGFibGUgdG8gYWRkIHRoZSB1bmlxdWUgRG9jIElEIGNvbHVt biBmb3IKLQkJCUZUUyBpbmRleC4gQW5kIHRodXMgdGhlIGNsdXN0ZXJlZCBpbmRleCB3b3VsZCBy ZXF1aXJlZAotCQkJdG8gYmUgcmVidWlsdC4gKi8KLQotCQkJaWYgKGdvdF9kZWZhdWx0X2NsdXN0 KSB7Ci0JCQkJLyogQ3JlYXRlIHRoZSBHRU5fQ0xVU1RfSU5ERVggKi8KLQkJCQltZXJnZV9pbmRl eF9kZWZfdCoJaW5kZXggPSBpbmRleGRlZisrOwotCi0JCQkJaW5kZXgtPmZpZWxkcyA9IE5VTEw7 Ci0JCQkJaW5kZXgtPm5fZmllbGRzID0gMDsKLQkJCQlpbmRleC0+aW5kX3R5cGUgPSBESUNUX0NM VVNURVJFRDsKLQkJCQlpbmRleC0+bmFtZSA9IG1lbV9oZWFwX3N0cmR1cCgKLQkJCQkJaGVhcCwg aW5ub2Jhc2VfaW5kZXhfcmVzZXJ2ZV9uYW1lKTsKLQkJCQlpbmRleC0+a2V5X251bWJlciA9IH4w OwotCQkJCXByaW1hcnlfa2V5X251bWJlciA9IFVMSU5UX1VOREVGSU5FRDsKLQkJCQlnb3RvIGNy ZWF0ZWRfY2x1c3RlcmVkOwotCQkJfSBlbHNlIHsKLQkJCQlwcmltYXJ5X2tleV9udW1iZXIgPSAw OwotCQkJfQorCQl9IGVsc2UgaWYgKGdvdF9kZWZhdWx0X2NsdXN0KSB7CisJCQkvKiBDcmVhdGUg dGhlIEdFTl9DTFVTVF9JTkRFWCAqLworCQkJbWVyZ2VfaW5kZXhfZGVmX3QqCWluZGV4ID0gaW5k ZXhkZWYrKzsKKworCQkJaW5kZXgtPmZpZWxkcyA9IE5VTEw7CisJCQlpbmRleC0+bl9maWVsZHMg PSAwOworCQkJaW5kZXgtPmluZF90eXBlID0gRElDVF9DTFVTVEVSRUQ7CisJCQlpbmRleC0+bmFt ZSA9IG1lbV9oZWFwX3N0cmR1cCgKKwkJCQloZWFwLCBpbm5vYmFzZV9pbmRleF9yZXNlcnZlX25h bWUpOworCQkJaW5kZXgtPmtleV9udW1iZXIgPSB+MDsKKwkJCXByaW1hcnlfa2V5X251bWJlciA9 IFVMSU5UX1VOREVGSU5FRDsKKwkJCWdvdG8gY3JlYXRlZF9jbHVzdGVyZWQ7CisJCX0gZWxzZSB7 CisJCQlwcmltYXJ5X2tleV9udW1iZXIgPSAwOwogCQl9CiAKIAkJLyogQ3JlYXRlIHRoZSBQUklN QVJZIGtleSBpbmRleCBkZWZpbml0aW9uICovCkBAIC0xNDMzLDcgKzE0NDcsNyBAQCBwcmVwYXJl X2lucGxhY2VfYWx0ZXJfdGFibGVfZGljdCgKIAliZSBleGNsdXNpdmVseSBsb2NrZWQgd2hlbiBh IGZ1bGwtdGV4dCBpbmRleCBpcyBiZWluZyBjcmVhdGVkLiAqLwogCURCVUdfQVNTRVJUKCEhbmV3 X2NsdXN0ZXJlZAogCQkgICAgPT0gKChoYV9hbHRlcl9pbmZvLT5oYW5kbGVyX2ZsYWdzCi0JCQkg JiBBbHRlcl9pbnBsYWNlX2luZm86OkFERF9QS19JTkRFWCkKKwkJCSAmIElOTk9CQVNFX0lOUExB Q0VfUkVCVUlMRCkKIAkJCXx8IGFkZF9mdHNfZG9jX2lkKSk7CiAKIAkvKiBBbGxvY2F0ZSBtZW1v cnkgZm9yIGRpY3Rpb25hcnkgaW5kZXggZGVmaW5pdGlvbnMgKi8KQEAgLTE2NzQsOCArMTY4OCw3 IEBAIGNvbF9mYWlsOgogCQl3aWxsIGJlIGV4Y2x1c2l2ZWx5IGxvY2tlZCBhbnl3YXksIHRoZSBt b2RpZmljYXRpb24KIAkJbG9nIGlzIHVubmVjZXNzYXJ5LiAqLwogCQlpZiAoIWV4Y2x1c2l2ZSAm JiAhbnVtX2Z0c19pbmRleAotCQkgICAgJiYgIShoYV9hbHRlcl9pbmZvLT5oYW5kbGVyX2ZsYWdz Ci0JCQkgJiB+SU5OT0JBU0VfT05MSU5FX09QRVJBVElPTlMpCisJCSAgICAmJiAhaW5ub2Jhc2Vf bmVlZF9yZWJ1aWxkKGhhX2FsdGVyX2luZm8pCiAJCSAgICAmJiAhdXNlcl90YWJsZS0+aWJkX2Zp bGVfbWlzc2luZwogCQkgICAgJiYgIXVzZXJfdGFibGUtPnRhYmxlc3BhY2VfZGlzY2FyZGVkKSB7 CiAJCQlEQlVHX0VYRUNVVEVfSUYoImlubm9kYl9PT01fcHJlcGFyZV9pbnBsYWNlX2FsdGVyIiwK QEAgLTE5MjQsMTkgKzE5MzcsMzMgQEAgaGFfaW5ub2Jhc2U6OnByZXBhcmVfaW5wbGFjZV9hbHRl cl90YWJsZQogCX0KICNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAKKwl1dF9kKG11dGV4X2VudGVy KCZkaWN0X3N5cy0+bXV0ZXgpKTsKKwl1dF9kKGRpY3RfdGFibGVfY2hlY2tfZm9yX2R1cF9pbmRl eGVzKAorCQkgICAgIHByZWJ1aWx0LT50YWJsZSwgQ0hFQ0tfQUJPUlRFRF9PSykpOworCXV0X2Qo bXV0ZXhfZXhpdCgmZGljdF9zeXMtPm11dGV4KSk7CisKIAlpZiAoIShoYV9hbHRlcl9pbmZvLT5o YW5kbGVyX2ZsYWdzICYgfklOTk9CQVNFX0lOUExBQ0VfSUdOT1JFKSkgewogCQkvKiBOb3RoaW5n IHRvIGRvICovCiAJCWdvdG8gZnVuY19leGl0OwogCX0KIAotCXV0X2QobXV0ZXhfZW50ZXIoJmRp Y3Rfc3lzLT5tdXRleCkpOwotCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMo Ci0JCSAgICAgcHJlYnVpbHQtPnRhYmxlLCBDSEVDS19BQk9SVEVEX09LKSk7Ci0JdXRfZChtdXRl eF9leGl0KCZkaWN0X3N5cy0+bXV0ZXgpKTsKKwlpZiAoaGFfYWx0ZXJfaW5mby0+aGFuZGxlcl9m bGFncworCSAgICA9PSBBbHRlcl9pbnBsYWNlX2luZm86OkNIQU5HRV9DUkVBVEVfT1BUSU9OCisJ ICAgICYmICFpbm5vYmFzZV9uZWVkX3JlYnVpbGQoaGFfYWx0ZXJfaW5mbykpIHsKKwkJZ290byBm dW5jX2V4aXQ7CisJfQogCi0JLyogSW4gY2FzZSBNeVNRTCBjYWxscyB0aGlzIGluIHRoZSBtaWRk bGUgb2YgYSBTRUxFQ1QgcXVlcnksIHJlbGVhc2UKLQlwb3NzaWJsZSBhZGFwdGl2ZSBoYXNoIGxh dGNoIHRvIGF2b2lkIGRlYWRsb2NrcyBvZiB0aHJlYWRzLiAqLwotCXRyeF9zZWFyY2hfbGF0Y2hf cmVsZWFzZV9pZl9yZXNlcnZlZChwcmVidWlsdC0+dHJ4KTsKKwlpZiAoaGFfYWx0ZXJfaW5mby0+ aGFuZGxlcl9mbGFncworCSAgICAmIEFsdGVyX2lucGxhY2VfaW5mbzo6Q0hBTkdFX0NSRUFURV9P UFRJT04pIHsKKwkJaWYgKGNvbnN0IGNoYXIqIGludmFsaWRfb3B0ID0gY3JlYXRlX29wdGlvbnNf YXJlX2ludmFsaWQoCisJCQkgICAgdXNlcl90aGQsIGFsdGVyZWRfdGFibGUsCisJCQkgICAgaGFf YWx0ZXJfaW5mby0+Y3JlYXRlX2luZm8sCisJCQkgICAgcHJlYnVpbHQtPnRhYmxlLT5zcGFjZSAh PSAwKSkgeworCQkJbXlfZXJyb3IoRVJfSUxMRUdBTF9IQV9DUkVBVEVfT1BUSU9OLCBNWUYoMCks CisJCQkJIHRhYmxlX3R5cGUoKSwgaW52YWxpZF9vcHQpOworCQkJREJVR19SRVRVUk4odHJ1ZSk7 CisJCX0KKwl9CiAKIAkvKiBDaGVjayBpZiBhbnkgaW5kZXggbmFtZSBpcyByZXNlcnZlZC4gKi8K IAlpZiAoaW5ub2Jhc2VfaW5kZXhfbmFtZV9pc19yZXNlcnZlZCgKQEAgLTIzODUsNiArMjQxMiwx MiBAQCBva19leGl0OgogCQlEQlVHX1JFVFVSTihmYWxzZSk7CiAJfQogCisJaWYgKGhhX2FsdGVy X2luZm8tPmhhbmRsZXJfZmxhZ3MKKwkgICAgPT0gQWx0ZXJfaW5wbGFjZV9pbmZvOjpDSEFOR0Vf Q1JFQVRFX09QVElPTgorCSAgICAmJiAhaW5ub2Jhc2VfbmVlZF9yZWJ1aWxkKGhhX2FsdGVyX2lu Zm8pKSB7CisJCWdvdG8gb2tfZXhpdDsKKwl9CisKIAljbGFzcyBoYV9pbm5vYmFzZV9pbnBsYWNl X2N0eCoJY3R4CiAJCT0gc3RhdGljX2Nhc3Q8Y2xhc3MgaGFfaW5ub2Jhc2VfaW5wbGFjZV9jdHgq PgogCQkoaGFfYWx0ZXJfaW5mby0+aGFuZGxlcl9jdHgpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2UvaWJ1Zi9pYnVmMGlidWYuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aWJ1Zi9pYnVmMGlidWYuY2MJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTIwNTE0 MDkzMDU4LTR2ZDRnYzFpb3NoMm42YmEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pYnVmL2lidWYw aWJ1Zi5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTA3MTkzMi01aDAx ZWU2cGVtdDZrenJuCkBAIC0zOTM5LDcgKzM5MzksNyBAQCBpYnVmX3NldF9kZWxfbWFyaygKIAkJ LyogRGVsZXRlIG1hcmsgdGhlIG9sZCBpbmRleCByZWNvcmQuIEFjY29yZGluZyB0byBhCiAJCWNv bW1lbnQgaW4gcm93X3VwZF9zZWNfaW5kZXhfZW50cnkoKSwgaXQgY2FuIGFscmVhZHkKIAkJaGF2 ZSBiZWVuIGRlbGV0ZSBtYXJrZWQgaWYgYSBsb2NrIHdhaXQgb2NjdXJyZWQgaW4KLQkJcm93X2lu c19pbmRleF9lbnRyeSgpIGluIGEgcHJldmlvdXMgaW52b2NhdGlvbiBvZgorCQlyb3dfaW5zX3Nl Y19pbmRleF9lbnRyeSgpIGluIGEgcHJldmlvdXMgaW52b2NhdGlvbiBvZgogCQlyb3dfdXBkX3Nl Y19pbmRleF9lbnRyeSgpLiAqLwogCiAJCWlmIChVTklWX0xJS0VMWQoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvaW5jbHVkZS9idHIwY3VyLmgJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIw MTIwNTE0MDkzMDU4LTR2ZDRnYzFpb3NoMm42YmEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL2J0cjBjdXIuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTA3MTkz Mi01aDAxZWU2cGVtdDZrenJuCkBAIC0yMjAsMTEgKzIyMCwxMiBAQCBidHJfY3VyX29wdGltaXN0 aWNfaW5zZXJ0KAogCQkJCU5VTEwgKi8KIAl1bGludAkJbl9leHQsCS8qITwgaW46IG51bWJlciBv ZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCiAJcXVlX3Rocl90Kgl0aHIsCS8qITwgaW46 IHF1ZXJ5IHRocmVhZCBvciBOVUxMICovCi0JbXRyX3QqCQltdHIpOwkvKiE8IGluOiBtdHI7IGlm IHRoaXMgZnVuY3Rpb24gcmV0dXJucworCW10cl90KgkJbXRyKQkvKiE8IGluOiBtdHI7IGlmIHRo aXMgZnVuY3Rpb24gcmV0dXJucwogCQkJCURCX1NVQ0NFU1Mgb24gYSBsZWFmIHBhZ2Ugb2YgYSBz ZWNvbmRhcnkKIAkJCQlpbmRleCBpbiBhIGNvbXByZXNzZWQgdGFibGVzcGFjZSwgdGhlCiAJCQkJ bXRyIG11c3QgYmUgY29tbWl0dGVkIGJlZm9yZSBsYXRjaGluZwogCQkJCWFueSBmdXJ0aGVyIHBh Z2VzICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCgyLDMsNCw1LDgpLCB3YXJuX3VudXNlZF9y ZXN1bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgogUGVyZm9ybXMgYW4gaW5zZXJ0IG9uIGEgcGFnZSBvZiBhbiBp bmRleCB0cmVlLiBJdCBpcyBhc3N1bWVkIHRoYXQgbXRyCiBob2xkcyBhbiB4LWxhdGNoIG9uIHRo ZSB0cmVlIGFuZCBvbiB0aGUgY3Vyc29yIHBhZ2UuIElmIHRoZSBpbnNlcnQgaXMKQEAgLTI1MSw3 ICsyNTIsOCBAQCBidHJfY3VyX3Blc3NpbWlzdGljX2luc2VydCgKIAkJCQlOVUxMICovCiAJdWxp bnQJCW5fZXh0LAkvKiE8IGluOiBudW1iZXIgb2YgZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAq LwogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSB0aHJlYWQgb3IgTlVMTCAqLwotCW10 cl90KgkJbXRyKTsJLyohPCBpbjogbXRyICovCisJbXRyX3QqCQltdHIpCS8qITwgaW46IG10ciAq LworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMiwzLDQsNSw4KSwgd2Fybl91bnVzZWRfcmVzdWx0 KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKIFNlZSBpZiB0aGVyZSBpcyBlbm91Z2ggcGxhY2UgaW4gdGhlIHBhZ2Ug bW9kaWZpY2F0aW9uIGxvZyB0byBsb2cKIGFuIHVwZGF0ZS1pbi1wbGFjZS4KCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MGlucy5oJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcm93MGlucy5oCXJldmlkOmpvcmdlbi5sb2xhbmRAb3JhY2xlLmNv bS0yMDEyMDUxNDA5MzA1OC00dmQ0Z2MxaW9zaDJuNmJhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9yb3cwaW5zLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MTUw NzE5MzItNWgwMWVlNnBlbXQ2a3pybgpAQCAtNzUsMjAgKzc1LDMyIEBAIGluc19ub2RlX3NldF9u ZXdfcm93KAogCWluc19ub2RlX3QqCW5vZGUsCS8qITwgaW46IGluc2VydCBub2RlICovCiAJZHR1 cGxlX3QqCXJvdyk7CS8qITwgaW46IG5ldyByb3cgKG9yIGZpcnN0IHJvdykgZm9yIHRoZSBub2Rl ICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgotSW5zZXJ0cyBhbiBpbmRleCBlbnRyeSB0byBpbmRleC4gVHJpZXMg Zmlyc3Qgb3B0aW1pc3RpYywgdGhlbiBwZXNzaW1pc3RpYwotZGVzY2VudCBkb3duIHRoZSB0cmVl LiBJZiB0aGUgZW50cnkgbWF0Y2hlcyBlbm91Z2ggdG8gYSBkZWxldGUgbWFya2VkIHJlY29yZCwK LXBlcmZvcm1zIHRoZSBpbnNlcnQgYnkgdXBkYXRpbmcgb3IgZGVsZXRlIHVubWFya2luZyB0aGUg ZGVsZXRlIG1hcmtlZAotcmVjb3JkLgorSW5zZXJ0cyBhbiBlbnRyeSBpbnRvIGEgY2x1c3RlcmVk IGluZGV4LiBUcmllcyBmaXJzdCBvcHRpbWlzdGljLAordGhlbiBwZXNzaW1pc3RpYyBkZXNjZW50 IGRvd24gdGhlIHRyZWUuIElmIHRoZSBlbnRyeSBtYXRjaGVzIGVub3VnaAordG8gYSBkZWxldGUg bWFya2VkIHJlY29yZCwgcGVyZm9ybXMgdGhlIGluc2VydCBieSB1cGRhdGluZyBvciBkZWxldGUK K3VubWFya2luZyB0aGUgZGVsZXRlIG1hcmtlZCByZWNvcmQuCiBAcmV0dXJuCURCX1NVQ0NFU1Ms IERCX0xPQ0tfV0FJVCwgREJfRFVQTElDQVRFX0tFWSwgb3Igc29tZSBvdGhlciBlcnJvciBjb2Rl ICovCiBVTklWX0lOVEVSTgogZGJlcnJfdAotcm93X2luc19pbmRleF9lbnRyeSgKLS8qPT09PT09 PT09PT09PT09PSovCi0JZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXggKi8KK3Jv d19pbnNfY2x1c3RfaW5kZXhfZW50cnkoCisvKj09PT09PT09PT09PT09PT09PT09PT0qLworCWRp Y3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBpbmRleCAqLworCWR0dXBsZV90 KgllbnRyeSwJLyohPCBpbi9vdXQ6IGluZGV4IGVudHJ5IHRvIGluc2VydCAqLworCXF1ZV90aHJf dCoJdGhyLAkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KKwl1bGludAkJbl9leHQpCS8qITwgaW46 IG51bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCisJX19hdHRyaWJ1dGVfXygo bm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorSW5zZXJ0cyBhbiBl bnRyeSBpbnRvIGEgc2Vjb25kYXJ5IGluZGV4LiBUcmllcyBmaXJzdCBvcHRpbWlzdGljLAordGhl biBwZXNzaW1pc3RpYyBkZXNjZW50IGRvd24gdGhlIHRyZWUuIElmIHRoZSBlbnRyeSBtYXRjaGVz IGVub3VnaAordG8gYSBkZWxldGUgbWFya2VkIHJlY29yZCwgcGVyZm9ybXMgdGhlIGluc2VydCBi eSB1cGRhdGluZyBvciBkZWxldGUKK3VubWFya2luZyB0aGUgZGVsZXRlIG1hcmtlZCByZWNvcmQu CitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfRFVQTElDQVRFX0tFWSwgb3Ig c29tZSBvdGhlciBlcnJvciBjb2RlICovCitVTklWX0lOVEVSTgorZGJlcnJfdAorcm93X2luc19z ZWNfaW5kZXhfZW50cnkoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3Qq CWluZGV4LAkvKiE8IGluOiBzZWNvbmRhcnkgaW5kZXggKi8KIAlkdHVwbGVfdCoJZW50cnksCS8q ITwgaW4vb3V0OiBpbmRleCBlbnRyeSB0byBpbnNlcnQgKi8KLQl1bGludAkJbl9leHQsCS8qITwg aW46IG51bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICovCi0JaWJvb2wJCWZvcmVp Z24sLyohPCBpbjogVFJVRT1jaGVjayBmb3JlaWduIGtleSBjb25zdHJhaW50cwotCQkJCShmb3Jl aWduPUZBTFNFIG9ubHkgZHVyaW5nIENSRUFURSBJTkRFWCkgKi8KIAlxdWVfdGhyX3QqCXRocikJ LyohPCBpbjogcXVlcnkgdGhyZWFkICovCiAJX19hdHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91 bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2Uvcm93L3JvdzBpbnMuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBp bnMuY2MJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTIwNTE0MDkzMDU4LTR2ZDRn YzFpb3NoMm42YmEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGlucy5jYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTA3MTkzMi01aDAxZWU2cGVtdDZrenJuCkBA IC0yMTIwLDMyICsyMTIwLDI3IEBAIHJvd19pbnNfbXVzdF9tb2RpZnlfcmVjKAogfQogCiAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLy8qKgotVHJpZXMgdG8gaW5zZXJ0IGFuIGluZGV4IGVudHJ5IHRvIGFuIGluZGV4LiBJZiB0 aGUgaW5kZXggaXMgY2x1c3RlcmVkCi1hbmQgYSByZWNvcmQgd2l0aCB0aGUgc2FtZSB1bmlxdWUg a2V5IGlzIGZvdW5kLCB0aGUgb3RoZXIgcmVjb3JkIGlzCi1uZWNlc3NhcmlseSBtYXJrZWQgZGVs ZXRlZCBieSBhIGNvbW1pdHRlZCB0cmFuc2FjdGlvbiwgb3IgYSB1bmlxdWUga2V5Ci12aW9sYXRp b24gZXJyb3Igb2NjdXJzLiBUaGUgZGVsZXRlIG1hcmtlZCByZWNvcmQgaXMgdGhlbiB1cGRhdGVk IHRvIGFuCi1leGlzdGluZyByZWNvcmQsIGFuZCB3ZSBtdXN0IHdyaXRlIGFuIHVuZG8gbG9nIHJl Y29yZCBvbiB0aGUgZGVsZXRlCi1tYXJrZWQgcmVjb3JkLiBJZiB0aGUgaW5kZXggaXMgc2Vjb25k YXJ5LCBhbmQgYSByZWNvcmQgd2l0aCBleGFjdGx5IHRoZQotc2FtZSBmaWVsZHMgaXMgZm91bmQs IHRoZSBvdGhlciByZWNvcmQgaXMgbmVjZXNzYXJpbHkgbWFya2VkIGRlbGV0ZWQuCi1JdCBpcyB0 aGVuIHVubWFya2VkLiBPdGhlcndpc2UsIHRoZSBlbnRyeSBpcyBqdXN0IGluc2VydGVkIHRvIHRo ZSBpbmRleC4KLUByZXR1cm4gREJfU1VDQ0VTUywgREJfTE9DS19XQUlULCBEQl9GQUlMIGlmIHBl c3NpbWlzdGljIHJldHJ5IG5lZWRlZCwKLW9yIGVycm9yIGNvZGUgKi8KK1RyaWVzIHRvIGluc2Vy dCBhbiBlbnRyeSBpbnRvIGEgY2x1c3RlcmVkIGluZGV4LiBJZiBhIHJlY29yZCB3aXRoIHRoZQor c2FtZSB1bmlxdWUga2V5IGlzIGZvdW5kLCB0aGUgb3RoZXIgcmVjb3JkIGlzIG5lY2Vzc2FyaWx5 IG1hcmtlZAorZGVsZXRlZCBieSBhIGNvbW1pdHRlZCB0cmFuc2FjdGlvbiwgb3IgYSB1bmlxdWUg a2V5IHZpb2xhdGlvbiBlcnJvcgorb2NjdXJzLiBUaGUgZGVsZXRlIG1hcmtlZCByZWNvcmQgaXMg dGhlbiB1cGRhdGVkIHRvIGFuIGV4aXN0aW5nCityZWNvcmQsIGFuZCB3ZSBtdXN0IHdyaXRlIGFu IHVuZG8gbG9nIHJlY29yZCBvbiB0aGUgZGVsZXRlIG1hcmtlZAorcmVjb3JkLgorQHJldHVybiBE Ql9TVUNDRVNTLCBEQl9MT0NLX1dBSVQsIERCX0ZBSUwgaWYgcGVzc2ltaXN0aWMKK3JldHJ5IG5l ZWRlZCwgb3IgZXJyb3IgY29kZSAqLwogc3RhdGljIF9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdh cm5fdW51c2VkX3Jlc3VsdCkpCiBkYmVycl90Ci1yb3dfaW5zX2luZGV4X2VudHJ5X2xvdygKLS8q PT09PT09PT09PT09PT09PT09PT0qLworcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9sb3coCisv Kj09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIAl1bGludAkJbW9kZSwJLyohPCBpbjogQlRS X01PRElGWV9MRUFGIG9yIEJUUl9NT0RJRllfVFJFRSwKIAkJCQlkZXBlbmRpbmcgb24gd2hldGhl ciB3ZSB3aXNoIG9wdGltaXN0aWMgb3IKIAkJCQlwZXNzaW1pc3RpYyBkZXNjZW50IGRvd24gdGhl IGluZGV4IHRyZWUgKi8KLQlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBpbmRleCAqLwor CWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGNsdXN0ZXJlZCBpbmRleCAqLwogCWR0dXBs ZV90KgllbnRyeSwJLyohPCBpbi9vdXQ6IGluZGV4IGVudHJ5IHRvIGluc2VydCAqLwogCXVsaW50 CQluX2V4dCwJLyohPCBpbjogbnVtYmVyIG9mIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMgKi8K IAlxdWVfdGhyX3QqCXRocikJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCiB7CiAJYnRyX2N1cl90 CWN1cnNvcjsKLQl1bGludAkJc2VhcmNoX21vZGU7Ci0JaWJvb2wJCW1vZGlmeQkJCT0gRkFMU0U7 Ci0JcmVjX3QqCQlpbnNlcnRfcmVjOwogCXJlY190KgkJcmVjOwogCXVsaW50KgkJb2Zmc2V0czsK IAlkYmVycl90CQllcnI7CkBAIC0yMTU0LDYgKzIxNDksOCBAQCByb3dfaW5zX2luZGV4X2VudHJ5 X2xvdygKIAltdHJfdAkJbXRyOwogCW1lbV9oZWFwX3QqCWhlYXAJCQk9IE5VTEw7CiAKKwl1dF9h ZChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSk7CisKIAlsb2dfZnJlZV9jaGVjaygpOwogCiAJ bXRyX3N0YXJ0KCZtdHIpOwpAQCAtMjE2NCwyOCArMjE2MSw5IEBAIHJvd19pbnNfaW5kZXhfZW50 cnlfbG93KAogCXRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBpbiBib3RoIGxvd19tYXRjaCBhbmQg dXBfbWF0Y2ggb2YgdGhlCiAJY3Vyc29yIHNlbnNpYmxlIHZhbHVlcyAqLwogCi0JaWYgKGRpY3Rf aW5kZXhfaXNfY2x1c3QoaW5kZXgpKSB7Ci0JCXNlYXJjaF9tb2RlID0gbW9kZTsKLQl9IGVsc2Ug aWYgKCEodGhyX2dldF90cngodGhyKS0+Y2hlY2tfdW5pcXVlX3NlY29uZGFyeSkpIHsKLQkJc2Vh cmNoX21vZGUgPSBtb2RlIHwgQlRSX0lOU0VSVCB8IEJUUl9JR05PUkVfU0VDX1VOSVFVRTsKLQl9 IGVsc2UgewotCQlzZWFyY2hfbW9kZSA9IG1vZGUgfCBCVFJfSU5TRVJUOwotCX0KLQotCWJ0cl9j dXJfc2VhcmNoX3RvX250aF9sZXZlbChpbmRleCwgMCwgZW50cnksIFBBR0VfQ1VSX0xFLAotCQkJ CSAgICBzZWFyY2hfbW9kZSwKKwlidHJfY3VyX3NlYXJjaF90b19udGhfbGV2ZWwoaW5kZXgsIDAs IGVudHJ5LCBQQUdFX0NVUl9MRSwgbW9kZSwKIAkJCQkgICAgJmN1cnNvciwgMCwgX19GSUxFX18s IF9fTElORV9fLCAmbXRyKTsKIAotCWlmIChjdXJzb3IuZmxhZyA9PSBCVFJfQ1VSX0lOU0VSVF9U T19JQlVGKSB7Ci0JCS8qIFRoZSBpbnNlcnRpb24gd2FzIG1hZGUgdG8gdGhlIGluc2VydCBidWZm ZXIgYWxyZWFkeSBkdXJpbmcKLQkJdGhlIHNlYXJjaDogd2UgYXJlIGRvbmUgKi8KLQotCQl1dF9h ZChzZWFyY2hfbW9kZSAmIEJUUl9JTlNFUlQpOwotCQllcnIgPSBEQl9TVUNDRVNTOwotCi0JCWdv dG8gZnVuY3Rpb25fZXhpdDsKLQl9Ci0KICNpZmRlZiBVTklWX0RFQlVHCiAJewogCQlwYWdlX3Qq CXBhZ2UgPSBidHJfY3VyX2dldF9wYWdlKCZjdXJzb3IpOwpAQCAtMjIwMywxMjYgKzIxODEsOTgg QEAgcm93X2luc19pbmRleF9lbnRyeV9sb3coCiAJaWYgKGRpY3RfaW5kZXhfaXNfdW5pcXVlKGlu ZGV4KSAmJiAoY3Vyc29yLnVwX21hdGNoID49IG5fdW5pcXVlCiAJCQkJCSAgICB8fCBjdXJzb3Iu bG93X21hdGNoID49IG5fdW5pcXVlKSkgewogCi0JCWlmIChkaWN0X2luZGV4X2lzX2NsdXN0KGlu ZGV4KSkgewotCQkJLyogTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgbWF5IHJldHVybiBhbHNvCi0J CQlEQl9MT0NLX1dBSVQgKi8KLQotCQkJZXJyID0gcm93X2luc19kdXBsaWNhdGVfZXJyb3JfaW5f Y2x1c3QoCi0JCQkJJmN1cnNvciwgZW50cnksIHRociwgJm10cik7Ci0JCQlpZiAoZXJyICE9IERC X1NVQ0NFU1MpIHsKLQotCQkJCWdvdG8gZnVuY3Rpb25fZXhpdDsKLQkJCX0KLQkJfSBlbHNlIHsK LQkJCW10cl9jb21taXQoJm10cik7Ci0JCQllcnIgPSByb3dfaW5zX3NjYW5fc2VjX2luZGV4X2Zv cl9kdXBsaWNhdGUoCi0JCQkJaW5kZXgsIGVudHJ5LCB0aHIpOwotCQkJbXRyX3N0YXJ0KCZtdHIp OworCQkvKiBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBtYXkgcmV0dXJuIGFsc28KKwkJREJfTE9D S19XQUlUICovCiAKLQkJCWlmIChlcnIgIT0gREJfU1VDQ0VTUykgewotCQkJCWdvdG8gZnVuY3Rp b25fZXhpdDsKLQkJCX0KKwkJZXJyID0gcm93X2luc19kdXBsaWNhdGVfZXJyb3JfaW5fY2x1c3Qo CisJCQkmY3Vyc29yLCBlbnRyeSwgdGhyLCAmbXRyKTsKKwkJaWYgKGVyciAhPSBEQl9TVUNDRVNT KSB7CiAKLQkJCS8qIFdlIGRpZCBub3QgZmluZCBhIGR1cGxpY2F0ZSBhbmQgd2UgaGF2ZSBub3cK LQkJCWxvY2tlZCB3aXRoIHMtbG9ja3MgdGhlIG5lY2Vzc2FyeSByZWNvcmRzIHRvCi0JCQlwcmV2 ZW50IGFueSBpbnNlcnRpb24gb2YgYSBkdXBsaWNhdGUgYnkgYW5vdGhlcgotCQkJdHJhbnNhY3Rp b24uIExldCB1cyBub3cgcmVwb3NpdGlvbiB0aGUgY3Vyc29yIGFuZAotCQkJY29udGludWUgdGhl IGluc2VydGlvbi4gKi8KLQotCQkJYnRyX2N1cl9zZWFyY2hfdG9fbnRoX2xldmVsKGluZGV4LCAw LCBlbnRyeSwKLQkJCQkJCSAgICBQQUdFX0NVUl9MRSwKLQkJCQkJCSAgICBtb2RlIHwgQlRSX0lO U0VSVCwKLQkJCQkJCSAgICAmY3Vyc29yLCAwLAotCQkJCQkJICAgIF9fRklMRV9fLCBfX0xJTkVf XywgJm10cik7CisJCQlnb3RvIGZ1bmN0aW9uX2V4aXQ7CiAJCX0KIAl9CiAKLQltb2RpZnkgPSBy b3dfaW5zX211c3RfbW9kaWZ5X3JlYygmY3Vyc29yKTsKLQotCWlmIChtb2RpZnkpIHsKKwlpZiAo cm93X2luc19tdXN0X21vZGlmeV9yZWMoJmN1cnNvcikpIHsKIAkJLyogVGhlcmUgaXMgYWxyZWFk eSBhbiBpbmRleCBlbnRyeSB3aXRoIGEgbG9uZyBlbm91Z2ggY29tbW9uCiAJCXByZWZpeCwgd2Ug bXVzdCBjb252ZXJ0IHRoZSBpbnNlcnQgaW50byBhIG1vZGlmeSBvZiBhbgogCQlleGlzdGluZyBy ZWNvcmQgKi8KIAotCQlpZiAoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpIHsKLQkJCWVyciA9 IHJvd19pbnNfY2x1c3RfaW5kZXhfZW50cnlfYnlfbW9kaWZ5KAotCQkJCW1vZGUsICZjdXJzb3Is ICZoZWFwLCAmYmlnX3JlYywgZW50cnksCi0JCQkJdGhyLCAmbXRyKTsKLQotCQkJaWYgKGJpZ19y ZWMpIHsKLQkJCQl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKLQkJCQkvKiBXcml0ZSBvdXQgdGhl IGV4dGVybmFsbHkgc3RvcmVkCi0JCQkJY29sdW1ucyB3aGlsZSBzdGlsbCB4LWxhdGNoaW5nCi0J CQkJaW5kZXgtPmxvY2sgYW5kIGJsb2NrLT5sb2NrLiBBbGxvY2F0ZQotCQkJCXBhZ2VzIGZvciBi aWdfcmVjIGluIHRoZSBtdHIgdGhhdAotCQkJCW1vZGlmaWVkIHRoZSBCLXRyZWUsIGJ1dCBiZSBz dXJlIHRvIHNraXAKLQkJCQlhbnkgcGFnZXMgdGhhdCB3ZXJlIGZyZWVkIGluIG10ci4gV2Ugd2ls bAotCQkJCXdyaXRlIG91dCB0aGUgYmlnX3JlYyBwYWdlcyBiZWZvcmUKLQkJCQljb21taXR0aW5n IHRoZSBCLXRyZWUgbWluaS10cmFuc2FjdGlvbi4gSWYKLQkJCQl0aGUgc3lzdGVtIGNyYXNoZXMg c28gdGhhdCBjcmFzaCByZWNvdmVyeQotCQkJCXdpbGwgbm90IHJlcGxheSB0aGUgbXRyX2NvbW1p dCgmbXRyKSwgdGhlCi0JCQkJYmlnX3JlYyBwYWdlcyB3aWxsIGJlIGxlZnQgb3JwaGFuZWQgdW50 aWwKLQkJCQl0aGUgcGFnZXMgYXJlIGFsbG9jYXRlZCBmb3Igc29tZXRoaW5nIGVsc2UuCi0KLQkJ CQlUT0RPOiBJZiB0aGUgYWxsb2NhdGlvbiBleHRlbmRzIHRoZQotCQkJCXRhYmxlc3BhY2UsIGl0 IHdpbGwgbm90IGJlIHJlZG8KLQkJCQlsb2dnZWQsIGluIGVpdGhlciBtaW5pLXRyYW5zYWN0aW9u LgotCQkJCVRhYmxlc3BhY2UgZXh0ZW5zaW9uIHNob3VsZCBiZQotCQkJCXJlZG8tbG9nZ2VkIGlu IHRoZSBiaWdfcmVjCi0JCQkJbWluaS10cmFuc2FjdGlvbiwgc28gdGhhdCByZWNvdmVyeQotCQkJ CXdpbGwgbm90IGZhaWwgd2hlbiB0aGUgYmlnX3JlYyB3YXMKLQkJCQl3cml0dGVuIHRvIHRoZSBl eHRlbmRlZCBwb3J0aW9uIG9mIHRoZQotCQkJCWZpbGUsIGluIGNhc2UgdGhlIGZpbGUgd2FzIHNv bWVob3cKLQkJCQl0cnVuY2F0ZWQgaW4gdGhlIGNyYXNoLiAqLwotCi0JCQkJcmVjID0gYnRyX2N1 cl9nZXRfcmVjKCZjdXJzb3IpOwotCQkJCW9mZnNldHMgPSByZWNfZ2V0X29mZnNldHMoCi0JCQkJ CXJlYywgaW5kZXgsIE5VTEwsCi0JCQkJCVVMSU5UX1VOREVGSU5FRCwgJmhlYXApOwotCi0JCQkJ REVCVUdfU1lOQ19DX0lGX1RIRCgKLQkJCQkJdGhyX2dldF90cngodGhyKS0+bXlzcWxfdGhkLAot CQkJCQkiYmVmb3JlX3Jvd19pbnNfdXBkX2V4dGVybiIpOwotCQkJCWVyciA9IGJ0cl9zdG9yZV9i aWdfcmVjX2V4dGVybl9maWVsZHMoCi0JCQkJCWluZGV4LCBidHJfY3VyX2dldF9ibG9jaygmY3Vy c29yKSwKLQkJCQkJcmVjLCBvZmZzZXRzLCBiaWdfcmVjLCAmbXRyLAotCQkJCQlCVFJfU1RPUkVf SU5TRVJUX1VQREFURSk7Ci0JCQkJREVCVUdfU1lOQ19DX0lGX1RIRCgKLQkJCQkJdGhyX2dldF90 cngodGhyKS0+bXlzcWxfdGhkLAotCQkJCQkiYWZ0ZXJfcm93X2luc191cGRfZXh0ZXJuIik7Ci0J CQkJLyogSWYgd3JpdGluZyBiaWdfcmVjIGZhaWxzIChmb3IKLQkJCQlleGFtcGxlLCBiZWNhdXNl IG9mIERCX09VVF9PRl9GSUxFX1NQQUNFKSwKLQkJCQl0aGUgcmVjb3JkIHdpbGwgYmUgY29ycnVw dGVkLiBFdmVuIGlmCi0JCQkJd2UgZGlkIG5vdCB1cGRhdGUgYW55IGV4dGVybmFsbHkKLQkJCQlz dG9yZWQgY29sdW1ucywgb3VyIHVwZGF0ZSBjb3VsZCBjYXVzZQotCQkJCXRoZSByZWNvcmQgdG8g Z3JvdyBzbyB0aGF0IGEKLQkJCQlub24tdXBkYXRlZCBjb2x1bW4gd2FzIHNlbGVjdGVkIGZvcgot CQkJCWV4dGVybmFsIHN0b3JhZ2UuIFRoaXMgbm9uLXVwZGF0ZQotCQkJCXdvdWxkIG5vdCBoYXZl IGJlZW4gd3JpdHRlbiB0byB0aGUKLQkJCQl1bmRvIGxvZywgYW5kIHRodXMgdGhlIHJlY29yZCBj YW5ub3QKLQkJCQliZSByb2xsZWQgYmFjay4KLQotCQkJCUhvd2V2ZXIsIGJlY2F1c2Ugd2UgaGF2 ZSBub3QgZXhlY3V0ZWQKLQkJCQltdHJfY29tbWl0KG10cikgeWV0LCB0aGUgdXBkYXRlIHdpbGwK LQkJCQlub3QgYmUgcmVwbGF5ZWQgaW4gY3Jhc2ggcmVjb3ZlcnksIGFuZAotCQkJCXRoZSBmb2xs b3dpbmcgYXNzZXJ0aW9uIGZhaWx1cmUgd2lsbAotCQkJCWVmZmVjdGl2ZWx5ICJyb2xsIGJhY2si IHRoZSBvcGVyYXRpb24uICovCi0JCQkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7Ci0JCQkJbXRy X2NvbW1pdCgmbXRyKTsKLQkJCQlnb3RvIHN0b3JlZF9iaWdfcmVjOwotCQkJfQotCQl9IGVsc2Ug ewotCQkJdXRfYWQoIW5fZXh0KTsKLQkJCWVyciA9IHJvd19pbnNfc2VjX2luZGV4X2VudHJ5X2J5 X21vZGlmeSgKLQkJCQltb2RlLCAmY3Vyc29yLCBlbnRyeSwgdGhyLCAmbXRyKTsKKwkJZXJyID0g cm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoCisJCQltb2RlLCAmY3Vyc29yLCAm aGVhcCwgJmJpZ19yZWMsIGVudHJ5LAorCQkJdGhyLCAmbXRyKTsKKworCQlpZiAoYmlnX3JlYykg eworCQkJdXRfYShlcnIgPT0gREJfU1VDQ0VTUyk7CisJCQkvKiBXcml0ZSBvdXQgdGhlIGV4dGVy bmFsbHkgc3RvcmVkCisJCQljb2x1bW5zIHdoaWxlIHN0aWxsIHgtbGF0Y2hpbmcKKwkJCWluZGV4 LT5sb2NrIGFuZCBibG9jay0+bG9jay4gQWxsb2NhdGUKKwkJCXBhZ2VzIGZvciBiaWdfcmVjIGlu IHRoZSBtdHIgdGhhdAorCQkJbW9kaWZpZWQgdGhlIEItdHJlZSwgYnV0IGJlIHN1cmUgdG8gc2tp cAorCQkJYW55IHBhZ2VzIHRoYXQgd2VyZSBmcmVlZCBpbiBtdHIuIFdlIHdpbGwKKwkJCXdyaXRl IG91dCB0aGUgYmlnX3JlYyBwYWdlcyBiZWZvcmUKKwkJCWNvbW1pdHRpbmcgdGhlIEItdHJlZSBt aW5pLXRyYW5zYWN0aW9uLiBJZgorCQkJdGhlIHN5c3RlbSBjcmFzaGVzIHNvIHRoYXQgY3Jhc2gg cmVjb3ZlcnkKKwkJCXdpbGwgbm90IHJlcGxheSB0aGUgbXRyX2NvbW1pdCgmbXRyKSwgdGhlCisJ CQliaWdfcmVjIHBhZ2VzIHdpbGwgYmUgbGVmdCBvcnBoYW5lZCB1bnRpbAorCQkJdGhlIHBhZ2Vz IGFyZSBhbGxvY2F0ZWQgZm9yIHNvbWV0aGluZyBlbHNlLgorCisJCQlUT0RPOiBJZiB0aGUgYWxs b2NhdGlvbiBleHRlbmRzIHRoZQorCQkJdGFibGVzcGFjZSwgaXQgd2lsbCBub3QgYmUgcmVkbwor CQkJbG9nZ2VkLCBpbiBlaXRoZXIgbWluaS10cmFuc2FjdGlvbi4KKwkJCVRhYmxlc3BhY2UgZXh0 ZW5zaW9uIHNob3VsZCBiZQorCQkJcmVkby1sb2dnZWQgaW4gdGhlIGJpZ19yZWMKKwkJCW1pbmkt dHJhbnNhY3Rpb24sIHNvIHRoYXQgcmVjb3ZlcnkKKwkJCXdpbGwgbm90IGZhaWwgd2hlbiB0aGUg YmlnX3JlYyB3YXMKKwkJCXdyaXR0ZW4gdG8gdGhlIGV4dGVuZGVkIHBvcnRpb24gb2YgdGhlCisJ CQlmaWxlLCBpbiBjYXNlIHRoZSBmaWxlIHdhcyBzb21laG93CisJCQl0cnVuY2F0ZWQgaW4gdGhl IGNyYXNoLiAqLworCisJCQlyZWMgPSBidHJfY3VyX2dldF9yZWMoJmN1cnNvcik7CisJCQlvZmZz ZXRzID0gcmVjX2dldF9vZmZzZXRzKAorCQkJCXJlYywgaW5kZXgsIE5VTEwsCisJCQkJVUxJTlRf VU5ERUZJTkVELCAmaGVhcCk7CisKKwkJCURFQlVHX1NZTkNfQ19JRl9USEQoCisJCQkJdGhyX2dl dF90cngodGhyKS0+bXlzcWxfdGhkLAorCQkJCSJiZWZvcmVfcm93X2luc191cGRfZXh0ZXJuIik7 CisJCQllcnIgPSBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAorCQkJCWluZGV4LCBi dHJfY3VyX2dldF9ibG9jaygmY3Vyc29yKSwKKwkJCQlyZWMsIG9mZnNldHMsIGJpZ19yZWMsICZt dHIsCisJCQkJQlRSX1NUT1JFX0lOU0VSVF9VUERBVEUpOworCQkJREVCVUdfU1lOQ19DX0lGX1RI RCgKKwkJCQl0aHJfZ2V0X3RyeCh0aHIpLT5teXNxbF90aGQsCisJCQkJImFmdGVyX3Jvd19pbnNf dXBkX2V4dGVybiIpOworCQkJLyogSWYgd3JpdGluZyBiaWdfcmVjIGZhaWxzIChmb3IKKwkJCWV4 YW1wbGUsIGJlY2F1c2Ugb2YgREJfT1VUX09GX0ZJTEVfU1BBQ0UpLAorCQkJdGhlIHJlY29yZCB3 aWxsIGJlIGNvcnJ1cHRlZC4gRXZlbiBpZgorCQkJd2UgZGlkIG5vdCB1cGRhdGUgYW55IGV4dGVy bmFsbHkKKwkJCXN0b3JlZCBjb2x1bW5zLCBvdXIgdXBkYXRlIGNvdWxkIGNhdXNlCisJCQl0aGUg cmVjb3JkIHRvIGdyb3cgc28gdGhhdCBhCisJCQlub24tdXBkYXRlZCBjb2x1bW4gd2FzIHNlbGVj dGVkIGZvcgorCQkJZXh0ZXJuYWwgc3RvcmFnZS4gVGhpcyBub24tdXBkYXRlCisJCQl3b3VsZCBu b3QgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gdGhlCisJCQl1bmRvIGxvZywgYW5kIHRodXMgdGhlIHJl Y29yZCBjYW5ub3QKKwkJCWJlIHJvbGxlZCBiYWNrLgorCisJCQlIb3dldmVyLCBiZWNhdXNlIHdl IGhhdmUgbm90IGV4ZWN1dGVkCisJCQltdHJfY29tbWl0KG10cikgeWV0LCB0aGUgdXBkYXRlIHdp bGwKKwkJCW5vdCBiZSByZXBsYXllZCBpbiBjcmFzaCByZWNvdmVyeSwgYW5kCisJCQl0aGUgZm9s bG93aW5nIGFzc2VydGlvbiBmYWlsdXJlIHdpbGwKKwkJCWVmZmVjdGl2ZWx5ICJyb2xsIGJhY2si IHRoZSBvcGVyYXRpb24uICovCisJCQl1dF9hKGVyciA9PSBEQl9TVUNDRVNTKTsKKwkJCW10cl9j b21taXQoJm10cik7CisJCQlkdHVwbGVfYmlnX3JlY19mcmVlKGJpZ19yZWMpOworCQkJZ290byBz dG9yZWRfYmlnX3JlYzsKIAkJfQogCX0gZWxzZSB7CisJCXJlY190KglpbnNlcnRfcmVjOworCiAJ CWlmIChtb2RlID09IEJUUl9NT0RJRllfTEVBRikgewogCQkJZXJyID0gYnRyX2N1cl9vcHRpbWlz dGljX2luc2VydCgKIAkJCQkwLCAmY3Vyc29yLCBlbnRyeSwgJmluc2VydF9yZWMsICZiaWdfcmVj LAogCQkJCW5fZXh0LCB0aHIsICZtdHIpOwogCQl9IGVsc2UgewotCQkJdXRfYShtb2RlID09IEJU Ul9NT0RJRllfVFJFRSk7CisJCQl1dF9hZChtb2RlID09IEJUUl9NT0RJRllfVFJFRSk7CiAJCQlp ZiAoYnVmX0xSVV9idWZfcG9vbF9ydW5uaW5nX291dCgpKSB7CiAKIAkJCQllcnIgPSBEQl9MT0NL X1RBQkxFX0ZVTEw7CkBAIC0yMzQ1LDE3ICsyMjk1LDEzOSBAQCBmdW5jdGlvbl9leGl0OgogCQll cnIgPSByb3dfaW5zX2luZGV4X2VudHJ5X2JpZ19yZWMoCiAJCQllbnRyeSwgYmlnX3JlYywgTlVM TCwgJmhlYXAsIGluZGV4LAogCQkJdGhyX2dldF90cngodGhyKS0+bXlzcWxfdGhkLCBfX0ZJTEVf XywgX19MSU5FX18pOworCQlkdHVwbGVfY29udmVydF9iYWNrX2JpZ19yZWMoaW5kZXgsIGVudHJ5 LCBiaWdfcmVjKTsKKwl9CiBzdG9yZWRfYmlnX3JlYzoKLQkJaWYgKG1vZGlmeSkgewotCQkJZHR1 cGxlX2JpZ19yZWNfZnJlZShiaWdfcmVjKTsKLQkJfSBlbHNlIHsKLQkJCWR0dXBsZV9jb252ZXJ0 X2JhY2tfYmlnX3JlYyhpbmRleCwgZW50cnksIGJpZ19yZWMpOworCWlmIChVTklWX0xJS0VMWV9O VUxMKGhlYXApKSB7CisJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJfQorCXJldHVybihlcnIpOwor fQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgorVHJpZXMgdG8gaW5zZXJ0IGFuIGVudHJ5IGludG8gYSBzZWNvbmRh cnkgaW5kZXguIElmIGEgcmVjb3JkIHdpdGggZXhhY3RseSB0aGUKK3NhbWUgZmllbGRzIGlzIGZv dW5kLCB0aGUgb3RoZXIgcmVjb3JkIGlzIG5lY2Vzc2FyaWx5IG1hcmtlZCBkZWxldGVkLgorSXQg aXMgdGhlbiB1bm1hcmtlZC4gT3RoZXJ3aXNlLCB0aGUgZW50cnkgaXMganVzdCBpbnNlcnRlZCB0 byB0aGUgaW5kZXguCitAcmV0dXJuIERCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfRkFJTCBp ZiBwZXNzaW1pc3RpYyByZXRyeSBuZWVkZWQsCitvciBlcnJvciBjb2RlICovCitzdGF0aWMgX19h dHRyaWJ1dGVfXygobm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSkKK2RiZXJyX3QKK3Jvd19p bnNfc2VjX2luZGV4X2VudHJ5X2xvdygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwl1 bGludAkJbW9kZSwJLyohPCBpbjogQlRSX01PRElGWV9MRUFGIG9yIEJUUl9NT0RJRllfVFJFRSwK KwkJCQlkZXBlbmRpbmcgb24gd2hldGhlciB3ZSB3aXNoIG9wdGltaXN0aWMgb3IKKwkJCQlwZXNz aW1pc3RpYyBkZXNjZW50IGRvd24gdGhlIGluZGV4IHRyZWUgKi8KKwlkaWN0X2luZGV4X3QqCWlu ZGV4LAkvKiE8IGluOiBzZWNvbmRhcnkgaW5kZXggKi8KKwlkdHVwbGVfdCoJZW50cnksCS8qITwg aW4vb3V0OiBpbmRleCBlbnRyeSB0byBpbnNlcnQgKi8KKwlxdWVfdGhyX3QqCXRocikJLyohPCBp bjogcXVlcnkgdGhyZWFkICovCit7CisJYnRyX2N1cl90CWN1cnNvcjsKKwl1bGludAkJc2VhcmNo X21vZGU7CisJZGJlcnJfdAkJZXJyOworCXVsaW50CQluX3VuaXF1ZTsKKwltdHJfdAkJbXRyOwor CisJdXRfYWQoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKTsKKwl1dF9hZCghZGljdF9pbmRl eF9pc19vbmxpbmVfZGRsKGluZGV4KSk7CisKKwlsb2dfZnJlZV9jaGVjaygpOworCisJbXRyX3N0 YXJ0KCZtdHIpOworCisJY3Vyc29yLnRociA9IHRocjsKKworCS8qIE5vdGUgdGhhdCB3ZSB1c2Ug UEFHRV9DVVJfTEUgYXMgdGhlIHNlYXJjaCBtb2RlLCBiZWNhdXNlIHRoZW4KKwl0aGUgZnVuY3Rp b24gd2lsbCByZXR1cm4gaW4gYm90aCBsb3dfbWF0Y2ggYW5kIHVwX21hdGNoIG9mIHRoZQorCWN1 cnNvciBzZW5zaWJsZSB2YWx1ZXMgKi8KKworCWlmICghdGhyX2dldF90cngodGhyKS0+Y2hlY2tf dW5pcXVlX3NlY29uZGFyeSkgeworCQlzZWFyY2hfbW9kZSA9IG1vZGUgfCBCVFJfSU5TRVJUIHwg QlRSX0lHTk9SRV9TRUNfVU5JUVVFOworCX0gZWxzZSB7CisJCXNlYXJjaF9tb2RlID0gbW9kZSB8 IEJUUl9JTlNFUlQ7CisJfQorCisJYnRyX2N1cl9zZWFyY2hfdG9fbnRoX2xldmVsKGluZGV4LCAw LCBlbnRyeSwgUEFHRV9DVVJfTEUsCisJCQkJICAgIHNlYXJjaF9tb2RlLAorCQkJCSAgICAmY3Vy c29yLCAwLCBfX0ZJTEVfXywgX19MSU5FX18sICZtdHIpOworCisJaWYgKGN1cnNvci5mbGFnID09 IEJUUl9DVVJfSU5TRVJUX1RPX0lCVUYpIHsKKwkJLyogVGhlIGluc2VydCB3YXMgYnVmZmVyZWQg ZHVyaW5nIHRoZSBzZWFyY2g6IHdlIGFyZSBkb25lICovCisKKwkJZXJyID0gREJfU1VDQ0VTUzsK KworCQlnb3RvIGZ1bmN0aW9uX2V4aXQ7CisJfQorCisjaWZkZWYgVU5JVl9ERUJVRworCXsKKwkJ cGFnZV90KglwYWdlID0gYnRyX2N1cl9nZXRfcGFnZSgmY3Vyc29yKTsKKwkJcmVjX3QqCWZpcnN0 X3JlYyA9IHBhZ2VfcmVjX2dldF9uZXh0KAorCQkJcGFnZV9nZXRfaW5maW11bV9yZWMocGFnZSkp OworCisJCXV0X2FkKHBhZ2VfcmVjX2lzX3N1cHJlbXVtKGZpcnN0X3JlYykKKwkJICAgICAgfHwg cmVjX2dldF9uX2ZpZWxkcyhmaXJzdF9yZWMsIGluZGV4KQorCQkgICAgICA9PSBkdHVwbGVfZ2V0 X25fZmllbGRzKGVudHJ5KSk7CisJfQorI2VuZGlmCisKKwluX3VuaXF1ZSA9IGRpY3RfaW5kZXhf Z2V0X25fdW5pcXVlKGluZGV4KTsKKworCWlmIChkaWN0X2luZGV4X2lzX3VuaXF1ZShpbmRleCkg JiYgKGN1cnNvci51cF9tYXRjaCA+PSBuX3VuaXF1ZQorCQkJCQkgICAgfHwgY3Vyc29yLmxvd19t YXRjaCA+PSBuX3VuaXF1ZSkpIHsKKworCQltdHJfY29tbWl0KCZtdHIpOworCQllcnIgPSByb3df aW5zX3NjYW5fc2VjX2luZGV4X2Zvcl9kdXBsaWNhdGUoaW5kZXgsIGVudHJ5LCB0aHIpOworCQlt dHJfc3RhcnQoJm10cik7CisKKwkJaWYgKGVyciAhPSBEQl9TVUNDRVNTKSB7CisJCQlnb3RvIGZ1 bmN0aW9uX2V4aXQ7CiAJCX0KKworCQkvKiBXZSBkaWQgbm90IGZpbmQgYSBkdXBsaWNhdGUgYW5k IHdlIGhhdmUgbm93CisJCWxvY2tlZCB3aXRoIHMtbG9ja3MgdGhlIG5lY2Vzc2FyeSByZWNvcmRz IHRvCisJCXByZXZlbnQgYW55IGluc2VydGlvbiBvZiBhIGR1cGxpY2F0ZSBieSBhbm90aGVyCisJ CXRyYW5zYWN0aW9uLiBMZXQgdXMgbm93IHJlcG9zaXRpb24gdGhlIGN1cnNvciBhbmQKKwkJY29u dGludWUgdGhlIGluc2VydGlvbi4gKi8KKworCQlidHJfY3VyX3NlYXJjaF90b19udGhfbGV2ZWwo aW5kZXgsIDAsIGVudHJ5LAorCQkJCQkgICAgUEFHRV9DVVJfTEUsCisJCQkJCSAgICBtb2RlIHwg QlRSX0lOU0VSVCwKKwkJCQkJICAgICZjdXJzb3IsIDAsCisJCQkJCSAgICBfX0ZJTEVfXywgX19M SU5FX18sICZtdHIpOwogCX0KIAotCWlmIChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7Ci0JCW1l bV9oZWFwX2ZyZWUoaGVhcCk7CisJaWYgKHJvd19pbnNfbXVzdF9tb2RpZnlfcmVjKCZjdXJzb3Ip KSB7CisJCS8qIFRoZXJlIGlzIGFscmVhZHkgYW4gaW5kZXggZW50cnkgd2l0aCBhIGxvbmcgZW5v dWdoIGNvbW1vbgorCQlwcmVmaXgsIHdlIG11c3QgY29udmVydCB0aGUgaW5zZXJ0IGludG8gYSBt b2RpZnkgb2YgYW4KKwkJZXhpc3RpbmcgcmVjb3JkICovCisKKwkJZXJyID0gcm93X2luc19zZWNf aW5kZXhfZW50cnlfYnlfbW9kaWZ5KAorCQkJbW9kZSwgJmN1cnNvciwgZW50cnksIHRociwgJm10 cik7CisJfSBlbHNlIHsKKwkJcmVjX3QqCQlpbnNlcnRfcmVjOworCQliaWdfcmVjX3QqCWJpZ19y ZWM7CisKKwkJaWYgKG1vZGUgPT0gQlRSX01PRElGWV9MRUFGKSB7CisJCQllcnIgPSBidHJfY3Vy X29wdGltaXN0aWNfaW5zZXJ0KAorCQkJCTAsICZjdXJzb3IsIGVudHJ5LCAmaW5zZXJ0X3JlYywK KwkJCQkmYmlnX3JlYywgMCwgdGhyLCAmbXRyKTsKKwkJfSBlbHNlIHsKKwkJCXV0X2FkKG1vZGUg PT0gQlRSX01PRElGWV9UUkVFKTsKKwkJCWlmIChidWZfTFJVX2J1Zl9wb29sX3J1bm5pbmdfb3V0 KCkpIHsKKworCQkJCWVyciA9IERCX0xPQ0tfVEFCTEVfRlVMTDsKKwkJCX0gZWxzZSB7CisJCQkJ ZXJyID0gYnRyX2N1cl9wZXNzaW1pc3RpY19pbnNlcnQoCisJCQkJCTAsICZjdXJzb3IsIGVudHJ5 LCAmaW5zZXJ0X3JlYywKKwkJCQkJJmJpZ19yZWMsIDAsIHRociwgJm10cik7CisJCQl9CisJCX0K KworCQl1dF9hZCghYmlnX3JlYyk7CiAJfQorCitmdW5jdGlvbl9leGl0OgorCW10cl9jb21taXQo Jm10cik7CiAJcmV0dXJuKGVycik7CiB9CiAKQEAgLTI0MDcsMjggKzI0NzksNjMgQEAgcm93X2lu c19pbmRleF9lbnRyeV9iaWdfcmVjX2Z1bmMoCiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCi1JbnNlcnRzIGFu IGluZGV4IGVudHJ5IHRvIGluZGV4LiBUcmllcyBmaXJzdCBvcHRpbWlzdGljLCB0aGVuIHBlc3Np bWlzdGljCi1kZXNjZW50IGRvd24gdGhlIHRyZWUuIElmIHRoZSBlbnRyeSBtYXRjaGVzIGVub3Vn aCB0byBhIGRlbGV0ZSBtYXJrZWQgcmVjb3JkLAotcGVyZm9ybXMgdGhlIGluc2VydCBieSB1cGRh dGluZyBvciBkZWxldGUgdW5tYXJraW5nIHRoZSBkZWxldGUgbWFya2VkCi1yZWNvcmQuCitJbnNl cnRzIGFuIGVudHJ5IGludG8gYSBjbHVzdGVyZWQgaW5kZXguIFRyaWVzIGZpcnN0IG9wdGltaXN0 aWMsCit0aGVuIHBlc3NpbWlzdGljIGRlc2NlbnQgZG93biB0aGUgdHJlZS4gSWYgdGhlIGVudHJ5 IG1hdGNoZXMgZW5vdWdoCit0byBhIGRlbGV0ZSBtYXJrZWQgcmVjb3JkLCBwZXJmb3JtcyB0aGUg aW5zZXJ0IGJ5IHVwZGF0aW5nIG9yIGRlbGV0ZQordW5tYXJraW5nIHRoZSBkZWxldGUgbWFya2Vk IHJlY29yZC4KIEByZXR1cm4JREJfU1VDQ0VTUywgREJfTE9DS19XQUlULCBEQl9EVVBMSUNBVEVf S0VZLCBvciBzb21lIG90aGVyIGVycm9yIGNvZGUgKi8KIFVOSVZfSU5URVJOCiBkYmVycl90Ci1y b3dfaW5zX2luZGV4X2VudHJ5KAotLyo9PT09PT09PT09PT09PT09Ki8KLQlkaWN0X2luZGV4X3Qq CWluZGV4LAkvKiE8IGluOiBpbmRleCAqLworcm93X2luc19jbHVzdF9pbmRleF9lbnRyeSgKKy8q PT09PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjog Y2x1c3RlcmVkIGluZGV4ICovCiAJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluL291dDogaW5kZXgg ZW50cnkgdG8gaW5zZXJ0ICovCi0JdWxpbnQJCW5fZXh0LAkvKiE8IGluOiBudW1iZXIgb2YgZXh0 ZXJuYWxseSBzdG9yZWQgY29sdW1ucyAqLwotCWlib29sCQlmb3JlaWduLC8qITwgaW46IFRSVUU9 Y2hlY2sgZm9yZWlnbiBrZXkgY29uc3RyYWludHMKLQkJCQkoZm9yZWlnbj1GQUxTRSBvbmx5IGR1 cmluZyBDUkVBVEUgSU5ERVgpICovCi0JcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRo cmVhZCAqLworCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSB0aHJlYWQgKi8KKwl1bGlu dAkJbl9leHQpCS8qITwgaW46IG51bWJlciBvZiBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zICov CiB7CiAJZGJlcnJfdAllcnI7CiAKLQkvKiBPbmx5IGNsdXN0ZXJlZCBpbmRleGVzIG1heSBjb250 YWluIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbnMuICovCi0JdXRfYWQoZGljdF9pbmRleF9pc19j bHVzdChpbmRleCkgfHwgIW5fZXh0KTsKKwlpZiAoVVRfTElTVF9HRVRfRklSU1QoaW5kZXgtPnRh YmxlLT5mb3JlaWduX2xpc3QpKSB7CisJCWVyciA9IHJvd19pbnNfY2hlY2tfZm9yZWlnbl9jb25z dHJhaW50cygKKwkJCWluZGV4LT50YWJsZSwgaW5kZXgsIGVudHJ5LCB0aHIpOworCQlpZiAoZXJy ICE9IERCX1NVQ0NFU1MpIHsKKworCQkJcmV0dXJuKGVycik7CisJCX0KKwl9CisKKwkvKiBUcnkg Zmlyc3Qgb3B0aW1pc3RpYyBkZXNjZW50IHRvIHRoZSBCLXRyZWUgKi8KKworCWVyciA9IHJvd19p bnNfY2x1c3RfaW5kZXhfZW50cnlfbG93KEJUUl9NT0RJRllfTEVBRiwgaW5kZXgsIGVudHJ5LAor CQkJCQkgICAgbl9leHQsIHRocik7CisJaWYgKGVyciAhPSBEQl9GQUlMKSB7CisKKwkJcmV0dXJu KGVycik7CisJfQogCi0JaWYgKGZvcmVpZ24gJiYgVVRfTElTVF9HRVRfRklSU1QoaW5kZXgtPnRh YmxlLT5mb3JlaWduX2xpc3QpKSB7CisJLyogVHJ5IHRoZW4gcGVzc2ltaXN0aWMgZGVzY2VudCB0 byB0aGUgQi10cmVlICovCisKKwlyZXR1cm4ocm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9sb3co QlRSX01PRElGWV9UUkVFLCBpbmRleCwgZW50cnksCisJCQkJCSAgICAgbl9leHQsIHRocikpOwor fQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgorSW5zZXJ0cyBhbiBlbnRyeSBpbnRvIGEgc2Vjb25kYXJ5IGluZGV4 LiBUcmllcyBmaXJzdCBvcHRpbWlzdGljLAordGhlbiBwZXNzaW1pc3RpYyBkZXNjZW50IGRvd24g dGhlIHRyZWUuIElmIHRoZSBlbnRyeSBtYXRjaGVzIGVub3VnaAordG8gYSBkZWxldGUgbWFya2Vk IHJlY29yZCwgcGVyZm9ybXMgdGhlIGluc2VydCBieSB1cGRhdGluZyBvciBkZWxldGUKK3VubWFy a2luZyB0aGUgZGVsZXRlIG1hcmtlZCByZWNvcmQuCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xP Q0tfV0FJVCwgREJfRFVQTElDQVRFX0tFWSwgb3Igc29tZSBvdGhlciBlcnJvciBjb2RlICovCitV TklWX0lOVEVSTgorZGJlcnJfdAorcm93X2luc19zZWNfaW5kZXhfZW50cnkoCisvKj09PT09PT09 PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluOiBzZWNvbmRhcnkg aW5kZXggKi8KKwlkdHVwbGVfdCoJZW50cnksCS8qITwgaW4vb3V0OiBpbmRleCBlbnRyeSB0byBp bnNlcnQgKi8KKwlxdWVfdGhyX3QqCXRocikJLyohPCBpbjogcXVlcnkgdGhyZWFkICovCit7CisJ ZGJlcnJfdAllcnI7CisKKwlpZiAoVVRfTElTVF9HRVRfRklSU1QoaW5kZXgtPnRhYmxlLT5mb3Jl aWduX2xpc3QpKSB7CiAJCWVyciA9IHJvd19pbnNfY2hlY2tfZm9yZWlnbl9jb25zdHJhaW50cyhp bmRleC0+dGFibGUsIGluZGV4LAogCQkJCQkJCWVudHJ5LCB0aHIpOwogCQlpZiAoZXJyICE9IERC X1NVQ0NFU1MpIHsKQEAgLTI0MzksMTQgKzI1NDYsMTIgQEAgcm93X2luc19pbmRleF9lbnRyeSgK IAogCWlmIChkaWN0X2luZGV4X29ubGluZV90cnlsb2coaW5kZXgsIGVudHJ5LCB0aHJfZ2V0X3Ry eCh0aHIpLT5pZCwKIAkJCQkgICAgIFJPV19PUF9JTlNFUlQpKSB7Ci0KIAkJcmV0dXJuKERCX1NV Q0NFU1MpOwogCX0KIAogCS8qIFRyeSBmaXJzdCBvcHRpbWlzdGljIGRlc2NlbnQgdG8gdGhlIEIt dHJlZSAqLwogCi0JZXJyID0gcm93X2luc19pbmRleF9lbnRyeV9sb3coQlRSX01PRElGWV9MRUFG LCBpbmRleCwgZW50cnksCi0JCQkJICAgICAgbl9leHQsIHRocik7CisJZXJyID0gcm93X2luc19z ZWNfaW5kZXhfZW50cnlfbG93KEJUUl9NT0RJRllfTEVBRiwgaW5kZXgsIGVudHJ5LCB0aHIpOwog CWlmIChlcnIgIT0gREJfRkFJTCkgewogCiAJCXJldHVybihlcnIpOwpAQCAtMjQ1NCw5ICsyNTU5 LDI5IEBAIHJvd19pbnNfaW5kZXhfZW50cnkoCiAKIAkvKiBUcnkgdGhlbiBwZXNzaW1pc3RpYyBk ZXNjZW50IHRvIHRoZSBCLXRyZWUgKi8KIAotCWVyciA9IHJvd19pbnNfaW5kZXhfZW50cnlfbG93 KEJUUl9NT0RJRllfVFJFRSwgaW5kZXgsIGVudHJ5LAotCQkJCSAgICAgIG5fZXh0LCB0aHIpOwot CXJldHVybihlcnIpOworCXJldHVybihyb3dfaW5zX3NlY19pbmRleF9lbnRyeV9sb3coCisJCSAg ICAgICBCVFJfTU9ESUZZX1RSRUUsIGluZGV4LCBlbnRyeSwgdGhyKSk7Cit9CisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitJbnNlcnRzIGFuIGluZGV4IGVudHJ5IHRvIGluZGV4LiBUcmllcyBmaXJzdCBvcHRpbWlz dGljLCB0aGVuIHBlc3NpbWlzdGljCitkZXNjZW50IGRvd24gdGhlIHRyZWUuIElmIHRoZSBlbnRy eSBtYXRjaGVzIGVub3VnaCB0byBhIGRlbGV0ZSBtYXJrZWQgcmVjb3JkLAorcGVyZm9ybXMgdGhl IGluc2VydCBieSB1cGRhdGluZyBvciBkZWxldGUgdW5tYXJraW5nIHRoZSBkZWxldGUgbWFya2Vk CityZWNvcmQuCitAcmV0dXJuCURCX1NVQ0NFU1MsIERCX0xPQ0tfV0FJVCwgREJfRFVQTElDQVRF X0tFWSwgb3Igc29tZSBvdGhlciBlcnJvciBjb2RlICovCitzdGF0aWMKK2RiZXJyX3QKK3Jvd19p bnNfaW5kZXhfZW50cnkoCisvKj09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5k ZXgsCS8qITwgaW46IGluZGV4ICovCisJZHR1cGxlX3QqCWVudHJ5LAkvKiE8IGluL291dDogaW5k ZXggZW50cnkgdG8gaW5zZXJ0ICovCisJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRo cmVhZCAqLworeworCWlmIChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgeworCQlyZXR1cm4o cm93X2luc19jbHVzdF9pbmRleF9lbnRyeShpbmRleCwgZW50cnksIHRociwgMCkpOworCX0gZWxz ZSB7CisJCXJldHVybihyb3dfaW5zX3NlY19pbmRleF9lbnRyeShpbmRleCwgZW50cnksIHRocikp OworCX0KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLy8qKgpAQCAtMjUzMyw3ICsyNjU4LDcgQEAgcm93X2luc19pbmRleF9l bnRyeV9zdGVwKAogCiAJdXRfYWQoZHR1cGxlX2NoZWNrX3R5cGVkKG5vZGUtPmVudHJ5KSk7CiAK LQllcnIgPSByb3dfaW5zX2luZGV4X2VudHJ5KG5vZGUtPmluZGV4LCBub2RlLT5lbnRyeSwgMCwg VFJVRSwgdGhyKTsKKwllcnIgPSByb3dfaW5zX2luZGV4X2VudHJ5KG5vZGUtPmluZGV4LCBub2Rl LT5lbnRyeSwgdGhyKTsKIAogCXJldHVybihlcnIpOwogfQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzB1cGQuY2MJcmV2aWQ6am9yZ2VuLmxvbGFuZEBvcmFjbGUuY29tLTIwMTIwNTE0MDkzMDU4 LTR2ZDRnYzFpb3NoMm42YmEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDUxNTA3MTkzMi01aDAxZWU2cGVtdDZr enJuCkBAIC0xNzM0LDcgKzE3MzQsNyBAQCByb3dfdXBkX3NlY19pbmRleF9lbnRyeSgKIAljYXNl IFJPV19GT1VORDoKIAkJLyogRGVsZXRlIG1hcmsgdGhlIG9sZCBpbmRleCByZWNvcmQ7IGl0IGNh biBhbHJlYWR5IGJlCiAJCWRlbGV0ZSBtYXJrZWQgaWYgd2UgcmV0dXJuIGFmdGVyIGEgbG9jayB3 YWl0IGluCi0JCXJvd19pbnNfaW5kZXhfZW50cnkgYmVsb3cgKi8KKwkJcm93X2luc19zZWNfaW5k ZXhfZW50cnkoKSBiZWxvdyAqLwogCiAJCWlmICghcmVjX2dldF9kZWxldGVkX2ZsYWcoCiAJCQly ZWMsIGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFibGUpKSkgewpAQCAtMTc3NCw3ICsxNzc0 LDcgQEAgcm93X3VwZF9zZWNfaW5kZXhfZW50cnkoCiAJdXRfYShlbnRyeSk7CiAKIAkvKiBJbnNl cnQgbmV3IGluZGV4IGVudHJ5ICovCi0JZXJyID0gcm93X2luc19pbmRleF9lbnRyeShpbmRleCwg ZW50cnksIDAsIFRSVUUsIHRocik7CisJZXJyID0gcm93X2luc19zZWNfaW5kZXhfZW50cnkoaW5k ZXgsIGVudHJ5LCB0aHIpOwogCiBmdW5jX2V4aXQ6CiAJbWVtX2hlYXBfZnJlZShoZWFwKTsKQEAg LTIwMDUsNyArMjAwNSw3IEBAIHJvd191cGRfY2x1c3RfcmVjX2J5X2luc2VydCgKIAlkZWZhdWx0 OgogCQl1dF9lcnJvcjsKIAljYXNlIFVQRF9OT0RFX0lOU0VSVF9CTE9COgotCQkvKiBBIGxvY2sg d2FpdCBvY2N1cnJlZCBpbiByb3dfaW5zX2luZGV4X2VudHJ5KCkgaW4KKwkJLyogQSBsb2NrIHdh aXQgb2NjdXJyZWQgaW4gcm93X2luc19jbHVzdF9pbmRleF9lbnRyeSgpIGluCiAJCXRoZSBwcmV2 aW91cyBpbnZvY2F0aW9uIG9mIHRoaXMgZnVuY3Rpb24uIE1hcmsgdGhlCiAJCW9mZi1wYWdlIGNv bHVtbnMgaW4gdGhlIGVudHJ5IGluaGVyaXRlZC4gKi8KIApAQCAtMjAxNCw3ICsyMDE0LDcgQEAg cm93X3VwZF9jbHVzdF9yZWNfYnlfaW5zZXJ0KAogCQl1dF9hKGNoYW5nZV9vd25lcnNoaXApOwog CQkvKiBmYWxsIHRocm91Z2ggKi8KIAljYXNlIFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQ6Ci0J CS8qIEEgbG9jayB3YWl0IG9jY3VycmVkIGluIHJvd19pbnNfaW5kZXhfZW50cnkoKSBpbgorCQkv KiBBIGxvY2sgd2FpdCBvY2N1cnJlZCBpbiByb3dfaW5zX2NsdXN0X2luZGV4X2VudHJ5KCkgaW4K IAkJdGhlIHByZXZpb3VzIGludm9jYXRpb24gb2YgdGhpcyBmdW5jdGlvbi4gKi8KIAkJYnJlYWs7 CiAJY2FzZSBVUERfTk9ERV9VUERBVEVfQ0xVU1RFUkVEOgpAQCAtMjA2NSw5ICsyMDY1LDkgQEAg ZXJyX2V4aXQ6CiAKIAltdHJfY29tbWl0KG10cik7CiAKLQllcnIgPSByb3dfaW5zX2luZGV4X2Vu dHJ5KGluZGV4LCBlbnRyeSwKLQkJCQkgIG5vZGUtPnVwZF9leHQgPyBub2RlLT51cGRfZXh0LT5u X2V4dCA6IDAsCi0JCQkJICBUUlVFLCB0aHIpOworCWVyciA9IHJvd19pbnNfY2x1c3RfaW5kZXhf ZW50cnkoCisJCWluZGV4LCBlbnRyeSwgdGhyLAorCQlub2RlLT51cGRfZXh0ID8gbm9kZS0+dXBk X2V4dC0+bl9leHQgOiAwKTsKIAlub2RlLT5zdGF0ZSA9IGNoYW5nZV9vd25lcnNoaXAKIAkJPyBV UERfTk9ERV9JTlNFUlRfQkxPQgogCQk6IFVQRF9OT0RFX0lOU0VSVF9DTFVTVEVSRUQ7CgpObyBi dW5kbGUgKHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==