From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-111.freemail.mail.aliyun.com (out30-111.freemail.mail.aliyun.com [115.124.30.111]) by sourceware.org (Postfix) with ESMTPS id 0F090385800A for ; Thu, 11 Jan 2024 09:11:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0F090385800A 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 0F090385800A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=115.124.30.111 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704964280; cv=none; b=edX2B0gOozRqmtL1ZsXhYsVh15ee/d4gmYlciJAmhJZTyrJFPoGeKdWB0OPhLHgcRCsVFecDQo/dzHohjK3fOZF2rXc8wCUEKSnL7ldq7bOuKrMEXIKjYxZCP0/5CXkaf11B/+7rcb0p4e8ed0Uzhyety6FgzJfya8itLQjAoEg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704964280; c=relaxed/simple; bh=Lq784agSmkmS0aA7gucpzkeMpUiVVx/lBK2OkT47MmE=; h=Date:From:To:Message-ID:Subject:MIME-Version; b=kYj4GcpP2dZaUZU64OA2YAa67H/w8wLGZojL7GgY8NHudYQSp6VL1NvOnIEw1HjeBjHSX1I3ZGaCPhoBO7rPoUa5jorO1W1yRu4KjJAYBtzIfXotYk9cGreGmF62NMAxQnMYTlQkJxYYKvBiDh0VY67q4CFC8DekEv7x6EzQZqg= ARC-Authentication-Results: i=1; server2.sourceware.org X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R191e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046060;MF=cooper.joshua@linux.alibaba.com;NM=1;PH=DW;RN=10;SR=0;TI=W4_0.2.3_v5ForWebDing_21281B34_1704964268937_o7001c46r; Received: from WS-web (cooper.joshua@linux.alibaba.com[W4_0.2.3_v5ForWebDing_21281B34_1704964268937_o7001c46r]) at Thu, 11 Jan 2024 17:11:09 +0800 Date: Thu, 11 Jan 2024 17:11:09 +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?UmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1z?= =?UTF-8?B?cGVjaWZpYyBpbnRyaW5zaWNzLg==?= X-Mailer: [Alimail-Mailagent revision 79][W4_0.2.3][v5ForWebDing][Chrome] MIME-Version: 1.0 x-aliyun-im-through: {"mailThroughImNew":true} References: <7F92468914239FA8+202401111707330397793@rivai.ai> x-aliyun-mail-creator: W4_0.2.3_v5ForWebDing_SFRTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMC4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xMjAuMC4wLjA=Ch In-Reply-To: <7F92468914239FA8+202401111707330397793@rivai.ai> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-18.9 required=5.0 tests=BAYES_00,BODY_8BITS,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,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: c2V4dC96ZXh0IHdpbGwgYmUgZ2VuZXJhdGVkIGluIE8yIGV2ZW4gd2l0aG91dCBjb3JyZXNwb25k aW5nIGludHJpbnNpY3MuCgoKCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQrlj5Hku7bkurrvvJpqdXpoZS56aG9uZ0By aXZhaS5haSA8anV6aGUuemhvbmdAcml2YWkuYWk+CuWPkemAgeaXtumXtO+8mjIwMjTlubQx5pyI MTHml6Uo5pif5pyf5ZubKSAxNzowNwrmlLbku7bkurrvvJoiY29vcGVyLmpvc2h1YSI8Y29vcGVy Lmpvc2h1YUBsaW51eC5hbGliYWJhLmNvbT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBhdGNoZXNAZ2Nj LmdudS5vcmc+CuaKhOOAgOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NAZ21haWwuY29t PjsgcGFsbWVyPHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lmaXZlLmNvbT47 ICJwaGlsaXBwLnRvbXNpY2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGplZmZyZXlhbGF3 PGplZmZyZXlhbGF3QGdtYWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNocmlzdG9waC5t dWVsbG5lckB2cnVsbC5ldT47ICJjb29wZXIuam9zaHVhIjxjb29wZXIuam9zaHVhQGxpbnV4LmFs aWJhYmEuY29tPjsgamlubWE8amlubWFAbGludXguYWxpYmFiYS5jb20+OyAiY29vcGVyLnF1Ijxj b29wZXIucXVAbGludXguYWxpYmFiYS5jb20+CuS4u+OAgOmimO+8mlJlOiBbUEFUQ0ggdjVdIFJJ U0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgoK CmVudW0gcmVxdWlyZWRfZXh0CnsKwqDCoCBWRUNUT1JfRVhULMKgwqAgLyogVmVjdG9yIGV4dGVu c2lvbiAqLworwqAgWFRIRUFEVkVDVE9SX0VYVCzCoMKgIC8qIFhUaGVhZFZlY3RvciBleHRlbnNp b24gKi8KwqDCoCBaVkJCX0VYVCzCoMKgwqAgLyogQ3J5dG8gdmVjdG9yIFp2YmIgc3ViLWV4dCAq LwrCoMKgIFpWQkJfT1JfWlZLQl9FWFQsIC8qIENyeXRvIHZlY3RvciBadmJiIG9yIHp2a2Igc3Vi LWV4dCAqLwrCoMKgIFpWQkNfRVhULMKgwqDCoCAvKiBDcnlwdG8gdmVjdG9yIFp2YmMgc3ViLWV4 dCAqLwoKCgpBZGQgdGhlYWR2ZWN0b3IgdG8gdGhlIGVuZCBvZiB0aGUgZW51bS4KCgorwqDCoMKg wqDCoCBjYXNlIFhUSEVBRFZFQ1RPUl9FWFQ6CisJcmV0dXJuIFRBUkdFVF9YVEhFQURWRUNUT1I7 CgoKClNhbWUuCgoKK8KgICImJiByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1PREU+ bW9kZSkKK8KgwqAgJiYgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbM10sIDxNT0RFPm1vZGUp CivCoMKgICYmIHNhdGlzZmllc19jb25zdHJhaW50X3Z1IChvcGVyYW5kc1syXSkKK8KgwqAgJiYg SU5UVkFMIChvcGVyYW5kc1s3XSkgPT0gcmlzY3ZfdmVjdG9yOjpWTE1BWCIKCgoKWW91IGNhbiB1 c2XCoHdob2xlX3JlZ190b19yZWdfbW92ZV9wCgoKCgpCdHcsIEkgcmV2aWV3IGFnYWluIDogwqDC oFJJU0MtVjogSGFuZGxlIGRpZmZlcmVuY2VzIGJldHdlZW4gWFRoZWFkdmVjdG9yIGFuZCBWZWN0 b3IKCgogCSAgKGFueV9leHRlbmQ6VldFWFRJIAkgICAgKG1hdGNoX29wZXJhbmQ6PFZfRE9VQkxF X1RSVU5DPiAzICJyZWdpc3Rlcl9vcGVyYW5kIiAgICJXMjEsVzIxLFcyMSxXMjEsVzQyLFc0MixX NDIsVzQyLFc4NCxXODQsVzg0LFc4NCwgICB2ciwgICB2ciIpKSAJICAobWF0Y2hfb3BlcmFuZDpW V0VYVEkgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiICAgICAgICAgICAiIHZ1LCB2dSwgIDAsICAw LCB2dSwgdnUsICAwLCAgMCwgdnUsIHZ1LCAgMCwgIDAsICAgdnUsICAgIDAiKSkpXS0gICJUQVJH RVRfVkVDVE9SIisgICJUQVJHRVRfVkVDVE9SICYmICFUQVJHRVRfWFRIRUFEVkVDVE9SIiAgICJ2 PHN6PmV4dC52ZjJcdCUwLCUzJXAxIiAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZXh0IikgICAgKHNl dF9hdHRyICJtb2RlIiAiPE1PREU+IilAQCAtMzcxMyw3ICszNzQ0LDcgQEAgCSAgKGFueV9leHRl bmQ6VlFFWFRJIAkgICAgKG1hdGNoX29wZXJhbmQ6PFZfUVVBRF9UUlVOQz4gMyAicmVnaXN0ZXJf b3BlcmFuZCIgICAiVzQzLFc0MyxXNDMsVzQzLFc4NixXODYsVzg2LFc4NiwgICB2ciwgICB2ciIp KSAJICAobWF0Y2hfb3BlcmFuZDpWUUVYVEkgMiAidmVjdG9yX21lcmdlX29wZXJhbmQiICAgICAg ICAgIiB2dSwgdnUsICAwLCAgMCwgdnUsIHZ1LCAgMCwgIDAsICAgdnUsICAgIDAiKSkpXS0gICJU QVJHRVRfVkVDVE9SIisgICJUQVJHRVRfVkVDVE9SICYmICFUQVJHRVRfWFRIRUFEVkVDVE9SIiAg ICJ2PHN6PmV4dC52ZjRcdCUwLCUzJXAxIiAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZXh0IikgICAg KHNldF9hdHRyICJtb2RlIiAiPE1PREU+IilAQCAtMzczNCw3ICszNzY1LDcgQEAgCSAgKGFueV9l eHRlbmQ6Vk9FWFRJIAkgICAgKG1hdGNoX29wZXJhbmQ6PFZfT0NUX1RSVU5DPiAzICJyZWdpc3Rl cl9vcGVyYW5kIiAgICJXODcsVzg3LFc4NyxXODcsICAgdnIsICAgdnIiKSkgCSAgKG1hdGNoX29w ZXJhbmQ6Vk9FWFRJIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIiAgICAgICAgIiB2dSwgdnUsICAw LCAgMCwgICB2dSwgICAgMCIpKSldLSAgIlRBUkdFVF9WRUNUT1IiKyAgIlRBUkdFVF9WRUNUT1Ig JiYgIVRBUkdFVF9YVEhFQURWRUNUT1IiICAgInY8c3o+ZXh0LnZmOFx0JTAsJTMlcDEiICAgWyhz ZXRfYXR0ciAidHlwZSIgInZleHQiKSAgICAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKQpXaHkg ZG8geW91IGFkZCB0aGVzZSAhVEFSR0VSVF9YVEhFQURWRUNSVE9SID8KCgpqdXpoZS56aG9uZ0By aXZhaS5haQoKwqAKRnJvbTrCoEp1biBTaGEgKEpvc2h1YSkKRGF0ZTrCoDIwMjQtMDEtMTHCoDE2 OjQ2ClRvOsKgZ2NjLXBhdGNoZXMKQ0M6wqBqaW0ud2lsc29uLmdjYzsgcGFsbWVyOyBhbmRyZXc7 IHBoaWxpcHAudG9tc2ljaDsgamVmZnJleWFsYXc7IGNocmlzdG9waC5tdWVsbG5lcjsganV6aGUu emhvbmc7IEp1biBTaGEgKEpvc2h1YSk7IEppbiBNYTsgWGlhbm1pYW8gUXUKU3ViamVjdDrCoFtQ QVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVjdG9yLXNwZWNpZmljIGlu dHJpbnNpY3MuCgpUaGlzIHBhdGNoIG9ubHkgaW52b2x2ZXMgdGhlIGdlbmVyYXRpb24gb2YgeHRo ZWFkdmVjdG9yCnNwZWNpYWwgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgYW5kIHZleHQgaW5zdHJ1 Y3Rpb25zLgrCoApnY2MvQ2hhbmdlTG9nOgrCoAoJKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9y LWJ1aWx0aW5zLWJhc2VzLmNjCgkoY2xhc3MgdGhfbG9hZHN0b3JlX3dpZHRoKTogRGVmaW5lIG5l dyBidWlsdGluIGJhc2VzLgoJKGNsYXNzIHRoX2V4dHJhY3QpOiBEZWZpbmUgbmV3IGJ1aWx0aW4g YmFzZXMuCgkoQkFTRSk6IERlZmluZSBuZXcgYnVpbHRpbiBiYXNlcy4KCSogY29uZmlnL3Jpc2N2 L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oOgoJRGVmaW5lIG5ldyBidWlsdGluIGNsYXNz LgoJKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5jYwoJKHN0cnVj dCB0aF9sb2Fkc3RvcmVfd2lkdGhfZGVmKTogRGVmaW5lIG5ldyBidWlsdGluIHNoYXBlcy4KCShz dHJ1Y3QgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGhfZGVmKToKCURlZmluZSBuZXcgYnVpbHRp biBzaGFwZXMuCgkoc3RydWN0IHRoX2V4dHJhY3RfZGVmKTogRGVmaW5lIG5ldyBidWlsdGluIHNo YXBlcy4KCShTSEFQRSk6IERlZmluZSBuZXcgYnVpbHRpbiBzaGFwZXMuCgkqIGNvbmZpZy9yaXNj di9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmg6CglEZWZpbmUgbmV3IGJ1aWx0aW4gc2hh cGVzLgoJKiBjb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNjIChERUZfUlZWX0ZV TkNUSU9OKToKCSogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oIChlbnVtIHJl cXVpcmVkX2V4dCk6Cgkoc3RydWN0IGZ1bmN0aW9uX2dyb3VwX2luZm8pOgoJKiBjb25maWcvcmlz Y3YvdC1yaXNjdjogQWRkIHRoZWFkLXZlY3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmCgkqIGNv bmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKCShAcHJlZF9tb3Zfd2lkdGg8dmxtZW1fb3BfYXR0 cj48bW9kZT4pOiBBZGQgbmV3IHBhdHRlcm5zLgoJKCpwcmVkX21vdl93aWR0aDx2bG1lbV9vcF9h dHRyPjxtb2RlPik6IExpa2V3aXNlLgoJKEBwcmVkX3N0b3JlX3dpZHRoPHZsbWVtX29wX2F0dHI+ PG1vZGU+KTogTGlrZXdpc2UuCgkoQHByZWRfc3RyaWRlZF9sb2FkX3dpZHRoPHZsbWVtX29wX2F0 dHI+PG1vZGU+KTogTGlrZXdpc2UuCgkoQHByZWRfc3RyaWRlZF9zdG9yZV93aWR0aDx2bG1lbV9v cF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgoJKEBwcmVkX2luZGV4ZWRfbG9hZF93aWR0aDx2bG1l bV9vcF9hdHRyPjxtb2RlPik6IExpa2V3aXNlLgoJKEBwcmVkX2luZGV4ZWRfPHZsbWVtX29yZGVy X2F0dHI+c3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4pOgoJKEBwcmVkX3RoX2V4dHJh Y3Q8bW9kZT4pOiBMaWtld2lzZS4KCSgqcHJlZF90aF9leHRyYWN0PG1vZGU+KTogTGlrZXdpc2Uu CgkqIGNvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZjogTmV3 IGZpbGUuCsKgCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgrCoAoJKiBnY2MudGFyZ2V0L3Jpc2N2 L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jOiBOZXcgdGVzdC4KCSogZ2NjLnRhcmdldC9yaXNj di9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmM6IE5ldyB0ZXN0LgoJKiBnY2MudGFyZ2V0L3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jOiBOZXcgdGVzdC4KCSogZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmM6IE5ldyB0ZXN0LgoJKiBnY2MudGFyZ2V0 L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jOiBOZXcgdGVzdC4KCSogZ2NjLnRhcmdl dC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsd3UtdnN3LmM6IE5ldyB0ZXN0LgoJCkNvLWF1dGhv cmVkLWJ5OiBKaW4gTWEgPGppbm1hQGxpbnV4LmFsaWJhYmEuY29tPgpDby1hdXRob3JlZC1ieTog WGlhbm1pYW8gUXUgPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4KQ28tYXV0aG9yZWQtYnk6 IENocmlzdG9waCBNw7xsbG5lciA8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1PgotLS0KIC4u Li9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuY2PCoMKgwqDCoMKgIHwgMTM5ICsr KysrKysrKysKIC4uLi9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaMKgwqDCoMKg wqDCoCB8wqAgMzEgKysrCiAuLi4vcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5j Y8KgwqDCoMKgIHwgMTYwICsrKysrKysrKysrCiAuLi4vcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0 aW5zLXNoYXBlcy5owqDCoMKgwqDCoCB8wqDCoCAzICsKIGdjYy9jb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLmNjwqDCoMKgwqAgfMKgIDcwICsrKysrCiBnY2MvY29uZmlnL3Jpc2N2 L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5owqDCoMKgwqDCoCB8wqDCoCAzICsKIGdjYy9jb25maWcv cmlzY3YvdC1yaXNjdsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoCAxICsKIC4uLi9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiB8 wqAgMzkgKysrCiBnY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5tZMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwgMjUzICsrKysrKysrKysrKysrKysrKwogLi4uL3Jpc2N2L3J2di94dGhl YWR2ZWN0b3IvdmxiLXZzYi5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2OCArKysrKwogLi4uL3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuY8KgwqDCoMKgwqDCoMKgwqAgfMKgIDY4ICsr KysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmPCoMKgwqDCoMKgwqDCoMKg wqAgfMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZzaC5jwqDC oMKgwqDCoMKgwqDCoCB8wqAgNjggKysrKysKIC4uLi9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zs dy12c3cuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNjggKysrKysKIC4uLi9yaXNjdi9ydnYveHRo ZWFkdmVjdG9yL3Zsd3UtdnN3LmPCoMKgwqDCoMKgwqDCoMKgIHzCoCA2OCArKysrKwogMTUgZmls ZXMgY2hhbmdlZCwgMTEwNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2Nv bmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZgogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3ZsYi12c2IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVh ZHZlY3Rvci92bGh1LXZzaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12 c3cuYwrCoApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMtYmFzZXMuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNl cy5jYwppbmRleCA0NmYxYTFkYTMzZS4uM2ViYTc5NDM3NTcgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCisrKyBiL2djYy9jb25maWcv cmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmNjCkBAIC0yMTI1LDYgKzIxMjUsODMg QEAgcHVibGljOgrCoMKgIH0KIH07CiAKKy8qIEltcGxlbWVudHMKKyAqIHRoLnZsKGIvaC93KVt1 XS52L3RoLnZzKGIvaC93KVt1XS52L3RoLnZscyhiL2gvdylbdV0udi90aC52c3MoYi9oL3cpW3Vd LnYvCisgKiB0aC52bHgoYi9oL3cpW3VdLnYvdGgudnNbdV14KGIvaC93KS52CisgKiBjb2RlZ2Vu LsKgICovCit0ZW1wbGF0ZTxib29sIFNUT1JFX1AsIGxzdF90eXBlIExTVF9UWVBFLCBpbnQgVU5T UEVDPgorY2xhc3MgdGhfbG9hZHN0b3JlX3dpZHRoIDogcHVibGljIGZ1bmN0aW9uX2Jhc2UKK3sK K3B1YmxpYzoKK8KgIGJvb2wgYXBwbHlfdGFpbF9wb2xpY3lfcCAoKSBjb25zdCBvdmVycmlkZSB7 IHJldHVybiAhU1RPUkVfUDsgfQorwqAgYm9vbCBhcHBseV9tYXNrX3BvbGljeV9wICgpIGNvbnN0 IG92ZXJyaWRlIHsgcmV0dXJuICFTVE9SRV9QOyB9CisKK8KgIHVuc2lnbmVkIGludCBjYWxsX3By b3BlcnRpZXMgKGNvbnN0IGZ1bmN0aW9uX2luc3RhbmNlICYpIGNvbnN0IG92ZXJyaWRlCivCoCB7 CivCoMKgwqAgaWYgKFNUT1JFX1ApCivCoMKgwqDCoMKgIHJldHVybiBDUF9XUklURV9NRU1PUlk7 CivCoMKgwqAgZWxzZQorwqDCoMKgwqDCoCByZXR1cm4gQ1BfUkVBRF9NRU1PUlk7CivCoCB9CisK K8KgIGJvb2wgY2FuX2JlX292ZXJsb2FkZWRfcCAoZW51bSBwcmVkaWNhdGlvbl90eXBlX2luZGV4 IHByZWQpIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoMKgwqAgaWYgKFNUT1JFX1AgfHwgTFNUX1RZ UEUgPT0gTFNUX0lOREVYRUQpCivCoMKgwqDCoMKgIHJldHVybiB0cnVlOworwqDCoMKgIHJldHVy biBwcmVkICE9IFBSRURfVFlQRV9ub25lOworwqAgfQorCivCoCBydHggZXhwYW5kIChmdW5jdGlv bl9leHBhbmRlciAmZSkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgwqDCoCBnY2NfYXNzZXJ0IChU QVJHRVRfWFRIRUFEVkVDVE9SKTsKK8KgwqDCoCBpZiAoTFNUX1RZUEUgPT0gTFNUX0lOREVYRUQp CivCoMKgwqDCoMKgIHsKKwlpZiAoU1RPUkVfUCkKKwnCoCByZXR1cm4gZS51c2VfZXhhY3RfaW5z biAoCisJwqDCoMKgIGNvZGVfZm9yX3ByZWRfaW5kZXhlZF9zdG9yZV93aWR0aCAoVU5TUEVDLCBV TlNQRUMsCisJCQkJCcKgwqDCoMKgwqDCoCBlLnZlY3Rvcl9tb2RlICgpKSk7CisJZWxzZQorCcKg IHJldHVybiBlLnVzZV9leGFjdF9pbnNuICgKKwnCoMKgwqAgY29kZV9mb3JfcHJlZF9pbmRleGVk X2xvYWRfd2lkdGggKFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkpOworwqDCoMKgwqDCoCB9CivC oMKgwqAgZWxzZSBpZiAoTFNUX1RZUEUgPT0gTFNUX1NUUklERUQpCivCoMKgwqDCoMKgIHsKKwlp ZiAoU1RPUkVfUCkKKwnCoCByZXR1cm4gZS51c2VfY29udGlndW91c19zdG9yZV9pbnNuICgKKwnC oMKgwqAgY29kZV9mb3JfcHJlZF9zdHJpZGVkX3N0b3JlX3dpZHRoIChVTlNQRUMsIGUudmVjdG9y X21vZGUgKCkpKTsKKwllbHNlCisJwqAgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfbG9hZF9pbnNu ICgKKwnCoMKgwqAgY29kZV9mb3JfcHJlZF9zdHJpZGVkX2xvYWRfd2lkdGggKFVOU1BFQywgZS52 ZWN0b3JfbW9kZSAoKSkpOworwqDCoMKgwqDCoCB9CivCoMKgwqAgZWxzZQorwqDCoMKgwqDCoCB7 CisJaWYgKFNUT1JFX1ApCisJwqAgcmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfc3RvcmVfaW5zbiAo CisJwqDCoMKgIGNvZGVfZm9yX3ByZWRfc3RvcmVfd2lkdGggKFVOU1BFQywgZS52ZWN0b3JfbW9k ZSAoKSkpOworCWVsc2UKKwnCoCByZXR1cm4gZS51c2VfY29udGlndW91c19sb2FkX2luc24gKAor CcKgwqDCoCBjb2RlX2Zvcl9wcmVkX21vdl93aWR0aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgp KSk7CivCoMKgwqDCoMKgIH0KK8KgIH0KK307CisKKy8qIEltcGxlbWVudHMgdmV4dC54LnYuwqAg Ki8KK2NsYXNzIHRoX2V4dHJhY3QgOiBwdWJsaWMgZnVuY3Rpb25fYmFzZQoreworcHVibGljOgor wqAgYm9vbCBhcHBseV92bF9wICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CivC oCBib29sIGFwcGx5X3RhaWxfcG9saWN5X3AgKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs c2U7IH0KK8KgIGJvb2wgYXBwbHlfbWFza19wb2xpY3lfcCAoKSBjb25zdCBvdmVycmlkZSB7IHJl dHVybiBmYWxzZTsgfQorwqAgYm9vbCB1c2VfbWFza19wcmVkaWNhdGlvbl9wICgpIGNvbnN0IG92 ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CivCoCBib29sIGhhc19tZXJnZV9vcGVyYW5kX3AgKCkg Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworwqAgcnR4IGV4cGFuZCAoZnVuY3Rp b25fZXhwYW5kZXIgJmUpIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoMKgwqAgZ2NjX2Fzc2VydCAo VEFSR0VUX1hUSEVBRFZFQ1RPUik7CivCoMKgwqAgcmV0dXJuIGUudXNlX2V4YWN0X2luc24gKGNv ZGVfZm9yX3ByZWRfdGhfZXh0cmFjdCAoZS52ZWN0b3JfbW9kZSAoKSkpOworwqAgfQorfTsKKwog LyogQmVsb3cgaW1wbGVtZW50cyBhcmUgdmVjdG9yIGNyeXB0byAqLwogLyogSW1wbGVtZW50cyB2 YW5kbi5bdnYsdnhdICovCiBjbGFzcyB2YW5kbiA6IHB1YmxpYyBmdW5jdGlvbl9iYXNlCkBAIC0y NTg3LDYgKzI2NjQsMzcgQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBzZWdfaW5kZXhlZF9sb2Fk PFVOU1BFQ19PUkRFUkVEPiB2bG94c2VnX29iajsKIHN0YXRpYyBDT05TVEVYUFIgY29uc3Qgc2Vn X2luZGV4ZWRfc3RvcmU8VU5TUEVDX1VOT1JERVJFRD4gdnN1eHNlZ19vYmo7CiBzdGF0aWMgQ09O U1RFWFBSIGNvbnN0IHNlZ19pbmRleGVkX3N0b3JlPFVOU1BFQ19PUkRFUkVEPiB2c294c2VnX29i ajsKIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgdmxzZWdmZiB2bHNlZ2ZmX29iajsKK3N0YXRpYyBD T05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5JVF9TVFJJREUs IFVOU1BFQ19USF9WTEI+IHZsYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxCVT4gdmxidV9v Ymo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNU X1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxIPiB2bGhfb2JqOworc3RhdGljIENPTlNURVhQUiBj b25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RI X1ZMSFU+IHZsaHVfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMVz4gdmx3X29iajsKK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfVU5JVF9TVFJJ REUsIFVOU1BFQ19USF9WTFdVPiB2bHd1X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhf bG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMQj4gdnNi X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExT VF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMSD4gdnNoX29iajsKK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RI X1ZMVz4gdnN3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRo PGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0I+IHZsc2Jfb2JqOworc3RhdGljIENP TlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9TVFJJREVELCBVTlNQ RUNfVEhfVkxTQlU+IHZsc2J1X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0 b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0g+IHZsc2hfb2JqOwor c3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9TVFJJ REVELCBVTlNQRUNfVEhfVkxTSFU+IHZsc2h1X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3Qg dGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU1c+IHZs c3dfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2Us IExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTV1U+IHZsc3d1X29iajsKK3N0YXRpYyBDT05TVEVY UFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9TVFJJREVELCBVTlNQRUNfVEhf VkxTQj4gdnNzYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0 aDx0cnVlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0g+IHZzc2hfb2JqOworc3RhdGljIENP TlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX1NUUklERUQsIFVOU1BF Q19USF9WTFNXPiB2c3N3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3Jl X3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWEI+IHZseGJfb2JqOworc3Rh dGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9JTkRFWEVE LCBVTlNQRUNfVEhfVkxYQlU+IHZseGJ1X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhf bG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWEg+IHZseGhf b2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExT VF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYSFU+IHZseGh1X29iajsKK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZM WFc+IHZseHdfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8 ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYV1U+IHZseHd1X29iajsKK3N0YXRpYyBD T05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQ RUNfVEhfVkxYQj4gdnN4Yl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9y ZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RIX1ZMWEg+IHZzeGhfb2JqOworc3Rh dGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1ZSwgTFNUX0lOREVYRUQs IFVOU1BFQ19USF9WTFhXPiB2c3h3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9h ZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVlNVWEI+IHZzdXhiX29i ajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9J TkRFWEVELCBVTlNQRUNfVEhfVlNVWEg+IHZzdXhoX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29u c3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVlNVWFc+ IHZzdXh3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfZXh0cmFjdCB2ZXh0X3hfdl9v Ymo7CiAKIC8qIENyeXB0byBWZWN0b3IgKi8KIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgdmFuZG4g dmFuZG5fb2JqOwpAQCAtMjg3OCw2ICsyOTg2LDM3IEBAIEJBU0UgKHZsb3hzZWcpCiBCQVNFICh2 c3V4c2VnKQogQkFTRSAodnNveHNlZykKIEJBU0UgKHZsc2VnZmYpCitCQVNFICh2bGIpCitCQVNF ICh2bGgpCitCQVNFICh2bHcpCitCQVNFICh2bGJ1KQorQkFTRSAodmxodSkKK0JBU0UgKHZsd3Up CitCQVNFICh2c2IpCitCQVNFICh2c2gpCitCQVNFICh2c3cpCitCQVNFICh2bHNiKQorQkFTRSAo dmxzaCkKK0JBU0UgKHZsc3cpCitCQVNFICh2bHNidSkKK0JBU0UgKHZsc2h1KQorQkFTRSAodmxz d3UpCitCQVNFICh2c3NiKQorQkFTRSAodnNzaCkKK0JBU0UgKHZzc3cpCitCQVNFICh2bHhiKQor QkFTRSAodmx4aCkKK0JBU0UgKHZseHcpCitCQVNFICh2bHhidSkKK0JBU0UgKHZseGh1KQorQkFT RSAodmx4d3UpCitCQVNFICh2c3hiKQorQkFTRSAodnN4aCkKK0JBU0UgKHZzeHcpCitCQVNFICh2 c3V4YikKK0JBU0UgKHZzdXhoKQorQkFTRSAodnN1eHcpCitCQVNFICh2ZXh0X3hfdikKIC8qIENy eXB0byB2ZWN0b3IgKi8KIEJBU0UgKHZhbmRuKQogQkFTRSAodmJyZXYpCmRpZmYgLS1naXQgYS9n Y2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5oIGIvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaAppbmRleCAxMTIyZTM4MDFhNy4u NTY1YTAzMTFkMmIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1 aWx0aW5zLWJhc2VzLmgKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMtYmFzZXMuaApAQCAtMjk5LDYgKzI5OSwzNyBAQCBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFz ZSAqY29uc3QgdmxveHNlZzsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4 c2VnOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzb3hzZWc7CiBleHRlcm4g Y29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxzZWdmZjsKK2V4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCB2bGI7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmxo OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsdzsKK2V4dGVybiBjb25zdCBm dW5jdGlvbl9iYXNlICpjb25zdCB2bGJ1OworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNv bnN0IHZsaHU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx3dTsKK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c2I7CitleHRlcm4gY29uc3QgZnVuY3Rpb25f YmFzZSAqY29uc3QgdnNoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzdzsK K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNiOworZXh0ZXJuIGNvbnN0IGZ1 bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc2g7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29u c3QgdmxzdzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNidTsKK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNodTsKK2V4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCB2bHN3dTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2 c3NiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzc2g7CitleHRlcm4gY29u c3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNzdzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2bHhiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZseGg7Citl eHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx4dzsKK2V4dGVybiBjb25zdCBmdW5j dGlvbl9iYXNlICpjb25zdCB2bHhidTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25z dCB2bHhodTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHh3dTsKK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3hiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X2Jhc2UgKmNvbnN0IHZzeGg7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnN4 dzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4YjsKK2V4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4aDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2c3V4dzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2ZXh0X3hf djsKIC8qIEJlbG93IGZ1bmN0aW9uX2Jhc2UgYXJlIFZlY3RybyBDcnlwdG8qLwogZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZhbmRuOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jh c2UgKmNvbnN0IHZicmV2OwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0 b3ItYnVpbHRpbnMtc2hhcGVzLmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVp bHRpbnMtc2hhcGVzLmNjCmluZGV4IDFlNGY0ZDUzZGU2Li44ZTkwYjE3YTk0YiAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjCisrKyBi L2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5jYwpAQCAtMjEx LDYgKzIxMSwxNDYgQEAgc3RydWN0IGluZGV4ZWRfbG9hZHN0b3JlX2RlZiA6IHB1YmxpYyBmdW5j dGlvbl9zaGFwZQrCoMKgIH0KIH07CiAKKy8qIEFkZCBvbmUgZnVuY3Rpb24gaW5zdGFuY2UgZm9y IEdST1VQLCB1c2luZyBvcGVyYW5kIHN1ZmZpeCBhdCBpbmRleCBPSSwKK8KgwqAgbW9kZSBzdWZm aXggYXQgaW5kZXggUEFJUiAmJiBiaSBhbmQgcHJlZGljYXRpb24gc3VmZml4IGF0IGluZGV4IHBy ZWRfaWR4LsKgICovCitzdGF0aWMgdm9pZAorYnVpbGRfdGhfbG9hZHN0b3JlIChmdW5jdGlvbl9i dWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCwKKwkJwqDCoMKgIHVu c2lnbmVkIGludCBwcmVkX2lkeCwgdW5zaWduZWQgaW50IHZlY190eXBlX2lkeCkKK3sKK8KgIGF1 dG9fdmVjPHRyZWUsIDU+IGFyZ3VtZW50X3R5cGVzOworwqAgZnVuY3Rpb25faW5zdGFuY2UgZnVu Y3Rpb25faW5zdGFuY2UgKGdyb3VwLmJhc2VfbmFtZSwgKmdyb3VwLmJhc2UsCisJCQkJwqDCoMKg wqDCoMKgICpncm91cC5zaGFwZSwKKwkJCQnCoMKgwqDCoMKgwqAgZ3JvdXAub3BzX2luZm9zLnR5 cGVzW3ZlY190eXBlX2lkeF0sCisJCQkJwqDCoMKgwqDCoMKgIGdyb3VwLnByZWRzW3ByZWRfaWR4 XSwgJmdyb3VwLm9wc19pbmZvcyk7CivCoCB0cmVlIHJldHVybl90eXBlID0gZ3JvdXAub3BzX2lu Zm9zLnJldC5nZXRfdHJlZV90eXBlICgKK8KgwqDCoCBncm91cC5vcHNfaW5mb3MudHlwZXNbdmVj X3R5cGVfaWR4XS5pbmRleCk7CivCoCBiLmFsbG9jYXRlX2FyZ3VtZW50X3R5cGVzIChmdW5jdGlv bl9pbnN0YW5jZSwgYXJndW1lbnRfdHlwZXMpOworwqAgYi5hcHBseV9wcmVkaWNhdGlvbiAoZnVu Y3Rpb25faW5zdGFuY2UsIHJldHVybl90eXBlLCBhcmd1bWVudF90eXBlcyk7CisKK8KgIGlmIChU QVJHRVRfWFRIRUFEVkVDVE9SICYmICFjaGVja190eXBlIChyZXR1cm5fdHlwZSwgYXJndW1lbnRf dHlwZXMpKQorwqDCoMKgIHJldHVybjsKKworwqAgdHJlZSB0eXBlID0gYnVpbHRpbl90eXBlc1tn cm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleF0udmVjdG9yOworwqAgaWYg KHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAibCIpCivCoMKgwqDCoMKgICYmIHN0cnN0ciAoZ3Jv dXAuYmFzZV9uYW1lLCAidSIpCivCoMKgwqDCoMKgICYmICFUWVBFX1VOU0lHTkVEIChUUkVFX1RZ UEUgKHR5cGUpKSkKK8KgwqDCoCByZXR1cm47CisKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2Vf bmFtZSwgImwiKQorwqDCoMKgwqDCoCAmJiAhc3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJ1IikK K8KgwqDCoMKgwqAgJiYgVFlQRV9VTlNJR05FRCAoVFJFRV9UWVBFICh0eXBlKSkpCivCoMKgwqAg cmV0dXJuOworCivCoCBtYWNoaW5lX21vZGUgbW9kZSA9IFRZUEVfTU9ERSAodHlwZSk7CivCoCBp bnQgc2V3ID0gR0VUX01PREVfQklUU0laRSAoR0VUX01PREVfSU5ORVIgKG1vZGUpKTsKK8KgIGlm IChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgImgiKSAmJiBzZXcgPT0gOCkKK8KgwqDCoCByZXR1 cm47CisKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgInciKSAmJiAoc2V3ID09IDgg fHwgc2V3ID09MTYpKQorwqDCoMKgIHJldHVybjsKKworwqAgYi5hZGRfb3ZlcmxvYWRlZF9mdW5j dGlvbiAoZnVuY3Rpb25faW5zdGFuY2UsICpncm91cC5zaGFwZSk7CivCoCBiLmFkZF91bmlxdWVf ZnVuY3Rpb24gKGZ1bmN0aW9uX2luc3RhbmNlLCAoKmdyb3VwLnNoYXBlKSwgcmV0dXJuX3R5cGUs CisJCQkgYXJndW1lbnRfdHlwZXMpOworfQorCisvKiB0aF9sb2Fkc3RvcmVfd2lkdGhfZGVmIGNs YXNzLsKgICovCitzdHJ1Y3QgdGhfbG9hZHN0b3JlX3dpZHRoX2RlZiA6IHB1YmxpYyBidWlsZF9i YXNlCit7CivCoMKgIHZvaWQgYnVpbGQgKGZ1bmN0aW9uX2J1aWxkZXIgJmIsCisJwqDCoMKgwqDC oCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsK K8KgwqDCoCBmb3IgKHVuc2lnbmVkIGludCBwcmVkX2lkeCA9IDA7IGdyb3VwLnByZWRzW3ByZWRf aWR4XSAhPSBOVU1fUFJFRF9UWVBFUzsKK8KgwqDCoMKgwqDCoCArK3ByZWRfaWR4KQorwqDCoMKg wqDCoCB7CisJZm9yICh1bnNpZ25lZCBpbnQgdmVjX3R5cGVfaWR4ID0gMDsKKwnCoMKgwqDCoCBn cm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleCAhPSBOVU1fVkVDVE9SX1RZ UEVTOworCcKgwqDCoMKgICsrdmVjX3R5cGVfaWR4KQorCcKgIHsKKwnCoMKgwqAgYnVpbGRfdGhf bG9hZHN0b3JlIChiLCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7CisJwqAgfQorwqDC oMKgwqDCoCB9CivCoCB9CisKK8KgIGNoYXIgKmdldF9uYW1lIChmdW5jdGlvbl9idWlsZGVyICZi LCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCisJCcKgIGJvb2wgb3ZlcmxvYWRl ZF9wKSBjb25zdCBvdmVycmlkZQorwqAgeworwqDCoMKgIC8qIFJldHVybiBudWxscHRyIGlmIGl0 IGNhbiBub3QgYmUgb3ZlcmxvYWRlZC7CoCAqLworwqDCoMKgIGlmIChvdmVybG9hZGVkX3AgJiYg IWluc3RhbmNlLmJhc2UtPmNhbl9iZV9vdmVybG9hZGVkX3AgKGluc3RhbmNlLnByZWQpKQorwqDC oMKgwqDCoCByZXR1cm4gbnVsbHB0cjsKKworwqDCoMKgIGIuYXBwZW5kX25hbWUgKCJfX3Jpc2N2 X3RoXyIpOworwqDCoMKgIGIuYXBwZW5kX25hbWUgKGluc3RhbmNlLmJhc2VfbmFtZSk7CisKK8Kg wqDCoCAvKiB2b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LsKgICovCivCoMKgwqAgaWYgKCFvdmVybG9h ZGVkX3ApCivCoMKgwqDCoMKgIHsKKwkvKiB2b3AgLS0+IHZvcF92LsKgICovCisJYi5hcHBlbmRf bmFtZSAob3BlcmFuZF9zdWZmaXhlc1tpbnN0YW5jZS5vcF9pbmZvLT5vcF0pOworCS8qIHZvcF92 IC0tPiB2b3Bfdl88dHlwZT4uwqAgKi8KKwliLmFwcGVuZF9uYW1lICh0eXBlX3N1ZmZpeGVzW2lu c3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7CivCoMKgwqDCoMKgIH0KKworwqDCoMKgIC8qIEFj Y29yZGluZyB0byBydnYtaW50cmluc2ljLWRvYywgaXQgZG9lcyBub3QgYWRkICJfbSIgc3VmZml4 CivCoMKgwqDCoMKgwqAgZm9yIHZvcF9tIEMrKyBvdmVybG9hZGVkIEFQSS7CoCAqLworwqDCoMKg IGlmIChvdmVybG9hZGVkX3AgJiYgaW5zdGFuY2UucHJlZCA9PSBQUkVEX1RZUEVfbSkKK8KgwqDC oMKgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivCoMKgwqAgYi5hcHBlbmRfbmFtZSAocHJl ZGljYXRpb25fc3VmZml4ZXNbaW5zdGFuY2UucHJlZF0pOworwqDCoMKgIHJldHVybiBiLmZpbmlz aF9uYW1lICgpOworwqAgfQorfTsKKworCisvKiB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aF9k ZWYgY2xhc3MuwqAgKi8KK3N0cnVjdCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aF9kZWYgOiBw dWJsaWMgZnVuY3Rpb25fc2hhcGUKK3sKK8KgIHZvaWQgYnVpbGQgKGZ1bmN0aW9uX2J1aWxkZXIg JmIsCisJwqDCoMKgwqDCoCBjb25zdCBmdW5jdGlvbl9ncm91cF9pbmZvICZncm91cCkgY29uc3Qg b3ZlcnJpZGUKK8KgIHsKK8KgwqDCoCBmb3IgKHVuc2lnbmVkIGludCBwcmVkX2lkeCA9IDA7IGdy b3VwLnByZWRzW3ByZWRfaWR4XSAhPSBOVU1fUFJFRF9UWVBFUzsKKwkgKytwcmVkX2lkeCkKK8Kg wqDCoMKgwqAgeworCWZvciAodW5zaWduZWQgaW50IHZlY190eXBlX2lkeCA9IDA7CisJwqDCoMKg wqAgZ3JvdXAub3BzX2luZm9zLnR5cGVzW3ZlY190eXBlX2lkeF0uaW5kZXggIT0gTlVNX1ZFQ1RP Ul9UWVBFUzsKKwnCoMKgwqDCoCArK3ZlY190eXBlX2lkeCkKKwnCoCB7CisJwqDCoCB0cmVlIGlu ZGV4X3R5cGUgPSBncm91cC5vcHNfaW5mb3MuYXJnc1sxXS5nZXRfdHJlZV90eXBlICgKKwnCoMKg wqDCoMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4KTsKKwnCoMKg IGlmICghaW5kZXhfdHlwZSkKKwnCoMKgwqDCoMKgIGNvbnRpbnVlOworCcKgwqAgYnVpbGRfdGhf bG9hZHN0b3JlIChiLCBncm91cCwgcHJlZF9pZHgsIHZlY190eXBlX2lkeCk7CisJwqAgfQorwqDC oMKgwqDCoCB9CivCoCB9CisKK8KgIGNoYXIgKmdldF9uYW1lIChmdW5jdGlvbl9idWlsZGVyICZi LCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCisJCcKgIGJvb2wgb3ZlcmxvYWRl ZF9wKSBjb25zdCBvdmVycmlkZQorwqAgeworCivCoMKgwqAgLyogUmV0dXJuIG51bGxwdHIgaWYg aXQgY2FuIG5vdCBiZSBvdmVybG9hZGVkLsKgICovCivCoMKgwqAgaWYgKG92ZXJsb2FkZWRfcCAm JiAhaW5zdGFuY2UuYmFzZS0+Y2FuX2JlX292ZXJsb2FkZWRfcCAoaW5zdGFuY2UucHJlZCkpCivC oMKgwqDCoMKgIHJldHVybiBudWxscHRyOworCivCoMKgwqAgYi5hcHBlbmRfbmFtZSAoIl9fcmlz Y3ZfdGhfIik7CivCoMKgwqAgYi5hcHBlbmRfbmFtZSAoaW5zdGFuY2UuYmFzZV9uYW1lKTsKK8Kg wqDCoCAvKiB2b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LsKgICovCivCoMKgwqAgaWYgKCFvdmVybG9h ZGVkX3ApCivCoMKgwqDCoMKgIHsKKwkvKiB2b3AgLS0+IHZvcF92LsKgICovCisJYi5hcHBlbmRf bmFtZSAob3BlcmFuZF9zdWZmaXhlc1tpbnN0YW5jZS5vcF9pbmZvLT5vcF0pOworCS8qIHZvcF92 IC0tPiB2b3Bfdl88dHlwZT4uwqAgKi8KKwliLmFwcGVuZF9uYW1lICh0eXBlX3N1ZmZpeGVzW2lu c3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7CivCoMKgwqDCoMKgIH0KKworwqDCoMKgIC8qIEFj Y29yZGluZyB0byBydnYtaW50cmluc2ljLWRvYywgaXQgZG9lcyBub3QgYWRkICJfbSIgc3VmZml4 CivCoMKgwqDCoMKgwqAgZm9yIHZvcF9tIEMrKyBvdmVybG9hZGVkIEFQSS7CoCAqLworwqDCoMKg IGlmIChvdmVybG9hZGVkX3AgJiYgaW5zdGFuY2UucHJlZCA9PSBQUkVEX1RZUEVfbSkKK8KgwqDC oMKgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivCoMKgwqAgYi5hcHBlbmRfbmFtZSAocHJl ZGljYXRpb25fc3VmZml4ZXNbaW5zdGFuY2UucHJlZF0pOworwqDCoMKgIHJldHVybiBiLmZpbmlz aF9uYW1lICgpOworwqAgfQorfTsKKwogLyogYWx1X2RlZiBjbGFzcy7CoCAqLwogc3RydWN0IGFs dV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogewpAQCAtNjMyLDYgKzc3MiwyMyBAQCBzdHJ1Y3Qg cmVkdWNfYWx1X2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCsKgwqAgfQogfTsKIAorLyogdGhfZXh0 cmFjdF9kZWYgY2xhc3MuwqAgKi8KK3N0cnVjdCB0aF9leHRyYWN0X2RlZiA6IHB1YmxpYyBidWls ZF9iYXNlCit7CivCoCBjaGFyICpnZXRfbmFtZSAoZnVuY3Rpb25fYnVpbGRlciAmYiwgY29uc3Qg ZnVuY3Rpb25faW5zdGFuY2UgJmluc3RhbmNlLAorwqDCoMKgwqDCoCBib29sIG92ZXJsb2FkZWRf cCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgwqDCoCBiLmFwcGVuZF9uYW1lICgiX19yaXNjdl90 aF8iKTsKK8KgwqDCoCBiLmFwcGVuZF9uYW1lIChpbnN0YW5jZS5iYXNlX25hbWUpOworCivCoMKg wqAgaWYgKG92ZXJsb2FkZWRfcCkKK8KgwqDCoMKgwqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7 CivCoMKgwqAgYi5hcHBlbmRfbmFtZSAodHlwZV9zdWZmaXhlc1tpbnN0YW5jZS50eXBlLmluZGV4 XS52ZWN0b3IpOworwqDCoMKgIGIuYXBwZW5kX25hbWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2Uu dHlwZS5pbmRleF0uc2NhbGFyKTsKK8KgwqDCoCByZXR1cm4gYi5maW5pc2hfbmFtZSAoKTsKK8Kg IH0KK307CisKIC8qIHNjYWxhcl9tb3ZlX2RlZiBjbGFzcy7CoCAqLwogc3RydWN0IHNjYWxhcl9t b3ZlX2RlZiA6IHB1YmxpYyBidWlsZF9iYXNlCiB7CkBAIC0xMDk0LDYgKzEyNTEsOCBAQCBTSEFQ RSh2c2V0dmwsIHZzZXR2bCkKIFNIQVBFKHZzZXR2bCwgdnNldHZsbWF4KQogU0hBUEUobG9hZHN0 b3JlLCBsb2Fkc3RvcmUpCiBTSEFQRShpbmRleGVkX2xvYWRzdG9yZSwgaW5kZXhlZF9sb2Fkc3Rv cmUpCitTSEFQRSh0aF9sb2Fkc3RvcmVfd2lkdGgsIHRoX2xvYWRzdG9yZV93aWR0aCkKK1NIQVBF KHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCkK IFNIQVBFKGFsdSwgYWx1KQogU0hBUEUoYWx1X2ZybSwgYWx1X2ZybSkKIFNIQVBFKHdpZGVuX2Fs dSwgd2lkZW5fYWx1KQpAQCAtMTEwNiw2ICsxMjY1LDcgQEAgU0hBUEUobW92ZSwgbW92ZSkKIFNI QVBFKG1hc2tfYWx1LCBtYXNrX2FsdSkKIFNIQVBFKHJlZHVjX2FsdSwgcmVkdWNfYWx1KQogU0hB UEUocmVkdWNfYWx1X2ZybSwgcmVkdWNfYWx1X2ZybSkKK1NIQVBFKHRoX2V4dHJhY3QsIHRoX2V4 dHJhY3QpCiBTSEFQRShzY2FsYXJfbW92ZSwgc2NhbGFyX21vdmUpCiBTSEFQRSh2dW5kZWZpbmVk LCB2dW5kZWZpbmVkKQogU0hBUEUobWlzYywgbWlzYykKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv cmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmgKaW5kZXggYWMyYTI4Y2UwMTcuLmE3NjI0ZDBm YWJkIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1z aGFwZXMuaAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFw ZXMuaApAQCAtMjgsNiArMjgsOCBAQCBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0 IHZzZXR2bDsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdnNldHZsbWF4Owog ZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBsb2Fkc3RvcmU7CiBleHRlcm4gY29u c3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IGluZGV4ZWRfbG9hZHN0b3JlOworZXh0ZXJuIGNvbnN0 IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg7CitleHRlcm4gY29uc3Qg ZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoOwogZXh0ZXJu IGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBhbHU7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IGFsdV9mcm07CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0 IHdpZGVuX2FsdTsKQEAgLTQxLDYgKzQzLDcgQEAgZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBl ICpjb25zdCBtYXNrX2FsdTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgcmVk dWNfYWx1OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCByZWR1Y19hbHVfZnJt OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBzY2FsYXJfbW92ZTsKK2V4dGVy biBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdGhfZXh0cmFjdDsKIGV4dGVybiBjb25zdCBm dW5jdGlvbl9zaGFwZSAqY29uc3QgdnVuZGVmaW5lZDsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9z aGFwZSAqY29uc3QgbWlzYzsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdnNl dDsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNj IGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuY2MKaW5kZXggMjVlMGI2 ZTU2ZGUuLjQ0YjlmZWMxODk4IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZl Y3Rvci1idWlsdGlucy5jYworKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWls dGlucy5jYwpAQCAtOTM0LDYgKzkzNCwzMiBAQCBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9h cmdfdHlwZV9pbmZvIGV4dF92Y3JlYXRlX2FyZ3NbXQrCoMKgID0ge3J2dl9hcmdfdHlwZV9pbmZv IChSVlZfQkFTRV92ZWN0b3IpLArCoMKgwqDCoMKgIHJ2dl9hcmdfdHlwZV9pbmZvX2VuZH07CiAK Ky8qIEEgbGlzdCBvZiBhcmdzIGZvciB2ZWN0b3JfdHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlw ZSAqLCBzaXplX3QpCisgKiBmdW5jdGlvbi7CoCAqLworc3RhdGljIENPTlNURVhQUiBjb25zdCBy dnZfYXJnX3R5cGVfaW5mbyBzY2FsYXJfY29uc3RfcHRyX3NpemVfYXJnc1tdCivCoCA9IHtydnZf YXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2NhbGFyX2NvbnN0X3B0ciksCivCoMKgwqDCoCBydnZf YXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfc2l6ZSksIHJ2dl9hcmdfdHlwZV9pbmZvX2VuZH07CisK Ky8qIEEgbGlzdCBvZiBhcmdzIGZvciB2ZWN0b3JfdHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlw ZSAqLCBlZXc4X2luZGV4X3R5cGUpCisgKiBmdW5jdGlvbi7CoCAqLworc3RhdGljIENPTlNURVhQ UiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBzY2FsYXJfY29uc3RfcHRyX2luZGV4X2FyZ3NbXQor wqAgPSB7cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9jb25zdF9wdHIpLAorwqDC oMKgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Vuc2lnbmVkX3ZlY3RvciksIHJ2dl9h cmdfdHlwZV9pbmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZvciB2b2lkIGZ1bmMgKHNj YWxhcl90eXBlICosIGVldzhfaW5kZXhfdHlwZSwgdmVjdG9yX3R5cGUpCisgKiBmdW5jdGlvbi7C oCAqLworc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVfaW5mbyBzY2FsYXJfcHRy X2luZGV4X2FyZ3NbXQorwqAgPSB7cnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhcl9w dHIpLAorwqDCoMKgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3Vuc2lnbmVkX3ZlY3Rv ciksCivCoMKgwqDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0VfdmVjdG9yKSwgcnZ2X2Fy Z190eXBlX2luZm9fZW5kfTsKKworLyogQSBsaXN0IG9mIGFyZ3MgZm9yIHZvaWQgZnVuYyAoc2Nh bGFyX3R5cGUgKiwgc2l6ZV90LCB2ZWN0b3JfdHlwZSkKKyAqIGZ1bmN0aW9uLsKgICovCitzdGF0 aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9hcmdfdHlwZV9pbmZvIHNjYWxhcl9wdHJfc2l6ZV9hcmdz W10KK8KgID0ge3J2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zY2FsYXJfcHRyKSwKK8KgwqDC oMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zaXplKSwgcnZ2X2FyZ190eXBlX2luZm8g KFJWVl9CQVNFX3ZlY3RvciksCivCoMKgwqDCoCBydnZfYXJnX3R5cGVfaW5mb19lbmR9OworCiAv KiBBIGxpc3Qgb2Ygbm9uZSBwcmVkcyB0aGF0IHdpbGwgYmUgcmVnaXN0ZXJlZCBmb3IgaW50cmlu c2ljIGZ1bmN0aW9ucy7CoCAqLwogc3RhdGljIENPTlNURVhQUiBjb25zdCBwcmVkaWNhdGlvbl90 eXBlX2luZGV4IG5vbmVfcHJlZHNbXQrCoMKgID0ge1BSRURfVFlQRV9ub25lLCBOVU1fUFJFRF9U WVBFU307CkBAIC0xNDU1LDYgKzE0ODEsMTQgQEAgc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZf b3BfaW5mbyBpdV9zaGlmdF92dnZfb3BzCsKgwqDCoMKgwqAgcnZ2X2FyZ190eXBlX2luZm8gKFJW Vl9CQVNFX3ZlY3RvciksIC8qIFJldHVybiB0eXBlICovCsKgwqDCoMKgwqAgc2hpZnRfdnZfYXJn cyAvKiBBcmdzICovfTsKIAorLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlvbiBmb3Igc2Nh bGFyX3R5cGUgZnVuYyAodmVjdG9yX3R5cGUsIHNpemVfdCkKKyAqIGZ1bmN0aW9uIHJlZ2lzdHJh dGlvbi4gKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gaXVfeF9zX3Vfb3Bz CivCoCA9IHtpdV9vcHMswqDCoMKgwqDCoMKgwqDCoMKgIC8qIFR5cGVzICovCivCoMKgwqDCoCBP UF9UWVBFX3Z4LMKgwqDCoMKgwqDCoMKgIC8qIFN1ZmZpeCAqLworwqDCoMKgwqAgcnZ2X2FyZ190 eXBlX2luZm8gKFJWVl9CQVNFX3NjYWxhciksIC8qIFJldHVybiB0eXBlICovCivCoMKgwqDCoCB2 X3NpemVfYXJncyAvKiBBcmdzICovfTsKKwogLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlv biBmb3IgdmVjdG9yX3R5cGUgZnVuYyAodmVjdG9yX3R5cGUsIHNpemVfdCkKwqAgKiBmdW5jdGlv biByZWdpc3RyYXRpb24uICovCiBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGl1 X3NoaWZ0X3Z2eF9vcHMKQEAgLTI2MzgsNiArMjY3MiwzOCBAQCBzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHJ2dl9vcF9pbmZvIGFsbF92X3ZjcmVhdGVfbG11bDRfeDJfb3BzCsKgwqDCoMKgwqAgcnZ2 X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZsbXVsX2V4dF94MiksIC8qIFJldHVybiB0eXBlICov CsKgwqDCoMKgwqAgZXh0X3ZjcmVhdGVfYXJncyAvKiBBcmdzICovfTsKIAorLyogQSBzdGF0aWMg b3BlcmFuZCBpbmZvcm1hdGlvbiBmb3IgdmVjdG9yX3R5cGUgZnVuYyAoY29uc3Qgc2NhbGFyX3R5 cGUgKiwKKyAqIHNpemVfdCkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLsKgICovCitzdGF0aWMgQ09O U1RFWFBSIGNvbnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMK K8KgID0ge2FsbF9vcHMsCQkJCcKgIC8qIFR5cGVzwqAgKi8KK8KgwqDCoMKgIE9QX1RZUEVfdiwJ CQkJwqAgLyogU3VmZml4wqAgKi8KK8KgwqDCoMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFT RV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZcKgICovCivCoMKgwqDCoCBzY2FsYXJfY29uc3RfcHRy X3NpemVfYXJncyAvKiBBcmdzICovfTsKKworLyogQSBzdGF0aWMgb3BlcmFuZCBpbmZvcm1hdGlv biBmb3Igdm9pZCBmdW5jIChzY2FsYXJfdHlwZSAqLCBzaXplX3QsCisgKiB2ZWN0b3JfdHlwZSkg ZnVuY3Rpb24gcmVnaXN0cmF0aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9v cF9pbmZvIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMKK8KgID0ge2FsbF9vcHMsCQkJCS8qIFR5 cGVzwqAgKi8KK8KgwqDCoMKgIE9QX1RZUEVfdiwJCQkJLyogU3VmZml4wqAgKi8KK8KgwqDCoMKg IHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92b2lkKSwgLyogUmV0dXJuIHR5cGXCoCAqLwor wqDCoMKgwqAgc2NhbGFyX3B0cl9zaXplX2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGlj IG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKGNvbnN0IHNjYWxhcl90 eXBlICosCisgKiBpbmRleF90eXBlKSBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAgKi8KK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRl eF9vcHMKK8KgID0ge2FsbF9vcHMsCQkJCcKgIC8qIFR5cGVzwqAgKi8KK8KgwqDCoMKgIE9QX1RZ UEVfdiwJCQkJwqAgLyogU3VmZml4wqAgKi8KK8KgwqDCoMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChS VlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZcKgICovCivCoMKgwqDCoCBzY2FsYXJfY29u c3RfcHRyX2luZGV4X2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGljIG9wZXJhbmQgaW5m b3JtYXRpb24gZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgaW5kZXhfdHlwZSwKKyAqIHZl Y3Rvcl90eXBlKSBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAgKi8KK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMKK8KgID0ge2FsbF9v cHMsCQkJCS8qIFR5cGVzwqAgKi8KK8KgwqDCoMKgIE9QX1RZUEVfdiwJCQkJLyogU3VmZml4wqAg Ki8KK8KgwqDCoMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92b2lkKSwgLyogUmV0dXJu IHR5cGXCoCAqLworwqDCoMKgwqAgc2NhbGFyX3B0cl9pbmRleF9hcmdzIC8qIEFyZ3MgKi99Owor CiAvKiBBIHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0aW9uIGZvciB2ZWN0b3JfdHlwZSBmdW5jICh2 ZWN0b3JfdHlwZSkuCsKgwqDCoCBTb21lIGlucyBqdXN0IHN1cHBvcnRzIFNFVz0zMiwgc3VjaCBh cyBjcnlwdG8gdmVjdG9sIFp2a2cgZXh0ZW5zaW9uLgrCoCAqIGZ1bmN0aW9uIHJlZ2lzdHJhdGlv bi7CoCAqLwpAQCAtMjgxNiw2ICsyODgyLDEwIEBAIHN0YXRpYyBmdW5jdGlvbl9ncm91cF9pbmZv IGZ1bmN0aW9uX2dyb3Vwc1tdID0gewogI2RlZmluZSBERUZfUlZWX0ZVTkNUSU9OKE5BTUUsIFNI QVBFLCBQUkVEUywgT1BTX0lORk8pwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFwKwqDCoCB7I05BTUUsICZiYXNlczo6TkFNRSwgJnNoYXBlczo6U0hBUEUs IFBSRURTLCBPUFNfSU5GTywgUkVRVUlSRURfRVhURU5TSU9OU30sCiAjaW5jbHVkZSAicmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYiCisjdW5kZWYgREVGX1JWVl9GVU5DVElPTgor I2RlZmluZSBERUZfUlZWX0ZVTkNUSU9OKE5BTUUsIFNIQVBFLCBQUkVEUywgT1BTX0lORk8pwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKK8KgIHsjTkFN RSwgJmJhc2VzOjpOQU1FLCAmc2hhcGVzOjpTSEFQRSwgUFJFRFMsIE9QU19JTkZPLCBSRVFVSVJF RF9FWFRFTlNJT05TfSwKKyNpbmNsdWRlICJ0aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25z LmRlZiIKIH07CiAKIC8qIFRoZSBSVlYgdHlwZXMsIHdpdGggdGhlaXIgYnVpbHQtaW4KZGlmZiAt LWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmggYi9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oCmluZGV4IDU0Yzg4MjRmZjkyLi5hOGVl MzlhM2NiMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRp bnMuaAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oCkBAIC0x MTQsNiArMTE0LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBDUF9XUklURV9DU1IgPSAx VSA8PCA1OwogZW51bSByZXF1aXJlZF9leHQKIHsKwqDCoCBWRUNUT1JfRVhULMKgwqAgLyogVmVj dG9yIGV4dGVuc2lvbiAqLworwqAgWFRIRUFEVkVDVE9SX0VYVCzCoMKgIC8qIFhUaGVhZFZlY3Rv ciBleHRlbnNpb24gKi8KwqDCoCBaVkJCX0VYVCzCoMKgwqAgLyogQ3J5dG8gdmVjdG9yIFp2YmIg c3ViLWV4dCAqLwrCoMKgIFpWQkJfT1JfWlZLQl9FWFQsIC8qIENyeXRvIHZlY3RvciBadmJiIG9y IHp2a2Igc3ViLWV4dCAqLwrCoMKgIFpWQkNfRVhULMKgwqDCoCAvKiBDcnlwdG8gdmVjdG9yIFp2 YmMgc3ViLWV4dCAqLwpAQCAtMjM0LDYgKzIzNSw4IEBAIHN0cnVjdCBmdW5jdGlvbl9ncm91cF9p bmZvCsKgwqDCoMKgIHsKwqDCoMKgwqDCoMKgIGNhc2UgVkVDVE9SX0VYVDoKwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gVEFSR0VUX1ZFQ1RPUjsKK8KgwqDCoMKgwqAgY2FzZSBYVEhFQURWRUNUT1Jf RVhUOgorCXJldHVybiBUQVJHRVRfWFRIRUFEVkVDVE9SOwrCoMKgwqDCoMKgwqAgY2FzZSBaVkJC X0VYVDoKwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gVEFSR0VUX1pWQkI7CsKgwqDCoMKgwqDCoCBj YXNlIFpWQkJfT1JfWlZLQl9FWFQ6CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Qtcmlz Y3YgYi9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKaW5kZXggMzJkZTZiODUxYzEuLjM4NDk0MzIw ZDhiIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3QtcmlzY3YKKysrIGIvZ2NjL2NvbmZp Zy9yaXNjdi90LXJpc2N2CkBAIC0xLDYgKzEsNyBAQAogUklTQ1ZfQlVJTFRJTlNfSCA9ICQoc3Jj ZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmggXAogCQnCoMKgICQoc3Jj ZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmRlZiBcCiAJCcKgwqAgJChz cmNkaXIpL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiBc CivCoMKgwqDCoMKgwqAgJChzcmNkaXIpL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRp bnMtZnVuY3Rpb25zLmRlZiBcCiAJCcKgwqAgcmlzY3YtdmVjdG9yLXR5cGUtaW5kZXhlci5nZW4u ZGVmCiAKIHJpc2N2LWJ1aWx0aW5zLm86ICQoc3JjZGlyKS9jb25maWcvcmlzY3YvcmlzY3YtYnVp bHRpbnMuY2MgJChDT05GSUdfSCkgXApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi90aGVh ZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiBiL2djYy9jb25maWcvcmlzY3YvdGhlYWQt dmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmZkM2JhMjliYWU5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL2NvbmZpZy9y aXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZgpAQCAtMCwwICsxLDM5IEBA CisjaWZuZGVmIERFRl9SVlZfRlVOQ1RJT04KKyNkZWZpbmUgREVGX1JWVl9GVU5DVElPTihOQU1F LCBTSEFQRSwgUFJFRFMsIE9QU19JTkZPKQorI2VuZGlmCisKKyNkZWZpbmUgUkVRVUlSRURfRVhU RU5TSU9OUyBYVEhFQURWRUNUT1JfRVhUCitERUZfUlZWX0ZVTkNUSU9OICh2bGIsIHRoX2xvYWRz dG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZf UlZWX0ZVTkNUSU9OICh2bGgsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zf c2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHcsIHRoX2xvYWRzdG9y ZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZW X0ZVTkNUSU9OICh2bGJ1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3Nj YWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxodSwgdGhfbG9hZHN0b3Jl X3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX29wcykKK0RFRl9SVlZf RlVOQ1RJT04gKHZsd3UsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2Nh bGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c2IsIHRoX2xvYWRzdG9yZV93 aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX29wcykKK0RFRl9SVlZfRlVOQ1RJ T04gKHZzaCwgdGhfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9w dHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN3LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVf bV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHNiLCB0 aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6 ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHNoLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxf cHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9O ICh2bHN3LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25z dF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHNidSwgdGhfbG9hZHN0b3JlX3dp ZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQorREVGX1JW Vl9GVU5DVElPTiAodmxzaHUsIHRoX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zf c2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZsc3d1LCB0aF9s b2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfc2l6ZV9v cHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3NiLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9w cmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9zaXplX29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzc2gs IHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX3NpemVf b3BzKQorREVGX1JWVl9GVU5DVElPTiAodnNzdywgdGhfbG9hZHN0b3JlX3dpZHRoLCBub25lX21f cHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHhi LCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2Nv bnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHhoLCB0aF9pbmRleGVkX2xv YWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9v cHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHh3LCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwg ZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZV TkNUSU9OICh2bHhidSwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFs bF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx4aHUs IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29u c3RfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZseHd1LCB0aF9pbmRleGVkX2xv YWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRleF9v cHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3hiLCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwg bm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJ T04gKHZzeGgsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92 X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN4dywgdGhfaW5kZXhl ZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9v cHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3V4YiwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgs IG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNU SU9OICh2c3V4aCwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxs X3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3V4dywgdGhfaW5k ZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRl eF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2ZXh0X3hfdiwgdGhfZXh0cmFjdCwgbm9uZV9wcmVk cywgaXVfeF9zX3Vfb3BzKQorI3VuZGVmIFJFUVVJUkVEX0VYVEVOU0lPTlMKKworI3VuZGVmIERF Rl9SVlZfRlVOQ1RJT04KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9y Lm1kIGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKaW5kZXggNjk2YjgxNTI1MmQu LjBmMzcwMGQ5MjY5IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5t ZAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5tZApAQCAtMSw3ICsxLDk1IEBA CiAoZGVmaW5lX2NfZW51bSAidW5zcGVjIiBbCivCoCBVTlNQRUNfVEhfVkxCCivCoCBVTlNQRUNf VEhfVkxCVQorwqAgVU5TUEVDX1RIX1ZMSAorwqAgVU5TUEVDX1RIX1ZMSFUKK8KgIFVOU1BFQ19U SF9WTFcKK8KgIFVOU1BFQ19USF9WTFdVCisKK8KgIFVOU1BFQ19USF9WTFNCCivCoCBVTlNQRUNf VEhfVkxTQlUKK8KgIFVOU1BFQ19USF9WTFNICivCoCBVTlNQRUNfVEhfVkxTSFUKK8KgIFVOU1BF Q19USF9WTFNXCivCoCBVTlNQRUNfVEhfVkxTV1UKKworwqAgVU5TUEVDX1RIX1ZMWEIKK8KgIFVO U1BFQ19USF9WTFhCVQorwqAgVU5TUEVDX1RIX1ZMWEgKK8KgIFVOU1BFQ19USF9WTFhIVQorwqAg VU5TUEVDX1RIX1ZMWFcKK8KgIFVOU1BFQ19USF9WTFhXVQorCivCoCBVTlNQRUNfVEhfVlNVWEIK K8KgIFVOU1BFQ19USF9WU1VYSAorwqAgVU5TUEVDX1RIX1ZTVVhXCisKwqDCoCBVTlNQRUNfVEhf VldMRFNUCiBdKQogCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVkxNRU1fT1AgWwor wqAgVU5TUEVDX1RIX1ZMQiBVTlNQRUNfVEhfVkxCVQorwqAgVU5TUEVDX1RIX1ZMSCBVTlNQRUNf VEhfVkxIVQorwqAgVU5TUEVDX1RIX1ZMVyBVTlNQRUNfVEhfVkxXVQorXSkKKworKGRlZmluZV9p bnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZMU01FTV9PUCBbCivCoCBVTlNQRUNfVEhfVkxTQiBVTlNQ RUNfVEhfVkxTQlUKK8KgIFVOU1BFQ19USF9WTFNIIFVOU1BFQ19USF9WTFNIVQorwqAgVU5TUEVD X1RIX1ZMU1cgVU5TUEVDX1RIX1ZMU1dVCitdKQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQ RUNfVEhfVkxYTUVNX09QIFsKK8KgIFVOU1BFQ19USF9WTFhCIFVOU1BFQ19USF9WTFhCVQorwqAg VU5TUEVDX1RIX1ZMWEggVU5TUEVDX1RIX1ZMWEhVCivCoCBVTlNQRUNfVEhfVkxYVyBVTlNQRUNf VEhfVkxYV1UKK10pCisKKyhkZWZpbmVfaW50X2F0dHIgdmxtZW1fb3BfYXR0ciBbCivCoCAoVU5T UEVDX1RIX1ZMQiAiYiIpIChVTlNQRUNfVEhfVkxCVSAiYnUiKQorwqAgKFVOU1BFQ19USF9WTEgg ImgiKSAoVU5TUEVDX1RIX1ZMSFUgImh1IikKK8KgIChVTlNQRUNfVEhfVkxXICJ3IikgKFVOU1BF Q19USF9WTFdVICJ3dSIpCivCoCAoVU5TUEVDX1RIX1ZMU0IgImIiKSAoVU5TUEVDX1RIX1ZMU0JV ICJidSIpCivCoCAoVU5TUEVDX1RIX1ZMU0ggImgiKSAoVU5TUEVDX1RIX1ZMU0hVICJodSIpCivC oCAoVU5TUEVDX1RIX1ZMU1cgInciKSAoVU5TUEVDX1RIX1ZMU1dVICJ3dSIpCivCoCAoVU5TUEVD X1RIX1ZMWEIgImIiKSAoVU5TUEVDX1RIX1ZMWEJVICJidSIpCivCoCAoVU5TUEVDX1RIX1ZMWEgg ImgiKSAoVU5TUEVDX1RIX1ZMWEhVICJodSIpCivCoCAoVU5TUEVDX1RIX1ZMWFcgInciKSAoVU5T UEVDX1RIX1ZMWFdVICJ3dSIpCivCoCAoVU5TUEVDX1RIX1ZTVVhCICJiIikKK8KgIChVTlNQRUNf VEhfVlNVWEggImgiKQorwqAgKFVOU1BFQ19USF9WU1VYVyAidyIpCitdKQorCisoZGVmaW5lX2lu dF9hdHRyIHZsbWVtX29yZGVyX2F0dHIgWworwqAgKFVOU1BFQ19USF9WTFhCICIiKQorwqAgKFVO U1BFQ19USF9WTFhIICIiKQorwqAgKFVOU1BFQ19USF9WTFhXICIiKQorwqAgKFVOU1BFQ19USF9W U1VYQiAidSIpCivCoCAoVU5TUEVDX1RIX1ZTVVhIICJ1IikKK8KgIChVTlNQRUNfVEhfVlNVWFcg InUiKQorXSkKKworKGRlZmluZV9pbnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZTTUVNX09QIFsKK8Kg IFVOU1BFQ19USF9WTEIKK8KgIFVOU1BFQ19USF9WTEgKK8KgIFVOU1BFQ19USF9WTFcKK10pCisK KyhkZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9WU1NNRU1fT1AgWworwqAgVU5TUEVDX1RI X1ZMU0IKK8KgIFVOU1BFQ19USF9WTFNICivCoCBVTlNQRUNfVEhfVkxTVworXSkKKworKGRlZmlu ZV9pbnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZTWE1FTV9PUCBbCivCoCBVTlNQRUNfVEhfVkxYQgor wqAgVU5TUEVDX1RIX1ZMWEgKK8KgIFVOU1BFQ19USF9WTFhXCivCoCBVTlNQRUNfVEhfVlNVWEIK K8KgIFVOU1BFQ19USF9WU1VYSAorwqAgVU5TUEVDX1RIX1ZTVVhXCitdKQorCiAoZGVmaW5lX21v ZGVfaXRlcmF0b3IgVl9WTFNfVlQgW1YgVkxTIFZUXSkKIChkZWZpbmVfbW9kZV9pdGVyYXRvciBW X1ZCX1ZMU19WVCBbViBWQiBWTFMgVlRdKQogCkBAIC0xMDAsMyArMTg4LDE2OCBAQArCoMKgIH0K wqDCoCBbKHNldF9hdHRyICJ0eXBlIiAidmxkbSx2c3RtLHZtYWx1LHZtYWx1LHZtYWx1IikKwqDC oMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKKworKGRlZmluZV9leHBhbmQgIkBwcmVk X21vdl93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlZfVkxTIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIikKK8KgwqDCoCAoaWZfdGhlbl9lbHNlOlZf VkxTCivCoMKgwqDCoMKgICh1bnNwZWM6PFZNPgorCVsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZl Y3Rvcl9tYXNrX29wZXJhbmQiKQorCSAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3RoX29w ZXJhbmQiKQorCSAobWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCIpCisJIChtYXRj aF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVyYW5kIikKKwkgKG1hdGNoX29wZXJhbmQgNyAiY29u c3RfaW50X29wZXJhbmQiKQorCSAocmVnOlNJIFZMX1JFR05VTSkKKwkgKHJlZzpTSSBWVFlQRV9S RUdOVU0pXSBVTlNQRUNfVEhfVkxNRU1fT1ApCivCoMKgwqDCoMKgIChtYXRjaF9vcGVyYW5kOlZf VkxTIDMgInZlY3Rvcl9tb3ZlX29wZXJhbmQiKQorwqDCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpW X1ZMUyAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIpKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RP UiIKK8KgIHt9KQorCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqcHJlZF9tb3Zfd2lkdGg8dmxt ZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX1ZMUyAwICJub25p bW1lZGlhdGVfb3BlcmFuZCIJwqDCoMKgICI9dnIswqDCoMKgIHZyLMKgwqDCoCB2ZCzCoMKgwqDC oCBtLMKgwqDCoCB2cizCoMKgwqAgdnIiKQorwqDCoMKgIChpZl90aGVuX2Vsc2U6Vl9WTFMKK8Kg wqDCoMKgwqAgKHVuc3BlYzo8Vk0+CisJWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21h c2tfb3BlcmFuZCIJwqDCoCAidm1XYzEswqDCoCBXYzEswqDCoMKgIHZtLCB2bVdjMSzCoMKgIFdj MSzCoMKgIFdjMSIpCisJIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCIJ wqDCoMKgwqDCoCAiwqDCoCBySyzCoMKgwqAgcksswqDCoMKgIHJLLMKgwqDCoCBySyzCoMKgwqAg cksswqDCoMKgIHJLIikKKwkgKG1hdGNoX29wZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQiCQnC oCAiwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzC oMKgwqDCoCBpIikKKwkgKG1hdGNoX29wZXJhbmQgNiAiY29uc3RfaW50X29wZXJhbmQiCQnCoCAi wqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKg wqDCoCBpIikKKwkgKG1hdGNoX29wZXJhbmQgNyAiY29uc3RfaW50X29wZXJhbmQiCQnCoCAiwqDC oMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDC oCBpIikKKwkgKHJlZzpTSSBWTF9SRUdOVU0pCisJIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5T UEVDX1RIX1ZMTUVNX09QKQorwqDCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpWX1ZMUyAzICJyZWdf b3JfbWVtX29wZXJhbmQiCcKgwqDCoMKgwqAgIsKgwqDCoCBtLMKgwqDCoMKgIG0swqDCoMKgwqAg bSzCoMKgwqAgdnIswqDCoMKgIHZyLMKgwqDCoCB2ciIpCivCoMKgwqDCoMKgIChtYXRjaF9vcGVy YW5kOlZfVkxTIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIgnCoMKgwqAgIsKgwqDCoCAwLMKgwqDC oCB2dSzCoMKgwqAgdnUswqDCoMKgIHZ1LMKgwqDCoCB2dSzCoMKgwqDCoCAwIikpKV0KK8KgICIo VEFSR0VUX1hUSEVBRFZFQ1RPUgorwqDCoMKgICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5k c1swXSwgPE1PREU+bW9kZSkKKwl8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1szXSwgPE1P REU+bW9kZSkpKSIKK8KgICJACivCoMKgIHZsPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzJXAxCivC oMKgIHZsPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzCivCoMKgIHZsPHZsbWVtX29wX2F0dHI+LnZc dCUwLCUzLCUxLnQKK8KgwqAgdnM8dmxtZW1fb3BfYXR0cj4udlx0JTMsJTAlcDEKK8KgwqAgdm12 LnYudlx0JTAsJTMKK8KgwqAgdm12LnYudlx0JTAsJTMiCivCoCAiJiYgcmVnaXN0ZXJfb3BlcmFu ZCAob3BlcmFuZHNbMF0sIDxNT0RFPm1vZGUpCivCoMKgICYmIHJlZ2lzdGVyX29wZXJhbmQgKG9w ZXJhbmRzWzNdLCA8TU9ERT5tb2RlKQorwqDCoCAmJiBzYXRpc2ZpZXNfY29uc3RyYWludF92dSAo b3BlcmFuZHNbMl0pCivCoMKgICYmIElOVFZBTCAob3BlcmFuZHNbN10pID09IHJpc2N2X3ZlY3Rv cjo6VkxNQVgiCivCoCBbKHNldCAobWF0Y2hfZHVwIDApIChtYXRjaF9kdXAgMykpXQorwqAgIiIK K8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2bGRlLHZsZGUsdmxkZSx2c3RlLHZpbW92LHZpbW92IikK K8KgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVk X3N0b3JlX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VkkgMCAibWVtb3J5X29wZXJhbmQiCQkgIittIikKKwkoaWZfdGhlbl9lbHNlOlZJCisJwqAg KHVuc3BlYzo8Vk0+CisJwqDCoMKgIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNr X29wZXJhbmQiICJ2bVdjMSIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgMyAidmVjdG9yX2xl bmd0aF9vcGVyYW5kIsKgwqDCoCAiwqDCoCBySyIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQg NCAiY29uc3RfaW50X29wZXJhbmQiCSLCoMKgwqAgaSIpCisJwqDCoMKgwqAgKHJlZzpTSSBWTF9S RUdOVU0pCisJwqDCoMKgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVlNNRU1f T1ApCisJwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFuZCIJICLCoMKgwqAg dnIiKQorCcKgIChtYXRjaF9kdXAgMCkpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAg InZzPHZsbWVtX29wX2F0dHI+LnZcdCUyLCUwJXAxIgorwqAgWyhzZXRfYXR0ciAidHlwZSIgInZz dGUiKQorwqDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKQorwqDCoCAoc2V0IChhdHRyICJh dmxfdHlwZV9pZHgiKSAoY29uc3RfaW50IDQpKQorwqDCoCAoc2V0X2F0dHIgInZsX29wX2lkeCIg IjMiKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRfc3RyaWRlZF9sb2FkX3dpZHRoPHZsbWVtX29w X2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVnaXN0ZXJfb3Bl cmFuZCIJwqDCoMKgwqDCoCAiPXZyLMKgwqDCoCB2cizCoMKgwqAgdmQiKQorCShpZl90aGVuX2Vs c2U6VkkKKwnCoCAodW5zcGVjOjxWTT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAi dmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2MxLMKgwqAgV2MxLMKgwqDCoCB2bSIpCisJwqDCoMKg wqAgKG1hdGNoX29wZXJhbmQgNSAidmVjdG9yX2xlbmd0aF9vcGVyYW5kIsKgwqDCoCAiwqDCoCBy SyzCoMKgwqAgcksswqDCoMKgIHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA2ICJjb25z dF9pbnRfb3BlcmFuZCIJIsKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSIpCisJwqDCoMKg wqAgKG1hdGNoX29wZXJhbmQgNyAiY29uc3RfaW50X29wZXJhbmQiCSLCoMKgwqAgaSzCoMKgwqDC oCBpLMKgwqDCoMKgIGkiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDggImNvbnN0X2ludF9v cGVyYW5kIgkiwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpIikKKwnCoMKgwqDCoCAocmVn OlNJIFZMX1JFR05VTSkKKwnCoMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19U SF9WTFNNRU1fT1ApCisJwqAgKHVuc3BlYzpWSQorCcKgwqDCoCBbKG1hdGNoX29wZXJhbmQ6Vkkg MyAibWVtb3J5X29wZXJhbmQiCSAiwqDCoMKgIG0swqDCoMKgwqAgbSzCoMKgwqDCoCBtIikKKwnC oMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA0ICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIsKgwqAgIsKg wqAgckoswqDCoMKgIHJKLMKgwqDCoCBySiIpXSBVTlNQRUNfVEhfVkxTTUVNX09QKQorCcKgICht YXRjaF9vcGVyYW5kOlZJIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIsKgwqDCoMKgwqAgIsKgwqDC oCAwLMKgwqDCoCB2dSzCoMKgwqAgdnUiKSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivC oCAidmxzPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzLCV6NCVwMSIKK8KgIFsoc2V0X2F0dHIgInR5 cGUiICJ2bGRzIikKK8KgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5l X2luc24gIkBwcmVkX3N0cmlkZWRfc3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivC oCBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJtZW1vcnlfb3BlcmFuZCIJCSAiK20iKQorCShp Zl90aGVuX2Vsc2U6VkkKKwnCoCAodW5zcGVjOjxWTT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5k OjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2MxIikKKwnCoMKgwqDCoCAobWF0Y2hf b3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiwqDCoMKgICLCoMKgIHJLIikKKwnCoMKg wqDCoCAobWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKgwqDCoCBpIikKKwnC oMKgwqDCoCAocmVnOlNJIFZMX1JFR05VTSkKKwnCoMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05V TSldIFVOU1BFQ19USF9WU1NNRU1fT1ApCisJwqAgKHVuc3BlYzpWSQorCcKgwqDCoCBbKG1hdGNo X29wZXJhbmQgMiAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCLCoMKgICLCoMKgIHJKIikKKwnCoMKg wqDCoCAobWF0Y2hfb3BlcmFuZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIsKgwqDCoMKgwqDCoCAi wqDCoCB2ciIpXSBVTlNQRUNfVEhfVlNTTUVNX09QKQorCcKgIChtYXRjaF9kdXAgMCkpKV0KK8Kg ICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZzczx2bG1lbV9vcF9hdHRyPi52XHQlMywlMCwl ejIlcDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidnN0cyIpCivCoMKgIChzZXRfYXR0ciAibW9k ZSIgIjxNT0RFPiIpCivCoMKgIChzZXQgKGF0dHIgImF2bF90eXBlX2lkeCIpIChjb25zdF9pbnQg NSkpXSkKKworKGRlZmluZV9pbnNuICJAcHJlZF9pbmRleGVkX2xvYWRfd2lkdGg8dmxtZW1fb3Bf YXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVy YW5kIgnCoMKgwqDCoCAiPXZkLCB2cix2ZCwgdnIiKQorCShpZl90aGVuX2Vsc2U6VkkKKwnCoCAo dW5zcGVjOjxWTT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tf b3BlcmFuZCLCoCAiIHZtLFdjMSx2bSxXYzEiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDUg InZlY3Rvcl9sZW5ndGhfb3BlcmFuZCLCoMKgwqDCoCAiIHJLLCBySyxySywgcksiKQorCcKgwqDC oMKgIChtYXRjaF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVyYW5kIgkgIsKgIGkswqAgaSwgaSzC oCBpIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA3ICJjb25zdF9pbnRfb3BlcmFuZCIJICLC oCBpLMKgIGksIGkswqAgaSIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJhbmQgOCAiY29uc3RfaW50 X29wZXJhbmQiCSAiwqAgaSzCoCBpLCBpLMKgIGkiKQorCcKgwqDCoMKgIChyZWc6U0kgVkxfUkVH TlVNKQorCcKgwqDCoMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMWE1FTV9P UCkKKwnCoCAodW5zcGVjOlZJCisJwqDCoMKgIFsobWF0Y2hfb3BlcmFuZCAzICJwbW9kZV9yZWdf b3JfMF9vcGVyYW5kIsKgwqDCoCAiIHJKLCBySixySiwgckoiKQorCcKgwqDCoMKgIChtZW06QkxL IChzY3JhdGNoKSkKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpWSSA0ICJyZWdpc3Rlcl9vcGVy YW5kIiAiIHZyLCB2cix2ciwgdnIiKV0gVU5TUEVDX1RIX1ZMWE1FTV9PUCkKKwnCoCAobWF0Y2hf b3BlcmFuZDpWSSAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCLCoMKgwqDCoMKgwqAgIiB2dSwgdnUs IDAswqAgMCIpKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2bHg8dmxtZW1fb3Bf YXR0cj4udlx0JTAsKCV6MyksJTQlcDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidmxkdXgiKQor wqDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRf aW5kZXhlZF88dmxtZW1fb3JkZXJfYXR0cj5zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2Rl PiIKK8KgIFsoc2V0IChtZW06QkxLIChzY3JhdGNoKSkKKwkodW5zcGVjOkJMSworCcKgIFsodW5z cGVjOjxWTT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMCAidmVjdG9yX21hc2tfb3Bl cmFuZCIgInZtV2MxIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3Ro X29wZXJhbmQiwqDCoMKgICLCoMKgIHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA1ICJj b25zdF9pbnRfb3BlcmFuZCIJIsKgwqDCoCBpIikKKwnCoMKgwqDCoCAocmVnOlNJIFZMX1JFR05V TSkKKwnCoMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU1hNRU1fT1Ap CisJwqDCoCAobWF0Y2hfb3BlcmFuZCAxICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIsKgwqDCoMKg wqAgIsKgIHJKIikKKwnCoMKgIChtYXRjaF9vcGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJhbmQi ICLCoCB2ciIpCisJwqDCoCAobWF0Y2hfb3BlcmFuZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIsKg ICLCoCB2ciIpXSBVTlNQRUNfVEhfVlNYTUVNX09QKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RP UiIKK8KgICJ2czx2bG1lbV9vcmRlcl9hdHRyPng8dmxtZW1fb3BfYXR0cj4udlx0JTMsKCV6MSks JTIlcDAiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidnN0dXgiKQorwqDCoCAoc2V0X2F0dHIgIm1v ZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfZXhwYW5kICJAcHJlZF90aF9leHRyYWN0PG1vZGU+ IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJ KHVuc3BlYzo8VkVMPgorCcKgIFsodmVjX3NlbGVjdDo8VkVMPgorCcKgwqDCoMKgIChtYXRjaF9v cGVyYW5kOlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIikKKwnCoMKgwqDCoCAocGFyYWxsZWwg WyhtYXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyIildKSkKKwnCoMKgIChy ZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1ZQUkVESUNBVEUpKV0KK8KgICJUQVJHRVRfWFRI RUFEVkVDVE9SIgore30pCisKKyhkZWZpbmVfaW5zbiAiKnByZWRfdGhfZXh0cmFjdDxtb2RlPiIK K8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWRUw+IDAgInJlZ2lzdGVyX29wZXJhbmQiwqDCoCAi PXIiKQorwqAgKHVuc3BlYzo8VkVMPgorwqDCoMKgIFsodmVjX3NlbGVjdDo8VkVMPgorwqDCoMKg wqDCoMKgIChtYXRjaF9vcGVyYW5kOlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidnIiKQor wqDCoMKgwqDCoMKgIChwYXJhbGxlbCBbKG1hdGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3Bl cmFuZCIgInIiKV0pKQorwqDCoMKgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVlBS RURJQ0FURSkpXQorwqAgIlRBUkdFVF9YVEhFQURWRUNUT1IiCivCoCAidmV4dC54LnZcdCUwLCUx LCUyIgorwqAgWyhzZXRfYXR0ciAidHlwZSIgInZpbW92dngiKQorwqDCoCAoc2V0X2F0dHIgIm1v ZGUiICI8TU9ERT4iKV0pCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjNjMTJjMTI0NTk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jCkBAIC0wLDAg KzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJj aD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLworLyogeyBkZy1maW5h bCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworI2luY2x1ZGUgInJpc2N2 X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKgl0aC52c2V0aXZsaVx0emVybyw0LGUzMixt MSx0dSxtYQorKioJdGgudmxiXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52bGJc LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZb MC05XSssXHMqdlswLTldKworKioJdGgudmFkZFwudnZcdHZbMC05XSssXHMqdlswLTldKyxccyp2 WzAtOV0rCisqKgl0aC52c2JcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXJldAorKi8K K3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAqb3V0KQoreworwqDCoMKgIHZpbnQzMm0xX3QgdiA9 IF9fcmlzY3ZfdGhfdmxiX3ZfaTMybTEgKGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHYyID0g X19yaXNjdl90aF92bGJfdl9pMzJtMV90dSAodiwgaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3Qg djMgPSBfX3Jpc2N2X3ZhZGRfdnZfaTMybTEgKHYyLCB2MiwgNCk7CivCoMKgwqAgdmludDMybTFf dCB2NCA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMV90dSAodjMsIHYyLCB2MiwgNCk7CivCoMKgwqAg X19yaXNjdl90aF92c2Jfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMjoKKyoq CXRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxtLnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1h CisqKgl0aC52bGIudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKgl0aC52YWRkXC52 dlx0dlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSsKKyoqCXRoLnZhZGRcLnZ2XHR2WzEtOV1b MC05XT8sXHMqdlswLTldKyxccyp2WzAtOV0rLFxzKnYwLnQKKyoqCXRoLnZzYi52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpCisqKglyZXQKKyovCit2b2lkIGYyICh2b2lkICogaW4sIHZvaWQgKm91 dCkKK3sKK8KgwqDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgwqDCoCBh c20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqDCoMKgIHZpbnQzMm0xX3QgdiA9IF9fcmlz Y3ZfdGhfdmxiX3ZfaTMybTEgKGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHYyID0gX19yaXNj dl90aF92bGJfdl9pMzJtMV9tIChtYXNrLCBpbiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2MyA9 IF9fcmlzY3ZfdmFkZF92dl9pMzJtMSAodjIsIHYyLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHY0 ID0gX19yaXNjdl92YWRkX3Z2X2kzMm0xX20gKG1hc2ssIHYzLCB2MywgNCk7CivCoMKgwqAgX19y aXNjdl90aF92c2Jfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoqCXRo LnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxtLnZcdHZbMC05 XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11Cisq Kgl0aC52bGJcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZsYi52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZbMC05XSss XHMqdlswLTldKworKioJdGgudmFkZFwudnZcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKnZb MC05XSssXHMqdjAudAorKioJdGgudnNiLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXJl dAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0KQoreworwqDCoMKgIHZib29sMzJf dCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqDCoMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVt b3J5Iik7CivCoMKgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJfdl9pMzJtMSAoaW4s IDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0xX3R1bXUg KG1hc2ssIHYsIGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z2 X2kzMm0xICh2MiwgdjIsIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRf dnZfaTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCB2MiwgNCk7CivCoMKgwqAgX19yaXNjdl90aF92 c2Jfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzBiZWYzNjkzNzUKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGJ1 LXZzYi5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAq LworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLwor I2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKgl0aC52c2V0aXZs aVx0emVybyw0LGUzMixtMSx0dSxtYQorKioJdGgudmxidVwudlx0dlswLTldKywwXChbYS14MC05 XStcKQorKioJdGgudmxidVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmFkZFwu dmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZhZGRcLnZpXHR2WzAtOV0rLFxz KnZbMC05XSssXHMqLTE2CisqKgl0aC52c2JcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoq CXJldAorKi8KK3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQorewor wqDCoMKgIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsYnVfdl91MzJtMSAoaW4sIDQpOwor wqDCoMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTFfdHUgKHYsIGlu LCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIs IC0xNiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFf dHUgKHYzLCB2MiwgLTE2LCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3RoX3ZzYl92X3UzMm0xIChvdXQs IHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKioJdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8s ZTgsbWY0LHRhLG1hCisqKgl0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgu dnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqCXRoLnZsYnUudlx0dlswLTldKywwXChb YS14MC05XStcKSx2MC50CisqKgl0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0x NgorKioJdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKi0xNixccyp2MC50 CisqKgl0aC52c2Iudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwordm9pZCBm MiAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoMKgwqAgdmJvb2wzMl90 IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoMKgwqAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1v cnkiKTsKK8KgwqDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJ1X3ZfdTMybTEgKGlu LCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xX20g KG1hc2ssIGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91 MzJtMSAodjIsIC0xNiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRf dnhfdTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoMKgwqAgX19yaXNjdl90aF92c2Jfdl91 MzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoqCXRoLnZzZXR2bGlcdFthLXgw LTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11CisqKgl0aC52bGJ1XC52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52bGJ1LnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCksdjAudAorKioJdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqCXRo LnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAudAorKioJdGgu dnNiLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXJldAorKi8KK3ZvaWQgZjMgKHZvaWQg KiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqDCoMKgIHZib29sMzJfdCBtYXNrID0g Kih2Ym9vbDMyX3QqKWluOworwqDCoMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivC oMKgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xIChpbiwgNCk7CivC oMKgwqAgdnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsYnVfdl91MzJtMV90dW11IChtYXNr LCB2LCBpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMy bTEgKHYyLCAtMTYsIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4 X3UzMm0xX3R1bXUgKG1hc2ssIHYzLCB2MiwgLTE2LCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3RoX3Zz Yl92X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaC12c2guYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaC12c2guYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2M4YjVjY2MxNmIKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNo LmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZlY3RvciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisv KiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rpb24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5j bHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisKKy8qCisqKiBmMToKKyoqCXRoLnZzZXRpdmxpXHR6 ZXJvLDQsZTMyLG0xLHR1LG1hCisqKgl0aC52bGhcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkK KyoqCXRoLnZsaFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmFkZFwudmlcdHZb MC05XSssXHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05 XSssXHMqLTE2CisqKgl0aC52c2hcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXJldAor Ki8KK3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgpCit7CivCoMKgwqAg dmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGhfdl9pMzJtMSAoaW4sIDQpOworwqDCoMKgIHZp bnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xX3R1ICh2LCBpbiwgNCk7CivCoMKg wqAgdmludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMSAodjIsIC0xNiwgNCk7CivC oMKgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV90dSAodjMsIHYyLCAt MTYsIDQpOworwqDCoMKgIF9fcmlzY3ZfdGhfdnNoX3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQor CisvKgorKiogZjI6CisqKgl0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEK KyoqCXRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52c2V0aXZsaVx0emVy byw0LGUzMixtMSx0YSxtYQorKioJdGgudmxoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAu dAorKioJdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZhZGRc LnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAudAorKioJdGgudnNoLnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwg dm9pZCAqb3V0LCBpbnQzMl90IHgpCit7CivCoMKgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29s MzJfdCopaW47CivCoMKgwqAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgwqDCoCB2 aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xIChpbiwgNCk7CivCoMKgwqAgdmlu dDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTFfbSAobWFzaywgaW4sIDQpOworwqDC oMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCAtMTYsIDQpOwor wqDCoMKgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfbSAobWFzaywgdjMs IC0xNiwgNCk7CivCoMKgwqAgX19yaXNjdl90aF92c2hfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9 CisKKy8qCisqKiBmMzoKKyoqCXRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxt YQorKioJdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6 ZXJvLDQsZTMyLG0xLHR1LG11CisqKgl0aC52bGhcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkK KyoqCXRoLnZsaC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZp XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKgl0aC52YWRkXC52aVx0dlsxLTldWzAtOV0/ LFxzKnZbMC05XSssXHMqLTE2LFxzKnYwLnQKKyoqCXRoLnZzaC52XHR2WzAtOV0rLDBcKFthLXgw LTldK1wpCisqKglyZXQKKyovCit2b2lkIGYzICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJf dCB4KQoreworwqDCoMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqDCoMKg IGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoMKgwqAgdmludDMybTFfdCB2ID0gX19y aXNjdl90aF92bGhfdl9pMzJtMSAoaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jp c2N2X3RoX3ZsaF92X2kzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsKK8KgwqDCoCB2aW50MzJt MV90IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgLTE2LCA0KTsKK8KgwqDCoCB2aW50 MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xX3R1bXUgKG1hc2ssIHYzLCB2MiwgLTE2 LCA0KTsKK8KgwqDCoCBfX3Jpc2N2X3RoX3ZzaF92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3ZsaHUtdnNoLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bGh1LXZzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5i N2MwMDQwNGYxOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaHUtdnNoLmMKQEAgLTAsMCArMSw2OCBAQAorLyogeyBk Zy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3h0aGVhZHZl Y3RvciAtbWFiaT1pbHAzMmQgLU8zIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgY2hlY2stZnVuY3Rp b24tYm9kaWVzICIqKiIgIiIgfSB9ICovCisjaW5jbHVkZSAicmlzY3ZfdGhfdmVjdG9yLmgiCisK Ky8qCisqKiBmMToKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG1hCisqKgl0aC52 bGh1XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52bGh1XC52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpCisqKgl0aC52YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgor KioJdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZzaFwudlx0 dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwordm9pZCBmMSAodm9pZCAqIGluLCB2 b2lkICpvdXQsIHVpbnQzMl90IHgpCit7CivCoMKgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3Zf dGhfdmxodV92X3UzMm0xIChpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2 X3RoX3ZsaHVfdl91MzJtMV90dSAodiwgaW4sIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYzID0g X19yaXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2 NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV90dSAodjMsIHYyLCAtMTYsIDQpOworwqDCoMKgIF9f cmlzY3ZfdGhfdnNoX3ZfdTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjI6CisqKgl0 aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqCXRoLnZsbS52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0YSxtYQor KioJdGgudmxodS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZp XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKgl0aC52YWRkXC52aVx0dlsxLTldWzAtOV0/ LFxzKnZbMC05XSssXHMqLTE2LFxzKnYwLnQKKyoqCXRoLnZzaC52XHR2WzAtOV0rLDBcKFthLXgw LTldK1wpCisqKglyZXQKKyovCit2b2lkIGYyICh2b2lkICogaW4sIHZvaWQgKm91dCwgdWludDMy X3QgeCkKK3sKK8KgwqDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgwqDC oCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqDCoMKgIHZ1aW50MzJtMV90IHYgPSBf X3Jpc2N2X3RoX3ZsaHVfdl91MzJtMSAoaW4sIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYyID0g X19yaXNjdl90aF92bGh1X3ZfdTMybTFfbSAobWFzaywgaW4sIDQpOworwqDCoMKgIHZ1aW50MzJt MV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgwqDCoCB2dWlu dDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV9tIChtYXNrLCB2MywgLTE2LCA0KTsK K8KgwqDCoCBfX3Jpc2N2X3RoX3ZzaF92X3UzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoq IGYzOgorKioJdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKgl0aC52 bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIs bTEsdHUsbXUKKyoqCXRoLnZsaHVcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZs aHUudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKgl0aC52YWRkXC52aVx0dlswLTld Kyxccyp2WzAtOV0rLFxzKi0xNgorKioJdGgudmFkZFwudmlcdHZbMS05XVswLTldPyxccyp2WzAt OV0rLFxzKi0xNixccyp2MC50CisqKgl0aC52c2gudlx0dlswLTldKywwXChbYS14MC05XStcKQor KioJcmV0CisqLwordm9pZCBmMyAodm9pZCAqIGluLCB2b2lkICpvdXQsIHVpbnQzMl90IHgpCit7 CivCoMKgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoMKgwqAgYXNtIHZv bGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgwqDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90 aF92bGh1X3ZfdTMybTEgKGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3Zf dGhfdmxodV92X3UzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFf dCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0xNiwgNCk7CivCoMKgwqAgdnVpbnQz Mm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYs IDQpOworwqDCoMKgIF9fcmlzY3ZfdGhfdnNoX3ZfdTMybTEgKG91dCwgdjQsIDQpOworfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Iv dmx3LXZzdy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0 b3Ivdmx3LXZzdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xN2E1 MzAxMmFjZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYveHRoZWFkdmVjdG9yL3Zsdy12c3cuYwpAQCAtMCwwICsxLDY4IEBACisvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9y IC1tYWJpPWlscDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1i b2RpZXMgIioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNjdl90aF92ZWN0b3IuaCIKKworLyoK KyoqIGYxOgorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbWEKKyoqCXRoLnZsd1wu dlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmx3XC52XHR2WzAtOV0rLDBcKFthLXgw LTldK1wpCisqKgl0aC52YWRkXC52eFx0dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTldKwor KioJdGgudmFkZFwudnhcdHZbMC05XSssXHMqdlswLTldKyxccypbYS14MC05XSsKKyoqCXRoLnZz d1wudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJcmV0CisqLwordm9pZCBmMSAodm9pZCAq IGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sKK8KgwqDCoCB2aW50MzJtMV90IHYgPSBfX3Jp c2N2X3RoX3Zsd192X2kzMm0xIChpbiwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2MiA9IF9fcmlz Y3ZfdGhfdmx3X3ZfaTMybTFfdHUgKHYsIGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90IHYzID0g X19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgeCwgNCk7CivCoMKgwqAgdmludDMybTFfdCB2NCA9 IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV90dSAodjMsIHYyLCB4LCA0KTsKK8KgwqDCoCBfX3Jpc2N2 X3RoX3Zzd192X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYyOgorKioJdGgudnNl dHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKgl0aC52bG0udlx0dlswLTldKyww XChbYS14MC05XStcKQorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqCXRo LnZsdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZ4XHR2WzAt OV0rLFxzKnZbMC05XSssXHMqW2EteDAtOV0rCisqKgl0aC52YWRkXC52eFx0dlsxLTldWzAtOV0/ LFxzKnZbMC05XSssXHMqW2EteDAtOV0rLFxzKnYwLnQKKyoqCXRoLnZzdy52XHR2WzAtOV0rLDBc KFthLXgwLTldK1wpCisqKglyZXQKKyovCit2b2lkIGYyICh2b2lkICogaW4sIHZvaWQgKm91dCwg aW50MzJfdCB4KQoreworwqDCoMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOwor wqDCoMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoMKgwqAgdmludDMybTFfdCB2 ID0gX19yaXNjdl90aF92bHdfdl9pMzJtMSAoaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjIg PSBfX3Jpc2N2X3RoX3Zsd192X2kzMm0xX20gKG1hc2ssIGluLCA0KTsKK8KgwqDCoCB2aW50MzJt MV90IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgeCwgNCk7CivCoMKgwqAgdmludDMy bTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV9tIChtYXNrLCB2MywgeCwgNCk7CivCoMKg wqAgX19yaXNjdl90aF92c3dfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoK KyoqCXRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxtLnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1 LG11CisqKgl0aC52bHdcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZsdy52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZ4XHR2WzAtOV0rLFxzKnZb MC05XSssXHMqW2EteDAtOV0rCisqKgl0aC52YWRkXC52eFx0dlsxLTldWzAtOV0/LFxzKnZbMC05 XSssXHMqW2EteDAtOV0rLFxzKnYwLnQKKyoqCXRoLnZzdy52XHR2WzAtOV0rLDBcKFthLXgwLTld K1wpCisqKglyZXQKKyovCit2b2lkIGYzICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4 KQoreworwqDCoMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqDCoMKgIGFz bSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoMKgwqAgdmludDMybTFfdCB2ID0gX19yaXNj dl90aF92bHdfdl9pMzJtMSAoaW4sIDQpOworwqDCoMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2 X3RoX3Zsd192X2kzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsKK8KgwqDCoCB2aW50MzJtMV90 IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgeCwgNCk7CivCoMKgwqAgdmludDMybTFf dCB2NCA9IF9fcmlzY3ZfdmFkZF92eF9pMzJtMV90dW11IChtYXNrLCB2MywgdjIsIHgsIDQpOwor wqDCoMKgIF9fcmlzY3ZfdGhfdnN3X3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQpkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12 c3cuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zs d3UtdnN3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxODdjZmM4 NTJiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di94dGhlYWR2ZWN0b3Ivdmx3dS12c3cuYwpAQCAtMCwwICsxLDY4IEBACisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1t YWJpPWlscDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2Rp ZXMgIioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNjdl90aF92ZWN0b3IuaCIKKworLyoKKyoq IGYxOgorKioJdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbWEKKyoqCXRoLnZsd3VcLnZc dHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqCXRoLnZsd3VcLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkKKyoqCXRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKgl0aC52 YWRkXC52aVx0dlswLTldKyxccyp2WzAtOV0rLFxzKi0xNgorKioJdGgudnN3XC52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpCisqKglyZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91 dCwgdWludDMyX3QgeCkKK3sKK8KgwqDCoCB2dWludDMybTFfdCB2ID0gX19yaXNjdl90aF92bHd1 X3ZfdTMybTEgKGluLCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3 dV92X3UzMm0xX3R1ICh2LCBpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjMgPSBfX3Jpc2N2 X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHY0ID0gX19y aXNjdl92YWRkX3Z4X3UzMm0xX3R1ICh2MywgdjIsIC0xNiwgNCk7CivCoMKgwqAgX19yaXNjdl90 aF92c3dfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMjoKKyoqCXRoLnZzZXR2 bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKioJdGgudmxtLnZcdHZbMC05XSssMFwo W2EteDAtOV0rXCkKKyoqCXRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1hCisqKgl0aC52 bHd1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKioJdGgudmFkZFwudmlcdHZbMC05 XSssXHMqdlswLTldKyxccyotMTYKKyoqCXRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlsw LTldKyxccyotMTYsXHMqdjAudAorKioJdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkK KyoqCXJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQor eworwqDCoMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqDCoMKgIGFzbSB2 b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoMKgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3Zf dGhfdmx3dV92X3UzMm0xIChpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2 X3RoX3Zsd3Vfdl91MzJtMV9tIChtYXNrLCBpbiwgNCk7CivCoMKgwqAgdnVpbnQzMm0xX3QgdjMg PSBfX3Jpc2N2X3ZhZGRfdnhfdTMybTEgKHYyLCAtMTYsIDQpOworwqDCoMKgIHZ1aW50MzJtMV90 IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX20gKG1hc2ssIHYzLCAtMTYsIDQpOworwqDCoMKg IF9fcmlzY3ZfdGhfdnN3X3ZfdTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjM6Cisq Kgl0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqCXRoLnZsbS52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKgl0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxt dQorKioJdGgudmx3dVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKioJdGgudmx3dS52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqCXRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZb MC05XSssXHMqLTE2CisqKgl0aC52YWRkXC52aVx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSssXHMq LTE2LFxzKnYwLnQKKyoqCXRoLnZzdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKglyZXQK KyovCit2b2lkIGYzICh2b2lkICogaW4sIHZvaWQgKm91dCwgdWludDMyX3QgeCkKK3sKK8KgwqDC oCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgwqDCoCBhc20gdm9sYXRpbGUg KCIiOjo6Im1lbW9yeSIpOworwqDCoMKgIHZ1aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3Zsd3Vf dl91MzJtMSAoaW4sIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bHd1 X3ZfdTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworwqDCoMKgIHZ1aW50MzJtMV90IHYzID0g X19yaXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8KgwqDCoCB2dWludDMybTFfdCB2 NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV90dW11IChtYXNrLCB2MywgdjIsIC0xNiwgNCk7CivC oMKgwqAgX19yaXNjdl90aF92c3dfdl91MzJtMSAob3V0LCB2NCwgNCk7Cit9Ci0tIAoyLjE3LjEK wqAKwqAKCgo=