From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-119.freemail.mail.aliyun.com (out30-119.freemail.mail.aliyun.com [115.124.30.119]) by sourceware.org (Postfix) with ESMTPS id 855A13857BAC for ; Thu, 11 Jan 2024 09:35:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 855A13857BAC Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 855A13857BAC Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=115.124.30.119 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704965752; cv=none; b=FniUMiRL0HCAASSmQGHF5kfip+gECoM1z4LPFgWV/C6EUo9Z7N7Qv55xtmxBsz00IxzgvSB/BWdrMlHptg/rDsNyB7SHc7vbbO3E/AMLIbSisSGQL/5ZI1Z8KOl7jyvinEz8YVTw5f/k1+vhEklhVCi16ce/qDFbhJqlpPIqRUY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704965752; c=relaxed/simple; bh=ucaycGlaROYq9Hvo9g5RwoVvzcQ79uVPRZMphp4urho=; h=Date:From:To:Message-ID:Subject:MIME-Version; b=o4RR06lfACLxcuuPG0JfH12ZJDoKIpHKf8DKt1GghL2Q8vJ3LZnu3g4vygxhqx9+/XtJBdfCEUNQVSQipVWzfHB1EU4ZhWLKwts1YmfaPXMUDCti8r5GxpeLUEMGW2+mhj1AZDsJvLE/DFfxeMA8fy0zOMwbe35hYXmYMckKdAo= ARC-Authentication-Results: i=1; server2.sourceware.org X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R861e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046049;MF=cooper.joshua@linux.alibaba.com;NM=1;PH=DW;RN=10;SR=0;TI=W4_0.2.3_v5ForWebDing_21281B34_1704965617763_o7001c69j; Received: from WS-web (cooper.joshua@linux.alibaba.com[W4_0.2.3_v5ForWebDing_21281B34_1704965617763_o7001c69j]) at Thu, 11 Jan 2024 17:35:39 +0800 Date: Thu, 11 Jan 2024 17:35:39 +0800 From: "joshua" To: "juzhe.zhong@rivai.ai" , "gcc-patches" Cc: "Jim Wilson" , "palmer" , "andrew" , "philipp.tomsich" , "jeffreyalaw" , "christoph.muellner" , "jinma" , "cooper.qu" Reply-To: "joshua" Message-ID: Subject: =?UTF-8?B?UmXvvJpSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVj?= =?UTF-8?B?dG9yLXNwZWNpZmljIGludHJpbnNpY3Mu?= X-Mailer: [Alimail-Mailagent revision 79][W4_0.2.3][v5ForWebDing][Chrome] MIME-Version: 1.0 x-aliyun-im-through: {"mailThroughImNew":true} References: x-aliyun-mail-creator: W4_0.2.3_v5ForWebDing_SFRTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMC4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xMjAuMC4wLjA=Ch In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-18.2 required=5.0 tests=BAYES_00,BODY_8BITS,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: SSBzZWUuIFdlIGFkZGVkICEgVEFSR0VUX1RIRUFEVkVDVE9SIGluaXRhbGx5IGJlY2FzdWUKd2Ug d2FudCB0byBwcm92aWRlIGEgcGF0Y2hzZXQgdmVyc2lvbiB0aGF0IGNhbiB3b3JrIHdpdGhvdXQg YW55CmVycm9ycyBib3RoIGluIE8wIGFuZCBPMi4gV2l0aG91dCB0aGVzZSBjaGFuZ2VzLCB3ZSB3 aWxsIGdldCAiCnVucmVjb2duaXplZCBvcGNvZGUiIGluIE8yIGR1cmluZyBhc3NlbWJseSBzdGFn ZS4KCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQrlj5Hku7bkurrvvJpqdXpoZS56aG9uZ0ByaXZhaS5haSA8anV6aGUu emhvbmdAcml2YWkuYWk+CuWPkemAgeaXtumXtO+8mjIwMjTlubQx5pyIMTHml6Uo5pif5pyf5Zub KSAxNzoyOArmlLbku7bkurrvvJoiY29vcGVyLmpvc2h1YSI8Y29vcGVyLmpvc2h1YUBsaW51eC5h bGliYWJhLmNvbT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+CuaKhOOA gOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NAZ21haWwuY29tPjsgcGFsbWVyPHBhbG1l ckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lmaXZlLmNvbT47ICJwaGlsaXBwLnRvbXNp Y2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGplZmZyZXlhbGF3PGplZmZyZXlhbGF3QGdt YWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNocmlzdG9waC5tdWVsbG5lckB2cnVsbC5l dT47IGppbm1hPGppbm1hQGxpbnV4LmFsaWJhYmEuY29tPjsgImNvb3Blci5xdSI8Y29vcGVyLnF1 QGxpbnV4LmFsaWJhYmEuY29tPgrkuLvjgIDpopjvvJpSZTogUmXvvJpbUEFUQ0ggdjVdIFJJU0Mt VjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgoKCkkg cHJlZmVyIHlvdSByZW1vdmUgdGhvc2UgVEFSR0VUX1RIRUFEVkVDVE9SIGZvciBub3cuCgoKQW5k IGZpbGUgUFIgbGV0IG1lIHNlZSB0aGUgcmVhbCBwcm9ibGVtLgoKCkkgZG9uJ3QgYmVsaWV2ZSB0 aGlzIHNob3VsZCBub3QgZml4ZWQgYnkgdGhpcyB3YXkuCgoKanV6aGUuemhvbmdAcml2YWkuYWkK CsKgCuWPkeS7tuS6uu+8msKgam9zaHVhCuWPkemAgeaXtumXtO+8msKgMjAyNC0wMS0xMcKgMTc6 MjYK5pS25Lu25Lq677yawqBqdXpoZS56aG9uZ0ByaXZhaS5haTsgZ2NjLXBhdGNoZXMK5oqE6YCB 77yawqBKaW0gV2lsc29uOyBwYWxtZXI7IGFuZHJldzsgcGhpbGlwcC50b21zaWNoOyBqZWZmcmV5 YWxhdzsgY2hyaXN0b3BoLm11ZWxsbmVyOyBqaW5tYTsgY29vcGVyLnF1CuS4u+mimO+8msKgUmXv vJpSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNw ZWNpZmljIGludHJpbnNpY3MuCgpNYXliZSB0aGUgb3B0aW1pemF0aW9uIGNhbm5vdCBiZSBkb25l IGluIHNpbXBsZSBjYXNlcy4gV2UgcnVuIHNvbWUgY29tcGxleCBjYXNlcwppbiBPMiBhbmQgZHNp Y292ZXJlZCBpdC4KwqAKwqAKwqAKwqAKwqAKwqAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mmp1emhl Lnpob25nQHJpdmFpLmFpIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4K5Y+R6YCB5pe26Ze077yaMjAy NOW5tDHmnIgxMeaXpSjmmJ/mnJ/lm5spIDE3OjE3CuaUtuS7tuS6uu+8miJjb29wZXIuam9zaHVh Ijxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJhYmEuY29tPjsgImdjYy1wYXRjaGVzIjxnY2MtcGF0 Y2hlc0BnY2MuZ251Lm9yZz4K5oqE44CA6YCB77yaSmltIFdpbHNvbjxqaW0ud2lsc29uLmdjY0Bn bWFpbC5jb20+OyBwYWxtZXI8cGFsbWVyQGRhYmJlbHQuY29tPjsgYW5kcmV3PGFuZHJld0BzaWZp dmUuY29tPjsgInBoaWxpcHAudG9tc2ljaCI8cGhpbGlwcC50b21zaWNoQHZydWxsLmV1PjsgamVm ZnJleWFsYXc8amVmZnJleWFsYXdAZ21haWwuY29tPjsgImNocmlzdG9waC5tdWVsbG5lciI8Y2hy aXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1PjsgamlubWE8amlubWFAbGludXguYWxpYmFiYS5jb20+ OyAiY29vcGVyLnF1Ijxjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20+CuS4u+OAgOmimO+8mlJl OiBSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNw ZWNpZmljIGludHJpbnNpY3MuCsKgCsKgCllvdSBtZWFuIHdoaWNoIHBhdHRlcm4gb3B0aW1pemVk IHNleHQvdnpleHQgcGF0dGVybj8KwqAKwqAKSSBkaWRuJ3Qgc2VlIHRoZWFkdmVjdG9yLXNwZWNp ZmljIGV4dGVuc2lvbiBwYXR0ZXJucy4gQ291bGQgeW91IHNob3cgbWU/CsKgCsKgCsKgCsKgCmp1 emhlLnpob25nQHJpdmFpLmFpCsKgCsKgCuWPkeS7tuS6uu+8msKgam9zaHVhCuWPkemAgeaXtumX tO+8msKgMjAyNC0wMS0xMcKgMTc6MTQK5pS25Lu25Lq677yawqBqdXpoZS56aG9uZ0ByaXZhaS5h aTsgZ2NjLXBhdGNoZXMK5oqE6YCB77yawqBKaW0gV2lsc29uOyBwYWxtZXI7IGFuZHJldzsgcGhp bGlwcC50b21zaWNoOyBqZWZmcmV5YWxhdzsgY2hyaXN0b3BoLm11ZWxsbmVyOyBqaW5tYTsgY29v cGVyLnF1CuS4u+mimO+8msKgUmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9y IHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgrCoApUbyBiZSBzcGVjaWZpYyzCoGlu IENTRSBwYXNzLCB0aGUgaW5pdGlhbCBwYXR0ZXJuIHdpbGwgYmUgb3B0aW1pemVkIGludG8gdGhl IHNleHQvemV4dCBwYXR0ZXJuLgrCoArCoArCoArCoAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K5Y+R5Lu25Lq677yaam9z aHVhIDxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJhYmEuY29tPgrlj5HpgIHml7bpl7TvvJoyMDI0 5bm0MeaciDEx5pelKOaYn+acn+WbmykgMTc6MTEK5pS25Lu25Lq677yaImp1emhlLnpob25nQHJp dmFpLmFpIjxqdXpoZS56aG9uZ0ByaXZhaS5haT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBhdGNoZXNA Z2NjLmdudS5vcmc+CuaKhOOAgOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NAZ21haWwu Y29tPjsgcGFsbWVyPHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lmaXZlLmNv bT47ICJwaGlsaXBwLnRvbXNpY2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGplZmZyZXlh bGF3PGplZmZyZXlhbGF3QGdtYWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNocmlzdG9w aC5tdWVsbG5lckB2cnVsbC5ldT47IGppbm1hPGppbm1hQGxpbnV4LmFsaWJhYmEuY29tPjsgImNv b3Blci5xdSI8Y29vcGVyLnF1QGxpbnV4LmFsaWJhYmEuY29tPgrkuLvjgIDpopjvvJpSZe+8mltQ QVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGlu dHJpbnNpY3MuCsKgCsKgCnNleHQvemV4dCB3aWxsIGJlIGdlbmVyYXRlZCBpbiBPMiBldmVuIHdp dGhvdXQgY29ycmVzcG9uZGluZyBpbnRyaW5zaWNzLgrCoArCoArCoArCoArCoArCoAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0K5Y+R5Lu25Lq677yaanV6aGUuemhvbmdAcml2YWkuYWkgPGp1emhlLnpob25nQHJpdmFpLmFp Pgrlj5HpgIHml7bpl7TvvJoyMDI05bm0MeaciDEx5pelKOaYn+acn+WbmykgMTc6MDcK5pS25Lu2 5Lq677yaImNvb3Blci5qb3NodWEiPGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyAi Z2NjLXBhdGNoZXMiPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPgrmioQg6YCB77yaSmltIFdpbHNv bjxqaW0ud2lsc29uLmdjY0BnbWFpbC5jb20+OyBwYWxtZXI8cGFsbWVyQGRhYmJlbHQuY29tPjsg YW5kcmV3PGFuZHJld0BzaWZpdmUuY29tPjsgInBoaWxpcHAudG9tc2ljaCI8cGhpbGlwcC50b21z aWNoQHZydWxsLmV1PjsgamVmZnJleWFsYXc8amVmZnJleWFsYXdAZ21haWwuY29tPjsgImNocmlz dG9waC5tdWVsbG5lciI8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1PjsgImNvb3Blci5qb3No dWEiPGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyBqaW5tYTxqaW5tYUBsaW51eC5h bGliYWJhLmNvbT47ICJjb29wZXIucXUiPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4K5Li7 IOmimO+8mlJlOiBbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rv ci1zcGVjaWZpYyBpbnRyaW5zaWNzLgrCoArCoAplbnVtIHJlcXVpcmVkX2V4dAp7CiDCoCBWRUNU T1JfRVhULCDCoCAvKiBWZWN0b3IgZXh0ZW5zaW9uICovCivCoCBYVEhFQURWRUNUT1JfRVhULCDC oCAvKiBYVGhlYWRWZWN0b3IgZXh0ZW5zaW9uICovCiDCoCBaVkJCX0VYVCzCoCDCoCAvKiBDcnl0 byB2ZWN0b3IgWnZiYiBzdWItZXh0ICovCiDCoCBaVkJCX09SX1pWS0JfRVhULCAvKiBDcnl0byB2 ZWN0b3IgWnZiYiBvciB6dmtiIHN1Yi1leHQgKi8KIMKgIFpWQkNfRVhULMKgIMKgIC8qIENyeXB0 byB2ZWN0b3IgWnZiYyBzdWItZXh0ICovCsKgCsKgCsKgCkFkZCB0aGVhZHZlY3RvciB0byB0aGUg ZW5kIG9mIHRoZSBlbnVtLgrCoArCoAorwqAgwqAgwqAgY2FzZSBYVEhFQURWRUNUT1JfRVhUOgor IHJldHVybiBUQVJHRVRfWFRIRUFEVkVDVE9SOwrCoArCoArCoApTYW1lLgrCoArCoAorwqAgIiYm IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9ERT5tb2RlKQorIMKgICYmIHJlZ2lz dGVyX29wZXJhbmQgKG9wZXJhbmRzWzNdLCA8TU9ERT5tb2RlKQorIMKgICYmIHNhdGlzZmllc19j b25zdHJhaW50X3Z1IChvcGVyYW5kc1syXSkKKyDCoCAmJiBJTlRWQUwgKG9wZXJhbmRzWzddKSA9 PSByaXNjdl92ZWN0b3I6OlZMTUFYIgrCoArCoArCoApZb3UgY2FuIHVzZSB3aG9sZV9yZWdfdG9f cmVnX21vdmVfcArCoArCoArCoArCoApCdHcsIEkgcmV2aWV3IGFnYWluIDogwqAgUklTQy1WOiBI YW5kbGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBYVGhlYWR2ZWN0b3IgYW5kIFZlY3RvcgrCoArCoArC oCDCoCAoYW55X2V4dGVuZDpWV0VYVEnCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDo8Vl9ET1VCTEVf VFJVTkM+IDMgInJlZ2lzdGVyX29wZXJhbmQiIMKgICJXMjEsVzIxLFcyMSxXMjEsVzQyLFc0MixX NDIsVzQyLFc4NCxXODQsVzg0LFc4NCwgwqAgdnIsIMKgIHZyIikpwqAgwqAgKG1hdGNoX29wZXJh bmQ6VldFWFRJIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIiDCoCDCoCDCoCDCoCDCoCAiIHZ1LCB2 dSzCoCAwLMKgIDAsIHZ1LCB2dSzCoCAwLMKgIDAsIHZ1LCB2dSzCoCAwLMKgIDAsIMKgIHZ1LMKg IMKgIDAiKSkpXS3CoCAiVEFSR0VUX1ZFQ1RPUiIrwqAgIlRBUkdFVF9WRUNUT1IgJiYgIVRBUkdF VF9YVEhFQURWRUNUT1IiIMKgICJ2PHN6PmV4dC52ZjJcdCUwLCUzJXAxIiDCoCBbKHNldF9hdHRy ICJ0eXBlIiAidmV4dCIpwqAgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IilAQCAtMzcxMyw3 ICszNzQ0LDcgQEDCoCDCoCAoYW55X2V4dGVuZDpWUUVYVEnCoCDCoCDCoCAobWF0Y2hfb3BlcmFu ZDo8Vl9RVUFEX1RSVU5DPiAzICJyZWdpc3Rlcl9vcGVyYW5kIiDCoCAiVzQzLFc0MyxXNDMsVzQz LFc4NixXODYsVzg2LFc4NiwgwqAgdnIsIMKgIHZyIikpwqAgwqAgKG1hdGNoX29wZXJhbmQ6VlFF WFRJIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIiDCoCDCoCDCoCDCoCAiIHZ1LCB2dSzCoCAwLMKg IDAsIHZ1LCB2dSzCoCAwLMKgIDAsIMKgIHZ1LMKgIMKgIDAiKSkpXS3CoCAiVEFSR0VUX1ZFQ1RP UiIrwqAgIlRBUkdFVF9WRUNUT1IgJiYgIVRBUkdFVF9YVEhFQURWRUNUT1IiIMKgICJ2PHN6PmV4 dC52ZjRcdCUwLCUzJXAxIiDCoCBbKHNldF9hdHRyICJ0eXBlIiAidmV4dCIpwqAgwqAgKHNldF9h dHRyICJtb2RlIiAiPE1PREU+IilAQCAtMzczNCw3ICszNzY1LDcgQEDCoCDCoCAoYW55X2V4dGVu ZDpWT0VYVEnCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDo8Vl9PQ1RfVFJVTkM+IDMgInJlZ2lzdGVy X29wZXJhbmQiIMKgICJXODcsVzg3LFc4NyxXODcsIMKgIHZyLCDCoCB2ciIpKcKgIMKgIChtYXRj aF9vcGVyYW5kOlZPRVhUSSAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCLCoCDCoCDCoCDCoCAiIHZ1 LCB2dSzCoCAwLMKgIDAsIMKgIHZ1LMKgIMKgIDAiKSkpXS3CoCAiVEFSR0VUX1ZFQ1RPUiIrwqAg IlRBUkdFVF9WRUNUT1IgJiYgIVRBUkdFVF9YVEhFQURWRUNUT1IiIMKgICJ2PHN6PmV4dC52Zjhc dCUwLCUzJXAxIiDCoCBbKHNldF9hdHRyICJ0eXBlIiAidmV4dCIpwqAgwqAgKHNldF9hdHRyICJt b2RlIiAiPE1PREU+IikKV2h5IGRvIHlvdSBhZGQgdGhlc2UgIVRBUkdFUlRfWFRIRUFEVkVDUlRP UiA/CsKgCsKgCmp1emhlLnpob25nQHJpdmFpLmFpCsKgCiAKRnJvbTogSnVuIFNoYSAoSm9zaHVh KQpEYXRlOiAyMDI0LTAxLTExIDE2OjQ2ClRvOiBnY2MtcGF0Y2hlcwpDQzogamltLndpbHNvbi5n Y2M7IHBhbG1lcjsgYW5kcmV3OyBwaGlsaXBwLnRvbXNpY2g7IGplZmZyZXlhbGF3OyBjaHJpc3Rv cGgubXVlbGxuZXI7IGp1emhlLnpob25nOyBKdW4gU2hhIChKb3NodWEpOyBKaW4gTWE7IFhpYW5t aWFvIFF1ClN1YmplY3Q6IFtQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFk dmVjdG9yLXNwZWNpZmljIGludHJpbnNpY3MuCsKgClRoaXMgcGF0Y2ggb25seSBpbnZvbHZlcyB0 aGUgZ2VuZXJhdGlvbiBvZiB4dGhlYWR2ZWN0b3IKc3BlY2lhbCBsb2FkL3N0b3JlIGluc3RydWN0 aW9ucyBhbmQgdmV4dCBpbnN0cnVjdGlvbnMuCiAKZ2NjL0NoYW5nZUxvZzoKIAogKiBjb25maWcv cmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCiAoY2xhc3MgdGhfbG9hZHN0b3Jl X3dpZHRoKTogRGVmaW5lIG5ldyBidWlsdGluIGJhc2VzLgogKGNsYXNzIHRoX2V4dHJhY3QpOiBE ZWZpbmUgbmV3IGJ1aWx0aW4gYmFzZXMuCiAoQkFTRSk6IERlZmluZSBuZXcgYnVpbHRpbiBiYXNl cy4KICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oOgogRGVmaW5l IG5ldyBidWlsdGluIGNsYXNzLgogKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5z LXNoYXBlcy5jYwogKHN0cnVjdCB0aF9sb2Fkc3RvcmVfd2lkdGhfZGVmKTogRGVmaW5lIG5ldyBi dWlsdGluIHNoYXBlcy4KIChzdHJ1Y3QgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGhfZGVmKToK IERlZmluZSBuZXcgYnVpbHRpbiBzaGFwZXMuCiAoc3RydWN0IHRoX2V4dHJhY3RfZGVmKTogRGVm aW5lIG5ldyBidWlsdGluIHNoYXBlcy4KIChTSEFQRSk6IERlZmluZSBuZXcgYnVpbHRpbiBzaGFw ZXMuCiAqIGNvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmg6CiBEZWZp bmUgbmV3IGJ1aWx0aW4gc2hhcGVzLgogKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0 aW5zLmNjIChERUZfUlZWX0ZVTkNUSU9OKToKICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1i dWlsdGlucy5oIChlbnVtIHJlcXVpcmVkX2V4dCk6CiAoc3RydWN0IGZ1bmN0aW9uX2dyb3VwX2lu Zm8pOgogKiBjb25maWcvcmlzY3YvdC1yaXNjdjogQWRkIHRoZWFkLXZlY3Rvci1idWlsdGlucy1m dW5jdGlvbnMuZGVmCiAqIGNvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKIChAcHJlZF9tb3Zf d2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4pOiBBZGQgbmV3IHBhdHRlcm5zLgogKCpwcmVkX21v dl93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX3N0b3JlX3dp ZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+KTogTGlrZXdpc2UuCiAoQHByZWRfc3RyaWRlZF9sb2Fk X3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+KTogTGlrZXdpc2UuCiAoQHByZWRfc3RyaWRlZF9z dG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX2luZGV4 ZWRfbG9hZF93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX2lu ZGV4ZWRfPHZsbWVtX29yZGVyX2F0dHI+c3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4p OgogKEBwcmVkX3RoX2V4dHJhY3Q8bW9kZT4pOiBMaWtld2lzZS4KICgqcHJlZF90aF9leHRyYWN0 PG1vZGU+KTogTGlrZXdpc2UuCiAqIGNvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMt ZnVuY3Rpb25zLmRlZjogTmV3IGZpbGUuCiAKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CiAKICog Z2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYi12c2IuYzogTmV3IHRlc3QuCiAq IGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jOiBOZXcgdGVzdC4K ICogZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaC12c2guYzogTmV3IHRlc3Qu CiAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZzaC5jOiBOZXcgdGVz dC4KICogZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsdy12c3cuYzogTmV3IHRl c3QuCiAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHd1LXZzdy5jOiBOZXcg dGVzdC4KIApDby1hdXRob3JlZC1ieTogSmluIE1hIDxqaW5tYUBsaW51eC5hbGliYWJhLmNvbT4K Q28tYXV0aG9yZWQtYnk6IFhpYW5taWFvIFF1IDxjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20+ CkNvLWF1dGhvcmVkLWJ5OiBDaHJpc3RvcGggTcO8bGxuZXIgPGNocmlzdG9waC5tdWVsbG5lckB2 cnVsbC5ldT4KLS0tCiAuLi4vcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjwqAg wqAgwqAgfCAxMzkgKysrKysrKysrKwogLi4uL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1i YXNlcy5oIMKgIMKgIMKgIHzCoCAzMSArKysKIC4uLi9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMtc2hhcGVzLmNjIMKgIMKgIHwgMTYwICsrKysrKysrKysrCiAuLi4vcmlzY3YvcmlzY3YtdmVj dG9yLWJ1aWx0aW5zLXNoYXBlcy5owqAgwqAgwqAgfCDCoCAzICsKIGdjYy9jb25maWcvcmlzY3Yv cmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNjIMKgIMKgIHzCoCA3MCArKysrKwogZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuaMKgIMKgIMKgIHwgwqAgMyArCiBnY2MvY29uZmln L3Jpc2N2L3QtcmlzY3bCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIDEgKwog Li4uL3Jpc2N2L3RoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmIHzCoCAzOSArKysK IGdjYy9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLm1kwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCAy NTMgKysrKysrKysrKysrKysrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGItdnNi LmPCoCDCoCDCoCDCoCDCoCB8wqAgNjggKysrKysKIC4uLi9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3ZsYnUtdnNiLmMgwqAgwqAgwqAgwqAgfMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVh ZHZlY3Rvci92bGgtdnNoLmPCoCDCoCDCoCDCoCDCoCB8wqAgNjggKysrKysKIC4uLi9yaXNjdi9y dnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMgwqAgwqAgwqAgwqAgfMKgIDY4ICsrKysrCiAuLi4v cmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmPCoCDCoCDCoCDCoCDCoCB8wqAgNjggKysr KysKIC4uLi9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmMgwqAgwqAgwqAgwqAgfMKg IDY4ICsrKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMTA3IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBnY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlv bnMuZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVj dG9yL3ZsaC12c2guYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0 aGVhZHZlY3Rvci92bHd1LXZzdy5jCiAKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0 b3ItYnVpbHRpbnMtYmFzZXMuY2MKaW5kZXggNDZmMWExZGEzM2UuLjNlYmE3OTQzNzU3IDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jYwor KysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jYwpAQCAt MjEyNSw2ICsyMTI1LDgzIEBAIHB1YmxpYzoKIMKgIH0KIH07CiAKKy8qIEltcGxlbWVudHMKKyAq IHRoLnZsKGIvaC93KVt1XS52L3RoLnZzKGIvaC93KVt1XS52L3RoLnZscyhiL2gvdylbdV0udi90 aC52c3MoYi9oL3cpW3VdLnYvCisgKiB0aC52bHgoYi9oL3cpW3VdLnYvdGgudnNbdV14KGIvaC93 KS52CisgKiBjb2RlZ2VuLsKgICovCit0ZW1wbGF0ZTxib29sIFNUT1JFX1AsIGxzdF90eXBlIExT VF9UWVBFLCBpbnQgVU5TUEVDPgorY2xhc3MgdGhfbG9hZHN0b3JlX3dpZHRoIDogcHVibGljIGZ1 bmN0aW9uX2Jhc2UKK3sKK3B1YmxpYzoKK8KgIGJvb2wgYXBwbHlfdGFpbF9wb2xpY3lfcCAoKSBj b25zdCBvdmVycmlkZSB7IHJldHVybiAhU1RPUkVfUDsgfQorwqAgYm9vbCBhcHBseV9tYXNrX3Bv bGljeV9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFTVE9SRV9QOyB9CisKK8KgIHVuc2ln bmVkIGludCBjYWxsX3Byb3BlcnRpZXMgKGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNlICYpIGNvbnN0 IG92ZXJyaWRlCivCoCB7CivCoCDCoCBpZiAoU1RPUkVfUCkKK8KgIMKgIMKgIHJldHVybiBDUF9X UklURV9NRU1PUlk7CivCoCDCoCBlbHNlCivCoCDCoCDCoCByZXR1cm4gQ1BfUkVBRF9NRU1PUlk7 CivCoCB9CisKK8KgIGJvb2wgY2FuX2JlX292ZXJsb2FkZWRfcCAoZW51bSBwcmVkaWNhdGlvbl90 eXBlX2luZGV4IHByZWQpIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoCDCoCBpZiAoU1RPUkVfUCB8 fCBMU1RfVFlQRSA9PSBMU1RfSU5ERVhFRCkKK8KgIMKgIMKgIHJldHVybiB0cnVlOworwqAgwqAg cmV0dXJuIHByZWQgIT0gUFJFRF9UWVBFX25vbmU7CivCoCB9CisKK8KgIHJ0eCBleHBhbmQgKGZ1 bmN0aW9uX2V4cGFuZGVyICZlKSBjb25zdCBvdmVycmlkZQorwqAgeworwqAgwqAgZ2NjX2Fzc2Vy dCAoVEFSR0VUX1hUSEVBRFZFQ1RPUik7CivCoCDCoCBpZiAoTFNUX1RZUEUgPT0gTFNUX0lOREVY RUQpCivCoCDCoCDCoCB7CisgaWYgKFNUT1JFX1ApCisgwqAgcmV0dXJuIGUudXNlX2V4YWN0X2lu c24gKAorIMKgIMKgIGNvZGVfZm9yX3ByZWRfaW5kZXhlZF9zdG9yZV93aWR0aCAoVU5TUEVDLCBV TlNQRUMsCivCoCDCoCDCoCDCoCDCoCDCoCBlLnZlY3Rvcl9tb2RlICgpKSk7CisgZWxzZQorIMKg IHJldHVybiBlLnVzZV9leGFjdF9pbnNuICgKKyDCoCDCoCBjb2RlX2Zvcl9wcmVkX2luZGV4ZWRf bG9hZF93aWR0aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7CivCoCDCoCDCoCB9CivCoCDC oCBlbHNlIGlmIChMU1RfVFlQRSA9PSBMU1RfU1RSSURFRCkKK8KgIMKgIMKgIHsKKyBpZiAoU1RP UkVfUCkKKyDCoCByZXR1cm4gZS51c2VfY29udGlndW91c19zdG9yZV9pbnNuICgKKyDCoCDCoCBj b2RlX2Zvcl9wcmVkX3N0cmlkZWRfc3RvcmVfd2lkdGggKFVOU1BFQywgZS52ZWN0b3JfbW9kZSAo KSkpOworIGVsc2UKKyDCoCByZXR1cm4gZS51c2VfY29udGlndW91c19sb2FkX2luc24gKAorIMKg IMKgIGNvZGVfZm9yX3ByZWRfc3RyaWRlZF9sb2FkX3dpZHRoIChVTlNQRUMsIGUudmVjdG9yX21v ZGUgKCkpKTsKK8KgIMKgIMKgIH0KK8KgIMKgIGVsc2UKK8KgIMKgIMKgIHsKKyBpZiAoU1RPUkVf UCkKKyDCoCByZXR1cm4gZS51c2VfY29udGlndW91c19zdG9yZV9pbnNuICgKKyDCoCDCoCBjb2Rl X2Zvcl9wcmVkX3N0b3JlX3dpZHRoIChVTlNQRUMsIGUudmVjdG9yX21vZGUgKCkpKTsKKyBlbHNl CisgwqAgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfbG9hZF9pbnNuICgKKyDCoCDCoCBjb2RlX2Zv cl9wcmVkX21vdl93aWR0aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7CivCoCDCoCDCoCB9 CivCoCB9Cit9OworCisvKiBJbXBsZW1lbnRzIHZleHQueC52LsKgICovCitjbGFzcyB0aF9leHRy YWN0IDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKK3sKK3B1YmxpYzoKK8KgIGJvb2wgYXBwbHlfdmxf cCAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorwqAgYm9vbCBhcHBseV90YWls X3BvbGljeV9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CivCoCBib29sIGFw cGx5X21hc2tfcG9saWN5X3AgKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KK8Kg IGJvb2wgdXNlX21hc2tfcHJlZGljYXRpb25fcCAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm YWxzZTsgfQorwqAgYm9vbCBoYXNfbWVyZ2Vfb3BlcmFuZF9wICgpIGNvbnN0IG92ZXJyaWRlIHsg cmV0dXJuIGZhbHNlOyB9CisKK8KgIHJ0eCBleHBhbmQgKGZ1bmN0aW9uX2V4cGFuZGVyICZlKSBj b25zdCBvdmVycmlkZQorwqAgeworwqAgwqAgZ2NjX2Fzc2VydCAoVEFSR0VUX1hUSEVBRFZFQ1RP Uik7CivCoCDCoCByZXR1cm4gZS51c2VfZXhhY3RfaW5zbiAoY29kZV9mb3JfcHJlZF90aF9leHRy YWN0IChlLnZlY3Rvcl9tb2RlICgpKSk7CivCoCB9Cit9OworCiAvKiBCZWxvdyBpbXBsZW1lbnRz IGFyZSB2ZWN0b3IgY3J5cHRvICovCiAvKiBJbXBsZW1lbnRzIHZhbmRuLlt2dix2eF0gKi8KIGNs YXNzIHZhbmRuIDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKQEAgLTI1ODcsNiArMjY2NCwzNyBAQCBz dGF0aWMgQ09OU1RFWFBSIGNvbnN0IHNlZ19pbmRleGVkX2xvYWQ8VU5TUEVDX09SREVSRUQ+IHZs b3hzZWdfb2JqOwogc3RhdGljIENPTlNURVhQUiBjb25zdCBzZWdfaW5kZXhlZF9zdG9yZTxVTlNQ RUNfVU5PUkRFUkVEPiB2c3V4c2VnX29iajsKIHN0YXRpYyBDT05TVEVYUFIgY29uc3Qgc2VnX2lu ZGV4ZWRfc3RvcmU8VU5TUEVDX09SREVSRUQ+IHZzb3hzZWdfb2JqOwogc3RhdGljIENPTlNURVhQ UiBjb25zdCB2bHNlZ2ZmIHZsc2VnZmZfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9s b2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMQj4gdmxi X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBM U1RfVU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTEJVPiB2bGJ1X29iajsKK3N0YXRpYyBDT05TVEVY UFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5JVF9TVFJJREUsIFVOU1BF Q19USF9WTEg+IHZsaF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93 aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxIVT4gdmxodV9vYmo7Citz dGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRf U1RSSURFLCBVTlNQRUNfVEhfVkxXPiB2bHdfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0 aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMV1U+ IHZsd3Vfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1 ZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxCPiB2c2Jfb2JqOworc3RhdGljIENPTlNU RVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQ RUNfVEhfVkxIPiB2c2hfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8dHJ1ZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxXPiB2c3dfb2JqOworc3Rh dGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9TVFJJREVE LCBVTlNQRUNfVEhfVkxTQj4gdmxzYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xv YWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNCVT4gdmxzYnVf b2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExT VF9TVFJJREVELCBVTlNQRUNfVEhfVkxTSD4gdmxzaF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNI VT4gdmxzaHVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8 ZmFsc2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTVz4gdmxzd19vYmo7CitzdGF0aWMgQ09O U1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1NUUklERUQsIFVOU1BF Q19USF9WTFNXVT4gdmxzd3Vfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3Rv cmVfd2lkdGg8dHJ1ZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNCPiB2c3NiX29iajsKK3N0 YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9TVFJJREVE LCBVTlNQRUNfVEhfVkxTSD4gdnNzaF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xv YWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU1c+IHZzc3dfb2Jq Oworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9J TkRFWEVELCBVTlNQRUNfVEhfVkxYQj4gdmx4Yl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0 IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhCVT4g dmx4YnVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFs c2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYSD4gdmx4aF9vYmo7CitzdGF0aWMgQ09OU1RF WFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19U SF9WTFhIVT4gdmx4aHVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYVz4gdmx4d19vYmo7CitzdGF0 aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX0lOREVYRUQs IFVOU1BFQ19USF9WTFhXVT4gdmx4d3Vfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9s b2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhCPiB2c3hiX29i ajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9J TkRFWEVELCBVTlNQRUNfVEhfVkxYSD4gdnN4aF9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0 IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWFc+IHZz eHdfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwg TFNUX0lOREVYRUQsIFVOU1BFQ19USF9WU1VYQj4gdnN1eGJfb2JqOworc3RhdGljIENPTlNURVhQ UiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9W U1VYSD4gdnN1eGhfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WU1VYVz4gdnN1eHdfb2JqOworc3RhdGlj IENPTlNURVhQUiBjb25zdCB0aF9leHRyYWN0IHZleHRfeF92X29iajsKIAogLyogQ3J5cHRvIFZl Y3RvciAqLwogc3RhdGljIENPTlNURVhQUiBjb25zdCB2YW5kbiB2YW5kbl9vYmo7CkBAIC0yODc4 LDYgKzI5ODYsMzcgQEAgQkFTRSAodmxveHNlZykKIEJBU0UgKHZzdXhzZWcpCiBCQVNFICh2c294 c2VnKQogQkFTRSAodmxzZWdmZikKK0JBU0UgKHZsYikKK0JBU0UgKHZsaCkKK0JBU0UgKHZsdykK K0JBU0UgKHZsYnUpCitCQVNFICh2bGh1KQorQkFTRSAodmx3dSkKK0JBU0UgKHZzYikKK0JBU0Ug KHZzaCkKK0JBU0UgKHZzdykKK0JBU0UgKHZsc2IpCitCQVNFICh2bHNoKQorQkFTRSAodmxzdykK K0JBU0UgKHZsc2J1KQorQkFTRSAodmxzaHUpCitCQVNFICh2bHN3dSkKK0JBU0UgKHZzc2IpCitC QVNFICh2c3NoKQorQkFTRSAodnNzdykKK0JBU0UgKHZseGIpCitCQVNFICh2bHhoKQorQkFTRSAo dmx4dykKK0JBU0UgKHZseGJ1KQorQkFTRSAodmx4aHUpCitCQVNFICh2bHh3dSkKK0JBU0UgKHZz eGIpCitCQVNFICh2c3hoKQorQkFTRSAodnN4dykKK0JBU0UgKHZzdXhiKQorQkFTRSAodnN1eGgp CitCQVNFICh2c3V4dykKK0JBU0UgKHZleHRfeF92KQogLyogQ3J5cHRvIHZlY3RvciAqLwogQkFT RSAodmFuZG4pCiBCQVNFICh2YnJldikKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rv ci1idWlsdGlucy1iYXNlcy5oCmluZGV4IDExMjJlMzgwMWE3Li41NjVhMDMxMWQyYiAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaAorKysg Yi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oCkBAIC0yOTks NiArMjk5LDM3IEBAIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bG94c2VnOwog ZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXhzZWc7CiBleHRlcm4gY29uc3Qg ZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNveHNlZzsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2bHNlZ2ZmOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsYjsK K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bGg7CitleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3Qgdmx3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0 IHZsYnU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxodTsKK2V4dGVybiBj b25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHd1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jh c2UgKmNvbnN0IHZzYjsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c2g7Citl eHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN3OworZXh0ZXJuIGNvbnN0IGZ1bmN0 aW9uX2Jhc2UgKmNvbnN0IHZsc2I7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qg dmxzaDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHN3OworZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc2J1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jh c2UgKmNvbnN0IHZsc2h1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc3d1 OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzc2I7CitleHRlcm4gY29uc3Qg ZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNzaDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpj b25zdCB2c3N3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGI7CitleHRl cm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx4aDsKK2V4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCB2bHh3OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZs eGJ1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGh1OworZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseHd1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jh c2UgKmNvbnN0IHZzeGI7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN4aDsK K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3h3OworZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXhiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNv bnN0IHZzdXhoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdXh3OworZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZleHRfeF92OwogLyogQmVsb3cgZnVuY3Rp b25fYmFzZSBhcmUgVmVjdHJvIENyeXB0byovCiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAq Y29uc3QgdmFuZG47CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmJyZXY7CmRp ZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMu Y2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2MKaW5k ZXggMWU0ZjRkNTNkZTYuLjhlOTBiMTdhOTRiIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2MKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjCkBAIC0yMTEsNiArMjExLDE0NiBAQCBzdHJ1 Y3QgaW5kZXhlZF9sb2Fkc3RvcmVfZGVmIDogcHVibGljIGZ1bmN0aW9uX3NoYXBlCiDCoCB9CiB9 OwogCisvKiBBZGQgb25lIGZ1bmN0aW9uIGluc3RhbmNlIGZvciBHUk9VUCwgdXNpbmcgb3BlcmFu ZCBzdWZmaXggYXQgaW5kZXggT0ksCisgwqAgbW9kZSBzdWZmaXggYXQgaW5kZXggUEFJUiAmJiBi aSBhbmQgcHJlZGljYXRpb24gc3VmZml4IGF0IGluZGV4IHByZWRfaWR4LsKgICovCitzdGF0aWMg dm9pZAorYnVpbGRfdGhfbG9hZHN0b3JlIChmdW5jdGlvbl9idWlsZGVyICZiLCBjb25zdCBmdW5j dGlvbl9ncm91cF9pbmZvICZncm91cCwKK8KgIMKgIMKgIHVuc2lnbmVkIGludCBwcmVkX2lkeCwg dW5zaWduZWQgaW50IHZlY190eXBlX2lkeCkKK3sKK8KgIGF1dG9fdmVjPHRyZWUsIDU+IGFyZ3Vt ZW50X3R5cGVzOworwqAgZnVuY3Rpb25faW5zdGFuY2UgZnVuY3Rpb25faW5zdGFuY2UgKGdyb3Vw LmJhc2VfbmFtZSwgKmdyb3VwLmJhc2UsCisgwqAgwqAgwqAgwqAgwqAgKmdyb3VwLnNoYXBlLAor IMKgIMKgIMKgIMKgIMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLAorIMKg IMKgIMKgIMKgIMKgIGdyb3VwLnByZWRzW3ByZWRfaWR4XSwgJmdyb3VwLm9wc19pbmZvcyk7CivC oCB0cmVlIHJldHVybl90eXBlID0gZ3JvdXAub3BzX2luZm9zLnJldC5nZXRfdHJlZV90eXBlICgK K8KgIMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4KTsKK8KgIGIu YWxsb2NhdGVfYXJndW1lbnRfdHlwZXMgKGZ1bmN0aW9uX2luc3RhbmNlLCBhcmd1bWVudF90eXBl cyk7CivCoCBiLmFwcGx5X3ByZWRpY2F0aW9uIChmdW5jdGlvbl9pbnN0YW5jZSwgcmV0dXJuX3R5 cGUsIGFyZ3VtZW50X3R5cGVzKTsKKworwqAgaWYgKFRBUkdFVF9YVEhFQURWRUNUT1IgJiYgIWNo ZWNrX3R5cGUgKHJldHVybl90eXBlLCBhcmd1bWVudF90eXBlcykpCivCoCDCoCByZXR1cm47CisK K8KgIHRyZWUgdHlwZSA9IGJ1aWx0aW5fdHlwZXNbZ3JvdXAub3BzX2luZm9zLnR5cGVzW3ZlY190 eXBlX2lkeF0uaW5kZXhdLnZlY3RvcjsKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwg ImwiKQorwqAgwqAgwqAgJiYgc3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJ1IikKK8KgIMKgIMKg ICYmICFUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKHR5cGUpKSkKK8KgIMKgIHJldHVybjsKKwor wqAgaWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAibCIpCivCoCDCoCDCoCAmJiAhc3Ryc3Ry IChncm91cC5iYXNlX25hbWUsICJ1IikKK8KgIMKgIMKgICYmIFRZUEVfVU5TSUdORUQgKFRSRUVf VFlQRSAodHlwZSkpKQorwqAgwqAgcmV0dXJuOworCivCoCBtYWNoaW5lX21vZGUgbW9kZSA9IFRZ UEVfTU9ERSAodHlwZSk7CivCoCBpbnQgc2V3ID0gR0VUX01PREVfQklUU0laRSAoR0VUX01PREVf SU5ORVIgKG1vZGUpKTsKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgImgiKSAmJiBz ZXcgPT0gOCkKK8KgIMKgIHJldHVybjsKKworwqAgaWYgKHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1l LCAidyIpICYmIChzZXcgPT0gOCB8fCBzZXcgPT0xNikpCivCoCDCoCByZXR1cm47CisKK8KgIGIu YWRkX292ZXJsb2FkZWRfZnVuY3Rpb24gKGZ1bmN0aW9uX2luc3RhbmNlLCAqZ3JvdXAuc2hhcGUp OworwqAgYi5hZGRfdW5pcXVlX2Z1bmN0aW9uIChmdW5jdGlvbl9pbnN0YW5jZSwgKCpncm91cC5z aGFwZSksIHJldHVybl90eXBlLAorwqAgwqAgYXJndW1lbnRfdHlwZXMpOworfQorCisvKiB0aF9s b2Fkc3RvcmVfd2lkdGhfZGVmIGNsYXNzLsKgICovCitzdHJ1Y3QgdGhfbG9hZHN0b3JlX3dpZHRo X2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCit7CisgwqAgdm9pZCBidWlsZCAoZnVuY3Rpb25fYnVp bGRlciAmYiwKKyDCoCDCoCDCoCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29u c3Qgb3ZlcnJpZGUKK8KgIHsKK8KgIMKgIGZvciAodW5zaWduZWQgaW50IHByZWRfaWR4ID0gMDsg Z3JvdXAucHJlZHNbcHJlZF9pZHhdICE9IE5VTV9QUkVEX1RZUEVTOworIMKgIMKgIMKgICsrcHJl ZF9pZHgpCivCoCDCoCDCoCB7CisgZm9yICh1bnNpZ25lZCBpbnQgdmVjX3R5cGVfaWR4ID0gMDsK K8KgIMKgIMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4ICE9IE5V TV9WRUNUT1JfVFlQRVM7CivCoCDCoCDCoCArK3ZlY190eXBlX2lkeCkKKyDCoCB7CisgwqAgwqAg YnVpbGRfdGhfbG9hZHN0b3JlIChiLCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7Cisg wqAgfQorwqAgwqAgwqAgfQorwqAgfQorCivCoCBjaGFyICpnZXRfbmFtZSAoZnVuY3Rpb25fYnVp bGRlciAmYiwgY29uc3QgZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLAorwqAgwqAgYm9vbCBv dmVybG9hZGVkX3ApIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoCDCoCAvKiBSZXR1cm4gbnVsbHB0 ciBpZiBpdCBjYW4gbm90IGJlIG92ZXJsb2FkZWQuwqAgKi8KK8KgIMKgIGlmIChvdmVybG9hZGVk X3AgJiYgIWluc3RhbmNlLmJhc2UtPmNhbl9iZV9vdmVybG9hZGVkX3AgKGluc3RhbmNlLnByZWQp KQorwqAgwqAgwqAgcmV0dXJuIG51bGxwdHI7CisKK8KgIMKgIGIuYXBwZW5kX25hbWUgKCJfX3Jp c2N2X3RoXyIpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAoaW5zdGFuY2UuYmFzZV9uYW1lKTsKKwor wqAgwqAgLyogdm9wX3YgLS0+IHZvcF92Xzx0eXBlPi7CoCAqLworwqAgwqAgaWYgKCFvdmVybG9h ZGVkX3ApCivCoCDCoCDCoCB7CisgLyogdm9wIC0tPiB2b3Bfdi7CoCAqLworIGIuYXBwZW5kX25h bWUgKG9wZXJhbmRfc3VmZml4ZXNbaW5zdGFuY2Uub3BfaW5mby0+b3BdKTsKKyAvKiB2b3BfdiAt LT4gdm9wX3ZfPHR5cGU+LsKgICovCisgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0 YW5jZS50eXBlLmluZGV4XS52ZWN0b3IpOworwqAgwqAgwqAgfQorCivCoCDCoCAvKiBBY2NvcmRp bmcgdG8gcnZ2LWludHJpbnNpYy1kb2MsIGl0IGRvZXMgbm90IGFkZCAiX20iIHN1ZmZpeAorIMKg IMKgIMKgIGZvciB2b3BfbSBDKysgb3ZlcmxvYWRlZCBBUEkuwqAgKi8KK8KgIMKgIGlmIChvdmVy bG9hZGVkX3AgJiYgaW5zdGFuY2UucHJlZCA9PSBQUkVEX1RZUEVfbSkKK8KgIMKgIMKgIHJldHVy biBiLmZpbmlzaF9uYW1lICgpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAocHJlZGljYXRpb25fc3Vm Zml4ZXNbaW5zdGFuY2UucHJlZF0pOworwqAgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivC oCB9Cit9OworCisKKy8qIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoX2RlZiBjbGFzcy7CoCAq Lworc3RydWN0IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoX2RlZiA6IHB1YmxpYyBmdW5jdGlv bl9zaGFwZQoreworwqAgdm9pZCBidWlsZCAoZnVuY3Rpb25fYnVpbGRlciAmYiwKKyDCoCDCoCDC oCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsK K8KgIMKgIGZvciAodW5zaWduZWQgaW50IHByZWRfaWR4ID0gMDsgZ3JvdXAucHJlZHNbcHJlZF9p ZHhdICE9IE5VTV9QUkVEX1RZUEVTOworwqAgKytwcmVkX2lkeCkKK8KgIMKgIMKgIHsKKyBmb3Ig KHVuc2lnbmVkIGludCB2ZWNfdHlwZV9pZHggPSAwOworwqAgwqAgwqAgZ3JvdXAub3BzX2luZm9z LnR5cGVzW3ZlY190eXBlX2lkeF0uaW5kZXggIT0gTlVNX1ZFQ1RPUl9UWVBFUzsKK8KgIMKgIMKg ICsrdmVjX3R5cGVfaWR4KQorIMKgIHsKK8KgIMKgIHRyZWUgaW5kZXhfdHlwZSA9IGdyb3VwLm9w c19pbmZvcy5hcmdzWzFdLmdldF90cmVlX3R5cGUgKAorIMKgIMKgIMKgIGdyb3VwLm9wc19pbmZv cy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4KTsKK8KgIMKgIGlmICghaW5kZXhfdHlwZSkKKyDC oCDCoCDCoCBjb250aW51ZTsKK8KgIMKgIGJ1aWxkX3RoX2xvYWRzdG9yZSAoYiwgZ3JvdXAsIHBy ZWRfaWR4LCB2ZWNfdHlwZV9pZHgpOworIMKgIH0KK8KgIMKgIMKgIH0KK8KgIH0KKworwqAgY2hh ciAqZ2V0X25hbWUgKGZ1bmN0aW9uX2J1aWxkZXIgJmIsIGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNl ICZpbnN0YW5jZSwKK8KgIMKgIGJvb2wgb3ZlcmxvYWRlZF9wKSBjb25zdCBvdmVycmlkZQorwqAg eworCivCoCDCoCAvKiBSZXR1cm4gbnVsbHB0ciBpZiBpdCBjYW4gbm90IGJlIG92ZXJsb2FkZWQu wqAgKi8KK8KgIMKgIGlmIChvdmVybG9hZGVkX3AgJiYgIWluc3RhbmNlLmJhc2UtPmNhbl9iZV9v dmVybG9hZGVkX3AgKGluc3RhbmNlLnByZWQpKQorwqAgwqAgwqAgcmV0dXJuIG51bGxwdHI7CisK K8KgIMKgIGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2X3RoXyIpOworwqAgwqAgYi5hcHBlbmRfbmFt ZSAoaW5zdGFuY2UuYmFzZV9uYW1lKTsKK8KgIMKgIC8qIHZvcF92IC0tPiB2b3Bfdl88dHlwZT4u wqAgKi8KK8KgIMKgIGlmICghb3ZlcmxvYWRlZF9wKQorwqAgwqAgwqAgeworIC8qIHZvcCAtLT4g dm9wX3YuwqAgKi8KKyBiLmFwcGVuZF9uYW1lIChvcGVyYW5kX3N1ZmZpeGVzW2luc3RhbmNlLm9w X2luZm8tPm9wXSk7CisgLyogdm9wX3YgLS0+IHZvcF92Xzx0eXBlPi7CoCAqLworIGIuYXBwZW5k X25hbWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0udmVjdG9yKTsKK8KgIMKg IMKgIH0KKworwqAgwqAgLyogQWNjb3JkaW5nIHRvIHJ2di1pbnRyaW5zaWMtZG9jLCBpdCBkb2Vz IG5vdCBhZGQgIl9tIiBzdWZmaXgKKyDCoCDCoCDCoCBmb3Igdm9wX20gQysrIG92ZXJsb2FkZWQg QVBJLsKgICovCivCoCDCoCBpZiAob3ZlcmxvYWRlZF9wICYmIGluc3RhbmNlLnByZWQgPT0gUFJF RF9UWVBFX20pCivCoCDCoCDCoCByZXR1cm4gYi5maW5pc2hfbmFtZSAoKTsKK8KgIMKgIGIuYXBw ZW5kX25hbWUgKHByZWRpY2F0aW9uX3N1ZmZpeGVzW2luc3RhbmNlLnByZWRdKTsKK8KgIMKgIHJl dHVybiBiLmZpbmlzaF9uYW1lICgpOworwqAgfQorfTsKKwogLyogYWx1X2RlZiBjbGFzcy7CoCAq Lwogc3RydWN0IGFsdV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogewpAQCAtNjMyLDYgKzc3Miwy MyBAQCBzdHJ1Y3QgcmVkdWNfYWx1X2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCiDCoCB9CiB9Owog CisvKiB0aF9leHRyYWN0X2RlZiBjbGFzcy7CoCAqLworc3RydWN0IHRoX2V4dHJhY3RfZGVmIDog cHVibGljIGJ1aWxkX2Jhc2UKK3sKK8KgIGNoYXIgKmdldF9uYW1lIChmdW5jdGlvbl9idWlsZGVy ICZiLCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCivCoCDCoCDCoCBib29sIG92 ZXJsb2FkZWRfcCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgIMKgIGIuYXBwZW5kX25hbWUgKCJf X3Jpc2N2X3RoXyIpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAoaW5zdGFuY2UuYmFzZV9uYW1lKTsK KworwqAgwqAgaWYgKG92ZXJsb2FkZWRfcCkKK8KgIMKgIMKgIHJldHVybiBiLmZpbmlzaF9uYW1l ICgpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5jZS50eXBlLmlu ZGV4XS52ZWN0b3IpOworwqAgwqAgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5j ZS50eXBlLmluZGV4XS5zY2FsYXIpOworwqAgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivC oCB9Cit9OworCiAvKiBzY2FsYXJfbW92ZV9kZWYgY2xhc3MuwqAgKi8KIHN0cnVjdCBzY2FsYXJf bW92ZV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogewpAQCAtMTA5NCw2ICsxMjUxLDggQEAgU0hB UEUodnNldHZsLCB2c2V0dmwpCiBTSEFQRSh2c2V0dmwsIHZzZXR2bG1heCkKIFNIQVBFKGxvYWRz dG9yZSwgbG9hZHN0b3JlKQogU0hBUEUoaW5kZXhlZF9sb2Fkc3RvcmUsIGluZGV4ZWRfbG9hZHN0 b3JlKQorU0hBUEUodGhfbG9hZHN0b3JlX3dpZHRoLCB0aF9sb2Fkc3RvcmVfd2lkdGgpCitTSEFQ RSh0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgp CiBTSEFQRShhbHUsIGFsdSkKIFNIQVBFKGFsdV9mcm0sIGFsdV9mcm0pCiBTSEFQRSh3aWRlbl9h bHUsIHdpZGVuX2FsdSkKQEAgLTExMDYsNiArMTI2NSw3IEBAIFNIQVBFKG1vdmUsIG1vdmUpCiBT SEFQRShtYXNrX2FsdSwgbWFza19hbHUpCiBTSEFQRShyZWR1Y19hbHUsIHJlZHVjX2FsdSkKIFNI QVBFKHJlZHVjX2FsdV9mcm0sIHJlZHVjX2FsdV9mcm0pCitTSEFQRSh0aF9leHRyYWN0LCB0aF9l eHRyYWN0KQogU0hBUEUoc2NhbGFyX21vdmUsIHNjYWxhcl9tb3ZlKQogU0hBUEUodnVuZGVmaW5l ZCwgdnVuZGVmaW5lZCkKIFNIQVBFKG1pc2MsIG1pc2MpCmRpZmYgLS1naXQgYS9nY2MvY29uZmln L3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuaCBiL2djYy9jb25maWcvcmlzY3Yv cmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oCmluZGV4IGFjMmEyOGNlMDE3Li5hNzYyNGQw ZmFiZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMt c2hhcGVzLmgKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hh cGVzLmgKQEAgLTI4LDYgKzI4LDggQEAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25z dCB2c2V0dmw7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZzZXR2bG1heDsK IGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgbG9hZHN0b3JlOwogZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBpbmRleGVkX2xvYWRzdG9yZTsKK2V4dGVybiBjb25z dCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoOworZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aDsKIGV4dGVy biBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgYWx1OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X3NoYXBlICpjb25zdCBhbHVfZnJtOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25z dCB3aWRlbl9hbHU7CkBAIC00MSw2ICs0Myw3IEBAIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFw ZSAqY29uc3QgbWFza19hbHU7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHJl ZHVjX2FsdTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgcmVkdWNfYWx1X2Zy bTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgc2NhbGFyX21vdmU7CitleHRl cm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHRoX2V4dHJhY3Q7CiBleHRlcm4gY29uc3Qg ZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZ1bmRlZmluZWQ7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IG1pc2M7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHZz ZXQ7CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5j YyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNjCmluZGV4IDI1ZTBi NmU1NmRlLi40NGI5ZmVjMTg5OCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12 ZWN0b3ItYnVpbHRpbnMuY2MKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVp bHRpbnMuY2MKQEAgLTkzNCw2ICs5MzQsMzIgQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZf YXJnX3R5cGVfaW5mbyBleHRfdmNyZWF0ZV9hcmdzW10KIMKgID0ge3J2dl9hcmdfdHlwZV9pbmZv IChSVlZfQkFTRV92ZWN0b3IpLArCoCDCoCDCoCBydnZfYXJnX3R5cGVfaW5mb19lbmR9OwogCisv KiBBIGxpc3Qgb2YgYXJncyBmb3IgdmVjdG9yX3R5cGUgZnVuYyAoY29uc3Qgc2NhbGFyX3R5cGUg Kiwgc2l6ZV90KQorICogZnVuY3Rpb24uwqAgKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2 X2FyZ190eXBlX2luZm8gc2NhbGFyX2NvbnN0X3B0cl9zaXplX2FyZ3NbXQorwqAgPSB7cnZ2X2Fy Z190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9jb25zdF9wdHIpLAorIMKgIMKgIHJ2dl9hcmdf dHlwZV9pbmZvIChSVlZfQkFTRV9zaXplKSwgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKKworLyog QSBsaXN0IG9mIGFyZ3MgZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKGNvbnN0IHNjYWxhcl90eXBlICos IGVldzhfaW5kZXhfdHlwZSkKKyAqIGZ1bmN0aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHJ2dl9hcmdfdHlwZV9pbmZvIHNjYWxhcl9jb25zdF9wdHJfaW5kZXhfYXJnc1tdCivCoCA9 IHtydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2NhbGFyX2NvbnN0X3B0ciksCisgwqAgwqAg cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Vuc2lnbmVkX3ZlY3RvciksIHJ2dl9hcmdfdHlw ZV9pbmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2b2lkIGZ1bmMgKHNjYWxhcl90 eXBlICosIGVldzhfaW5kZXhfdHlwZSwgdmVjdG9yX3R5cGUpCisgKiBmdW5jdGlvbi7CoCAqLwor c3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBzY2FsYXJfcHRyX2luZGV4 X2FyZ3NbXQorwqAgPSB7cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9wdHIpLAor IMKgIMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV91bnNpZ25lZF92ZWN0b3IpLAorIMKg IMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLCBydnZfYXJnX3R5cGVfaW5m b19lbmR9OworCisvKiBBIGxpc3Qgb2YgYXJncyBmb3Igdm9pZCBmdW5jIChzY2FsYXJfdHlwZSAq LCBzaXplX3QsIHZlY3Rvcl90eXBlKQorICogZnVuY3Rpb24uwqAgKi8KK3N0YXRpYyBDT05TVEVY UFIgY29uc3QgcnZ2X2FyZ190eXBlX2luZm8gc2NhbGFyX3B0cl9zaXplX2FyZ3NbXQorwqAgPSB7 cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9wdHIpLAorIMKgIMKgIHJ2dl9hcmdf dHlwZV9pbmZvIChSVlZfQkFTRV9zaXplKSwgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Zl Y3RvciksCisgwqAgwqAgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKKwogLyogQSBsaXN0IG9mIG5v bmUgcHJlZHMgdGhhdCB3aWxsIGJlIHJlZ2lzdGVyZWQgZm9yIGludHJpbnNpYyBmdW5jdGlvbnMu wqAgKi8KIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgcHJlZGljYXRpb25fdHlwZV9pbmRleCBub25l X3ByZWRzW10KIMKgID0ge1BSRURfVFlQRV9ub25lLCBOVU1fUFJFRF9UWVBFU307CkBAIC0xNDU1 LDYgKzE0ODEsMTQgQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBpdV9zaGlm dF92dnZfb3BzCsKgIMKgIMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLCAv KiBSZXR1cm4gdHlwZSAqLwrCoCDCoCDCoCBzaGlmdF92dl9hcmdzIC8qIEFyZ3MgKi99OwogCisv KiBBIHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0aW9uIGZvciBzY2FsYXJfdHlwZSBmdW5jICh2ZWN0 b3JfdHlwZSwgc2l6ZV90KQorICogZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAqLworc3RhdGljIENP TlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBpdV94X3NfdV9vcHMKK8KgID0ge2l1X29wcyzCoCDC oCDCoCDCoCDCoCAvKiBUeXBlcyAqLworIMKgIMKgIE9QX1RZUEVfdngswqAgwqAgwqAgwqAgLyog U3VmZml4ICovCisgwqAgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhciksIC8q IFJldHVybiB0eXBlICovCisgwqAgwqAgdl9zaXplX2FyZ3MgLyogQXJncyAqL307CisKIC8qIEEg c3RhdGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKHZlY3Rvcl90 eXBlLCBzaXplX3QpCsKgICogZnVuY3Rpb24gcmVnaXN0cmF0aW9uLiAqLwogc3RhdGljIENPTlNU RVhQUiBjb25zdCBydnZfb3BfaW5mbyBpdV9zaGlmdF92dnhfb3BzCkBAIC0yNjM4LDYgKzI2NzIs MzggQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl92Y3JlYXRlX2xt dWw0X3gyX29wcwrCoCDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0VfdmxtdWxfZXh0 X3gyKSwgLyogUmV0dXJuIHR5cGUgKi8KwqAgwqAgwqAgZXh0X3ZjcmVhdGVfYXJncyAvKiBBcmdz ICovfTsKIAorLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUg ZnVuYyAoY29uc3Qgc2NhbGFyX3R5cGUgKiwKKyAqIHNpemVfdCkgZnVuY3Rpb24gcmVnaXN0cmF0 aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxh cl9jb25zdF9wdHJfc2l6ZV9vcHMKK8KgID0ge2FsbF9vcHMswqAgwqAgwqAgLyogVHlwZXPCoCAq LworIMKgIMKgIE9QX1RZUEVfdizCoCDCoCDCoCAvKiBTdWZmaXjCoCAqLworIMKgIMKgIHJ2dl9h cmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZcKgICovCisgwqAg wqAgc2NhbGFyX2NvbnN0X3B0cl9zaXplX2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGlj IG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgc2l6ZV90 LAorICogdmVjdG9yX3R5cGUpIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbi7CoCAqLworc3RhdGljIENP TlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl9zY2FsYXJfcHRyX3NpemVfb3BzCivCoCA9 IHthbGxfb3BzLMKgIMKgIC8qIFR5cGVzwqAgKi8KKyDCoCDCoCBPUF9UWVBFX3YswqAgwqAgLyog U3VmZml4wqAgKi8KKyDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfdm9pZCksIC8q IFJldHVybiB0eXBlwqAgKi8KKyDCoCDCoCBzY2FsYXJfcHRyX3NpemVfYXJncyAvKiBBcmdzICov fTsKKworLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVu YyAoY29uc3Qgc2NhbGFyX3R5cGUgKiwKKyAqIGluZGV4X3R5cGUpIGZ1bmN0aW9uIHJlZ2lzdHJh dGlvbi7CoCAqLworc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl9zY2Fs YXJfY29uc3RfcHRyX2luZGV4X29wcworwqAgPSB7YWxsX29wcyzCoCDCoCDCoCAvKiBUeXBlc8Kg ICovCisgwqAgwqAgT1BfVFlQRV92LMKgIMKgIMKgIC8qIFN1ZmZpeMKgICovCisgwqAgwqAgcnZ2 X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZlY3RvciksIC8qIFJldHVybiB0eXBlwqAgKi8KKyDC oCDCoCBzY2FsYXJfY29uc3RfcHRyX2luZGV4X2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3Rh dGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgaW5k ZXhfdHlwZSwKKyAqIHZlY3Rvcl90eXBlKSBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAgKi8KK3N0 YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9v cHMKK8KgID0ge2FsbF9vcHMswqAgwqAgLyogVHlwZXPCoCAqLworIMKgIMKgIE9QX1RZUEVfdizC oCDCoCAvKiBTdWZmaXjCoCAqLworIMKgIMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92 b2lkKSwgLyogUmV0dXJuIHR5cGXCoCAqLworIMKgIMKgIHNjYWxhcl9wdHJfaW5kZXhfYXJncyAv KiBBcmdzICovfTsKKwogLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9y X3R5cGUgZnVuYyAodmVjdG9yX3R5cGUpLgrCoCDCoCBTb21lIGlucyBqdXN0IHN1cHBvcnRzIFNF Vz0zMiwgc3VjaCBhcyBjcnlwdG8gdmVjdG9sIFp2a2cgZXh0ZW5zaW9uLgrCoCAqIGZ1bmN0aW9u IHJlZ2lzdHJhdGlvbi7CoCAqLwpAQCAtMjgxNiw2ICsyODgyLDEwIEBAIHN0YXRpYyBmdW5jdGlv bl9ncm91cF9pbmZvIGZ1bmN0aW9uX2dyb3Vwc1tdID0gewogI2RlZmluZSBERUZfUlZWX0ZVTkNU SU9OKE5BTUUsIFNIQVBFLCBQUkVEUywgT1BTX0lORk8pIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIFwKIMKgIHsjTkFNRSwgJmJhc2VzOjpOQU1FLCAmc2hhcGVzOjpTSEFQRSwg UFJFRFMsIE9QU19JTkZPLCBSRVFVSVJFRF9FWFRFTlNJT05TfSwKICNpbmNsdWRlICJyaXNjdi12 ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiIKKyN1bmRlZiBERUZfUlZWX0ZVTkNUSU9OCisj ZGVmaW5lIERFRl9SVlZfRlVOQ1RJT04oTkFNRSwgU0hBUEUsIFBSRURTLCBPUFNfSU5GTykgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXAorwqAgeyNOQU1FLCAmYmFzZXM6Ok5B TUUsICZzaGFwZXM6OlNIQVBFLCBQUkVEUywgT1BTX0lORk8sIFJFUVVJUkVEX0VYVEVOU0lPTlN9 LAorI2luY2x1ZGUgInRoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmIgogfTsKIAog LyogVGhlIFJWViB0eXBlcywgd2l0aCB0aGVpciBidWlsdC1pbgpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuaCBiL2djYy9jb25maWcvcmlzY3Yvcmlz Y3YtdmVjdG9yLWJ1aWx0aW5zLmgKaW5kZXggNTRjODgyNGZmOTIuLmE4ZWUzOWEzY2IyIDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oCisrKyBiL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmgKQEAgLTExNCw2ICsxMTQsNyBA QCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IENQX1dSSVRFX0NTUiA9IDFVIDw8IDU7CiBlbnVt IHJlcXVpcmVkX2V4dAogewogwqAgVkVDVE9SX0VYVCwgwqAgLyogVmVjdG9yIGV4dGVuc2lvbiAq LworwqAgWFRIRUFEVkVDVE9SX0VYVCwgwqAgLyogWFRoZWFkVmVjdG9yIGV4dGVuc2lvbiAqLwog wqAgWlZCQl9FWFQswqAgwqAgLyogQ3J5dG8gdmVjdG9yIFp2YmIgc3ViLWV4dCAqLwogwqAgWlZC Ql9PUl9aVktCX0VYVCwgLyogQ3J5dG8gdmVjdG9yIFp2YmIgb3IgenZrYiBzdWItZXh0ICovCiDC oCBaVkJDX0VYVCzCoCDCoCAvKiBDcnlwdG8gdmVjdG9yIFp2YmMgc3ViLWV4dCAqLwpAQCAtMjM0 LDYgKzIzNSw4IEBAIHN0cnVjdCBmdW5jdGlvbl9ncm91cF9pbmZvCiDCoCDCoCB7CiDCoCDCoCDC oCBjYXNlIFZFQ1RPUl9FWFQ6CiDCoCDCoCDCoCDCoCByZXR1cm4gVEFSR0VUX1ZFQ1RPUjsKK8Kg IMKgIMKgIGNhc2UgWFRIRUFEVkVDVE9SX0VYVDoKKyByZXR1cm4gVEFSR0VUX1hUSEVBRFZFQ1RP UjsKIMKgIMKgIMKgIGNhc2UgWlZCQl9FWFQ6CiDCoCDCoCDCoCDCoCByZXR1cm4gVEFSR0VUX1pW QkI7CiDCoCDCoCDCoCBjYXNlIFpWQkJfT1JfWlZLQl9FWFQ6CmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL3Jpc2N2L3QtcmlzY3YgYi9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKaW5kZXggMzJkZTZi ODUxYzEuLjM4NDk0MzIwZDhiIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YK KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2CkBAIC0xLDYgKzEsNyBAQAogUklTQ1ZfQlVJ TFRJTlNfSCA9ICQoc3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmgg XArCoCDCoCDCoCAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5k ZWYgXArCoCDCoCDCoCAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlu cy1mdW5jdGlvbnMuZGVmIFwKKyDCoCDCoCDCoCAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3RoZWFk LXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmIFwKwqAgwqAgwqAgcmlzY3YtdmVjdG9yLXR5 cGUtaW5kZXhlci5nZW4uZGVmCiAKIHJpc2N2LWJ1aWx0aW5zLm86ICQoc3JjZGlyKS9jb25maWcv cmlzY3YvcmlzY3YtYnVpbHRpbnMuY2MgJChDT05GSUdfSCkgXApkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiBiL2djYy9jb25m aWcvcmlzY3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZkM2JhMjliYWU5Ci0tLSAvZGV2L251bGwKKysr IGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZgpA QCAtMCwwICsxLDM5IEBACisjaWZuZGVmIERFRl9SVlZfRlVOQ1RJT04KKyNkZWZpbmUgREVGX1JW Vl9GVU5DVElPTihOQU1FLCBTSEFQRSwgUFJFRFMsIE9QU19JTkZPKQorI2VuZGlmCisKKyNkZWZp bmUgUkVRVUlSRURfRVhURU5TSU9OUyBYVEhFQURWRUNUT1JfRVhUCitERUZfUlZWX0ZVTkNUSU9O ICh2bGIsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0 X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bGgsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVs bF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2 bHcsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0 cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bGJ1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxf cHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxo dSwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRy X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZsd3UsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9w cmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c2Is IHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX29wcykK K0RFRl9SVlZfRlVOQ1RJT04gKHZzaCwgdGhfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMs IGFsbF92X3NjYWxhcl9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN3LCB0aF9sb2Fkc3Rv cmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9vcHMpCitERUZfUlZWX0ZV TkNUSU9OICh2bHNiLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxh cl9jb25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHNoLCB0aF9sb2Fkc3Rv cmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitE RUZfUlZWX0ZVTkNUSU9OICh2bHN3LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFs bF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHNidSwg dGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3Np emVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxzaHUsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVs bF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykKK0RFRl9SVlZfRlVOQ1RJ T04gKHZsc3d1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9j b25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3NiLCB0aF9sb2Fkc3RvcmVf d2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9zaXplX29wcykKK0RFRl9SVlZf RlVOQ1RJT04gKHZzc2gsIHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9z Y2FsYXJfcHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnNzdywgdGhfbG9hZHN0b3Jl X3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpCitERUZfUlZW X0ZVTkNUSU9OICh2bHhiLCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywg YWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHho LCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2Nv bnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHh3LCB0aF9pbmRleGVkX2xv YWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9v cHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHhidSwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgs IGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9G VU5DVElPTiAodmx4aHUsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBh bGxfdl9zY2FsYXJfY29uc3RfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZseHd1 LCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2Nv bnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3hiLCB0aF9pbmRleGVkX2xv YWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX2luZGV4X29wcykK K0RFRl9SVlZfRlVOQ1RJT04gKHZzeGgsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25l X21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAo dnN4dywgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2Nh bGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3V4YiwgdGhfaW5kZXhlZF9s b2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMp CitERUZfUlZWX0ZVTkNUSU9OICh2c3V4aCwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5v bmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9O ICh2c3V4dywgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zf c2NhbGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2ZXh0X3hfdiwgdGhfZXh0 cmFjdCwgbm9uZV9wcmVkcywgaXVfeF9zX3Vfb3BzKQorI3VuZGVmIFJFUVVJUkVEX0VYVEVOU0lP TlMKKworI3VuZGVmIERFRl9SVlZfRlVOQ1RJT04KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlz Y3YvdGhlYWQtdmVjdG9yLm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKaW5k ZXggNjk2YjgxNTI1MmQuLjBmMzcwMGQ5MjY5IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2 L3RoZWFkLXZlY3Rvci5tZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5tZApA QCAtMSw3ICsxLDk1IEBACiAoZGVmaW5lX2NfZW51bSAidW5zcGVjIiBbCivCoCBVTlNQRUNfVEhf VkxCCivCoCBVTlNQRUNfVEhfVkxCVQorwqAgVU5TUEVDX1RIX1ZMSAorwqAgVU5TUEVDX1RIX1ZM SFUKK8KgIFVOU1BFQ19USF9WTFcKK8KgIFVOU1BFQ19USF9WTFdVCisKK8KgIFVOU1BFQ19USF9W TFNCCivCoCBVTlNQRUNfVEhfVkxTQlUKK8KgIFVOU1BFQ19USF9WTFNICivCoCBVTlNQRUNfVEhf VkxTSFUKK8KgIFVOU1BFQ19USF9WTFNXCivCoCBVTlNQRUNfVEhfVkxTV1UKKworwqAgVU5TUEVD X1RIX1ZMWEIKK8KgIFVOU1BFQ19USF9WTFhCVQorwqAgVU5TUEVDX1RIX1ZMWEgKK8KgIFVOU1BF Q19USF9WTFhIVQorwqAgVU5TUEVDX1RIX1ZMWFcKK8KgIFVOU1BFQ19USF9WTFhXVQorCivCoCBV TlNQRUNfVEhfVlNVWEIKK8KgIFVOU1BFQ19USF9WU1VYSAorwqAgVU5TUEVDX1RIX1ZTVVhXCisK IMKgIFVOU1BFQ19USF9WV0xEU1QKIF0pCiAKKyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19U SF9WTE1FTV9PUCBbCivCoCBVTlNQRUNfVEhfVkxCIFVOU1BFQ19USF9WTEJVCivCoCBVTlNQRUNf VEhfVkxIIFVOU1BFQ19USF9WTEhVCivCoCBVTlNQRUNfVEhfVkxXIFVOU1BFQ19USF9WTFdVCitd KQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVkxTTUVNX09QIFsKK8KgIFVOU1BF Q19USF9WTFNCIFVOU1BFQ19USF9WTFNCVQorwqAgVU5TUEVDX1RIX1ZMU0ggVU5TUEVDX1RIX1ZM U0hVCivCoCBVTlNQRUNfVEhfVkxTVyBVTlNQRUNfVEhfVkxTV1UKK10pCisKKyhkZWZpbmVfaW50 X2l0ZXJhdG9yIFVOU1BFQ19USF9WTFhNRU1fT1AgWworwqAgVU5TUEVDX1RIX1ZMWEIgVU5TUEVD X1RIX1ZMWEJVCivCoCBVTlNQRUNfVEhfVkxYSCBVTlNQRUNfVEhfVkxYSFUKK8KgIFVOU1BFQ19U SF9WTFhXIFVOU1BFQ19USF9WTFhXVQorXSkKKworKGRlZmluZV9pbnRfYXR0ciB2bG1lbV9vcF9h dHRyIFsKK8KgIChVTlNQRUNfVEhfVkxCICJiIikgKFVOU1BFQ19USF9WTEJVICJidSIpCivCoCAo VU5TUEVDX1RIX1ZMSCAiaCIpIChVTlNQRUNfVEhfVkxIVSAiaHUiKQorwqAgKFVOU1BFQ19USF9W TFcgInciKSAoVU5TUEVDX1RIX1ZMV1UgInd1IikKK8KgIChVTlNQRUNfVEhfVkxTQiAiYiIpIChV TlNQRUNfVEhfVkxTQlUgImJ1IikKK8KgIChVTlNQRUNfVEhfVkxTSCAiaCIpIChVTlNQRUNfVEhf VkxTSFUgImh1IikKK8KgIChVTlNQRUNfVEhfVkxTVyAidyIpIChVTlNQRUNfVEhfVkxTV1UgInd1 IikKK8KgIChVTlNQRUNfVEhfVkxYQiAiYiIpIChVTlNQRUNfVEhfVkxYQlUgImJ1IikKK8KgIChV TlNQRUNfVEhfVkxYSCAiaCIpIChVTlNQRUNfVEhfVkxYSFUgImh1IikKK8KgIChVTlNQRUNfVEhf VkxYVyAidyIpIChVTlNQRUNfVEhfVkxYV1UgInd1IikKK8KgIChVTlNQRUNfVEhfVlNVWEIgImIi KQorwqAgKFVOU1BFQ19USF9WU1VYSCAiaCIpCivCoCAoVU5TUEVDX1RIX1ZTVVhXICJ3IikKK10p CisKKyhkZWZpbmVfaW50X2F0dHIgdmxtZW1fb3JkZXJfYXR0ciBbCivCoCAoVU5TUEVDX1RIX1ZM WEIgIiIpCivCoCAoVU5TUEVDX1RIX1ZMWEggIiIpCivCoCAoVU5TUEVDX1RIX1ZMWFcgIiIpCivC oCAoVU5TUEVDX1RIX1ZTVVhCICJ1IikKK8KgIChVTlNQRUNfVEhfVlNVWEggInUiKQorwqAgKFVO U1BFQ19USF9WU1VYVyAidSIpCitdKQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhf VlNNRU1fT1AgWworwqAgVU5TUEVDX1RIX1ZMQgorwqAgVU5TUEVDX1RIX1ZMSAorwqAgVU5TUEVD X1RIX1ZMVworXSkKKworKGRlZmluZV9pbnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZTU01FTV9PUCBb CivCoCBVTlNQRUNfVEhfVkxTQgorwqAgVU5TUEVDX1RIX1ZMU0gKK8KgIFVOU1BFQ19USF9WTFNX CitdKQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVlNYTUVNX09QIFsKK8KgIFVO U1BFQ19USF9WTFhCCivCoCBVTlNQRUNfVEhfVkxYSAorwqAgVU5TUEVDX1RIX1ZMWFcKK8KgIFVO U1BFQ19USF9WU1VYQgorwqAgVU5TUEVDX1RIX1ZTVVhICivCoCBVTlNQRUNfVEhfVlNVWFcKK10p CisKIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWX1ZMU19WVCBbViBWTFMgVlRdKQogKGRlZmluZV9t b2RlX2l0ZXJhdG9yIFZfVkJfVkxTX1ZUIFtWIFZCIFZMUyBWVF0pCiAKQEAgLTEwMCwzICsxODgs MTY4IEBACiDCoCB9CiDCoCBbKHNldF9hdHRyICJ0eXBlIiAidmxkbSx2c3RtLHZtYWx1LHZtYWx1 LHZtYWx1IikKwqAgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2V4 cGFuZCAiQHByZWRfbW92X3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6Vl9WTFMgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQorwqAgwqAgKGlmX3Ro ZW5fZWxzZTpWX1ZMUworwqAgwqAgwqAgKHVuc3BlYzo8Vk0+CisgWyhtYXRjaF9vcGVyYW5kOjxW TT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIpCivCoCAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3Jf bGVuZ3RoX29wZXJhbmQiKQorwqAgKG1hdGNoX29wZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQi KQorwqAgKG1hdGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiKQorwqAgKG1hdGNoX29w ZXJhbmQgNyAiY29uc3RfaW50X29wZXJhbmQiKQorwqAgKHJlZzpTSSBWTF9SRUdOVU0pCivCoCAo cmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WTE1FTV9PUCkKK8KgIMKgIMKgIChtYXRj aF9vcGVyYW5kOlZfVkxTIDMgInZlY3Rvcl9tb3ZlX29wZXJhbmQiKQorwqAgwqAgwqAgKG1hdGNo X29wZXJhbmQ6Vl9WTFMgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiKSkpXQorwqAgIlRBUkdFVF9Y VEhFQURWRUNUT1IiCivCoCB7fSkKKworKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnByZWRfbW92 X3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vl9W TFMgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiIMKgIMKgICI9dnIswqAgwqAgdnIswqAgwqAgdmQs IMKgIMKgIG0swqAgwqAgdnIswqAgwqAgdnIiKQorwqAgwqAgKGlmX3RoZW5fZWxzZTpWX1ZMUwor wqAgwqAgwqAgKHVuc3BlYzo8Vk0+CisgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21h c2tfb3BlcmFuZCLCoCDCoCAidm1XYzEsIMKgIFdjMSzCoCDCoCB2bSwgdm1XYzEsIMKgIFdjMSwg wqAgV2MxIikKK8KgIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCIgwqAg wqAgwqAgIiDCoCBySyzCoCDCoCBySyzCoCDCoCBySyzCoCDCoCBySyzCoCDCoCBySyzCoCDCoCBy SyIpCivCoCAobWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCLCoCDCoCAiwqAgwqAg aSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCAobWF0 Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCLCoCDCoCAiwqAgwqAgaSwgwqAgwqAgaSwg wqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCAobWF0Y2hfb3BlcmFuZCA3 ICJjb25zdF9pbnRfb3BlcmFuZCLCoCDCoCAiwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSwgwqAg wqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCAocmVnOlNJIFZMX1JFR05VTSkKK8KgIChyZWc6 U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMTUVNX09QKQorwqAgwqAgwqAgKG1hdGNoX29w ZXJhbmQ6Vl9WTFMgMyAicmVnX29yX21lbV9vcGVyYW5kIiDCoCDCoCDCoCAiwqAgwqAgbSwgwqAg wqAgbSwgwqAgwqAgbSzCoCDCoCB2cizCoCDCoCB2cizCoCDCoCB2ciIpCivCoCDCoCDCoCAobWF0 Y2hfb3BlcmFuZDpWX1ZMUyAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIgwqAgwqAgIsKgIMKgIDAs wqAgwqAgdnUswqAgwqAgdnUswqAgwqAgdnUswqAgwqAgdnUsIMKgIMKgIDAiKSkpXQorwqAgIihU QVJHRVRfWFRIRUFEVkVDVE9SCivCoCDCoCAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNb MF0sIDxNT0RFPm1vZGUpCisgfHwgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbM10sIDxNT0RF Pm1vZGUpKSkiCivCoCAiQAorIMKgIHZsPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzJXAxCisgwqAg dmw8dmxtZW1fb3BfYXR0cj4udlx0JTAsJTMKKyDCoCB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwl MywlMS50CisgwqAgdnM8dmxtZW1fb3BfYXR0cj4udlx0JTMsJTAlcDEKKyDCoCB2bXYudi52XHQl MCwlMworIMKgIHZtdi52LnZcdCUwLCUzIgorwqAgIiYmIHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJh bmRzWzBdLCA8TU9ERT5tb2RlKQorIMKgICYmIHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzNd LCA8TU9ERT5tb2RlKQorIMKgICYmIHNhdGlzZmllc19jb25zdHJhaW50X3Z1IChvcGVyYW5kc1sy XSkKKyDCoCAmJiBJTlRWQUwgKG9wZXJhbmRzWzddKSA9PSByaXNjdl92ZWN0b3I6OlZMTUFYIgor wqAgWyhzZXQgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDMpKV0KK8KgICIiCivCoCBbKHNldF9h dHRyICJ0eXBlIiAidmxkZSx2bGRlLHZsZGUsdnN0ZSx2aW1vdix2aW1vdiIpCisgwqAgKHNldF9h dHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVkX3N0b3JlX3dpZHRo PHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAibWVt b3J5X29wZXJhbmQiIMKgICIrbSIpCisgKGlmX3RoZW5fZWxzZTpWSQorIMKgICh1bnNwZWM6PFZN PgorIMKgIMKgIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiICJ2 bVdjMSIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCAzICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQi wqAgwqAgIiDCoCBySyIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCA0ICJjb25zdF9pbnRfb3Bl cmFuZCIgIsKgIMKgIGkiKQorwqAgwqAgwqAgKHJlZzpTSSBWTF9SRUdOVU0pCivCoCDCoCDCoCAo cmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU01FTV9PUCkKKyDCoCAobWF0Y2hfb3Bl cmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIsKgICLCoCDCoCB2ciIpCisgwqAgKG1hdGNoX2R1 cCAwKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidnM8dmxtZW1fb3BfYXR0cj4u dlx0JTIsJTAlcDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidnN0ZSIpCisgwqAgKHNldF9hdHRy ICJtb2RlIiAiPE1PREU+IikKKyDCoCAoc2V0IChhdHRyICJhdmxfdHlwZV9pZHgiKSAoY29uc3Rf aW50IDQpKQorIMKgIChzZXRfYXR0ciAidmxfb3BfaWR4IiAiMyIpXSkKKworKGRlZmluZV9pbnNu ICJAcHJlZF9zdHJpZGVkX2xvYWRfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiDCoCDCoCDCoCAiPXZyLMKg IMKgIHZyLMKgIMKgIHZkIikKKyAoaWZfdGhlbl9lbHNlOlZJCisgwqAgKHVuc3BlYzo8Vk0+Cisg wqAgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2Mx LCDCoCBXYzEswqAgwqAgdm0iKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNSAidmVjdG9yX2xl bmd0aF9vcGVyYW5kIsKgIMKgICIgwqAgcksswqAgwqAgcksswqAgwqAgcksiKQorwqAgwqAgwqAg KG1hdGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiICLCoCDCoCBpLCDCoCDCoCBpLCDC oCDCoCBpIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDcgImNvbnN0X2ludF9vcGVyYW5kIiAi wqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCA4ICJj b25zdF9pbnRfb3BlcmFuZCIgIsKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGkiKQorwqAgwqAgwqAg KHJlZzpTSSBWTF9SRUdOVU0pCivCoCDCoCDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BF Q19USF9WTFNNRU1fT1ApCisgwqAgKHVuc3BlYzpWSQorIMKgIMKgIFsobWF0Y2hfb3BlcmFuZDpW SSAzICJtZW1vcnlfb3BlcmFuZCLCoCAiwqAgwqAgbSwgwqAgwqAgbSwgwqAgwqAgbSIpCivCoCDC oCDCoCAobWF0Y2hfb3BlcmFuZCA0ICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIiDCoCAiIMKgIHJK LMKgIMKgIHJKLMKgIMKgIHJKIildIFVOU1BFQ19USF9WTFNNRU1fT1ApCisgwqAgKG1hdGNoX29w ZXJhbmQ6VkkgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiwqAgwqAgwqAgIsKgIMKgIDAswqAgwqAg dnUswqAgwqAgdnUiKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidmxzPHZsbWVt X29wX2F0dHI+LnZcdCUwLCUzLCV6NCVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2bGRzIikK KyDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRf c3RyaWRlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlZJIDAgIm1lbW9yeV9vcGVyYW5kIiDCoCAiK20iKQorIChpZl90aGVuX2Vsc2U6 VkkKKyDCoCAodW5zcGVjOjxWTT4KKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0 b3JfbWFza19vcGVyYW5kIiAidm1XYzEiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNCAidmVj dG9yX2xlbmd0aF9vcGVyYW5kIsKgIMKgICIgwqAgcksiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJh bmQgNSAiY29uc3RfaW50X29wZXJhbmQiICLCoCDCoCBpIikKK8KgIMKgIMKgIChyZWc6U0kgVkxf UkVHTlVNKQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNTTUVN X09QKQorIMKgICh1bnNwZWM6VkkKKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQgMiAicG1vZGVfcmVn X29yXzBfb3BlcmFuZCIgwqAgIiDCoCBySiIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDpWSSAz ICJyZWdpc3Rlcl9vcGVyYW5kIiDCoCDCoCDCoCAiIMKgIHZyIildIFVOU1BFQ19USF9WU1NNRU1f T1ApCisgwqAgKG1hdGNoX2R1cCAwKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAi dnNzPHZsbWVtX29wX2F0dHI+LnZcdCUzLCUwLCV6MiVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUi ICJ2c3RzIikKKyDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKQorIMKgIChzZXQgKGF0dHIg ImF2bF90eXBlX2lkeCIpIChjb25zdF9pbnQgNSkpXSkKKworKGRlZmluZV9pbnNuICJAcHJlZF9p bmRleGVkX2xvYWRfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hf b3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIsKgIMKgIMKgICI9dmQsIHZyLHZkLCB2ciIp CisgKGlmX3RoZW5fZWxzZTpWSQorIMKgICh1bnNwZWM6PFZNPgorIMKgIMKgIFsobWF0Y2hfb3Bl cmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiwqAgIiB2bSxXYzEsdm0sV2MxIikKK8Kg IMKgIMKgIChtYXRjaF9vcGVyYW5kIDUgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCIgwqAgwqAgIiBy SywgckssckssIHJLIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVy YW5kIsKgICLCoCBpLMKgIGksIGkswqAgaSIpCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZCA3ICJj b25zdF9pbnRfb3BlcmFuZCLCoCAiwqAgaSzCoCBpLCBpLMKgIGkiKQorwqAgwqAgwqAgKG1hdGNo X29wZXJhbmQgOCAiY29uc3RfaW50X29wZXJhbmQiwqAgIsKgIGkswqAgaSwgaSzCoCBpIikKK8Kg IMKgIMKgIChyZWc6U0kgVkxfUkVHTlVNKQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0p XSBVTlNQRUNfVEhfVkxYTUVNX09QKQorIMKgICh1bnNwZWM6VkkKKyDCoCDCoCBbKG1hdGNoX29w ZXJhbmQgMyAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCLCoCDCoCAiIHJKLCBySixySiwgckoiKQor wqAgwqAgwqAgKG1lbTpCTEsgKHNjcmF0Y2gpKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQ6Vkkg NCAicmVnaXN0ZXJfb3BlcmFuZCIgIiB2ciwgdnIsdnIsIHZyIildIFVOU1BFQ19USF9WTFhNRU1f T1ApCisgwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiIMKgIMKg IMKgICIgdnUsIHZ1LCAwLMKgIDAiKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAi dmx4PHZsbWVtX29wX2F0dHI+LnZcdCUwLCglejMpLCU0JXAxIgorwqAgWyhzZXRfYXR0ciAidHlw ZSIgInZsZHV4IikKKyDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVf aW5zbiAiQHByZWRfaW5kZXhlZF88dmxtZW1fb3JkZXJfYXR0cj5zdG9yZV93aWR0aDx2bG1lbV9v cF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtZW06QkxLIChzY3JhdGNoKSkKKyAodW5zcGVjOkJM SworIMKgIFsodW5zcGVjOjxWTT4KKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAwICJ2ZWN0 b3JfbWFza19vcGVyYW5kIiAidm1XYzEiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNCAidmVj dG9yX2xlbmd0aF9vcGVyYW5kIsKgIMKgICIgwqAgcksiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJh bmQgNSAiY29uc3RfaW50X29wZXJhbmQiICLCoCDCoCBpIikKK8KgIMKgIMKgIChyZWc6U0kgVkxf UkVHTlVNKQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNYTUVN X09QKQorwqAgwqAgKG1hdGNoX29wZXJhbmQgMSAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCLCoCDC oCDCoCAiwqAgckoiKQorwqAgwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFu ZCIgIsKgIHZyIikKK8KgIMKgIChtYXRjaF9vcGVyYW5kOlZJIDMgInJlZ2lzdGVyX29wZXJhbmQi wqAgIsKgIHZyIildIFVOU1BFQ19USF9WU1hNRU1fT1ApKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVD VE9SIgorwqAgInZzPHZsbWVtX29yZGVyX2F0dHI+eDx2bG1lbV9vcF9hdHRyPi52XHQlMywoJXox KSwlMiVwMCIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2c3R1eCIpCisgwqAgKHNldF9hdHRyICJt b2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2V4cGFuZCAiQHByZWRfdGhfZXh0cmFjdDxtb2Rl PiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWRUw+IDAgInJlZ2lzdGVyX29wZXJhbmQiKQor ICh1bnNwZWM6PFZFTD4KKyDCoCBbKHZlY19zZWxlY3Q6PFZFTD4KK8KgIMKgIMKgIChtYXRjaF9v cGVyYW5kOlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIikKK8KgIMKgIMKgIChwYXJhbGxlbCBb KG1hdGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKV0pKQorwqAgwqAgKHJl ZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVlBSRURJQ0FURSkpXQorwqAgIlRBUkdFVF9YVEhF QURWRUNUT1IiCit7fSkKKworKGRlZmluZV9pbnNuICIqcHJlZF90aF9leHRyYWN0PG1vZGU+Igor wqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgwqAgIj1y IikKK8KgICh1bnNwZWM6PFZFTD4KK8KgIMKgIFsodmVjX3NlbGVjdDo8VkVMPgorIMKgIMKgIMKg IChtYXRjaF9vcGVyYW5kOlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidnIiKQorIMKgIMKg IMKgIChwYXJhbGxlbCBbKG1hdGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIi KV0pKQorIMKgIMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1ZQUkVESUNBVEUpKV0K K8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZleHQueC52XHQlMCwlMSwlMiIKK8KgIFso c2V0X2F0dHIgInR5cGUiICJ2aW1vdnZ4IikKKyDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4i KV0pCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVh ZHZlY3Rvci92bGItdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0 aGVhZHZlY3Rvci92bGItdnNiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjNjMTJjMTI0NTk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jCkBAIC0wLDAgKzEsNjggQEAKKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhl YWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1 bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5o IgorCisvKgorKiogZjE6CisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKiog dGgudmxiXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bGJcLnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCkKKyoqIHRoLnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqdlsw LTldKworKiogdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlswLTldKyxccyp2WzAtOV0rCisqKiB0 aC52c2JcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjEgKHZv aWQgKiBpbiwgdm9pZCAqb3V0KQoreworwqAgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92 bGJfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxi X3ZfaTMybTFfdHUgKHYsIGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnZfaTMybTEgKHYyLCB2MiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHY0ID0gX19yaXNjdl92 YWRkX3Z2X2kzMm0xX3R1ICh2MywgdjIsIHYyLCA0KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnNiX3Zf aTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjI6CisqKiB0aC52c2V0dmxpXHRbYS14 MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqIHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTld K1wpCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0YSxtYQorKiogdGgudmxiLnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlsw LTldKyxccyp2WzAtOV0rCisqKiB0aC52YWRkXC52dlx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSss XHMqdlswLTldKyxccyp2MC50CisqKiB0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQor KiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQpCit7CivCoCDCoCB2Ym9v bDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6Ojoi bWVtb3J5Iik7CivCoCDCoCB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0xIChp biwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGJfdl9pMzJtMV9tICht YXNrLCBpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z2X2kzMm0x ICh2MiwgdjIsIDQpOworwqAgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92dl9pMzJt MV9tIChtYXNrLCB2MywgdjMsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2Jfdl9pMzJtMSAob3V0 LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJv LGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRo LnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11CisqKiB0aC52bGJcLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkKKyoqIHRoLnZsYi52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoq IHRoLnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldKworKiogdGgudmFkZFwu dnZcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKnZbMC05XSssXHMqdjAudAorKiogdGgudnNi LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBp biwgdm9pZCAqb3V0KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47 CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAgwqAgdmludDMybTFfdCB2 ID0gX19yaXNjdl90aF92bGJfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAgdmludDMybTFfdCB2MiA9 IF9fcmlzY3ZfdGhfdmxiX3ZfaTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworwqAgwqAgdmlu dDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMSAodjIsIHYyLCA0KTsKK8KgIMKgIHZp bnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnZfaTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCB2 MiwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3ZzYl92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3ZsYnUtdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bGJ1LXZzYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z MGJlZjM2OTM3NQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZl Y3RvciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rp b24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisK Ky8qCisqKiBmMToKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52 bGJ1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bGJ1XC52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpCisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgor KiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZzYlwudlx0 dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2 b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90 aF92bGJ1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90 aF92bGJ1X3ZfdTMybTFfdHUgKHYsIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0g X19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2 X3RoX3ZzYl92X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqIHRo LnZsYnUudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlsw LTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2 WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgp Cit7CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2 b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90 aF92bGJ1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90 aF92bGJ1X3ZfdTMybTFfbSAobWFzaywgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBf X3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQg PSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoCDCoCBfX3Jp c2N2X3RoX3ZzYl92X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgu dnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTld KywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoq IHRoLnZsYnVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsYnUudlx0dlswLTld KywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0r LFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixc cyp2MC50CisqKiB0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwor dm9pZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9v bDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6Ojoi bWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTEg KGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTFf dHVtdSAobWFzaywgdiwgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2 X3ZhZGRfdnhfdTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNj dl90aF92c2Jfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNjOGI1Y2NjMTZiCi0tLSAvZGV2L251 bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Iv dmxoLXZzaC5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIg fSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAq LworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0aC52c2V0 aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKiogdGgudmxoXC52XHR2WzAtOV0rLDBcKFthLXgw LTldK1wpCisqKiB0aC52bGhcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZhZGRc LnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxc cyp2WzAtOV0rLFxzKi0xNgorKiogdGgudnNoXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisq KiByZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQorewor wqAgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGhfdl9pMzJtMSAoaW4sIDQpOworwqAg wqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTFfdHUgKHYsIGluLCA0KTsK K8KgIMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQp OworwqAgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV90dSAodjMsIHYy LCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2hfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9 CisKKy8qCisqKiBmMjoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxt YQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZzZXRpdmxpXHR6 ZXJvLDQsZTMyLG0xLHRhLG1hCisqKiB0aC52bGgudlx0dlswLTldKywwXChbYS14MC05XStcKSx2 MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFk ZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c2gu dlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGlu LCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sKK8KgIMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9v bDMyX3QqKWluOworwqAgwqAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgIMKgIHZp bnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQz Mm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xX20gKG1hc2ssIGluLCA0KTsKK8KgIMKg IHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOworwqAg wqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV9tIChtYXNrLCB2MywgLTE2 LCA0KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnNoX3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQorCisv KgorKiogZjM6CisqKiB0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoq IHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52c2V0aXZsaVx0emVybyw0 LGUzMixtMSx0dSxtdQorKiogdGgudmxoXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0 aC52bGgudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlsw LTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2 WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c2gudlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogcmV0CisqLwordm9pZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkK K3sKK8KgIMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqAgwqAgYXNtIHZv bGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgIMKgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhf dmxoX3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3Zs aF92X2kzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjMgPSBf X3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdmludDMybTFfdCB2NCA9 IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV90dW11IChtYXNrLCB2MywgdjIsIC0xNiwgNCk7CivCoCDC oCBfX3Jpc2N2X3RoX3ZzaF92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlmZiAtLWdpdCBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZz aC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iN2MwMDQwNGYxOAot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRo ZWFkdmVjdG9yL3ZsaHUtdnNoLmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBkZy1kbyBjb21waWxl IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZlY3RvciAtbWFiaT1p bHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIq KiIgIiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8qCisqKiBmMToK KyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52bGh1XC52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bGh1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wp CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwu dmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZzaFwudlx0dlswLTldKywwXChb YS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVp bnQzMl90IHgpCit7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMy bTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGh1X3ZfdTMy bTFfdHUgKHYsIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4 X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRk X3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3ZzaF92X3Uz Mm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNldHZsaVx0W2EteDAt OV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqIHRoLnZsaHUudlx0dlsw LTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAt OV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0x Nixccyp2MC50CisqKiB0aC52c2gudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0Cisq Lwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2 Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6 OjoibWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMy bTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGh1X3ZfdTMy bTFfbSAobWFzaywgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRf dnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3ZzaF92 X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgudnNldHZsaVx0W2Et eDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05 XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoqIHRoLnZsaHVcLnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsaHUudlx0dlswLTldKywwXChbYS14MC05 XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiog dGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0 aC52c2gudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMyAodm9p ZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9 ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivC oCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTEgKGluLCA0KTsKK8Kg IMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGh1X3ZfdTMybTFfdHVtdSAobWFzaywg diwgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTEg KHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMy bTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2hfdl91 MzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE3YTUzMDEyYWNmCi0tLSAvZGV2L251bGwKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jCkBA IC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLworLyogeyBk Zy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworI2luY2x1ZGUg InJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0aC52c2V0aXZsaVx0emVybyw0 LGUzMixtMSx0dSxtYQorKiogdGgudmx3XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0 aC52bHdcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZhZGRcLnZ4XHR2WzAtOV0r LFxzKnZbMC05XSssXHMqW2EteDAtOV0rCisqKiB0aC52YWRkXC52eFx0dlswLTldKyxccyp2WzAt OV0rLFxzKlthLXgwLTldKworKiogdGgudnN3XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisq KiByZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQorewor wqAgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHdfdl9pMzJtMSAoaW4sIDQpOworwqAg wqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTFfdHUgKHYsIGluLCA0KTsK K8KgIMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCB4LCA0KTsK K8KgIMKgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfdHUgKHYzLCB2Miwg eCwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKwor LyoKKyoqIGYyOgorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisq KiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8s NCxlMzIsbTEsdGEsbWEKKyoqIHRoLnZsdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQK KyoqIHRoLnZhZGRcLnZ4XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqW2EteDAtOV0rCisqKiB0aC52 YWRkXC52eFx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMqW2EteDAtOV0rLFxzKnYwLnQKKyoq IHRoLnZzdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiByZXQKKyovCit2b2lkIGYyICh2 b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sg PSAqKHZib29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOwor wqAgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHdfdl9pMzJtMSAoaW4sIDQpOworwqAg wqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTFfbSAobWFzaywgaW4sIDQp OworwqAgwqAgdmludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMSAodjIsIHgsIDQp OworwqAgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV9tIChtYXNrLCB2 MywgeCwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30K KworLyoKKyoqIGYzOgorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1h CisqKiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHpl cm8sNCxlMzIsbTEsdHUsbXUKKyoqIHRoLnZsd1wudlx0dlswLTldKywwXChbYS14MC05XStcKQor KiogdGgudmx3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudnhc dHZbMC05XSssXHMqdlswLTldKyxccypbYS14MC05XSsKKyoqIHRoLnZhZGRcLnZ4XHR2WzEtOV1b MC05XT8sXHMqdlswLTldKyxccypbYS14MC05XSssXHMqdjAudAorKiogdGgudnN3LnZcdHZbMC05 XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAq b3V0LCBpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90Kilp bjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDCoCB2aW50MzJtMV90 IHYgPSBfX3Jpc2N2X3RoX3Zsd192X2kzMm0xIChpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYy ID0gX19yaXNjdl90aF92bHdfdl9pMzJtMV90dW11IChtYXNrLCB2LCBpbiwgNCk7CivCoCDCoCB2 aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgeCwgNCk7CivCoCDCoCB2 aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xX3R1bXUgKG1hc2ssIHYzLCB2Miwg eCwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3Zsd3UtdnN3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bHd1LXZzdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5i MTg3Y2ZjODUyYgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZl Y3RvciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rp b24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisK Ky8qCisqKiBmMToKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKiB0aC52 bHd1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bHd1XC52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpCisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgor KiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZzd1wudlx0 dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2 b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90 aF92bHd1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90 aF92bHd1X3ZfdTMybTFfdHUgKHYsIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0g X19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoCDCoCBfX3Jpc2N2 X3RoX3Zzd192X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqIHRo LnZsd3Uudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlsw LTldKyxccyp2WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2 WzAtOV0rLFxzKi0xNixccyp2MC50CisqKiB0aC52c3cudlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgp Cit7CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2 b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90 aF92bHd1X3ZfdTMybTEgKGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90 aF92bHd1X3ZfdTMybTFfbSAobWFzaywgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBf X3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQg PSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoCDCoCBfX3Jp c2N2X3RoX3Zzd192X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgu dnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTld KywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoq IHRoLnZsd3VcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsd3Uudlx0dlswLTld KywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0r LFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixc cyp2MC50CisqKiB0aC52c3cudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwor dm9pZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9v bDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6Ojoi bWVtb3J5Iik7CivCoCDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHd1X3ZfdTMybTEg KGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bHd1X3ZfdTMybTFf dHVtdSAobWFzaywgdiwgaW4sIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3Zh ZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqAgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2 X3ZhZGRfdnhfdTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNj dl90aF92c3dfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9Ci0tIAoyLjE3LjEKIAogCsKgCsKgCsKg CsKgCgoK