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: Mattias Ellert To: git-commits@fedoraproject.org Subject: [rpms/globus-gsi-callback] rawhide: Compile with OpenSSL 4 Date: Sun, 14 Jun 2026 08:48:21 GMT Message-ID: <178142690113.1.6248890401068388488.rpms-globus-gsi-callback-2d0e375c70a8@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-gsi-callback X-Git-Branch: rawhide X-Git-Rev: 2d0e375c70a8ff993b94dd7c98ba7136461d4772 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2xvYnVzLWdzaS1jYWxsYmFjawogICAgICAgICAgICBCcmFuY2ggOiByYXdo aWRlCiAgICAgICAgICAgIENvbW1pdCA6IDJkMGUzNzVjNzBhOGZmOTkzYjk0ZGQ3Yzk4YmE3MTM2 NDYxZDQ3NzIKICAgICAgICAgICAgQXV0aG9yIDogTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxs ZXJ0QHBoeXNpY3MudXUuc2U+CiAgICAgICAgICAgIERhdGUgICA6IDIwMjYtMDYtMTRUMTA6Mzk6 MTMrMDI6MDAKICAgICAgICAgICAgU3RhdHMgIDogKzQwMTUvLTEgaW4gNCBmaWxlKHMpCiAgICAg ICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2xvYnVz LWdzaS1jYWxsYmFjay9jLzJkMGUzNzVjNzBhOGZmOTkzYjk0ZGQ3Yzk4YmE3MTM2NDYxZDQ3NzI/ YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoKICAgICAgICAgICAgQ29tcGlsZSB3aXRo IE9wZW5TU0wgNApGaXggY29tcGlsZXIgd2FybmluZ3MKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1V bnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5nLXdoaXRlLXNwYWNlLnBhdGNoIGIvMDAwMS1VbnRh YmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5nLXdoaXRlLXNwYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmNDhjYmQKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAxLVVu dGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUtc3BhY2UucGF0Y2gKQEAgLTAsMCArMSwz NDY2IEBACitGcm9tIDNjY2RhYTAyMzYyMzBiYmNiY2JmMzM5ZTdkZmRmYWYyM2MxMGJkNmYgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxl cnRAcGh5c2ljcy51dS5zZT4KK0RhdGU6IFdlZCwgMjAgTWF5IDIwMjYgMDA6MTU6MzcgKzAyMDAK K1N1YmplY3Q6IFtQQVRDSCAxLzNdIFVudGFiaWZ5IGFuZCByZW1vdmUgdHJhaWxpbmcgd2hpdGUt c3BhY2UKKworLS0tCisgLi4uL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nc2lfY2FsbGJhY2suYyAg ICAgIHwgMzU2ICsrKysrLS0tLS0KKyAuLi4vc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dzaV9jYWxs YmFjay5oICAgICAgfCAgMTQgKy0KKyAuLi4vbGlicmFyeS9vbGRnYWEvZ2xvYnVzX29sZGdhYV91 dGlscy5jICAgICAgfCA1NTggKysrKysrKy0tLS0tLS0tCisgLi4uL3NvdXJjZS9saWJyYXJ5L29s ZGdhYS9vbGRnYWFfcmVsZWFzZS5jICAgIHwgNjYyICsrKysrKysrKy0tLS0tLS0tLQorIDQgZmls ZXMgY2hhbmdlZCwgNzk1IGluc2VydGlvbnMoKyksIDc5NSBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmMg Yi9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dzaV9jYWxsYmFjay5jCitpbmRl eCBlZjAzZjkzNDAuLmE2NTEwNTgzMCAxMDA2NDQKKy0tLSBhL2dzaS9jYWxsYmFjay9zb3VyY2Uv bGlicmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmMKKysrKyBiL2dzaS9jYWxsYmFjay9zb3VyY2Uv bGlicmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmMKK0BAIC04OSwxMSArODksMTEgQEAgc3RhdGlj IGludCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfWDUwOV9TVE9SRV9jYWxsYmFja19kYXRhX2luZGV4 ID0gLTE7CisgCisgc3RhdGljIGludAorIGdsb2J1c19sX2dzaV9jYWxsYmFja19vcGVuc3NsX25l dygKKy0gICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LCAKKy0g ICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyLCAKKysgICAgdm9pZCAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LAorKyAgICB2b2lkICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwdHIsCisgICAgIENSWVBUT19FWF9EQVRBICogICAgICAg ICAgICAgICAgICAgIGFkLAorLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZHgsIAorLSAgICBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdsLCAK KysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4LAorKyAgICBsb25n ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdsLAorICAgICB2b2lkICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcmdwKQorIHsKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKK0BAIC0xMDUsMTggKzEwNSwxOCBAQCBnbG9i dXNfbF9nc2lfY2FsbGJhY2tfb3BlbnNzbF9uZXcoCisgICAgICAqIHNpbmNlIHdlIGNhbid0IGFs bG9jYXRlIHRoZSBwdHIgaGVyZQorICAgICAgKiB0aGlzIGZ1bmN0aW9uIGlzbid0IHBhcnRpY3Vs YXJseSB1c2VmdWwKKyAgICAgICovCistICAgIAorKworICAgICBHTE9CVVNfSV9HU0lfQ0FMTEJB Q0tfREVCVUdfRVhJVDsKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisgc3RhdGljIGludAor IGdsb2J1c19sX2dzaV9jYWxsYmFja19vcGVuc3NsX2ZyZWUoCistICAgIHZvaWQgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCwgCistICAgIHZvaWQgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHB0ciwgCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhcmVudCwKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHRyLAorICAgICBDUllQVE9fRVhfREFUQSAqICAgICAgICAgICAgICAgICAgICBhZCwKKy0gICAg aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4LCAKKy0gICAgbG9uZyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnbCwgCisrICAgIGludCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlkeCwKKysgICAgbG9uZyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXJnbCwKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXJncCkKKyB7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCA9IDE7CitAQCAtMTMzLDE3ICsxMzMsMTcgQEAgZ2xvYnVzX2xfZ3NpX2NhbGxiYWNrX29wZW5z c2xfZnJlZSgKKyAKKyBzdGF0aWMgaW50CisgZ2xvYnVzX2xfZ3NpX2NhbGxiYWNrX29wZW5zc2xf ZHVwKAorLSAgICBDUllQVE9fRVhfREFUQSAqICAgICAgICAgICAgICAgICAgICB0bywgCistICAg IENSWVBUT19FWF9EQVRBICogICAgICAgICAgICAgICAgICAgIGZyb20sIAorLSAgICB2b2lkICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX2QsICAgICAgICAgICAgICAgICAgIAor LSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHgsIAorLSAgICBsb25n ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdsLCAKKysgICAgQ1JZUFRPX0VYX0RB VEEgKiAgICAgICAgICAgICAgICAgICAgdG8sCisrICAgIENSWVBUT19FWF9EQVRBICogICAgICAg ICAgICAgICAgICAgIGZyb20sCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZyb21fZCwKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4 LAorKyAgICBsb25nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdsLAorICAgICB2 b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdwKQorIHsKKyAgICAgaW50ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgc3RhdGljIGNo YXIgKiAgICAgICAgICAgICAgICAgICAgICAgX2Z1bmN0aW9uX25hbWVfID0KKyAgICAgICAgICJn bG9idXNfZ3NpX2NhbGxiYWNrX29wZW5zc2xfZHVwIjsKKy0gICAgCisrCisgICAgIEdMT0JVU19J X0dTSV9DQUxMQkFDS19ERUJVR19FTlRFUjsKKyAKKyAgICAgLyogY29weSB0aGUgY2FsbGJhY2sg ZGF0YSAtIGN1cnJlbmx0eSBub3QgdXNlZCBieSBPcGVuU1NMICovCitAQCAtMTY4LDcgKzE2OCw3 IEBAIGdsb2J1c19sX2dzaV9jYWxsYmFja19hY3RpdmF0ZSh2b2lkKQorICAgICBpZih0bXBfc3Ry aW5nICE9IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICBnbG9idXNfaV9nc2lfY2FsbGJh Y2tfZGVidWdfbGV2ZWwgPSBhdG9pKHRtcF9zdHJpbmcpOworLSAgICAgICAgCisrCisgICAgICAg ICBpZihnbG9idXNfaV9nc2lfY2FsbGJhY2tfZGVidWdfbGV2ZWwgPCAwKQorICAgICAgICAgewor ICAgICAgICAgICAgIGdsb2J1c19pX2dzaV9jYWxsYmFja19kZWJ1Z19sZXZlbCA9IDA7CitAQCAt MTk4LDcgKzE5OCw3IEBAIGdsb2J1c19sX2dzaV9jYWxsYmFja19hY3RpdmF0ZSh2b2lkKQorICAg ICB7CisgICAgICAgICBnb3RvIGV4aXQ7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJlc3VsdCA9 IGdsb2J1c19tb2R1bGVfYWN0aXZhdGUoR0xPQlVTX0dTSV9TWVNDT05GSUdfTU9EVUxFKTsKKyAK KyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTIxNSwxNCArMjE1LDE0IEBA IGdsb2J1c19sX2dzaV9jYWxsYmFja19hY3RpdmF0ZSh2b2lkKQorIAorICAgICBnbG9idXNfbXV0 ZXhfaW5pdCgmZ2xvYnVzX2xfZ3NpX2NhbGxiYWNrX29sZGdhYV9tdXRleCwgTlVMTCk7CisgICAg IGdsb2J1c19tdXRleF9pbml0KCZnbG9idXNfbF9nc2lfY2FsbGJhY2tfdmVyaWZ5X211dGV4LCBO VUxMKTsKKy0gICAgCisrCisgICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CisgCisg ICAgIGlmKGdsb2J1c19pX2dzaV9jYWxsYmFja19YNTA5X1NUT1JFX2NhbGxiYWNrX2RhdGFfaW5k ZXggPCAwKQorICAgICB7CistICAgICAgICBnbG9idXNfaV9nc2lfY2FsbGJhY2tfWDUwOV9TVE9S RV9jYWxsYmFja19kYXRhX2luZGV4ID0gCisrICAgICAgICBnbG9idXNfaV9nc2lfY2FsbGJhY2tf WDUwOV9TVE9SRV9jYWxsYmFja19kYXRhX2luZGV4ID0KKyAgICAgICAgICAgICBYNTA5X1NUT1JF X0NUWF9nZXRfZXhfbmV3X2luZGV4KAorLSAgICAgICAgICAgICAgICAwLCBOVUxMLCAKKysgICAg ICAgICAgICAgICAgMCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgKENSWVBUT19FWF9uZXcgKikg ICZnbG9idXNfbF9nc2lfY2FsbGJhY2tfb3BlbnNzbF9uZXcsCisgICAgICAgICAgICAgICAgIChD UllQVE9fRVhfZHVwICopICAmZ2xvYnVzX2xfZ3NpX2NhbGxiYWNrX29wZW5zc2xfZHVwLAorICAg ICAgICAgICAgICAgICAoQ1JZUFRPX0VYX2ZyZWUgKikgJmdsb2J1c19sX2dzaV9jYWxsYmFja19v cGVuc3NsX2ZyZWUpOworQEAgLTIzOSw3ICsyMzksNyBAQCBnbG9idXNfbF9nc2lfY2FsbGJhY2tf YWN0aXZhdGUodm9pZCkKKyAgICAgaWYoZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX1NTTF9jYWxsYmFj a19kYXRhX2luZGV4IDwgMCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNr X1NTTF9jYWxsYmFja19kYXRhX2luZGV4ID0gU1NMX2dldF9leF9uZXdfaW5kZXgoCistICAgICAg ICAgICAgMCwgTlVMTCwgCisrICAgICAgICAgICAgMCwgTlVMTCwKKyAgICAgICAgICAgICAoQ1JZ UFRPX0VYX25ldyAqKSAgJmdsb2J1c19sX2dzaV9jYWxsYmFja19vcGVuc3NsX25ldywKKyAgICAg ICAgICAgICAoQ1JZUFRPX0VYX2R1cCAqKSAgJmdsb2J1c19sX2dzaV9jYWxsYmFja19vcGVuc3Ns X2R1cCwKKyAgICAgICAgICAgICAoQ1JZUFRPX0VYX2ZyZWUgKikgJmdsb2J1c19sX2dzaV9jYWxs YmFja19vcGVuc3NsX2ZyZWUpOworQEAgLTMwNCw3ICszMDQsNyBAQCBnbG9idXNfbF9nc2lfY2Fs bGJhY2tfZGVhY3RpdmF0ZSh2b2lkKQorICAqICAgICAgICBXaWxsIGNvbnRhaW4gdGhlIGluZGV4 IHVwb24gcmV0dXJuCisgICoKKyAgKiBAcmV0dXJuCistICogICAgICAgIEdMT0JVU19TVUNDRVNT IHVubGVzcyBhbiBlcnJvciBvY2N1cnJlZCwgaW4gd2hpY2ggY2FzZSwgCisrICogICAgICAgIEdM T0JVU19TVUNDRVNTIHVubGVzcyBhbiBlcnJvciBvY2N1cnJlZCwgaW4gd2hpY2ggY2FzZSwKKyAg KiAgICAgICAgYSBnbG9idXMgZXJyb3Igb2JqZWN0IElEIGlzIHJldHVybmVkCisgICovCisgZ2xv YnVzX3Jlc3VsdF90CitAQCAtMzE0LDcgKzMxNCw3IEBAIGdsb2J1c19nc2lfY2FsbGJhY2tfZ2V0 X1g1MDlfU1RPUkVfY2FsbGJhY2tfZGF0YV9pbmRleCgKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR0xPQlVTX1NVQ0NFU1M7CisgICAgIHN0YXRpYyBj aGFyICogICAgICAgICAgICAgICAgICAgICAgIF9mdW5jdGlvbl9uYW1lXyA9CisgICAgICAgICAi Z2xvYnVzX2dzaV9jYWxsYmFja19nZXRfWDUwOV9TVE9SRV9jYWxsYmFja19kYXRhX2luZGV4IjsK Ky0gICAgCisrCisgICAgIEdMT0JVU19JX0dTSV9DQUxMQkFDS19ERUJVR19FTlRFUjsKKyAKKyAg ICAgKmluZGV4ID0gZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX1g1MDlfU1RPUkVfY2FsbGJhY2tfZGF0 YV9pbmRleDsKK0BAIC0zMzQsNyArMzM0LDcgQEAgZ2xvYnVzX2dzaV9jYWxsYmFja19nZXRfWDUw OV9TVE9SRV9jYWxsYmFja19kYXRhX2luZGV4KAorICAqICAgICAgICBXaWxsIGNvbnRhaW4gdGhl IGluZGV4IHVwb24gcmV0dXJuCisgICoKKyAgKiBAcmV0dXJuCistICogICAgICAgIEdMT0JVU19T VUNDRVNTIHVubGVzcyBhbiBlcnJvciBvY2N1cnJlZCwgaW4gd2hpY2ggY2FzZSwgCisrICogICAg ICAgIEdMT0JVU19TVUNDRVNTIHVubGVzcyBhbiBlcnJvciBvY2N1cnJlZCwgaW4gd2hpY2ggY2Fz ZSwKKyAgKiAgICAgICAgYSBnbG9idXMgZXJyb3Igb2JqZWN0IElEIGlzIHJldHVybmVkCisgICov CisgZ2xvYnVzX3Jlc3VsdF90CitAQCAtMzQ0LDkgKzM0NCw5IEBAIGdsb2J1c19nc2lfY2FsbGJh Y2tfZ2V0X1NTTF9jYWxsYmFja19kYXRhX2luZGV4KAorICAgICBnbG9idXNfcmVzdWx0X3QgICAg ICAgICAgICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgc3RhdGljIGNo YXIgKiAgICAgICAgICAgICAgICAgICAgICAgX2Z1bmN0aW9uX25hbWVfID0KKyAgICAgICAgICJn bG9idXNfZ3NpX2NhbGxiYWNrX2dldF9TU0xfY2FsbGJhY2tfZGF0YV9pbmRleCI7CistICAgIAor KworICAgICBHTE9CVVNfSV9HU0lfQ0FMTEJBQ0tfREVCVUdfRU5URVI7CistICAgIAorKworIAor ICAgICAqaW5kZXggPSBnbG9idXNfaV9nc2lfY2FsbGJhY2tfU1NMX2NhbGxiYWNrX2RhdGFfaW5k ZXg7CisgCitAQCAtMzcwLDcgKzM3MCw3IEBAIGdsb2J1c19nc2lfY2FsbGJhY2tfZ2V0X1NTTF9j YWxsYmFja19kYXRhX2luZGV4KAorICAqICAgICAgICAxIG9uIHN1Y2Nlc3MKKyAgKiAgICAgICAg MCBvbiBmYWlsdXJlCisgICovCistaW50IAorK2ludAorIGdsb2J1c19nc2lfY2FsbGJhY2tfWDUw OV92ZXJpZnlfY2VydCgKKyAgICAgWDUwOV9TVE9SRV9DVFggKiAgICAgICAgICAgICAgICAgICAg Y29udGV4dCwKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKQor QEAgLTM5MSwxNSArMzkxLDE1IEBAIGdsb2J1c19nc2lfY2FsbGJhY2tfWDUwOV92ZXJpZnlfY2Vy dCgKKyAgICAgWDUwOV9TVE9SRV9zZXRfY2hlY2tfaXNzdWVkKFg1MDlfU1RPUkVfQ1RYX2dldDBf c3RvcmUoY29udGV4dCksIGdsb2J1c19nc2lfY2FsbGJhY2tfY2hlY2tfaXNzdWVkKTsKKyAjZW5k aWYKKyAgICAgLyoKKy0gICAgICogSWYgdGhpcyBpcyBub3Qgc2V0LCBPcGVuU1NMLTAuOS44IGFz c3VtZXMgdGhlIHByb3h5IGNlcnQgCisrICAgICAqIElmIHRoaXMgaXMgbm90IHNldCwgT3BlblNT TC0wLjkuOCBhc3N1bWVzIHRoZSBwcm94eSBjZXJ0CisgICAgICAqIGFzIGFuIEVFQyBhbmQgdGhl IG5leHQgbGV2ZWwgY2VydCBpbiB0aGUgY2hhaW4gYXMgYSBDQSBjZXJ0CisgICAgICAqIGFuZCB0 aHJvd3MgYW4gaW52YWxpZCBDQSBlcnJvci4gSWYgd2Ugc2V0IHRoaXMsIHRoZSBjYWxsYmFjawor LSAgICAgKiAoZ2xvYnVzX2dzaV9jYWxsYmFja19oYW5kc2hha2VfY2FsbGJhY2spIGdldHMgY2Fs bGVkIHdpdGggCistICAgICAqIHByZXZlcmlmeV9vayA9IDAgd2l0aCBhbiBlcnJvciAidW5oYW5k bGVkIGNyaXRpY2FsIGV4dGVuc2lvbiIgCisrICAgICAqIChnbG9idXNfZ3NpX2NhbGxiYWNrX2hh bmRzaGFrZV9jYWxsYmFjaykgZ2V0cyBjYWxsZWQgd2l0aAorKyAgICAgKiBwcmV2ZXJpZnlfb2sg PSAwIHdpdGggYW4gZXJyb3IgInVuaGFuZGxlZCBjcml0aWNhbCBleHRlbnNpb24iCisgICAgICAq IGFuZCAicGF0aCBsZW5ndGggZXhjZWVkZWQiLgorLSAgICAgKiBnbG9idXNfaV9nc2lfY2FsbGJh Y2tfY3JlZF92ZXJpZnkoKSBjYWxsZWQgYnkgCistICAgICAqIGdsb2J1c19nc2lfY2FsbGJhY2tf aGFuZHNoYWtlX2NhbGxiYWNrKCkgY2hlY2tzIGZvciB0aGVzZSAKKy0gICAgICogZXJyb3JzIGFu ZCByZXR1cm5zIHN1Y2Nlc3MuIGdsb2J1c19pX2dzaV9jYWxsYmFja19jcmVkX3ZlcmlmeSgpIAor KyAgICAgKiBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY3JlZF92ZXJpZnkoKSBjYWxsZWQgYnkKKysg ICAgICogZ2xvYnVzX2dzaV9jYWxsYmFja19oYW5kc2hha2VfY2FsbGJhY2soKSBjaGVja3MgZm9y IHRoZXNlCisrICAgICAqIGVycm9ycyBhbmQgcmV0dXJucyBzdWNjZXNzLiBnbG9idXNfaV9nc2lf Y2FsbGJhY2tfY3JlZF92ZXJpZnkoKQorICAgICAgKiB3aWxsIGNoZWNrIHRoZSBjcml0aWNhbCBl eHRlbnNpb24gbGF0ZXIuCisgICAgICAqLworICAgICAjaWYgZGVmaW5lZChYNTA5X1ZfRkxBR19B TExPV19QUk9YWV9DRVJUUykKK0BAIC00MjMsMTIgKzQyMywxMiBAQCBnbG9idXNfZ3NpX2NhbGxi YWNrX1g1MDlfdmVyaWZ5X2NlcnQoCisgICoKKyAgKiBAcGFyYW0gcHJldmVyaWZ5X29rCisgICog ICAgICAgIENvbW11bmljYXRlcyB0aGUgcmVzdWx0IG9mIGRlZmF1bHQgdmFsaWRhdGlvbiBzdGVw cyBwZXJmb3JtZWQgYnkKKy0gKiAgICAgICAgT3BlblNTTCAgCisrICogICAgICAgIE9wZW5TU0wK KyAgKiBAcGFyYW0geDUwOV9jb250ZXh0CisgICogICAgICAgIFRoZSB2YWxpZGF0aW9uIHN0YXRl IG9iamVjdAorICAqIEByZXR1cm4KKyAgKiAgICAgICAgMSBvbiBzdWNjZXNzCistICogICAgICAg IDAgb24gZmFpbHVyZSAKKysgKiAgICAgICAgMCBvbiBmYWlsdXJlCisgICovCisgaW50IGdsb2J1 c19nc2lfY2FsbGJhY2tfY3JlYXRlX3Byb3h5X2NhbGxiYWNrKAorICAgICBpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZXJpZnlfb2ssCitAQCAtNDM4LDcgKzQzOCw3IEBA IGludCBnbG9idXNfZ3NpX2NhbGxiYWNrX2NyZWF0ZV9wcm94eV9jYWxsYmFjaygKKyAgICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X3Jlc3VsdDsKKyAgICAgZ2xv YnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBnbG9idXNfZ3Np X2NhbGxiYWNrX2RhdGFfdCAgICAgICAgICBjYWxsYmFja19kYXRhOworLSAgICBzdGF0aWMgY2hh ciAqICAgICAgICAgICAgICAgICAgICAgICBfZnVuY3Rpb25fbmFtZV8gPSAKKysgICAgc3RhdGlj IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgX2Z1bmN0aW9uX25hbWVfID0KKyAgICAgICAg ICJnbG9idXNfaV9nc2lfY2FsbGJhY2tfY3JlYXRlX3Byb3h5X2NhbGxiYWNrIjsKKyAKKyAgICAg R0xPQlVTX0lfR1NJX0NBTExCQUNLX0RFQlVHX0VOVEVSOworQEAgLTQ0OSwxMCArNDQ5LDEwIEBA IGludCBnbG9idXNfZ3NpX2NhbGxiYWNrX2NyZWF0ZV9wcm94eV9jYWxsYmFjaygKKyAgICAgICAg IHZlcmlmeV9yZXN1bHQgPSAwOworICAgICAgICAgZ290byBleGl0OworICAgICB9CistICAgICAg ICAgICAgCisrCisgICAgIGNhbGxiYWNrX2RhdGEgPSAoZ2xvYnVzX2dzaV9jYWxsYmFja19kYXRh X3QpCisgICAgICAgIFg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKAorLSAgICAgICAgICAgeDUw OV9jb250ZXh0LCAKKysgICAgICAgICAgIHg1MDlfY29udGV4dCwKKyAgICAgICAgICAgIGNiX2lu ZGV4KTsKKyAKKyAgICAgaWYoIWNhbGxiYWNrX2RhdGEpCitAQCAtNDk4LDEyICs0OTgsMTIgQEAg aW50IGdsb2J1c19nc2lfY2FsbGJhY2tfY3JlYXRlX3Byb3h5X2NhbGxiYWNrKAorICAqCisgICog QHBhcmFtIHByZXZlcmlmeV9vaworICAqICAgICAgICBDb21tdW5pY2F0ZXMgdGhlIHJlc3VsdCBv ZiBkZWZhdWx0IHZhbGlkYXRpb24gc3RlcHMgcGVyZm9ybWVkIGJ5CistICogICAgICAgIE9wZW5T U0wgIAorKyAqICAgICAgICBPcGVuU1NMCisgICogQHBhcmFtIHg1MDlfY29udGV4dAorICAqICAg ICAgICBUaGUgdmFsaWRhdGlvbiBzdGF0ZSBvYmplY3QuCisgICogQHJldHVybgorICAqICAgICAg ICAxIG9uIHN1Y2Nlc3MKKy0gKiAgICAgICAgMCBvbiBmYWlsdXJlIAorKyAqICAgICAgICAwIG9u IGZhaWx1cmUKKyAgKi8KKyBpbnQgZ2xvYnVzX2dzaV9jYWxsYmFja19oYW5kc2hha2VfY2FsbGJh Y2soCisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZlcmlmeV9v aywKK0BAIC01MTQsNyArNTE0LDcgQEAgaW50IGdsb2J1c19nc2lfY2FsbGJhY2tfaGFuZHNoYWtl X2NhbGxiYWNrKAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1 bHQ7CisgICAgIGdsb2J1c19nc2lfY2FsbGJhY2tfZGF0YV90ICAgICAgICAgIGNhbGxiYWNrX2Rh dGE7CisgICAgIFNTTCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbCA9IE5VTEw7 CistICAgIHN0YXRpYyBjaGFyICogICAgICAgICAgICAgICAgICAgICAgIF9mdW5jdGlvbl9uYW1l XyA9IAorKyAgICBzdGF0aWMgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICBfZnVuY3Rpb25f bmFtZV8gPQorICAgICAgICAgImdsb2J1c19nc2lfY2FsbGJhY2tfaGFuZHNoYWtlX2NhbGxiYWNr IjsKKyAKKyAgICAgR0xPQlVTX0lfR1NJX0NBTExCQUNLX0RFQlVHX0VOVEVSOworQEAgLTU2Nyw3 ICs1NjcsNyBAQCBpbnQgZ2xvYnVzX2dzaV9jYWxsYmFja19oYW5kc2hha2VfY2FsbGJhY2soCisg CisgICAgIGNhbGxiYWNrX2RhdGEtPmVycm9yID0gcmVzdWx0OworIAorLSBleGl0OiAKKysgZXhp dDoKKyAgICAgR0xPQlVTX0lfR1NJX0NBTExCQUNLX0RFQlVHX0VYSVQ7CisgICAgIHJldHVybiB2 ZXJpZnlfcmVzdWx0OworIH0KK0BAIC01ODUsMTAgKzU4NSwxMCBAQCBpbnQgZ2xvYnVzX2dzaV9j YWxsYmFja19oYW5kc2hha2VfY2FsbGJhY2soCisgICogQHBhcmFtIGNlcnQKKyAgKiAgICAgICAg VGhlIGNlcnRpZmljYXRlIHRvIGNoZWNrCisgICogQHBhcmFtIGlzc3VlcgorLSAqICAgICAgICBU aGUgaXNzdWVyIGNlcnRpZmljYXRlIHRvIGNoZWNrIAorKyAqICAgICAgICBUaGUgaXNzdWVyIGNl cnRpZmljYXRlIHRvIGNoZWNrCisgICogQHJldHVybgorICAqICAgICAgICAxIG9uIHN1Y2Nlc3MK Ky0gKiAgICAgICAgMCBvbiBmYWlsdXJlIAorKyAqICAgICAgICAwIG9uIGZhaWx1cmUKKyAgKi8K KyBpbnQgZ2xvYnVzX2dzaV9jYWxsYmFja19jaGVja19pc3N1ZWQoCisgICAgIFg1MDlfU1RPUkVf Q1RYICogICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCitAQCAtNjAxLDIxICs2MDEsMjEgQEAg aW50IGdsb2J1c19nc2lfY2FsbGJhY2tfY2hlY2tfaXNzdWVkKAorICAgICBnbG9idXNfZ3NpX2Nl cnRfdXRpbHNfY2VydF90eXBlX3QgICBjZXJ0X3R5cGU7CisgICAgIHN0YXRpYyBjaGFyICogICAg ICAgICAgICAgICAgICAgICAgIF9mdW5jdGlvbl9uYW1lXyA9CisgICAgICAgICAiZ2xvYnVzX2dz aV9jYWxsYmFja19jaGVja19pc3N1ZWQiOworLSAgICAKKysKKyAgICAgR0xPQlVTX0lfR1NJX0NB TExCQUNLX0RFQlVHX0VOVEVSOworLSAgICAKKysKKyAgICAgcmV0dXJuX3ZhbHVlID0gWDUwOV9j aGVja19pc3N1ZWQoaXNzdWVyLCBjZXJ0KTsKKyAgICAgaWYocmV0dXJuX3ZhbHVlICE9IFg1MDlf Vl9PSykKKyAgICAgeworICAgICAgICAgcmV0dXJuX2NvZGUgPSAwOworICAgICAgICAgc3dpdGNo KHJldHVybl92YWx1ZSkKKyAgICAgICAgIHsKKy0gCisrCisgICAgICAgICBjYXNlIFg1MDlfVl9F UlJfS0VZVVNBR0VfTk9fQ0VSVFNJR046CisgICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgYSBw cm94eSBjZXJ0aWZpY2F0ZSB0aGVuIHRoZSBpc3N1ZXIKKyAgICAgICAgICAgICAgICogZG9lcyBu b3QgbmVlZCB0byBoYXZlIHRoZSBrZXlfdXNhZ2Ugc2V0LgorICAgICAgICAgICAgICAgKiBTbyBj aGVjayBpZiBpdHMgYSBwcm94eSwgYW5kIGlnbm9yZQorLSAgICAgICAgICAgICAgKiB0aGUgZXJy b3IgaWYgc28uIAorKyAgICAgICAgICAgICAgKiB0aGUgZXJyb3IgaWYgc28uCisgICAgICAgICAg ICAgICAqLworICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19nc2lfY2VydF91dGlsc19nZXRf Y2VydF90eXBlKGNlcnQsICZjZXJ0X3R5cGUpOworICAgICAgICAgICAgIGlmKHJlc3VsdCAhPSBH TE9CVVNfU1VDQ0VTUykKK0BAIC02MjMsMTkgKzYyMywxOSBAQCBpbnQgZ2xvYnVzX2dzaV9jYWxs YmFja19jaGVja19pc3N1ZWQoCisgICAgICAgICAgICAgICAgIHJldHVybl9jb2RlID0gMDsKKyAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKwor ICAgICAgICAgICAgIGlmKEdMT0JVU19HU0lfQ0VSVF9VVElMU19JU19QUk9YWShjZXJ0X3R5cGUp KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgLyogaXRzIGEgcHJveHkhICovCisg ICAgICAgICAgICAgICAgIHJldHVybl9jb2RlID0gMTsKKyAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgYnJlYWs7CistICAgICAgICAgICAgCisrCisgICAgICAgICBkZWZhdWx0OgorICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBHTE9CVVNf SV9HU0lfQ0FMTEJBQ0tfREVCVUdfRVhJVDsKKyAgICAgcmV0dXJuIHJldHVybl9jb2RlOworIH0K K0BAIC02NTIsMTMgKzY1MiwxMyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY3JlZF92ZXJpZnko CisgICAgIGdsb2J1c19nc2lfY2VydF91dGlsc19jZXJ0X3R5cGVfdCAgIGNlcnRfdHlwZTsKKyAg ICAgWDUwOSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX2NlcnQgPSBOVUxMOwor ICAgICBYNTA5ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2NlcnQgPSBOVUxM OworLSAgICBzdGF0aWMgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICBfZnVuY3Rpb25fbmFt ZV8gPSAKKysgICAgc3RhdGljIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgX2Z1bmN0aW9u X25hbWVfID0KKyAgICAgICAgICJnbG9idXNfaV9nc2lfY2FsbGJhY2tfY3JlZF92ZXJpZnkiOwor IAorICAgICBHTE9CVVNfSV9HU0lfQ0FMTEJBQ0tfREVCVUdfRU5URVI7CistICAgIAorKworICAg ICAvKiBOb3cgY2hlY2sgZm9yIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGljaAorLSAgICAgKiBj YW4gYmUgZGlzcmVnYXJkZWQuIAorKyAgICAgKiBjYW4gYmUgZGlzcmVnYXJkZWQuCisgICAgICAq LworICAgICBpZiAoIXByZXZlcmlmeV9vaykKKyAgICAgeworQEAgLTY2NiwxMSArNjY2LDExIEBA IGdsb2J1c19pX2dzaV9jYWxsYmFja19jcmVkX3ZlcmlmeSgKKyAgICAgICAgIHsKKyAgICAgICAg IGNhc2UgWDUwOV9WX0VSUl9QQVRIX0xFTkdUSF9FWENFRURFRDoKKyAKKy0JLyoKKy0JICogT3Bl blNTTC0wLjkuOCBoYXMgdGhpcyBlcnJvciAoMC45LjdkIGRpZCBub3QgaGF2ZSB0aGlzKQorLQkg KiBTbyB3ZSB3aWxsIGlnbm9yZSB0aGUgZXJyb3JzIG5vdyBhbmQgZG8gb3VyIGNoZWNrcyBsYXRl cgorLQkgKiBvbiAoYXMgZXhwbGFpbmVkIGJlbG93KS4KKy0JICovCisrICAgICAgICAvKgorKyAg ICAgICAgICogT3BlblNTTC0wLjkuOCBoYXMgdGhpcyBlcnJvciAoMC45LjdkIGRpZCBub3QgaGF2 ZSB0aGlzKQorKyAgICAgICAgICogU28gd2Ugd2lsbCBpZ25vcmUgdGhlIGVycm9ycyBub3cgYW5k IGRvIG91ciBjaGVja3MgbGF0ZXIKKysgICAgICAgICAqIG9uIChhcyBleHBsYWluZWQgYmVsb3cp LgorKyAgICAgICAgICovCisgICAgICAgICBjYXNlIFg1MDlfVl9FUlJfUFJPWFlfUEFUSF9MRU5H VEhfRVhDRUVERUQ6CisgCisgICAgICAgICAgICAgR0xPQlVTX0lfR1NJX0NBTExCQUNLX0RFQlVH X1BSSU5UKAorQEAgLTY4NCwyMiArNjg0LDIyIEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jcmVk X3ZlcmlmeSgKKyAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNf U1VDQ0VTUzsKKyAgICAgICAgICAgICBicmVhazsKKy0JLyoKKy0JICogSW4gdGhlIGxhdGVyIHZl cnNpb24gKDA5N2crKSBPcGVuU1NMIGRvZXMga25vdyBhYm91dCAKKy0JICogcHJveGllcywgYnV0 IG5vdCBub24tcmZjIGNvbXBsaWFudCBwcm94aWVzLCBpdCB3aWxsIAorLQkgKiBjb3VudCB0aGVt IGFzIHVuaGFuZGxlZCBjcml0aWNhbCBleHRlbnNpb25zLgorLQkgKiBTbyB3ZSB3aWxsIGlnbm9y ZSB0aGUgZXJyb3JzIGFuZCBkbyBvdXIKKy0JICogb3duIGNoZWNrcyBsYXRlciBvbiwgd2hlbiB3 ZSBjaGVjayB0aGUgbGFzdAorLQkgKiBjZXJ0aWZpY2F0ZSBpbiB0aGUgY2hhaW4gd2Ugd2lsbCBj aGVjayB0aGUgY2hhaW4uCistCSAqIEFzIE9wZW5TU0wgZG9lcyBub3QgcmVjb2duaXplIGxlZ2Fj eSBwcm94aWVzCistCSAqLworKyAgICAgICAgLyoKKysgICAgICAgICAqIEluIHRoZSBsYXRlciB2 ZXJzaW9uICgwOTdnKykgT3BlblNTTCBkb2VzIGtub3cgYWJvdXQKKysgICAgICAgICAqIHByb3hp ZXMsIGJ1dCBub3Qgbm9uLXJmYyBjb21wbGlhbnQgcHJveGllcywgaXQgd2lsbAorKyAgICAgICAg ICogY291bnQgdGhlbSBhcyB1bmhhbmRsZWQgY3JpdGljYWwgZXh0ZW5zaW9ucy4KKysgICAgICAg ICAqIFNvIHdlIHdpbGwgaWdub3JlIHRoZSBlcnJvcnMgYW5kIGRvIG91cgorKyAgICAgICAgICog b3duIGNoZWNrcyBsYXRlciBvbiwgd2hlbiB3ZSBjaGVjayB0aGUgbGFzdAorKyAgICAgICAgICog Y2VydGlmaWNhdGUgaW4gdGhlIGNoYWluIHdlIHdpbGwgY2hlY2sgdGhlIGNoYWluLgorKyAgICAg ICAgICogQXMgT3BlblNTTCBkb2VzIG5vdCByZWNvZ25pemUgbGVnYWN5IHByb3hpZXMKKysgICAg ICAgICAqLworICAgICAgICAgY2FzZSBYNTA5X1ZfRVJSX1VOSEFORExFRF9DUklUSUNBTF9FWFRF TlNJT046CisgICAgICAgICAgICAgR0xPQlVTX0lfR1NJX0NBTExCQUNLX0RFQlVHX1BSSU5UKAor ICAgICAgICAgICAgICAgICAyLCAiWDUwOV9WX0VSUl9VTkhBTkRMRURfQ1JJVElDQUxfRVhURU5T SU9OXG4iKTsKKy0JICAgIC8qCistCSAgICAgKiBTZXR0aW5nIHRoaXMgZm9yIDA5OCBvciBsYXRl ciB2ZXJzaW9ucyBhdm9pZCB0aGUgaW52YWxpZAorLQkgICAgICogQ0EgZXJyb3IgYnV0IHdvdWxk IHJlc3VsdCBpbiBwcm94eSBwYXRoIGxlbiBleGNlZWRlZCB3aGljaAorLQkgICAgICogaXMgaGFu ZGxlZCBhYm92ZS4KKysgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAqIFNldHRpbmcgdGhp cyBmb3IgMDk4IG9yIGxhdGVyIHZlcnNpb25zIGF2b2lkIHRoZSBpbnZhbGlkCisrICAgICAgICAg ICAgICogQ0EgZXJyb3IgYnV0IHdvdWxkIHJlc3VsdCBpbiBwcm94eSBwYXRoIGxlbiBleGNlZWRl ZCB3aGljaAorKyAgICAgICAgICAgICAqIGlzIGhhbmRsZWQgYWJvdmUuCisgICAgICAgICAgICAg ICovCisgICAgICAgICAgICAgWDUwOV9zZXRfcHJveHlfZmxhZyhYNTA5X1NUT1JFX0NUWF9nZXRf Y3VycmVudF9jZXJ0KHg1MDlfY29udGV4dCkpOworICAgICAgICAgICAgIHJlc3VsdCA9IEdMT0JV U19TVUNDRVNTOworQEAgLTcxMyw0NCArNzEzLDQ0IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19j cmVkX3ZlcmlmeSgKKyAgICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAg ICAgICAgICBicmVhazsKKyAKKy0JY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfQ0E6CistCSAgICAv KgorLQkgICAgICogSWYgdGhlIHByZXZpb3VzIGNlcnQgaW4gdGhlIGNoYWluIGlzIGEgcHJveHkg Y2VydCB0aGVuCistCSAgICAgKiB3ZSBnZXQgdGhpcyBlcnJvciBqdXN0IGJlY2F1c2Ugb3BlbnNz bCBkb2VzIG5vdCByZWNvZ25pemUgCistCSAgICAgKiBvdXIgcHJveHkgYW5kIHRyZWF0cyBpdCBh cyBhbiBFRUMuIEFuZCB0aHVzLCBpdCB3b3VsZAorLQkgICAgICogdHJlYXQgaGlnaGVyIGxldmVs IHByb3hpZXMgKGlmIGFueSkgb3IgRUVDIGFzIENBIGNlcnQgCistCSAgICAgKiAod2hpY2ggYXJl IG5vdCBhY3R1YWxseSBDQSBjZXJ0cykgYW5kIHdvdWxkIHRocm93IHRoaXMKKy0JICAgICAqIGVy cm9yLiBBcyBsb25nIGFzIHRoZSBwcmV2aW91cyBjZXJ0IGluIHRoZSBjaGFpbiBpcyBhCistCSAg ICAgKiBwcm94eSBjZXJ0LCB3ZSBpZ25vcmUgdGhpcyBlcnJvci4KKy0JICAgICAqLworLQkgICAg cHJldl9jZXJ0ID0gc2tfWDUwOV92YWx1ZSgKKy0JCSAgICBYNTA5X1NUT1JFX0NUWF9nZXQwX2No YWluKHg1MDlfY29udGV4dCksIFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aCh4NTA5X2Nv bnRleHQpLTEpOworLQkgICAgcmVzdWx0ID0gZ2xvYnVzX2dzaV9jZXJ0X3V0aWxzX2dldF9jZXJ0 X3R5cGUocHJldl9jZXJ0LCAmY2VydF90eXBlKTsKKy0JICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKy0JICAgIHsKKy0JCXJlc3VsdCA9IChnbG9idXNfcmVzdWx0X3QpR0xPQlVTX0ZB SUxVUkU7CistCSAgICB9CistCSAgICBlbHNlIAorLQkgICAgeworLQkJaWYoR0xPQlVTX0dTSV9D RVJUX1VUSUxTX0lTX1BST1hZKGNlcnRfdHlwZSkpCistCQl7CistCQkgICAgcmVzdWx0ID0gR0xP QlVTX1NVQ0NFU1M7CistCQl9CistCQllbHNlCistCQl7CistCQkgICAgcmVzdWx0ID0gKGdsb2J1 c19yZXN1bHRfdClHTE9CVVNfRkFJTFVSRTsKKy0JCX0KKysgICAgICAgIGNhc2UgWDUwOV9WX0VS Ul9JTlZBTElEX0NBOgorKyAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICogSWYgdGhlIHBy ZXZpb3VzIGNlcnQgaW4gdGhlIGNoYWluIGlzIGEgcHJveHkgY2VydCB0aGVuCisrICAgICAgICAg ICAgICogd2UgZ2V0IHRoaXMgZXJyb3IganVzdCBiZWNhdXNlIG9wZW5zc2wgZG9lcyBub3QgcmVj b2duaXplCisrICAgICAgICAgICAgICogb3VyIHByb3h5IGFuZCB0cmVhdHMgaXQgYXMgYW4gRUVD LiBBbmQgdGh1cywgaXQgd291bGQKKysgICAgICAgICAgICAgKiB0cmVhdCBoaWdoZXIgbGV2ZWwg cHJveGllcyAoaWYgYW55KSBvciBFRUMgYXMgQ0EgY2VydAorKyAgICAgICAgICAgICAqICh3aGlj aCBhcmUgbm90IGFjdHVhbGx5IENBIGNlcnRzKSBhbmQgd291bGQgdGhyb3cgdGhpcworKyAgICAg ICAgICAgICAqIGVycm9yLiBBcyBsb25nIGFzIHRoZSBwcmV2aW91cyBjZXJ0IGluIHRoZSBjaGFp biBpcyBhCisrICAgICAgICAgICAgICogcHJveHkgY2VydCwgd2UgaWdub3JlIHRoaXMgZXJyb3Iu CisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgcHJldl9jZXJ0ID0gc2tfWDUwOV92YWx1 ZSgKKysgICAgICAgICAgICAgICAgICAgIFg1MDlfU1RPUkVfQ1RYX2dldDBfY2hhaW4oeDUwOV9j b250ZXh0KSwgWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yX2RlcHRoKHg1MDlfY29udGV4dCktMSk7 CisrICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2dzaV9jZXJ0X3V0aWxzX2dldF9jZXJ0X3R5 cGUocHJldl9jZXJ0LCAmY2VydF90eXBlKTsKKysgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xP QlVTX1NVQ0NFU1MpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICByZXN1bHQgPSAo Z2xvYnVzX3Jlc3VsdF90KUdMT0JVU19GQUlMVVJFOworKyAgICAgICAgICAgIH0KKysgICAgICAg ICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBpZihHTE9CVVNfR1NJ X0NFUlRfVVRJTFNfSVNfUFJPWFkoY2VydF90eXBlKSkKKysgICAgICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR0xPQlVTX1NVQ0NFU1M7CisrICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgICAgICByZXN1bHQgPSAoZ2xvYnVzX3Jlc3VsdF90KUdMT0JVU19GQUlMVVJFOwor KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLQkgICAgYnJlYWs7CisrICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgIHJlc3VsdCA9IChn bG9idXNfcmVzdWx0X3QpR0xPQlVTX0ZBSUxVUkU7CisgICAgICAgICAgICAgYnJlYWs7CistICAg ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAKKysgICAgICAgIH0KKyAKKyAgICAgICAgIGlm IChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CistCSAgICBjaGFyICogICAg ICAgICAgICAgICAgICAgICAgc3ViamVjdF9uYW1lID0KKy0JICAgICAgWDUwOV9OQU1FX29uZWxp bmUoWDUwOV9nZXRfc3ViamVjdF9uYW1lKFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQo eDUwOV9jb250ZXh0KSksIDAsIDApOworKyAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAg ICAgICAgICBzdWJqZWN0X25hbWUgPQorKyAgICAgICAgICAgICAgWDUwOV9OQU1FX29uZWxpbmUo WDUwOV9nZXRfc3ViamVjdF9uYW1lKFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoeDUw OV9jb250ZXh0KSksIDAsIDApOworICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAg ICAgICBpc3N1ZXJfaGFzaCA9CisgICAgICAgICAgICAgICAgICAgICBYNTA5X2lzc3Vlcl9uYW1l X2hhc2goWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydCh4NTA5X2NvbnRleHQpKTsKKyAg ICAgICAgICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgY2VydF9kaXI7CitAQCAtNzYx LDkgKzc2MSw5IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jcmVkX3ZlcmlmeSgKKyAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HU0lfQ0FM TEJBQ0tfRVJST1JfQ0VSVF9OT1RfWUVUX1ZBTElELAorICAgICAgICAgICAgICAgICAgICAgKF9D TFMoIkNlcnQgd2l0aCBzdWJqZWN0OiAlcyBpcyBub3QgeWV0IHZhbGlkIgorLQkJICAgICAiLSBj aGVjayBjbG9jayBza2V3IGJldHdlZW4gaG9zdHMuIiksIHN1YmplY3RfbmFtZSkpOworKyAgICAg ICAgICAgICAgICAgICAgICItIGNoZWNrIGNsb2NrIHNrZXcgYmV0d2VlbiBob3N0cy4iKSwgc3Vi amVjdF9uYW1lKSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgaWYgKFg1MDlf U1RPUkVfQ1RYX2dldF9lcnJvcih4NTA5X2NvbnRleHQpID09IAorKyAgICAgICAgICAgIGVsc2Ug aWYgKFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcih4NTA5X2NvbnRleHQpID09CisgICAgICAgICAg ICAgICAgICAgICAgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUX0xPQ0FMTFkp CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBjZXJ0X2RpciA9IE5VTEw7CitAQCAt NzczLDcgKzc3Myw3IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jcmVkX3ZlcmlmeSgKKyAgICAg ICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HU0lf Q0FMTEJBQ0tfRVJST1JfQ0FOVF9HRVRfTE9DQUxfQ0FfQ0VSVCwKKyAgICAgICAgICAgICAgICAg ICAgIChfQ0xTKCJDYW5ub3QgZmluZCB0cnVzdGVkIENBIGNlcnRpZmljYXRlICIKKy0JCSAgICAg IndpdGggaGFzaCAlbHglcyVzIiksCisrICAgICAgICAgICAgICAgICAgICAgIndpdGggaGFzaCAl bHglcyVzIiksCisgICAgICAgICAgICAgICAgICAgICAgaXNzdWVyX2hhc2gsIGNlcnRfZGlyID8g IiBpbiAiIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgY2VydF9kaXIgPyBjZXJ0X2RpciA6 ICIiKSk7CisgICAgICAgICAgICAgICAgIGlmIChjZXJ0X2RpcikKK0BAIC03OTAsNyArNzkwLDcg QEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NyZWRfdmVyaWZ5KAorICAgICAgICAgICAgICAgICAg ICAgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dTSV9DQUxMQkFDS19FUlJP Ul9DQU5UX0dFVF9MT0NBTF9DQV9DRVJULAorICAgICAgICAgICAgICAgICAgICAgKF9DTFMoIlVu dHJ1c3RlZCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBpbiBjaGFpbiAiCistCQkgICAgICJ3aXRo IGhhc2ggJWx4IiksCisrICAgICAgICAgICAgICAgICAgICAgIndpdGggaGFzaCAlbHgiKSwKKyAg ICAgICAgICAgICAgICAgICAgICBpc3N1ZXJfaGFzaCkpOworICAgICAgICAgICAgICAgICBpZiAo Y2VydF9kaXIpCisgICAgICAgICAgICAgICAgIHsKK0BAIC04MTEsOCArODExLDggQEAgZ2xvYnVz X2lfZ3NpX2NhbGxiYWNrX2NyZWRfdmVyaWZ5KAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVT X0dTSV9DQUxMQkFDS19FUlJPUl9WRVJJRllfQ1JFRCwKKyAgICAgICAgICAgICAgICAgICAgIChY NTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3IoeDUw OV9jb250ZXh0KSkpKTsKKyAgICAgICAgICAgICB9CistCQorLQkgICAgT1BFTlNTTF9mcmVlKHN1 YmplY3RfbmFtZSk7CisrCisrICAgICAgICAgICAgT1BFTlNTTF9mcmVlKHN1YmplY3RfbmFtZSk7 CisgCisgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgfQorQEAgLTg0Nyw3ICs4NDcs NyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY3JlZF92ZXJpZnkoCisgICAgICAgICAgICAgZ290 byBleGl0OworICAgICAgICAgfQorICNlbmRpZgorLSAgICAKKysKKyAgICAgICAgIC8qIG9ubHkg d2FudCB0byBjaGVjayBzaW5naW5nX3BvbGljeSBmaWxlIGlmIGl0cyBub3QgYSBwcm94eSAqLwor ICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX3NpZ25pbmdfcG9s aWN5KAorICAgICAgICAgICAgIHg1MDlfY29udGV4dCwKK0BAIC04NTgsMTMgKzg1OCwxMyBAQCBn bG9idXNfaV9nc2lfY2FsbGJhY2tfY3JlZF92ZXJpZnkoCisgICAgICAgICAgICAgICAgIHJlc3Vs dCwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX0dTSV9DQUxMQkFDS19FUlJPUl9WRVJJRllfQ1JF RCk7CisgICAgICAgICAgICAgZ290byBleGl0OworLSAgICAgICAgfSAgICAgICAgCisrICAgICAg ICB9CisgICAgIH0KKyAKKyAgICAgdG1wX2NlcnQgPSBYNTA5X2R1cChYNTA5X1NUT1JFX0NUWF9n ZXRfY3VycmVudF9jZXJ0KHg1MDlfY29udGV4dCkpOworIAorICAgICAvKiBhZGQgdGhlIGN1cnJl bnQgY2VydCB0byB0aGUgY2FsbGJhY2sgZGF0YSdzIGNlcnQgY2hhaW4gKi8KKy0gICAgc2tfWDUw OV9pbnNlcnQoY2FsbGJhY2tfZGF0YS0+Y2VydF9jaGFpbiwgCisrICAgIHNrX1g1MDlfaW5zZXJ0 KGNhbGxiYWNrX2RhdGEtPmNlcnRfY2hhaW4sCisgICAgICAgICAgICAgICAgICAgIHRtcF9jZXJ0 LCAwKTsKKyAKKyAgICAgY2FsbGJhY2tfZGF0YS0+Y2VydF9kZXB0aCsrOworQEAgLTg4OSw3ICs4 ODksNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY3JlZF92ZXJpZnkoCisgICAgICAgICAgICAg R0xPQlVTX0dTSV9DQUxMQkFDS19FUlJPUl9WRVJJRllfQ1JFRCk7CisgICAgICAgICBnb3RvIGV4 aXQ7CisgICAgIH0KKy0gICAgCisrCisgIGV4aXQ6CisgCisgICAgIEdMT0JVU19JX0dTSV9DQUxM QkFDS19ERUJVR19FWElUOworQEAgLTkwOCw4ICs5MDgsOCBAQCBnbG9idXNfaV9nc2lfY2FsbGJh Y2tfY2hlY2tfcHJveHkoCisgCisgICAgIEdMT0JVU19JX0dTSV9DQUxMQkFDS19ERUJVR19FTlRF UjsKKyAKKy0gICAgLyogQWxsIG9mIHRoZSBPcGVuU1NMIHRlc3RzIGhhdmUgcGFzc2VkIGFuZCB3 ZSBub3cgZ2V0IHRvIAorLSAgICAgKiBsb29rIGF0IHRoZSBjZXJ0aWZpY2F0ZSB0byB2ZXJpZnkg dGhlIHByb3h5IHJ1bGVzLCAKKysgICAgLyogQWxsIG9mIHRoZSBPcGVuU1NMIHRlc3RzIGhhdmUg cGFzc2VkIGFuZCB3ZSBub3cgZ2V0IHRvCisrICAgICAqIGxvb2sgYXQgdGhlIGNlcnRpZmljYXRl IHRvIHZlcmlmeSB0aGUgcHJveHkgcnVsZXMsCisgICAgICAqIGFuZCBjYS1zaWduaW5nLXBvbGlj eSBydWxlcy4gV2Ugd2lsbCBhbHNvIGRvIGEgQ1JMIGNoZWNrCisgICAgICAqLworICAgICByZXN1 bHQgPSBnbG9idXNfZ3NpX2NlcnRfdXRpbHNfZ2V0X2NlcnRfdHlwZShYNTA5X1NUT1JFX0NUWF9n ZXRfY3VycmVudF9jZXJ0KHg1MDlfY29udGV4dCksCitAQCAtOTIzLDcgKzkyMyw3IEBAIGdsb2J1 c19pX2dzaV9jYWxsYmFja19jaGVja19wcm94eSgKKyAgICAgfQorIAorICAgICBpZihHTE9CVVNf R1NJX0NFUlRfVVRJTFNfSVNfUFJPWFkoY2VydF90eXBlKSkKKy0gICAgeyAgCisrICAgIHsKKyAg ICAgICAgIC8qIGl0IGlzIGEgcHJveHkgKi8KKyAKKyAgICAgICAgIC8qIGEgbGVnYWN5IGdsb2J1 cyBwcm94eSBtYXkgb25seSBiZSBmb2xsb3dlZCBieSBhbm90aGVyIGxlZ2FjeSBnbG9idXMKK0BA IC05MzUsNyArOTM1LDcgQEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX3Byb3h5KAorICAg ICAgICAgICogYSBkcmFmdCBjb21wbGlhbnQgbGltaXRlZCBwcm94eSBtYXkgb25seSBiZSBmb2xs b3dlZCBieSBhbm90aGVyIGRyYWZ0CisgICAgICAgICAgKiBjb21wbGlhbnQgbGltaXRlZCBwcm94 eSBvciBhIGRyYWZ0IGNvbXBsaWFudCBpbmRlcGVuZGVudCBwcm94eQorICAgICAgICAgICovCist ICAgICAgICAKKysKKyAgICAgICAgIGlmKChHTE9CVVNfR1NJX0NFUlRfVVRJTFNfSVNfR1NJXzJf UFJPWFkoY2FsbGJhY2tfZGF0YS0+Y2VydF90eXBlKSAmJgorICAgICAgICAgICAgICFHTE9CVVNf R1NJX0NFUlRfVVRJTFNfSVNfR1NJXzJfUFJPWFkoY2VydF90eXBlKSkgfHwKKyAgICAgICAgICAg IChHTE9CVVNfR1NJX0NFUlRfVVRJTFNfSVNfR1NJXzNfUFJPWFkoY2FsbGJhY2tfZGF0YS0+Y2Vy dF90eXBlKSAmJgorQEAgLTk2MSw3ICs5NjEsNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY2hl Y2tfcHJveHkoCisgICAgICAgICAgICAgWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yKHg1MDlfY29u dGV4dCwgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9GQUlMVVJFKTsKKyAgICAgICAgICAgICBn b3RvIGV4aXQ7CisgICAgICAgICB9CistICAgICAgIAorKworICAgICAgICAgR0xPQlVTX0lfR1NJ X0NBTExCQUNLX0RFQlVHX1BSSU5UKDIsICJQYXNzZWQgcHJveHkgdGVzdFxuIik7CisgCisgICAg ICAgICBjYWxsYmFja19kYXRhLT5wcm94eV9kZXB0aCsrOworQEAgLTk3Nyw3ICs5NzcsNyBAQCBn bG9idXNfaV9nc2lfY2FsbGJhY2tfY2hlY2tfcHJveHkoCisgICAgIH0KKyAKKyAgICAgY2FsbGJh Y2tfZGF0YS0+Y2VydF90eXBlID0gY2VydF90eXBlOworLSAgCisrCisgIGV4aXQ6CisgCisgICAg IEdMT0JVU19JX0dTSV9DQUxMQkFDS19ERUJVR19FWElUOworQEAgLTEwMDMsMzQgKzEwMDMsMzQg QEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX3Jldm9rZWQoCisgICAgIGdsb2J1c19ib29s X3QgICAgICAgICAgICAgICAgICAgICAgIHJlY2hlY2tfY3JsX2RvbmUgPSBHTE9CVVNfRkFMU0U7 CisgICAgIHN0YXRpYyBjaGFyICogICAgICAgICAgICAgICAgICAgICAgIF9mdW5jdGlvbl9uYW1l XyA9CisgICAgICAgICAiZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX3Jldm9rZWQiOworLSAg ICAKKysKKyAgICAgR0xPQlVTX0lfR1NJX0NBTExCQUNLX0RFQlVHX0VOVEVSOworLSAgICAgICAg ICAgICAgICAgICAgICAgIAorKworIAorICAgICBkbworICAgICB7CisgICAgICAgICB4NTA5X29i amVjdCA9IFg1MDlfT0JKRUNUX25ldygpOworLSAgICAgICAgLyogCistICAgICAgICAgKiBTU0xl YXkgMC45LjAgaGFuZGxlcyBDUkxzIGJ1dCBkb2VzIG5vdCBjaGVjayB0aGVtLiAKKysgICAgICAg IC8qCisrICAgICAgICAgKiBTU0xlYXkgMC45LjAgaGFuZGxlcyBDUkxzIGJ1dCBkb2VzIG5vdCBj aGVjayB0aGVtLgorICAgICAgICAgICogV2Ugd2lsbCBjaGVjayB0aGUgY3JsIGZvciB0aGlzIGNl cnQsIGlmIHRoZXJlCistICAgICAgICAgKiBpcyBhIENSTCBpbiB0aGUgc3RvcmUuIAorLSAgICAg ICAgICogSWYgd2UgZmluZCB0aGUgY3JsIGlzIG5vdCB2YWxpZCwgd2Ugd2lsbCBmYWlsLCAKKy0g ICAgICAgICAqIGFzIG9uY2UgdGhlIHN5c2FkbWluIGluZGljYXRlcyB0aGF0IENSTHMgYXJlIHRv IAorLSAgICAgICAgICogYmUgY2hlY2tlZCwgaGUgYmVzdCBrZWVwIGl0IHVwdG8gZGF0ZS4gCist ICAgICAgICAgKiAKKysgICAgICAgICAqIGlzIGEgQ1JMIGluIHRoZSBzdG9yZS4KKysgICAgICAg ICAqIElmIHdlIGZpbmQgdGhlIGNybCBpcyBub3QgdmFsaWQsIHdlIHdpbGwgZmFpbCwKKysgICAg ICAgICAqIGFzIG9uY2UgdGhlIHN5c2FkbWluIGluZGljYXRlcyB0aGF0IENSTHMgYXJlIHRvCisr ICAgICAgICAgKiBiZSBjaGVja2VkLCBoZSBiZXN0IGtlZXAgaXQgdXB0byBkYXRlLgorKyAgICAg ICAgICoKKyAgICAgICAgICAqIFdoZW4gZnV0dXJlIHZlcnNpb25zIG9mIFNTTGVheSBzdXBwb3J0 IHRoaXMgYmV0dGVyLAorLSAgICAgICAgICogd2UgY2FuIHJlbW92ZSB0aGVzZSB0ZXN0cy4gCist ICAgICAgICAgKiAKKysgICAgICAgICAqIHdlIGNhbiByZW1vdmUgdGhlc2UgdGVzdHMuCisrICAg ICAgICAgKgorICAgICAgICAgICogd2UgY29tZSB0aHJvdWdoIHRoaXMgY29kZSBmb3IgZWFjaCBj ZXJ0aWZpY2F0ZSwKKyAgICAgICAgICAqIHN0YXJ0aW5nIHdpdGggdGhlIENBJ3MgV2Ugd2lsbCBj aGVjayBmb3IgYSBDUkwKKyAgICAgICAgICAqIGVhY2ggdGltZSwgYnV0IG9ubHkgY2hlY2sgdGhl IHNpZ25hdHVyZSBpZiB0aGUKKyAgICAgICAgICAqIHN1YmplY3QgbmFtZSBtYXRjaGVzLCBhbmQg Y2hlY2sgZm9yIHJldm9rZWQKKyAgICAgICAgICAqIGlmIHRoZSBpc3N1ZXIgbmFtZSBtYXRjaGVz LgorLSAgICAgICAgICogdGhpcyBhbGxvd3MgdGhlIENBIHRvIHJldm9rZSBpdHMgb3duIGNlcnQg YXMgd2VsbC4gCisrICAgICAgICAgKiB0aGlzIGFsbG93cyB0aGUgQ0EgdG8gcmV2b2tlIGl0cyBv d24gY2VydCBhcyB3ZWxsLgorICAgICAgICAgICovCisgICAgICAgICBpZiAoWDUwOV9TVE9SRV9n ZXRfYnlfc3ViamVjdCgKKyAgICAgICAgICAgICAgICAgeDUwOV9jb250ZXh0LAorLSAgICAgICAg ICAgICAgICBYNTA5X0xVX0NSTCwgCisrICAgICAgICAgICAgICAgIFg1MDlfTFVfQ1JMLAorICAg ICAgICAgICAgICAgICBYNTA5X2dldF9pc3N1ZXJfbmFtZShYNTA5X1NUT1JFX0NUWF9nZXRfY3Vy cmVudF9jZXJ0KHg1MDlfY29udGV4dCkpLAorICAgICAgICAgICAgICAgICB4NTA5X29iamVjdCkp CisgICAgICAgICB7CitAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNr X2NoZWNrX3Jldm9rZWQoCisgICAgICAgICAgICAgbmV4dF91cGRhdGUgPSBYNTA5X0NSTF9nZXQw X25leHRVcGRhdGUoY3JsKTsKKyAgICAgICAgICAgICBsYXN0X3VwZGF0ZSA9IFg1MDlfQ1JMX2dl dDBfbGFzdFVwZGF0ZShjcmwpOworICAgICAgICAgICAgIGhhc19uZXh0X3RpbWUgPSAobmV4dF91 cGRhdGUgIT0gTlVMTCk7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgZ2xvYnVzX2dz aV9jZXJ0X3V0aWxzX21ha2VfdGltZShsYXN0X3VwZGF0ZSwgJmxhc3RfdGltZSk7CisgICAgICAg ICAgICAgaWYgKGhhc19uZXh0X3RpbWUpCisgICAgICAgICAgICAgeworQEAgLTEwNjcsOCArMTA2 Nyw4IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jaGVja19yZXZva2VkKAorICAgICAgICAgICAg IGdldF9pc3N1ZXIgPSBYNTA5X1NUT1JFX0NUWF9nZXRfZ2V0X2lzc3Vlcih4NTA5X2NvbnRleHQp OworIAorICAgICAgICAgICAgIC8qIHZlcmlmeSB0aGUgc2lnbmF0dXJlIG9uIHRoaXMgQ1JMICov CistICAgICAgICAgICAgaWYoZ2V0X2lzc3VlcigmaXNzdWVyLCAKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeDUwOV9jb250ZXh0LCAKKysgICAgICAgICAgICBpZihn ZXRfaXNzdWVyKCZpc3N1ZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHg1MDlfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydCh4NTA5X2NvbnRleHQpKSA8PSAwKQor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAg ICAgIHN1YmplY3Rfc3RyaW5nOworQEAgLTEwNzYsNyArMTA3Niw3IEBAIGdsb2J1c19pX2dzaV9j YWxsYmFja19jaGVja19yZXZva2VkKAorICAgICAgICAgICAgICAgICBzdWJqZWN0X3N0cmluZyA9 IFg1MDlfTkFNRV9vbmVsaW5lKAorICAgICAgICAgICAgICAgICAgICAgWDUwOV9nZXRfaXNzdWVy X25hbWUoWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydCh4NTA5X2NvbnRleHQpKSwKKyAg ICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICAgICAgR0xPQlVTX0dTSV9DQUxMQkFDS19PUEVOU1NMX0VSUk9SX1JFU1VMVCgKKyAg ICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19H U0lfQ0FMTEJBQ0tfRVJST1JfSU5WQUxJRF9DUkwsCitAQCAtMTA4OCw3ICsxMDg4LDcgQEAgZ2xv YnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX3Jldm9rZWQoCisgICAgICAgICAgICAgfQorIAorICAg ICAgICAgICAgIGlzc3Vlcl9rZXkgPSBYNTA5X2dldF9wdWJrZXkoaXNzdWVyKTsKKy0gICAgICAg ICAgICAKKysKKyAgICAgICAgICAgICBpZihpc3N1ZXJfa2V5ID09IE5VTEwpCisgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICBHTE9CVVNfR1NJX0NBTExCQUNLX09QRU5TU0xfRVJST1Jf UkVTVUxUKAorQEAgLTExMTQsNyArMTExNCw3IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jaGVj a19yZXZva2VkKAorICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICBFVlBfUEtFWV9mcmVl KGlzc3Vlcl9rZXkpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIC8qIENoZWNrIGRh dGUgKi8KKyAKKyAgICAgICAgICAgICBpID0gWDUwOV9jbXBfY3VycmVudF90aW1lKGxhc3RfdXBk YXRlKTsKK0BAIC0xMTM3LDcgKzExMzcsNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY2hlY2tf cmV2b2tlZCgKKyAgICAgICAgICAgICAgICAgWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yKHg1MDlf Y29udGV4dCwgWDUwOV9WX0VSUl9DUkxfTk9UX1lFVF9WQUxJRCk7CisgICAgICAgICAgICAgICAg IGdvdG8gZnJlZV9YNTA5X29iamVjdDsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgaSA9IChoYXNfbmV4dF90aW1lKSA/IFg1MDlfY21wX2N1cnJlbnRfdGlt ZShuZXh0X3VwZGF0ZSkgOiAxOworICAgICAgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAg ICAgeworQEAgLTExNDgsNyArMTE0OCw3IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jaGVja19y ZXZva2VkKAorICAgICAgICAgICAgICAgICBYNTA5X1NUT1JFX0NUWF9zZXRfZXJyb3IoeDUwOV9j b250ZXh0LCBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NSTF9ORVhUX1VQREFURV9GSUVMRCk7CisgICAg ICAgICAgICAgICAgIGdvdG8gZnJlZV9YNTA5X29iamVjdDsKKyAgICAgICAgICAgICB9CistICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgLyogSWYgd2UgZ2V0IGFuIGV4cGlyZWQgQ1JM LCB3ZSdsbCBkZWxldGUgaXQgZnJvbSB0aGUgc3RvcmUKKyAgICAgICAgICAgICAgKiBhc3NvY2lh dGVkIHdpdGggdGhpcyBzc2wgY29udGV4dCBhbmQgdGhlbiB0cnkgdGhpcyBvcGVyYXRpb24gb25l CisgICAgICAgICAgICAgICogbW9yZSB0aW1lIHRvIHNlZSBpZiBhIG5ldyBvbmUgaXMgaW4gcGxh Y2UuCitAQCAtMTI3NiwxOSArMTI3NiwxOSBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY2hlY2tf cmV2b2tlZCgKKyAKKyAgICAgICAgICAgICAgICAgcmV2b2tlZCA9IHNrX1g1MDlfUkVWT0tFRF92 YWx1ZShyZXZva2VkX3N0YWNrLCBpKTsKKyAgICAgICAgICAgICAgICAgcmV2b2tlZF9zZXJpYWxf bnVtYmVyID0gWDUwOV9SRVZPS0VEX2dldDBfc2VyaWFsTnVtYmVyKHJldm9rZWQpOworLSAgICAg ICAgICAgIAorKworICAgICAgICAgICAgICAgICBpZighQVNOMV9JTlRFR0VSX2NtcCgKKyAgICAg ICAgICAgICAgICAgICAgIHJldm9rZWRfc2VyaWFsX251bWJlciwKKyAgICAgICAgICAgICAgICAg ICAgIFg1MDlfZ2V0X3NlcmlhbE51bWJlcihYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0 KHg1MDlfY29udGV4dCkpKSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3Rfc3RyaW5nOworICAgICAgICAg ICAgICAgICAgICAgbG9uZyAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbDsKKy0gICAgICAg ICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICBzZXJpYWwgPSBBU04xX0lOVEVHRVJf Z2V0KHJldm9rZWRfc2VyaWFsX251bWJlcik7CisgCisgICAgICAgICAgICAgICAgICAgICBzdWJq ZWN0X3N0cmluZyA9IFg1MDlfTkFNRV9vbmVsaW5lKFg1MDlfZ2V0X3N1YmplY3RfbmFtZSgKKyAg ICAgICAgICAgICAgICAgICAgICAgICBYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0KHg1 MDlfY29udGV4dCkpLCBOVUxMLCAwKTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAg ICAgICAgICAgICBHTE9CVVNfR1NJX0NBTExCQUNLX0VSUk9SX1JFU1VMVCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dT SV9DQUxMQkFDS19FUlJPUl9SRVZPS0VEX0NFUlQsCitAQCAtMTMwMCw3ICsxMzAwLDcgQEAgZ2xv YnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX3Jldm9rZWQoCisgCisgICAgICAgICAgICAgICAgICAg ICBHTE9CVVNfSV9HU0lfQ0FMTEJBQ0tfREVCVUdfRlBSSU5URigKKyAgICAgICAgICAgICAgICAg ICAgICAgICAyLCAoZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2RlYnVnX2ZzdHJlYW0sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJyZXZva2VkICVsWFxuIiwgCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJyZXZva2VkICVsWFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQVNOMV9JTlRFR0VSX2dldChyZXZva2VkX3NlcmlhbF9udW1iZXIpKSk7CisgCisgICAgICAg ICAgICAgICAgICAgICBPUEVOU1NMX2ZyZWUoc3ViamVjdF9zdHJpbmcpOworQEAgLTEzMjUsMTAg KzEzMjUsMTAgQEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX3Jldm9rZWQoCisgICAgIHdo aWxlIChjcmxfd2FzX2V4cGlyZWQgJiYgIXJlY2hlY2tfY3JsX2RvbmUpOworIAorICBmcmVlX1g1 MDlfb2JqZWN0OgorLSAgICAKKysKKyAgICAgaWYgKHg1MDlfb2JqZWN0ICE9IE5VTEwpCisgICAg IHsKKy0JWDUwOV9PQkpFQ1RfZnJlZSh4NTA5X29iamVjdCk7CisrICAgICAgICBYNTA5X09CSkVD VF9mcmVlKHg1MDlfb2JqZWN0KTsKKyAgICAgfQorIAorICAgICBHTE9CVVNfSV9HU0lfQ0FMTEJB Q0tfREVCVUdfRVhJVDsKK0BAIC0xMzQ1LDcgKzEzNDUsNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJh Y2tfY2hlY2tfc2lnbmluZ19wb2xpY3koCisgICAgICAgICAiZ2xvYnVzX2lfZ3NpX2NhbGxiYWNr X2NoZWNrX3NpZ25pbmdfcG9saWN5IjsKKyAKKyAgICAgR0xPQlVTX0lfR1NJX0NBTExCQUNLX0RF QlVHX0VOVEVSOworLSAgICAKKysKKyAgICAgLyogRG8gbm90IG5lZWQgdG8gY2hlY2sgc2VsZiBz aWduZWQgY2VydHMgYWdhaW5zdCBjYV9wb2xpY3lfZmlsZSAqLworIAorICAgICBpZiAoWDUwOV9O QU1FX2NtcChYNTA5X2dldF9zdWJqZWN0X25hbWUoWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRf Y2VydCh4NTA5X2NvbnRleHQpKSwKK0BAIC0xMzcyLDcgKzEzNzIsNyBAQCBnbG9idXNfaV9nc2lf Y2FsbGJhY2tfY2hlY2tfc2lnbmluZ19wb2xpY3koCisgICAgIH0KKyAKKyAgZXhpdDoKKy0gICAg CisrCisgICAgIEdMT0JVU19JX0dTSV9DQUxMQkFDS19ERUJVR19FWElUOworICAgICByZXR1cm4g cmVzdWx0OworIH0KK0BAIC0xNDAxLDcgKzE0MDEsNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tf Y2hlY2tfZ2FhX2F1dGgoCisgICAgICAgICAiZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX2dh YV9hdXRoIjsKKyAKKyAgICAgR0xPQlVTX0lfR1NJX0NBTExCQUNLX0RFQlVHX0VOVEVSOworLSAg ICAKKysKKyAgICAgc3ViamVjdF9uYW1lID0gWDUwOV9OQU1FX29uZWxpbmUoCisgICAgICAgICBY NTA5X2dldF9zdWJqZWN0X25hbWUoWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydCh4NTA5 X2NvbnRleHQpKSwKKyAgICAgICAgIE5VTEwsCitAQCAtMTQxMCw3ICsxNDEwLDcgQEAgZ2xvYnVz X2lfZ3NpX2NhbGxiYWNrX2NoZWNrX2dhYV9hdXRoKAorICAgICAgICAgWDUwOV9nZXRfaXNzdWVy X25hbWUoWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydCh4NTA5X2NvbnRleHQpKSwKKyAg ICAgICAgIE5VTEwsCisgICAgICAgICAwKTsKKy0gICAgCisrCisgICAgIHJlc3VsdCA9CisgICAg ICAgICBHTE9CVVNfR1NJX1NZU0NPTkZJR19HRVRfU0lHTklOR19QT0xJQ1lfRklMRU5BTUUoCisg ICAgICAgICAgICAgWDUwOV9nZXRfaXNzdWVyX25hbWUoWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJl bnRfY2VydCh4NTA5X2NvbnRleHQpKSwKK0BAIC0xNDI5LDcgKzE0MjksNyBAQCBnbG9idXNfaV9n c2lfY2FsbGJhY2tfY2hlY2tfZ2FhX2F1dGgoCisgICAgIGlmKGNhX3BvbGljeV9maWxlX3BhdGgg PT0gTlVMTCkKKyAgICAgeworICAgICAgICAgLyogc2lnbmluZyBwb2xpY3kgZmlsZSBkb2Vzbid0 IGV4aXN0IG9yIGNhbid0IGJlIHJlYWQgKi8KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgIEdM T0JVU19HU0lfQ0FMTEJBQ0tfRVJST1JfUkVTVUxUKAorICAgICAgICAgICAgIHJlc3VsdCwKKyAg ICAgICAgICAgICBHTE9CVVNfR1NJX0NBTExCQUNLX0VSUk9SX1dJVEhfU0lHTklOR19QT0xJQ1ks CitAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX2dhYV9h dXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVyX25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJqZWN0X25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYV9wb2xpY3lfZmlsZV9wYXRoKQorLSAgICAgICAhPSBPTERH QUFfU1VDQ0VTUykgCisrICAgICAgICE9IE9MREdBQV9TVUNDRVNTKQorICAgICB7CisgICAgICAg ICBHTE9CVVNfR1NJX0NBTExCQUNLX0VSUk9SX1JFU1VMVCgKKyAgICAgICAgICAgICByZXN1bHQs CitAQCAtMTQ2Miw5ICsxNDYyLDkgQEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNrX2dhYV9h dXRoKAorICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmZ2xvYnVzX2xfZ3NpX2NhbGxiYWNr X29sZGdhYV9tdXRleCk7CisgICAgICAgICBnb3RvIGV4aXQ7CisgICAgIH0KKy0gICAgCisrCisg ICAgIGlmKG9sZGdhYV9nZXRfb2JqZWN0X3BvbGljeV9pbmZvKAorLSAgICAgICAgJm1pbm9yX3N0 YXR1cywgIAorKyAgICAgICAgJm1pbm9yX3N0YXR1cywKKyAgICAgICAgIE9MREdBQV9OT19EQVRB LAorICAgICAgICAgcG9saWN5X2RiLAorICAgICAgICAgb2xkZ2FhX2dsb2J1c19wb2xpY3lfcmV0 cmlldmUsCitAQCAtMTQ3OCwxNCArMTQ3OCwxNCBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY2hl Y2tfZ2FhX2F1dGgoCisgICAgICAgICBvbGRnYWFfZ2xvYnVzX2NsZWFudXAoJm9sZGdhYV9zYywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmlnaHRzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9wdGlvbnMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmRldGFpbGVkX2Fuc3dlciwgIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXRh aWxlZF9hbnN3ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5X2RiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgWDUwOV9TVE9S RV9DVFhfc2V0X2Vycm9yKHg1MDlfY29udGV4dCwgIFg1MDlfVl9FUlJfQVBQTElDQVRJT05fVkVS SUZJQ0FUSU9OKTsKKyAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmdsb2J1c19sX2dzaV9j YWxsYmFja19vbGRnYWFfbXV0ZXgpOworICAgICAgICAgZ290byBleGl0OworICAgICB9CistICAg IAorKworICAgICBwb2xpY3lfcmVzdWx0ID0gb2xkZ2FhX2NoZWNrX2F1dGhvcml6YXRpb24oCisg ICAgICAgICAmbWlub3Jfc3RhdHVzLAorICAgICAgICAgb2xkZ2FhX3NjLAorQEAgLTE0OTMsNyAr MTQ5Myw3IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jaGVja19nYWFfYXV0aCgKKyAgICAgICAg IHJpZ2h0cywKKyAgICAgICAgIG9wdGlvbnMsCisgICAgICAgICAmZGV0YWlsZWRfYW5zd2VyKTsK Ky0gICAgCisrCisgICAgIGlmICghZGV0YWlsZWRfYW5zd2VyKQorICAgICB7CisgICAgICAgICBH TE9CVVNfR1NJX0NBTExCQUNLX0VSUk9SX1JFU1VMVCgKK0BAIC0xNTA0LDExICsxNTA0LDExIEBA IGdsb2J1c19pX2dzaV9jYWxsYmFja19jaGVja19nYWFfYXV0aCgKKyAgICAgICAgICAgICAgaXNz dWVyX25hbWUgPT0gTlVMTCA/ICJOVUxMIiA6IGlzc3Vlcl9uYW1lLAorICAgICAgICAgICAgICBj YV9wb2xpY3lfZmlsZV9wYXRoID09IE5VTEwgPyAiTlVMTCIgOiBjYV9wb2xpY3lfZmlsZV9wYXRo KSk7CisgICAgICAgICBYNTA5X1NUT1JFX0NUWF9zZXRfZXJyb3IoeDUwOV9jb250ZXh0LCBYNTA5 X1ZfRVJSX0lOVkFMSURfUFVSUE9TRSk7CistICAgICAgICAKKysKKyAgICAgICAgIG9sZGdhYV9n bG9idXNfY2xlYW51cCgmb2xkZ2FhX3NjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZyaWdodHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmZGV0YWlsZWRfYW5zd2VyLCAgCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmRldGFpbGVkX2Fuc3dlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwb2xpY3lfZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCk7CisgICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfbF9nc2lfY2FsbGJh Y2tfb2xkZ2FhX211dGV4KTsKK0BAIC0xNTE3LDE1ICsxNTE3LDE1IEBAIGdsb2J1c19pX2dzaV9j YWxsYmFja19jaGVja19nYWFfYXV0aCgKKyAKKyAgICAgaWYoR0xPQlVTX0lfR1NJX0NBTExCQUNL X0RFQlVHKDIpKQorICAgICB7CistICAgICAgICAgICAgCisrCisgICAgICAgICBmcHJpbnRmKGds b2J1c19pX2dzaV9jYWxsYmFja19kZWJ1Z19mc3RyZWFtLAorICAgICAgICAgICAgICAgICAib2xk Z2FhIHJlc3VsdDogJWQoMCB5ZXMsIDEgbm8sIC0xIG1heWJlKVxuIiwgcG9saWN5X3Jlc3VsdCk7 CistICAgIAorLSAgICAgICAgaWYoZGV0YWlsZWRfYW5zd2VyKSAKKy0gICAgICAgIHsgCisrCisr ICAgICAgICBpZihkZXRhaWxlZF9hbnN3ZXIpCisrICAgICAgICB7CisgICAgICAgICAgICAgZnBy aW50ZihnbG9idXNfaV9nc2lfY2FsbGJhY2tfZGVidWdfZnN0cmVhbSwKKyAgICAgICAgICAgICAg ICAgICAgICJcbnByaW50IGRldGFpbGVkIGFuc3dlcjpcblxuIik7CistICAgICAgICAgICAgCisr CisgI2lmbmRlZiBXSU4zMgorICAgICAgICAgICAgIGlmKGRldGFpbGVkX2Fuc3dlci0+cmlnaHRz KQorICAgICAgICAgICAgIHsKK0BAIC0xNTM0LDIxICsxNTM0LDIxIEBAIGdsb2J1c19pX2dzaV9j YWxsYmFja19jaGVja19nYWFfYXV0aCgKKyAjZW5kaWYKKyAgICAgICAgIH0KKyAgICAgfQorLSAg ICAKKysKKyAgICAgaWYgKHBvbGljeV9oYW5kbGUpCisgICAgIHsKKyAgICAgICAgIG9sZGdhYV9y ZWxlYXNlX3ByaW5jaXBhbHMoJm1pbm9yX3N0YXR1cywgJnBvbGljeV9oYW5kbGUpOworICAgICB9 CistICAgIAorKworICAgICBvbGRnYWFfZ2xvYnVzX2NsZWFudXAoJm9sZGdhYV9zYywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICZyaWdodHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBvcHRpb25zLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmRldGFpbGVkX2Fuc3dlciwg IAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRldGFpbGVkX2Fuc3dlciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBvbGljeV9kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwpOworIAorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfbF9nc2lfY2FsbGJh Y2tfb2xkZ2FhX211dGV4KTsKKy0gICAgCisrCisgICAgIGlmIChwb2xpY3lfcmVzdWx0ICE9IDAp CisgICAgIHsKKyAgICAgICAgIEdMT0JVU19HU0lfQ0FMTEJBQ0tfRVJST1JfUkVTVUxUKAorQEAg LTE2MTAsOCArMTYxMCw4IEBAIGdsb2J1c19pX2dzaV9jYWxsYmFja19jaGVja19jcml0aWNhbF9l eHRlbnNpb25zKAorICAgICBwY2lfTklEID0gTklEX3Byb3h5Q2VydEluZm87CisgICAgIHBjaV9v bGRfTklEID0gT0JKX3R4dDJuaWQoIjEuMy42LjEuNC4xLjM1MzYuMS4yMjIiKTsKKyAKKy0gICAg d2hpbGUoKGNyaXRpY2FsX3Bvc2l0aW9uID0gCistICAgICAgICAgIFg1MDlfZ2V0X2V4dF9ieV9j cml0aWNhbChYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0KHg1MDlfY29udGV4dCksIAor KyAgICB3aGlsZSgoY3JpdGljYWxfcG9zaXRpb24gPQorKyAgICAgICAgICBYNTA5X2dldF9leHRf YnlfY3JpdGljYWwoWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydCh4NTA5X2NvbnRleHQp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgY3JpdGljYWxfcG9zaXRp b24pKSA+PSAwKQorICAgICB7CisgICAgICAgICBleHRlbnNpb24gPSBYNTA5X2dldF9leHQoWDUw OV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydCh4NTA5X2NvbnRleHQpLCBjcml0aWNhbF9wb3Np dGlvbik7CitAQCAtMTY3MSw3ICsxNjcxLDcgQEAgZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX2NoZWNr X2NyaXRpY2FsX2V4dGVuc2lvbnMoCisgCisgICAgICAgICAgICAgcG9saWN5ID0gcHJveHljZXJ0 aW5mby0+cHJveHlQb2xpY3k7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIGlm KChuaWQgIT0gTklEX2Jhc2ljX2NvbnN0cmFpbnRzICYmCisgICAgICAgICAgICAgbmlkICE9IE5J RF9rZXlfdXNhZ2UgJiYKKyAgICAgICAgICAgICBuaWQgIT0gTklEX2V4dF9rZXlfdXNhZ2UgJiYK K0BAIC0xNzI4LDcgKzE3MjgsNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY2hlY2tfcGF0aF9s ZW5ndGgoCisgICAgIFg1MDkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQgPSBO VUxMOworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQgID0g R0xPQlVTX1NVQ0NFU1M7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGk7CistICAgIAorKworICAgICBzdGF0aWMgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICBf ZnVuY3Rpb25fbmFtZV8gPQorICAgICAgICAgImdsb2J1c19pX2dzaV9jYWxsYmFja19jaGVja19w YXRoX2xlbmd0aCI7CisgCitAQCAtMTczNywxMSArMTczNywxMSBAQCBnbG9idXNfaV9nc2lfY2Fs bGJhY2tfY2hlY2tfcGF0aF9sZW5ndGgoCisgICAgIC8qCisgICAgICAqIFdlIGlnbm9yZWQgYW55 IHBhdGggbGVuZ3RoIHJlc3RyaWN0aW9uIGVycm9ycyBiZWNhdXNlCisgICAgICAqIE9wZW5TU0wg d2FzIGNvdW50aW5nIHByb3hpZXMgYWdhaW5zdCB0aGUgbGltaXQuCistICAgICAqIElmIHdlIGFy ZSBvbiB0aGUgbGFzdCBjZXJ0IGluIHRoZSBjaGFpbiwgd2UgCistICAgICAqIGtub3cgaG93IG1h bnkgYXJlIHByb3hpZXMsIHNvIHdlIGNhbiBkbyB0aGUgCistICAgICAqIHBhdGggbGVuZ3RoIGNo ZWNrIG5vdy4gCisrICAgICAqIElmIHdlIGFyZSBvbiB0aGUgbGFzdCBjZXJ0IGluIHRoZSBjaGFp biwgd2UKKysgICAgICoga25vdyBob3cgbWFueSBhcmUgcHJveGllcywgc28gd2UgY2FuIGRvIHRo ZQorKyAgICAgKiBwYXRoIGxlbmd0aCBjaGVjayBub3cuCisgICAgICAqIFNlZSB4NTA5X3ZmeS5j IGNoZWNrX2NoYWluX3B1cnBvc2UKKy0gICAgICogYWxsIHdlIGRvIGlzIHN1YnN0cmFjdCBvZmYg dGhlIHByb3h5X2RlcHRoIAorKyAgICAgKiBhbGwgd2UgZG8gaXMgc3Vic3RyYWN0IG9mZiB0aGUg cHJveHlfZGVwdGgKKyAgICAgICovCisgCisgICAgIGlmKFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJy ZW50X2NlcnQoeDUwOV9jb250ZXh0KSA9PSBYNTA5X1NUT1JFX0NUWF9nZXQwX2NlcnQoeDUwOV9j b250ZXh0KSkKK0BAIC0xNzU1LDcgKzE3NTUsNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY2hl Y2tfcGF0aF9sZW5ndGgoCisgICAgICAgICAgICAgICAgICAgICAicGF0aGxlbj06aT0lZCB4PSVw IHBsPSVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGksIGNlcnQsIFg1MDlfZ2V0X3BhdGhs ZW4oY2VydCkpKTsKKyAKKy0gICAgICAgICAgICBpZiAoKChpIC0gY2FsbGJhY2tfZGF0YS0+cHJv eHlfZGVwdGgpID4gMSkgJiYgCisrICAgICAgICAgICAgaWYgKCgoaSAtIGNhbGxiYWNrX2RhdGEt PnByb3h5X2RlcHRoKSA+IDEpICYmCisgICAgICAgICAgICAgICAgIChYNTA5X2dldF9wYXRobGVu KGNlcnQpICE9IC0xKSAmJgorICAgICAgICAgICAgICAgICAoKGkgLSBjYWxsYmFja19kYXRhLT5w cm94eV9kZXB0aCkgPiAoWDUwOV9nZXRfcGF0aGxlbihjZXJ0KSArIDEpKSAmJgorICAgICAgICAg ICAgICAgICAoWDUwOV9nZXRfZXh0ZW5zaW9uX2ZsYWdzKGNlcnQpICYgRVhGTEFHX0JDT05TKSkK K0BAIC0xNzY4LDcgKzE3NjgsNyBAQCBnbG9idXNfaV9nc2lfY2FsbGJhY2tfY2hlY2tfcGF0aF9s ZW5ndGgoCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAg ICBHTE9CVVNfSV9HU0lfQ0FMTEJBQ0tfREVCVUdfRVhJVDsKKyAgICAgcmV0dXJuIHJlc3VsdDsK KyB9CitkaWZmIC0tZ2l0IGEvZ3NpL2NhbGxiYWNrL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nc2lf Y2FsbGJhY2suaCBiL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9nbG9idXNfZ3NpX2NhbGxi YWNrLmgKK2luZGV4IDliYmY1OTAwYy4uODZiOTZiMmJmIDEwMDY0NAorLS0tIGEvZ3NpL2NhbGxi YWNrL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nc2lfY2FsbGJhY2suaAorKysrIGIvZ3NpL2NhbGxi YWNrL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nc2lfY2FsbGJhY2suaAorQEAgLTc0LDcgKzc0LDcg QEAKKyAgKiBAZW5kY29kZQorICAqCisgICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk IG9uY2UgZm9yIGVhY2ggdGltZSBHbG9idXMgR1NJIENhbGxiYWNrCistICogd2FzIGFjdGl2YXRl ZC4gCisrICogd2FzIGFjdGl2YXRlZC4KKyAgKgorICAqLworIAorQEAgLTg5LDE2ICs4OSwxNiBA QCBleHRlcm4gIkMiIHsKKyAgKi8KKyAjZGVmaW5lIEdMT0JVU19HU0lfQ0FMTEJBQ0tfTU9EVUxF ICAgICgmZ2xvYnVzX2lfZ3NpX2NhbGxiYWNrX21vZHVsZSkKKyAKKy1leHRlcm4gCisrZXh0ZXJu CisgZ2xvYnVzX21vZHVsZV9kZXNjcmlwdG9yX3QgICAgICAgICAgICAgIGdsb2J1c19pX2dzaV9j YWxsYmFja19tb2R1bGU7CisgCisgI2RlZmluZSBfQ0xTKHMpIGdsb2J1c19jb21tb25faTE4bl9n ZXRfc3RyaW5nKEdMT0JVU19HU0lfQ0FMTEJBQ0tfTU9EVUxFLFwKKy0JCXMpCisrICAgICAgICAg ICAgICAgIHMpCisgLyoqCisgICogQGRlZmdyb3VwIGdsb2J1c19nc2lfY2FsbGJhY2tfZnVuY3Rp b25zIENhbGxiYWNrIEZ1bmN0aW9ucworICAqIEBpbmdyb3VwIGdsb2J1c19nc2lfY2FsbGJhY2sK KyAgKiBAYnJpZWYgQ2FsbGJhY2sgRnVuY3Rpb25zCistICogCisrICoKKyAgKiBGdW5jdGlvbnMg dGhhdCBwbHVnIGludG8gdmFyaW91cyBwbHVnIHBvaW50cyBpbiB0aGUgT3BlblNTTCBwYXRoIHZh bGlkYXRpb24KKyAgKiBtZWNoYW5pc20uIFRoZXNlIGZ1bmN0aW9ucyBhZGQgQ1JMIGNoZWNraW5n LCBYNTA5IEV4dGVuc2lvbiBoYW5kbGluZyBhbmQKKyAgKiBwcm94eSB2YWxpZGF0aW9uLgorQEAg LTExMCw3ICsxMTAsNyBAQCBnbG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAgICAgICAgICAgICAg Z2xvYnVzX2lfZ3NpX2NhbGxiYWNrX21vZHVsZTsKKyAgKiBAYnJpZWYgQ2FsbGJhY2sgRGF0YSBG dW5jdGlvbnMKKyAgKgorICAqIEZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCB0aGUgZGF0YSBzdHJ1 Y3R1cmUgdGhhdCBjb250YWlucyBzdGF0ZSBhc3NvY2lhdGVkCistICogd2l0aCB0aGUgcGF0aCB2 YWxpZGF0aW9uIGNhbGxiYWNrLiAKKysgKiB3aXRoIHRoZSBwYXRoIHZhbGlkYXRpb24gY2FsbGJh Y2suCisgICovCisgCisgCitAQCAtMTU0LDcgKzE1NCw3IEBAIGludCBnbG9idXNfZ3NpX2NhbGxi YWNrX2NoZWNrX2lzc3VlZCgKKyAgICAgWDUwOSAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2VydCwKKyAgICAgWDUwOSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVy KTsKKyAKKy1pbnQgCisraW50CisgZ2xvYnVzX2dzaV9jYWxsYmFja19YNTA5X3ZlcmlmeV9jZXJ0 KAorICAgICBYNTA5X1NUT1JFX0NUWCAqICAgICAgICAgICAgICAgICAgICBjb250ZXh0LAorICAg ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpOworQEAgLTI5MSw3ICsy OTEsNyBAQCBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZ3NpX2NhbGxiYWNrX3NldF9hbGxvd19t aXNzaW5nX3NpZ25pbmdfcG9saWN5KAorICAgICBnbG9idXNfZ3NpX2NhbGxiYWNrX2RhdGFfdCAg ICAgICAgICBjYWxsYmFja19kYXRhLAorICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAg ICAgICAgICBhbGxvdyk7CistICAgIAorKworICNlbmRpZiAvKiBET1hZR0VOICovCisgCisgI2lm ZGVmIF9fY3BsdXNwbHVzCitkaWZmIC0tZ2l0IGEvZ3NpL2NhbGxiYWNrL3NvdXJjZS9saWJyYXJ5 L29sZGdhYS9nbG9idXNfb2xkZ2FhX3V0aWxzLmMgYi9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJh cnkvb2xkZ2FhL2dsb2J1c19vbGRnYWFfdXRpbHMuYworaW5kZXggNzg4NGNmNjFkLi40NjkzZTM5 MmMgMTAwNjQ0CistLS0gYS9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL2dsb2J1 c19vbGRnYWFfdXRpbHMuYworKysrIGIvZ3NpL2NhbGxiYWNrL3NvdXJjZS9saWJyYXJ5L29sZGdh YS9nbG9idXNfb2xkZ2FhX3V0aWxzLmMKK0BAIC0xNSw3ICsxNSw3IEBACisgICovCisgCisgLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKy0gZ2xvYnVzX29sZGdhYS11dGlscy5jOgorKyAgICBnbG9idXNfb2xkZ2Fh LXV0aWxzLmM6CisgCisgRGVzY3JpcHRpb246CisgICAgICAgICBHbG9idXMtT0xER0FBIHJvdXRp bmVzCitAQCAtMjcsMTcgKzI3LDE3IEBAIERlc2NyaXB0aW9uOgorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisg CisgI2luY2x1ZGUgImdsb2J1c19vbGRnYWEuaCIKKy0jaW5jbHVkZSAiZ2xvYnVzX29sZGdhYV91 dGlscy5oIiAKKysjaW5jbHVkZSAiZ2xvYnVzX29sZGdhYV91dGlscy5oIgorICNpbmNsdWRlICJv bGRnYWFfZ2xfaW50ZXJuYWxfZXJyLmgiCisgI2luY2x1ZGUgIm9sZGdhYV9wb2xpY3lfZXZhbHVh dG9yLmgiCisgCisgI2luY2x1ZGUgIm9sZGdhYV91dGlscy5oIgorICNpbmNsdWRlICJnbG9idXNf aV9nc2lfY2FsbGJhY2tfY29uZmlnLmgiCisgCistI2luY2x1ZGUgPHN0cmluZy5oPgkvKiBmb3Ig c3RyZXJyb3IoKSAqLworKyNpbmNsdWRlIDxzdHJpbmcuaD4gICAgIC8qIGZvciBzdHJlcnJvcigp ICovCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRl IDxlcnJuby5oPiAKKysjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKyAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAg ICAgICAgICAgICAgICAgICAgICAgRGVmaW5lIG1vZHVsZSBzcGVjaWZpYyB2YXJpYWJsZXMKK0BA IC02MSwxMCArNjEsMTAgQEAgb2xkZ2FhX2dsb2J1c19yZWFkX3N0cmluZyAocG9saWN5X2ZpbGVf Y29udGV4dF9wdHIgIHBjb250ZXh0LAorIAorIHN0YXRpYyBvbGRnYWFfZXJyb3JfY29kZQorIG9s ZGdhYV9nbG9idXNfcGFyc2VfcHJpbmNpcGFscyhwb2xpY3lfZmlsZV9jb250ZXh0X3B0ciAgcGNv bnRleHQsCistCQkJICAgICAgIG9sZGdhYV9wb2xpY3lfcHRyICAgICAgICAgICpwb2xpY3ksCist CQkJICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICp0bXBfc3RyIC8qIElOJk9VVCAqLywK Ky0JCQkgICAgICAgb2xkZ2FhX3ByaW5jaXBhbHNfcHRyICAgICAgKnN0YXJ0LAorLQkJCSAgICAg ICBvbGRnYWFfcHJpbmNpcGFsc19wdHIgICAgKmFkZGVkX3ByaW5jaXBhbCk7CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9wb2xpY3lfcHRyICAgICAgICpwb2xpY3ksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICp0 bXBfc3RyIC8qIElOJk9VVCAqLywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xk Z2FhX3ByaW5jaXBhbHNfcHRyICAgKnN0YXJ0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvbGRnYWFfcHJpbmNpcGFsc19wdHIgICAqYWRkZWRfcHJpbmNpcGFsKTsKKyAKKyBzdGF0 aWMKKyBpbnQKK0BAIC03NywyNSArNzcsMjUgQEAgb2xkZ2FhX2dsb2J1c19vbWl0X2NvbW1lbnRf bGluZShwb2xpY3lfZmlsZV9jb250ZXh0X3B0ciAgcGNvbnRleHQpOworIAorIHN0YXRpYyB2b2lk Cisgb2xkZ2FhX2JpbmRfcmlnaHRzX3RvX2NvbmRpdGlvbihvbGRnYWFfcmlnaHRzX3B0ciAgICAg ICAgcmlnaHQsCistCQkJCW9sZGdhYV9jb25kX2JpbmRpbmdzX3B0ciBjb25kX2JpbmQpCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfY29uZF9iaW5kaW5nc19wdHIgY29u ZF9iaW5kKQorIHsKKyAgICAgcmlnaHQtPmNvbmRfYmluZGluZ3MgPSBjb25kX2JpbmQ7CisgICAg IGNvbmRfYmluZC0+cmVmZXJlbmNlX2NvdW50Kys7CisgI2lmZGVmIERFQlVHCisgICAgIGZwcmlu dGYoc3RkZXJyLCJvbGRnYWFfYmluZF9yaWdodHNfdG9fY29uZGl0aW9uczpyaWdodHM6JXAtPmNv bmRfYmluZDolcFxuIiwKKy0JICAgIHJpZ2h0LCBjb25kX2JpbmQpOworKyAgICAgICAgICAgIHJp Z2h0LCBjb25kX2JpbmQpOworICNlbmRpZgorLX0gIAorK30KKyAKKyBzdGF0aWMgdm9pZAorLW9s ZGdhYV9iaW5kX3JpZ2h0c190b19wcmluY2lwYWwob2xkZ2FhX3ByaW5jaXBhbHNfcHRyIHByaW5j aXBhbCwgCisrb2xkZ2FhX2JpbmRfcmlnaHRzX3RvX3ByaW5jaXBhbChvbGRnYWFfcHJpbmNpcGFs c19wdHIgcHJpbmNpcGFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2Fh X3JpZ2h0c19wdHIgICAgIHJpZ2h0cykKKyB7CisgICAgIGlmIChwcmluY2lwYWwtPnJpZ2h0cykK Ky0gb2xkZ2FhX2FkZF9yaWdodHMoJihwcmluY2lwYWwtPnJpZ2h0cyksIHJpZ2h0cyk7CisrICAg ICAgICBvbGRnYWFfYWRkX3JpZ2h0cygmKHByaW5jaXBhbC0+cmlnaHRzKSwgcmlnaHRzKTsKKyAg ICAgZWxzZSB7CistCXByaW5jaXBhbC0+cmlnaHRzID0gcmlnaHRzOworLQlyaWdodHMtPnJlZmVy ZW5jZV9jb3VudCsrOworKyAgICAgICAgcHJpbmNpcGFsLT5yaWdodHMgPSByaWdodHM7CisrICAg ICAgICByaWdodHMtPnJlZmVyZW5jZV9jb3VudCsrOworICAgICB9CisgfQorIAorQEAgLTEwNiw1 MSArMTA2LDUxIEBAIHByaW50X2NvbmRpdGlvbl9iaW5kaW5nKG9sZGdhYV9jb25kX2JpbmRpbmdz X3B0ciBjYikKKyB7CisgICAgIG9sZGdhYV9jb25kaXRpb25zX3B0ciBjOworICAgICBmb3IgKDsg Y2I7IGNiID0gY2ItPm5leHQpIHsKKy0JZnByaW50ZihzdGRlcnIsICIgICAgICAgIGNvbmRpdGlv biBiaW5kaW5nICV4XG4iLCBjYik7CistCWZvciAoYyA9IGNiLT5jb25kaXRpb247IGM7IGMgPSBj LT5uZXh0KSB7CistCSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgICAgIGNvbmRpdGlvbiAo JXMsICVzLCAlcylcbiIsCistCQkgICAgTk4oYy0+dHlwZSksIE5OKGMtPmF1dGhvcml0eSksIE5O KGMtPnZhbHVlKSk7CistCX0KKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgICBjb25k aXRpb24gYmluZGluZyAleFxuIiwgY2IpOworKyAgICAgICAgZm9yIChjID0gY2ItPmNvbmRpdGlv bjsgYzsgYyA9IGMtPm5leHQpIHsKKysgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAg ICAgICAgIGNvbmRpdGlvbiAoJXMsICVzLCAlcylcbiIsCisrICAgICAgICAgICAgICAgICAgICBO TihjLT50eXBlKSwgTk4oYy0+YXV0aG9yaXR5KSwgTk4oYy0+dmFsdWUpKTsKKysgICAgICAgIH0K KyAgICAgfQorIH0KKyBzdGF0aWMgdm9pZAorIHByaW50X29sZGdhYV9wcmluY2lwYWxfcHRyKG9s ZGdhYV9wcmluY2lwYWxzX3B0ciBwcikKKyB7CisgICAgIG9sZGdhYV9yaWdodHNfcHRyIHI7Cist ICAgIAorKworICAgICBmb3IgKDsgcHI7IHByID0gcHItPm5leHQpIHsKKy0JZnByaW50ZihzdGRl cnIsICJwcmluY2lwYWwgKCVzLCAlcywgJXMpOiAleFxuIiwKKy0JCU5OKHByLT50eXBlKSwgTk4o cHItPmF1dGhvcml0eSksIE5OKHByLT52YWx1ZSksCistCQlwci0+cmlnaHRzKTsKKy0JZm9yIChy ID0gcHItPnJpZ2h0czsgcjsgciA9IHItPm5leHQpIHsKKy0JICAgIGZwcmludGYoc3RkZXJyLCAi ICAgIHJpZ2h0ICglcywgJXMsICVzKVxuIiwKKy0JCSAgICBOTihyLT50eXBlKSwgTk4oci0+YXV0 aG9yaXR5KSwgTk4oci0+dmFsdWUpKTsKKy0JICAgIHByaW50X2NvbmRpdGlvbl9iaW5kaW5nKHIt PmNvbmRfYmluZGluZ3MpOworLQl9CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInByaW5jaXBh bCAoJXMsICVzLCAlcyk6ICV4XG4iLAorKyAgICAgICAgICAgICAgICBOTihwci0+dHlwZSksIE5O KHByLT5hdXRob3JpdHkpLCBOTihwci0+dmFsdWUpLAorKyAgICAgICAgICAgICAgICBwci0+cmln aHRzKTsKKysgICAgICAgIGZvciAociA9IHByLT5yaWdodHM7IHI7IHIgPSByLT5uZXh0KSB7Cisr ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgcmlnaHQgKCVzLCAlcywgJXMpXG4iLAor KyAgICAgICAgICAgICAgICAgICAgTk4oci0+dHlwZSksIE5OKHItPmF1dGhvcml0eSksIE5OKHIt PnZhbHVlKSk7CisrICAgICAgICAgICAgcHJpbnRfY29uZGl0aW9uX2JpbmRpbmcoci0+Y29uZF9i aW5kaW5ncyk7CisrICAgICAgICB9CisgICAgIH0KKyB9CisgI2VuZGlmIC8qIExERUJVRyAqLwor IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCistICBPTERHQUEgQ2xlYW51cCBGdW5jdGlvbnMgCisrICBPTERHQUEg Q2xlYW51cCBGdW5jdGlvbnMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorIG9sZGdhYV9lcnJvcl9jb2Rl Cisgb2xkZ2FhX2dsb2J1c19jbGVhbnVwKG9sZGdhYV9zZWNfY29udGV4dF9wdHIgKm9sZGdhYV9z YywKKyAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX3JpZ2h0c19wdHIgICAgICAqcmlnaHRz LAorICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfb3B0aW9uc19wdHIgICAgICBvcHRpb25z LAorLSAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfYW5zd2VyX3B0ciAgICAgICphbnN3ZXIs ICAKKy0gICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX2RhdGFfcHRyICAgICAgICAgcG9saWN5 X2RiLCAKKysgICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX2Fuc3dlcl9wdHIgICAgICAqYW5z d2VyLAorKyAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfZGF0YV9wdHIgICAgICAgICBwb2xp Y3lfZGIsCisgICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9zZWNfYXR0cmJfcHRyICAgKmF0 dHJpYnV0ZXMpCisgeworICAgICBvbGRnYWFfZXJyb3JfY29kZSBvbGRnYWFfc3RhdHVzID0gT0xE R0FBX1NVQ0NFU1M7CistICAgIHVpbnQzMiAgICAgICAgIG1pbm9yX3N0YXR1czsKKy0gICAgICAg IAorLSAgICBpZihvbGRnYWFfc2MpICAgIG9sZGdhYV9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9z ZWNfY29udGV4dCgmbWlub3Jfc3RhdHVzLCBvbGRnYWFfc2MpOyAKKy0gICAgaWYocmlnaHRzKSAg ICBvbGRnYWFfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfcmlnaHRzKCZtaW5vcl9zdGF0dXMsIHJp Z2h0cyk7ICAgCistICAgIGlmKG9wdGlvbnMpICAgb2xkZ2FhX3N0YXR1cyA9IG9sZGdhYV9yZWxl YXNlX29wdGlvbnMoJm1pbm9yX3N0YXR1cywgb3B0aW9ucyk7ICAKKysgICAgdWludDMyICAgICAg ICAgICAgbWlub3Jfc3RhdHVzOworKworKyAgICBpZihvbGRnYWFfc2MpIG9sZGdhYV9zdGF0dXMg PSBvbGRnYWFfcmVsZWFzZV9zZWNfY29udGV4dCgmbWlub3Jfc3RhdHVzLCBvbGRnYWFfc2MpOwor KyAgICBpZihyaWdodHMpICAgIG9sZGdhYV9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9yaWdodHMo Jm1pbm9yX3N0YXR1cywgcmlnaHRzKTsKKysgICAgaWYob3B0aW9ucykgICBvbGRnYWFfc3RhdHVz ID0gb2xkZ2FhX3JlbGVhc2Vfb3B0aW9ucygmbWlub3Jfc3RhdHVzLCBvcHRpb25zKTsKKyAgICAg aWYoYW5zd2VyKSAgICBvbGRnYWFfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYW5zd2VyKCZtaW5v cl9zdGF0dXMsIGFuc3dlcik7CisgICAgIGlmKHBvbGljeV9kYikgb2xkZ2FhX3N0YXR1cyA9IG9s ZGdhYV9yZWxlYXNlX2RhdGEoJm1pbm9yX3N0YXR1cywgcG9saWN5X2RiKTsKKy0gICAgaWYoYXR0 cmlidXRlcylvbGRnYWFfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2Vfc2VjX2F0dHJiKCZtaW5vcl9z dGF0dXMsIGF0dHJpYnV0ZXMpOyAKKysgICAgaWYoYXR0cmlidXRlcylvbGRnYWFfc3RhdHVzID0g b2xkZ2FhX3JlbGVhc2Vfc2VjX2F0dHJiKCZtaW5vcl9zdGF0dXMsIGF0dHJpYnV0ZXMpOworIAor ICAgICByZXR1cm4gb2xkZ2FhX3N0YXR1czsKKyB9CitAQCAtMTU4LDQ0ICsxNTgsNDQgQEAgb2xk Z2FhX2dsb2J1c19jbGVhbnVwKG9sZGdhYV9zZWNfY29udGV4dF9wdHIgKm9sZGdhYV9zYywKKyAK KyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorLSAgT0xER0FBIEluaXRpYWxpemF0aW9uIEZ1bmN0aW9ucyAK KysgIE9MREdBQSBJbml0aWFsaXphdGlvbiBGdW5jdGlvbnMKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAor IG9sZGdhYV9lcnJvcl9jb2RlCisgb2xkZ2FhX2dsb2J1c19pbml0aWFsaXplKG9sZGdhYV9zZWNf Y29udGV4dF9wdHIgKm9sZGdhYV9zYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2Fh X3JpZ2h0c19wdHIgICAgICAqcmlnaHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRn YWFfb3B0aW9uc19wdHIgICAgICpvcHRpb25zLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBv bGRnYWFfZGF0YV9wdHIgICAgICAgICpwb2xpY3lfZGIsIAorLSAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICAgICAgICAgICAgICAgICpzaWduZXIsIAorLSAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICAgICAgICAgICAgICAgICpzdWJqZWN0LAorLSAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFyICAgICAgICAgICAgICAgICpwYXRoKQorLXsgCisrICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZGdhYV9kYXRhX3B0ciAgICAgICAgKnBvbGljeV9kYiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAqc2lnbmVyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICpzdWJqZWN0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICpwYXRoKQorK3sKKyAgICAg aW50IGVycm9yPTA7CisgCisgICAgIC8qIEFsbG9jYXRlIGFuZCBmaWxsIGluIE9MREdBQS1HbG9i dXMgZGF0YSBzdHJ1Y3R1cmVzICovCisgCistICAgIGlmKG9sZGdhYV9zYykgKm9sZGdhYV9zYyA9 IG9sZGdhYV9nbG9idXNfYWxsb2NhdGVfc2VjX2NvbnRleHQoc2lnbmVyKTsgCisrICAgIGlmKG9s ZGdhYV9zYykgKm9sZGdhYV9zYyA9IG9sZGdhYV9nbG9idXNfYWxsb2NhdGVfc2VjX2NvbnRleHQo c2lnbmVyKTsKKyAgICAgaWYocmlnaHRzKSAqcmlnaHRzID0gb2xkZ2FhX2dsb2J1c19hbGxvY2F0 ZV9yaWdodHMoKTsKKy0gICAgCistICAgIGlmKG9wdGlvbnMpIAorKworKyAgICBpZihvcHRpb25z KQorICAgICB7CisgICAgICAgICBvbGRnYWFfYWxsb2NhdGVfb3B0aW9ucyhvcHRpb25zKTsKKy0g ICAgICAgICgqb3B0aW9ucyktPnZhbHVlICA9IG9sZGdhYV9zdHJjb3B5KHN1YmplY3QsICgqb3B0 aW9ucyktPnZhbHVlKTsgIAorLSAgICAgICAgKCpvcHRpb25zKS0+bGVuZ3RoID0gc3RybGVuKHN1 YmplY3QpOyAKKysgICAgICAgICgqb3B0aW9ucyktPnZhbHVlICA9IG9sZGdhYV9zdHJjb3B5KHN1 YmplY3QsICgqb3B0aW9ucyktPnZhbHVlKTsKKysgICAgICAgICgqb3B0aW9ucyktPmxlbmd0aCA9 IHN0cmxlbihzdWJqZWN0KTsKKyAgICAgfQorIAorICAgICBpZihwb2xpY3lfZGIpCistICAgIHsg ICAgICAgCisrICAgIHsKKyAgICAgICAgIG9sZGdhYV9hbGxvY2F0ZV9kYXRhKHBvbGljeV9kYik7 CistICAgCisrCisgICAgICAgICBpZihwYXRoKSAoKnBvbGljeV9kYiktPnN0ciA9IG9sZGdhYV9z dHJjb3B5KHBhdGgsKCpwb2xpY3lfZGIpLT5zdHIpOworICAgICAgICAgZWxzZQorLSBlcnJvciA9 IGdldF9kZWZhdWx0X3BvbGljeV9maWxlKCpwb2xpY3lfZGIpOworKyAgICAgICAgICAgIGVycm9y ID0gZ2V0X2RlZmF1bHRfcG9saWN5X2ZpbGUoKnBvbGljeV9kYik7CisgICAgIH0KKyAKKyAgICAg aWYoZXJyb3IpcmV0dXJuIE9MREdBQV9GQUlMVVJFOworICAgICBlbHNlCistIHJldHVybiBPTERH QUFfU1VDQ0VTUzsKKysgICAgICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKyB9CisgCisgCitA QCAtMjA0LDQ0ICsyMDQsNDQgQEAgb2xkZ2FhX2dsb2J1c19pbml0aWFsaXplKG9sZGdhYV9zZWNf Y29udGV4dF9wdHIgKm9sZGdhYV9zYywKKyBGdW5jdGlvbjogb2xkZ2FhX2dsb2J1c19hbGxvY2F0 ZV9zZWNfY29udGV4dAorIAorIERlc2NyaXB0aW9uOgorLQlBbGxvY2F0ZXMgT0xER0FBIHNlY3Vy aXR5IGNvbnRleHQgYW5kIGZpbGxzIGluIGdsb2J1cy1zcGVjaWZpYyAKKysgICAgICAgIEFsbG9j YXRlcyBPTERHQUEgc2VjdXJpdHkgY29udGV4dCBhbmQgZmlsbHMgaW4gZ2xvYnVzLXNwZWNpZmlj CisgICAgICAgICBpbmZvcm1hdGlvbi4KKyAKKyBQYXJhbWV0ZXJzOgorLQlzaWduZXIsIHBvaW50 ZXIgdG8gc3RyaW5nIHdpdGggbmFtZSBvZiBjcmVkZW50aWFsIHNpZ25lci4KKysgICAgICAgIHNp Z25lciwgcG9pbnRlciB0byBzdHJpbmcgd2l0aCBuYW1lIG9mIGNyZWRlbnRpYWwgc2lnbmVyLgor IAorIFJldHVybnM6CistCVBvaW50ZXIgdG8gYSBvbGRnYWFfc2VjX2NvbnRleHQgaWYgc3VjY2Vz c2Z1bAorKyAgICAgICAgUG9pbnRlciB0byBhIG9sZGdhYV9zZWNfY29udGV4dCBpZiBzdWNjZXNz ZnVsCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKyAKKyBvbGRnYWFfc2VjX2NvbnRleHRfcHRyCisgb2xkZ2Fh X2dsb2J1c19hbGxvY2F0ZV9zZWNfY29udGV4dChjaGFyICpzaWduZXIpCisgeworICAgICBvbGRn YWFfc2VjX2NvbnRleHRfcHRyIHNjID0gTlVMTDsKKy0gIAorKworICAgICBvbGRnYWFfYWxsb2Nh dGVfc2VjX2NvbnRleHQoJnNjKTsKKy0gIAorLSAgICBpZihzdHJjbXAoc2lnbmVyLCBPTERHQUFf QU5ZQk9EWSkgPT0gMCkgCisrCisrICAgIGlmKHN0cmNtcChzaWduZXIsIE9MREdBQV9BTllCT0RZ KSA9PSAwKQorICAgICB7CistICAgICAgICBzYy0+aWRlbnRpdHlfY3JlZC0+cHJpbmNpcGFsLT50 eXBlID0gb2xkZ2FhX3N0cmNvcHkoT0xER0FBX0FOWUJPRFksIAorKyAgICAgICAgc2MtPmlkZW50 aXR5X2NyZWQtPnByaW5jaXBhbC0+dHlwZSA9IG9sZGdhYV9zdHJjb3B5KE9MREdBQV9BTllCT0RZ LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNjLT5pZGVudGl0eV9jcmVkLT5wcmluY2lwYWwtPnR5cGUpOworIAorICAgICAgICAg c2MtPmlkZW50aXR5X2NyZWQtPnByaW5jaXBhbC0+YXV0aG9yaXR5ID0gb2xkZ2FhX3N0cmNvcHko IiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2MtPmlkZW50aXR5X2NyZWQtPnByaW5jaXBhbC0+YXV0aG9yaXR5KTsK KyAKKy0gICAgICAgIHNjLT5pZGVudGl0eV9jcmVkLT5wcmluY2lwYWwtPnZhbHVlID0gb2xkZ2Fh X3N0cmNvcHkoIiAiLCAKKysgICAgICAgIHNjLT5pZGVudGl0eV9jcmVkLT5wcmluY2lwYWwtPnZh bHVlID0gb2xkZ2FhX3N0cmNvcHkoIiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYy0+aWRlbnRpdHlfY3JlZC0+cHJpbmNp cGFsLT52YWx1ZSk7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistICAgICAgICBzYy0+aWRl bnRpdHlfY3JlZC0+cHJpbmNpcGFsLT50eXBlID0gb2xkZ2FhX3N0cmNvcHkoT0xER0FBX0NBLCAK KysgICAgICAgIHNjLT5pZGVudGl0eV9jcmVkLT5wcmluY2lwYWwtPnR5cGUgPSBvbGRnYWFfc3Ry Y29weShPTERHQUFfQ0EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2MtPmlkZW50aXR5X2NyZWQtPnByaW5jaXBhbC0+dHlwZSk7 CistICAgCistICAgICAgICBzYy0+aWRlbnRpdHlfY3JlZC0+cHJpbmNpcGFsLT5hdXRob3JpdHkg PSBvbGRnYWFfc3RyY29weShPTERHQUFfWDUwOV9BVVRIT1JJVFksIAorKworKyAgICAgICAgc2Mt PmlkZW50aXR5X2NyZWQtPnByaW5jaXBhbC0+YXV0aG9yaXR5ID0gb2xkZ2FhX3N0cmNvcHkoT0xE R0FBX1g1MDlfQVVUSE9SSVRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmlkZW50aXR5X2NyZWQtPnByaW5jaXBh bC0+YXV0aG9yaXR5KTsKKy0gICAgCistICAgICAgICBzYy0+aWRlbnRpdHlfY3JlZC0+cHJpbmNp cGFsLT52YWx1ZSA9IG9sZGdhYV9zdHJjb3B5KHNpZ25lciwgCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjLT5pZGVudGl0eV9j cmVkLT5wcmluY2lwYWwtPnZhbHVlKTsgCisrCisrICAgICAgICBzYy0+aWRlbnRpdHlfY3JlZC0+ cHJpbmNpcGFsLT52YWx1ZSA9IG9sZGdhYV9zdHJjb3B5KHNpZ25lciwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2MtPmlkZW50 aXR5X2NyZWQtPnByaW5jaXBhbC0+dmFsdWUpOworICAgICB9CisgCisgICAgIHJldHVybiBzYzsK K0BAIC0yNDksMTcgKzI0OSwxNyBAQCBvbGRnYWFfZ2xvYnVzX2FsbG9jYXRlX3NlY19jb250ZXh0 KGNoYXIgKnNpZ25lcikKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIAorLUZ1bmN0aW9uOiBvbGRnYWFf Z2xvYnVzX2FsbG9jYXRlX3JpZ2h0cygpIAorK0Z1bmN0aW9uOiBvbGRnYWFfZ2xvYnVzX2FsbG9j YXRlX3JpZ2h0cygpCisgCisgRGVzY3JpcHRpb246CistCUFsbG9jYXRlcyBPTERHQUEgcmlnaHRz IHN0cmFjdHVyZSBhbmQgZmlsbHMgaW4gZ2xvYnVzLXNwZWNpZmljIAorKyAgICAgICAgQWxsb2Nh dGVzIE9MREdBQSByaWdodHMgc3RyYWN0dXJlIGFuZCBmaWxscyBpbiBnbG9idXMtc3BlY2lmaWMK KyAgICAgICAgIGluZm9ybWF0aW9uLi4KKyAKKyBQYXJhbWV0ZXJzOgorLQlub25lCisrICAgICAg ICBub25lCisgCisgUmV0dXJuczoKKy0JUG9pbnRlciB0byBhIG9sZGdhYV9yaWdodHMgaWYgc3Vj Y2Vzc2Z1bAorKyAgICAgICAgUG9pbnRlciB0byBhIG9sZGdhYV9yaWdodHMgaWYgc3VjY2Vzc2Z1 bAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisgCisgb2xkZ2FhX3JpZ2h0c19wdHIKK0BAIC0yNjksNyArMjY5 LDcgQEAgb2xkZ2FhX2dsb2J1c19hbGxvY2F0ZV9yaWdodHMoKQorIAorICAgICBvbGRnYWFfYWxs b2NhdGVfcmlnaHRzKCZyaWdodHMpOworICAgICByaWdodHMtPnJlZmVyZW5jZV9jb3VudCsrOwor LSAgICAgIAorKworICAgICByaWdodHMtPnR5cGUgICAgICAgPSBvbGRnYWFfc3RyY29weShQT1NJ VElWRV9SSUdIVFMsICAgICByaWdodHMtPnR5cGUpOworICAgICByaWdodHMtPmF1dGhvcml0eSAg PSBvbGRnYWFfc3RyY29weShBVVRIX0dMT0JVUywgICAgICAgICByaWdodHMtPmF1dGhvcml0eSk7 CisgICAgIHJpZ2h0cy0+dmFsdWUgICAgICA9IG9sZGdhYV9zdHJjb3B5KEdMT0JVU19SSUdIVFNf VkFMVUUsIHJpZ2h0cy0+dmFsdWUpOworQEAgLTI3OSwzNCArMjc5LDM0IEBAIG9sZGdhYV9nbG9i dXNfYWxsb2NhdGVfcmlnaHRzKCkKKyB9CisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gIFBvbGljeSBS ZXRyaWV2aW5nIEZ1bmN0aW9ucyAKKysgIFBvbGljeSBSZXRyaWV2aW5nIEZ1bmN0aW9ucworICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAKKy1GdW5jdGlvbjogb2xkZ2FhX2ds b2J1c19wb2xpY3lfcmV0cmlldmUoKSAKKytGdW5jdGlvbjogb2xkZ2FhX2dsb2J1c19wb2xpY3lf cmV0cmlldmUoKQorIAorIERlc2NyaXB0aW9uOgorICAgICAgICAgVXBjYWxsIGZ1bmN0aW9uIGZv ciB0aGUgcmV0cmlldmFsIG9mIHRoZSBvYmplY3QgcG9saWN5LgorIAorIFBhcmFtZXRlcnM6Cist ICAgICAgICBvYmplY3QsICAgIHBvaW50ZXIgdG8gc3RyaW5nIHdpdGggbmFtZSBvZiBwcm90ZWN0 ZWQgb2JqZWN0LCAKKysgICAgICAgIG9iamVjdCwgICAgcG9pbnRlciB0byBzdHJpbmcgd2l0aCBu YW1lIG9mIHByb3RlY3RlZCBvYmplY3QsCisgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBOVUxM CistCXBvbGljeV9kYiwgcG9pbnRlciB0byBzdHJpbmcgd2l0aCBuYW1lIG9mIHBvbGljeSBmaWxl CisrICAgICAgICBwb2xpY3lfZGIsIHBvaW50ZXIgdG8gc3RyaW5nIHdpdGggbmFtZSBvZiBwb2xp Y3kgZmlsZQorIAorIFJldHVybnM6CistCVBvaW50ZXIgdG8gYSBwb2xpY3lfZmlsZV9jb250ZXh0 X3B0ciBpZiBzdWNjZXNzZnVsCistCU5VTEwgb24gZXJyb3IsIHNldHRpbmcgZXJybm8uCisrICAg ICAgICBQb2ludGVyIHRvIGEgcG9saWN5X2ZpbGVfY29udGV4dF9wdHIgaWYgc3VjY2Vzc2Z1bAor KyAgICAgICAgTlVMTCBvbiBlcnJvciwgc2V0dGluZyBlcnJuby4KKyAKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworIAorLW9sZGdhYV9wb2xpY3lfcHRyIAorK29sZGdhYV9wb2xpY3lfcHRyCisgb2xkZ2FhX2ds b2J1c19wb2xpY3lfcmV0cmlldmUodWludDMyICAgICAgKm1pbm9yX3N0YXR1cywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfZGF0YV9wdHIgb2JqZWN0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9kYXRhX3B0ciBwb2xpY3lfZGIsIC4uLikKKy17 IAorLSAgICBwb2xpY3lfZmlsZV9jb250ZXh0X3B0ciAgIHBjb250ZXh0ICAgICAgPSBOVUxMOyAK Ky0gICAgb2xkZ2FhX3BvbGljeV9wdHIgICAgICAgICAgICBwb2xpY3lfaGFuZGxlID0gTlVMTDsK Kyt7CisrICAgIHBvbGljeV9maWxlX2NvbnRleHRfcHRyICAgcGNvbnRleHQgICAgICA9IE5VTEw7 CisrICAgIG9sZGdhYV9wb2xpY3lfcHRyICAgICAgICAgcG9saWN5X2hhbmRsZSA9IE5VTEw7Cisg ICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdHlwZSAgICA9ICAxOworIAorICNp ZmRlZiBERUJVRworQEAgLTMxOSwyMiArMzE5LDIyIEBAIG9sZGdhYV9nbG9idXNfcG9saWN5X3Jl dHJpZXZlKHVpbnQzMiAgICAgICptaW5vcl9zdGF0dXMsCisgCisgICAgIGlmIChwY29udGV4dCkg IC8qIHBhcnNlIHBvbGljeSAqLworICAgICB7CistICAgICAgICBpZihvbGRnYWFfZ2xvYnVzX3Bh cnNlX3BvbGljeShwY29udGV4dCwgCisrICAgICAgICBpZihvbGRnYWFfZ2xvYnVzX3BhcnNlX3Bv bGljeShwY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZw b2xpY3lfaGFuZGxlKSA9PSBPTERHQUFfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAjaWZkZWYgREVC VUcKKyAgICAgICAgICAgICB7CistCQlvbGRnYWFfcHJpbmNpcGFsc19wdHIgcHA7CistCQlvbGRn YWFfcmlnaHRzX3B0ciAgICAgcnA7CistCQlvbGRnYWFfY29uZF9iaW5kaW5nc19wdHIgYnA7Cist CQlvbGRnYWFfY29uZGl0aW9uc19wdHIgICAgY3A7CisrICAgICAgICAgICAgICAgIG9sZGdhYV9w cmluY2lwYWxzX3B0ciBwcDsKKysgICAgICAgICAgICAgICAgb2xkZ2FhX3JpZ2h0c19wdHIgICAg IHJwOworKyAgICAgICAgICAgICAgICBvbGRnYWFfY29uZF9iaW5kaW5nc19wdHIgYnA7CisrICAg ICAgICAgICAgICAgIG9sZGdhYV9jb25kaXRpb25zX3B0ciAgICBjcDsKKyAKKy0JCXBwID0gcG9s aWN5X2hhbmRsZTsKKy0JCXdoaWxlIChwcCkgeworKyAgICAgICAgICAgICAgICBwcCA9IHBvbGlj eV9oYW5kbGU7CisrICAgICAgICAgICAgICAgIHdoaWxlIChwcCkgeworICAgICAgICAgICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsInByaW5jaXBhbDolcFxuIixwcCk7CisgICAgICAgICAgICAg ICAgICAgICBycCA9IHBwLT5yaWdodHM7CisgICAgICAgICAgICAgICAgICAgICB3aGlsZShycCkg eworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCIgICByaWdodHM6JXAg cmVmOiVkXG4iLCAKKysgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiICAg cmlnaHRzOiVwIHJlZjolZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJw LCBycC0+cmVmZXJlbmNlX2NvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicCA9IHJw LT5jb25kX2JpbmRpbmdzOworICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKGJwKSB7CitA QCAtMzUxLDE3ICszNTEsMTcgQEAgb2xkZ2FhX2dsb2J1c19wb2xpY3lfcmV0cmlldmUodWludDMy ICAgICAgKm1pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBycCA9IHJwLT5u ZXh0OworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgcHAgPSBw cC0+bmV4dDsKKy0JCX0KKysgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAjZW5k aWYKKyAKKyAgICAgICAgICAgICByZXR1cm4gcG9saWN5X2hhbmRsZTsKKyAgICAgICAgIH0KKy0g ICAgICAgIGVsc2UgZXJyb3JfdHlwZSA9IDA7IAorKyAgICAgICAgZWxzZSBlcnJvcl90eXBlID0g MDsKKyAgICAgfQorIAorICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworLSAKKysKKyAgICAgaWYo ZXJyb3JfdHlwZSkgLyogcG9saWN5IHJldHJpZXZlIGVycm9yICovCisgICAgIHsKKyAgICAgICAg IHBvbGljeV9kYi0+ZXJyb3JfY29kZSA9IEVSUk9SX1dISUxFX1JFVFJJRVZJTkdfUE9MSUNZOwor QEAgLTM3NCwxNSArMzc0LDE1IEBAIG9sZGdhYV9nbG9idXNfcG9saWN5X3JldHJpZXZlKHVpbnQz MiAgICAgICptaW5vcl9zdGF0dXMsCisgICAgICAgICBzcHJpbnRmKHBvbGljeV9kYi0+ZXJyb3Jf c3RyLCJlcnJvciByZXRyaWV2aW5nIGZpbGUgJXMiLHBvbGljeV9kYi0+c3RyKTsKKyAgICAgfQor ICAgICBlbHNlICAgICAgICAgIC8qIHBvbGljeSBwYXJzaW5nIGVycm9yICovCistICAgIHsgCisr ICAgIHsKKyAgICAgICAgIHBvbGljeV9kYi0+ZXJyb3JfY29kZSA9IG1fc3RhdHVzOworICAgICB9 CistICAKKysKKyAgICAgKm1pbm9yX3N0YXR1cyA9IG1fc3RhdHVzOworIAorICAgICByZXR1cm4g TlVMTDsKKyB9CistIAorKworIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorIHN0YXRpYworQEAgLTQxNSw0 MSArNDE1LDQxIEBAIGdldF9kZWZhdWx0X3BvbGljeV9maWxlKG9sZGdhYV9kYXRhX3B0ciBwb2xp Y3lfZGIpCisgICAgICAgICBmcmVlKGNhX3BvbGljeV9maWxlX3BhdGgpOworICAgICB9CisgICAg IGVsc2UKKy0gICAgeyAgICAJICAgCistICAgICAgICBwb2xpY3lfZGItPmVycm9yX3N0ciA9IAor KyAgICB7CisrICAgICAgICBwb2xpY3lfZGItPmVycm9yX3N0ciA9CisgICAgICAgICAgICAgb2xk Z2FhX3N0cmNvcHkoIkNhbiBub3QgZmluZCBkZWZhdWx0IHBvbGljeSBsb2NhdGlvbi4gWDUwOV9D RVJUX0RJUiBpcyBub3QgZGVmaW5lZC5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg cG9saWN5X2RiLT5lcnJvcl9zdHIpOworICAgICAgICAgcG9saWN5X2RiLT5lcnJvcl9jb2RlID0g RVJST1JfV0hJTEVfR0VUVElOR19ERUZBVUxUX1BPTElDWV9MT0NBVElPTjsKKyAKKyAgICAgICAg IHJjID0gMTsKKyAgICAgfQorLSAKKy0gICAgcmV0dXJuIHJjOyAKKysKKysgICAgcmV0dXJuIHJj OworIH0KKyAKKyAKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIAorLUZ1bmN0aW9uOiBvbGRnYWFfZ2xv YnVzX3BvbGljeV9maWxlX29wZW4oKSAKKytGdW5jdGlvbjogb2xkZ2FhX2dsb2J1c19wb2xpY3lf ZmlsZV9vcGVuKCkKKyAKKyBEZXNjcmlwdGlvbjoKKy0JT3BlbiB0aGUgc3BlY2lmaWVkIHBvbGlj eSBmaWxlIGZvciByZWFkaW5nLCByZXR1cm5pbmcgYQorLQljb250ZXh0LgorKyAgICAgICAgT3Bl biB0aGUgc3BlY2lmaWVkIHBvbGljeSBmaWxlIGZvciByZWFkaW5nLCByZXR1cm5pbmcgYQorKyAg ICAgICAgY29udGV4dC4KKyAKKyBQYXJhbWV0ZXJzOgorLQlmaWxlbmFtZSwgcG9pbnRlciB0byBz dHJpbmcgd2l0aCBuYW1lIG9mIHBvbGljeSBmaWxlCisrICAgICAgICBmaWxlbmFtZSwgcG9pbnRl ciB0byBzdHJpbmcgd2l0aCBuYW1lIG9mIHBvbGljeSBmaWxlCisgCisgUmV0dXJuczoKKy0JUG9p bnRlciB0byBhIHBvbGljeV9maWxlX2NvbnRleHQgaWYgc3VjY2Vzc2Z1bAorLQlOVUxMIG9uIGVy cm9yLCBzZXR0aW5nIGVycm5vLgorKyAgICAgICAgUG9pbnRlciB0byBhIHBvbGljeV9maWxlX2Nv bnRleHQgaWYgc3VjY2Vzc2Z1bAorKyAgICAgICAgTlVMTCBvbiBlcnJvciwgc2V0dGluZyBlcnJu by4KKyAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworIAorLXBvbGljeV9maWxlX2NvbnRleHRfcHRyIAorK3Bv bGljeV9maWxlX2NvbnRleHRfcHRyCisgb2xkZ2FhX2dsb2J1c19wb2xpY3lfZmlsZV9vcGVuKGNv bnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKy0gICAgY2hhciAqCQkgICAgICAgICAgICAgICAgb3Bl bl9tb2RlID0gInIiOworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv cGVuX21vZGUgPSAiciI7CisgICAgIHBvbGljeV9maWxlX2NvbnRleHRfcHRyICAgICAgICAgICAg IHBjb250ZXh0ICA9IE5VTEw7CisgICAgIEZJTEUgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cmVhbSA9IE5VTEw7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJjOworQEAgLTQ5OSw3ICs0OTksNyBAQCBvbGRnYWFfZ2xvYnVzX3BvbGljeV9maWxlX29w ZW4oY29uc3QgY2hhciAqZmlsZW5hbWUpCisgCisgICAgIHBjb250ZXh0LT5idWYgPSBtYWxsb2Mo cGNvbnRleHQtPmJ1ZmxlbiArIDEpOworICAgICBpZiAoIXBjb250ZXh0LT5idWYpIG91dF9vZl9t ZW1vcnkoKTsKKy0gCisrCisgICAgIHJjID0gZnJlYWQocGNvbnRleHQtPmJ1ZiwgcGNvbnRleHQt PmJ1ZmxlbiwgMSwgc3RyZWFtKTsKKyAgICAgcGNvbnRleHQtPmJ1ZltwY29udGV4dC0+YnVmbGVu XSA9IDA7CisgCitAQCAtNTI0LDE0ICs1MjQsMTQgQEAgZXhpdDoKKyBGdW5jdGlvbjogb2xkZ2Fh X2dsb2J1c19wb2xpY3lfZmlsZV9jbG9zZSgpCisgCisgRGVzY3JpcHRpb246CistCUNsb3NlIHRo ZSBwb2xpY3kgZmlsZSBhbmQgZGVhbGxvY2F0ZSBtZW1vcnkgYXNzaWduZWQgdG8gdGhlCistCWNv bnRleHQuCisrICAgICAgICBDbG9zZSB0aGUgcG9saWN5IGZpbGUgYW5kIGRlYWxsb2NhdGUgbWVt b3J5IGFzc2lnbmVkIHRvIHRoZQorKyAgICAgICAgY29udGV4dC4KKyAKKyBQYXJhbWV0ZXJzOgor LQlwY29udGV4dCwgcG9pbnRlciB0byB0aGUgY29udGV4dAorKyAgICAgICAgcGNvbnRleHQsIHBv aW50ZXIgdG8gdGhlIGNvbnRleHQKKyAKKyBSZXR1cm5zOgorLQlOb3RoaW5nCisrICAgICAgICBO b3RoaW5nCisgCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKK0BAIC01NTAsMjkgKzU1MCwyOSBAQCBvbGRn YWFfZ2xvYnVzX3BvbGljeV9maWxlX2Nsb3NlKHBvbGljeV9maWxlX2NvbnRleHRfcHRyICBwY29u dGV4dCkKKyAgICAgICAgIGZyZWUocGNvbnRleHQtPnBhcnNlX2Vycm9yKTsKKyAgICAgICAgIGZy ZWUocGNvbnRleHQpOworICAgICB9CistfSAKKyt9CisgCisgCisgLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0g IFBvbGljeSBQYXJzaW5nIEZ1bmN0aW9ucyAKKysgIFBvbGljeSBQYXJzaW5nIEZ1bmN0aW9ucwor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisgc3RhdGljCisgaW50Cistb2xk Z2FhX2dsb2J1c19oZWxwX3JlYWRfc3RyaW5nKHBvbGljeV9maWxlX2NvbnRleHRfcHRyICBwY29u dGV4dCwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICAg ICAgICAgICpzdHIsIAorK29sZGdhYV9nbG9idXNfaGVscF9yZWFkX3N0cmluZyhwb2xpY3lfZmls ZV9jb250ZXh0X3B0ciAgcGNvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNoYXIgICAgICAgICAgICAgICAgICAgICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgICptZXNzYWdlKQorIHsKKyAKKyAgICAgaWYg KG9sZGdhYV9nbG9idXNfcmVhZF9zdHJpbmcocGNvbnRleHQsIHN0ciwgTlVMTCkpIHJldHVybiAx OworIAorLSAgICBpZiAoZW5kX29mX2ZpbGUgPT0gVFJVRSkgCistICAgIHsgICAgICAgCisrICAg IGlmIChlbmRfb2ZfZmlsZSA9PSBUUlVFKQorKyAgICB7CisgICAgICAgICBvbGRnYWFfaGFuZGxl X2Vycm9yKCYocGNvbnRleHQtPnBhcnNlX2Vycm9yKSwgbWVzc2FnZSk7CistICAgICAgICByZXR1 cm4gMTsgICAgICAgICAKKy0gICAgfSAgCistICAgICAJIAorKyAgICAgICAgcmV0dXJuIDE7Cisr ICAgIH0KKysKKyAgICAgcmV0dXJuIDA7CisgfQorIAorQEAgLTU4MywxNyArNTgzLDE3IEBAIG9s ZGdhYV9nbG9idXNfaGVscF9yZWFkX3N0cmluZyhwb2xpY3lfZmlsZV9jb250ZXh0X3B0ciAgcGNv bnRleHQsCisgRnVuY3Rpb246IG9sZGdhYV9nbG9idXNfcmVhZF9zdHJpbmcKKyAKKyBEZXNjcmlw dGlvbjoKKy0JUmVhZCBhIHN0cmluZyBmcm9tIGEgZ2l2ZW4gc3RyZWFtIHVwIHRvIGFuZCBpbmNs dWRpbmcgdGhlIG5ld2xpbmUKKy0JYW5kIHJldHVybiBpdCBpbiBhbiBhbGxvY2F0ZWQgYnVmZmVy LgorKyAgICAgICAgUmVhZCBhIHN0cmluZyBmcm9tIGEgZ2l2ZW4gc3RyZWFtIHVwIHRvIGFuZCBp bmNsdWRpbmcgdGhlIG5ld2xpbmUKKysgICAgICAgIGFuZCByZXR1cm4gaXQgaW4gYW4gYWxsb2Nh dGVkIGJ1ZmZlci4KKyAKKyBQYXJhbWV0ZXJzOgorLQlwY29udGV4dCwgaGFuZGxlIHRvIGEgc3Ry dWN0dXJlLCBjb250YWluaW5nIHRoZSBzdHJlYW0gdG8gcmVhZCBmcm9tLgorKyAgICAgICAgcGNv bnRleHQsIGhhbmRsZSB0byBhIHN0cnVjdHVyZSwgY29udGFpbmluZyB0aGUgc3RyZWFtIHRvIHJl YWQgZnJvbS4KKyAKKy0Jc3RyLCBwb2ludGVyIHRvIHN0cmluZyB0byBiZSBmaWxsZWQgaW4uCisr ICAgICAgICBzdHIsIHBvaW50ZXIgdG8gc3RyaW5nIHRvIGJlIGZpbGxlZCBpbi4KKyAKKy0JZXJy c3RyaW5nLCBwb2ludGVyIHRvIHRoZSBwb2ludGVyIHRvIGJlIGZpbGxlZCBpbiB3aXRoCistCWEg cG9pbnRlciB0byBhIHN0cmluZyBkZXNjcmliaW5nIGFuIGVycm9yIHRoYXQgb2NjdXJzLgorLQlN YXkgYmUgTlVMTC4KKysgICAgICAgIGVycnN0cmluZywgcG9pbnRlciB0byB0aGUgcG9pbnRlciB0 byBiZSBmaWxsZWQgaW4gd2l0aAorKyAgICAgICAgYSBwb2ludGVyIHRvIGEgc3RyaW5nIGRlc2Ny aWJpbmcgYW4gZXJyb3IgdGhhdCBvY2N1cnMuCisrICAgICAgICBNYXkgYmUgTlVMTC4KKyAKKyBS ZXR1cm5zOgorICAgICAgICAgMCBvbiBzdWNjZXNzCitAQCAtNjA2LDE0ICs2MDYsMTQgQEAgaW50 Cisgb2xkZ2FhX2dsb2J1c19yZWFkX3N0cmluZyAocG9saWN5X2ZpbGVfY29udGV4dF9wdHIgIHBj b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICAgICAg ICAgICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgICAg ICAgICAgKiplcnJzdHJpbmcpCisteyAgIAorK3sKKyAgICAgaW50IGxlbjsKKyAgICAgaW50IHJj OworIAorICAgICBpZiAocGNvbnRleHQtPmluZGV4ID49IChwY29udGV4dC0+YnVmbGVuIC0gMSkp CisgICAgIHsKKy0gICAgICAgIGVuZF9vZl9maWxlID0gVFJVRTsgCistICAgICAgICByZXR1cm4g MDsgCisrICAgICAgICBlbmRfb2ZfZmlsZSA9IFRSVUU7CisrICAgICAgICByZXR1cm4gMDsKKyAg ICAgfQorIAorICAgICByYyA9IHNzY2FuZihwY29udGV4dC0+YnVmICsgcGNvbnRleHQtPmluZGV4 LCAiJXMlbiIsIHN0ciwgJmxlbik7CitAQCAtNjI4LDM2ICs2MjgsMzYgQEAgb2xkZ2FhX2dsb2J1 c19yZWFkX3N0cmluZyAocG9saWN5X2ZpbGVfY29udGV4dF9wdHIgIHBjb250ZXh0LAorICAgICBv bGRnYWFfaGFuZGxlX2Vycm9yKCYocGNvbnRleHQtPnN0ciksc3RyKTsgLyogc2V0IHRoZSBzdHJp bmcgdmFsdWUgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlcG9ydCBpdCBpbiB0aGUgY2FzZSB0aGVyZSBpcyBhbiBlcnJvciAqLworIAorLSAg CisrCisgICAgIGlmIChzdHJbMF09PSBTVFJJTkdfREVMSU1JVEVSKSAvKiBnZXQgc3RyaW5ncyB3 aXRoIHdoaXRlIHNwYWNlcyAqLworICAgICB7CisgICAgICAgICBpZihvbGRnYWFfZ2xvYnVzX2dl dF9zdHJpbmdfd2l0aF93aGl0ZXNwYWNlcyhwY29udGV4dCwgc3RyKSA9PSAtMSkKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBvbGRnYWFfaGFuZGxlX2Vycm9yKCYocGNvbnRleHQtPnBhcnNlX2Vy cm9yKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciB3aGlsZSByZWFk aW5nIHN0cmluZyIpOyAgICAgIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVy cm9yIHdoaWxlIHJlYWRpbmcgc3RyaW5nIik7CisgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg ICAgICB9CisgICAgIH0KKyAKKyAKKyAgICAgaWYgKHN0clswXT09IENPTU1FTlQpIC8qIG9taXQg Y29tbWVudCBsaW5lICovCistICAgIHsgCisrICAgIHsKKyAgICAgICAgIGlmKG9sZGdhYV9nbG9i dXNfb21pdF9jb21tZW50X2xpbmUocGNvbnRleHQpKQorICAgICAgICAgeworICAgICAgICAgICAg IG9sZGdhYV9oYW5kbGVfZXJyb3IoJihwY29udGV4dC0+cGFyc2VfZXJyb3IpLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHdoaWxlIHJlYWRpbmcgc3RyaW5nIik7IAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHdoaWxlIHJlYWRpbmcgc3Ry aW5nIik7CisgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICB9CisgCisgICAgICAgICBp ZihvbGRnYWFfZ2xvYnVzX3JlYWRfc3RyaW5nKHBjb250ZXh0LCBzdHIsIGVycnN0cmluZykpCisg ICAgICAgICB7CistICAgICAgCisrCisgICAgICAgICAgICAgb2xkZ2FhX2hhbmRsZV9lcnJvcigm KHBjb250ZXh0LT5wYXJzZV9lcnJvciksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZXJyb3Igd2hpbGUgcmVhZGluZyBzdHJpbmciKTsgCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiZXJyb3Igd2hpbGUgcmVhZGluZyBzdHJpbmciKTsKKyAgICAgICAgICAgICBy ZXR1cm4gMTsKKyAgICAgICAgIH0KKy0gICAgfSAKKy0gIAorKyAgICB9CisrCisgICAgIHJldHVy biAwOworIAorIH0KK0BAIC02NjcsMTIgKzY2NywxMiBAQCBvbGRnYWFfZ2xvYnVzX3JlYWRfc3Ry aW5nIChwb2xpY3lfZmlsZV9jb250ZXh0X3B0ciAgcGNvbnRleHQsCisgRnVuY3Rpb246IG9sZGdh YV9nbG9idXNfZ2V0X3N0cmluZ193aXRoX3doaXRlc3BhY2VzCisgCisgRGVzY3JpcHRpb246Cist CVJlYWQgYSBzdHJpbmcgZnJvbSBhIGdpdmVuIHN0cmVhbSB1cCB0byBpdCBmaW5kcyBTVFJJTkdf REVMSU1JVEVSLgorKyAgICAgICAgUmVhZCBhIHN0cmluZyBmcm9tIGEgZ2l2ZW4gc3RyZWFtIHVw IHRvIGl0IGZpbmRzIFNUUklOR19ERUxJTUlURVIuCisgCisgUGFyYW1ldGVyczoKKy0JcGNvbnRl eHQsIGhhbmRsZSB0byBhIHN0cnVjdHVyZSwgY29udGFpbmluZyB0aGUgc3RyZWFtIHRvIHJlYWQg ZnJvbS4KKysgICAgICAgIHBjb250ZXh0LCBoYW5kbGUgdG8gYSBzdHJ1Y3R1cmUsIGNvbnRhaW5p bmcgdGhlIHN0cmVhbSB0byByZWFkIGZyb20uCisgCistCXN0ciwgcG9pbnRlciB0byBzdHJpbmcg dG8gYmUgZmlsbGVkIGluLgorKyAgICAgICAgc3RyLCBwb2ludGVyIHRvIHN0cmluZyB0byBiZSBm aWxsZWQgaW4uCisgCisgUmV0dXJuczoKKyAgICAgICAgIDAgb24gc3VjY2VzcworQEAgLTY4Nywx OSArNjg3LDE5IEBAIG9sZGdhYV9nbG9idXNfZ2V0X3N0cmluZ193aXRoX3doaXRlc3BhY2VzKHBv bGljeV9maWxlX2NvbnRleHRfcHRyICBwY29udGV4dCwKKyAgICAgaW50ICBpPTAsIGo9MSwgbGVu ID0gc3RybGVuKHN0cik7IC8qIGo9MSBiZWNhdXNlIGlnbm9yZSBmaXJzdCAnICovCisgICAgIGlu dCAgY2hyLCBlc2MgPSAwOworIAorLSAgICB3aGlsZShpIDwgcGNvbnRleHQtPmJ1ZmxlbikgLyog cmVhZCBjaGFycyBmcm9tIHRoZSBzdHJlYW0gCisrICAgIHdoaWxlKGkgPCBwY29udGV4dC0+YnVm bGVuKSAvKiByZWFkIGNoYXJzIGZyb20gdGhlIHN0cmVhbQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnRpbGwgc2VlIFNUUklOR19ERUxJTUlURVIgKi8KKy0gICAgeyAgCisr ICAgIHsKKyAgICAgICAgIGNociA9IChqPGxlbikgPyBzdHJbaisrXSA6IHBjb250ZXh0LT5idWZb cGNvbnRleHQtPmluZGV4KytdOworIAorLSAgICAgICAgaWYocGNvbnRleHQtPmluZGV4ID09IHBj b250ZXh0LT5idWZsZW4pICAKKy0gICAgICAgIHsgICAgIAorKyAgICAgICAgaWYocGNvbnRleHQt PmluZGV4ID09IHBjb250ZXh0LT5idWZsZW4pCisrICAgICAgICB7CisgICAgICAgICAgICAgZW5k X29mX2ZpbGUgPSBUUlVFOworIAorICAgICAgICAgICAgIG9sZGdhYV9oYW5kbGVfZXJyb3IoJihw Y29udGV4dC0+cGFyc2VfZXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Im9sZGdhYV9nbG9idXNfZ2V0X3N0cmluZ193aXRoX3doaXRlX3NwYWNlczogTWlzc2luZyBzdHJp bmcgZGVsaW1pdGVyIFwnIik7CisgICAgICAgICAgICAgcmV0dXJuIC0xOworLSAgICAgICAgfSAg ICAgICAgCisrICAgICAgICB9CisgICAgICAgICBpZiAoIWVzYyAmJiBjaHIgPT0gU1RSSU5HX0RF TElNSVRFUikgYnJlYWs7IC8qIGRvbid0IGNoZWNrIGlmIGVzY2FwZWQqLworICAgICAgICAgZXNj ID0gIWVzYyAmJiAoY2hyID09IEVTQ0FQRV9DSEFSQUNURVIpOyAgICAvKiAhZXNjIHRha2VzIGNh cmUgb2YgXFwgKi8KKyAgICAgICAgIGlmICghZXNjKSB7IHN0cltpXSA9IGNocjsgaSsrOyB9ICAg ICAgICAgICAgLyogZG9uJ3QgcHJpbnQgb3V0IHRoZSBcICovCitAQCAtNzIyLDEwICs3MjIsMTAg QEAgb2xkZ2FhX2dsb2J1c19nZXRfc3RyaW5nX3dpdGhfd2hpdGVzcGFjZXMocG9saWN5X2ZpbGVf Y29udGV4dF9wdHIgIHBjb250ZXh0LAorIEZ1bmN0aW9uOiBvbGRnYWFfZ2xvYnVzX29taXRfY29t bWVudF9saW5lCisgCisgRGVzY3JpcHRpb246CistCW9taXQgY29tbWVudCBmcm9tIHRoZSBzdHJl YW0KKysgICAgICAgIG9taXQgY29tbWVudCBmcm9tIHRoZSBzdHJlYW0KKyAKKyBQYXJhbWV0ZXJz OgorLQlwY29udGV4dCwgaGFuZGxlIHRvIGEgc3RydWN0dXJlLCBjb250YWluaW5nIHRoZSBzdHJl YW0gdG8gcmVhZCBmcm9tLgorKyAgICAgICAgcGNvbnRleHQsIGhhbmRsZSB0byBhIHN0cnVjdHVy ZSwgY29udGFpbmluZyB0aGUgc3RyZWFtIHRvIHJlYWQgZnJvbS4KKyAKKyBSZXR1cm5zOgorICAg ICAgICAgMCBvbiBzdWNjZXNzCitAQCAtNzM3LDggKzczNyw4IEBAIHN0YXRpYworIGludAorIG9s ZGdhYV9nbG9idXNfb21pdF9jb21tZW50X2xpbmUocG9saWN5X2ZpbGVfY29udGV4dF9wdHIgIHBj b250ZXh0KQorIHsKKy0gICAgaW50IGNocjsgIAorLSAKKysgICAgaW50IGNocjsKKysKKyAgICAg d2hpbGUocGNvbnRleHQtPmluZGV4IDwgcGNvbnRleHQtPmJ1ZmxlbikKKyAgICAgeworICAgICAg ICAgY2hyID0gcGNvbnRleHQtPmJ1ZltwY29udGV4dC0+aW5kZXgrK107CitAQCAtNzQ4LDEzICs3 NDgsMTMgQEAgb2xkZ2FhX2dsb2J1c19vbWl0X2NvbW1lbnRfbGluZShwb2xpY3lfZmlsZV9jb250 ZXh0X3B0ciAgcGNvbnRleHQpCisgICAgIGlmIChwY29udGV4dC0+aW5kZXggPT0gcGNvbnRleHQt PmJ1ZmxlbikgZW5kX29mX2ZpbGUgPSBUUlVFOworIAorICAgICByZXR1cm4gMDsKKy19ICAgCisr fQorIAorIAorIAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgCistRnVuY3Rpb246IG9sZGdhYV9nbG9idXNf cGFyc2VfcG9saWN5KCkgCisrRnVuY3Rpb246IG9sZGdhYV9nbG9idXNfcGFyc2VfcG9saWN5KCkK KyAKKyBEZXNjcmlwdGlvbjoKKyAgICAgICAgIFBhcnNlcyB0aGUgcG9saWN5IGZpbGUsIGZpbGxp bmcgb2xkZ2FhX3BvbGljeSBzdHJ1Y3R1cmUuIFRoZSBmb3JtYXQgb2YKK0BAIC03NjMsMTYgKzc2 MywxNiBAQCBEZXNjcmlwdGlvbjoKKyBQYXJhbWV0ZXJzOgorICAgICAgICAgbWlub3Jfc3RhdHVz LCBtZWNoYW5pc20tc3BlY2lmaWMgc3RhdHVzIGNvZGUKKyAgICAgICAgIHBjb250ZXh0LCBoYW5k bGUgdG8gYSBzdHJ1Y3R1cmUsIGNvbnRhaW5pbmcgdGhlIHN0cmVhbSB0byByZWFkIGZyb20uCist ICAgICAgICBwb2xpY3lfaGFuZGxlLCBwb2ludGVyIHRvIG9sZGdhYV9wb2xpY3kgc3RydWN0dXJl IHRvIGJlIGZpbGxlZCBpbi4gCistICAgICAgICAgICAgICAgICAgIAorKyAgICAgICAgcG9saWN5 X2hhbmRsZSwgcG9pbnRlciB0byBvbGRnYWFfcG9saWN5IHN0cnVjdHVyZSB0byBiZSBmaWxsZWQg aW4uCisrCisgUmV0dXJuczoKKy0JT0xER0FBX1NVQ0NFU1Mgb3IgT0xER0FBX1JFVFJFSVZFX0VS Uk9SCisrICAgICAgICBPTERHQUFfU1VDQ0VTUyBvciBPTERHQUFfUkVUUkVJVkVfRVJST1IKKyAK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworIAorLW9sZGdhYV9lcnJvcl9jb2RlICAKKytvbGRnYWFfZXJyb3Jf Y29kZQorIG9sZGdhYV9nbG9idXNfcGFyc2VfcG9saWN5IChwb2xpY3lfZmlsZV9jb250ZXh0X3B0 ciAgcGNvbnRleHQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9wb2xpY3lf cHRyICAgICAgICAgICpwb2xpY3lfaGFuZGxlKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvbGRnYWFfcG9saWN5X3B0ciAgICAgICAqcG9saWN5X2hhbmRsZSkKKyAKKyB7CisgICAgIG9s ZGdhYV9jb25kaXRpb25zX3B0ciAgICBhbGxfY29uZGl0aW9ucyAgID0gTlVMTDsKK0BAIC03ODgs NyArNzg4LDcgQEAgb2xkZ2FhX2dsb2J1c19wYXJzZV9wb2xpY3kgKHBvbGljeV9maWxlX2NvbnRl eHRfcHRyICBwY29udGV4dCwKKyAKKyAgICAgY2hhciAgICAgICAgICAgICAgICAgICpzdHI7Cisg ICAgIGludCAgICAgICAgICAgICAgICAgICBjb25kX3ByZXNlbnQgICAgID0gRkFMU0U7CistICAg IGludCAgICAgICAgICAgICAgICAgICBuZXdfZW50cnkgICAgICAgID0gVFJVRTsgCisrICAgIGlu dCAgICAgICAgICAgICAgICAgICBuZXdfZW50cnkgICAgICAgID0gVFJVRTsKKyAgICAgb2xkZ2Fh X3JpZ2h0c19wdHIgb2xkX3JpZ2h0cyA9IDA7CisgCisgICAgIHN0ciA9IG1hbGxvYyhwY29udGV4 dC0+YnVmbGVuKTsKK0BAIC04MDAsMjIgKzgwMCwyMiBAQCBvbGRnYWFfZ2xvYnVzX3BhcnNlX3Bv bGljeSAocG9saWN5X2ZpbGVfY29udGV4dF9wdHIgIHBjb250ZXh0LAorICNpZmRlZiBERUJVRwor ICAgICBmcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX2dsb2J1c19wYXJzZV9wb2xpY3k6XG4iKTsK KyAjZW5kaWYgLyogREVCVUcgKi8KKy0gCistICAgIHdoaWxlICghZW5kX29mX2ZpbGUpICAgIAor LSAgICB7IAorKworKyAgICB3aGlsZSAoIWVuZF9vZl9maWxlKQorKyAgICB7CisgICAgICAgICBp ZiAobmV3X2VudHJ5ID09IFRSVUUpIC8qIHN0YXJ0IHBhcnNpbmcgbmV3IGVudHJ5ICovCisgICAg ICAgICB7CisgICAgICAgICAgICAgY29uZF9wcmVzZW50ID0gRkFMU0U7CisgICAgICAgICAgICAg bmV3X2VudHJ5ICAgID0gRkFMU0U7CisgCisgICAgICAgICAgICAgLyogZ2V0IHByaW5jaXBhbHMg Ki8KKy0gICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihvbGRnYWFf Z2xvYnVzX3BhcnNlX3ByaW5jaXBhbHMocGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeV9oYW5kbGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0X3ByaW5jaXBhbHMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhZGRlZF9wcmluY2lwYWwpICE9 IE9MREdBQV9TVUNDRVNTKQorLSAgICAgICAgICAgIHsgCisrICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBvbGRnYWFfaGFuZGxlX2Vycm9yKCYocGNvbnRleHQtPnBhcnNlX2Vycm9yKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2xkZ2FhX2dsb2J1c19wYXJz ZV9wb2xpY3k6IGVycm9yIHdoaWxlIHBhcnNpbmcgcHJpbmNpcGFsOiAiKTsKKyAgICAgICAgICAg ICAgICAgbV9zdGF0dXMgPSBFUlJPUl9XSElMRV9QQVJTSU5HX1BSSU5DSVBBTFM7CitAQCAtODMw LDI2ICs4MzAsMjYgQEAgb2xkZ2FhX2dsb2J1c19wYXJzZV9wb2xpY3kgKHBvbGljeV9maWxlX2Nv bnRleHRfcHRyICBwY29udGV4dCwKKyAgICAgICAgIC8qIGdldCByaWdodHMgKi8KKyAKKyAgICAg ICAgIG9sZF9yaWdodHMgPSBzdGFydF9yaWdodHM7CistICAgICAgICBvbGRnYWFfZXJyb3IgPSBv bGRnYWFfZ2xvYnVzX3BhcnNlX3JpZ2h0cyhwY29udGV4dCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKysgICAgICAgIG9sZGdhYV9lcnJvciA9IG9sZGdhYV9nbG9idXNfcGFyc2Vfcmln aHRzKHBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnN0YXJ0X3JpZ2h0cywgICAgICAgICAKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydF9yaWdodHMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29uZF9wcmVzZW50LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19lbnRy eSk7CisgICAgICAgICBpZihvbGRnYWFfZXJyb3IgIT0gT0xER0FBX1NVQ0NFU1MpCistICAgICAg ICB7ICAgICAgIAorKyAgICAgICAgeworICAgICAgICAgICAgIG9sZGdhYV9oYW5kbGVfZXJyb3Io JihwY29udGV4dC0+cGFyc2VfZXJyb3IpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIm9sZGdhYV9nbG9idXNfcGFyc2VfcG9saWN5OiBlcnJvciB3aGlsZSBwYXJzaW5nIHJpZ2h0 OiAiKTsgICAgICAgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2xkZ2FhX2ds b2J1c19wYXJzZV9wb2xpY3k6IGVycm9yIHdoaWxlIHBhcnNpbmcgcmlnaHQ6ICIpOworICAgICAg ICAgICAgIG1fc3RhdHVzID0gRVJST1JfV0hJTEVfUEFSU0lOR19SSUdIVFM7CisgICAgICAgICAg ICAgZ290byBlcnI7CisgCisgICAgICAgICB9CisgCistICAgICAgICAvKiBiaW5kIHBhcmVzZWQg cmlnaHRzIGZvciB0aGlzIGVudHJ5IHRvIHRoZSBwYXJlc2VkIHByaW5jaXBhbHMgCisrICAgICAg ICAvKiBiaW5kIHBhcmVzZWQgcmlnaHRzIGZvciB0aGlzIGVudHJ5IHRvIHRoZSBwYXJlc2VkIHBy aW5jaXBhbHMKKyAgICAgICAgICAgIGZyb20gdGhpcyBlbnRyeSAqLworICAgICAgICAgb2xkZ2Fh X2JpbmRfcmlnaHRzX3RvX3ByaW5jaXBhbChhZGRlZF9wcmluY2lwYWwsIHN0YXJ0X3JpZ2h0cyk7 CistIAorKworICAgICAgICAgLyogZ2V0IGNvbmRpdGlvbnMsIGlmIGFueSAqLworLSAgCisrCisg ICAgICAgICBpZihjb25kX3ByZXNlbnQgPT0gVFJVRSkKKyAgICAgICAgIHsKKyAgICAgICAgICAg ICBvbGRnYWFfZXJyb3IgPSBvbGRnYWFfZ2xvYnVzX3BhcnNlX2NvbmRpdGlvbnMocGNvbnRleHQs CitAQCAtODYyLDQ3ICs4NjIsNDcgQEAgb2xkZ2FhX2dsb2J1c19wYXJzZV9wb2xpY3kgKHBvbGlj eV9maWxlX2NvbnRleHRfcHRyICBwY29udGV4dCwKKyAgICAgICAgICAgICBpZiAob2xkZ2FhX2Vy cm9yID09IE9MREdBQV9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy LCAicGFyc2VkIGNvbmRpdGlvbl9iaW5kaW5nXG4iKTsKKyAgICAgICAgICAgICAgICAgaWYgKGNv bmRfYmluZCkKKy0gcHJpbnRfY29uZGl0aW9uX2JpbmRpbmcoY29uZF9iaW5kKTsKKysgICAgICAg ICAgICAgICAgICAgIHByaW50X2NvbmRpdGlvbl9iaW5kaW5nKGNvbmRfYmluZCk7CisgICAgICAg ICAgICAgfSBlbHNlCistIGZwcmludGYoc3RkZXJyLCAiZGlkbid0IHBhcnNlIGNvbmRpdGlvbiBi aW5kaW5nXG4iKTsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJkaWRuJ3QgcGFy c2UgY29uZGl0aW9uIGJpbmRpbmdcbiIpOworICNlbmRpZiAvKiBMREVCVUcgKi8KKy0gICAKKy0g ICAgICAgICAgICBpZiAob2xkZ2FhX2Vycm9yICE9IE9MREdBQV9TVUNDRVNTKSAgICAgICAgICAg ICAgIAorKworKyAgICAgICAgICAgIGlmIChvbGRnYWFfZXJyb3IgIT0gT0xER0FBX1NVQ0NFU1Mp CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBvbGRnYWFfaGFuZGxlX2Vycm9yKCYo cGNvbnRleHQtPnBhcnNlX2Vycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAib2xkZ2FhX2dsb2J1c19wYXJzZV9wb2xpY3k6IGVycm9yIHdoaWxlIHBhcnNpbmcgY29u ZGl0aW9uOiAiKTsKKy0gIAorLSAgICAgICAgICAgICAgICBtX3N0YXR1cyA9IEVSUk9SX1dISUxF X1BBUlNJTkdfQ09ORElUSU9OUzsgCisrCisrICAgICAgICAgICAgICAgIG1fc3RhdHVzID0gRVJS T1JfV0hJTEVfUEFSU0lOR19DT05ESVRJT05TOworICAgICAgICAgICAgICAgICBnb3RvIGVycjsK KyAKKyAgICAgICAgICAgICB9CistICAKKy0gICAgICAgICAgICAvKiBiaW5kIHBhcmVzZWQgY29u ZGl0aW9ucyBmb3IgdGhpcyBlbnRyeSB0byB0aGUgcGFyZXNlZCByaWdodHMgCisrCisrICAgICAg ICAgICAgLyogYmluZCBwYXJlc2VkIGNvbmRpdGlvbnMgZm9yIHRoaXMgZW50cnkgdG8gdGhlIHBh cmVzZWQgcmlnaHRzCisgICAgICAgICAgICAgICAgZnJvbSB0aGlzIGVudHJ5ICovCisgCistICAg ICAgICAgICAgZWxzZSAgb2xkZ2FhX2JpbmRfcmlnaHRzX3RvX2NvbmRpdGlvbihzdGFydF9yaWdo dHMsIGNvbmRfYmluZCk7ICAgCistICAgCisrICAgICAgICAgICAgZWxzZSAgb2xkZ2FhX2JpbmRf cmlnaHRzX3RvX2NvbmRpdGlvbihzdGFydF9yaWdodHMsIGNvbmRfYmluZCk7CisrCisgICAgICAg ICB9IC8qIGlmKGNvbmRfcHJlc2VudCA9PSBUUlVFKSAqLworLSAgCisrCisgI2lmZGVmIExERUJV RworICAgICAgICAgcHJpbnRmKCJzdGFydF9wcmluY2lwYWxzOlxuIik7CisgICAgICAgICBpZiAo c3RhcnRfcHJpbmNpcGFscykKKy0gcHJpbnRfb2xkZ2FhX3ByaW5jaXBhbF9wdHIoc3RhcnRfcHJp bmNpcGFscyk7CisrICAgICAgICAgICAgcHJpbnRfb2xkZ2FhX3ByaW5jaXBhbF9wdHIoc3RhcnRf cHJpbmNpcGFscyk7CisgI2VuZGlmICAvKiBMREVCVUcgKi8KKy0gCisrCisgICAgIH0vKiBlbmQg b2Ygd2hpbGUgKi8KKyAKKy0gICAgLyogCistICAgICAqIFNpbmNlIHRoZSBjb25kaXRpb25zIGFy ZSBub3cgYWxsIGJvdW5kIHRvIGNvbmRfYmluZGluZ3MsIAorKyAgICAvKgorKyAgICAgKiBTaW5j ZSB0aGUgY29uZGl0aW9ucyBhcmUgbm93IGFsbCBib3VuZCB0byBjb25kX2JpbmRpbmdzLAorICAg ICAgKiB3ZSBjYW4gcmVtb3ZlIHRoZSBuZXh0IGNoYWluIHBvaW50ZXJzIHNvIHRoZXkgZG9uJ3Qg Z2V0CistICAgICAqIGluIHRoZSB3YXkgZHVyaW5nIGZyZWUgaWYgdGhlcmUgYXJlIG90aGVyIGNo YWlucyAKKy0gICAgICogdXNpbmcgY29uZGl0aW9ucy4gCisrICAgICAqIGluIHRoZSB3YXkgZHVy aW5nIGZyZWUgaWYgdGhlcmUgYXJlIG90aGVyIGNoYWlucworKyAgICAgKiB1c2luZyBjb25kaXRp b25zLgorICAgICAgKi8KKyAKKyAgICAgeworLQlvbGRnYWFfY29uZGl0aW9uc19wdHIgICBjMXAs IGMycDsKKysgICAgICAgIG9sZGdhYV9jb25kaXRpb25zX3B0ciAgIGMxcCwgYzJwOworIAorLQlj MXAgPSBhbGxfY29uZGl0aW9uczsKKysgICAgICAgIGMxcCA9IGFsbF9jb25kaXRpb25zOworICAg ICAgICAgd2hpbGUoYzFwKQorICAgICAgICAgeworICAgICAgICAgICAgIGMycCA9IGMxcC0+bmV4 dDsKK0BAIC05MTAsMTMgKzkxMCwxMyBAQCBvbGRnYWFfZ2xvYnVzX3BhcnNlX3BvbGljeSAocG9s aWN5X2ZpbGVfY29udGV4dF9wdHIgIHBjb250ZXh0LAorICAgICAgICAgICAgIGMxcCA9IGMycDsK KyAgICAgICAgIH0KKyAgICAgfQorLQkKKysKKyAgICAgaWYgKHBjb250ZXh0KSBvbGRnYWFfZ2xv YnVzX3BvbGljeV9maWxlX2Nsb3NlKHBjb250ZXh0KTsKKyAKKyAjaWZkZWYgTERFQlVHCisgICAg IHByaW50ZigicG9saWN5X2hhbmRsZTpcbiIpOworICAgICBpZiAoKnBvbGljeV9oYW5kbGUpCist IHByaW50X29sZGdhYV9wcmluY2lwYWxfcHRyKCpwb2xpY3lfaGFuZGxlKTsKKysgICAgICAgIHBy aW50X29sZGdhYV9wcmluY2lwYWxfcHRyKCpwb2xpY3lfaGFuZGxlKTsKKyAjZW5kaWYgIC8qIExE RUJVRyAqLworIAorICAgICBmcmVlKHN0cik7CitAQCAtOTMzLDE5ICs5MzMsMTkgQEAgb2xkZ2Fh X2dsb2J1c19wYXJzZV9wb2xpY3kgKHBvbGljeV9maWxlX2NvbnRleHRfcHRyICBwY29udGV4dCwK KyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorIAorLUZ1bmN0aW9uOiBvbGRnYWFfZ2xvYnVzX3BhcnNlX3By aW5jaXBhbHMoKSAKKytGdW5jdGlvbjogb2xkZ2FhX2dsb2J1c19wYXJzZV9wcmluY2lwYWxzKCkK KyAKKyBEZXNjcmlwdGlvbjoKKy0gICAgICAgIFBhcnNlcyB0aGUgcG9saWN5IGZpbGUsIGZpbGxp bmcgb2xkZ2FhX3JpbmNpcGFscyBzdHJ1Y3R1cmUuIAorKyAgICAgICAgUGFyc2VzIHRoZSBwb2xp Y3kgZmlsZSwgZmlsbGluZyBvbGRnYWFfcmluY2lwYWxzIHN0cnVjdHVyZS4KKyAKKyBQYXJhbWV0 ZXJzOgorICAgICAgICAgcGNvbnRleHQsIGhhbmRsZSB0byBhIHN0cnVjdHVyZSwgY29udGFpbmlu ZyB0aGUgc3RyZWFtIHRvIHJlYWQgZnJvbS4KKy0gICAgICAgIHBvbGljeSwgcG9pbnRlciB0byBv bGRnYWFfcG9saWN5IHN0cnVjdHVyZSB0byBiZSBmaWxsZWQgaW4uIAorKyAgICAgICAgcG9saWN5 LCBwb2ludGVyIHRvIG9sZGdhYV9wb2xpY3kgc3RydWN0dXJlIHRvIGJlIGZpbGxlZCBpbi4KKyAg ICAgICAgIHRtcF9zdHIsIGNvbnRhaW5zIGEgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZXZhbHVhdGVk IGFuZCBpbiB0aGUgZW5kLAorICAgICAgICAgICAgICAgIG5ldyB2YWx1ZSBpcyBzdG9yZWQgaGVy ZS4KKyAgICAgICAgIHN0YXJ0LCBzdG9yZXMgYSBwb2ludGVyIHRvIG9sZGdhYV9wcmluY2lwYWxz IHN0cnVjdHVyZSBvZiB0aGUgc2V0CisgICAgICAgICBvZiBwcmluY2lwYWxzIHdoaWNoIHdpbGwg YmUgcmVhZCBieSB0aGlzIGludm9rYXRpb24uIFRoaXMgaXMgbmVlZGVkCistICAgICAgICBieSB0 aGUgIGJpbmRfcmlnaHRzX3RvX3ByaW5jaXBhbHMgZnVuY3Rpb24uICAgICAgIAorKyAgICAgICAg YnkgdGhlICBiaW5kX3JpZ2h0c190b19wcmluY2lwYWxzIGZ1bmN0aW9uLgorIFJldHVybnM6Cisg ICAgICAgIE9MREdBQV9TVUNDRVNTIG9yIE9MREdBQV9QQVJTRV9FUlJPUgorIAorQEAgLTk1NCwx MyArOTU0LDEzIEBAIFJldHVybnM6CisgCisgc3RhdGljIG9sZGdhYV9lcnJvcl9jb2RlCisgb2xk Z2FhX2dsb2J1c19wYXJzZV9wcmluY2lwYWxzKHBvbGljeV9maWxlX2NvbnRleHRfcHRyICBwY29u dGV4dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX3BvbGljeV9wdHIg ICAgICAgICAgKnBvbGljeSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2Fh X3BvbGljeV9wdHIgICAgICAgKnBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hhciAgICAgICAgICAgICAgICAgICAgKnRtcF9zdHIgLyogSU4mT1VUICovLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfcHJpbmNpcGFsc19wdHIgICAgICAqc3Rh cnQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9wcmluY2lwYWxzX3B0 ciAgICAqYWRkZWRfcHJpbmNpcGFsKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv bGRnYWFfcHJpbmNpcGFsc19wdHIgICAqc3RhcnQsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZGdhYV9wcmluY2lwYWxzX3B0ciAgICphZGRlZF9wcmluY2lwYWwpCisgeworICAg ICBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RyLCAqdHlwZTsKKy0gICAg dWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3Jfc3RhdHVzOyAKKysgICAg dWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3Jfc3RhdHVzOworICAgICBv bGRnYWFfcHJpbmNpcGFsc19wdHIgICAgICAgICAgICAgICBwcmluY2lwYWwgPSBOVUxMOworICAg ICBvbGRnYWFfZXJyb3JfY29kZSAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlID0gT0xER0FB X1NVQ0NFU1M7CisgCitAQCAtOTgwLDIzICs5ODAsMjMgQEAgb2xkZ2FhX2dsb2J1c19wYXJzZV9w cmluY2lwYWxzKHBvbGljeV9maWxlX2NvbnRleHRfcHRyICBwY29udGV4dCwKKyAgICAgICAgIGlm IChvbGRnYWFfZ2xvYnVzX2hlbHBfcmVhZF9zdHJpbmcocGNvbnRleHQsIHN0ciwKKyAgICAgICAg ICAgICAgICAgICAgICJwYXJzZSBwcmluY2lwYWxzOiBFbXB0eSBwb2xpY3kiKSkKKyAgICAgICAg IHsKKy0gICAgICAgICAgICBlcnJvcl9jb2RlID0gT0xER0FBX1JFVFJJRVZFX0VSUk9SOyAgIAor KyAgICAgICAgICAgIGVycm9yX2NvZGUgPSBPTERHQUFfUkVUUklFVkVfRVJST1I7CisgICAgICAg ICAgICAgZ290byBmcmVlX3N0cjsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICBlbHNlIAorKyAg ICBlbHNlCisgICAgIHsKKyAgICAgICAgIC8qIGdldCB0aGUgdmFsdWUgb2YgcmVhZCBwcmluY2lw YWwgZnJvbSB0bXBfc3RyICovCisgICAgICAgICBzdHJjcHkoc3RyLCB0bXBfc3RyKTsKKyAgICAg fQorIAorLSAgICBkbyAKKysgICAgZG8KKyAgICAgeyAgIC8qIGdldCBwcmluY2lwYWwncyB0eXBl ICovCisgCisgICAgICAgICBpZiAoc3RyY21wKHN0ciwgT0xER0FBX0FOWUJPRFkpID09IDApCisg ICAgICAgICB7CistICAgICAgICAgICAgLyogZG8gbm90IGNoZWNrIGZvciBhdXRob3JpdHkgYW5k IHZhbHVlICovICAKKy0gICAgICAgICAgICB0eXBlID0gT0xER0FBX0FOWUJPRFk7ICAgICAgICAK KysgICAgICAgICAgICAvKiBkbyBub3QgY2hlY2sgZm9yIGF1dGhvcml0eSBhbmQgdmFsdWUgKi8K KysgICAgICAgICAgICB0eXBlID0gT0xER0FBX0FOWUJPRFk7CisgICAgICAgICB9CisgICAgICAg ICBlbHNlIGlmKHN0cmNtcChzdHIsT0xER0FBX1VTRVIpID09IDApCisgICAgICAgICB7CitAQCAt MTAxOCwyMSArMTAxOCwyMSBAQCBvbGRnYWFfZ2xvYnVzX3BhcnNlX3ByaW5jaXBhbHMocG9saWN5 X2ZpbGVfY29udGV4dF9wdHIgIHBjb250ZXh0LAorICAgICAgICAgeworICAgICAgICAgICAgIHR5 cGUgPSBPTERHQUFfQVBQTElDQVRJT047CisgICAgICAgICB9CistICAgICAgICBlbHNlIAorKyAg ICAgICAgZWxzZQorICAgICAgICAgeworLSAgICAgICAgICAgIG9sZGdhYV9oYW5kbGVfZXJyb3Io JihwY29udGV4dC0+cGFyc2VfZXJyb3IpLCAKKysgICAgICAgICAgICBvbGRnYWFfaGFuZGxlX2Vy cm9yKCYocGNvbnRleHQtPnBhcnNlX2Vycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJwYXJzZV9wcmluY2lwYWxzOiBCYWQgcHJpbmNpcGFsIHR5cGUiKTsKKyAgICAgICAgICAg ICBlcnJvcl9jb2RlID0gT0xER0FBX1JFVFJJRVZFX0VSUk9SOworICAgICAgICAgICAgIGdvdG8g ZnJlZV9zdHI7CisgICAgICAgICB9CistICAgICAgICAgIAorKworICAgICAgICAgb2xkZ2FhX2Fs bG9jYXRlX3ByaW5jaXBhbHMoJnByaW5jaXBhbCk7CisgCistICAgICAgICBpZiAodHlwZSkgCisr ICAgICAgICBpZiAodHlwZSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBwcmluY2lwYWwtPnR5 cGUgID0gb2xkZ2FhX3N0cmNvcHkodHlwZSwgcHJpbmNpcGFsLT50eXBlKTsKKyAgICAgICAgIH0K Ky0gICAgICAgIAorKworICAgICAgICAgaWYgKHN0cmNtcCh0eXBlLCBPTERHQUFfQU5ZQk9EWSk9 PSAwKQorICAgICAgICAgeworICAgICAgICAgICAgIC8qIGZpbGwgaW4gZGVmYXVsdCB2YWx1ZXMg Ki8KK0BAIC0xMDQ4LDExICsxMDQ4LDExIEBAIG9sZGdhYV9nbG9idXNfcGFyc2VfcHJpbmNpcGFs cyhwb2xpY3lfZmlsZV9jb250ZXh0X3B0ciAgcGNvbnRleHQsCisgICAgICAgICAgICAgICAgIGVy cm9yX2NvZGUgPSBPTERHQUFfUkVUUklFVkVfRVJST1I7CisgICAgICAgICAgICAgICAgIGdvdG8g cmVsZWFzZV9wcmluY2lwYWw7CisgICAgICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAg ICAgICAgaWYgKHN0cikKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIC8qIGV4cGVj dGluZyBkZWZpbmluZyBhdXRob3JpdHkgKi8KKy0gICAgICAgICAgICAgICAgcHJpbmNpcGFsLT5h dXRob3JpdHkgPSBvbGRnYWFfc3RyY29weShzdHIsIHByaW5jaXBhbC0+YXV0aG9yaXR5KTsgICAg IAorKyAgICAgICAgICAgICAgICBwcmluY2lwYWwtPmF1dGhvcml0eSA9IG9sZGdhYV9zdHJjb3B5 KHN0ciwgcHJpbmNpcGFsLT5hdXRob3JpdHkpOworICAgICAgICAgICAgIH0KKyAKKyAgICAgICAg ICAgICBpZiAob2xkZ2FhX2dsb2J1c19oZWxwX3JlYWRfc3RyaW5nKHBjb250ZXh0LCBzdHIsCitA QCAtMTA2MSwxMyArMTA2MSwxMyBAQCBvbGRnYWFfZ2xvYnVzX3BhcnNlX3ByaW5jaXBhbHMocG9s aWN5X2ZpbGVfY29udGV4dF9wdHIgIHBjb250ZXh0LAorICAgICAgICAgICAgICAgICBlcnJvcl9j b2RlID0gT0xER0FBX1JFVFJJRVZFX0VSUk9SOworICAgICAgICAgICAgICAgICBnb3RvIHJlbGVh c2VfcHJpbmNpcGFsOworICAgICAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgICAg IGlmIChzdHIpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAvKiBleHBlY3Rpbmcg dmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgcHJpbmNpcGFsLT52YWx1ZSA9IG9sZGdhYV9zdHJj b3B5KHN0ciwgcHJpbmNpcGFsLT52YWx1ZSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgfSAv KiBlbmQgb2YgaWYodHlwZSAhPSAiYWNjZXNzX2lkX0FOWUJPRFkiKSovIAorKyAgICAgICAgfSAv KiBlbmQgb2YgaWYodHlwZSAhPSAiYWNjZXNzX2lkX0FOWUJPRFkiKSovCisgCisgICAgICAgICBp ZiAoKnBvbGljeSA9PSBOVUxMKQorICAgICAgICAgeworQEAgLTEwODUsNyArMTA4NSw3IEBAIG9s ZGdhYV9nbG9idXNfcGFyc2VfcHJpbmNpcGFscyhwb2xpY3lfZmlsZV9jb250ZXh0X3B0ciAgcGNv bnRleHQsCisgICAgICAgICB7CisgICAgICAgICAgICAgb2xkZ2FhX3JlbGVhc2VfcHJpbmNpcGFs cygmbWlub3Jfc3RhdHVzLCAmcHJpbmNpcGFsKTsKKyAgICAgICAgIH0KKy0gICAgICAgIC8qIElu IGVpdGhlciBjYXNlLCB0aGUgcHJpbmNpcGFsIGlzIG5vdyBwb2ludGVkIHRvIGJ5IGVpdGhlciB0 aGUgCisrICAgICAgICAvKiBJbiBlaXRoZXIgY2FzZSwgdGhlIHByaW5jaXBhbCBpcyBub3cgcG9p bnRlZCB0byBieSBlaXRoZXIgdGhlCisgICAgICAgICAgKiAqc3RhcnQgbGlzdCBvciBoYXMgYmVl biBmcmVlZCwgc28gd2UgZG9uJ3QgbmVlZCBpdCBhbnkgbW9yZQorICAgICAgICAgICovCisgICAg ICAgICBwcmluY2lwYWwgPSBOVUxMOworQEAgLTExMDEsMTMgKzExMDEsMTMgQEAgb2xkZ2FhX2ds b2J1c19wYXJzZV9wcmluY2lwYWxzKHBvbGljeV9maWxlX2NvbnRleHRfcHRyICBwY29udGV4dCwK KyAgICAgICAgIHN0cmNweSh0bXBfc3RyLCBzdHIpOyAvKiByZXR1cm4gdGhlIHJlYWQgc3RyaW5n ICovCisgCisgICAgICAgICBpZiggIXN0cmNtcChzdHIsUE9TSVRJVkVfUklHSFRTKSB8fAorLSAg ICAgICAgICAgICFzdHJjbXAoc3RyLE5FR0FUSVZFX1JJR0hUUykgKSAgLyogb3BlcmF0aW9uIHNl dCBzdGFydHMgKi8gIAorKyAgICAgICAgICAgICFzdHJjbXAoc3RyLE5FR0FUSVZFX1JJR0hUUykg KSAgLyogb3BlcmF0aW9uIHNldCBzdGFydHMgKi8KKyAgICAgICAgIHsKKyAgICAgICAgICAgICBn b3RvIHJlbGVhc2VfcHJpbmNpcGFsOworICAgICAgICAgfQorIAorICAgICB9IHdoaWxlKCFlbmRf b2ZfZmlsZSk7CistICAgCisrCisgcmVsZWFzZV9wcmluY2lwYWw6CisgICAgIGlmIChwcmluY2lw YWwpCisgICAgIHsKK0BAIC0xMTIzLDEwICsxMTIzLDEwIEBAIGZyZWVfc3RyOgorIAorIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgCistRnVuY3Rpb246IG9sZGdhYV9nbG9idXNfcGFyc2VfcmlnaHRzKCkgCisr RnVuY3Rpb246IG9sZGdhYV9nbG9idXNfcGFyc2VfcmlnaHRzKCkKKyAKKyBEZXNjcmlwdGlvbjoK Ky0gICAgICAgIFBhcnNlcyB0aGUgcG9saWN5IGZpbGUsIGZpbGxpbmcgb2xkZ2FhX3JpZ2h0cyBz dHJ1Y3R1cmUuIAorKyAgICAgICAgUGFyc2VzIHRoZSBwb2xpY3kgZmlsZSwgZmlsbGluZyBvbGRn YWFfcmlnaHRzIHN0cnVjdHVyZS4KKyAKKyBQYXJhbWV0ZXJzOgorICAgICAgICAgcGNvbnRleHQs IGhhbmRsZSB0byBhIHN0cnVjdHVyZSwgY29udGFpbmluZyB0aGUgc3RyZWFtIHRvIHJlYWQgZnJv bS4KK0BAIC0xMTM2LDcgKzExMzYsNyBAQCBQYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgICAg IG9mIHJpZ2h0cyB3aGljaCB3aWxsIGJlIHJlYWQgYnkgdGhpcyBpbnZva2F0aW9uLiBUaGlzIGlz IG5lZWRlZAorICAgICAgICAgICAgICAgICAgIGJ5IHRoZSAgYmluZF9yaWdodHNfdG9fY29uZGl0 aW9ucyBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICAgICBjb25kX3ByZXNlbnQsIGluZGljYXRl cyBpZiBjb25kaXRpb24gc2V0IHN0YXJ0cworLSAgICAgICAgZW5kX29mX2VudHJ5LCBpbmRpY2F0 ZXMgaWYgbmV3IGVudHJ5IHN0YXJ0cyAgICAgCisrICAgICAgICBlbmRfb2ZfZW50cnksIGluZGlj YXRlcyBpZiBuZXcgZW50cnkgc3RhcnRzCisgUmV0dXJuczoKKyAgICAgICAgT0xER0FBX1NVQ0NF U1Mgb3IgT0xER0FBX1JFVFJJRVZFX0VSUk9SCisgCitAQCAtMTE1NSw3ICsxMTU1LDcgQEAgb2xk Z2FhX2dsb2J1c19wYXJzZV9yaWdodHMoCisgICAgIG9sZGdhYV9yaWdodHNfcHRyICAgICAgICAg ICAgICAgICAgIHJpZ2h0cyA9IE5VTEw7CisgICAgIG9sZGdhYV9lcnJvcl9jb2RlICAgICAgICAg ICAgICAgICAgIGVycm9yX2NvZGUgPSBPTERHQUFfU1VDQ0VTUzsKKyAgICAgdWludDMyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWlub3Jfc3RhdHVzOworLSAgCisrCisgICAgIHN0ciA9 IG1hbGxvYyhwY29udGV4dC0+YnVmbGVuKTsKKyAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICB7 CitAQCAtMTE2OCw3OCArMTE2OCw3OCBAQCBvbGRnYWFfZ2xvYnVzX3BhcnNlX3JpZ2h0cygKKyAg ICAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9nbG9idXNfcGFyc2UgcmlnaHRzOlxuIik7Cisg I2VuZGlmIC8qIERFQlVHICovCisgCistICAgIHN0cmNweShzdHIsIHRtcF9zdHIpOyAKKysgICAg c3RyY3B5KHN0ciwgdG1wX3N0cik7CisgCisgICAgIGRvIHsKKyAgICAgICAgIGlmICgob2xkZ2Fh X3N0cmluZ3NfbWF0Y2goc3RyLFBPU0lUSVZFX1JJR0hUUykgfHwKKy0gICAgICAgICAgICAgb2xk Z2FhX3N0cmluZ3NfbWF0Y2goc3RyLE5FR0FUSVZFX1JJR0hUUykpPT0gRkFMU0UpIAorKyAgICAg ICAgICAgICBvbGRnYWFfc3RyaW5nc19tYXRjaChzdHIsTkVHQVRJVkVfUklHSFRTKSk9PSBGQUxT RSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICAvKiBleHBlY3Rpbmcgb3BlcmF0aW9uIHNldCBz dGFydHMgKi8KKyAgICAgICAgICAgICBlcnJvcl9jb2RlID0gT0xER0FBX1JFVFJJRVZFX0VSUk9S OworICAgICAgICAgICAgIG9sZGdhYV9oYW5kbGVfZXJyb3IoJihwY29udGV4dC0+cGFyc2VfZXJy b3IpLCAiQmFkIHJpZ2h0IHR5cGUiKTsKKyAKKyAgICAgICAgICAgICBnb3RvIGZyZWVfc3RyOwor LQl9CistICAKKysgICAgICAgIH0KKysKKyAgICAgICAgIC8qIGFsbG9jYXRlIGZpbGwgaW4gdGhl IG9sZGdhYV9yaWdodHMgc3RydWN0dXJlICovCisgICAgICAgICBvbGRnYWFfYWxsb2NhdGVfcmln aHRzKCZyaWdodHMpOworICAgICAgICAgaWYgKHN0cikKKyAgICAgICAgIHsKKyAgICAgICAgICAg ICByaWdodHMtPnR5cGUgPSBvbGRnYWFfc3RyY29weShzdHIsIHJpZ2h0cy0+dHlwZSk7CisgICAg ICAgICB9CistICAgICAgCisrCisgICAgICAgICBpZiAob2xkZ2FhX2dsb2J1c19oZWxwX3JlYWRf c3RyaW5nKHBjb250ZXh0LCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJwYXJzZV9yaWdodHM6IE1pc3NpbmcgcmlnaHQgYXV0aG9yaXR5IikpCisgICAg ICAgICB7CistICAgICAgICAgICAgZXJyb3JfY29kZSA9IE9MREdBQV9SRVRSSUVWRV9FUlJPUjsg IAorKyAgICAgICAgICAgIGVycm9yX2NvZGUgPSBPTERHQUFfUkVUUklFVkVfRVJST1I7CisgICAg ICAgICAgICAgZ290byBmcmVlX3JpZ2h0czsKKyAgICAgICAgIH0KKy0gCisrCisgICAgICAgICBp ZiAoc3RyKQorICAgICAgICAgeworLSAgICAgICAgICAgIC8qIGV4cGVjdGluZyBkZWZpbmluZyBh dXRob3JpdHkgKi8gCisrICAgICAgICAgICAgLyogZXhwZWN0aW5nIGRlZmluaW5nIGF1dGhvcml0 eSAqLworICAgICAgICAgICAgIHJpZ2h0cy0+YXV0aG9yaXR5ID0gb2xkZ2FhX3N0cmNvcHkoc3Ry LCByaWdodHMtPmF1dGhvcml0eSk7CisgICAgICAgICB9CistICAgICAKKysKKyAgICAgICAgIGlm IChvbGRnYWFfZ2xvYnVzX2hlbHBfcmVhZF9zdHJpbmcocGNvbnRleHQsIHN0ciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2VfcmlnaHRzOiBNaXNzaW5n IHJpZ2h0IHZhbHVlIikpCisgICAgICAgICB7CistICAgICAgICAgICAgZXJyb3JfY29kZSA9IE9M REdBQV9SRVRSSUVWRV9FUlJPUjsgIAorKyAgICAgICAgICAgIGVycm9yX2NvZGUgPSBPTERHQUFf UkVUUklFVkVfRVJST1I7CisgICAgICAgICAgICAgZ290byBmcmVlX3JpZ2h0czsKKyAgICAgICAg IH0KKy0gIAorKworICAgICAgICAgaWYgKHN0cikKKyAgICAgICAgIHsKKy0gICAgICAgICAgICAv KiBleHBlY3RpbmcgdmFsdWUgKi8gICAgICAKKysgICAgICAgICAgICAvKiBleHBlY3RpbmcgdmFs dWUgKi8KKyAgICAgICAgICAgICByaWdodHMtPnZhbHVlID0gb2xkZ2FhX3N0cmNvcHkoc3RyLCBy aWdodHMtPnZhbHVlKTsKKyAgICAgICAgIH0KKy0gICAgICAgCistICAgICAgICBpZihmaXJzdCA9 PSBUUlVFKSB7ICpzdGFydCA9IHJpZ2h0czsgZmlyc3QgPSBGQUxTRTsgfSAKKysKKysgICAgICAg IGlmKGZpcnN0ID09IFRSVUUpIHsgKnN0YXJ0ID0gcmlnaHRzOyBmaXJzdCA9IEZBTFNFOyB9Cisg ICAgICAgICBlbHNlIG9sZGdhYV9hZGRfcmlnaHRzKHN0YXJ0LCByaWdodHMpOworIAorICAgICAg ICAgcmlnaHRzID0gTlVMTDsKKyAKKy0gICAgICAgIGlmIChvbGRnYWFfZ2xvYnVzX3JlYWRfc3Ry aW5nKHBjb250ZXh0LCBzdHIsIE5VTEwpKSAgICAgCisrICAgICAgICBpZiAob2xkZ2FhX2dsb2J1 c19yZWFkX3N0cmluZyhwY29udGV4dCwgc3RyLCBOVUxMKSkKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBlcnJvcl9jb2RlID0gT0xER0FBX1JFVFJJRVZFX0VSUk9SOworICAgICAgICAgICAgIGdv dG8gZnJlZV9zdHI7CisgICAgICAgICB9CistICAgICAgCisrCisgICAgICAgICBzdHJjcHkodG1w X3N0ciwgc3RyKTsgLyogcmV0dXJuIHRoZSByZWFkIHN0cmluZyAqLworLSAgICAgICAKKysKKyAg ICAgICAgIGlmICghc3RybmNtcChzdHIsQ09ORF9QUkVGSVgsIDUpKSAgLyogY29uZGl0aW9uIHNl dCBzdGFydHMgKi8KKyAgICAgICAgIHsKKyAgICAgICAgICAgICAqY29uZF9wcmVzZW50ID0gVFJV RTsKKyAgICAgICAgICAgICBnb3RvIGZyZWVfc3RyOworICAgICAgICAgfQorLSAgIAorKworICAg ICAgICAgaWYoIXN0cm5jbXAoc3RyLFBSSU5DSVBBTF9BQ0NFU1NfUFJFRklYLCA2KSB8fAorLSAg ICAgICAgICAgIXN0cm5jbXAoc3RyLFBSSU5DSVBBTF9HUkFOVE9SX1BSRUZJWCwgNykpICAvKiBu ZXcgZW50cnkgc3RhcnRzICovICAgICAgICAKKysgICAgICAgICAgICFzdHJuY21wKHN0cixQUklO Q0lQQUxfR1JBTlRPUl9QUkVGSVgsIDcpKSAgLyogbmV3IGVudHJ5IHN0YXJ0cyAqLworICAgICAg ICAgeworLSAgICAgICAgICAgICplbmRfb2ZfZW50cnkgPSBUUlVFOyAgICAgIAorKyAgICAgICAg ICAgICplbmRfb2ZfZW50cnkgPSBUUlVFOworIAorICAgICAgICAgICAgIGdvdG8gZnJlZV9zdHI7 CistICAgICAgICB9ICAgICAKKysgICAgICAgIH0KKyAKKyAgICAgfSB3aGlsZSghZW5kX29mX2Zp bGUpOworIAorQEAgLTEyNTgsMjAgKzEyNTgsMjAgQEAgb3V0OgorIAorIAorIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCistRnVuY3Rpb246IG9sZGdhYV9nbG9idXNfcGFyc2VfY29uZGl0aW9ucygpIAorK0Z1bmN0 aW9uOiBvbGRnYWFfZ2xvYnVzX3BhcnNlX2NvbmRpdGlvbnMoKQorIAorIERlc2NyaXB0aW9uOgor LSAgICAgICAgUGFyc2VzIHRoZSBwb2xpY3kgZmlsZSwgZmlsbGluZyBvbGRnYWFfY29uZGl0aW9u cyBzdHJ1Y3R1cmUuIAorKyAgICAgICAgUGFyc2VzIHRoZSBwb2xpY3kgZmlsZSwgZmlsbGluZyBv bGRnYWFfY29uZGl0aW9ucyBzdHJ1Y3R1cmUuCisgCisgUGFyYW1ldGVyczoKKyAgICAgICAgIHBj b250ZXh0LCAgIGhhbmRsZSB0byBhIHN0cnVjdHVyZSwgY29udGFpbmluZyB0aGUgc3RyZWFtIHRv IHJlYWQgZnJvbS4KKy0gICAgICAgIGNvbmRpdGlvbnMsIHBvaW50ZXIgdG8gb2xkZ2FhX2NvbmRp dGlvbnMgc3RydWN0dXJlIHRvIGJlIGZpbGxlZCBpbi4gCisrICAgICAgICBjb25kaXRpb25zLCBw b2ludGVyIHRvIG9sZGdhYV9jb25kaXRpb25zIHN0cnVjdHVyZSB0byBiZSBmaWxsZWQgaW4uCisg ICAgICAgICB0bXBfc3RyLCAgICBjb250YWlucyBhIHN0cmluZyB3aGljaCB3aWxsIGJlIGV2YWx1 YXRlZCBhbmQgaW4gdGhlIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgIG5ldyB2YWx1ZSBpcyBz dG9yZWQgaGVyZS4KKyAgICAgICAgIGxpc3QsICAgICAgIHN0b3JlcyBhIHBvaW50ZXIgdG8gb2xk Z2FhX2NvbmRfYmluZGluZ3Mgc3RydWN0dXJlIG9mIHRoZSBzZXQKKy0gICAgICAgICAgICAgICAg ICAgIG9mIGNvbmRpdGlvbnMgd2hpY2ggd2lsbCBiZSByZWFkIGJ5IHRoaXMgaW52b2thdGlvbi4g CisrICAgICAgICAgICAgICAgICAgICBvZiBjb25kaXRpb25zIHdoaWNoIHdpbGwgYmUgcmVhZCBi eSB0aGlzIGludm9rYXRpb24uCisgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG5lZWRlZCBi eSB0aGUgYmluZF9yaWdodHNfdG9fY29uZGl0aW9ucyBmdW5jdGlvbi4KKy0gICAgICAgIGVuZF9v Zl9lbnRyeSwgaW5kaWNhdGVzIGlmIG5ldyBlbnRyeSBzdGFydHMgICAgIAorKyAgICAgICAgZW5k X29mX2VudHJ5LCBpbmRpY2F0ZXMgaWYgbmV3IGVudHJ5IHN0YXJ0cworIFJldHVybnM6CisgICAg ICAgIE9MREdBQV9TVUNDRVNTIG9yIE9MREdBQV9SRVRSSUVWRV9FUlJPUgorIAorQEAgLTEyODEs NyArMTI4MSw3IEBAIFJldHVybnM6Cisgb2xkZ2FhX2Vycm9yX2NvZGUKKyBvbGRnYWFfZ2xvYnVz X3BhcnNlX2NvbmRpdGlvbnMoCisgICAgIHBvbGljeV9maWxlX2NvbnRleHRfcHRyICAgICAgICAg ICAgIHBjb250ZXh0LAorLSAgICBvbGRnYWFfY29uZGl0aW9uc19wdHIgICAgICAgICAgICAgICAq Y29uZGl0aW9ucywgICAgICAgICAgICAgICAgICAKKysgICAgb2xkZ2FhX2NvbmRpdGlvbnNfcHRy ICAgICAgICAgICAgICAgKmNvbmRpdGlvbnMsCisgICAgIGNoYXIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICp0bXBfc3RyLAorICAgICBvbGRnYWFfY29uZF9iaW5kaW5nc19wdHIgICAg ICAgICAgICAqbGlzdCwKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KmVuZF9vZl9lbnRyeSkKK0BAIC0xMzA0LDggKzEzMDQsOCBAQCBvbGRnYWFfZ2xvYnVzX3BhcnNl X2NvbmRpdGlvbnMoCisgICAgIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfZ2xvYnVzX3BhcnNl IGNvbmRpdGlvbnM6XG4iKTsKKyAjZW5kaWYgLyogREVCVUcgKi8KKyAKKy0gICAgc3RyY3B5KHN0 ciwgdG1wX3N0cik7IAorLSAgCisrICAgIHN0cmNweShzdHIsIHRtcF9zdHIpOworKworICAgICBk bworICAgICB7CisgICAgICAgICBpZihzdHJuY21wKHN0ciwiY29uZF8iLCA1KSAhPSAwKS8qIGV4 cGVjdGluZyBjb25kaXRpb24gc2V0IHN0YXJ0cyAqLworQEAgLTEzMTgsMTEgKzEzMTgsMTEgQEAg b2xkZ2FhX2dsb2J1c19wYXJzZV9jb25kaXRpb25zKAorIAorICAgICAgICAgLyogYWxsb2NhdGUg ZmlsbCBpbiB0aGUgb2xkZ2FhX2NvbmRpdGlvbnMgc3RydWN0dXJlICovCisgICAgICAgICBvbGRn YWFfYWxsb2NhdGVfY29uZGl0aW9ucygmY29uZCk7CistICAgICAgICBpZiAoc3RyKSAKKysgICAg ICAgIGlmIChzdHIpCisgICAgICAgICB7CisgICAgICAgICAgICAgY29uZC0+dHlwZSA9IG9sZGdh YV9zdHJjb3B5KHN0cixjb25kLT50eXBlKSA7CisgICAgICAgICB9CistICAgIAorKworICAgICAg ICAgaWYgKG9sZGdhYV9nbG9idXNfaGVscF9yZWFkX3N0cmluZyhwY29udGV4dCwgc3RyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyc2VfY29uZGl0aW9u czogTWlzc2luZyBjb25kaXRpb24gYXV0aG9yaXR5IikpCisgICAgICAgICB7CitAQCAtMTMzNCw3 ICsxMzM0LDcgQEAgb2xkZ2FhX2dsb2J1c19wYXJzZV9jb25kaXRpb25zKAorICAgICAgICAgewor ICAgICAgICAgICAgIGNvbmQtPmF1dGhvcml0eSA9IG9sZGdhYV9zdHJjb3B5KHN0ciwgY29uZC0+ YXV0aG9yaXR5KTsKKyAgICAgICAgIH0KKy0gICAKKysKKyAgICAgICAgIGlmIChvbGRnYWFfZ2xv YnVzX2hlbHBfcmVhZF9zdHJpbmcocGNvbnRleHQsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInBhcnNlX2NvbmRpdGlvbnM6IE1pc3NpbmcgY29uZGl0 aW9uIHZhbHVlIikpCisgICAgICAgICB7CitAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgb2xkZ2FhX2ds b2J1c19wYXJzZV9jb25kaXRpb25zKAorICAgICAgICAgeworICAgICAgICAgICAgIGNvbmQtPnZh bHVlID0gb2xkZ2FhX3N0cmNvcHkoc3RyLCBjb25kLT52YWx1ZSk7CisgICAgICAgICB9CistICAg IAorKworICAgICAgICAgb2xkZ2FhX2FsbG9jYXRlX2NvbmRfYmluZGluZ3MoJmNvbmRfYmluZCk7 CisgCisgICAgICAgICBpZigqY29uZGl0aW9ucyA9PSBOVUxMKSB7ICpjb25kaXRpb25zID0gY29u ZDsgfQorQEAgLTEzNjcsMjkgKzEzNjcsMjkgQEAgb2xkZ2FhX2dsb2J1c19wYXJzZV9jb25kaXRp b25zKAorICAgICAgICAgfQorICAgICAgICAgY29uZCA9IE5VTEw7CisgCistICAgICAgICBpZihm aXJzdCA9PSBUUlVFKXsgKmxpc3QgPSBjb25kX2JpbmQ7IGZpcnN0ID0gRkFMU0U7IH0gCisrICAg ICAgICBpZihmaXJzdCA9PSBUUlVFKXsgKmxpc3QgPSBjb25kX2JpbmQ7IGZpcnN0ID0gRkFMU0U7 IH0KKyAgICAgICAgIGVsc2UgIG9sZGdhYV9hZGRfY29uZF9iaW5kaW5nKGxpc3QsIGNvbmRfYmlu ZCk7CistIAorLSAgICAgICAgaWYgKG9sZGdhYV9nbG9idXNfcmVhZF9zdHJpbmcocGNvbnRleHQs IHN0ciwgTlVMTCkpICAgIAorKworKyAgICAgICAgaWYgKG9sZGdhYV9nbG9idXNfcmVhZF9zdHJp bmcocGNvbnRleHQsIHN0ciwgTlVMTCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgZXJyb3Jf Y29kZSA9IE9MREdBQV9SRVRSSUVWRV9FUlJPUjsKKyAgICAgICAgICAgICBnb3RvIHJlbGVhc2Vf Y29uZGl0aW9uczsKKyAgICAgICAgIH0KKy0gICAgICAKKysKKyAgICAgICAgIGlmKGVuZF9vZl9m aWxlID09IFRSVUUpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byByZWxlYXNlX2NvbmRp dGlvbnM7CisgICAgICAgICB9CistICAgIAorKworICAgICAgICAgc3RyY3B5KHRtcF9zdHIsIHN0 cik7IC8qIHJldHVybiB0aGUgcmVhZCBzdHJpbmcgKi8KKyAKKyAgICAgICAgIGlmKCFzdHJuY21w KHN0cixQUklOQ0lQQUxfQUNDRVNTX1BSRUZJWCwgNikgfHwKKy0gICAgICAgICAgICFzdHJuY21w KHN0cixQUklOQ0lQQUxfR1JBTlRPUl9QUkVGSVgsIDcpKSAgLyogbmV3IGVudHJ5IHN0YXJ0cyAq LyAgICAgICAgCisrICAgICAgICAgICAhc3RybmNtcChzdHIsUFJJTkNJUEFMX0dSQU5UT1JfUFJF RklYLCA3KSkgIC8qIG5ldyBlbnRyeSBzdGFydHMgKi8KKyAgICAgICAgIHsKKy0gICAgICAgICAg ICAqZW5kX29mX2VudHJ5ID0gVFJVRTsgICAgICAKKysgICAgICAgICAgICAqZW5kX29mX2VudHJ5 ID0gVFJVRTsKKyAKKyAgICAgICAgICAgICBnb3RvIHJlbGVhc2VfY29uZGl0aW9uczsKKy0gICAg ICAgIH0gIAorKyAgICAgICAgfQorIAorICAgICAgICAgaWYoIXN0cm5jbXAoc3RyLFBPU19SSUdI VFNfUFJFRklYLCAzKSB8fAorICAgICAgICAgICAgIXN0cm5jbXAoc3RyLE5FR19SSUdIVFNfUFJF RklYLCAzKSkgLyogbmV3IHJpZ2h0cyBzZXQgc3RhcnRzICovCitAQCAtMTQxMCw3ICsxNDEwLDcg QEAgZnJlZV9zdHI6CisgCisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLSAgCisrCisgdm9p ZAorIG9sZGdhYV9nbG9idXNfcHJpbnRfcmlnaHRzKG9sZGdhYV9yaWdodHNfcHRyIHJpZ2h0cykK KyB7CitAQCAtMTQxOCwxOCArMTQxOCwxOCBAQCBvbGRnYWFfZ2xvYnVzX3ByaW50X3JpZ2h0cyhv bGRnYWFfcmlnaHRzX3B0ciByaWdodHMpCisgICAgIG9sZGdhYV9jb25kX2JpbmRpbmdzX3B0ciBj b25kOworIAorICAgICB3aGlsZShwdHIgIT0gTlVMTCkKKy0gICAgeyAgCisrICAgIHsKKyAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiQUNDRVNTIFJJR0hUXG4iKTsKKy0gICAgICAgIGZwcmludGYo c3RkZXJyLCAidHlwZSAgICAgIDogJXNcbiIsICAgcHRyLT50eXBlKTsgICAKKysgICAgICAgIGZw cmludGYoc3RkZXJyLCAidHlwZSAgICAgIDogJXNcbiIsICAgcHRyLT50eXBlKTsKKyAgICAgICAg IGZwcmludGYoc3RkZXJyLCAiYXV0aG9yaXR5IDogJXNcbiIsICAgcHRyLT5hdXRob3JpdHkpOwor ICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ2YWx1ZSAgICAgOiAlc1xuXG4iLCBwdHItPnZhbHVl KTsKKyAKKy0gICAgICAgIGNvbmQgPSBwdHItPmNvbmRfYmluZGluZ3M7IAorKyAgICAgICAgY29u ZCA9IHB0ci0+Y29uZF9iaW5kaW5nczsKKyAKKyAgICAgICAgIHdoaWxlKGNvbmQgIT0gTlVMTCkK KyAgICAgICAgIHsKKyAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNPTkRJVElPTlxuIik7 CistICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ0eXBlICAgICAgOiAlc1xuIiwgICAgIGNv bmQtPmNvbmRpdGlvbi0+dHlwZSk7ICAgCisrICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ0 eXBlICAgICAgOiAlc1xuIiwgICAgIGNvbmQtPmNvbmRpdGlvbi0+dHlwZSk7CisgICAgICAgICAg ICAgZnByaW50ZihzdGRlcnIsICJhdXRob3JpdHkgOiAlc1xuIiwgICAgIGNvbmQtPmNvbmRpdGlv bi0+YXV0aG9yaXR5KTsKKyAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInZhbHVlICAgICA6 ICVzXG4iLCAgICAgY29uZC0+Y29uZGl0aW9uLT52YWx1ZSk7CisgICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICJzdGF0dXMgICAgOiAlMDh4XG5cbiIsIGNvbmQtPmNvbmRpdGlvbi0+c3RhdHVz KTsKK0BAIC0xNDUwLDEzICsxNDUwLDEzIEBAIG9sZGdhYV9nbG9idXNfcHJpbnRfYXR0cmlidXRl cyhvbGRnYWFfc2VjX2F0dHJiX3B0ciBhdHRyaWJ1dGVzKQorIAorIAorICAgICB3aGlsZShwdHIg IT0gTlVMTCkKKy0gICAgeyAgCisrICAgIHsKKyAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQVRU UklCVVRFXG4iKTsKKy0gICAgICAgIGZwcmludGYoc3RkZXJyLCAidHlwZSAgICAgIDogJXNcbiIs ICAgcHRyLT50eXBlKTsgICAKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAidHlwZSAgICAgIDog JXNcbiIsICAgcHRyLT50eXBlKTsKKyAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiYXV0aG9yaXR5 IDogJXNcbiIsICAgcHRyLT5hdXRob3JpdHkpOworICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ2 YWx1ZSAgICAgOiAlc1xuXG4iLCBwdHItPnZhbHVlKTsKKyAKKy0gICAgICAgIHB0ciA9IHB0ci0+ bmV4dDsgCisrICAgICAgICBwdHIgPSBwdHItPm5leHQ7CisgICAgIH0KKyB9CisgCitAQCAtMTQ2 NywyOCArMTQ2NywyOCBAQCBvbGRnYWFfZ2xvYnVzX2dldF90cnVzdGVkX2NhX2xpc3Qob2xkZ2Fh X3NlY19hdHRyYl9wdHIgKmF0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZGdhYV9wb2xpY3lfcHRyICAgICBwb2xpY3lfaGFuZGxlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfcmlnaHRzX3B0ciAgICAgcmlnaHRzKQorIHsK Ky0gICAgb2xkZ2FhX2Vycm9yX2NvZGUgICAgIG9sZGdhYV9zdGF0dXMgICAgPSBPTERHQUFfU1VD Q0VTUzsKKy0gICAgdWludDMyICAgICAgICAgICAgIG1pbm9yX3N0YXR1cyAgPSAwOworLSAgICBv bGRnYWFfcHJpbmNpcGFsc19wdHIgcHJpbmNpcGFsPSBOVUxMOyAgICAgCistICAgCisrICAgIG9s ZGdhYV9lcnJvcl9jb2RlICAgICBvbGRnYWFfc3RhdHVzID0gT0xER0FBX1NVQ0NFU1M7CisrICAg IHVpbnQzMiAgICAgICAgICAgICAgICBtaW5vcl9zdGF0dXMgID0gMDsKKysgICAgb2xkZ2FhX3By aW5jaXBhbHNfcHRyIHByaW5jaXBhbCAgICAgPSBOVUxMOworKworICNpZmRlZiBERUJVRworICAg ICBmcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX2dsb2J1c19nZXRfdHJ1c3RlZF9jYV9saXN0Olxu Iik7CisgI2VuZGlmIC8qIERFQlVHICovCisgCisgCisgICAgIG9sZGdhYV9hbGxvY2F0ZV9wcmlu Y2lwYWxzKCZwcmluY2lwYWwpOworLSAgICBwcmluY2lwYWwtPnR5cGUgICAgICA9IG9sZGdhYV9z dHJjb3B5KE9MREdBQV9DQSwgICAgICAgICAgICAgcHJpbmNpcGFsLT50eXBlKTsgICAKKysgICAg cHJpbmNpcGFsLT50eXBlICAgICAgPSBvbGRnYWFfc3RyY29weShPTERHQUFfQ0EsICAgICAgICAg ICAgIHByaW5jaXBhbC0+dHlwZSk7CisgICAgIHByaW5jaXBhbC0+YXV0aG9yaXR5ID0gb2xkZ2Fh X3N0cmNvcHkoT0xER0FBX1g1MDlfQVVUSE9SSVRZLCBwcmluY2lwYWwtPmF1dGhvcml0eSk7Cisg ICAgIC8qIHByaW5jaXBhbC0+dmFsdWUgICAgID0gb2xkZ2FhX3N0cmNvcHkoIlwiKlwiIiwgICAg ICAgICAgICBwcmluY2lwYWwtPnZhbHVlKTsgKi8KKyAKKy0gICAgb2xkZ2FhX3N0YXR1cyA9IG9s ZGdhYV9nZXRfYXV0aG9yaXplZF9wcmluY2lwYWxzKGF0dHJpYnV0ZXMsIAorKyAgICBvbGRnYWFf c3RhdHVzID0gb2xkZ2FhX2dldF9hdXRob3JpemVkX3ByaW5jaXBhbHMoYXR0cmlidXRlcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGlj eV9oYW5kbGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmluY2lwYWwsIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcHJpbmNpcGFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRzKTsKKyAKKyAgICAgb2xkZ2FhX3N0YXR1 cyA9IG9sZGdhYV9yZWxlYXNlX3ByaW5jaXBhbHMoJm1pbm9yX3N0YXR1cywgJnByaW5jaXBhbCk7 CisgCistICAgIHJldHVybiBvbGRnYWFfc3RhdHVzOyAgIAorKyAgICByZXR1cm4gb2xkZ2FhX3N0 YXR1czsKKyAKKyB9CisgCitkaWZmIC0tZ2l0IGEvZ3NpL2NhbGxiYWNrL3NvdXJjZS9saWJyYXJ5 L29sZGdhYS9vbGRnYWFfcmVsZWFzZS5jIGIvZ3NpL2NhbGxiYWNrL3NvdXJjZS9saWJyYXJ5L29s ZGdhYS9vbGRnYWFfcmVsZWFzZS5jCitpbmRleCA4NTg1YWMzODMuLjQ1NTBiNGViMiAxMDA2NDQK Ky0tLSBhL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9vbGRnYWEvb2xkZ2FhX3JlbGVhc2Uu YworKysrIGIvZ3NpL2NhbGxiYWNrL3NvdXJjZS9saWJyYXJ5L29sZGdhYS9vbGRnYWFfcmVsZWFz ZS5jCitAQCAtMTUsMTAgKzE1LDEwIEBACisgICovCisgCisgLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gb2xk Z2FhX3JlbGVhc2UuYzoKKysgICAgb2xkZ2FhX3JlbGVhc2UuYzoKKyAKKyBEZXNjcmlwdGlvbjoK Ky0JVGhpcyBmaWxlIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgb2xkZ2FhIHJvdXRpbmVzCisrICAg ICAgICBUaGlzIGZpbGUgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBvbGRnYWEgcm91dGluZXMKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworICNpbmNsdWRlICJnbG9idXNfb2xkZ2FhLmgiCisgI2luY2x1ZGUgInN0 ZGlvLmgiIC8qIGZvciBmcHJpbnRmKCkgKi8KK0BAIC0yNyw1NiArMjcsNTYgQEAgRGVzY3JpcHRp b246CisgRnVuY3Rpb246ICBvbGRnYWFfcmVsZWFzZV9idWZmZXJfY29udGVudHMKKyAKKyBEZXNj cmlwdGlvbjoKKy0JUmVsZWFzZSB0aGUgY29udGVudHMgb2YgYSBidWZmZXIKKysgICAgICAgIFJl bGVhc2UgdGhlIGNvbnRlbnRzIG9mIGEgYnVmZmVyCisgCisgUGFyYW1ldGVyczoKKyAKKyBSZXR1 cm5zOgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisgCistb2xkZ2FhX2Vycm9yX2NvZGUgCistb2xkZ2FhX3Jl bGVhc2VfYnVmZmVyX2NvbnRlbnRzICh1aW50MzIgICAgICAgICAqbWlub3Jfc3RhdHVzLAorLSAg ICAgICAgICAgICAgICAgICAgb2xkZ2FhX2J1ZmZlcl9wdHIgIGJ1ZmZlcikKKytvbGRnYWFfZXJy b3JfY29kZQorK29sZGdhYV9yZWxlYXNlX2J1ZmZlcl9jb250ZW50cyAodWludDMyICAgICAgICAg ICAgKm1pbm9yX3N0YXR1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZGdh YV9idWZmZXJfcHRyICBidWZmZXIpCisgeworIAorICNpZmRlZiBERUJVRworLWZwcmludGYoc3Rk ZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9idWZmZXJfY29udGVudHM6XG4iKTsKKysgICAgZnByaW50 ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX2J1ZmZlcl9jb250ZW50czpcbiIpOworICNlbmRp ZiAvKiBERUJVRyAqLworIAorLSAJaWYgKGJ1ZmZlciA9PSBOVUxMIHx8IGJ1ZmZlciA9PSBPTERH QUFfTk9fQlVGRkVSKSByZXR1cm4gT0xER0FBX1NVQ0NFU1M7CistICAgICAgIAorLQlpZiAoYnVm ZmVyLT52YWx1ZSkgZnJlZShidWZmZXItPnZhbHVlKTsKKy0JYnVmZmVyLT5sZW5ndGggPSAwOwor KyAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMIHx8IGJ1ZmZlciA9PSBPTERHQUFfTk9fQlVGRkVSKSBy ZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisgCistCXJldHVybiBPTERHQUFfU1VDQ0VTUzsKKysgICAg aWYgKGJ1ZmZlci0+dmFsdWUpIGZyZWUoYnVmZmVyLT52YWx1ZSk7CisrICAgIGJ1ZmZlci0+bGVu Z3RoID0gMDsKKysKKysgICAgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworIAorIH0gLyogb2xkZ2Fh X3JlbGVhc2VfYnVmZmVyX2NvbnRlbnRzICovCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyBGdW5jdGlvbjog IG9sZGdhYV9yZWxlYXNlX2J1ZmZlcgorIAorIERlc2NyaXB0aW9uOgorLQlSZWxlYXNlIHRoZSBi dWZmZXIKKysgICAgICAgIFJlbGVhc2UgdGhlIGJ1ZmZlcgorIAorIFBhcmFtZXRlcnM6CisgCisg UmV0dXJuczoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworIAorLW9sZGdhYV9lcnJvcl9jb2RlIAorLW9sZGdh YV9yZWxlYXNlX2J1ZmZlcih1aW50MzIgICAgICAgICAqbWlub3Jfc3RhdHVzLAorLSAgICAgICAg ICAgICAgICAgICAgb2xkZ2FhX2J1ZmZlcl9wdHIgKiAgYnVmZmVyKQorK29sZGdhYV9lcnJvcl9j b2RlCisrb2xkZ2FhX3JlbGVhc2VfYnVmZmVyKHVpbnQzMiAgICAgICAgICAgICptaW5vcl9zdGF0 dXMsCisrICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9idWZmZXJfcHRyICpidWZmZXIpCisg eworIAorICNpZmRlZiBERUJVRworLWZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9i dWZmZXI6XG4iKTsKKysgICAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX2J1ZmZl cjpcbiIpOworICNlbmRpZiAvKiBERUJVRyAqLworIAorLSAJaWYgKGJ1ZmZlciA9PSBOVUxMIHx8 ICpidWZmZXIgPT0gTlVMTCkgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworLSAgICAgICAKKysgICAg aWYgKGJ1ZmZlciA9PSBOVUxMIHx8ICpidWZmZXIgPT0gTlVMTCkgcmV0dXJuIE9MREdBQV9TVUND RVNTOworKworICAgICBmcmVlKCpidWZmZXIpOworLQkqYnVmZmVyID0gTlVMTDsKKysgICAgKmJ1 ZmZlciA9IE5VTEw7CisgCistCXJldHVybiBPTERHQUFfU1VDQ0VTUzsKKysgICAgcmV0dXJuIE9M REdBQV9TVUNDRVNTOworIAorIH0gLyogb2xkZ2FhX3JlbGVhc2VfYnVmZmVyICovCisgCitAQCAt ODQsNjEgKzg0LDYxIEBAIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9idWZmZXI6 XG4iKTsKKyBGdW5jdGlvbjogIG9sZGdhYV9yZWxlYXNlX29wdGlvbnMKKyAKKyBEZXNjcmlwdGlv bjoKKy0JUmVsZWFzZSB0aGUgY29udGVudHMgb2YgYSBidWZmZXIKKysgICAgICAgIFJlbGVhc2Ug dGhlIGNvbnRlbnRzIG9mIGEgYnVmZmVyCisgCisgUGFyYW1ldGVyczoKKyAKKyBSZXR1cm5zOgor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisgCistb2xkZ2FhX2Vycm9yX2NvZGUgCistb2xkZ2FhX3JlbGVhc2Vf b3B0aW9ucyh1aW50MzIgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAg ICAgIG9sZGdhYV9vcHRpb25zX3B0ciAgYnVmZmVyKQorK29sZGdhYV9lcnJvcl9jb2RlCisrb2xk Z2FhX3JlbGVhc2Vfb3B0aW9ucyh1aW50MzIgICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKysg ICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9vcHRpb25zX3B0ciAgYnVmZmVyKQorIHsKKyAj aWZkZWYgREVCVUcKKy1mcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX3JlbGVhc2Vfb3B0aW9uczpc biIpOworKyAgICBmcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX3JlbGVhc2Vfb3B0aW9uczpcbiIp OworICNlbmRpZiAvKiBERUJVRyAqLworIAorLSAJaWYgKGJ1ZmZlciA9PSBOVUxMIHx8IGJ1ZmZl ciA9PSBPTERHQUFfTk9fT1BUSU9OUykgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworLSAgICAgICAK Ky0JaWYgKGJ1ZmZlci0+dmFsdWUpIGZyZWUoYnVmZmVyLT52YWx1ZSk7CistCWJ1ZmZlci0+bGVu Z3RoID0gMDsKKysgICAgaWYgKGJ1ZmZlciA9PSBOVUxMIHx8IGJ1ZmZlciA9PSBPTERHQUFfTk9f T1BUSU9OUykgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworIAorLSAgZnJlZShidWZmZXIpOworKyAg ICBpZiAoYnVmZmVyLT52YWx1ZSkgZnJlZShidWZmZXItPnZhbHVlKTsKKysgICAgYnVmZmVyLT5s ZW5ndGggPSAwOworIAorLQlyZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisrICAgIGZyZWUoYnVmZmVy KTsKKysKKysgICAgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworIAorIH0gLyogb2xkZ2FhX3JlbGVh c2Vfb3B0aW9ucyAqLworLSAgICAgCisrCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyBGdW5jdGlvbjogIG9s ZGdhYV9yZWxlYXNlX2RhdGEKKyAKKyBEZXNjcmlwdGlvbjoKKy0JUmVsZWFzZSB0aGUgY29udGVu dHMgb2YgYSBidWZmZXIKKysgICAgICAgIFJlbGVhc2UgdGhlIGNvbnRlbnRzIG9mIGEgYnVmZmVy CisgCisgUGFyYW1ldGVyczoKKyAKKyBSZXR1cm5zOgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCistb2xk Z2FhX2Vycm9yX2NvZGUgCistb2xkZ2FhX3JlbGVhc2VfZGF0YSAodWludDMyICAgICAgICptaW5v cl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgb2xkZ2FhX2RhdGFfcHRyICBidWZmZXIpCisr b2xkZ2FhX2Vycm9yX2NvZGUKKytvbGRnYWFfcmVsZWFzZV9kYXRhICh1aW50MzIgICAgICAgICAg Km1pbm9yX3N0YXR1cywKKysgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfZGF0YV9wdHIgIGJ1 ZmZlcikKKyB7CisgCisgCisgI2lmZGVmIERFQlVHCistZnByaW50ZihzdGRlcnIsICJcbm9sZGdh YV9yZWxlYXNlX2RhdGE6XG4iKTsKKysgICAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxl YXNlX2RhdGE6XG4iKTsKKyAjZW5kaWYgLyogREVCVUcgKi8KKyAKKy0gCWlmIChidWZmZXIgPT0g TlVMTCB8fCBidWZmZXIgPT0gT0xER0FBX05PX0RBVEEpIHJldHVybiBPTERHQUFfU1VDQ0VTUzsK Ky0gICAgICAgCistCWlmIChidWZmZXItPnN0cikgICAgICAgZnJlZShidWZmZXItPnN0cik7Cist CWlmIChidWZmZXItPmVycm9yX3N0cikgZnJlZShidWZmZXItPmVycm9yX3N0cik7CisrICAgIGlm IChidWZmZXIgPT0gTlVMTCB8fCBidWZmZXIgPT0gT0xER0FBX05PX0RBVEEpIHJldHVybiBPTERH QUFfU1VDQ0VTUzsKKyAKKy0gICAgICAgIGZyZWUoYnVmZmVyKTsKKysgICAgaWYgKGJ1ZmZlci0+ c3RyKSAgICAgICBmcmVlKGJ1ZmZlci0+c3RyKTsKKysgICAgaWYgKGJ1ZmZlci0+ZXJyb3Jfc3Ry KSBmcmVlKGJ1ZmZlci0+ZXJyb3Jfc3RyKTsKKyAKKy0JcmV0dXJuIE9MREdBQV9TVUNDRVNTOwor KyAgICBmcmVlKGJ1ZmZlcik7CisrCisrICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKyAKKyB9 IC8qIG9sZGdhYV9yZWxlYXNlX2RhdGEgKi8KKyAKK0BAIC0xNDksNzQgKzE0OSw3NCBAQCBmcHJp bnRmKHN0ZGVyciwgIlxub2xkZ2FhX3JlbGVhc2VfZGF0YTpcbiIpOworIEZ1bmN0aW9uOiAgIG9s ZGdhYV9kZWxldGVfc2VjX2NvbnRleHQoKQorIAorIERlc2NyaXB0aW9uOgorLQlkZWxldGUgdGhl IHNlY3VyaXR5IGNvbnRleHQKKysgICAgICAgIGRlbGV0ZSB0aGUgc2VjdXJpdHkgY29udGV4dAor IAorIFBhcmFtZXRlcnM6CisgCisgUmV0dXJuczoKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorLW9sZGdh YV9lcnJvcl9jb2RlIAorLW9sZGdhYV9yZWxlYXNlX3NlY19jb250ZXh0KHVpbnQzMiAgICAgICAg ICAgICAqbWlub3Jfc3RhdHVzLAorLSAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX3NlY19j b250ZXh0X3B0ciAqc2VjX2NvbnRleHQpCisrb2xkZ2FhX2Vycm9yX2NvZGUKKytvbGRnYWFfcmVs ZWFzZV9zZWNfY29udGV4dCh1aW50MzIgICAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX3NlY19jb250ZXh0X3B0ciAqc2VjX2Nv bnRleHQpCisgeworIAorLSBvbGRnYWFfc2VjX2NvbnRleHRfcHRyICAqY29udGV4dF9oYW5kbGUg PSBzZWNfY29udGV4dDsKKy0gdWludDMyICAgICAgICAgICAgICAgIGludl9taW5vcl9zdGF0dXMg PSAwLCBpbnZfbWFqb3Jfc3RhdHVzID0gMDsKKysgICAgb2xkZ2FhX3NlY19jb250ZXh0X3B0ciAg KmNvbnRleHRfaGFuZGxlID0gc2VjX2NvbnRleHQ7CisrICAgIHVpbnQzMiAgICAgICAgICAgICAg ICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0YXR1cyA9IDA7CisgCisgCisg I2lmZGVmIERFQlVHCistZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX3NlY19jb250 ZXh0OlxuIik7CisrICAgIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9zZWNfY29u dGV4dDpcbiIpOworICNlbmRpZiAvKiBERUJVRyAqLworIAorLQlpZiAoKmNvbnRleHRfaGFuZGxl ID09IE5VTEwgfHwgKmNvbnRleHRfaGFuZGxlID09IE9MREdBQV9OT19TRUNfQ09OVEVYVCkgCist CXJldHVybiBPTERHQUFfU1VDQ0VTUyA7CisrICAgIGlmICgqY29udGV4dF9oYW5kbGUgPT0gTlVM TCB8fCAqY29udGV4dF9oYW5kbGUgPT0gT0xER0FBX05PX1NFQ19DT05URVhUKQorKyAgICAgICAg cmV0dXJuIE9MREdBQV9TVUNDRVNTIDsKKyAKKy0JLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBm b3IgaW5jb21wbGV0ZSBjb250ZXh0IGhhbmRsZXMgKi8KKysgICAgLyogaWdub3JlIGVycm9ycyB0 byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250ZXh0IGhhbmRsZXMgKi8KKyAKKy0JaWYgKCgqY29u dGV4dF9oYW5kbGUpLT5pZGVudGl0eV9jcmVkIT0gTlVMTCkgCisrICAgIGlmICgoKmNvbnRleHRf aGFuZGxlKS0+aWRlbnRpdHlfY3JlZCE9IE5VTEwpCisgICAgICAgICBpbnZfbWFqb3Jfc3RhdHVz ID0gb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCgmaW52X21pbm9yX3N0YXR1cywKKy0JCQkg ICAgICAmKCgqY29udGV4dF9oYW5kbGUpLT5pZGVudGl0eV9jcmVkKSk7CistCQorLQorLSAgICAg ICBpZiAoKCpjb250ZXh0X2hhbmRsZSktPmF1dGhyX2NyZWQhPSBOVUxMKSAgICAgICAgIAorLSAg ICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYXV0aHJfY3JlZCgmaW52X21p bm9yX3N0YXR1cywKKy0JCQkgICAgICAmKCgqY29udGV4dF9oYW5kbGUpLT5hdXRocl9jcmVkKSk7 CistCQorLQorLSAgICAgICBpZiAoKCpjb250ZXh0X2hhbmRsZSktPmdyb3VwX21lbWJlcnNoaXAh PSBOVUxMKSAKKy0gICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2lkZW50 aXR5X2NyZWQoJmludl9taW5vcl9zdGF0dXMsCistCQkJICAgICAgJigoKmNvbnRleHRfaGFuZGxl KS0+Z3JvdXBfbWVtYmVyc2hpcCkpOworLSAgICAgIAorLQorLSAgICAgICBpZiAoKCpjb250ZXh0 X2hhbmRsZSktPmdyb3VwX25vbl9tZW1iZXJzaGlwIT0gTlVMTCkgCistICAgICAgIGludl9tYWpv cl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9pZGVudGl0eV9jcmVkKCZpbnZfbWlub3Jfc3RhdHVz LAorLQkJCSAgICAgICYoKCpjb250ZXh0X2hhbmRsZSktPmdyb3VwX25vbl9tZW1iZXJzaGlwKSk7 CistICAgICAgIAorLQorLSAgICAgICBpZiAoKCpjb250ZXh0X2hhbmRsZSktPmF0dHJpYnV0ZXMh PSBOVUxMKSAKKy0gICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2F0dHJp YnV0ZXMoJmludl9taW5vcl9zdGF0dXMsCistCQkJICAgICAgJigoKmNvbnRleHRfaGFuZGxlKS0+ YXR0cmlidXRlcykpOworLQkKKy0KKy0gICAgICBpZiAoKCpjb250ZXh0X2hhbmRsZSktPnVuZXZs X2NyZWQhPSBOVUxMKQorLSAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV91 bmV2YWxfY3JlZCgmaW52X21pbm9yX3N0YXR1cywKKy0JCQkgICAgICAmKCgqY29udGV4dF9oYW5k bGUpLT51bmV2bF9jcmVkKSk7CistCQorLQorLSAgICAgIGlmICgoKmNvbnRleHRfaGFuZGxlKS0+ Y29ubmVjdGlvbl9zdGF0ZSE9IE5VTEwpICAKKy0gICAgICB7CistICAgICAgICAgaW52X21ham9y X3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2J1ZmZlcl9jb250ZW50cygmaW52X21pbm9yX3N0YXR1 cywKKy0JCQkgICAgICAoKmNvbnRleHRfaGFuZGxlKS0+Y29ubmVjdGlvbl9zdGF0ZSk7CistCist ICAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2J1ZmZlcigmaW52X21p bm9yX3N0YXR1cywKKy0JCQkgICAgICAmKCgqY29udGV4dF9oYW5kbGUpLT5jb25uZWN0aW9uX3N0 YXRlKSk7CistCSAgfQorLQorLSAgICAgZnJlZSgqY29udGV4dF9oYW5kbGUpOworKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICYoKCpjb250ZXh0X2hhbmRsZSktPmlkZW50aXR5X2NyZWQp KTsKKysKKysKKysgICAgaWYgKCgqY29udGV4dF9oYW5kbGUpLT5hdXRocl9jcmVkIT0gTlVMTCkK KysgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9hdXRocl9jcmVkKCZp bnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjb250 ZXh0X2hhbmRsZSktPmF1dGhyX2NyZWQpKTsKKysKKysKKysgICAgaWYgKCgqY29udGV4dF9oYW5k bGUpLT5ncm91cF9tZW1iZXJzaGlwIT0gTlVMTCkKKysgICAgICAgIGludl9tYWpvcl9zdGF0dXMg PSBvbGRnYWFfcmVsZWFzZV9pZGVudGl0eV9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjb250ZXh0X2hhbmRsZSktPmdyb3VwX21lbWJl cnNoaXApKTsKKysKKysKKysgICAgaWYgKCgqY29udGV4dF9oYW5kbGUpLT5ncm91cF9ub25fbWVt YmVyc2hpcCE9IE5VTEwpCisrICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVh c2VfaWRlbnRpdHlfY3JlZCgmaW52X21pbm9yX3N0YXR1cywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmKCgqY29udGV4dF9oYW5kbGUpLT5ncm91cF9ub25fbWVtYmVyc2hpcCkpOwor KworKworKyAgICBpZiAoKCpjb250ZXh0X2hhbmRsZSktPmF0dHJpYnV0ZXMhPSBOVUxMKQorKyAg ICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2F0dHJpYnV0ZXMoJmludl9t aW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNvbnRleHRf aGFuZGxlKS0+YXR0cmlidXRlcykpOworKworKworKyAgICBpZiAoKCpjb250ZXh0X2hhbmRsZSkt PnVuZXZsX2NyZWQhPSBOVUxMKQorKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9y ZWxlYXNlX3VuZXZhbF9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICYoKCpjb250ZXh0X2hhbmRsZSktPnVuZXZsX2NyZWQpKTsKKysKKysKKysg ICAgaWYgKCgqY29udGV4dF9oYW5kbGUpLT5jb25uZWN0aW9uX3N0YXRlIT0gTlVMTCkKKysgICAg eworKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2J1ZmZlcl9jb250 ZW50cygmaW52X21pbm9yX3N0YXR1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo KmNvbnRleHRfaGFuZGxlKS0+Y29ubmVjdGlvbl9zdGF0ZSk7CisrCisrICAgICAgICBpbnZfbWFq b3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYnVmZmVyKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjb250ZXh0X2hhbmRsZSktPmNvbm5lY3Rp b25fc3RhdGUpKTsKKysgICAgfQorKworKyAgICBmcmVlKCpjb250ZXh0X2hhbmRsZSk7CisgICAg ICpjb250ZXh0X2hhbmRsZSA9IE9MREdBQV9OT19TRUNfQ09OVEVYVDsKKyAKKy0gIHJldHVybiBP TERHQUFfU1VDQ0VTUzsKKysgICAgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworIAorIH0gLyogb2xk Z2FhX2RlbGV0ZV9zZWNfY29udGV4dCAqLworIAorQEAgLTIyNCwxMTkgKzIyNCwxMTkgQEAgZnBy aW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX3NlY19jb250ZXh0OlxuIik7CisgRnVuY3Rp b246ICAgb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCgpCisgCisgRGVzY3JpcHRpb246Cist CWRlbGV0ZSB0aGUgc2VjdXJpdHkgY29udGV4dAorKyAgICAgICAgZGVsZXRlIHRoZSBzZWN1cml0 eSBjb250ZXh0CisgCisgUGFyYW1ldGVyczoKKyAKKyBSZXR1cm5zOgorICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisgCistb2xkZ2FhX2Vycm9yX2NvZGUgCistb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCAo dWludDMyICAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2xkZ2FhX2lkZW50aXR5X2NyZWRfcHRyICppZGVudGl0eV9jcmVkKQorK29sZGdh YV9lcnJvcl9jb2RlCisrb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCAodWludDMyICAgICAg ICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2xkZ2FhX2lkZW50aXR5X2NyZWRfcHRyICppZGVudGl0eV9jcmVkKQorIAorIHsKKy0gIG9s ZGdhYV9pZGVudGl0eV9jcmVkX3B0ciAgKmNyZWQgPSBpZGVudGl0eV9jcmVkOworLSAgdWludDMy ICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDAsIGludl9tYWpvcl9zdGF0dXMg PSAwOworKyAgICBvbGRnYWFfaWRlbnRpdHlfY3JlZF9wdHIgICpjcmVkID0gaWRlbnRpdHlfY3Jl ZDsKKysgICAgdWludDMyICAgICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDAs IGludl9tYWpvcl9zdGF0dXMgPSAwOworIAorICNpZmRlZiBERUJVRworLWZwcmludGYoc3RkZXJy LCAiXG5vbGRnYWFfcmVsZWFzZV9pZGVudGl0eV9jcmVkOlxuIik7CisrICAgIGZwcmludGYoc3Rk ZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9pZGVudGl0eV9jcmVkOlxuIik7CisgI2VuZGlmIC8qIERF QlVHICovCisgCisgCistCWlmICgqY3JlZCA9PSBOVUxMIHx8ICpjcmVkID09IE9MREdBQV9OT19J REVOVElUWV9DUkVEKSAKKy0JcmV0dXJuIE9MREdBQV9TVUNDRVNTOworLQorLQkvKiBpZ25vcmUg ZXJyb3JzIHRvIGFsbG93IGZvciBpbmNvbXBsZXRlIGNvbnRleHQgaGFuZGxlcyAqLworLQorLQlp ZiAoKCpjcmVkKS0+cHJpbmNpcGFsIT0gTlVMTCkgCistCWludl9tYWpvcl9zdGF0dXMgPSBvbGRn YWFfcmVsZWFzZV9wcmluY2lwYWxzKCZpbnZfbWlub3Jfc3RhdHVzLAorLQkJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgJigoKmNyZWQpLT5wcmluY2lwYWwpKTsKKy0gICAgICAgCistICAgICAg ICBpZiAoKCpjcmVkKS0+Y29uZGl0aW9ucyE9IE5VTEwpIAorLQlpbnZfbWFqb3Jfc3RhdHVzID0g b2xkZ2FhX3JlbGVhc2VfY29uZGl0aW9ucygmaW52X21pbm9yX3N0YXR1cywKKy0JCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+Y29uZGl0aW9ucykpOworLQkKKy0gICAgICAg IGlmICgoKmNyZWQpLT5tZWNoX3NwZWNfY3JlZCE9IE5VTEwpIAorLQkJeworLSAgICAgICAgCWlu dl9tYWpvcl9zdGF0dXMgPSAKKy0JCQkJb2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2NvbnRlbnRzKCZp bnZfbWlub3Jfc3RhdHVzLAorLQkJCSAgICAgICAgICAgICAgICAgICAgICAoKmNyZWQpLT5tZWNo X3NwZWNfY3JlZCk7CistCQkJaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2J1ZmZl cigmaW52X21pbm9yX3N0YXR1cywKKy0JCQkJCQkmKCgqY3JlZCktPm1lY2hfc3BlY19jcmVkKSk7 CistCQl9CistCQorLSAgICAgICAgaWYgKCgqY3JlZCktPm5leHQhPSBOVUxMKSAKKysgICAgaWYg KCpjcmVkID09IE5VTEwgfHwgKmNyZWQgPT0gT0xER0FBX05PX0lERU5USVRZX0NSRUQpCisrICAg ICAgICByZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisrCisrICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8g YWxsb3cgZm9yIGluY29tcGxldGUgY29udGV4dCBoYW5kbGVzICovCisrCisrICAgIGlmICgoKmNy ZWQpLT5wcmluY2lwYWwhPSBOVUxMKQorKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdh YV9yZWxlYXNlX3ByaW5jaXBhbHMoJmludl9taW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPnByaW5jaXBhbCkp OworKworKyAgICBpZiAoKCpjcmVkKS0+Y29uZGl0aW9ucyE9IE5VTEwpCisrICAgICAgICBpbnZf bWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfY29uZGl0aW9ucygmaW52X21pbm9yX3N0YXR1 cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYo KCpjcmVkKS0+Y29uZGl0aW9ucykpOworKworKyAgICBpZiAoKCpjcmVkKS0+bWVjaF9zcGVjX2Ny ZWQhPSBOVUxMKQorKyAgICB7CisrICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0KKysgICAgICAg ICAgICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2NvbnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVz LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKmNyZWQp LT5tZWNoX3NwZWNfY3JlZCk7CisrICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3Jl bGVhc2VfYnVmZmVyKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQpKTsKKysg ICAgfQorKworKyAgICBpZiAoKCpjcmVkKS0+bmV4dCE9IE5VTEwpCisgICAgICAgICBpbnZfbWFq b3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCgmaW52X21pbm9yX3N0YXR1 cywKKy0JCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+bmV4dCkpOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigo KmNyZWQpLT5uZXh0KSk7CisgICAgIGZyZWUoKmNyZWQpOworIAorLSAgIHJldHVybiBPTERHQUFf U1VDQ0VTUzsKKysgICAgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworIAorLX0gCisrfQorIAorIC8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgRnVuY3Rpb246ICAgb2xkZ2FhX3JlbGVhc2VfYXV0aHJfY3JlZCgpCisg CisgRGVzY3JpcHRpb246CistCWRlbGV0ZSB0aGUgc2VjdXJpdHkgY29udGV4dAorKyAgICAgICAg ZGVsZXRlIHRoZSBzZWN1cml0eSBjb250ZXh0CisgCisgUGFyYW1ldGVyczoKKyAKKyBSZXR1cm5z OgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisgCistb2xkZ2FhX2Vycm9yX2NvZGUgCistb2xkZ2FhX3JlbGVh c2VfYXV0aHJfY3JlZCh1aW50MzIgICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKy0gICAgICAg ICAgICAgICAgICAgICAgIG9sZGdhYV9hdXRocl9jcmVkX3B0ciAqYXV0aHJfY3JlZCkKKytvbGRn YWFfZXJyb3JfY29kZQorK29sZGdhYV9yZWxlYXNlX2F1dGhyX2NyZWQodWludDMyICAgICAgICAg ICAgICAgICptaW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFf YXV0aHJfY3JlZF9wdHIgKmF1dGhyX2NyZWQpCisgCisgeworLSAgb2xkZ2FhX2F1dGhyX2NyZWRf cHRyICAgKmNyZWQgPSBhdXRocl9jcmVkOworLSAgdWludDMyICAgICAgICAgICAgICAgaW52X21p bm9yX3N0YXR1cyA9IDAsIGludl9tYWpvcl9zdGF0dXMgPSAwOworKyAgICBvbGRnYWFfYXV0aHJf Y3JlZF9wdHIgICAqY3JlZCA9IGF1dGhyX2NyZWQ7CisrICAgIHVpbnQzMiAgICAgICAgICAgICAg ICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0YXR1cyA9IDA7CisgCisgI2lm ZGVmIERFQlVHCistZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX2F1dGhyX2NyZWQ6 XG4iKTsKKysgICAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX2F1dGhyX2NyZWQ6 XG4iKTsKKyAjZW5kaWYgLyogREVCVUcgKi8KKyAKKy0JaWYgKCpjcmVkID09IE5VTEwgfHwgKmNy ZWQgPT0gT0xER0FBX05PX0FVVEhPUklaQVRJT05fQ1JFRCkgCistCXJldHVybiBPTERHQUFfU1VD Q0VTUzsKKysgICAgaWYgKCpjcmVkID09IE5VTEwgfHwgKmNyZWQgPT0gT0xER0FBX05PX0FVVEhP UklaQVRJT05fQ1JFRCkKKysgICAgICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKysKKysgICAg LyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250ZXh0IGhhbmRsZXMg Ki8KKyAKKy0JLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250ZXh0 IGhhbmRsZXMgKi8KKysgICAgaWYgKCgqY3JlZCktPmdyYW50b3IgIT0gTlVMTCkKKysgICAgICAg IGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9wcmluY2lwYWxzKCZpbnZfbWlub3Jf c3RhdHVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+Z3JhbnRv cikpOworIAorLQlpZiAoKCpjcmVkKS0+Z3JhbnRvciAhPSBOVUxMKQorLQlpbnZfbWFqb3Jfc3Rh dHVzID0gb2xkZ2FhX3JlbGVhc2VfcHJpbmNpcGFscygmaW52X21pbm9yX3N0YXR1cywKKy0JCQkg ICAgICAmKCgqY3JlZCktPmdyYW50b3IpKTsKKy0JCisgCistCWlmICgoKmNyZWQpLT5ncmFudGVl ICE9IE5VTEwpCistCWludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9wcmluY2lwYWxz KCZpbnZfbWlub3Jfc3RhdHVzLAorLQkJCSAgICAgICYoKCpjcmVkKS0+Z3JhbnRlZSkpOworLQkK KysgICAgaWYgKCgqY3JlZCktPmdyYW50ZWUgIT0gTlVMTCkKKysgICAgICAgIGludl9tYWpvcl9z dGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9wcmluY2lwYWxzKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+Z3JhbnRlZSkpOworKworIAor ICAgICAvKgorLSAgICAgKkRFRSB3aGF0IGFib3V0IHJlbGVhc2Ugb2Ygb2JqZWN0cz8gCisrICAg ICAqREVFIHdoYXQgYWJvdXQgcmVsZWFzZSBvZiBvYmplY3RzPworICAgICAgKiBTaW5jZSBUaGVy ZSBhcmUgaXMgbm8gb2xkZ2FhX2FsbG9jYXRlX2F1dGhyX2NyZWQKKy0gICAgICogdGhhdCBjYW4g YmUgZml4ZWQgd2hlbiB0aGlzIHJvdXRpbmUgaXMgYWN0dWFsbHkgdXNlZC4gCisrICAgICAqIHRo YXQgY2FuIGJlIGZpeGVkIHdoZW4gdGhpcyByb3V0aW5lIGlzIGFjdHVhbGx5IHVzZWQuCisgICAg ICAqLworIAorLSAgICAgICAgaWYgKCgqY3JlZCktPmFjY2Vzc19yaWdodHMhPSBOVUxMKSAKKy0J aW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX3JpZ2h0cygmaW52X21pbm9yX3N0YXR1 cywKKy0JCQkgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5hY2Nlc3NfcmlnaHRzKSk7 CistCQorLSAgICAgICBpZiAoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQhPSBOVUxMKSAKKy0gICAg ICAgeworLSAgICAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IAorLSAgICAgICAgICAgICAgICAg b2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2NvbnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAorLQkJCSAg ICAgICAgICAgICAgICAgICAgICgqY3JlZCktPm1lY2hfc3BlY19jcmVkKTsKKy0gICAgICAgICAg IGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0 dXMsCisrICAgIGlmICgoKmNyZWQpLT5hY2Nlc3NfcmlnaHRzIT0gTlVMTCkKKysgICAgICAgIGlu dl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9yaWdodHMoJmludl9taW5vcl9zdGF0dXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVk KS0+YWNjZXNzX3JpZ2h0cykpOworKworKyAgICBpZiAoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQh PSBOVUxMKQorKyAgICB7CisrICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0KKysgICAgICAgICAg ICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2NvbnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqY3JlZCktPm1l Y2hfc3BlY19jcmVkKTsKKysgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFz ZV9idWZmZXIoJmludl9taW5vcl9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmKCgqY3JlZCktPm1lY2hfc3BlY19jcmVkKSk7CistICAgICAgIH0KKysgICAgfQorIAor LSAgICAgICBpZiAoKCpjcmVkKS0+bmV4dCE9IE5VTEwpIAorLSAgICAgICBpbnZfbWFqb3Jfc3Rh dHVzID0gb2xkZ2FhX3JlbGVhc2VfYXV0aHJfY3JlZCgmaW52X21pbm9yX3N0YXR1cywKKy0JCQkg ICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5uZXh0KSk7CistICAgICAgIAorLSAg ICAgZnJlZSgqY3JlZCk7CisrICAgIGlmICgoKmNyZWQpLT5uZXh0IT0gTlVMTCkKKysgICAgICAg IGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9hdXRocl9jcmVkKCZpbnZfbWlub3Jf c3RhdHVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmKCgqY3JlZCktPm5leHQpKTsKKysKKysgICAgZnJlZSgqY3JlZCk7CisgCisgICAgIHJldHVy biBPTERHQUFfU1VDQ0VTUzsKKyAKK0BAIC0zNDYsNTYgKzM0Niw1NiBAQCBmcHJpbnRmKHN0ZGVy ciwgIlxub2xkZ2FhX3JlbGVhc2VfYXV0aHJfY3JlZDpcbiIpOworIEZ1bmN0aW9uOiAgIG9sZGdh YV9yZWxlYXNlX2F0dHJpYnV0ZXMoKQorIAorIERlc2NyaXB0aW9uOgorLQlkZWxldGUgdGhlIHNl Y3VyaXR5IGNvbnRleHQKKysgICAgICAgIGRlbGV0ZSB0aGUgc2VjdXJpdHkgY29udGV4dAorIAor IFBhcmFtZXRlcnM6CisgCisgUmV0dXJuczoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorLW9sZGdhYV9l cnJvcl9jb2RlIAorLW9sZGdhYV9yZWxlYXNlX2F0dHJpYnV0ZXModWludDMyICAgICAgICAgICAg ICptaW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfYXR0cmlidXRl c19wdHIgKmF0dHJpYnV0ZXMpCisrb2xkZ2FhX2Vycm9yX2NvZGUKKytvbGRnYWFfcmVsZWFzZV9h dHRyaWJ1dGVzKHVpbnQzMiAgICAgICAgICAgICAgICAqbWlub3Jfc3RhdHVzLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgb2xkZ2FhX2F0dHJpYnV0ZXNfcHRyICphdHRyaWJ1dGVzKQorIHsK KyAKKy1vbGRnYWFfYXR0cmlidXRlc19wdHIgICpjcmVkID0gYXR0cmlidXRlczsKKy11aW50MzIg ICAgICAgICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0YXR1cyA9IDA7 CisrICAgIG9sZGdhYV9hdHRyaWJ1dGVzX3B0ciAgKmNyZWQgPSBhdHRyaWJ1dGVzOworKyAgICB1 aW50MzIgICAgICAgICAgICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0 YXR1cyA9IDA7CisgCisgCisgI2lmZGVmIERFQlVHCistZnByaW50ZihzdGRlcnIsICJcbm9sZGdh YV9yZWxlYXNlX2F0dHJpYnV0ZXM6XG4iKTsKKysgICAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdh YV9yZWxlYXNlX2F0dHJpYnV0ZXM6XG4iKTsKKyAjZW5kaWYgLyogREVCVUcgKi8KKyAKKy0JaWYg KCpjcmVkID09IE5VTEwgfHwgKmNyZWQgPT0gT0xER0FBX05PX0FUVFJJQlVURVMpIAorLQlyZXR1 cm4gT0xER0FBX1NVQ0NFU1M7CisrICAgIGlmICgqY3JlZCA9PSBOVUxMIHx8ICpjcmVkID09IE9M REdBQV9OT19BVFRSSUJVVEVTKQorKyAgICAgICAgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworKwor KyAgICAvKiBpZ25vcmUgZXJyb3JzIHRvIGFsbG93IGZvciBpbmNvbXBsZXRlIGNvbnRleHQgaGFu ZGxlcyAqLworIAorLQkvKiBpZ25vcmUgZXJyb3JzIHRvIGFsbG93IGZvciBpbmNvbXBsZXRlIGNv bnRleHQgaGFuZGxlcyAqLworKyAgICBpZiAoKCpjcmVkKS0+bWVjaF90eXBlICE9IE5VTEwpIGZy ZWUoKCpjcmVkKS0+bWVjaF90eXBlKTsKKysgICAgaWYgKCgqY3JlZCktPnR5cGUgICAgICAhPSBO VUxMKSBmcmVlKCgqY3JlZCktPnR5cGUpOworKyAgICBpZiAoKCpjcmVkKS0+dmFsdWUgICAgICE9 IE5VTEwpIGZyZWUoKCpjcmVkKS0+dmFsdWUpOworIAorLSAgICAgICAgaWYgKCgqY3JlZCktPm1l Y2hfdHlwZSAhPSBOVUxMKSBmcmVlKCgqY3JlZCktPm1lY2hfdHlwZSk7CistICAgICAgICBpZiAo KCpjcmVkKS0+dHlwZSAgICAgICE9IE5VTEwpIGZyZWUoKCpjcmVkKS0+dHlwZSk7CistICAgICAg ICBpZiAoKCpjcmVkKS0+dmFsdWUgICAgICE9IE5VTEwpIGZyZWUoKCpjcmVkKS0+dmFsdWUpOwor IAorLSAgICAKKy0gICAgICAgIGlmICgoKmNyZWQpLT5jb25kaXRpb25zIT0gTlVMTCkgCistCWlu dl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9jb25kX2JpbmRpbmdzKCZpbnZfbWlub3Jf c3RhdHVzLAorLQkJCSAgICAgICYoKCpjcmVkKS0+Y29uZGl0aW9ucykpOworKyAgICBpZiAoKCpj cmVkKS0+Y29uZGl0aW9ucyE9IE5VTEwpCisrICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xk Z2FhX3JlbGVhc2VfY29uZF9iaW5kaW5ncygmaW52X21pbm9yX3N0YXR1cywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPmNvbmRpdGlvbnMpKTsKKyAKKy0gICAgICAg aWYgKCgqY3JlZCktPm1lY2hfc3BlY19jcmVkIT0gTlVMTCkgCistICAgICAgIHsKKy0gICAgICAg ICAgIGludl9tYWpvcl9zdGF0dXMgPSAKKy0JCQkJCW9sZGdhYV9yZWxlYXNlX2J1ZmZlcl9jb250 ZW50cygmaW52X21pbm9yX3N0YXR1cywKKy0JCQkgICAgICAgICAgICgqY3JlZCktPm1lY2hfc3Bl Y19jcmVkKTsKKy0gICAgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPW9sZGdhYV9yZWxlYXNlX2J1 ZmZlcigmaW52X21pbm9yX3N0YXR1cywKKysgICAgaWYgKCgqY3JlZCktPm1lY2hfc3BlY19jcmVk IT0gTlVMTCkKKysgICAgeworKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9CisrICAgICAgICAg ICAgICAgIG9sZGdhYV9yZWxlYXNlX2J1ZmZlcl9jb250ZW50cygmaW52X21pbm9yX3N0YXR1cywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqY3JlZCktPm1lY2hfc3BlY19j cmVkKTsKKysgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9idWZmZXIo Jmludl9taW5vcl9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPm1l Y2hfc3BlY19jcmVkKSk7CistICAgICAgIH0KKysgICAgfQorIAorLSAgICAgICBpZiAoKCpjcmVk KS0+bmV4dCE9IE5VTEwpIAorLSAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVh c2VfYXR0cmlidXRlcygmaW52X21pbm9yX3N0YXR1cywKKy0JCQkgICAgICAgICAgICAgICAgICAg ICAgICAgJigoKmNyZWQpLT5uZXh0KSk7CisrICAgIGlmICgoKmNyZWQpLT5uZXh0IT0gTlVMTCkK KysgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9hdHRyaWJ1dGVzKCZp bnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmKCgqY3JlZCktPm5leHQpKTsKKyAKKy0gICAgIGZyZWUoKmNyZWQpOworKyAg ICBmcmVlKCpjcmVkKTsKKyAKKy0gIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKysgICAgcmV0dXJu IE9MREdBQV9TVUNDRVNTOworIAorIH0gLyogb2xkZ2FhX3JsZWFzZV9hdHRyaWJ1dGVzICovCisg CitAQCAtNDAzLDU2ICs0MDMsNTYgQEAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNl X2F0dHJpYnV0ZXM6XG4iKTsKKyBGdW5jdGlvbjogICBvbGRnYWFfcmxlYXNlX3VuZXZhbF9jcmVk KCkKKyAKKyBEZXNjcmlwdGlvbjoKKy0JZGVsZXRlIHRoZSBzZWN1cml0eSBjb250ZXh0CisrICAg ICAgICBkZWxldGUgdGhlIHNlY3VyaXR5IGNvbnRleHQKKyAKKyBQYXJhbWV0ZXJzOgorIAorIFJl dHVybnM6CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKyAKKy1vbGRnYWFfZXJyb3JfY29kZSAKKy1vbGRnYWFf cmVsZWFzZV91bmV2YWxfY3JlZCh1aW50MzIgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCist ICAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX3VuZXZhbF9jcmVkX3B0ciAqdW5ldmFsX2Ny ZWQpCisrb2xkZ2FhX2Vycm9yX2NvZGUKKytvbGRnYWFfcmVsZWFzZV91bmV2YWxfY3JlZCh1aW50 MzIgICAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2xkZ2FhX3VuZXZhbF9jcmVkX3B0ciAqdW5ldmFsX2NyZWQpCisgCisgeworLSAgb2xk Z2FhX3VuZXZhbF9jcmVkX3B0ciAgKmNyZWQgPSB1bmV2YWxfY3JlZDsKKy0gIHVpbnQzMiAgICAg ICAgICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0YXR1cyA9IDA7Cisr ICAgIG9sZGdhYV91bmV2YWxfY3JlZF9wdHIgICpjcmVkID0gdW5ldmFsX2NyZWQ7CisrICAgIHVp bnQzMiAgICAgICAgICAgICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0 YXR1cyA9IDA7CisgCisgI2lmZGVmIERFQlVHCistZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9y ZWxlYXNlX3VuZXZhbF9jcmVkOlxuIik7CisrICAgIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFf cmVsZWFzZV91bmV2YWxfY3JlZDpcbiIpOworICNlbmRpZiAvKiBERUJVRyAqLworIAorIAorLQlp ZiAoKmNyZWQgPT0gTlVMTCB8fCAqY3JlZCA9PSBPTERHQUFfTk9fVU5FVkFMX0NSRUQpIAorLQly ZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisrICAgIGlmICgqY3JlZCA9PSBOVUxMIHx8ICpjcmVkID09 IE9MREdBQV9OT19VTkVWQUxfQ1JFRCkKKysgICAgICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsK KysKKysgICAgLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250ZXh0 IGhhbmRsZXMgKi8KKysKKyAKKy0JLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21w bGV0ZSBjb250ZXh0IGhhbmRsZXMgKi8KKysgICAgaWYgKCgqY3JlZCktPmdyYW50b3IgIT0gTlVM TCkKKysgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9wcmluY2lwYWxz KCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpj cmVkKS0+Z3JhbnRvcikpOworIAorLSAgICAgICAKKy0gICAgICAgIGlmICgoKmNyZWQpLT5ncmFu dG9yICE9IE5VTEwpIAorLSAgICAgCWludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9w cmluY2lwYWxzKCZpbnZfbWlub3Jfc3RhdHVzLAorLQkJCSAgICAgICYoKCpjcmVkKS0+Z3JhbnRv cikpOworLSAgICAgICAKKyAKKy0JaWYgKCgqY3JlZCktPmdyYW50ZWUgIT0gTlVMTCkgCistCWlu dl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9wcmluY2lwYWxzKCZpbnZfbWlub3Jfc3Rh dHVzLAorLQkJCSAgICAgICYoKCpjcmVkKS0+Z3JhbnRlZSkpOworKyAgICBpZiAoKCpjcmVkKS0+ Z3JhbnRlZSAhPSBOVUxMKQorKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxl YXNlX3ByaW5jaXBhbHMoJmludl9taW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJigoKmNyZWQpLT5ncmFudGVlKSk7CisgCisgCistICAgICAgICBpZiAoKCpjcmVk KS0+bWVjaF9zcGVjX2NyZWQhPSBOVUxMKSAKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpbnZf bWFqb3Jfc3RhdHVzID0gCisrICAgIGlmICgoKmNyZWQpLT5tZWNoX3NwZWNfY3JlZCE9IE5VTEwp CisrICAgIHsKKysgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPQorICAgICAgICAgICAgICAgICBv bGRnYWFfcmVsZWFzZV9idWZmZXJfY29udGVudHMoJmludl9taW5vcl9zdGF0dXMsCistCQkJICAg ICAgICAgICAgICAgICAgICAgKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQpOworLSAgICAgICAgICAg IGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0 dXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpjcmVk KS0+bWVjaF9zcGVjX2NyZWQpOworKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9y ZWxlYXNlX2J1ZmZlcigmaW52X21pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICYoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQpKTsKKy0gICAgICAgIH0KKysgICAg fQorIAorLSAgICAgICBpZiAoKCpjcmVkKS0+bmV4dCE9IE5VTEwpIAorLSAgICAgICBpbnZfbWFq b3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfdW5ldmFsX2NyZWQoJmludl9taW5vcl9zdGF0dXMs CistCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPm5leHQpKTsKKysgICAg aWYgKCgqY3JlZCktPm5leHQhPSBOVUxMKQorKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9s ZGdhYV9yZWxlYXNlX3VuZXZhbF9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5uZXh0KSk7 CisgCistCWZyZWUoKmNyZWQpOworKyAgICBmcmVlKCpjcmVkKTsKKyAKKyAgICAgcmV0dXJuIE9M REdBQV9TVUNDRVNTOworIAorQEAgLTQ2Miw0NyArNDYyLDQ3IEBAIGZwcmludGYoc3RkZXJyLCAi XG5vbGRnYWFfcmVsZWFzZV91bmV2YWxfY3JlZDpcbiIpOworIEZ1bmN0aW9uOiAgIG9sZGdhYV9y bGVhc2VfcHJpbmNpcGFscygpCisgCisgRGVzY3JpcHRpb246CistCWRlbGV0ZSB0aGUgc2VjdXJp dHkgY29udGV4dAorKyAgICAgICAgZGVsZXRlIHRoZSBzZWN1cml0eSBjb250ZXh0CisgCisgUGFy YW1ldGVyczoKKyAKKyBSZXR1cm5zOgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCistb2xkZ2FhX2Vycm9y X2NvZGUgCistb2xkZ2FhX3JlbGVhc2VfcHJpbmNpcGFscyh1aW50MzIgICAgICAgICAgICAgKm1p bm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAgICAgICAgIG9sZGdhYV9wcmluY2lwYWxzX3B0 ciAqcHJpbmNpcGFscykKKytvbGRnYWFfZXJyb3JfY29kZQorK29sZGdhYV9yZWxlYXNlX3ByaW5j aXBhbHModWludDMyICAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICBvbGRnYWFfcHJpbmNpcGFsc19wdHIgKnByaW5jaXBhbHMpCisgeworIAor LW9sZGdhYV9wcmluY2lwYWxzX3B0ciAgKmNyZWQgPSBwcmluY2lwYWxzOworLXVpbnQzMiAgICAg ICAgICAgICAgIGludl9taW5vcl9zdGF0dXMgPSAwLCBpbnZfbWFqb3Jfc3RhdHVzID0gMDsKKysg ICAgb2xkZ2FhX3ByaW5jaXBhbHNfcHRyICAqY3JlZCA9IHByaW5jaXBhbHM7CisrICAgIHVpbnQz MiAgICAgICAgICAgICAgICAgIGludl9taW5vcl9zdGF0dXMgPSAwLCBpbnZfbWFqb3Jfc3RhdHVz ID0gMDsKKyAKKyAjaWZkZWYgREVCVUcKKy1mcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX3JlbGVh c2VfcHJpbmNpcGFsczpcbiIpOworKyAgICBmcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX3JlbGVh c2VfcHJpbmNpcGFsczpcbiIpOworICNlbmRpZiAvKiBERUJVRyAqLworIAorLQlpZiAoKmNyZWQg PT0gTlVMTCB8fCAqY3JlZCA9PSBPTERHQUFfTk9fUFJJTkNJUEFMUykgCistCXJldHVybiBPTERH QUFfU1VDQ0VTUzsKKysgICAgaWYgKCpjcmVkID09IE5VTEwgfHwgKmNyZWQgPT0gT0xER0FBX05P X1BSSU5DSVBBTFMpCisrICAgICAgICByZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisrCisrICAgIC8q IGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9yIGluY29tcGxldGUgY29udGV4dCBoYW5kbGVzICov CisrCisgCistCS8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9yIGluY29tcGxldGUgY29udGV4 dCBoYW5kbGVzICovCisrICAgIGlmICgoKmNyZWQpLT5yaWdodHMgIT0gTlVMTCkKKysgICAgICAg IGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9yaWdodHMoJmludl9taW5vcl9zdGF0 dXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5yaWdodHMpKTsK KyAKKyAKKy0gICAgICAgaWYgKCgqY3JlZCktPnJpZ2h0cyAhPSBOVUxMKSAKKy0gICAgICAgaW52 X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX3JpZ2h0cygmaW52X21pbm9yX3N0YXR1cywK Ky0JCQkgICAgICAmKCgqY3JlZCktPnJpZ2h0cykpOworKyAgICBpZiAoKCpjcmVkKS0+bmV4dCAh PSBOVUxMKQorKyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX3ByaW5j aXBhbHMoJmludl9taW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JigoKmNyZWQpLT5uZXh0KSk7CisgCisrICAgIGlmICgoKmNyZWQpLT50eXBlICAgICAgIT0gTlVM TCkgZnJlZSgoKmNyZWQpLT50eXBlKTsKKysgICAgaWYgKCgqY3JlZCktPmF1dGhvcml0eSAhPSBO VUxMKSBmcmVlKCgqY3JlZCktPmF1dGhvcml0eSk7CisrICAgIGlmICgoKmNyZWQpLT52YWx1ZSAg ICAgIT0gTlVMTCkgZnJlZSgoKmNyZWQpLT52YWx1ZSk7CisgCistICAgICAgIGlmICgoKmNyZWQp LT5uZXh0ICE9IE5VTEwpIAorLSAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVh c2VfcHJpbmNpcGFscygmaW52X21pbm9yX3N0YXR1cywKKy0JCQkgICAgICAmKCgqY3JlZCktPm5l eHQpKTsKKy0gICAgCistICAgICAgIGlmICgoKmNyZWQpLT50eXBlICAgICAgIT0gTlVMTCkgZnJl ZSgoKmNyZWQpLT50eXBlKTsKKy0gICAgICAgaWYgKCgqY3JlZCktPmF1dGhvcml0eSAhPSBOVUxM KSBmcmVlKCgqY3JlZCktPmF1dGhvcml0eSk7CistICAgICAgIGlmICgoKmNyZWQpLT52YWx1ZSAg ICAgIT0gTlVMTCkgZnJlZSgoKmNyZWQpLT52YWx1ZSk7CistICAgICAgIAorICAgICBmcmVlKCpj cmVkKTsKKyAKKy0gIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKysgICAgcmV0dXJuIE9MREdBQV9T VUNDRVNTOworIAorIH0gLyogb2xkZ2FhX3JsZWFzZV9wcmluY2lwYWxzICovCisgCitAQCAtNTEw LDMxICs1MTAsMzEgQEAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX3ByaW5jaXBh bHM6XG4iKTsKKyBGdW5jdGlvbjogICBvbGRnYWFfcmxlYXNlX3JpZ2h0cygpCisgCisgRGVzY3Jp cHRpb246CistCWRlbGV0ZSB0aGUgc2VjdXJpdHkgY29udGV4dAorKyAgICAgICAgZGVsZXRlIHRo ZSBzZWN1cml0eSBjb250ZXh0CisgCisgUGFyYW1ldGVyczoKKyAKKyBSZXR1cm5zOgorICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisgCistb2xkZ2FhX2Vycm9yX2NvZGUgCistb2xkZ2FhX3JlbGVhc2VfcmlnaHRz KHVpbnQzMiAgICAgICAgICptaW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgIG9sZGdh YV9yaWdodHNfcHRyICpyaWdodHMpCisrb2xkZ2FhX2Vycm9yX2NvZGUKKytvbGRnYWFfcmVsZWFz ZV9yaWdodHModWludDMyICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKysgICAgICAgICAgICAg ICAgICAgICAgb2xkZ2FhX3JpZ2h0c19wdHIgKnJpZ2h0cykKKyB7CisgCistb2xkZ2FhX3JpZ2h0 c19wdHIgICpjcmVkID0gcmlnaHRzOworLXVpbnQzMiAgICAgICAgICAgaW52X21pbm9yX3N0YXR1 cyA9IDAsIGludl9tYWpvcl9zdGF0dXMgPSAwOworKyAgICBvbGRnYWFfcmlnaHRzX3B0ciAgKmNy ZWQgPSByaWdodHM7CisrICAgIHVpbnQzMiAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9 IDAsIGludl9tYWpvcl9zdGF0dXMgPSAwOworIAorICNpZmRlZiBERUJVRworLWZwcmludGYoc3Rk ZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9yaWdodHM6XG4iKTsKKysgICAgZnByaW50ZihzdGRlcnIs ICJcbm9sZGdhYV9yZWxlYXNlX3JpZ2h0czpcbiIpOworICNlbmRpZiAvKiBERUJVRyAqLworIAor IAorLQlpZiAoKmNyZWQgPT0gTlVMTCB8fCAqY3JlZCA9PSBPTERHQUFfTk9fUklHSFRTKSAKKy0J cmV0dXJuIE9MREdBQV9TVUNDRVNTOworKyAgICBpZiAoKmNyZWQgPT0gTlVMTCB8fCAqY3JlZCA9 PSBPTERHQUFfTk9fUklHSFRTKQorKyAgICAgICAgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworIAor ICNpZmRlZiBERUJVRworLWZwcmludGYoc3RkZXJyLCAicmlnaHRzOiVwOnJlZjolZFxuIiwqY3Jl ZCwoKmNyZWQpLT5yZWZlcmVuY2VfY291bnQpOworKyAgICBmcHJpbnRmKHN0ZGVyciwgInJpZ2h0 czolcDpyZWY6JWRcbiIsKmNyZWQsKCpjcmVkKS0+cmVmZXJlbmNlX2NvdW50KTsKKyAjZW5kaWYg LyogREVCVUcgKi8KKyAKKyAgICAgKCpjcmVkKS0+cmVmZXJlbmNlX2NvdW50LS07CitAQCAtNTQz LDI3ICs1NDMsMjcgQEAgZnByaW50ZihzdGRlcnIsICJyaWdodHM6JXA6cmVmOiVkXG4iLCpjcmVk LCgqY3JlZCktPnJlZmVyZW5jZV9jb3VudCk7CisgICAgICAgICByZXR1cm4gT0xER0FBX1NVQ0NF U1M7CisgICAgIH0KKyAKKy0JLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0 ZSBjb250ZXh0IGhhbmRsZXMgKi8KKysgICAgLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3Ig aW5jb21wbGV0ZSBjb250ZXh0IGhhbmRsZXMgKi8KKysKKyAKKy0gICAgICAgCistICAgICAgIGlm ICgoKmNyZWQpLT5jb25kX2JpbmRpbmdzICE9IE5VTEwpCistICAgICAgIGludl9tYWpvcl9zdGF0 dXMgPSBvbGRnYWFfcmVsZWFzZV9jb25kX2JpbmRpbmdzKCZpbnZfbWlub3Jfc3RhdHVzLAorLQkJ CSAgICAgICYoKCpjcmVkKS0+Y29uZF9iaW5kaW5ncykpOworLSAgICAKKysgICAgaWYgKCgqY3Jl ZCktPmNvbmRfYmluZGluZ3MgIT0gTlVMTCkKKysgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBv bGRnYWFfcmVsZWFzZV9jb25kX2JpbmRpbmdzKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+Y29uZF9iaW5kaW5ncykpOworKworKwor KyAgICBpZiAoKCpjcmVkKS0+bmV4dCAhPSBOVUxMKQorKyAgICAgICAgaW52X21ham9yX3N0YXR1 cyA9IG9sZGdhYV9yZWxlYXNlX3JpZ2h0cygmaW52X21pbm9yX3N0YXR1cywKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPm5leHQpKTsKKysKKysgICAgaWYgKCgqY3Jl ZCktPnR5cGUgICAgICAhPSBOVUxMKSBmcmVlKCgqY3JlZCktPnR5cGUpOworKyAgICBpZiAoKCpj cmVkKS0+YXV0aG9yaXR5ICE9IE5VTEwpIGZyZWUoKCpjcmVkKS0+YXV0aG9yaXR5KTsKKysgICAg aWYgKCgqY3JlZCktPnZhbHVlICAgICAhPSBOVUxMKSBmcmVlKCgqY3JlZCktPnZhbHVlKTsKKyAK Ky0gICAgICAgaWYgKCgqY3JlZCktPm5leHQgIT0gTlVMTCkKKy0gICAgICAgaW52X21ham9yX3N0 YXR1cyA9IG9sZGdhYV9yZWxlYXNlX3JpZ2h0cygmaW52X21pbm9yX3N0YXR1cywKKy0JCQkgICAg ICAmKCgqY3JlZCktPm5leHQpKTsKKy0JCistCWlmICgoKmNyZWQpLT50eXBlICAgICAgIT0gTlVM TCkgZnJlZSgoKmNyZWQpLT50eXBlKTsKKy0JaWYgKCgqY3JlZCktPmF1dGhvcml0eSAhPSBOVUxM KSBmcmVlKCgqY3JlZCktPmF1dGhvcml0eSk7CistCWlmICgoKmNyZWQpLT52YWx1ZSAgICAgIT0g TlVMTCkgZnJlZSgoKmNyZWQpLT52YWx1ZSk7CisgCistICAgICAgIAorICAgICBmcmVlKCpjcmVk KTsKKyAgICAgKnJpZ2h0cyA9IE5VTEw7CisgCistICByZXR1cm4gT0xER0FBX1NVQ0NFU1M7Cisr ICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKyAKKyB9IC8qIG9sZGdhYV9ybGVhc2VfcmlnaHRz ICovCisgCitAQCAtNTcxLDgyICs1NzEsODIgQEAgZnByaW50ZihzdGRlcnIsICJyaWdodHM6JXA6 cmVmOiVkXG4iLCpjcmVkLCgqY3JlZCktPnJlZmVyZW5jZV9jb3VudCk7CisgRnVuY3Rpb246ICAg b2xkZ2FhX3JsZWFzZV9jb25kX2JpbmRpbmdzKCkKKyAKKyBEZXNjcmlwdGlvbjoKKy0JZGVsZXRl IHRoZSBzZWN1cml0eSBjb250ZXh0CisrICAgICAgICBkZWxldGUgdGhlIHNlY3VyaXR5IGNvbnRl eHQKKyAKKyBQYXJhbWV0ZXJzOgorIAorIFJldHVybnM6CisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKy1v bGRnYWFfZXJyb3JfY29kZSAKKy1vbGRnYWFfcmVsZWFzZV9jb25kX2JpbmRpbmdzKHVpbnQzMiAg ICAgICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAg IG9sZGdhYV9jb25kX2JpbmRpbmdzX3B0ciAgKmNvbmRfYmluZCkKKytvbGRnYWFfZXJyb3JfY29k ZQorK29sZGdhYV9yZWxlYXNlX2NvbmRfYmluZGluZ3ModWludDMyICAgICAgICAgICAgICAgICAg ICAqbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkZ2FhX2Nv bmRfYmluZGluZ3NfcHRyICAqY29uZF9iaW5kKQorIHsKKy0gIG9sZGdhYV9jb25kX2JpbmRpbmdz X3B0ciAgKmNyZWQgPSBjb25kX2JpbmQ7CistICB1aW50MzIgICAgICAgICAgICAgICAgICBpbnZf bWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0YXR1cyA9IDA7CisrICAgIG9sZGdhYV9jb25k X2JpbmRpbmdzX3B0ciAgKmNyZWQgPSBjb25kX2JpbmQ7CisrICAgIHVpbnQzMiAgICAgICAgICAg ICAgICAgICAgIGludl9taW5vcl9zdGF0dXMgPSAwLCBpbnZfbWFqb3Jfc3RhdHVzID0gMDsKKyAK KyAjaWZkZWYgREVCVUcKKy1mcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX3JlbGVhc2VfY29uZF9i aW5kaW5nczpcbiIpOworKyAgICBmcHJpbnRmKHN0ZGVyciwgIlxub2xkZ2FhX3JlbGVhc2VfY29u ZF9iaW5kaW5nczpcbiIpOworICNlbmRpZiAvKiBERUJVRyAqLworIAorIAorLQlpZiAoKmNyZWQg PT0gTlVMTCB8fCAqY3JlZCA9PSBPTERHQUFfTk9fQ09ORF9CSU5ESU5HUykgCistCXJldHVybiBP TERHQUFfU1VDQ0VTUzsKKysgICAgaWYgKCpjcmVkID09IE5VTEwgfHwgKmNyZWQgPT0gT0xER0FB X05PX0NPTkRfQklORElOR1MpCisrICAgICAgICByZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisgCisg I2lmZGVmIERFQlVHCistZnByaW50ZihzdGRlcnIsICJjb25kOiVwOnJlZjolZFxuIiwqY3JlZCwo KmNyZWQpLT5yZWZlcmVuY2VfY291bnQpOworKyAgICBmcHJpbnRmKHN0ZGVyciwgImNvbmQ6JXA6 cmVmOiVkXG4iLCpjcmVkLCgqY3JlZCktPnJlZmVyZW5jZV9jb3VudCk7CisgI2VuZGlmIC8qIERF QlVHICovCisgCistCSgqY3JlZCktPnJlZmVyZW5jZV9jb3VudC0tOworLQlpZiAoKCpjcmVkKS0+ cmVmZXJlbmNlX2NvdW50ID4gMCkgeworLQkgICAgKmNvbmRfYmluZCA9IE5VTEw7CistCSAgICBy ZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisrICAgICgqY3JlZCktPnJlZmVyZW5jZV9jb3VudC0tOwor KyAgICBpZiAoKCpjcmVkKS0+cmVmZXJlbmNlX2NvdW50ID4gMCkgeworKyAgICAgICAgKmNvbmRf YmluZCA9IE5VTEw7CisrICAgICAgICByZXR1cm4gT0xER0FBX1NVQ0NFU1M7CisgICAgIH0KKyAK Ky0JLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250ZXh0IGhhbmRs ZXMgKi8KKysgICAgLyogaWdub3JlIGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250 ZXh0IGhhbmRsZXMgKi8KKysKKysgICAgaWYgKCgqY3JlZCktPmNvbmRpdGlvbiAhPSBOVUxMKQor KyAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2NvbmRpdGlvbnMoJmlu dl9taW5vcl9zdGF0dXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICYoKCpjcmVkKS0+Y29uZGl0aW9uKSk7CisgCistICAgICAgIGlmICgoKmNyZWQp LT5jb25kaXRpb24gIT0gTlVMTCkKKy0gICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9y ZWxlYXNlX2NvbmRpdGlvbnMoJmludl9taW5vcl9zdGF0dXMsCistCQkJICAgICAgICAgICAgICAg ICAgICAgICAgICYoKCpjcmVkKS0+Y29uZGl0aW9uKSk7CisrICAgIGlmICgoKmNyZWQpLT5uZXh0 ICE9IE5VTEwpCisrICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfY29u ZF9iaW5kaW5ncygmaW52X21pbm9yX3N0YXR1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5uZXh0KSk7CisgCistICAgICAg IGlmICgoKmNyZWQpLT5uZXh0ICE9IE5VTEwpIAorLSAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0g b2xkZ2FhX3JlbGVhc2VfY29uZF9iaW5kaW5ncygmaW52X21pbm9yX3N0YXR1cywKKy0JCQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5uZXh0KSk7CistICAgICAgIAorICAg ICBmcmVlKCpjcmVkKTsKKy0JKmNvbmRfYmluZCA9IE5VTEw7CisrICAgICpjb25kX2JpbmQgPSBO VUxMOworIAorLSAgcmV0dXJuIE9MREdBQV9TVUNDRVNTOworKyAgICByZXR1cm4gT0xER0FBX1NV Q0NFU1M7CisgCistfSAKKyt9CisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyBGdW5jdGlvbjogICBvbGRn YWFfcmxlYXNlX2NvbmRpdGlvbnMoKQorIAorIERlc2NyaXB0aW9uOgorLQlkZWxldGUgdGhlIHNl Y3VyaXR5IGNvbnRleHQKKysgICAgICAgIGRlbGV0ZSB0aGUgc2VjdXJpdHkgY29udGV4dAorIAor IFBhcmFtZXRlcnM6CisgCisgUmV0dXJuczoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIAorLW9sZGdhYV9l cnJvcl9jb2RlIAorLW9sZGdhYV9yZWxlYXNlX2NvbmRpdGlvbnModWludDMyICAgICAgICAgICAg ICptaW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfY29uZGl0aW9u c19wdHIgKmNvbmQpCisrb2xkZ2FhX2Vycm9yX2NvZGUKKytvbGRnYWFfcmVsZWFzZV9jb25kaXRp b25zKHVpbnQzMiAgICAgICAgICAgICAgICAqbWlub3Jfc3RhdHVzLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgb2xkZ2FhX2NvbmRpdGlvbnNfcHRyICpjb25kKQorIHsKKy0gIG9sZGdhYV9j b25kaXRpb25zX3B0ciAgKmNyZWQgPSBjb25kOworLSAgdWludDMyICAgICAgICAgICAgICAgaW52 X21pbm9yX3N0YXR1cyA9IDAsIGludl9tYWpvcl9zdGF0dXMgPSAwOworKyAgICBvbGRnYWFfY29u ZGl0aW9uc19wdHIgICpjcmVkID0gY29uZDsKKysgICAgdWludDMyICAgICAgICAgICAgICAgICAg aW52X21pbm9yX3N0YXR1cyA9IDAsIGludl9tYWpvcl9zdGF0dXMgPSAwOworIAorICNpZmRlZiBE RUJVRworLWZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9jb25kaXRpb25zOlxuIik7 CisrICAgIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9jb25kaXRpb25zOlxuIik7 CisgI2VuZGlmIC8qIERFQlVHICovCisgCistCWlmICgqY3JlZCA9PSBOVUxMIHx8ICpjcmVkID09 IE9MREdBQV9OT19DT05ESVRJT05TKSAKKy0JcmV0dXJuIE9MREdBQV9TVUNDRVNTOworKyAgICBp ZiAoKmNyZWQgPT0gTlVMTCB8fCAqY3JlZCA9PSBPTERHQUFfTk9fQ09ORElUSU9OUykKKysgICAg ICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKyAKKyAjaWZkZWYgREVCVUcKKy1mcHJpbnRmKHN0 ZGVyciwgImNvbmRpdGlvbnM6JXA6cmVmOiVkXG4iLCpjcmVkLCgqY3JlZCktPnJlZmVyZW5jZV9j b3VudCk7CisrICAgIGZwcmludGYoc3RkZXJyLCAiY29uZGl0aW9uczolcDpyZWY6JWRcbiIsKmNy ZWQsKCpjcmVkKS0+cmVmZXJlbmNlX2NvdW50KTsKKyAjZW5kaWYgLyogREVCVUcgKi8KKyAKKyAg ICAgKCpjcmVkKS0+cmVmZXJlbmNlX2NvdW50LS07CitAQCAtNjU0LDM1ICs2NTQsMzUgQEAgZnBy aW50ZihzdGRlcnIsICJjb25kaXRpb25zOiVwOnJlZjolZFxuIiwqY3JlZCwoKmNyZWQpLT5yZWZl cmVuY2VfY291bnQpOworICAgICAgICAgKmNvbmQgPSBOVUxMOworICAgICAgICAgcmV0dXJuIE9M REdBQV9TVUNDRVNTOworICAgICB9CistCS8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9yIGlu Y29tcGxldGUgY29udGV4dCBoYW5kbGVzICovCisrICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8gYWxs b3cgZm9yIGluY29tcGxldGUgY29udGV4dCBoYW5kbGVzICovCisrCisrICAgIGlmICgoKmNyZWQp LT5uZXh0ICE9IE5VTEwpCisrICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVh c2VfY29uZGl0aW9ucygmaW52X21pbm9yX3N0YXR1cywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmKCgqY3JlZCktPm5leHQpKTsKKyAKKy0gICAgICAgaWYgKCgqY3JlZCktPm5leHQg IT0gTlVMTCkgCistICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9jb25k aXRpb25zKCZpbnZfbWlub3Jfc3RhdHVzLAorLQkJCSAgICAgICYoKCpjcmVkKS0+bmV4dCkpOwor LSAgICAgICAKKy0JaWYgKCgqY3JlZCktPnR5cGUgICAgICAhPSBOVUxMKSBmcmVlKCgqY3JlZCkt PnR5cGUpOworLQlpZiAoKCpjcmVkKS0+YXV0aG9yaXR5ICE9IE5VTEwpIGZyZWUoKCpjcmVkKS0+ YXV0aG9yaXR5KTsKKy0JaWYgKCgqY3JlZCktPnZhbHVlICAgICAhPSBOVUxMKSBmcmVlKCgqY3Jl ZCktPnZhbHVlKTsKKysgICAgaWYgKCgqY3JlZCktPnR5cGUgICAgICAhPSBOVUxMKSBmcmVlKCgq Y3JlZCktPnR5cGUpOworKyAgICBpZiAoKCpjcmVkKS0+YXV0aG9yaXR5ICE9IE5VTEwpIGZyZWUo KCpjcmVkKS0+YXV0aG9yaXR5KTsKKysgICAgaWYgKCgqY3JlZCktPnZhbHVlICAgICAhPSBOVUxM KSBmcmVlKCgqY3JlZCktPnZhbHVlKTsKKyAKKyAgICAgZnJlZSgqY3JlZCk7CisgCistICByZXR1 cm4gT0xER0FBX1NVQ0NFU1M7CisrICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKyAKKy19IAor K30KKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorIEZ1bmN0aW9uOiAgIG9sZGdhYV9ybGVhc2VfYW5zd2VyKCkK KyAKKyBEZXNjcmlwdGlvbjoKKy0JZGVsZXRlIHRoZSBzZWN1cml0eSBjb250ZXh0CisrICAgICAg ICBkZWxldGUgdGhlIHNlY3VyaXR5IGNvbnRleHQKKyAKKyBQYXJhbWV0ZXJzOgorIAorIFJldHVy bnM6CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKyAKKy1vbGRnYWFfZXJyb3JfY29kZSAKKy1vbGRnYWFfcmVs ZWFzZV9hbnN3ZXIodWludDMyICAgICAgICAgKm1pbm9yX3N0YXR1cywKKy0gICAgICAgICAgICAg ICAgICAgb2xkZ2FhX2Fuc3dlcl9wdHIgKmFuc3dlcikKKytvbGRnYWFfZXJyb3JfY29kZQorK29s ZGdhYV9yZWxlYXNlX2Fuc3dlcih1aW50MzIgICAgICAgICAgICAqbWlub3Jfc3RhdHVzLAorKyAg ICAgICAgICAgICAgICAgICAgICBvbGRnYWFfYW5zd2VyX3B0ciAqYW5zd2VyKQorIHsKKyAgICAg b2xkZ2FhX2Fuc3dlcl9wdHIgICogICAgICAgICAgICAgICAgY3JlZCA9IGFuc3dlcjsKKyAgICAg dWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDA7 CitAQCAtNjkzLDE4ICs2OTMsMTggQEAgb2xkZ2FhX3JlbGVhc2VfYW5zd2VyKHVpbnQzMiAgICAg ICAgICptaW5vcl9zdGF0dXMsCisgICAgIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVsZWFz ZV9hbnN3ZXI6XG4iKTsKKyAjZW5kaWYgLyogREVCVUcgKi8KKyAKKy0gICAgaWYgKCpjcmVkID09 IE5VTEwgfHwgKmNyZWQgPT0gT0xER0FBX05PX0FOU1dFUikgCisrICAgIGlmICgqY3JlZCA9PSBO VUxMIHx8ICpjcmVkID09IE9MREdBQV9OT19BTlNXRVIpCisgICAgIHsKKyAgICAgICAgIHJldHVy biBPTERHQUFfU1VDQ0VTUzsKKyAgICAgfQorIAorLSAgIGlmICgoKmNyZWQpLT5yaWdodHMhPSBO VUxMKSAKKy0gICB7CistICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9yIGluY29t cGxldGUgY29udGV4dCBoYW5kbGVzICovCistICAgICAgIGludl9tYWpvcl9zdGF0dXMgPQorKyAg ICBpZiAoKCpjcmVkKS0+cmlnaHRzIT0gTlVMTCkKKysgICAgeworKyAgICAgICAgLyogaWdub3Jl IGVycm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250ZXh0IGhhbmRsZXMgKi8KKysgICAg ICAgIGludl9tYWpvcl9zdGF0dXMgPQorICAgICAgICAgICAgIG9sZGdhYV9yZWxlYXNlX3JpZ2h0 cygmaW52X21pbm9yX3N0YXR1cywgJigoKmNyZWQpLT5yaWdodHMpKTsKKy0gICB9CistICAgCisr ICAgIH0KKysKKyAgICAgaWYgKCgqY3JlZCktPnZhbGlkX3RpbWUgIT0gTlVMTCkKKyAgICAgewor ICAgICAgICAgZnJlZSgoKmNyZWQpLT52YWxpZF90aW1lKTsKK0BAIC03MjAsMzEgKzcyMCwzMSBA QCBvbGRnYWFfcmVsZWFzZV9hbnN3ZXIodWludDMyICAgICAgICAgKm1pbm9yX3N0YXR1cywKKyBG dW5jdGlvbjogICBvbGRnYWFfcmxlYXNlX3ByaW5jaXBhbHMoKQorIAorIERlc2NyaXB0aW9uOgor LQlkZWxldGUgdGhlIHNlY3VyaXR5IGNvbnRleHQKKysgICAgICAgIGRlbGV0ZSB0aGUgc2VjdXJp dHkgY29udGV4dAorIAorIFBhcmFtZXRlcnM6CisgCisgUmV0dXJuczoKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworIAorLW9sZGdhYV9lcnJvcl9jb2RlIAorLW9sZGdhYV9yZWxlYXNlX3NlY19hdHRyYih1aW50 MzIgICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAgICAgICAgb2xk Z2FhX3NlY19hdHRyYl9wdHIgICAqYXR0cmlidXRlcykKKytvbGRnYWFfZXJyb3JfY29kZQorK29s ZGdhYV9yZWxlYXNlX3NlY19hdHRyYih1aW50MzIgICAgICAgICAgICAgICAqbWlub3Jfc3RhdHVz LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBvbGRnYWFfc2VjX2F0dHJiX3B0ciAqYXR0cmli dXRlcykKKyB7CisgICAgIG9sZGdhYV9zZWNfYXR0cmJfcHRyICAqICAgICAgICAgICAgIGNyZWQg PSBhdHRyaWJ1dGVzOworLSAgICB1aW50MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnZfbWlub3Jfc3RhdHVzID0gMDsgCisrICAgIHVpbnQzMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludl9taW5vcl9zdGF0dXMgPSAwOworICAgICB1aW50MzIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gMDsKKyAKKyAjaWZkZWYgREVCVUcKKyAg ICAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX3NlY19hdHRyYjpcbiIpOworICNl bmRpZiAvKiBERUJVRyAqLworIAorLSAgICBpZiAoKmNyZWQgPT0gTlVMTCB8fCAqY3JlZCA9PSBP TERHQUFfTk9fU0VDX0FUVFJCKSAKKysgICAgaWYgKCpjcmVkID09IE5VTEwgfHwgKmNyZWQgPT0g T0xER0FBX05PX1NFQ19BVFRSQikKKyAgICAgeworICAgICAgICAgcmV0dXJuIE9MREdBQV9TVUND RVNTOworICAgICB9CisgCistICAgIGlmICgoKmNyZWQpLT5uZXh0ICE9IE5VTEwpIAorKyAgICBp ZiAoKCpjcmVkKS0+bmV4dCAhPSBOVUxMKQorICAgICB7CisgICAgICAgICAvKiBpZ25vcmUgZXJy b3JzIHRvIGFsbG93IGZvciBpbmNvbXBsZXRlIGNvbnRleHQgaGFuZGxlcyAqLworICAgICAgICAg aW52X21ham9yX3N0YXR1cyA9CitAQCAtNzU4LDYgKzc1OCw2IEBAIG9sZGdhYV9yZWxlYXNlX3Nl Y19hdHRyYih1aW50MzIgICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKyAgICAgZnJlZSgqY3Jl ZCk7CisgCisgICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKKy19IAorK30KKyAKKyAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKy0tIAorMi41NC4wCisKCmRpZmYgLS1naXQgYS8wMDAyLUJ1aWxkLXdpdGgtT3Bl blNTTC00LnBhdGNoIGIvMDAwMi1CdWlsZC13aXRoLU9wZW5TU0wtNC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjQ1ZDFkCi0tLSAvZGV2L251bGwKKysrIGIvMDAw Mi1CdWlsZC13aXRoLU9wZW5TU0wtNC5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDI0Mzc1 Yjg1MDNkMmE0MzczNjAwYjE0ZDAzNzAwYjY5NzQxNTczN2IgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5zZT4K K0RhdGU6IFdlZCwgMjAgTWF5IDIwMjYgMDA6MTU6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAy LzNdIEJ1aWxkIHdpdGggT3BlblNTTCA0CisKKy0tLQorIGdzaS9jYWxsYmFjay9zb3VyY2UvbGli cmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmMgfCAxMyArKysrKysrKysrKystCisgZ3NpL2NhbGxi YWNrL3NvdXJjZS9saWJyYXJ5L2dsb2J1c19nc2lfY2FsbGJhY2suaCB8IDEzICsrKysrKysrKysr KysKKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKwor ZGlmZiAtLWdpdCBhL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9nbG9idXNfZ3NpX2NhbGxi YWNrLmMgYi9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dzaV9jYWxsYmFjay5j CitpbmRleCBhNjUxMDU4MzAuLjMxNzhkNWNlNCAxMDA2NDQKKy0tLSBhL2dzaS9jYWxsYmFjay9z b3VyY2UvbGlicmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmMKKysrKyBiL2dzaS9jYWxsYmFjay9z b3VyY2UvbGlicmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmMKK0BAIC01OTAsMTAgKzU5MCwxNyBA QCBpbnQgZ2xvYnVzX2dzaV9jYWxsYmFja19oYW5kc2hha2VfY2FsbGJhY2soCisgICogICAgICAg IDEgb24gc3VjY2VzcworICAqICAgICAgICAwIG9uIGZhaWx1cmUKKyAgKi8KKysjaWYgT1BFTlNT TF9WRVJTSU9OX05VTUJFUiA8IDB4NDAwMDAwMDBMCisgaW50IGdsb2J1c19nc2lfY2FsbGJhY2tf Y2hlY2tfaXNzdWVkKAorICAgICBYNTA5X1NUT1JFX0NUWCAqICAgICAgICAgICAgICAgICAgICBj b250ZXh0LAorICAgICBYNTA5ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0LAor ICAgICBYNTA5ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXIpCisrI2Vsc2UK KytpbnQgZ2xvYnVzX2dzaV9jYWxsYmFja19jaGVja19pc3N1ZWQoCisrICAgIFg1MDlfU1RPUkVf Q1RYICogICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCisrICAgIGNvbnN0IFg1MDkgKiAgICAg ICAgICAgICAgICAgICAgICAgIGNlcnQsCisrICAgIGNvbnN0IFg1MDkgKiAgICAgICAgICAgICAg ICAgICAgICAgIGlzc3VlcikKKysjZW5kaWYKKyB7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAg ICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuX3ZhbHVlOworQEAgLTE1OTIsOCArMTU5OSwxMiBAQCBnbG9idXNfaV9n c2lfY2FsbGJhY2tfY2hlY2tfY3JpdGljYWxfZXh0ZW5zaW9ucygKKyAgICAgWDUwOV9TVE9SRV9D VFggKiAgICAgICAgICAgICAgICAgICAgeDUwOV9jb250ZXh0LAorICAgICBnbG9idXNfZ3NpX2Nh bGxiYWNrX2RhdGFfdCAgICAgICAgICBjYWxsYmFja19kYXRhKQorIHsKKy0gICAgQVNOMV9PQkpF Q1QgKiAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX29iamVjdCA9IE5VTEw7CisrICAg IGNvbnN0IEFTTjFfT0JKRUNUICogICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9vYmplY3QgPSBO VUxMOworKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHg0MDAwMDAwMEwKKyAgICAgWDUw OV9FWFRFTlNJT04gKiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gTlVMTDsKKysjZWxz ZQorKyAgICBjb25zdCBYNTA5X0VYVEVOU0lPTiAqICAgICAgICAgICAgICBleHRlbnNpb24gPSBO VUxMOworKyNlbmRpZgorICAgICBQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OICogICAgICAgICBw cm94eWNlcnRpbmZvID0gTlVMTDsKKyAgICAgUFJPWFlfUE9MSUNZICogICAgICAgICAgICAgICAg ICAgICAgcG9saWN5ID0gTlVMTDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmlkOworZGlmZiAtLWdpdCBhL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9nbG9i dXNfZ3NpX2NhbGxiYWNrLmggYi9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkvZ2xvYnVzX2dz aV9jYWxsYmFjay5oCitpbmRleCA4NmI5NmIyYmYuLmY3YzQxYmI2NSAxMDA2NDQKKy0tLSBhL2dz aS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmgKKysrKyBiL2dz aS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9nbG9idXNfZ3NpX2NhbGxiYWNrLmgKK0BAIC0xMjUs OSArMTI1LDE1IEBAIHR5cGVkZWYgc3RydWN0IGdsb2J1c19sX2dzaV9jYWxsYmFja19kYXRhX3Mg KgorICAqIFR5cGVkZWYgZm9yIGEgY2FsbGJhY2sgdGhhdCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Ig ZGVhbGluZyB3aXRoIHVuaGFuZGxlZCBYLjUwOSBleHRlbnNpb24KKyAgKiBAaW5ncm91cCBnbG9i dXNfZ3NpX2NhbGxiYWNrCisgICovCisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDQw MDAwMDAwTAorIHR5cGVkZWYgaW50ICgqZ2xvYnVzX2dzaV9leHRlbnNpb25fY2FsbGJhY2tfdCko CisgICAgIGdsb2J1c19nc2lfY2FsbGJhY2tfZGF0YV90ICAgICAgICAgIGNhbGxiYWNrX2RhdGEs CisgICAgIFg1MDlfRVhURU5TSU9OICogICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbik7Cisr I2Vsc2UKKyt0eXBlZGVmIGludCAoKmdsb2J1c19nc2lfZXh0ZW5zaW9uX2NhbGxiYWNrX3QpKAor KyAgICBnbG9idXNfZ3NpX2NhbGxiYWNrX2RhdGFfdCAgICAgICAgICBjYWxsYmFja19kYXRhLAor KyAgICBjb25zdCBYNTA5X0VYVEVOU0lPTiAqICAgICAgICAgICAgICBleHRlbnNpb24pOworKyNl bmRpZgorIAorICNpZm5kZWYgRE9YWUdFTgorIAorQEAgLTE0OSwxMCArMTU1LDE3IEBAIGdsb2J1 c19nc2lfY2FsbGJhY2tfaGFuZHNoYWtlX2NhbGxiYWNrKAorICAgICBpbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwcmV2ZXJpZnlfb2ssCisgICAgIFg1MDlfU1RPUkVfQ1RYICog ICAgICAgICAgICAgICAgICAgIHg1MDlfY29udGV4dCk7CisgCisrI2lmIE9QRU5TU0xfVkVSU0lP Tl9OVU1CRVIgPCAweDQwMDAwMDAwTAorIGludCBnbG9idXNfZ3NpX2NhbGxiYWNrX2NoZWNrX2lz c3VlZCgKKyAgICAgWDUwOV9TVE9SRV9DVFggKiAgICAgICAgICAgICAgICAgICAgY29udGV4dCwK KyAgICAgWDUwOSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydCwKKyAgICAgWDUw OSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVyKTsKKysjZWxzZQorK2ludCBn bG9idXNfZ3NpX2NhbGxiYWNrX2NoZWNrX2lzc3VlZCgKKysgICAgWDUwOV9TVE9SRV9DVFggKiAg ICAgICAgICAgICAgICAgICAgY29udGV4dCwKKysgICAgY29uc3QgWDUwOSAqICAgICAgICAgICAg ICAgICAgICAgICAgY2VydCwKKysgICAgY29uc3QgWDUwOSAqICAgICAgICAgICAgICAgICAgICAg ICAgaXNzdWVyKTsKKysjZW5kaWYKKyAKKyBpbnQKKyBnbG9idXNfZ3NpX2NhbGxiYWNrX1g1MDlf dmVyaWZ5X2NlcnQoCistLSAKKzIuNTQuMAorCgpkaWZmIC0tZ2l0IGEvMDAwMy1GaXgtY29tcGls ZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2ggYi8wMDAzLUZpeC1jb21waWxlci1hbmQtZG94 eWdlbi13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y OTc0OTBiCi0tLSAvZGV2L251bGwKKysrIGIvMDAwMy1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4t d2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSw0NTEgQEAKK0Zyb20gNGVlMDhkMTNlMjk2MzMwOWUy MDYzZGM0NWRlZGQwNjczMzdkM2I3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1h dHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVydEBwaHlzaWNzLnV1LnNlPgorRGF0ZTogV2VkLCAy MCBNYXkgMjAyNiAwMDoxNTozNyArMDIwMAorU3ViamVjdDogW1BBVENIIDMvM10gRml4IGNvbXBp bGVyIGFuZCBkb3h5Z2VuIHdhcm5pbmdzCisKKy0tLQorIC4uLi9saWJyYXJ5L29sZGdhYS9nbG9i dXNfb2xkZ2FhX3V0aWxzLmMgICAgICB8ICAgMiAtCisgLi4uL2xpYnJhcnkvb2xkZ2FhL29sZGdh YV9wb2xpY3lfZXZhbHVhdG9yLmMgIHwgIDEzIC0tCisgLi4uL3NvdXJjZS9saWJyYXJ5L29sZGdh YS9vbGRnYWFfcmVsZWFzZS5jICAgIHwgMTIxICsrKysrKystLS0tLS0tLS0tLQorIC4uLi9zb3Vy Y2UvbGlicmFyeS9vbGRnYWEvb2xkZ2FhX3V0aWxzLmMgICAgICB8ICAgMiArLQorIDQgZmlsZXMg Y2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgOTEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL2dsb2J1c19vbGRnYWFfdXRpbHMu YyBiL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9vbGRnYWEvZ2xvYnVzX29sZGdhYV91dGls cy5jCitpbmRleCA0NjkzZTM5MmMuLjg4MGNhNjJlOSAxMDA2NDQKKy0tLSBhL2dzaS9jYWxsYmFj ay9zb3VyY2UvbGlicmFyeS9vbGRnYWEvZ2xvYnVzX29sZGdhYV91dGlscy5jCisrKysgYi9nc2kv Y2FsbGJhY2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL2dsb2J1c19vbGRnYWFfdXRpbHMuYworQEAg LTc4OSw3ICs3ODksNiBAQCBvbGRnYWFfZ2xvYnVzX3BhcnNlX3BvbGljeSAocG9saWN5X2ZpbGVf Y29udGV4dF9wdHIgIHBjb250ZXh0LAorICAgICBjaGFyICAgICAgICAgICAgICAgICAgKnN0cjsK KyAgICAgaW50ICAgICAgICAgICAgICAgICAgIGNvbmRfcHJlc2VudCAgICAgPSBGQUxTRTsKKyAg ICAgaW50ICAgICAgICAgICAgICAgICAgIG5ld19lbnRyeSAgICAgICAgPSBUUlVFOworLSAgICBv bGRnYWFfcmlnaHRzX3B0ciBvbGRfcmlnaHRzID0gMDsKKyAKKyAgICAgc3RyID0gbWFsbG9jKHBj b250ZXh0LT5idWZsZW4pOworICAgICBzdHJbMF0gPSAwOworQEAgLTgyOSw3ICs4MjgsNiBAQCBv bGRnYWFfZ2xvYnVzX3BhcnNlX3BvbGljeSAocG9saWN5X2ZpbGVfY29udGV4dF9wdHIgIHBjb250 ZXh0LAorIAorICAgICAgICAgLyogZ2V0IHJpZ2h0cyAqLworIAorLSAgICAgICAgb2xkX3JpZ2h0 cyA9IHN0YXJ0X3JpZ2h0czsKKyAgICAgICAgIG9sZGdhYV9lcnJvciA9IG9sZGdhYV9nbG9idXNf cGFyc2VfcmlnaHRzKHBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnN0YXJ0X3JpZ2h0cywKK2RpZmYgLS1naXQgYS9nc2kvY2FsbGJh Y2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL29sZGdhYV9wb2xpY3lfZXZhbHVhdG9yLmMgYi9nc2kv Y2FsbGJhY2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL29sZGdhYV9wb2xpY3lfZXZhbHVhdG9yLmMK K2luZGV4IGI3YmM3OGQwYi4uODIxZjAyZDcxIDEwMDY0NAorLS0tIGEvZ3NpL2NhbGxiYWNrL3Nv dXJjZS9saWJyYXJ5L29sZGdhYS9vbGRnYWFfcG9saWN5X2V2YWx1YXRvci5jCisrKysgYi9nc2kv Y2FsbGJhY2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL29sZGdhYV9wb2xpY3lfZXZhbHVhdG9yLmMK K0BAIC0yNjAsMjMgKzI2MCwxOCBAQCBvbGRnYWFfZ2V0X2F1dGhvcml6ZWRfcHJpbmNpcGFscyhv bGRnYWFfc2VjX2F0dHJiX3B0ciAqYXR0cmlidXRlcywKKyB7CisgICBvbGRnYWFfcG9saWN5X3B0 ciAgICBlbnRyeSAgPSBwb2xpY3k7CisgICBpbnQgICAgICAgICAgICAgICB3YXNfYW55Ym9keSAg ICA9IDA7CistICBpbnQgICAgICAgICAgICAgICB3YXNfbmVnX3JpZ2h0cyA9IDA7CisgICBpbnQg ICAgICAgICAgICAgICBudW1iZXJfb2ZfZW50cmllcyA9IDE7CisgICBvbGRnYWFfc2VjX2F0dHJi X3B0ciBhdHRyYiA9IE5VTEw7CistICB1aW50MzIgICAgICAgICAgICBtaW5vcl9zdGF0dXM7Cisg ICBvbGRnYWFfZXJyb3JfY29kZSAgICBvbGRnYWFfc3RhdHVzID0gT0xER0FBX1NVQ0NFU1M7Cisg CisgI2lmZGVmIERFQlVHCisgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9nZXRfYXV0aG9yaXpl ZF9wcmluY2lwYWxzOlxuIik7CisgI2VuZGlmIC8qIERFQlVHICovCisgCistICBtaW5vcl9zdGF0 dXMgPSAwOworLQorIC8qIENoZWNrIGFyZ3VtZW50cyAqLworICAgaWYgKCFwb2xpY3kgJiYgIWF0 dHJpYnV0ZXMpCisgICB7CisgICAgIGVycm5vID0gRVJSTk9fSU5WQUxJRF9BUkdVTUVOVDsKKy0g ICAgbWlub3Jfc3RhdHVzID0gLTE7CisgICAgIHJldHVybiBPTERHQUFfRkFJTFVSRTsKKyAgIH0K KyAKK0BAIC0zMDIsMTQgKzI5Nyw2IEBAIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfZ2V0X2F1 dGhvcml6ZWRfcHJpbmNpcGFsczpcbiIpOworICAgICAgICAgIG9sZGdhYV9hZGRfYXR0cmlidXRl KGF0dHJpYnV0ZXMsIGF0dHJiKTsKKyAgICAgICAgICBudW1iZXJfb2ZfZW50cmllcysrOworICAg ICAgICB9CistICAgIGVsc2UKKy0gICAgICB7CistICAgICBpZihvbGRnYWFfc3RyaW5nc19tYXRj aChlbnRyeS0+cmlnaHRzLT50eXBlLCAgICAgIE5FR0FUSVZFX1JJR0hUUykgICAmJgorLSAgICAg ICAgb2xkZ2FhX3N0cmluZ3NfbWF0Y2goZW50cnktPnJpZ2h0cy0+YXV0aG9yaXR5LCByaWdodHMt PmF1dGhvcml0eSkgJiYKKy0gICAgICAgIG9sZGdhYV9zdHJpbmdzX21hdGNoKGVudHJ5LT5yaWdo dHMtPnZhbHVlLCAgICAgcmlnaHRzLT52YWx1ZSkgKSB3YXNfbmVnX3JpZ2h0cyA9IDE7CistICAg ICB9CistCistCisgICB9CisgCisgICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKK2RpZmYgLS1naXQg YS9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL29sZGdhYV9yZWxlYXNlLmMgYi9n c2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkvb2xkZ2FhL29sZGdhYV9yZWxlYXNlLmMKK2luZGV4 IDQ1NTBiNGViMi4uZjRhYWU5Y2RjIDEwMDY0NAorLS0tIGEvZ3NpL2NhbGxiYWNrL3NvdXJjZS9s aWJyYXJ5L29sZGdhYS9vbGRnYWFfcmVsZWFzZS5jCisrKysgYi9nc2kvY2FsbGJhY2svc291cmNl L2xpYnJhcnkvb2xkZ2FhL29sZGdhYV9yZWxlYXNlLmMKK0BAIC0xNjIsNyArMTYyLDcgQEAgb2xk Z2FhX3JlbGVhc2Vfc2VjX2NvbnRleHQodWludDMyICAgICAgICAgICAgICAgICAqbWlub3Jfc3Rh dHVzLAorIHsKKyAKKyAgICAgb2xkZ2FhX3NlY19jb250ZXh0X3B0ciAgKmNvbnRleHRfaGFuZGxl ID0gc2VjX2NvbnRleHQ7CistICAgIHVpbnQzMiAgICAgICAgICAgICAgICAgICBpbnZfbWlub3Jf c3RhdHVzID0gMCwgaW52X21ham9yX3N0YXR1cyA9IDA7CisrICAgIHVpbnQzMiAgICAgICAgICAg ICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMDsKKyAKKyAKKyAjaWZkZWYgREVCVUcKK0BAIC0x NzUsNDEgKzE3NSw0MSBAQCBvbGRnYWFfcmVsZWFzZV9zZWNfY29udGV4dCh1aW50MzIgICAgICAg ICAgICAgICAgICptaW5vcl9zdGF0dXMsCisgICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cg Zm9yIGluY29tcGxldGUgY29udGV4dCBoYW5kbGVzICovCisgCisgICAgIGlmICgoKmNvbnRleHRf aGFuZGxlKS0+aWRlbnRpdHlfY3JlZCE9IE5VTEwpCistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVz ID0gb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCgmaW52X21pbm9yX3N0YXR1cywKKysgICAg ICAgIG9sZGdhYV9yZWxlYXNlX2lkZW50aXR5X2NyZWQoJmludl9taW5vcl9zdGF0dXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNvbnRleHRfaGFuZGxlKS0+aWRlbnRpdHlf Y3JlZCkpOworIAorIAorICAgICBpZiAoKCpjb250ZXh0X2hhbmRsZSktPmF1dGhyX2NyZWQhPSBO VUxMKQorLSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2F1dGhyX2Ny ZWQoJmludl9taW5vcl9zdGF0dXMsCisrICAgICAgICBvbGRnYWFfcmVsZWFzZV9hdXRocl9jcmVk KCZpbnZfbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpj b250ZXh0X2hhbmRsZSktPmF1dGhyX2NyZWQpKTsKKyAKKyAKKyAgICAgaWYgKCgqY29udGV4dF9o YW5kbGUpLT5ncm91cF9tZW1iZXJzaGlwIT0gTlVMTCkKKy0gICAgICAgIGludl9tYWpvcl9zdGF0 dXMgPSBvbGRnYWFfcmVsZWFzZV9pZGVudGl0eV9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAg ICAgICAgb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCgmaW52X21pbm9yX3N0YXR1cywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY29udGV4dF9oYW5kbGUpLT5ncm91cF9t ZW1iZXJzaGlwKSk7CisgCisgCisgICAgIGlmICgoKmNvbnRleHRfaGFuZGxlKS0+Z3JvdXBfbm9u X21lbWJlcnNoaXAhPSBOVUxMKQorLSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9y ZWxlYXNlX2lkZW50aXR5X2NyZWQoJmludl9taW5vcl9zdGF0dXMsCisrICAgICAgICBvbGRnYWFf cmVsZWFzZV9pZGVudGl0eV9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICYoKCpjb250ZXh0X2hhbmRsZSktPmdyb3VwX25vbl9tZW1iZXJzaGlw KSk7CisgCisgCisgICAgIGlmICgoKmNvbnRleHRfaGFuZGxlKS0+YXR0cmlidXRlcyE9IE5VTEwp CistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYXR0cmlidXRlcygm aW52X21pbm9yX3N0YXR1cywKKysgICAgICAgIG9sZGdhYV9yZWxlYXNlX2F0dHJpYnV0ZXMoJmlu dl9taW5vcl9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNvbnRl eHRfaGFuZGxlKS0+YXR0cmlidXRlcykpOworIAorIAorICAgICBpZiAoKCpjb250ZXh0X2hhbmRs ZSktPnVuZXZsX2NyZWQhPSBOVUxMKQorLSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdh YV9yZWxlYXNlX3VuZXZhbF9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgb2xkZ2Fh X3JlbGVhc2VfdW5ldmFsX2NyZWQoJmludl9taW5vcl9zdGF0dXMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJigoKmNvbnRleHRfaGFuZGxlKS0+dW5ldmxfY3JlZCkpOworIAorIAor ICAgICBpZiAoKCpjb250ZXh0X2hhbmRsZSktPmNvbm5lY3Rpb25fc3RhdGUhPSBOVUxMKQorICAg ICB7CistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2Nv bnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVy X2NvbnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgqY29udGV4dF9oYW5kbGUpLT5jb25uZWN0aW9uX3N0YXRlKTsKKyAKKy0gICAgICAgIGlu dl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0dXMs CisrICAgICAgICBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0dXMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNvbnRleHRfaGFuZGxlKS0+Y29ubmVjdGlv bl9zdGF0ZSkpOworICAgICB9CisgCitAQCAtMjM3LDcgKzIzNyw3IEBAIG9sZGdhYV9yZWxlYXNl X2lkZW50aXR5X2NyZWQgKHVpbnQzMiAgICAgICAgICAgICAgICAgICAqbWlub3Jfc3RhdHVzLAor IAorIHsKKyAgICAgb2xkZ2FhX2lkZW50aXR5X2NyZWRfcHRyICAqY3JlZCA9IGlkZW50aXR5X2Ny ZWQ7CistICAgIHVpbnQzMiAgICAgICAgICAgICAgICAgICAgIGludl9taW5vcl9zdGF0dXMgPSAw LCBpbnZfbWFqb3Jfc3RhdHVzID0gMDsKKysgICAgdWludDMyICAgICAgICAgICAgICAgICAgICAg aW52X21pbm9yX3N0YXR1cyA9IDA7CisgCisgI2lmZGVmIERFQlVHCisgICAgIGZwcmludGYoc3Rk ZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9pZGVudGl0eV9jcmVkOlxuIik7CitAQCAtMjUwLDI1ICsy NTAsMjAgQEAgb2xkZ2FhX3JlbGVhc2VfaWRlbnRpdHlfY3JlZCAodWludDMyICAgICAgICAgICAg ICAgICAgICptaW5vcl9zdGF0dXMsCisgICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9y IGluY29tcGxldGUgY29udGV4dCBoYW5kbGVzICovCisgCisgICAgIGlmICgoKmNyZWQpLT5wcmlu Y2lwYWwhPSBOVUxMKQorLSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNl X3ByaW5jaXBhbHMoJmludl9taW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPnByaW5jaXBhbCkpOworKyAgICAg ICAgb2xkZ2FhX3JlbGVhc2VfcHJpbmNpcGFscygmaW52X21pbm9yX3N0YXR1cywgJigoKmNyZWQp LT5wcmluY2lwYWwpKTsKKyAKKyAgICAgaWYgKCgqY3JlZCktPmNvbmRpdGlvbnMhPSBOVUxMKQor LSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2NvbmRpdGlvbnMoJmlu dl9taW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmKCgqY3JlZCktPmNvbmRpdGlvbnMpKTsKKysgICAgICAgIG9sZGdhYV9yZWxl YXNlX2NvbmRpdGlvbnMoJmludl9taW5vcl9zdGF0dXMsICYoKCpjcmVkKS0+Y29uZGl0aW9ucykp OworIAorICAgICBpZiAoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQhPSBOVUxMKQorICAgICB7Cist ICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0KKy0gICAgICAgICAgICAgICAgb2xkZ2FhX3JlbGVh c2VfYnVmZmVyX2NvbnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgb2xkZ2FhX3Jl bGVhc2VfYnVmZmVyX2NvbnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKmNyZWQpLT5tZWNoX3NwZWNfY3JlZCk7 CistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYnVmZmVyKCZpbnZf bWlub3Jfc3RhdHVzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICYoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQpKTsKKysgICAgICAgIG9sZGdhYV9yZWxl YXNlX2J1ZmZlcigmaW52X21pbm9yX3N0YXR1cywgJigoKmNyZWQpLT5tZWNoX3NwZWNfY3JlZCkp OworICAgICB9CisgCisgICAgIGlmICgoKmNyZWQpLT5uZXh0IT0gTlVMTCkKKy0gICAgICAgIGlu dl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9pZGVudGl0eV9jcmVkKCZpbnZfbWlub3Jf c3RhdHVzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJigoKmNyZWQpLT5uZXh0KSk7CisrICAgICAgICBvbGRnYWFfcmVsZWFzZV9pZGVudGl0 eV9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLCAmKCgqY3JlZCktPm5leHQpKTsKKyAgICAgZnJlZSgq Y3JlZCk7CisgCisgICAgIHJldHVybiBPTERHQUFfU1VDQ0VTUzsKK0BAIC0yOTIsNyArMjg3LDcg QEAgb2xkZ2FhX3JlbGVhc2VfYXV0aHJfY3JlZCh1aW50MzIgICAgICAgICAgICAgICAgKm1pbm9y X3N0YXR1cywKKyAKKyB7CisgICAgIG9sZGdhYV9hdXRocl9jcmVkX3B0ciAgICpjcmVkID0gYXV0 aHJfY3JlZDsKKy0gICAgdWludDMyICAgICAgICAgICAgICAgICAgIGludl9taW5vcl9zdGF0dXMg PSAwLCBpbnZfbWFqb3Jfc3RhdHVzID0gMDsKKysgICAgdWludDMyICAgICAgICAgICAgICAgICAg IGludl9taW5vcl9zdGF0dXMgPSAwOworIAorICNpZmRlZiBERUJVRworICAgICBmcHJpbnRmKHN0 ZGVyciwgIlxub2xkZ2FhX3JlbGVhc2VfYXV0aHJfY3JlZDpcbiIpOworQEAgLTMwNCwxMyArMjk5 LDExIEBAIG9sZGdhYV9yZWxlYXNlX2F1dGhyX2NyZWQodWludDMyICAgICAgICAgICAgICAgICpt aW5vcl9zdGF0dXMsCisgICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9yIGluY29tcGxl dGUgY29udGV4dCBoYW5kbGVzICovCisgCisgICAgIGlmICgoKmNyZWQpLT5ncmFudG9yICE9IE5V TEwpCistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfcHJpbmNpcGFs cygmaW52X21pbm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgq Y3JlZCktPmdyYW50b3IpKTsKKysgICAgICAgIG9sZGdhYV9yZWxlYXNlX3ByaW5jaXBhbHMoJmlu dl9taW5vcl9zdGF0dXMsICYoKCpjcmVkKS0+Z3JhbnRvcikpOworIAorIAorICAgICBpZiAoKCpj cmVkKS0+Z3JhbnRlZSAhPSBOVUxMKQorLSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdh YV9yZWxlYXNlX3ByaW5jaXBhbHMoJmludl9taW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJigoKmNyZWQpLT5ncmFudGVlKSk7CisrICAgICAgICBvbGRnYWFfcmVs ZWFzZV9wcmluY2lwYWxzKCZpbnZfbWlub3Jfc3RhdHVzLCAmKCgqY3JlZCktPmdyYW50ZWUpKTsK KyAKKyAKKyAgICAgLyoKK0BAIC0zMjAsMjEgKzMxMywxNyBAQCBvbGRnYWFfcmVsZWFzZV9hdXRo cl9jcmVkKHVpbnQzMiAgICAgICAgICAgICAgICAqbWlub3Jfc3RhdHVzLAorICAgICAgKi8KKyAK KyAgICAgaWYgKCgqY3JlZCktPmFjY2Vzc19yaWdodHMhPSBOVUxMKQorLSAgICAgICAgaW52X21h am9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX3JpZ2h0cygmaW52X21pbm9yX3N0YXR1cywKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5h Y2Nlc3NfcmlnaHRzKSk7CisrICAgICAgICBvbGRnYWFfcmVsZWFzZV9yaWdodHMoJmludl9taW5v cl9zdGF0dXMsICYoKCpjcmVkKS0+YWNjZXNzX3JpZ2h0cykpOworIAorICAgICBpZiAoKCpjcmVk KS0+bWVjaF9zcGVjX2NyZWQhPSBOVUxMKQorICAgICB7CistICAgICAgICBpbnZfbWFqb3Jfc3Rh dHVzID0KKy0gICAgICAgICAgICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2NvbnRlbnRzKCZp bnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2NvbnRlbnRz KCZpbnZfbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICgqY3JlZCktPm1lY2hfc3BlY19jcmVkKTsKKy0gICAgICAgIGludl9tYWpvcl9z dGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0dXMsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPm1lY2hfc3BlY19jcmVkKSk7Cisr ICAgICAgICBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0dXMsICYoKCpjcmVk KS0+bWVjaF9zcGVjX2NyZWQpKTsKKyAgICAgfQorIAorICAgICBpZiAoKCpjcmVkKS0+bmV4dCE9 IE5VTEwpCistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYXV0aHJf Y3JlZCgmaW52X21pbm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5uZXh0KSk7CisrICAgICAgICBvbGRnYWFfcmVs ZWFzZV9hdXRocl9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLCAmKCgqY3JlZCktPm5leHQpKTsKKyAK KyAgICAgZnJlZSgqY3JlZCk7CisgCitAQCAtMzU5LDcgKzM0OCw3IEBAIG9sZGdhYV9yZWxlYXNl X2F0dHJpYnV0ZXModWludDMyICAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisgeworIAor ICAgICBvbGRnYWFfYXR0cmlidXRlc19wdHIgICpjcmVkID0gYXR0cmlidXRlczsKKy0gICAgdWlu dDMyICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDAsIGludl9tYWpvcl9zdGF0 dXMgPSAwOworKyAgICB1aW50MzIgICAgICAgICAgICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0g MDsKKyAKKyAKKyAjaWZkZWYgREVCVUcKK0BAIC0zNzcsMjEgKzM2NiwxOCBAQCBvbGRnYWFfcmVs ZWFzZV9hdHRyaWJ1dGVzKHVpbnQzMiAgICAgICAgICAgICAgICAqbWlub3Jfc3RhdHVzLAorIAor IAorICAgICBpZiAoKCpjcmVkKS0+Y29uZGl0aW9ucyE9IE5VTEwpCistICAgICAgICBpbnZfbWFq b3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfY29uZF9iaW5kaW5ncygmaW52X21pbm9yX3N0YXR1 cywKKysgICAgICAgIG9sZGdhYV9yZWxlYXNlX2NvbmRfYmluZGluZ3MoJmludl9taW5vcl9zdGF0 dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5jb25kaXRpb25z KSk7CisgCisgICAgIGlmICgoKmNyZWQpLT5tZWNoX3NwZWNfY3JlZCE9IE5VTEwpCisgICAgIHsK Ky0gICAgICAgIGludl9tYWpvcl9zdGF0dXMgPQorLSAgICAgICAgICAgICAgICBvbGRnYWFfcmVs ZWFzZV9idWZmZXJfY29udGVudHMoJmludl9taW5vcl9zdGF0dXMsCisrICAgICAgICBvbGRnYWFf cmVsZWFzZV9idWZmZXJfY29udGVudHMoJmludl9taW5vcl9zdGF0dXMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKmNyZWQpLT5tZWNoX3NwZWNfY3JlZCk7CistICAgICAg ICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfYnVmZmVyKCZpbnZfbWlub3Jfc3Rh dHVzLAorLSAgICAgICAgICAgICAgICAgICAgICAgJigoKmNyZWQpLT5tZWNoX3NwZWNfY3JlZCkp OworKyAgICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVyKCZpbnZfbWlub3Jfc3RhdHVzLCAmKCgq Y3JlZCktPm1lY2hfc3BlY19jcmVkKSk7CisgICAgIH0KKyAKKyAgICAgaWYgKCgqY3JlZCktPm5l eHQhPSBOVUxMKQorLSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9IG9sZGdhYV9yZWxlYXNlX2F0 dHJpYnV0ZXMoJmludl9taW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+bmV4dCkpOworKyAgICAgICAgb2xkZ2Fh X3JlbGVhc2VfYXR0cmlidXRlcygmaW52X21pbm9yX3N0YXR1cywgJigoKmNyZWQpLT5uZXh0KSk7 CisgCisgICAgIGZyZWUoKmNyZWQpOworIAorQEAgLTQxNiw3ICs0MDIsNyBAQCBvbGRnYWFfcmVs ZWFzZV91bmV2YWxfY3JlZCh1aW50MzIgICAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisg CisgeworICAgICBvbGRnYWFfdW5ldmFsX2NyZWRfcHRyICAqY3JlZCA9IHVuZXZhbF9jcmVkOwor LSAgICB1aW50MzIgICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDAsIGludl9t YWpvcl9zdGF0dXMgPSAwOworKyAgICB1aW50MzIgICAgICAgICAgICAgICAgICAgaW52X21pbm9y X3N0YXR1cyA9IDA7CisgCisgI2lmZGVmIERFQlVHCisgICAgIGZwcmludGYoc3RkZXJyLCAiXG5v bGRnYWFfcmVsZWFzZV91bmV2YWxfY3JlZDpcbiIpOworQEAgLTQzMCwyNyArNDE2LDIyIEBAIG9s ZGdhYV9yZWxlYXNlX3VuZXZhbF9jcmVkKHVpbnQzMiAgICAgICAgICAgICAgICAgKm1pbm9yX3N0 YXR1cywKKyAKKyAKKyAgICAgaWYgKCgqY3JlZCktPmdyYW50b3IgIT0gTlVMTCkKKy0gICAgICAg IGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9wcmluY2lwYWxzKCZpbnZfbWlub3Jf c3RhdHVzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+Z3JhbnRv cikpOworKyAgICAgICAgb2xkZ2FhX3JlbGVhc2VfcHJpbmNpcGFscygmaW52X21pbm9yX3N0YXR1 cywgJigoKmNyZWQpLT5ncmFudG9yKSk7CisgCisgCisgICAgIGlmICgoKmNyZWQpLT5ncmFudGVl ICE9IE5VTEwpCistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfcHJp bmNpcGFscygmaW52X21pbm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmKCgqY3JlZCktPmdyYW50ZWUpKTsKKysgICAgICAgIG9sZGdhYV9yZWxlYXNlX3ByaW5jaXBh bHMoJmludl9taW5vcl9zdGF0dXMsICYoKCpjcmVkKS0+Z3JhbnRlZSkpOworIAorIAorICAgICBp ZiAoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQhPSBOVUxMKQorICAgICB7CistICAgICAgICBpbnZf bWFqb3Jfc3RhdHVzID0KKy0gICAgICAgICAgICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVyX2Nv bnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgb2xkZ2FhX3JlbGVhc2VfYnVmZmVy X2NvbnRlbnRzKCZpbnZfbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgqY3JlZCktPm1lY2hfc3BlY19jcmVkKTsKKy0gICAgICAgIGlu dl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0dXMs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPm1lY2hfc3BlY19j cmVkKSk7CisrICAgICAgICBvbGRnYWFfcmVsZWFzZV9idWZmZXIoJmludl9taW5vcl9zdGF0dXMs ICYoKCpjcmVkKS0+bWVjaF9zcGVjX2NyZWQpKTsKKyAgICAgfQorIAorICAgICBpZiAoKCpjcmVk KS0+bmV4dCE9IE5VTEwpCistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVh c2VfdW5ldmFsX2NyZWQoJmludl9taW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPm5leHQpKTsKKysgICAgICAg IG9sZGdhYV9yZWxlYXNlX3VuZXZhbF9jcmVkKCZpbnZfbWlub3Jfc3RhdHVzLCAmKCgqY3JlZCkt Pm5leHQpKTsKKyAKKyAgICAgZnJlZSgqY3JlZCk7CisgCitAQCAtNDc1LDcgKzQ1Niw3IEBAIG9s ZGdhYV9yZWxlYXNlX3ByaW5jaXBhbHModWludDMyICAgICAgICAgICAgICAgICptaW5vcl9zdGF0 dXMsCisgeworIAorICAgICBvbGRnYWFfcHJpbmNpcGFsc19wdHIgICpjcmVkID0gcHJpbmNpcGFs czsKKy0gICAgdWludDMyICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDAsIGlu dl9tYWpvcl9zdGF0dXMgPSAwOworKyAgICB1aW50MzIgICAgICAgICAgICAgICAgICBpbnZfbWlu b3Jfc3RhdHVzID0gMDsKKyAKKyAjaWZkZWYgREVCVUcKKyAgICAgZnByaW50ZihzdGRlcnIsICJc bm9sZGdhYV9yZWxlYXNlX3ByaW5jaXBhbHM6XG4iKTsKK0BAIC00ODgsMTMgKzQ2OSwxMSBAQCBv bGRnYWFfcmVsZWFzZV9wcmluY2lwYWxzKHVpbnQzMiAgICAgICAgICAgICAgICAqbWlub3Jfc3Rh dHVzLAorIAorIAorICAgICBpZiAoKCpjcmVkKS0+cmlnaHRzICE9IE5VTEwpCistICAgICAgICBp bnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfcmlnaHRzKCZpbnZfbWlub3Jfc3RhdHVz LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+cmlnaHRzKSk7Cisr ICAgICAgICBvbGRnYWFfcmVsZWFzZV9yaWdodHMoJmludl9taW5vcl9zdGF0dXMsICYoKCpjcmVk KS0+cmlnaHRzKSk7CisgCisgCisgICAgIGlmICgoKmNyZWQpLT5uZXh0ICE9IE5VTEwpCistICAg ICAgICBpbnZfbWFqb3Jfc3RhdHVzID0gb2xkZ2FhX3JlbGVhc2VfcHJpbmNpcGFscygmaW52X21p bm9yX3N0YXR1cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3JlZCktPm5l eHQpKTsKKysgICAgICAgIG9sZGdhYV9yZWxlYXNlX3ByaW5jaXBhbHMoJmludl9taW5vcl9zdGF0 dXMsICYoKCpjcmVkKS0+bmV4dCkpOworIAorICAgICBpZiAoKCpjcmVkKS0+dHlwZSAgICAgICE9 IE5VTEwpIGZyZWUoKCpjcmVkKS0+dHlwZSk7CisgICAgIGlmICgoKmNyZWQpLT5hdXRob3JpdHkg IT0gTlVMTCkgZnJlZSgoKmNyZWQpLT5hdXRob3JpdHkpOworQEAgLTUyMyw3ICs1MDIsNyBAQCBv bGRnYWFfcmVsZWFzZV9yaWdodHModWludDMyICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKyB7 CisgCisgICAgIG9sZGdhYV9yaWdodHNfcHRyICAqY3JlZCA9IHJpZ2h0czsKKy0gICAgdWludDMy ICAgICAgICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMCwgaW52X21ham9yX3N0YXR1cyA9IDA7 CisrICAgIHVpbnQzMiAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDA7CisgCisgI2lm ZGVmIERFQlVHCisgICAgIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVsZWFzZV9yaWdodHM6 XG4iKTsKK0BAIC01NDcsMTMgKzUyNiwxMiBAQCBvbGRnYWFfcmVsZWFzZV9yaWdodHModWludDMy ICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKyAKKyAKKyAgICAgaWYgKCgqY3JlZCktPmNvbmRf YmluZGluZ3MgIT0gTlVMTCkKKy0gICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVs ZWFzZV9jb25kX2JpbmRpbmdzKCZpbnZfbWlub3Jfc3RhdHVzLAorKyAgICAgICAgb2xkZ2FhX3Jl bGVhc2VfY29uZF9iaW5kaW5ncygmaW52X21pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmKCgqY3JlZCktPmNvbmRfYmluZGluZ3MpKTsKKyAKKyAKKyAgICAgaWYg KCgqY3JlZCktPm5leHQgIT0gTlVMTCkKKy0gICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRn YWFfcmVsZWFzZV9yaWdodHMoJmludl9taW5vcl9zdGF0dXMsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJigoKmNyZWQpLT5uZXh0KSk7CisrICAgICAgICBvbGRnYWFfcmVsZWFzZV9y aWdodHMoJmludl9taW5vcl9zdGF0dXMsICYoKCpjcmVkKS0+bmV4dCkpOworIAorICAgICBpZiAo KCpjcmVkKS0+dHlwZSAgICAgICE9IE5VTEwpIGZyZWUoKCpjcmVkKS0+dHlwZSk7CisgICAgIGlm ICgoKmNyZWQpLT5hdXRob3JpdHkgIT0gTlVMTCkgZnJlZSgoKmNyZWQpLT5hdXRob3JpdHkpOwor QEAgLTU4Myw3ICs1NjEsNyBAQCBvbGRnYWFfcmVsZWFzZV9jb25kX2JpbmRpbmdzKHVpbnQzMiAg ICAgICAgICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9sZGdhYV9jb25kX2JpbmRpbmdzX3B0ciAgKmNvbmRfYmluZCkKKyB7CisgICAgIG9s ZGdhYV9jb25kX2JpbmRpbmdzX3B0ciAgKmNyZWQgPSBjb25kX2JpbmQ7CistICAgIHVpbnQzMiAg ICAgICAgICAgICAgICAgICAgIGludl9taW5vcl9zdGF0dXMgPSAwLCBpbnZfbWFqb3Jfc3RhdHVz ID0gMDsKKysgICAgdWludDMyICAgICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9 IDA7CisgCisgI2lmZGVmIERFQlVHCisgICAgIGZwcmludGYoc3RkZXJyLCAiXG5vbGRnYWFfcmVs ZWFzZV9jb25kX2JpbmRpbmdzOlxuIik7CitAQCAtNjA2LDEyICs1ODQsMTAgQEAgb2xkZ2FhX3Jl bGVhc2VfY29uZF9iaW5kaW5ncyh1aW50MzIgICAgICAgICAgICAgICAgICAgICptaW5vcl9zdGF0 dXMsCisgICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9yIGluY29tcGxldGUgY29udGV4 dCBoYW5kbGVzICovCisgCisgICAgIGlmICgoKmNyZWQpLT5jb25kaXRpb24gIT0gTlVMTCkKKy0g ICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBvbGRnYWFfcmVsZWFzZV9jb25kaXRpb25zKCZpbnZf bWlub3Jfc3RhdHVzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmKCgqY3JlZCktPmNvbmRpdGlvbikpOworKyAgICAgICAgb2xkZ2FhX3JlbGVhc2Vf Y29uZGl0aW9ucygmaW52X21pbm9yX3N0YXR1cywgJigoKmNyZWQpLT5jb25kaXRpb24pKTsKKyAK KyAgICAgaWYgKCgqY3JlZCktPm5leHQgIT0gTlVMTCkKKy0gICAgICAgIGludl9tYWpvcl9zdGF0 dXMgPSBvbGRnYWFfcmVsZWFzZV9jb25kX2JpbmRpbmdzKCZpbnZfbWlub3Jfc3RhdHVzLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKCgqY3Jl ZCktPm5leHQpKTsKKysgICAgICAgIG9sZGdhYV9yZWxlYXNlX2NvbmRfYmluZGluZ3MoJmludl9t aW5vcl9zdGF0dXMsICYoKCpjcmVkKS0+bmV4dCkpOworIAorICAgICBmcmVlKCpjcmVkKTsKKyAg ICAgKmNvbmRfYmluZCA9IE5VTEw7CitAQCAtNjM2LDcgKzYxMiw3IEBAIG9sZGdhYV9yZWxlYXNl X2NvbmRpdGlvbnModWludDMyICAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBvbGRnYWFfY29uZGl0aW9uc19wdHIgKmNvbmQpCisgeworICAg ICBvbGRnYWFfY29uZGl0aW9uc19wdHIgICpjcmVkID0gY29uZDsKKy0gICAgdWludDMyICAgICAg ICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDAsIGludl9tYWpvcl9zdGF0dXMgPSAwOwor KyAgICB1aW50MzIgICAgICAgICAgICAgICAgICBpbnZfbWlub3Jfc3RhdHVzID0gMDsKKyAKKyAj aWZkZWYgREVCVUcKKyAgICAgZnByaW50ZihzdGRlcnIsICJcbm9sZGdhYV9yZWxlYXNlX2NvbmRp dGlvbnM6XG4iKTsKK0BAIC02NTcsOCArNjMzLDcgQEAgb2xkZ2FhX3JlbGVhc2VfY29uZGl0aW9u cyh1aW50MzIgICAgICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKyAgICAgLyogaWdub3JlIGVy cm9ycyB0byBhbGxvdyBmb3IgaW5jb21wbGV0ZSBjb250ZXh0IGhhbmRsZXMgKi8KKyAKKyAgICAg aWYgKCgqY3JlZCktPm5leHQgIT0gTlVMTCkKKy0gICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSBv bGRnYWFfcmVsZWFzZV9jb25kaXRpb25zKCZpbnZfbWlub3Jfc3RhdHVzLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICYoKCpjcmVkKS0+bmV4dCkpOworKyAgICAgICAgb2xkZ2FhX3Jl bGVhc2VfY29uZGl0aW9ucygmaW52X21pbm9yX3N0YXR1cywgJigoKmNyZWQpLT5uZXh0KSk7Cisg CisgICAgIGlmICgoKmNyZWQpLT50eXBlICAgICAgIT0gTlVMTCkgZnJlZSgoKmNyZWQpLT50eXBl KTsKKyAgICAgaWYgKCgqY3JlZCktPmF1dGhvcml0eSAhPSBOVUxMKSBmcmVlKCgqY3JlZCktPmF1 dGhvcml0eSk7CitAQCAtNjg2LDcgKzY2MSw2IEBAIG9sZGdhYV9yZWxlYXNlX2Fuc3dlcih1aW50 MzIgICAgICAgICAgICAqbWlub3Jfc3RhdHVzLAorIHsKKyAgICAgb2xkZ2FhX2Fuc3dlcl9wdHIg ICogICAgICAgICAgICAgICAgY3JlZCA9IGFuc3dlcjsKKyAgICAgdWludDMyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0YXR1cyA9IDA7CistICAgIHVpbnQzMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludl9tYWpvcl9zdGF0dXMgPSAwOworIAorIAorICNp ZmRlZiBERUJVRworQEAgLTcwMSw4ICs2NzUsNyBAQCBvbGRnYWFfcmVsZWFzZV9hbnN3ZXIodWlu dDMyICAgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKyAgICAgaWYgKCgqY3JlZCktPnJpZ2h0cyE9 IE5VTEwpCisgICAgIHsKKyAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgdG8gYWxsb3cgZm9yIGlu Y29tcGxldGUgY29udGV4dCBoYW5kbGVzICovCistICAgICAgICBpbnZfbWFqb3Jfc3RhdHVzID0K Ky0gICAgICAgICAgICBvbGRnYWFfcmVsZWFzZV9yaWdodHMoJmludl9taW5vcl9zdGF0dXMsICYo KCpjcmVkKS0+cmlnaHRzKSk7CisrICAgICAgICBvbGRnYWFfcmVsZWFzZV9yaWdodHMoJmludl9t aW5vcl9zdGF0dXMsICYoKCpjcmVkKS0+cmlnaHRzKSk7CisgICAgIH0KKyAKKyAgICAgaWYgKCgq Y3JlZCktPnZhbGlkX3RpbWUgIT0gTlVMTCkKK0BAIC03MzMsNyArNzA2LDYgQEAgb2xkZ2FhX3Jl bGVhc2Vfc2VjX2F0dHJiKHVpbnQzMiAgICAgICAgICAgICAgICptaW5vcl9zdGF0dXMsCisgewor ICAgICBvbGRnYWFfc2VjX2F0dHJiX3B0ciAgKiAgICAgICAgICAgICBjcmVkID0gYXR0cmlidXRl czsKKyAgICAgdWludDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52X21pbm9yX3N0 YXR1cyA9IDA7CistICAgIHVpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludl9t YWpvcl9zdGF0dXMgPSAwOworIAorICNpZmRlZiBERUJVRworICAgICBmcHJpbnRmKHN0ZGVyciwg Ilxub2xkZ2FhX3JlbGVhc2Vfc2VjX2F0dHJiOlxuIik7CitAQCAtNzQ3LDggKzcxOSw3IEBAIG9s ZGdhYV9yZWxlYXNlX3NlY19hdHRyYih1aW50MzIgICAgICAgICAgICAgICAqbWlub3Jfc3RhdHVz LAorICAgICBpZiAoKCpjcmVkKS0+bmV4dCAhPSBOVUxMKQorICAgICB7CisgICAgICAgICAvKiBp Z25vcmUgZXJyb3JzIHRvIGFsbG93IGZvciBpbmNvbXBsZXRlIGNvbnRleHQgaGFuZGxlcyAqLwor LSAgICAgICAgaW52X21ham9yX3N0YXR1cyA9CistICAgICAgICAgICAgb2xkZ2FhX3JlbGVhc2Vf c2VjX2F0dHJiKCZpbnZfbWlub3Jfc3RhdHVzLCAmKCgqY3JlZCktPm5leHQpKTsKKysgICAgICAg IG9sZGdhYV9yZWxlYXNlX3NlY19hdHRyYigmaW52X21pbm9yX3N0YXR1cywgJigoKmNyZWQpLT5u ZXh0KSk7CisgICAgIH0KKyAKKyAgICAgaWYgKCgqY3JlZCktPnR5cGUgICAgICAhPSBOVUxMKSBm cmVlKCgqY3JlZCktPnR5cGUpOworZGlmZiAtLWdpdCBhL2dzaS9jYWxsYmFjay9zb3VyY2UvbGli cmFyeS9vbGRnYWEvb2xkZ2FhX3V0aWxzLmMgYi9nc2kvY2FsbGJhY2svc291cmNlL2xpYnJhcnkv b2xkZ2FhL29sZGdhYV91dGlscy5jCitpbmRleCAxZjVjMmExZWUuLjdjOWZkNmRmMiAxMDA2NDQK Ky0tLSBhL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9vbGRnYWEvb2xkZ2FhX3V0aWxzLmMK KysrKyBiL2dzaS9jYWxsYmFjay9zb3VyY2UvbGlicmFyeS9vbGRnYWEvb2xkZ2FhX3V0aWxzLmMK K0BAIC00NzcsNyArNDc3LDcgQEAgb2xkZ2FhX3JlZ2V4X21hdGNoZXNfc3RyaW5nKAorIHsKKyAg IC8qIE91ciByZXN1bHQgKDEgPT0gbWF0Y2gpICovCisgICBpbnQJCQkJCSAgICAgICAgICAgICAg ICByZXN1bHQgPSAwOworLSAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGFyOworKyAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyOworIAor ICAgLyogQ2hlY2sgYXJndW1lbnRzICovCisgICBpZiAoIXN0cmluZyB8fCAhcmVnZXgpCistLSAK KzIuNTQuMAorCgpkaWZmIC0tZ2l0IGEvZ2xvYnVzLWdzaS1jYWxsYmFjay5zcGVjIGIvZ2xvYnVz LWdzaS1jYWxsYmFjay5zcGVjCmluZGV4IDgyMTM1NTUuLjg3OThjN2QgMTAwNjQ0Ci0tLSBhL2ds b2J1cy1nc2ktY2FsbGJhY2suc3BlYworKysgYi9nbG9idXMtZ3NpLWNhbGxiYWNrLnNwZWMKQEAg LTEsMTMgKzEsMTYgQEAKIE5hbWU6CQlnbG9idXMtZ3NpLWNhbGxiYWNrCiAlZ2xvYmFsIF9uYW1l ICUodHIgLSBfIDw8PCAle25hbWV9KQogVmVyc2lvbjoJNi4yCi1SZWxlYXNlOgkxNCV7P2Rpc3R9 CitSZWxlYXNlOgkxNSV7P2Rpc3R9CiBTdW1tYXJ5OglHcmlkIENvbW11bml0eSBUb29sa2l0IC0g R2xvYnVzIEdTSSBDYWxsYmFjayBMaWJyYXJ5CiAKIExpY2Vuc2U6CUFwYWNoZS0yLjAKIFVSTDoJ CWh0dHBzOi8vZ2l0aHViLmNvbS9ncmlkY2YvZ2N0LwogU291cmNlOgkJaHR0cHM6Ly9yZXBvLmdy aWRjZi5vcmcvZ2N0Ni9zb3VyY2VzLyV7X25hbWV9LSV7dmVyc2lvbn0udGFyLmd6CiBTb3VyY2U4 OglSRUFETUUKK1BhdGNoMDoJCTAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13aGl0 ZS1zcGFjZS5wYXRjaAorUGF0Y2gxOgkJMDAwMi1CdWlsZC13aXRoLU9wZW5TU0wtNC5wYXRjaAor UGF0Y2gyOgkJMDAwMy1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gKIAog QnVpbGRSZXF1aXJlczoJbWFrZQogQnVpbGRSZXF1aXJlczoJZ2NjCkBAIC01OSw2ICs2Miw5IEBA IEdsb2J1cyBHU0kgQ2FsbGJhY2sgTGlicmFyeSBEb2N1bWVudGF0aW9uIEZpbGVzCiAKICVwcmVw CiAlc2V0dXAgLXEgLW4gJXtfbmFtZX0tJXt2ZXJzaW9ufQorJXBhdGNoIC1QMCAtcDQKKyVwYXRj aCAtUDEgLXA0CislcGF0Y2ggLVAyIC1wNAogCiAlYnVpbGQKICMgUmVkdWNlIG92ZXJsaW5raW5n CkBAIC0xMDksNiArMTE1LDEwIEBAIHJtICV7YnVpbGRyb290fSV7X3BrZ2RvY2Rpcn0vR0xPQlVT X0xJQ0VOU0UKICVsaWNlbnNlIEdMT0JVU19MSUNFTlNFCiAKICVjaGFuZ2Vsb2cKKyogU3VuIEp1 biAxNCAyMDI2IE1hdHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVydEBwaHlzaWNzLnV1LnNlPiAt IDYuMi0xNQorLSBDb21waWxlIHdpdGggT3BlblNTTCA0CistIEZpeCBjb21waWxlciB3YXJuaW5n cworCiAqIEZyaSBKYW4gMTYgMjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5n QGZlZG9yYXByb2plY3Qub3JnPiAtIDYuMi0xNAogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9y YXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0X01hc3NfUmVidWlsZAogCg==